NFS Mount (Debian)

■서버 커널에 NFS 서버 지원 기능이 있는지 확인
grep NFSD /boot/config-`uname -r`

■NFS 서버 설치
apt -y install nfs-kernel-server rpcbind

■rpcbind
rpcbind는 기본적으로 127.0.0.1(localhost)에서만 NFS 연결 시도를 수신하도록 설정되어 있으므로, 로컬 네트워크에서의 연결을 허용하려면 /etc/default/rpcbind 파일을 편집하여 "OPTIONS" 줄을 주석 처리해야 합니다. 또한, /etc/hosts.allow 파일에서 rpcbind 포트로의 연결을 허용해야 한다.
perl -pi -e 's/^OPTIONS/#OPTIONS/' /etc/default/rpcbind
echo "rpcbind: 192.168.1." >> /etc/hosts.allow
systemctl restart rpcbind.service

■exports
/etc/exports 파일을 편집하여 NFS를 통해 클라이언트 컴퓨터로 내보낼 서버 파일 시스템 목록을 지정하고,"exportfs -a" 명령어를 사용하여 NFS 테이블을 생성한다.
아래 예는 서버에게 /mount_dir 경로를 읽기/쓰기 가능한 상태로 제공하고, 연결하는 클라이언트가 'nobody'로 매핑되는 대신 root ID를 사용하여 루트 액세스 권한을 갖도록 하며, 'subtree_check'를 사용하여 경고 메시지를 표시하지 않도록 지시한다.
echo "/mount_dir 192.168.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=65534,anongid=65534)" >> /etc/exports
exportfs -a
/etc/init.d/nfs-kernel-server reload

■서버에서 실행 중인 NFS 버전을 확인
cat /proc/fs/nfsd/versions
-2 -3 +4 +4.1 +4.2
이 경우 NFS2, NFS3는 비활성화되고 NFS 4, 4.1, 4.2는 활성화 된다.
NFSv2 또는 NFSv3를 사용하여 연결을 시도하는 클라이언트는 오류가 발생한다.

■NFSv4 전용으로 설정
NFSv4 이상만 활성화하려면 /etc/default/nfs-common 파일에 다음 변수를 설정한다.
NEED_STATD="no"
NEED_IDMAPD="yes"

nfs-server.service에는 아래를 추가한다.
RPCNFSDOPTS="-N 2 -N 3"
RPCMOUNTDOPTS="--manage-gids -N 2 -N 3"

■서버 재시작
systemctl restart rpcbind.service
systemctl restart nfs-kernel-server.service

■클라이언트에 자동마운트 스크립트 작성 (/lib/systemd/system/test_nfs_mount.mount)
-----
[Unit]
Description=Mount 10.10.10.108:/mount_dir
After=network-online.target
Wants=network-online.target

[Mount]
What=10.10.10.108:/mount_dir
Where=/mnt/nfs_mount
Options=rw,nosuid,hard,intr
Type=nfs
TimeoutSec=15

[Install]
WantedBy=multi-user.target
-----

systemctl daemon-reload
systemctl start test_nfs_mount.mount
위로 스크롤