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 文件系统的传输能力。但是设置的值也不要太大,最好是实现网络能够传输的最大值为限
  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/raix/p/12936824.html
Copyright © 2011-2022 走看看