我有两个Linode容器。 Box A是我们的通用Web服务器。 偶尔需要访问Box B,它被设置为一个NFS服务器。
当Box B重新启动时,Box A无论如何都无法访问任何NFS共享。 经过几个小时的故障排除,我终于能够缩小到一个单一的步骤。
Box B重新启动后:
$ sudo service nfs restart
这些都是最新的CentOS 6.8盒。 我相信NFS相关的软件包都是通过yum安装的。 整个事情的build立确实遇到了一些麻烦, 这不是一个平稳的过程,但重新启动nfs服务后,一切都很好。
如果我
$ sudo service --status-all
重启之前和之后没有区别。 也许这是一个时间问题? 但我不知道如何开始麻烦拍这个。 我能做什么?
其他注意事项:
我正在使用autofs自动安装来自Box A的按需共享,但共享也不会手动挂载
我花了我的时间在Windows和Mac台式机和服务器,但我已经在Linux上运行多年的网站。 我精通我需要做的事情,但这并不是我的安慰,我花了很多时间用Googlesearch新的东西。
我甚至不知道在哪里检查。 我没有看到任何明显的日志,但告诉我要寻找什么,我会发布。
在框B上:
[shorowitz@BoxB ~]$ sudo chkconfig --list nfs nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off [shorowitz@BoxB ~]$ sudo chkconfig --list nfslock nfslock 0:off 1:off 2:on 3:on 4:on 5:on 6:off
重新启动BoxB后,运行
$ sudo showmount -e BoxB
从BoxA显示预期的挂载点,但我无法挂载它们。 只需重新启动BoxB上的nfs
$ sudo service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS services: [ OK ] Shutting down RPC idmapd: [ OK ] FATAL: Module nfsd not found. FATAL: Error running install command for nfsd Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
这些坐骑立即在BoxA上提供。 那些致命的错误出现在随后的重新启动,以及当NFS已经工作,所以我不知道他们是多么相关(我以为我已经发布了他们已经)。
11月15日9:29我发布了重新启动命令
grep -i "nfs" /var/log/message* messages:Nov 15 09:29:08 BoxB kernel: nfsd: last server has exited, flushing export cache messages:Nov 15 09:29:54 BoxB kernel: RPC: Registered tcp NFSv4.1 backchannel transport module. messages:Nov 15 09:29:54 BoxB kernel: FS-Cache: Netfs 'nfs' registered for caching messages:Nov 15 09:29:54 BoxB kernel: NFS: Registering the id_resolver key type messages:Nov 15 09:29:54 BoxB kernel: nfs4filelayout_init: NFSv4 File Layout Driver Registering... messages:Nov 15 09:29:54 BoxB kernel: Installing knfsd (copyright (C) 1996 [email protected]). messages:Nov 15 09:29:54 BoxB kernel: xenfs: not registering filesystem on non-xen platform messages:Nov 15 09:29:54 BoxB rpc.mountd[2740]: NFS v4 mounts will be disabled unless fsid=0 messages:Nov 15 09:29:54 BoxB kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory messages:Nov 15 09:29:54 BoxB kernel: NFSD: starting 90-second grace period (net ****************) messages:Nov 15 09:33:39 BoxB kernel: nfsd: last server has exited, flushing export cache messages:Nov 15 09:33:40 BoxB kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory messages:Nov 15 09:33:40 BoxB kernel: NFSD: starting 90-second grace period (net ****************)
[shorowitz@BoxB ~]$ sudo chkconfig --list | egrep "nfs|rpc" nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [shorowitz@BoxB ~]$ sudo iptables --list -n -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 REJECT all -- !lo * 127.0.0.0/8 0.0.0.0/0 reject-with icmp-port-unreachable 18 710 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW icmp type 8 471 26200 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW 204K 393M ACCEPT all -- * * {BoxA IP} 0.0.0.0/0 6721 754K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2859 168K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `iptables_INPUT_denied: ' 9229 628K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `iptables_FORWARD_denied: ' 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT 278K packets, 8386M bytes) pkts bytes target prot opt in out source destination [shorowitz@BoxB ~]$ sudo rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 38148 status 100024 1 tcp 45681 status 100005 1 udp 37846 mountd 100005 1 tcp 59259 mountd 100005 2 udp 59934 mountd 100005 2 tcp 42645 mountd 100005 3 udp 33867 mountd 100005 3 tcp 41823 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 37287 nlockmgr 100021 3 udp 37287 nlockmgr 100021 4 udp 37287 nlockmgr 100021 1 tcp 37579 nlockmgr 100021 3 tcp 37579 nlockmgr 100021 4 tcp 37579 nlockmgr
这不会返回:
grep -v "^#" /etc/sysconfig/nfs
$ chkconfig --list | egrep "nfs|rpc" nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off $ iptables --list -n -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 390K 58M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 REJECT all -- * * 0.0.0.0/0 127.0.0.0/8 reject-with icmp-port-unreachable 990K 7850M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 DROP all -- * * 43.255.188.145 0.0.0.0/0 8 388 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 11864 608K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 1 40 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:636 4545 238K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 9759 553K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 24 960 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 320 19152 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 85 5681 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3254 194K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `iptables denied: ' 3634 227K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1360K 1907M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 $ rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 55882 status 100024 1 tcp 58283 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 43136 mountd 100005 1 tcp 55047 mountd 100005 2 udp 51117 mountd 100005 2 tcp 42791 mountd 100005 3 udp 44511 mountd 100005 3 tcp 46535 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 43509 nlockmgr 100021 3 udp 43509 nlockmgr 100021 4 udp 43509 nlockmgr 100021 1 tcp 38725 nlockmgr 100021 3 tcp 38725 nlockmgr 100021 4 tcp 38725 nlockmgr $ mount | grep nfs nfsd on /proc/fs/nfsd type nfsd (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
BoxA: $ cat /etc/auto.master.d/nfs xdata -rw boxb:/srv/nfs/xdata xbackup -rw boxb:/srv/nfs/xbackup zbackups -rw boxb:/srv/nfs/zbackups $ mount | grep nfs mount |grep nfs nfsd on /proc/fs/nfsd type nfsd (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) boxb:/srv/nfs/xdata on /mnt/nfs/xdata type nfs (rw,sloppy,vers=4,addr={boxb ip},clientaddr={boxa ip})
你能用更多的信息更新你的问题吗?
在NFS服务器上运行
chkconfig --list | egrep "nfs|rpc" iptables --list -n -v rpcinfo -p
如果你的nfs服务器设置没有被定制,那么下一个应该不返回
grep -v "^#" /etc/sysconfig/nfs
但是,如果你正在运行iptables – 它应该被定制。 看这里
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/s2-nfs-nfs-firewall-config.html
在你的客户端运行
chkconfig --list | egrep "nfs|rpc" iptables --list -n -v rpcinfo -p mount | grep nfs
如果您正在运行NFSV2或NFSV3,则还需要在客户端上运行nfslock
在启动NFS的时候,输出看起来很奇怪 – 就在下面这行
FATAL: Module nfsd not found. FATAL: Error running install command for nfsd
而我只是意识到一件事 – 因为你在openvz上运行 – 下面的链接适用于你的情况。 看看这是否有帮助
https://openvz.org/NFS_server_inside_container
编辑1:我今天在openvz容器上运行testing。
你看到的消息
FATAL: Module nfsd not found. FATAL: Error running install command for nfsd
是无害的。 这里描述了https://openvz.org/NFS_server_inside_container
我无法重现您的问题。 重新启动nfs服务器之后–nfs客户端仍然能够浏览文件,创build新文件,从nfs共享中删除文件。
你现在可以发布你的自动安assembly置,也可以输出
mount|grep nfs
从框A,你已经做了。 但是当你卸载了自动安装的文件系统的时候你做到了。 所以现在在一个CD上自动安装目录,然后运行上面的命令。 这将提供有关安装期间使用哪些选项的信息。
同样,下次您重新启动Box B,并且出现此自动安装问题 – 从站点A运行此命令
netstat -anp|grep ipofB
这将提供有关涉及哪些端口的信息。
在这种情况下,在B和A上收集tcpdump也是一件好事。
我倾向于认为你的configuration没有任何问题 – 但vzhosts上的iptables正在发生一些奇怪的事情。 不是在你的容器中,而是在主机上。
你也可以尝试做的是在你的主机A上安装nmap,并且在问题出现的时候 – 扫描你的主机B,看看哪个端口从A的angular度看是打开的(有些人可能会提示netstat或ss,但是在这种情况下,也有容器前面的openvz主机防火墙,我们不知道他们是否阻止了某些东西)
编辑2(11月25日)你的挂载选项有些奇怪
比较你的输出
$ mount | grep nfs mount |grep nfs nfsd on /proc/fs/nfsd type nfsd (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) boxb:/srv/nfs/xdata on /mnt/nfs/xdata type nfs (rw,sloppy,vers=4,addr={boxb ip},clientaddr={boxa ip})
在下面挖掘。 这是我的/etc/auto.misc。 第6行是默认的。 我添加了第16行
[root@vznfsclient /]# egrep -vn "^#|^$" /etc/auto.misc 6:cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 16:nfs -fstype=nfs 192.168.0.54:/nfs_export
所以当我cd / misc / nfs – 我的共享被挂载。 但是看看第12行的默认选项。
[root@vznfsclient ~]# mount|egrep -n "nfs|auto" 4:nfsd on /proc/fs/nfsd type nfsd (rw,relatime) 5:sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) 10:/etc/auto.misc on /misc type autofs (rw,relatime,fd=6,pgrp=768,timeout=300,minproto=5,maxproto=5,indirect) 11:-hosts on /net type autofs (rw,relatime,fd=12,pgrp=768,timeout=300,minproto=5,maxproto=5,indirect) 12:192.168.0.54:/nfs_export/ on /misc/nfs type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.54,mountvers=3,mountport=42089,mountproto=udp,local_lock=none,addr=192.168.0.54)
首先它是nfsv3,它使用udp。 好的udp我们可以通过改变/etc/auto.misc来改变为tcp
[root@vznfsclient /]# egrep -vn "^#|^$" /etc/auto.misc 6:cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 16:nfs -fstype=nfs,proto=tcp 192.168.0.54:/nfs_export
和挂载选项将更改为
192.168.0.54:/nfs_export/ on /misc/nfs type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.54,mountvers=3,mountport=45378,mountproto=tcp,local_lock=none,addr=192.168.0.54)
当我尝试在/etc/auto.misc中使用-fstype=nfs4 – 我甚至不能使用/ misc / nfs,因为每个openvz都不支持nfsv4,容器内部不支持https://openvz.org/ NFS_server_inside_container
注意你的挂载选项是sloppy ,简单的rw 。 这基本上意味着
我build议改变你的汽车山地图到正确的语法(见我的例子)或看到这里的例子https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/s2-nfs-configuration-autofs.html
并testing。 我只是在两个不同的openvz主机上运行的同一个容器中运行autofstesting – 在nfs服务器重启后 – 客户端仍然很开心。
编辑3我甚至不能重现你的情况。 我把我的/etc/auto.misc改成了下面,这几乎就是你所拥有的
[root@vznfsclient nfs]# egrep -nv "^#|^$" /etc/auto.misc 6:cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 16:nfs -rw 192.168.0.54:/nfs_export
并重新启动后,CD / misc / nfs我仍然有这个
[root@vznfsclient nfs]# mount|grep nfs nfsd on /proc/fs/nfsd type nfsd (rw,relatime) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) 192.168.0.54:/nfs_export/ on /misc/nfs type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.54,mountvers=3,mountport=46453,mountproto=udp,local_lock=none,addr=192.168.0.54)
所以在我的情况下,它正确地尝试使用nfsv3。
现在唯一要做的就是
激活/etc/autofs.conf中的debugging
[root@vznfsclient nfs]# grep -i debug /etc/autofs.conf|grep -v "^#" logging = debug
启用debugging严重性以发送到/etc/rsyslog.conf中的/var/log/messages 。 改变这一点
[root@vznfsclient nfs]# grep info /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none -/var/log/messages
对此(.info到.debug)
[root@vznfsclient nfs]# grep debug /etc/rsyslog.conf *.debug;mail.none;authpriv.none;cron.none -/var/log/messages
重新启动autofs和rsyslog,然后当你改变到自动安装的位置 – 你应该看到/var/log/messages中的debugging输出
这是从我的testing系统输出
Nov 25 03:06:00 vznfsclient automount[583]: attempting to mount entry /misc/nfs Nov 25 03:06:00 vznfsclient automount[583]: lookup_mount: lookup(file): looking up nfs Nov 25 03:06:00 vznfsclient automount[583]: lookup_mount: lookup(file): nfs -> -rw#011#011#011192.168.0.54:/nfs_export Nov 25 03:06:00 vznfsclient automount[583]: parse_mount: parse(sun): expanded entry: -rw#011#011#011192.168.0.54:/nfs_export Nov 25 03:06:00 vznfsclient automount[583]: parse_mount: parse(sun): gathered options: rw Nov 25 03:06:00 vznfsclient automount[583]: parse_mount: parse(sun): dequote("192.168.0.54:/nfs_export") -> 192.168.0.54:/nfs_export Nov 25 03:06:00 vznfsclient automount[583]: parse_mount: parse(sun): core of entry: options=rw, loc=192.168.0.54:/nfs_export Nov 25 03:06:00 vznfsclient automount[583]: sun_mount: parse(sun): mounting root /misc, mountpoint nfs, what 192.168.0.54:/nfs_export, fstype nfs, options rw Nov 25 03:06:00 vznfsclient automount[583]: mount_mount: mount(nfs): root=/misc name=nfs what=192.168.0.54:/nfs_export, fstype=nfs, options=rw Nov 25 03:06:00 vznfsclient automount[583]: mount_mount: mount(nfs): nfs options="rw", nobind=0, nosymlink=0, ro=0 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: called with host 192.168.0.54(192.168.0.54) proto 6 version 0x40 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: called with host 192.168.0.54(192.168.0.54) proto 6 version 0x70 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: nfs v3 rpc ping time: 0.000366 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: host 192.168.0.54 cost 365 weight 0 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: called with host 192.168.0.54(192.168.0.54) proto 17 version 0x70 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: nfs v3 rpc ping time: 0.000507 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: nfs v2 rpc ping time: 0.000692 Nov 25 03:06:00 vznfsclient automount[583]: get_nfs_info: host 192.168.0.54 cost 599 weight 0 Nov 25 03:06:00 vznfsclient automount[583]: prune_host_list: selected subset of hosts that support NFS3 over TCP Nov 25 03:06:00 vznfsclient automount[583]: mount_mount: mount(nfs): calling mkdir_path /misc/nfs Nov 25 03:06:00 vznfsclient automount[583]: mount_mount: mount(nfs): calling mount -t nfs -s -o rw 192.168.0.54:/nfs_export /misc/nfs Nov 25 03:06:00 vznfsclient automount[583]: spawn_mount: mtab link detected, passing -n to mount Nov 25 03:06:00 vznfsclient automount[583]: mount(nfs): mounted 192.168.0.54:/nfs_export on /misc/nfs Nov 25 03:06:00 vznfsclient automount[583]: ioctl_send_ready: token = 28 Nov 25 03:06:00 vznfsclient automount[583]: mounted /misc/nfs
几件事情… CentOS 6.5不是最新的。 这是值得计划将您的操作系统到目前的版本(在这个时候是6.8)。
尝试ntsysv命令而不是chkconfig 。 您可以确保在启动时启用(选中)NFS服务器守护进程。
启用netfs服务,因为这有助于确保networking文件系统客户端在引导时挂载必要的文件系统。
祝你好运!
首先,NFS在服务器之间共享文件通常是不可靠的。 BoxB重新启动,或以其他方式变得不可用,而BoxA具有活动挂载的问题与将一个驱动器从正在运行的系统中取出的方式大致相同。 各种各样的事情可以留在奇怪的状态。
你没有给我们很多有关你使用mount的信息,但考虑NFS的替代方法。 如果你给出了一些你正在做的事情,我可以build议一些替代scheme。 GFS,GlusterFS,rsync,lsyncd或基于HTTP(S)的服务可能会出现,至less在某些情况下可能适用。
至于你目前的情况,我猜测在BoxB发生故障时,挂载的东西仍然悬而未决,服务器重启的重要部分正在closures已经运行的东西。 如果这是正确的,那么你应该能够closures这两个盒子,然后启动BoxA和BoxB,并且挂载仍然应该启动OK。 如果我在这里,那么我认为BoxA上的日志比从您与我们分享的BoxB中的日志更重要。 我会看安装表的线索也。