部署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 文件系统的传输能力。但是设置的值也不要太大,最好是实现网络能够传输的最大值为限
原文地址:https://www.cnblogs.com/raix/p/12936824.html