AnolisOS 8 下nfs安装配置

配置NFS共享存储并固定端口

服务端服务器配置

环境准备:
关闭防火墙及selinux

# 防火墙
systemctl disable firewalld
systemctl stop firewalld

#selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
##信息:selinux已经关闭,需要重启系统才能永久生效
1.安装服务端 ip:192.168.100.86
[root@anolis8 ~]# rpm -qa nfs-utils rpcbind           #查看是否安装
[root@anolis8 ~]# yum install -y nfs-utils rpcbind
Repository epel is listed more than once in the configuration
上次元数据过期检查:0:36:34 前,执行于 2022年12月20日 星期二 15时58分09秒。
依赖关系解决。
============================================================================================================================================================================
 软件包                                        架构                               版本                                             仓库                                大小
============================================================================================================================================================================
安装:
 nfs-utils                                     x86_64                             1:2.3.3-51.0.1.an8                               BaseOS                             503 k
 rpcbind                                       x86_64                             1.2.5-8.an8                                      BaseOS                              69 k
安装依赖关系:
 gssproxy                                      x86_64                             0.8.0-20.an8                                     BaseOS                             118 k
 keyutils                                      x86_64                             1.5.10-9.an8                                     BaseOS                              65 k
 libverto-libevent                             x86_64                             0.3.0-5.el8                                      BaseOS                              15 k
 python3-pyyaml                                x86_64                             3.12-12.el8                                      BaseOS                             192 k
 quota                                         x86_64                             1:4.04-14.an8                                    BaseOS                             213 k
 quota-nls                                     noarch                             1:4.04-14.an8                                    BaseOS                              94 k

事务概要
============================================================================================================================================================================
安装  8 软件包

总下载:1.2 M
安装大小:3.8 M
下载软件包:
(1/8): libverto-libevent-0.3.0-5.el8.x86_64.rpm                                                                                              90 kB/s |  15 kB     00:00    
(2/8): gssproxy-0.8.0-20.an8.x86_64.rpm                                                                                                     491 kB/s | 118 kB     00:00    
(3/8): nfs-utils-2.3.3-51.0.1.an8.x86_64.rpm                                                                                                2.1 MB/s | 503 kB     00:00    
(4/8): python3-pyyaml-3.12-12.el8.x86_64.rpm                                                                                                1.2 MB/s | 192 kB     00:00    
(5/8): keyutils-1.5.10-9.an8.x86_64.rpm                                                                                                     160 kB/s |  65 kB     00:00    
(6/8): rpcbind-1.2.5-8.an8.x86_64.rpm                                                                                                       701 kB/s |  69 kB     00:00    
(7/8): quota-4.04-14.an8.x86_64.rpm                                                                                                         1.0 MB/s | 213 kB     00:00    
(8/8): quota-nls-4.04-14.an8.noarch.rpm                                                                                                     268 kB/s |  94 kB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                        1.6 MB/s | 1.2 MB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                             1/1 
  运行脚本: rpcbind-1.2.5-8.an8.x86_64                                                                                                                                  1/8 
  安装    : rpcbind-1.2.5-8.an8.x86_64                                                                                                                                  1/8 
  运行脚本: rpcbind-1.2.5-8.an8.x86_64                                                                                                                                  1/8 
  安装    : quota-nls-1:4.04-14.an8.noarch                                                                                                                              2/8 
  安装    : quota-1:4.04-14.an8.x86_64                                                                                                                                  3/8 
  安装    : python3-pyyaml-3.12-12.el8.x86_64                                                                                                                           4/8 
  安装    : libverto-libevent-0.3.0-5.el8.x86_64                                                                                                                        5/8 
  安装    : gssproxy-0.8.0-20.an8.x86_64                                                                                                                                6/8 
  运行脚本: gssproxy-0.8.0-20.an8.x86_64                                                                                                                                6/8 
  安装    : keyutils-1.5.10-9.an8.x86_64                                                                                                                                7/8 
  运行脚本: nfs-utils-1:2.3.3-51.0.1.an8.x86_64                                                                                                                         8/8 
  安装    : nfs-utils-1:2.3.3-51.0.1.an8.x86_64                                                                                                                         8/8 
  运行脚本: nfs-utils-1:2.3.3-51.0.1.an8.x86_64                                                                                                                         8/8 
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-ml-6.0.0-1.el8.elrepo.x86_64.conf:6: hwcap directive ignored

  验证    : gssproxy-0.8.0-20.an8.x86_64                                                                                                                                1/8 
  验证    : keyutils-1.5.10-9.an8.x86_64                                                                                                                                2/8 
  验证    : libverto-libevent-0.3.0-5.el8.x86_64                                                                                                                        3/8 
  验证    : nfs-utils-1:2.3.3-51.0.1.an8.x86_64                                                                                                                         4/8 
  验证    : python3-pyyaml-3.12-12.el8.x86_64                                                                                                                           5/8 
  验证    : quota-1:4.04-14.an8.x86_64                                                                                                                                  6/8 
  验证    : quota-nls-1:4.04-14.an8.noarch                                                                                                                              7/8 
  验证    : rpcbind-1.2.5-8.an8.x86_64                                                                                                                                  8/8 

