NFSv4는 rpcbind를 실행하지 않고 nfsd에 대한 소켓을 설정할 수 없습니다


8

Red Hat 문서 에 따르면 'rpcbind'는 더 이상 필요하지 않습니다.

프로토콜 지원이 v4 프로토콜에 통합되었으므로 NFSv4는 포트 맵, rpc.lockd 및 rpc.statd 데몬과 상호 작용하지 않습니다. NFSv4는 잘 알려진 TCP 포트 2049를 수신하므로 포트 맵 상호 작용이 필요 없습니다. 장착 및 잠금 프로토콜이 V4 프로토콜에 통합되어 rpc.lockd 및 rpc.statd와 상호 작용할 필요가 없습니다. rpc.mountd 데몬은 여전히 ​​서버에 필요하지만 유선 작업에는 관여하지 않습니다.

그러나 'rpcbind'서비스가 실행되고 있지 않으면 NFS 데몬을 시작할 수 없습니다.

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]

NFS v2 및 v3을 비활성화했습니다.

# grep -v "^#" /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

아래 나열된 서버 및 클라이언트에서 필요한 / 필수 서비스를 확인하십시오 (기본적으로 필요하지 않은 서비스를 비활성화하고 싶습니다).

# rpm -ql nfs-utils | grep 'init.d'
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

nfs를 허용하도록 방화벽을 구성 했습니까?
user9517

예, 클라이언트에 NFS 내보내기를 마운트 할 수 있지만 여전히 rpcbindv4와 함께 사용해야 하는 이유가 궁금합니다.
HTF

3
NFSv4에는 rpcbind가 필요하지 않습니다. 그러나 해당 정보에 여전히 의존하는 클라이언트 및 도구가 있습니다 (예 : 'showmount'). 또한 Linux nfsd는 / proc / fs / nfsd / portlist 파일을 사용하여 포트 번호를 rpcbind와 통신하며이 파일은 rpcbind 프로세스 실행에 의존합니다.
kofemann

시작 스크립트 에 추가 -N 2 -N 3하고 rpc.nfsd"nfsd에 대한 소켓을 설정할 수 없습니다"라는 동일한 오류가 발생 하여 커널 3.3.2가 설치된 Debian 7에서이 문제를 확인할 수 있습니다.
Tankman 六四

답변:


10

이것은 NFS 서버 커널 모듈의 버그였습니다. 2013 년 12 월 에 패치 되었습니다.

커널 3.14부터는 rpcbind더 이상 커널 내부 NFS 서버를 실행할 필요가 없습니다.

(서버가 NFSv4 이상 만 사용하도록 구성되어 있다고 가정)

http://lxr.free-electrons.com/source/net/sunrpc/svc.c?v=3.14#L966

이 스레드에서 해당 변경에 대한 자세한 정보를 찾을 수 있습니다.

http://www.spinics.net/lists/linux-nfs/msg41053.html

따라서 구성 :

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

없이 작동 rpcbind합니다.

NFSv4 만 사용하는 경우 다음 서비스가 필요하지 않습니다.

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

rpc.idmapdNFSv4에만 필요합니다. Kerberos 보안에도 GSS가 필요합니다. 둘 다 선택 사항이지만.
Irfan Latif

0

RedHat에서 인용 한 문서가 잘못되어 버그 521215로 수정되었습니다 . NFSv4 rpc.mountd설정 하는 데 여전히 사용해야 하지만 엄격하게 말하면 그 후에는 실행할 필요가 없습니다.

  • nfs: 모든 버전의 NFS 서버 : v2, v3, v4, v4.1
  • rpcbind/ portmapper: 서버 , 엄격하게 NFS <= v3에만 해당. 그러나 Linux Kernel NFS 서버가 자체 등록을 시도하고 rpcbind실행 중이 아닌 경우 시작하지 못하는 NFS v4의 경우도 마찬가지입니다 .
  • rpc.mountd: 엄격히 NFS <= 3 인 경우에만 서버 . 또한 Linux 커널이 NFS v4를 사용하여 연결 클라이언트의 연결이 허용되는지 여부를 확인합니다.
  • nfslock: NFS <= v3 전용 서버
  • rpc.idmapd: NFS v4 용 선택적 서버 (및 이전 클라이언트 )
  • rpc.quotad: 디스크 할당량 사용을위한 서버
  • rpc.statd: NFS <= v3 전용 서버

Kerberos ( sec=krb/ krb5i/ krb5p)를 사용하는 경우 다음 서비스가 필요합니다.

  • rpc.gssd: 고객
  • rpc.svcgssd: 서버

그것들 rpc.은 그들의 이름 을 가지고 있더라도 rpc_pipef리눅스 커널과 사용자 공간 헬퍼 사이의 통신을 위해 리눅스 커널 내부 메커니즘 을 사용합니다 . 따라서 rpcbindAKA portmapper는 필요하지 않습니다.


-3

rpcbind 서비스를 확인하십시오. 작동이 중지되면 nfs 서비스를 시작하십시오.

service rpcbind start
service nfs start

이 답변은 품질이 매우 낮습니다. OP는 nfsv4 이후 rpcbind가 필요하지 않다고 명시했습니다. 질문은 이미 답변되었습니다 : 그것은 커널 버그였습니다.
bgtvfr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.