• 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即可删除

  • 相关阅读:
    如何快速且深入的学习一门新技术
    为什么说云原生会成为未来企业技术变迁的趋势
    高并发场景下锁的使用技巧
    开箱即用~基于.NET Core的敏捷开发框架规划
    为什么在做微服务设计的时候需要DDD?
    为什么我使用了索引,查询还是慢?
    解读中兴通信在物联网行业如何践行DDD
    服务发现技术是如何演进出来的?
    关于盘点和总结的那点事儿
    文件上传 通过 ServletContext.getRealPath()获取不到路径&war与war exploded的区别
  • 原文地址:https://www.cnblogs.com/qyddbear/p/2621956.html
Copyright © 2020-2023  润新知