已安装:
  gssproxy-0.8.0-20.an8.x86_64 keyutils-1.5.10-9.an8.x86_64   libverto-libevent-0.3.0-5.el8.x86_64 nfs-utils-1:2.3.3-51.0.1.an8.x86_64 python3-pyyaml-3.12-12.el8.x86_64
  quota-1:4.04-14.an8.x86_64   quota-nls-1:4.04-14.an8.noarch rpcbind-1.2.5-8.an8.x86_64          

完毕!
  • 无论客户端,服务端,需要使用NFS,必须安装RPC服务。NFS的RPC服务,在Centos5下名为portmap,Centos6下名称为rpcbind。Centos7下名称为rpcbind。anolis8下名称为rpcbind.service。
2。启动rpcbind服务
  • 查看服务状态
[root@anolis8 ~]# systemctl status rpcbind
● rpcbind.service - RPC Bind
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:rpcbind(8)
  • 如果不知道rpcbind命令在哪
[root@anolis8 ~]# which rpcbind
/usr/bin/rpcbind
  • 启动rpc服务
[root@anolis8 ~]# systemctl restart rpcbind.service
[root@anolis8 ~]# systemctl status rpcbind.service -l
● rpcbind.service - RPC Bind
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2022-12-21 10:20:40 CST; 5s ago
     Docs: man:rpcbind(8)
 Main PID: 20777 (rpcbind)
    Tasks: 1 (limit: 24888)
   Memory: 1.5M
   CGroup: /system.slice/rpcbind.service
           └─20777 /usr/bin/rpcbind -w -f

12月 21 10:20:40 anolis8 systemd[1]: Starting RPC Bind...
12月 21 10:20:40 anolis8 systemd[1]: Started RPC Bind.
  • 查看rpc
[root@anolis8 ~]# lsof -i :111
-bash: lsof: 未找到命令
[root@anolis8 ~]# yum install lsof
Repository epel is listed more than once in the configuration
上次元数据过期检查:4:13:35 前,执行于 2022年12月21日 星期三 06时12分30秒。
依赖关系解决。
============================================================================================================================================================================
 软件包                               架构                                   版本                                              仓库                                    大小
============================================================================================================================================================================
安装:
 lsof                                 x86_64                                 4.93.2-1.0.1.an8                                  BaseOS                                 131 k

事务概要
============================================================================================================================================================================
安装  1 软件包

总下载:131 k
安装大小:212 k
确定吗?[y/N]: y
下载软件包:
lsof-4.93.2-1.0.1.an8.x86_64.rpm                                                                                                            646 kB/s | 131 kB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                        630 kB/s | 131 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                             1/1 
  安装    : lsof-4.93.2-1.0.1.an8.x86_64                                                                                                                                1/1 
  运行脚本: lsof-4.93.2-1.0.1.an8.x86_64                                                                                                                                1/1 
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-ml-6.0.0-1.el8.elrepo.x86_64.conf:6: hwcap directive ignored

  验证    : lsof-4.93.2-1.0.1.an8.x86_64                                                                                                                                1/1 

已安装:
  lsof-4.93.2-1.0.1.an8.x86_64                                                                                                                                              

