• 二十二、NFS服务深入讲解


    一、查看nfs服务:

    [root@nfsserve ~]# ps -ef|grep -E "rpc|nfs"
    rpc       1565     1  0 17:29 ?        00:00:00 rpcbind
    root      1615     2  0 17:38 ?        00:00:00 [rpciod/0]
    root      1623     1  0 17:38 ?        00:00:00 rpc.mountd
    root      1629     2  0 17:38 ?        00:00:00 [nfsd4]
    root      1630     2  0 17:38 ?        00:00:00 [nfsd4_callbacks]
    root      1631     2  0 17:38 ?        00:00:00 [nfsd]
    root      1632     2  0 17:38 ?        00:00:00 [nfsd]
    root      1633     2  0 17:38 ?        00:00:00 [nfsd]
    root      1634     2  0 17:38 ?        00:00:00 [nfsd]
    root      1635     2  0 17:38 ?        00:00:00 [nfsd]
    root      1636     2  0 17:38 ?        00:00:00 [nfsd]
    root      1637     2  0 17:38 ?        00:00:00 [nfsd]
    root      1638     2  0 17:38 ?        00:00:00 [nfsd]
    root      1661     1  0 17:38 ?        00:00:00 rpc.idmapd

    这里主要讲俩个进程:

      rpc.nfsd表示 客户端是否能登陆NFS服务端主机,其中还包含登入者的ID判别

      rpc,mountd:是管理NFS文件系统,对比客户端是否有访问目录权限和文件的使用权限

      rpc.rpcbind:表示rpc的主进程,rpc服务。

     二、cat  /var/lib/nfs/etab

    除了rw,sync,可以看到这个系统自动加入的权限,这些权限都是可以通过man exports进行操作的。

    参数:

       1)sync表示同步,比如写操作,只有当写入到磁盘中的时候,才算操作完毕。

       2)async表示异步,比如写操作,当写入内存的时候,就完毕了,至于后面干了什么,和客户端没有关系。

            所以同步和异步牵扯到了可靠性和性能的选择。很多门户网站,大并发都是异步的操作,客户端一次发送1000条数据,如果我服务器一次只能处理500条,怎么办,这里就用到了异步的处理机制,即我客户端可以将数据发送到一个容器中,这个容器就是一个队列,进行排队,我服务端按照自己的节奏处理内容。

      3)配置生产NFS的重要技巧:

            1.确保所有服务器对NFS共享目录具备相同的权限

                  a.all_squash把所有客户端都压缩成匿名用户

                  b.压缩成匿名用户后,那么到底是压缩成哪个匿名用户呢,这里就要用anonuid和anongid指定的uid和gid进行操作,就是用户具体的实例化

           2.所用的客户端和服务器都要有相同的UID和Gid用户,如果没有,则需要手动创建这个必须相同的用户,一般我们默认就是nfsnobody

      4)no_root_squash:表示如果为root,那么访问权限就是root

      5)  root_squash:表示如果是root,也要压缩成匿名用户。

    三、实现当多台客户端同时挂一台NFSserver时,无论从哪个客户端写入数据,其他客户端同样也可以读写,即让客户端都是oldgirl,请给出操作步骤,并加以说明。

       答:给3台机器,2台客户端、1台服务端

        1)建立一个nfs共享用户,所有机器都存在的UID和GID。

         [root@nfsserve ~]# id oldgirl           
         uid=555(oldgirl) gid=555(oldgirl) 组=555(oldgirl) 

          [root@nfsclient ~]# id oldgirl
          uid=555(oldgirl) gid=555(oldgirl) groups=555(oldgirl)

         [root@nfsclient1 ~]# id oldgirl
         uid=555(oldgirl) gid=555(oldgirl) groups=555(oldgirl)

        2)服务端配置共享

        # dangjinwei modify
        #/data  192.168.0.0/24(rw,sync)
      /data  192.168.0.0/24(rw,sync,anonuid=555,anongid=555,root_squash)

       3)进行服务端重启

        [root@nfsserve ~]# /etc/init.d/nfs reload

      4)客户端进行挂载

      [root@nfsclient ~]# showmount -e 192.168.0.104
      Export list for 192.168.0.104:
      /data 192.168.0.0/24

    5)进行处理

    ---》服务端

     

    --》客户端删除

      

      另外一个客户端进行查看

    四、1)一般我们给telnet 自己,如果通,说明服务端是通的。但是如果客户端连接服务器,报错:no route to host,一般是因为开着防火墙导致的。

           2)挂载,重启就失败,有两种解决。

                1.放在rc.local:  /bin/mount  -t nfs 10.0.0.7:/data     /mnt

                2.写入到fstab里面,这种不太可取;因为如果本地nfs如果有问题,导致电脑启不来,但是如果是rc.local里面的话,就可以启动起来。还有一个可能是网络服务nfs,指的是客户端挂载nfs服务,如果在fstab里面配置是不可取的,原因在于,fstab加载本地磁盘,等加载完成后,linux才加载网络服务,如果将网络服务配置在这里的,就会导致加载不上,所以不在这里配置网络服务的挂载。

       综上,我们将nfs服务配置在rc.local里面。

     五、在fstab -o  可以查看挂载的参数,需要的时候可以man mounts进行帮助文档查看

        其中defaults要注意表示:  rw,suid,exec,auto,async,nouser

      对于nfs,可以如果客户端挂载在mnt文件下,可以通过 grep mnt  /proc/mounts 查看客户端挂载参数的命令

    六、在这里要说明文件系统只读故障?百度找答案

       文件系统也有本能反应,内部有自动一致性,具体百度。

       1)同步,rsync有bug,导致只读。

       2)文件同时写入,有锁的概念,导致只读。

    七、/etc/fatab中最后一个0

    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0

    fstab中最后一个是1表示开机检查文件系统,所以系统检查出来错误,提示需要root密码或者Ctrl+d继续,但是这样就进不去这个文件系统,一直不断重启,我们平时只要检查/root和/ 就可以了,其它不检查,如果写入root密码进入/etc/fstab查看的话,也是只读模式,改正不了,因为文件系统失败,系统自动变成可读模式,这时,我们通过  mount -o  rw,remount  /,然后再进入/etc/fstab里面就可以了。

     八、我们经常要设置一些挂载的安全优化,比如下:

       mount  -t  nfs  -o nosuid,noexec,rw 10.0.0.19:/data/bbs  /mnt 这样的参数。其中nooexec表示可执行程序不能执行

       /proc/mount  可以查看默认参数

      强制卸载:umount -lf  /mnt  

    客户端性能的优化:rsize / wsize

     测试: time  dd if=/dev/zero  of=/mnt/testfile  bs=9k count=20000

        创建一个9k*20000的文件,块大小为9k,/dev/zero用来初始化文件,可以写入无数个0,不会被撑死。

    ============

    1./etc/fstab 开机挂载的文件

    2./etc/mounts查看挂载的文件

    服务器端挂载默认参数:/var/lib/nfs/etab 默认参数

    客户端默认参数:/proc/mounts

    3.nfs生产应用:大中小型网站的后面。做集群的共享存储用,参考值:2000w pv    。运维:稳定、可靠(技术可以不是最新的)

        nfs的劣势:1.单点   2.耦合度高

  • 相关阅读:
    [调参]batch_size的选择
    [调参]CV炼丹技巧/经验
    [Pytorch]Pytorch加载预训练模型(转)
    [PyTorch]论文pytorch复现中遇到的BUG
    [Opencv]图像的梯度与边缘检测(转)
    freemodbus移植、实例及其测试方法
    eclipse的C/C++开发搭建
    ROS安装
    U-boot移植
    QT开发实战一:图片显示
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/10896687.html
Copyright © 2020-2023  润新知