zoukankan      html  css  js  c++  java
  • 部署nfs文件服务器

    一、系统环境

    主机类型 IP地址
    系统 CentOS7.6(客户端、服务端都一样)
    NFS服务器 192.168.174.134
    NFS客户端(autofs) 192.168.174.130
    NFS客户端 192.168.174.136

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

    二、NFS工作原理

    • 首先 NFS 服务器端开启 rpcbind
    • 然后服务器端开启 NFS 服务,这里 NFS和各项功能都需要向 RPC 服务注册,这里 RPC 会通知 portmap 模块将可用的端口分配给 statd、rquotad 等
    • 然后 NFS 客户端 RPC 服务就会通过网络向 NFS 服务器端的 111 端口发送 NFS 文件存取功能的询问请求
    • NFS 服务端的 RPC 服务找到对应的已经注册的 NFSdeamon 端口后,通知 NFS 客户端的 RPC 服务
    • 此时 NFS 客户端就可以获取到 NFS 服务端各个进程的正确端口,然后通过客户端 RPC 就直接与 NFS 服务器的 RPC 进行存取数据了(RPC 知道了 NFS 的具体端口,就可以实现远程调用,即传输)

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

    三、NFS 配置文件 /etc/exports 里面的权限介绍

    3.1、格式:

    /data/nfs  192.168.174.0/24(rw,sync)

    3.2、权限介绍:

    • ro:默认选项,以只读的方式共享
    • rw:以读写的方式共享
    • root_squash:将客户端使用的是 root 用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)
    • no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户
    • all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户
    • anonuid:设置映射到本地的匿名用户的UID
    • anongid:设置映射到本地的匿名用户的GID
    • sync:默认选项,保持数据同步,数据同步写入到内存和硬盘
    • async:异步,先将数据写入到内存,在将数据写入到硬盘(不推荐使用,会丢失数据)
    • secure:默认选项,NFS客户端必须使用NFS保留端口(通常是1024以下的端口)
    • insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)

     

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

    四、NFS 常用的命令

    4.1、nfsstat:查看系统的一些信息

    • -c,--client:显示 NFS 客户端的统计信息(只能客户端上用)
    • -s,--server:显示 NFS 服务器端的统计信息(只能服务端上用)
    • -m,--mounts:显示已挂载的 NFS 文件系统的详细参数
    • -2:显示 nfsv2 的统计信息
    • -3:显示 nfsv3 的统计信息
    • -4:显示 nfsv4 的统计信息
    • -o[facility]:显示指定类型的统计信息
      nfs:NFS 协议信息
      rpc:一般 RPC 信息
      net:网络统计信息
      all:显示以上所有信息

    4.2、rpcinfo:查看端口信息

    • -p:显示注册的端口
    • -m:显示 rpcbind 操作的统计信息表
    • -s:显示所有已注册的 RPC 程序的简明列表
    • -T:显示有关使用特定传输或协议的服务的信息
    • -t:探测使用 TCP 的 RPC 程序
    • -u:探测使用 UDP 的 RPC 程序

    4.3、exports:管理NFS共享文件系统列表

    • -r:重新共享目录

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

    五、NFS 部署(不是自动挂载)

    5.1、安装 nfs-utils

    # 服务器端安装 nfs 服务器主件:
    [root@nfs ~]# yum install nfs-utils -y
    
    # 客户端安装 nfs 服务器主件:
    [root@node_8 ~]# yum install nfs-utils -y


    # 关闭防火墙和SELinux:
    [root@node_8 ~]# systemctl stop firewalld && setenforce 0

    5.2、配置服务端的 NFS 配置文件(客户端不用配置)

    # 创建 NFS 共享目录
    [root@nfs ~]# mkdir -p /data/nfs
    
    # 修改 NFS 配置文件
    [root@nfs ~]# vim /etc/exports
    
    /data/nfs *(rw,sync)

    5.4、服务器发布 NFS 服务

    /*
        启动的服务顺序千万别搞错了
        先启动 “rpcbind” -> "nfs"
    */
    [root@nfs ~]# systemctl start rpcbind && systemctl start nfs
    
    # 最后导出发布(不报错则说明成功了):
    [root@nfs ~]# exportfs -r
    
    # 也可以查看下是否启动成功:
    [root@nfs ~]# rpcinfo -p
       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
        100024    1   udp  41084  status

    5.5、客户端挂载 NFS(客户端不需要启动 nfs,它有个 rpc 主件已经启动了)

    # 创建 NFS 服务器的挂载目录 
    [root@node_8 ~]# mkdir -p /data/mount/nfs
    
    # 关闭防火墙和SELinux
    [root@node_8 ~]# systemctl stop firewalld && setenforce 0
    
    # 查看 NFS 服务端的共享目录(测试是否能连接上去)
    [root@node_8 ~]# showmount -e 192.168.174.134
    Export list for 192.168.174.134:
    /data/nfs *
    [root@node_8 ~]# 
    /*
        [root@node_8 ~]# showmount -e 192.168.174.134
    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
    这个错是服务端的防火墙或SELinux启动被拒绝连接引起,在服务端关闭防火墙和SELinux即可
    */
    
    # 挂载
    [root@node_8 ~]# mount -t nfs -o soft,timeo=1 192.168.174.134:/data/nfs /data/mount/nfs
    /*
        -t:指定要挂载的文件类型
        soft:软挂载,默认是硬挂载,软挂载只有在使用的时候才会挂载,不使用的时候不挂载,遇到问题时会终止挂载并返回信息,而硬挂载则是一直挂载
    */
    
    # 查看是否挂载成功
    [root@node_8 ~]# df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    /dev/sda2                   20G  1.3G   19G   7% /
    devtmpfs                   900M     0  900M   0% /dev
    192.168.174.134:/data/nfs   58G   33M   58G   1% /data/mount/nfs

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

    六、NFS 自动挂载部署方法

    # 查看是否安装有nfs-utils,如果有就不安装了,没有就安装
    [root@Node1_LNP ~]# rpcinfo -p
    -bash: rpcinfo: command not found
    # 像这个没有,所以要安装下 nfs-utils
    [root@Node1_LNP ~]# yum install nfs-utils -y
    
    # 安装 autofs
    [root@Node1_LNP ~]# yum install autofs -y
    
    
    # 修改 autofs 的配置文件
    [root@Node1_LNP ~]# vim /etc/auto.master
    # 在 /misc   /etc/auto.misc下面加入,/etc/nfs.misc可以自定义,但是 .misc必须是一致的,不能乱写
    /data/mnf/nfs     /etc/nfs.misc
    
    # 创建并设置刚刚自定义的配置文件
    [root@Node1_LNP ~]# vim /etc/nfs.misc
    # 目录名        文件类型,权限          服务端共享的目录地址
    nfs1        -fstype=nfs,rw,sync     192.168.174.134:/data/nfs
    nfs2        -fstype=nfs,ro,sync     192.168.174.134:/data/nfs
    
    # 启动 autofs 
    [root@Node1_LNP ~]# systemctl start autofs
    
    #测试下是否成功,进入刚刚我们在配置文件里面设置的那两个文件目录,这两个目录是没有创建的
    [root@Node1_LNP ~]# ls /data/mnf/nfs/
    [root@Node1_LNP ~]# cd /data/mnf/nfs/nfs1
    [root@Node1_LNP nfs1]# cd /data/mnf/nfs/nfs2
    # 没有报错,说明成功了
    
    # 在重启下服务器,重新测试是否成功
    [root@Node1_LNP nfs2]# reboot
    [root@Node1_LNP ~]# systemctl start autofs
    [root@Node1_LNP ~]# ls /data/mnf/nfs/
    [root@Node1_LNP ~]# cd /data/mnf/nfs/nfs1
    [root@Node1_LNP nfs1]# cd /data/mnf/nfs/nfs2
    [root@Node1_LNP nfs2]# 
    # 没有报错,说明成功了

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

    七、NFS 的一般优化

    主要优化 mount -o 的挂载参数:

    • async:异步同步,数据不会立刻同步到磁盘,此参数会提高 I/O 性能 ,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合,一般生产环境不推荐使用)
    • noatime:取消更新文件系统上的 inode 访问时间,提升 I/O 性能,优化 I/O 目的,推荐使用
    • nodiratime:取消更新文件系统上的 directory inode 访问时间,高并发环境,推荐显示应用该选项,提高 系统性能
    • noexec:挂载的这个文件系统,要不要执行程序(安全选项)
    • nosuid:挂载的这个文件系统上面,可不可以设置 UID(安全选项)
    • rsize/wsize:读取(rsize) / 写入(wsize) 的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说32768(bytes),提升缓冲区块将可提升 NFS 文件系统的传输能力。但是设置的值也不要太大,最好是实现网络能够传输的最大值为限
  • 相关阅读:
    Vue DatePicker和不可用
    API图片路径和超链接语义化转换
    jQuery常用插件大全
    前端面试必备技巧整理
    堆与堆排序/Heap&Heap sort
    第k大的数
    POJ 2083 Fractal 分形题目
    最大子数组问题/Maximum Subarray
    一个简单的随机数生成算法
    成绩排序
  • 原文地址:https://www.cnblogs.com/raix/p/12936824.html
Copyright © 2011-2022 走看看