完毕!
[root@anolis8 ~]# lsof -i :111
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd     1 root   58u  IPv4  35868      0t0  TCP *:sunrpc (LISTEN)
systemd     1 root   59u  IPv4  35869      0t0  UDP *:sunrpc 
systemd     1 root   61u  IPv6  35870      0t0  TCP *:sunrpc (LISTEN)
systemd     1 root   63u  IPv6  35871      0t0  UDP *:sunrpc 
rpcbind 20777  rpc    4u  IPv4  35868      0t0  TCP *:sunrpc (LISTEN)
rpcbind 20777  rpc    5u  IPv4  35869      0t0  UDP *:sunrpc 
rpcbind 20777  rpc    6u  IPv6  35870      0t0  TCP *:sunrpc (LISTEN)
rpcbind 20777  rpc    7u  IPv6  35871      0t0  UDP *:sunrpc 

[root@anolis8 ~]# netstat -lntup|grep rpcbind
[root@anolis8 ~]# 
  • 查看nfs服务向rpc注册的端口信息
[root@anolis8 ~]# 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
  • 设置rpcbind是否开机启动
[root@anolis8 ~]# systemctl enable rpcbind.service
3.启动NFS服务

centos7下nfs服务名称是/usr/lib/systemd/system/nfs-server.service
anolis8下nfs服务名称是/usr/lib/systemd/system/nfs-server.service

#启动服务,查看状态
[root@anolis8 ~]# systemctl start nfs-server.service 
[root@anolis8 ~]# systemctl status nfs-server.service -l
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Wed 2022-12-21 14:11:13 CST; 8s ago
  Process: 21698 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 21685 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 21683 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 21698 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 24888)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

12月 21 14:11:13 anolis8 systemd[1]: Starting NFS server and services...
12月 21 14:11:13 anolis8 systemd[1]: Started NFS server and services.

设置nfs开机启动

[root@anolis8 ~]# systemctl enable nfs-server.service 
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

配置固定端口

NFS服务启动时会随机使用端口向RPC服务进行注册,共享存储开启了多个端口,除了111、2049端口是固定的,其他端口每次启动都会随机生成,所以要启用防火墙,就需要将所有的端口固定。

配置NFS端口
1.修改/etc/nfs.conf文件,将以下port的属性都打开,且改为固定值
[root@localhost ~]# vi /etc/sysconfig/nfs
... ...
[lockd]
port=30002
udp-port=30002
#
[mountd]
# debug=0
# manage-gids=n
# descriptors=0
port=30003
# threads=1
# reverse-lookup=n
# state-directory-path=/var/lib/nfs
# ha-callout=
# cache-use-ipaddr=n
# ttl=1800
#
[nfsdcld]
# debug=0
# storagedir=/var/lib/nfs/nfsdcld
#
[nfsdcltrack]
# debug=0
# storagedir=/var/lib/nfs/nfsdcltrack
#
[nfsd]
# debug=0
# threads=8
# host=
port=30006
# grace-time=90
# lease-time=90
# tcp=y
# vers2=n
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
# rdma=n
# rdma-port=20049
#
[statd]
# debug=0
port=30004
# outgoing-port=0
# name=
# state-directory-path=/var/lib/nfs/statd
# ha-callout=
# no-notify=0
#
... ...

修改这个文件后启动NFS(见下节)并执行:

[root@anolis8 ~]# systemctl restart rpcbind.service 
[root@anolis8 ~]# systemctl restart nfs-server.service 
[root@anolis8 ~]# 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  47506  status
    100024    1   tcp  38351  status
    100005    1   udp  30003  mountd
    100005    1   tcp  30003  mountd
    100005    2   udp  30003  mountd
    100005    2   tcp  30003  mountd
    100005    3   udp  30003  mountd
    100005    3   tcp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  59718  nlockmgr
    100021    3   udp  59718  nlockmgr
    100021    4   udp  59718  nlockmgr
    100021    1   tcp  35823  nlockmgr
    100021    3   tcp  35823  nlockmgr
    100021    4   tcp  35823  nlockmgr

会发现nlockmgr这个服务的端口并不是上面修改的值(30002),这时候就要执行以下命令:

