NFS(Network File System)는 네트워크로 파일을 공유하는 분산 파일 시스템입니다. 여러 서버가 같은 저장소를 바라봐야 할 때 유용해요. 서버와 클라이언트 양쪽 설정을 정리합니다.
서버 구축
apt-get install -y nfs-kernel-server
mkdir /nfs
chmod 755 /nfs
chown nobody:nogroup /nfs
공유할 디렉토리를 /etc/exports 에 등록합니다.
echo "/nfs *(rw,sync,no_subtree_check)" | tee /etc/exports
exportfs -a
service nfs-kernel-server restart
특정 대역이나 IP만 허용하려면 이렇게 지정합니다.
/nfs 192.168.1.0/24(rw,sync,no_subtree_check)
export 옵션과 트레이드오프
rw/ro: 읽기·쓰기 / 읽기 전용sync/async: 쓰기 즉시 동기화 / 일정 간격 동기화(빠르지만 유실 위험)no_subtree_check: 상위 디렉토리 권한 검사 생략 → 성능↑subtree_check: 상위 디렉토리까지 검사 → 보안↑no_root_squash: 클라이언트 root에 서버 root 권한 부여 → 보안상 위험하니 기본적으로 지양
다만 쿠버네티스 동적 프로비저닝처럼 컨테이너가 root로 파일을 다뤄야 하는 경우엔 no_root_squash 가 필요할 때가 있습니다. 이럴 땐 신뢰된 내부망에서만 대역을 좁혀 쓰세요.
클라이언트 설정
apt-get install -y nfs-common
mount [서버IP]:/nfs /nfs-test
df -h # 마운트 확인
showmount -e [서버IP] # 서버가 export한 목록 확인
부팅 시 자동 마운트하려면 /etc/fstab 에 추가합니다.
192.168.3.146:/nfs /nfs-test nfs defaults 0 0
자동 마운트가 실패한다면 _netdev 옵션을 붙이세요. 부팅 시점에 네트워크가 아직 준비되지 않아 서버를 못 찾는 경우인데, 이 옵션이 “네트워크가 올라온 뒤 마운트”하게 해줍니다.
192.168.3.146:/nfs /nfs-test nfs defaults,_netdev 0 0
마운트 실패 시 점검 순서
NFS 마운트가 안 되면 아래를 순서대로 확인합니다.
- 서버
/etc/exports의 IP 대역·오타 확인 - 공유 디렉토리 권한 확인
service nfs-kernel-server restart- 클라이언트 IP·네트워크 재확인
- 클라이언트에
nfs-common설치 여부
대부분은 export 대역 오타나 nfs-common 누락이 원인이에요. showmount -e 로 서버가 뭘 열어줬는지부터 보면 빠르게 좁힐 수 있습니다.