nfs 설정하기
Nextwork File System
삼바서버는 윈도우용이라고 보면 되고 NFS는 리눅스 포함 범용.
둘다 사용중인데 smb(삼바서버)도 맥이나 리눅스에 어찌어찌(rclone이나 로컬에서는 설정가능) 하면 되지만 읽기에서는 사용이 어느정도 가능한데 쓰기할때 오류가 많이 난다.
내 경우
iptime-간이NAS에 삼바, FTP서버를 설정하여 사용중이다. 여기에 로컬로 리눅스 서버만 운영하면 도커로 파일서버로 쉽게 운영 가능하다. (도커와 챗GPT가 없었다면 불가능)
서론은 여기까지하고 NFS 서버를 설정하려면 서버가 되는 녀석(리눅스A)과 이놈을 마운트할 클라이언트들(리눅스 B,C,D... 중복가능) 준비한다.
case1.
- 미니PC에 연결된 SSD(512G)를 서버로 사용,
- 미니PC에는 proxmox설치(데비안계열)
- 클라이언트는 맥북과 OCI VM(Oracle Cloud Infrastructure Virtual Amchine)에 연결 할 예정이다.
- 3개 모두 zero-tier VPN으로 연결되어 있다.
- /etc/hosts 로 zero-tier로 연결된 모든 서버마다 설정을 해놓았다
- NFS 서버 설치 및 기동
root@pve:~# apt install nfs-kernel-server -y
root@pve:~# systemctl enable --now nfs-server

- 세팅 및 확인
root@pve:~# mkdir /mnt/pve/ssd
root@pve:~# vi /etc/exports
root@pve:~# exportfs -v
/mnt/pve/ssd 10.147.20.0/24(rw,sync,no_subtree_check,no_root_squash)

*마운트할 디렉토리를 만들꺼에요(저는 외장 SSD를 NFS서버로 선정)
*exports에 nfs설정을 할꺼에요
*/설정할 디렉토리 나의IP(24대역으로)(NFS설정 옵션)
*설정한다음 문법이 틀렸는지, 잘 설정됐는지 확인
*추가나 수정하면 exportfs -ar
- 클라이언트에서
root@blue:~# apt install -y nfs-common
root@blue:~# mkdir /mnt/nfs
root@blue:~# vi /etc/fstab
prox:/mnt/pve/ssd /mnt/nfs nfs defaults 0 0

root@blue:~# mount -a
root@blue:~# ll /mnt/nfs
total 32
drwxr-xr-x 5 root root 4096 Oct 24 16:55 ./
drwxr-xr-x 5 root root 4096 Oct 19 11:13 ../
drwxr-xr-x 2 root root 4096 Oct 24 20:49 dump/
drwx------ 2 root root 16384 Oct 24 16:53 lost+found/
drwxr-xr-x 3 root root 4096 Oct 24 16:55 template/
root@blue:~# df -hT
root@blue:~# showmount -e prox
Export list for prox:
/mnt/pve/ssd 10.1xx.xx.0/24
root@blue:~#

방화벽 개방
내 경우는 ip 전체를 허용했다. vpn으로 허용했다.
nfs v3 이전에는 111, 2049,
v4 이후에는 2049만 허용한다고 한다.
반드시 exportfs -v , showmount -e로 확인을 하고, 안되면 방화벽이나 ip를 확인해 봐야 한다.
25.11.02 수정
외장USB+SSD 마운트 할때,
/dev/sd? 로 마운트 하니까 부팅조차 안된다.
그래서 uuid 기준으로 바꿔줌.
uuid 확인 명령어는 blkid로 해준다.
그리고 실패 했을 때는 넘어가라는 옵션값도 넣어준다.
# SSD (기존)
UUID=22b9e58c-7cf4-4c99-8738-d214fb7bcbb7 /mnt/pve/ssd ext4 defaults,nofail,x-systemd.device-timeout=5 0 2
# HDD (백업용)
UUID=081bd39b-627b-d840-b29c-9ca04b472c55 /mnt/pve/bak ext4 defaults,nofail,x-systemd.device-timeout=5 0 2
nfs하는 모든 옵션에 nofail을 붙여주자.