NFS报错:rpc.rquotad: unable to register service|mount: wrong fs type, bad option, bad superblock

今天准备在正式环境测试一下puppet,搭建仓库后,需要搭建一个nfs来进行文件共享,让下面发agnet通过nfs安装. yum install nfs-utils成功后,启动nfs服务时,发现有如下报错信息:

[root@master ~]# service nfsd start
nfsd: unrecognized service
[root@master ~]# 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: [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
[FAILED]

从原因来看是由于不能注册服务,RPC不能接收.网上一查,发现原因如下:

Redhat系列在6.0版本之后没有portmap服务控制rpc的启动,NFS和nfslock的启动需要向rpc进行注册,rpc不启动的话就会报错。


解决方法:启动rpcbind&rpcidmap rpcbind是6.0版本后默认的RPC服务,所以要先于nfs启动。 如果不启动rpcidmap则会造成用户权限的映射错误,用户的权限看起来是一串数字。 具体解决如下:

[root@master ~]# 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: [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
[FAILED]
[root@master ~]# /etc/init.d/rpcbind start
Starting rpcbind: [  OK  ]
[root@master ~]# /etc/init.d/rpcidmapd start
Starting RPC idmapd: [  OK  ]
[root@master ~]# service nfs start
Starting NFS services:  [  OK  ]
Starting NFS quotas: [  OK  ]
Starting NFS mountd: [  OK  ]
Starting NFS daemon: [  OK  ]
[root@master ~]# 

在客户端挂载nfs时,发现有如下问题:

root@agent1 media]# /bin/mount -t nfs 10.20.102.154:/puppet /media/
mount: wrong fs type, bad option, bad superblock on 10.20.102.154:/puppet,
   missing codepage or helper program, or other error
   (for several filesystems (e.g. nfs, cifs) you might
   need a /sbin/mount.<type> helper program)
   In some cases useful info is found in syslog - try
   dmesg | tail  or so

解决方法是在客户端也需要启动rpcbind和rpcidmapd服务.

[root@agent1 ~]# /etc/init.d/rpcbind start
Starting rpcbind: [  OK  ]
[root@agent1 ~]# /etc/init.d/rpcidmapd start
Starting RPC idmapd: [  OK  ]    
[root@agent1 ~]# mount -t nfs 10.20.102.154:/puppet /media
[root@agent1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6264-lv_root
                   25G   17G  6.2G  74% /
tmpfs                 1.5G     0  1.5G   0% /dev/shm
/dev/vda1             485M   51M  409M  11% /boot
10.20.102.154:/puppet
                   26G   17G  7.7G  68% /media
[root@agent1 ~]#