RP: Program not registered 오류
예전에 Unix 서버에서 NFS mount 명령을 실행하면 RPC: Program not registered 오류가 발생하는 경우가 있었다.
mount -F nfs -o rw remote_host:/remote_dir /local_dir
(Unix OS마다 mount 명령의 옵션은 조금씩 다를 수 있음)
mount -t nfs remote_host:/remote_dir /local_dir
nfs mount: xxx: : RPC: Program not registered
nfs mount: retrying: /remote_dir
또는
mount: mount to NFS server 'remote_host' failed: RPC Error: Program not registered.
원인 분석
원격 서버의 NFS daemon이 정상적으로 실행되지 않거나, 접근이 불가해서 발생한 문제인데 showmount 명령으로 조회해볼 수 있다.
showmount -e remote_host
- NFS로 export할 디렉토리가 노출되는지 확인할 것
또는
rpcinfo -p remote_host
- nfs와 mountd가 실행 중인지 확인할 것
구형 Unix에서뿐만 아니라 현행 Ubuntu에서도 이 명령을 제공하므로 클라이언트에서 이 명령을 실행하여 원격 서버에 접근 가능 여부를 확인해볼 수 있다.
http://manpages.ubuntu.com/manpages/focal/man8/showmount.8.html
NFS 관련 도구가 없다면?
NFS 패키지가 설치되어 있지 않으면 이 명령이 존재하지 않으므로 필요한 패키지를 설치할 필요가 있다.
sudo apt install nfs-common nfs-kernel-server
해결 방법
showmount 명령으로 확인해봤는데 접근이 여전히 잘 안 된다면 다음 몇 가지를 확인해볼 필요가 있다.
- 서버에서 /etc/exports 파일 점검
cat /etc/exports로 내용 확인하기- "외부에 공개할 디렉토리" "접근을 허용할 호스트명(옵션)" 내용을 /etc/exports 파일에 추가하기
- 다음 예제 참조
- ro는 read-only, rw는 read-writable임
- sync, no_subtree_check는 기본적으로 쩍어주면 되고 딱히 적지 않아도 사용은 가능함
/home/myaccount/data host1(ro,sync,no_subtree_check),host2(rw)
- 서버에서 nfs daemon 재시작
sudo service nfs-kernel-server restart
- showmount 명령과 rpcinfo 명령을 서버쪽에서 실행해보고 클라이언트쪽에서도 실행해본다.