NFS(스토리지)에 관한 소개와 점검 가이드
NFS 스토리지 소개와 점검 가이드입니다. nfs-server, exportfs, showmount, rpcinfo, findmnt, nfsstat, nfsiostat, fstab automount와 장애 분리 순서를 정리했습니다.
NFS(Network File System)는 네트워크 너머의 디렉터리를 로컬 파일시스템처럼 마운트해 사용하는 프로토콜입니다. 웹 서버 공유 디렉터리, 백업 저장소, 가상화 스토리지, 배포 산출물 공유에 자주 쓰입니다. NFS 서버와 클라이언트를 점검하는 실무 명령 중심으로 정리합니다.
NFS 서버에서 확인할 것
서버에서는 NFS 서비스 상태, export 설정, 실제 export 적용 상태를 확인합니다.
sudo systemctl status nfs-server --no-pager
sudo exportfs -v
cat /etc/exports
sudo journalctl -u nfs-server -n 100 --no-pager
예시 export는 다음과 같습니다. 운영에서는 허용 대역을 좁히고, 옵션 의미를 이해한 뒤 적용해야 합니다.
/data/share 192.168.10.0/24(rw,sync,no_subtree_check)
설정 변경 후에는 export를 다시 반영합니다.
sudo exportfs -ra
sudo exportfs -v
클라이언트에서 export 확인
showmount -e nfs-server.example.com
rpcinfo -p nfs-server.example.com
NFSv4-only 서버는 showmount 결과가 제한적일 수 있습니다. 이 경우 실제 mount 테스트와 서버 export 설정을 같이 봐야 합니다.
NFS 마운트 확인
findmnt -t nfs,nfs4
mount | grep -E ' type nfs| type nfs4'
df -hT | grep -E 'nfs|nfs4'
cat /proc/mounts | grep nfs
마운트 옵션은 성능과 장애 동작에 영향을 줍니다.
nfsstat -m
수동 마운트 예시
sudo mkdir -p /mnt/nfs-test
sudo mount -t nfs -o vers=4.1 nfs-server.example.com:/data/share /mnt/nfs-test
findmnt /mnt/nfs-test
touch /mnt/nfs-test/.write-test
rm -f /mnt/nfs-test/.write-test
sudo umount /mnt/nfs-test
운영 서버에서 테스트 파일을 만들 때는 업무 파일과 충돌하지 않는 전용 디렉터리나 명확한 prefix를 사용하세요.
성능과 오류 확인
nfsstat -c
nfsstat -s
nfsiostat 1 5
journalctl -k --no-pager | egrep -i 'nfs|server not responding|stale file handle|rpc|lockd' | tail -n 120
server not responding, stale file handle, RPC timeout 계열 메시지는 서버 응답 지연, export 변경, 네트워크 단절, 권한 문제를 의심할 수 있습니다.
자동 마운트 설정
/etc/fstab에 등록할 때는 네트워크 준비 전 마운트 실패로 부팅이 지연되지 않도록 옵션을 둡니다.
nfs-server.example.com:/data/share /data/share nfs4 defaults,_netdev,nofail,x-systemd.automount 0 0
sudo systemctl daemon-reload
sudo mount -a
findmnt /data/share
장애 시 분리 순서
- 서버에서
exportfs -v와nfs-server상태 확인 - 클라이언트에서
rpcinfo,showmount,findmnt확인 - 네트워크에서
nc -vz nfs-server 2049확인 - 커널 로그에서 timeout, stale handle, RPC 오류 확인
- 마운트 옵션과 NFS version mismatch 확인