storage / knowledge

NFS를 x-systemd.automount로 붙이기

paul 2025.11.14 212words (1m)

Docker VM이 TrueNAS의 폴더를 여러 개 마운트한다. fstab에 그냥 올려두면 부팅할 때 문제가 생긴다. NAS가 아직 안 떠 있으면 마운트가 실패하고, 실패한 채로 부팅이 멈추거나 넘어간다.

Proxmox의 부팅 순서에서 TrueNAS에 120초 지연을 주고 있지만 그것만 믿기에는 불안하다.

console
$ sudo apt install nfs-common
$ showmount -e 10.10.10.2

먼저 어떤 export가 있는지 확인한다.

fstab

bash
# NFS Sharings for docker
10.10.10.2:/mnt/vault/media/videos /mnt/truenas/media/videos nfs rw,hard,noatime,nfsvers=4,tcp,_netdev,x-systemd.automount 0 0
10.10.10.2:/mnt/vault/media/photos /mnt/truenas/media/photos nfs rw,hard,noatime,nfsvers=4,tcp,_netdev,x-systemd.automount 0 0
10.10.10.2:/mnt/vault/cloud/opencloud /mnt/truenas/cloud/opencloud nfs rw,hard,noatime,nfsvers=4,tcp,_netdev,x-systemd.automount 0 0

옵션

x-systemd.automount 이 핵심이다. 부팅할 때 바로 마운트하지 않고, 누군가 그 경로에 실제로 접근하는 순간 마운트한다. NAS가 늦게 떠도 상관없고, 부팅이 여기서 붙들리지도 않는다.

_netdev 는 이게 네트워크가 필요한 마운트임을 알린다. 네트워크가 올라온 뒤에 시도하게 된다.

hard 를 골랐다. NAS가 응답하지 않으면 에러를 내지 않고 계속 기다린다. soft 는 타임아웃되면 I/O 에러를 반환하는데, 미디어 파일을 쓰는 도중에 이러면 파일이 깨진다. 기다리는 게 낫다.

nfsvers=4 로 버전을 고정했다. 명시하지 않으면 협상하는데, 서버 설정이 바뀌면 어느 날 갑자기 다른 버전으로 붙는다.

noatime 은 접근 시각을 기록하지 않는다. 읽기만 해도 쓰기가 일어나는 걸 막는다. 미디어 라이브러리처럼 읽기가 많은 곳에서 차이가 난다.

오타 하나에 주의

옵션 이름을 잘못 적으면 그 줄만 조용히 다르게 동작한다. 실제로 내 fstab 한 줄에 x-systemd.automout 이라고 n 이 빠져 있었다. systemd는 모르는 옵션을 그냥 넘기므로 automount가 안 걸린 상태가 된다. 부팅할 때 바로 마운트를 시도하게 되고, NAS가 늦으면 그 줄만 실패한다.

console
$ systemctl list-units -t automount

의도한 대로 automount 유닛이 생겼는지 확인한다.