서버끼리 파일 공유를 하는 여러가지 방법중에 NFS공유를 만들어서 서로 같은 데이터를 바라보는 방법이 있다.
마치 윈도우에서 공유폴더를 만드는것과 같다.
[테스트 환경 구성]
A서버(Server)에서 B서버(Client)로 NFS를 이용한 공유 구성 테스트
1) 서로 통신이 가능한 네트워크환경에 서버 2대 설치
- NFS Server
OS: CentOS7.6
IP: XXX.XXX.101.133
- NFS Client
OS: Ubuntu22.04
IP: XXX.XXX.101.131
2) Server, Client 모두 nfs 관련 패키지가 설치되어있는지 확인
# CentOS 명령어 rpm -qa | grep nfs-utils # Ubuntu 명령어 sudo dpkg -l | grep nfs-common |
3) 설치가 필요하다면 yum 또는 apt로 설치 가능여부 확인하고 설치
- 설치가능여부 확인
# CentOS 명령어 yum search nfs-utils # Ubuntu 명령어 sudo apt search nfs-common |
- nfs 패키지 설치
# CentOS 명령어 yum install nfs-utils # Ubuntu 명령어 sudo apt install nfs-common |
[NFS 서버 환경 구성]
1) NFS Server쪽에서 공유해줄 파일시스템/디렉토리 준비
아무 디렉토리나 만들어서 사용해도 되지만, 이번 테스트에서는 별도 디스크를 이용함
## 사용한 명령어 간략히 ## # 디스크 파티션 구성 fdisk /dev/sdb # pv생성 pvcreate /dev/sdb # vg생성 vgcreate NFS_VG /dev/sdb # lv생성 lvcreate -l 100%FREE -n NFS_LV NFS_VG # xfs포맷 mkfs.xfs -f /dev/NFS_VG/NFS_LV # 디렉토리생성 mkdir /NFSshare # 마운트 mount -t nfs /dev/NFS_VG/NFS_LV /NFSshare |
자세한 구성 방법은 아래 링크 참조
- 디스크 추가하여 LVM 생성 및 확장 (https://dong-it-engineer.tistory.com/15) |
2) NFS서비스가 켜져있는지 확인
systemtl status nfs (또는 service nfs status) |
3) 공유디렉토리 설정파일 및 적용
서버에서 어느 클라이언트로 공유를 할지 설정
(옵션은 보통 사용하는걸로 지정함)
vi /etc/exports /NFSshare [ClientIP](rw,sync,no_root_squash,no_all_squash) |
4) NFS 공유 설정 배포
# /etc/exports 파일 내용 전체 배포 exportfs -a # NFS 배포상태 확인 exportfs -v |
만약 NFS서비스가 비활성 또는 비정상 상태이면 아래와 같은 오류메시지가 나온다.
"exportfs: Function not implemented"
물론 NFS서비스만 정상으로 활성시키면 해결된다.
exportfs 관련 명령어는 아래 URL 참조
exportfs 이용한 리눅스 폴더 공유 (https://dong-it-engineer.tistory.com/21) |
[NFS 클라이언트 환경 구성]
1) NFS Client쪽에서 Server쪽으로 포트통신 되는지 확인
nc -zv [NFSserverIP] 111 nc -zv [NFSserverIP] 2049 |
기타 rpc 통신도 확인해야하지만 보안상 문제가 되지 않으면 크게 상관없다.
2) 마운트 설정 및 마운트
/etc/fstab 파일 편집 (옵션은 보통 사용하는걸로 지정함)
vi /etc/fstab [NFSserverIP]:/NFSshare /NFSvol nfs nolock,hard,rw,noac,rsize=32768,wsize=32768,suid,proto=tcp,vers=3,timeo=14,intr 0 0 |
NFS 마운트 완료
mount /NFSvol df -h /NFSvol |
[덤] sync 옵션에 따른 속도 차이 (sync, async)
vi /etc/exports /NFSshare [ClientIP](rw,sync또는async,no_root_squash,no_all_squash) sync 옵션: 서버와 클라이언트간 파일 접근시 동기 확인 async 옵션: 서버와 클라이언트간 파일 접근시 동기 확인 없음 |
클라이언트에서 공유디렉토리에 접근하는 속도를 측정해봄
dd if=/dev/zero of=dummy count=10240 bs=10k |
async옵션이 sync 옵션보다 약 2배이상 빠른걸로 확인됬다.
데이터의 정합성보다 속도가 더 중요시 될 때는 async 옵션을 사용하는 것도 고려해볼만한것 같다.
'OS 기술 > Linux' 카테고리의 다른 글
리눅스 명령어 반복하는 방법 (1) | 2024.04.20 |
---|---|
NTP 오류 - ntpd[]: frequency error -506 PPM exceeds tolerance 500 PPM (1) | 2023.11.13 |
Traceroute 포트 지정하여 경로 찾기 (1) | 2023.10.31 |
passwd 변경시 module is unknown / password unchanged (0) | 2023.10.19 |
리눅스 기본 편집기 변경 (vi, nano) (1) | 2023.10.04 |