cp /etc/sysctl.conf /etc/sysctl.conf.$(date +%F)
sed -i '$a fs.nfs.nlm_tcpport=30002\nfs.nfs.nlm_udpport=30002' /etc/sysctl.conf # 设置nlockmgr服务端口为30002
[root@anolis8 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
#socket的监听队列的长度
net.core.somaxconn= 2048
#允许分配所有无理内存
vm.overcommit_memory = 1
fs.nfs.nlm_tcpport=30002
fs.nfs.nlm_udpport=30002

 # 刷新配置
[root@anolis8 ~]# sysctl -p
net.core.somaxconn = 2048
vm.overcommit_memory = 1
fs.nfs.nlm_tcpport = 30002
fs.nfs.nlm_udpport = 30002
[root@anolis8 ~]# 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  47506  status
    100024    1   tcp  38351  status
    100005    1   udp  30003  mountd
    100005    1   tcp  30003  mountd
    100005    2   udp  30003  mountd
    100005    2   tcp  30003  mountd
    100005    3   udp  30003  mountd
    100005    3   tcp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  59718  nlockmgr
    100021    3   udp  59718  nlockmgr
    100021    4   udp  59718  nlockmgr
    100021    1   tcp  35823  nlockmgr
    100021    3   tcp  35823  nlockmgr
    100021    4   tcp  35823  nlockmgr
[root@anolis8 ~]# systemctl restart nfs-server.service 
[root@anolis8 ~]# 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  47506  status
    100024    1   tcp  38351  status
    100005    1   udp  30003  mountd
    100005    1   tcp  30003  mountd
    100005    2   udp  30003  mountd
    100005    2   tcp  30003  mountd
    100005    3   udp  30003  mountd
    100005    3   tcp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  30002  nlockmgr
    100021    3   udp  30002  nlockmgr
    100021    4   udp  30002  nlockmgr
    100021    1   tcp  30002  nlockmgr
    100021    3   tcp  30002  nlockmgr
    100021    4   tcp  30002  nlockmgr
  • 注意这个端口值不要和上面/etc/nfs.conf文件的标签下的除 [lockd]下的其他port使用相同值,否则无法启动NFS
2.配置安全组规则

如果是阿里云或者其他带有安全组的云服务器,则需要配置一下安全组的规则,将NFS使用到的端口放行。
即上面设置的固定端口都需要放行,主要TCP和UDP需要分开放行。除了设置的几个固定端口,还需要放行以下端口:

udp 111
tcp 111
udp 4046
tcp 2049
参考:https://blog.csdn.net/fhqsse220/article/details/45668057?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_aggregation-1-45668057.pc_agg_rank_aggregation&utm_term=nfs%E6%8C%82%E8%BD%BD%E9%9C%80%E8%A6%81%E5%BC%80%E9%80%9A%E7%9A%84%E7%AB%AF%E5%8F%A3&spm=1000.2123.3001.4430

如果不放行这些端口,会在客户端挂载时: 使用 mount 10.12.13.11:/vol/lft_jjmk /mnt 报错:mount.nfs: Connection timed out

放开以上指定的端口,tcp和udp都要放开。

[root@localhost ~]#firewall-cmd --zone=public --add-port=111/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=2049/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30002/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30003/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30004/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30006/tcp --permanent

[root@localhost ~]#firewall-cmd --zone=public --add-port=111/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=2049/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30002/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30003/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30004/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30006/udp --permanent
3.重新启动服务器,重启服务以上配置的端口不能生效,所以选择重启服务器。
 [root@localhost ~]#reboot
4.NFS服务端配置

修改exports文件

[root@anolis8 ~]# vim /etc/exports
添加如下内容
/data/test 192.168.100.91(rw,sync,all_squash)
/data 10.0.20.10(rw,sync,all_squash) 10.0.20.11(rw,sync,all_squash) 10.0.20.13(rw,sync,all_squash) 10.0.20.14(rw,sync,all_squash) 10.0.20.15(rw,sync,all_squash) 10.0.20.18(rw,sync,all_squash) 10.0.20.19(rw,sync,all_squash)
内容格式说明:
NFS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)

