Troubleshooting:几台机器mount不上的解决方法

记录下服务器IP改变之后引发的2个不能mount的问题,让我抓狂半下午搜索了google几十页。

本来1台Xen虚机上有2台服务器A,B和1台备份服务器C,均和虚机在同一个网段,通过NFS,A和B的/mnt目录挂载到C上,定时将文件自动备份到C的/home下,一直工作正常。由于新搭建环境,今天将虚机迁移到另一个网段,同时更改了ABC的IP,让它们依然处于同一网段,比如192.168.1.xxx。此时需要改动NFS的一些设置。我改动了2处:

1. 将/etc/hosts.allow里允许通过的网段均改为192.168.1.*

###NFS DAEMONS
portmap:192.168.1.*
lockd:192.168.1.*
rquotad:192.168.1.*
mountd:192.168.1.*
statd:192.168.1.*

改动了hosts.allow,就得重启portmap

/etc/init.d/portmap restart 或 service portmap restart

2. 将/etc/exports里的网段改为192.168.1.*,让此网段的目录共享

/home  192.168.1.*(rw,sync,no_root_squash)

表示将/home这个目录共享给192.168.1.*这些机器,括号中的参数设置意义为:

ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync 资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问

改动了exports,需要重启nfs

/etc/init.d/nfs-kernel-server restart

 

 

然后将A挂载到备份服务器C:

mount server-C-IP:/home /mnt

总是挂载不上,错误如下:

mount.nfs: access denied by server while mounting xxx

试着挂载自身也是同样的错误(mount 127.0.0.1/home /mnt)

我尝试了网上几种解决办法:

方法1:重启A,B,C

方法2:关闭防火墙:ufw status看到防火墙已经关闭(用service iptables stop关闭)

方法3:更改备份服务器C上的home目录权限:chmod 777 /home

方法4:确认nfs相关的服务是否全部开启

方法5:cat /var/log/messages | grep mount查看mount是什么错误。我是error:remount xxx。没找到解决方法。

方法6:查看激活的端口号(netstat -utln,其中portmapper为111,nfs所开启的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )随机产生的),因为NFS对1024以上的大端口有安全限制,如果是1024以上端口,需要将insecure加入到/etc/exports里:192.168.1.* (insecure,rw,sync,no_root_squash)

终于不知在哪个犄角旮旯里找到一条正确的解决方案:将/etc/exports里的网段改为*而不是192.168.1.*

/home *(rw,sync,no_root_squash)

挂载成功,涕泪泗流~~,这个方法,哪位神人想到的?

 

 

B挂载到C出现的问题:

mount.nfs: No route to host

先ping自身:ping 127.0.0.1可以通

再pingA或C却ping不通。

检查路由:route

发现两个接口eth0和eth1的目标、网关、子网掩码都一样,应该是路由在此见到设备有相同的路由,迷茫了。

解决方法:干掉eth1

route del -net 192.168.1.0 netmask 255.255.255.0 dev eth1

能ping通,能mount!于是我的几台机器又可以友好的相互访问了。

 

注意:有几次发现eth0和eth1的目标是一样的,输入route del -net 192.168.1.xxx netmask 255.255.255.0 dev eth1想干掉eth1,但出现错误: netmask doesn't match route address,是因为-net后面是网段,而不是具体的网址,所以将192.168.1.xxx改为192.168.1.0即可删除

posted @ 2012-08-03 18:26  水芊芊  阅读(1323)  评论(0编辑  收藏  举报