• NFS深度解析及搭建同步NFS服务


    1、nfs 进程

    [root@nfsserver ~]# ps -ef|egrep "nfs|rpc"
    rpcuser    963     1  0 17:31 ?        00:00:00 rpc.statd    -->检查文件一致性
    root      1032     2  0 17:31 ?        00:00:00 [rpciod/0]
    rpc       1694     1  0 18:05 ?        00:00:00 rpcbind    -->rpc服务
    root      1775     1  0 18:06 ?        00:00:00 rpc.mountd    -->权限验证等
    root      1781     2  0 18:06 ?        00:00:00 [nfsd4]
    root      1782     2  0 18:06 ?        00:00:00 [nfsd4_callbacks]
    root      1783     2  0 18:06 ?        00:00:00 [nfsd]
    root      1784     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主进程
    root      1785     2  0 18:06 ?        00:00:00 [nfsd]
    root      1786     2  0 18:06 ?        00:00:00 [nfsd]
    root      1787     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主进程
    root      1788     2  0 18:06 ?        00:00:00 [nfsd]
    root      1789     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主进程
    root      1790     2  0 18:06 ?        00:00:00 [nfsd]
    root      1813     1  0 18:06 ?        00:00:00 rpc.idmapd    -->权限管理进程
    root      2054  1402  0 19:14 pts/0    00:00:00 egrep nfs|rpc

     2、/etc/exports

      NFS 服务主配置文件,配置NFS具体共享服务的地点,默认内容为空,以行为单位。

    3、/usr/sbin/exportfs

      NFS服务的管理命令。例如:可以加载NFS配置生效,还可以直接配置NFS共享目录,即无需配置 /etc/exports 实现共享。

      exportfs -rv   -- 加载配置生效,等价于重启 /etc/init.d/nfs  reload

      exportfs 不但可以加载配置生效,也可以通过命令直接共享目录,越过 /etc/exports,但是重启失效。

    4、/usr/sbin/showmount

      常用来在客户端,查看NFS配置及挂载结果的命令

      配置 nfsserver,分别在服务端以及客户端查看挂载情况。

    5、/var/lib/nfs/etab

      NFS配置文件的完整参数设定的文件(有很多没有配置但是默认就有的NFS参数)

    6、nfs 参数:

      (1)rw -- 读写

      (2)sync -- 同步,同时将数据写入到内存与硬盘中,保证不丢失数据(发送端等待客户端连接,例如两个人手把手交接物品)

      (3)async -- 异步,优先将数据写入到内存,然后再写入到内存,这样效率更高,但可能会丢失数据(例如:一人将物品放在某处,另一个人再去取)

      (4)同步异步的对比:

        异步(async):将东西写到内存里,速度快,容易丢数据。队列的概念。

        同步(sync):客户端写到服务端的磁盘,速度慢,但是写到磁盘里,关机数据也不丢失。

      (5)ro -- 只读 -- read only

      (6)all_squash:

      不管访问NFS server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID都会变成nobody或nfsnobody账号身份。

      (7)root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户。

      (8)no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员。

      配NFS生产重要技巧:

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

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

        b、就是anonuid,anongid指定的UID和GID的用户

      ②所有的客户端和服务端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同)

    (7)annonuid and anongid  

       指定具体的UID和GID

    7、实现当对台客户端同时挂一台NFS Server时,无论从哪个客户端写入数据,其他客户端同样也可以读写,即让所有 nfs 客户端写入到 Nfs Server 的文件或目录在Nfs Server 上的用户和组都是同一个名称 nfsusers。

      三台机器:两台客户端,一台服务端。

    (1)由于客户端在添加文件的时候,默认所属的用户和组为nfsnobody,要想客户端在操作的时候将用户和组属于nfsusers,必须在每台机器上都添加该用户和组。

    useradd -u 555 nfsusers    #将每台机器都添加该用户和组,UID和 GID 为555

     (2)在配置文件 /etc/exports 中将服务端的目录 /data 进行共享,一些权限和限制可在 /var/lib/nfs/etab 中进行查看,小括号中的内容均是权限或限制。

     (3)共享目录 /data 限制UID和GID为555,即用户和用户组为nfsusers

     (4)此时用户和用户组是555,如果客户端没有nfsusers这个用户,那么客户端看到的就是555了,所以要把555对应的用户和组给 /data 目录。

    chown -R nfsusers.nfsusers /data  #改变/data 目录为 nfsusers的用户和组

     (5)挂载,服务端启动rpcbind和nfs服务,在客户端启动rpcbind服务后,进行操作。

    mount -t nfs 192.168.3.137:/data /mnt    #cilent01 --将服务器下的/data 挂载到本地/mnt
    mount -t nfs 192.168.3.137:/data /mnt    #client02 --

    server服务器的 /data 目录:

      

     client01 添加一个 network.gz

      

     在client02上查看添加后的内容:

      

       已经同步:

    在client02上将所有删除:

      

     在client01上查看

      

    在server上查看

      

  • 相关阅读:
    自定义注解!绝对是程序员装逼的利器!!
    mybatis连接数据库错误解决方法
    SQL基础
    【2021-1-5】QT+SQLsever数据库的数据管理系统
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    基于Linux的MySQL基本操作
    SQL server函数转Oracle问题之一,强行使用临时表
    安装 部署 postgresql数据库 搭建主从节点 (业务库)
    SQL练习题一(逐行累计)
    ThinkPHP中,display和assign用法详解
  • 原文地址:https://www.cnblogs.com/wqs-Time/p/11660460.html
Copyright © 2020-2023  润新知