ro:目录只读
rw:目录读写
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nobody)
no_all_squash:与all_squash取反(默认设置)
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
no_root_squash:如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash才行
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户

创建共享目录
[root@anolis8 ~]# mkdir -p /data/test
[root@anolis8 ~]#  chown nobody.nobody  /data/test  #为目录授权

重新加载NFS配置(exports文件)
[root@anolis8 ~]# exportfs -rv
exporting 192.168.100.91:/data/test

客户端服务器配置

192.168.100.91
环境准备:
关闭防火墙及selinux

# 防火墙
systemctl disable firewalld
systemctl stop firewalld

#selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
##信息:selinux已经关闭,需要重启系统才能永久生效
  • 安装NFS

[root@localhost ~]# rpm -qa nfs-utils rpcbind             #查看是否安装
[root@localhost ~]# yum install -y nfs-utils rpcbind     # 安装nfs,rpcbind
#启动rpcbind.service
[root@localhost ~]# systemctl start rpcbind.service
[root@localhost ~]# systemctl status rpcbind.service -l
● rpcbind.service - RPC Bind
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-12-22 01:17:55 CST; 3s ago
     Docs: man:rpcbind(8)
 Main PID: 13172 (rpcbind)
    Tasks: 1 (limit: 23664)
   Memory: 1.5M
   CGroup: /system.slice/rpcbind.service
           └─13172 /usr/bin/rpcbind -w -f

12月 22 01:17:55 localhost.localdomain systemd[1]: Starting RPC Bind...
12月 22 01:17:55 localhost.localdomain systemd[1]: Started RPC Bind.
#rpcbind命令在哪
[root@localhost ~]# which rpcbind
/usr/sbin/rpcbind
#查看rpc
[root@localhost ~]# lsof -i :111
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd     1 root  102u  IPv4  90837      0t0  TCP *:sunrpc (LISTEN)
systemd     1 root  103u  IPv4  90838      0t0  UDP *:sunrpc 
systemd     1 root  104u  IPv6  90839      0t0  TCP *:sunrpc (LISTEN)
systemd     1 root  105u  IPv6  90840      0t0  UDP *:sunrpc 
rpcbind 13172  rpc    4u  IPv4  90837      0t0  TCP *:sunrpc (LISTEN)
rpcbind 13172  rpc    5u  IPv4  90838      0t0  UDP *:sunrpc 
rpcbind 13172  rpc    6u  IPv6  90839      0t0  TCP *:sunrpc (LISTEN)
rpcbind 13172  rpc    7u  IPv6  90840      0t0  UDP *:sunrpc

查看nfs服务向rpc注册的端口信息
[root@localhost ~]# 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

设置rpcbind是否开机启动

    [root@localhost ~]# systemctl enable rpcbind.service
3.启动NFS服务

centos7下nfs服务名称是/usr/lib/systemd/system/nfs-server.service
anolis8下nfs服务名称是/usr/lib/systemd/system/nfs-server.service

#启动服务,查看状态
[root@localhost ~]# systemctl status nfs-server.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@localhost ~]# systemctl start nfs-server.service
[root@localhost ~]# systemctl status nfs-server.service -l
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Thu 2022-12-22 17:01:39 CST; 4s ago
  Process: 14174 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 14162 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 14160 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 14174 (code=exited, status=0/SUCCESS)

12月 22 17:01:39 localhost.localdomain systemd[1]: Starting NFS server and services...
12月 22 17:01:39 localhost.localdomain systemd[1]: Started NFS server and services.

设置nfs开机启动

[root@localhost ~]# systemctl enable nfs-server.service 
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

配置固定端口

NFS服务启动时会随机使用端口向RPC服务进行注册,共享存储开启了多个端口,除了111、2049端口是固定的,其他端口每次启动都会随机生成,所以要启用防火墙,就需要将所有的端口固定。

