zoukankan      html  css  js  c++  java
  • NFS

    一、NFS简介


    01 为什么使用NFS

    02 RPC服务知识概念介绍说明,以及RPC服务存在价值

    03 NFS工作原理

    当访问程序通过NFS客户端向NFS服务端存取文件时,其请求数据流程大致如下:

    1) 首先用户访问网站程序,由程序在NFS客户端发出存取NFS文件的请求,这时NFS客户端(即执行程序的服务器)的RPC服务(rpcbind服务)就会通过网络向NFS服务器端RPC服务(rpcbind服务)的111端口发出NFS文件存取功能的询问请求。
    2) NFS服务器端的RPC服务(rpcbind服务)找到对应的已注册的NFS端口后,通知NFS客户端的RPC服务(rpcbind服务)
    3) 此时NFS客户端获取到正确的端口,并与NFS daemon联机存取数据。
    4) NFS客户端把数据存取成功后,返回给前端访问程序,告知给用户存取结果,作为网站用户,就完成了一次存取操作。因为NFS的各项功能都需要向RPC服务(rpcbind服务)注册,所以只有RPC服务(rpcbind服务)才能获取到NFS服务的各项功能对应的端口号(port number)、PID、NFS在主机所监听的IP等信息,而NFS客户端也只能通过向RPC服务(rpcbind服务)询问才能找到正确的端口。

    二、部署

    01 安装

    NFS:全名nfs-utils
    rpcbind

    yum install -y nfs-utils rpcbind

    查看命令属于哪个包

    [root@nfs01 ~]# rpm -qa nfs-utils rpcbind
     rpcbind-0.2.0-12.el6.x86_64
     nfs-utils-1.2.3-70.el6_8.2.x86_64

    02启动服务

     启动服务需要先启动rpcbind然后再启动NFS

     启动rpcbind

    [root@nfs01 ~]# /etc/init.d/rpcbind status
    rpcbind is stopped
    [root@nfs01 ~]# /etc/init.d/rpcbind start
    Starting rpcbind:                                          [  OK  ]
    [root@nfs01 ~]# rpcinfo -p localhost
       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

     启动NFS

    [root@nfs01 ~]# /etc/init.d/nfs start
    Starting NFS services:                                     [  OK  ]
    Starting NFS quotas:                                       [  OK  ]
    Starting NFS mountd:                                       [  OK  ]
    Starting NFS daemon:                                       [  OK  ]
    Starting RPC idmapd:                                       [  OK  ]

    查看rpcbind和nfs对应情况

    [root@nfs01 ~]# rpcinfo -p localhost
        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
        100011    1   udp    875  rquotad
        100011    2   udp    875  rquotad
        100011    1   tcp    875  rquotad
        100011    2   tcp    875  rquotad
        100005    1   udp  57916  mountd
        100005    1   tcp  42966  mountd
        100005    2   udp  61298  mountd
        100005    2   tcp  47732  mountd
        100005    3   udp  51887  mountd
        100005    3   tcp  14717  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  46875  nlockmgr
        100021    3   udp  46875  nlockmgr
        100021    4   udp  46875  nlockmgr
        100021    1   tcp  19562  nlockmgr
        100021    3   tcp  19562  nlockmgr
        100021    4   tcp  19562  nlockmgr

    查看状态

    [root@nfs01 ~]# netstat -plunt | grep rpcbind
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      25595/rpcbind       
    tcp        0      0 :::111                      :::*                        LISTEN      25595/rpcbind       
    udp        0      0 0.0.0.0:111                 0.0.0.0:*                               25595/rpcbind       
    udp        0      0 0.0.0.0:754                 0.0.0.0:*                               25595/rpcbind       
    udp        0      0 :::111                      :::*                                    25595/rpcbind       
    udp        0      0 :::754                      :::*                                    25595/rpcbind

    开机自启动

    [root@nfs01 ~]# chkconfig |grep 3:on
    crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
    network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
    nfslock            0:off    1:off    2:off    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
    rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
    sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
    sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off

    03 NFS服务端配置过程
    挂载列表的配置文件/etc/exports
    man exports查看帮助

    参数

    参数名字                                                                                      参数用途
     rw  read-write,表示可读写权限
     ro  read-only,表示只读权限
     async  (异步)写入时数据会先写到内存缓冲区,只到硬盘有空挡才会再写入磁盘,这样可以提升写入效率,风险为若服务器宕机或不正常关机,会损失缓冲区中未写入磁盘的数据(解决办法:服务器主板电池加UPS,AB(双路电源)不间断电源)
     no_root_squash  访问NFSserver共享目录的用户如果是root的话,它对该共享目录具有root权限,这个配置原本是为无盘客户端准备的,用户应避免使用。如果是root则保持root权限
     root_squash  如果访问NFSserver共享目录的用户是root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份,如果是root压缩为匿名用户。
     all_squash  

    不管访问NFSserver共享目录的用户身份如何,它的权限都将被压缩成匿名用户(nfsnobody),同时它的UID和GID都会便哼nfsnobody账号身份,在早期多个NFS客户端同时读写NFSserver数据时,这个参数是很有用的
    1) 确保所有客户端服务器对NFS共享目录具备相同的用户访问权限
    a. all_squash把所有客户端都压缩成固定的匿名用户(UID相同)
    b. 就是anonuid,anongid指定的UID和GID的用户
    2)所有的客户端和服务端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同)

     anonuid  

    指定的是匿名用户的UID或GID数字
    所有服务器上面,匿名用户(nfsnobody rsync www)uid和gid
    参数以anon*开头即只anonymous匿名用户,这个用户UID设置值通常为nfsnobody的UID值,当然也可以额自行设置这个UID值。但是,UID必须存在于/etc/passwd中,在多NFS Clients时,如多台webserver共享一个NFS目录,通过这个参数可以使得不同的NFSclients写入的数据对所有NFS clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可

     anongid  同anonuid,却比就是把UID换成GID

    重启生效

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

    查看是否生效

    [root@nfs01 ~]# showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data 172.16.1.0/24

    本地测试

    [root@nfs01 ~]# mount -t nfs 172.16.1.31:/data /mnt
    [root@nfs01 ~]# df -h
    Filesystem         Size  Used Avail Use% Mounted on
    /dev/sda3          6.8G  1.5G  5.0G  23% /
    tmpfs              242M     0  242M   0% /dev/shm
    /dev/sda1          190M   33M  147M  19% /boot
     172.16.1.31:/data  6.8G  1.5G  5.0G  23% /mnt

    授权

    [root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/
    [root@nfs01 ~]# ll /data/ -d
    drwxr-xr-x. 6 nfsnobody nfsnobody 4096 Mar  9 16:06 /data/

    卸载

    [root@nfs01 ~]# umount /mnt/
     [root@nfs01 ~]# df
     Filesystem     1K-blocks    Used Available Use% Mounted on
     /dev/sda3        7116844 1531056   5217612  23% /
     tmpfs             246972       0    246972   0% /dev/shm
     /dev/sda1         194241   33770    150231  19% /boot

    客户端挂载测试

      [root@backup ~]# mount -t nfs 172.16.1.31:/data /data
      [root@backup ~]# df -h
      Filesystem         Size  Used Avail Use% Mounted on
      /dev/sda3          6.8G  1.5G  5.0G  23% /
      tmpfs              242M     0  242M   0% /dev/shm
      /dev/sda1          190M   33M  147M  19% /boot
      172.16.1.31:/data  6.8G  1.5G  5.0G  23% /data

    开机自启动检查

     [root@nfs01 ~]# chkconfig | awk '$1~/nfs$|rpcbind/'
      nfs                0:off    1:off    2:off    3:off    4:off    5:off    6:off
      rpcbind            0:off    1:off    2:on    3:on    4:on    5:on    6:off

     小结

    rpcbind启动必须在NFS之前
    1  创建刚想目录/data

    mkdir /data

    2 修改配置文件 /etc/exports

     [root@nfs01 ~]# cat /etc/exports
      # share /data
      /data 172.16.1.0/24(rw,sync)

     3 平滑重启NFS(配置文件一改, 就必须重启服务)

    /etc/init.d/nfs reload

    4 服务端自我检查

    showmount -e 172.16.1.31

    5 服务端 挂载测试

    mount -t 172.16.1.31:/data /mnt

    6 加入开机自启动

    chkconfig nfs on
    chkconfig rpcbind on

    三、排查故障
    1、前提,NFS原理及部署过程
    2、先在客户端的排查

     ping server_ip
     telnet server_ip 111
     showmount -e server_ip
     mount

     /proc/mounts 有挂载信息,就强制卸载即可

  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/augustyang/p/10131920.html
Copyright © 2011-2022 走看看