[CentOS] 12. NFS 서버 구성
카테고리: CENTOS
🔔 NFS 서버 구성
■ NFS 관련 파일
| 파일명 | 설명 |
|---|---|
| /etc/exports | NFS 디렉터리 공유에 대한 리스트를 보관하는 파일 (관리자에 의해 관리) |
| /var/lib/nfs/etab | 현재 NFS 서버 서비스에 의해 공유된 자원 리스트를 보관하는 파일 (시스템에 의해 관리) |
| /var/lib/nfs/rmtab | 원격지 클라이언트에 의해 마운트 된 NFS 파일시스템 정보를 보관하는 파일 (시스템에 의해 관리) |
■ /etc/exports 파일
# 공유디렉터리 클라이언트IP 또는 호스트이름(공유옵션)
# 192.168.219.21 IP를 가지는 시스템에 대해서만 공유를 허용
/data01 192.168.219.21(rw,sync,no_root_squash)
# 192.168.219.22 ~ 192.168.219.24에 대해서만 공유를 허용
/data02 192.168.219.2[2-5](rw,sync)
# 192.168.219 대역을 사용하는 시스템에 대해 공유를 허용
/data03 192.168.219.0/24
| 공유 옵션 | 설명 |
|---|---|
| rw | 클라이언트에게 읽기/쓰기 권한을 부여하여 파일 시스템을 공유함. |
| ro | 클라이언트에게 읽기 전용 권한을 부여하여 파일 시스템을 공유함. |
| nohide | 상위 디렉토리에서 숨겨진 파일 시스템도 공유함. |
| hide | 상위 디렉토리에서 숨겨진 파일 시스템을 공유하지 않음. |
| sync | 변경 사항을 동기화하여 클라이언트에게 반영함. |
| async | 변경 사항을 비동기적으로 클라이언트에게 반영함. |
| no_subtree_check | 서브트리 확인을 비활성화하여 클라이언트에게 반영함. |
| subtree_check | 서브트리 확인을 활성화하여 클라이언트에게 반영함. |
| insecure | 비인증 클라이언트에게도 파일 시스템을 공유함. |
| secure | 인증된 클라이언트에게만 파일 시스템을 공유함. |
| all_squash | root를 포함하여 모든 사용자와 그룹의 권한을 nobody로 매핑하는 옵션, 익명 사용자에게만 파일 시스템을 공유하고 싶을 때 유용하게 사용 |
| no_all_squash | 사용자와 그룹의 권한을 squash하지 않는 옵션, 클라이언트의 사용자와 그룹의 권한을 그대로 유지 |
| root_squash | 클라이언트의 root 권한을 무시하고 nobody 권한을 부여하는 것으로 클라이언트의 root 사용자가 서버의 파일 시스템에 대한 액세스를 제한 |
| no_root_squash | 클라이언트의 root 권한을 인정하는 옵션으로 클라이언트의 root 사용자가 서버의 파일 시스템에 대한 액세스를 제한받지 않는다. |
| anonuid | 익명 사용자의 UID를 지정함. |
| anongid | 익명 사용자의 GID를 지정함. |
■ exportfs 명령
디렉터리를 공유하기 위해 또는 공유된 디렉터리 정보를 확인하기 위해 사용되는 명령
$ exportfs [옵션] IP주소:공유_디렉터리_경로
| 옵션 | 설명 |
|---|---|
| -o rw | 읽기/쓰기 권한을 가진 클라이언트에게 파일 시스템을 공유함. |
| -o ro | 읽기 전용으로 파일 시스템을 공유함. |
| -o sync | 변경에 대해 안정적인 저장 후 요청에 대해 응답 |
| -v | 공유된 디렉터리 정보를 확인 |
■ NFS 서버 구성
$ dnf -y install nfs-utils
$ vi /etc/exports
# [/home/nfsshare]를 NFS 공유 디렉터리로 설정
/home/nfsshare 192.168.219.0/24(rw,sync,no_root_squash)
$ mkdir /home/nfsshare
$ systemctl enable --now rpcbind nfs-server
# 방화벽 설정
$ firewall-cmd --add-service=nfs
# NFSv3을 사용하는 경우
$ firewall-cmd --add-service={nfs3,mountd,rpc-bind}
$ firewall-cmd --runtime-to-permanent
■ NFS 클라리언트 구성
$ dnf -y install nfs-utils
$ mount -t nfs 192.168.219.101:/home/nfsshare /mnt
$ df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
192.168.219.101:/home/nfsshare nfs4 17G 1.7G 16G 10% /mnt
# NFSv3으로 마운트하는 경우 [-o vers=3] 옵션 추가
$ mount -t nfs -o vers=3 192.168.219.101:/home/nfsshare /mnt
$ df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
192.168.219.101:/home/nfsshare nfs 17G 1.7G 16G 10% /mnt
# 시스템이 시작될 때 자동으로 마운트하려면 [/etc/fstab]에서 설정을 구성
$ vi /etc/fstab
# 추가
192.168.219.101:/home/nfsshare /mnt nfs defaults 0 0
# 누구나 NFS 공유에 액세스할 때 동적으로 마운트하려면 AutoFS를 구성
# AutoFS는 파일 시스템을 필요에 따라 자동으로 마운트하고 일정 시간 동안 사용하지 않으면 자동으로 언마운트하는 리눅스 커널 모듈과 사용자 공간 프로그램
$ dnf -y install autofs
$ vi /etc/auto.master
# 끝에 추가
/- /etc/auto.mount
$ vi /etc/auto.mount
# [mount point] [option] [location]
/mnt -fstype=nfs,rw 192.168.219.101:/home/nfsshare
$ systemctl enable --now autofs
$ grep /mnt /proc/mounts
192.168.219.101:/home/nfsshare /mnt nfs rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.219.101,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=192.168.219.101 0 0
/etc/auto.mount /mnt autofs rw,relatime,fd=17,pgrp=28460,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=58970 0 0
192.168.219.101:/home/nfsshare /mnt nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.219.102,local_lock=none,addr=192.168.219.101 0 0
댓글 남기기