配置NFS端口
1.修改/etc/nfs.conf文件,将以下port的属性都打开,且改为固定值
... ...
[lockd]
port=30002
udp-port=30002
#
[mountd]
# debug=0
# manage-gids=n
# descriptors=0
port=30003
# threads=1
# reverse-lookup=n
# state-directory-path=/var/lib/nfs
# ha-callout=
# cache-use-ipaddr=n
# ttl=1800
#
[nfsdcld]
# debug=0
# storagedir=/var/lib/nfs/nfsdcld
#
[nfsdcltrack]
# debug=0
# storagedir=/var/lib/nfs/nfsdcltrack
#
[nfsd]
# debug=0
# threads=8
# host=
port=30006
# grace-time=90
# lease-time=90
# tcp=y
# vers2=n
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
# rdma=n
# rdma-port=20049
#
[statd]
# debug=0
port=30004
# outgoing-port=0
# name=
# state-directory-path=/var/lib/nfs/statd
# ha-callout=
# no-notify=0
#
... ...

修改这个文件后启动NFS(见下节)并执行:

[root@localhost ~]# systemctl restart rpcbind.service 
[root@localhost ~]# systemctl restart nfs-server.service 
[root@localhost ~]# 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  49614  status
    100024    1   tcp  34249  status
    100005    1   udp  30003  mountd
    100005    2   udp  30003  mountd
    100005    3   udp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  46098  nlockmgr
    100021    3   udp  46098  nlockmgr
    100021    4   udp  46098  nlockmgr
    100021    1   tcp  35393  nlockmgr
    100021    3   tcp  35393  nlockmgr
    100021    4   tcp  35393  nlockmgr

会发现nlockmgr这个服务的端口并不是上面修改的值(30002),这时候就要执行以下命令:

[root@localhost ~]# cp /etc/sysctl.conf /etc/sysctl.conf.$(date +%F)
[root@localhost ~]# sed -i '$a fs.nfs.nlm_tcpport=30002\nfs.nfs.nlm_udpport=30002' /etc/sysctl.conf
[root@localhost ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
fs.nfs.nlm_tcpport=30002
fs.nfs.nlm_udpport=30002
[root@localhost ~]# sysctl -p
fs.nfs.nlm_tcpport = 30002
fs.nfs.nlm_udpport = 30002
[root@localhost ~]# 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  49614  status
    100024    1   tcp  34249  status
    100005    1   udp  30003  mountd
    100005    2   udp  30003  mountd
    100005    3   udp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  59952  nlockmgr
    100021    3   udp  59952  nlockmgr
    100021    4   udp  59952  nlockmgr
    100021    1   tcp  37209  nlockmgr
    100021    3   tcp  37209  nlockmgr
    100021    4   tcp  37209  nlockmgr
[root@localhost ~]# systemctl restart nfs-server.service
[root@localhost ~]# 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  49614  status
    100024    1   tcp  34249  status
    100005    1   udp  30003  mountd
    100005    2   udp  30003  mountd
    100005    3   udp  30003  mountd
    100003    3   tcp  30006  nfs
    100003    4   tcp  30006  nfs
    100227    3   tcp  30006  nfs_acl
    100021    1   udp  30002  nlockmgr
    100021    3   udp  30002  nlockmgr
    100021    4   udp  30002  nlockmgr
    100021    1   tcp  30002  nlockmgr
    100021    3   tcp  30002  nlockmgr
    100021    4   tcp  30002  nlockmgr
  • 注意这个端口值不要和上面/etc/nfs.conf文件的标签下的除 [lockd]下的其他port使用相同值,否则无法启动NFS
2.配置安全组规则

如果是阿里云或者其他带有安全组的云服务器,则需要配置一下安全组的规则,将NFS使用到的端口放行。
即上面设置的固定端口都需要放行,主要TCP和UDP需要分开放行。除了设置的几个固定端口,还需要放行以下端口:

udp 111
tcp 111
udp 4046
tcp 2049
参考:https://blog.csdn.net/fhqsse220/article/details/45668057?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_aggregation-1-45668057.pc_agg_rank_aggregation&utm_term=nfs%E6%8C%82%E8%BD%BD%E9%9C%80%E8%A6%81%E5%BC%80%E9%80%9A%E7%9A%84%E7%AB%AF%E5%8F%A3&spm=1000.2123.3001.4430

如果不放行这些端口,会在客户端挂载时: 使用 mount 10.12.13.11:/vol/lft_jjmk /mnt 报错:mount.nfs: Connection timed out

放开以上指定的端口,tcp和udp都要放开。

[root@localhost ~]#firewall-cmd --zone=public --add-port=111/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=2049/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30002/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30003/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30004/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30006/tcp --permanent

[root@localhost ~]#firewall-cmd --zone=public --add-port=111/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=2049/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30002/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30003/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30004/udp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=30006/udp --permanent
3.重新启动服务器,重启服务以上配置的端口不能生效,所以选择重启服务器。
 [root@localhost ~]#reboot
4.挂载目录

查看可挂载目录

[root@localhost ~]# showmount -e 192.168.100.86
Export list for 192.168.100.86:
/data/test 192.168.100.91

新建本地目录

[root@localhost]# mkdir /data

挂载服务器目录到本机目录

[root@localhost ~]# mount -t nfs 192.168.100.86:/data/test  /data
[root@localhost ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
devtmpfs                   1.9G     0  1.9G    0% /dev
tmpfs                      1.9G     0  1.9G    0% /dev/shm
tmpfs                      1.9G  8.7M  1.9G    1% /run
tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/ao-root         46G  2.0G   44G    5% /
/dev/sda1                  976M  161M  749M   18% /boot
tmpfs                      374M     0  374M    0% /run/user/0
192.168.100.86:/data/test   46G  4.2G   41G   10% /data

测试
在目录中新建文件,在各服务器上查看该目录内是否同步出现,编辑文件,测试各服务器是否可以同步写入信息。

[root@localhost ~]# echo "6666"> /data/1.txt
[root@localhost ~]# ll /data/
总用量 4
-rw-r--r--. 1 nobody nobody 5 12月 22 10:28 1.txt
[root@anolis8 ~]# cat /data/test/1.txt 
6666
[root@anolis8 ~]# echo "7777" >> /data/test/1.txt 
[root@anolis8 ~]# cat /data/test/1.txt 
6666
7777
[root@localhost ~]# cat /data/1.txt 
6666
7777
  • 编辑/etc/fstab,开机自动挂载
[root@localhost ~]# vim /etc/fstab
# 在结尾添加如下一行
192.168.100.86:/data/test   /data  nfs    defaults    0 0 
[root@localhost ~]# umount /data
[root@localhost ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             1.9G     0  1.9G    0% /dev
tmpfs                1.9G     0  1.9G    0% /dev/shm
tmpfs                1.9G  8.7M  1.9G    1% /run
tmpfs                1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/ao-root   46G  2.0G   44G    5% /
/dev/sda1            976M  161M  749M   18% /boot
tmpfs                374M     0  374M    0% /run/user/0
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
devtmpfs                   1.9G     0  1.9G    0% /dev
tmpfs                      1.9G     0  1.9G    0% /dev/shm
tmpfs                      1.9G  8.7M  1.9G    1% /run
tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/ao-root         46G  2.0G   44G    5% /
/dev/sda1                  976M  161M  749M   18% /boot
tmpfs                      374M     0  374M    0% /run/user/0
192.168.100.86:/data/test   46G  4.2G   41G   10% /data

重启系统测试

[root@localhost ~]# reboot
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(anolist8-web) at 10:34:34.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ 

Connecting to 192.168.100.91:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Wed Dec 21 18:04:42 2022 from 192.168.100.52
[root@localhost ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
devtmpfs                   1.9G     0  1.9G    0% /dev
tmpfs                      1.9G     0  1.9G    0% /dev/shm
tmpfs                      1.9G  8.7M  1.9G    1% /run
tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/ao-root         46G  2.0G   44G    5% /
/dev/sda1                  976M  161M  749M   18% /boot
192.168.100.86:/data/test   46G  4.2G   41G   10% /data
tmpfs                      374M     0  374M    0% /run/user/0



mount -a    
其中-a参数的含义是:
-a, –all mount all filesystems mentioned in fstab

参考文献:https://blog.csdn.net/qq_46237915/article/details/121162542

1.NFS的客户端中:nfsstat -m
中的vers=4.0确定NFS版本是4。
2.NFS服务器中:nfsstat -s
中的Server nfs v4确定NFS版本的确是4

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267