CentOS8安装NFS服务端和客户端
慢慢练级
2021年03月30日 10:28
收录于文集
共1篇

1.服务器端安装

(1)查看系统运行状态

代码块
Shell
自动换行
复制代码
uname -a
复制成功

(2)NFS软件安装

要部署NFS服务,必须安装两个软件包:NFS-utils,RPC主程序。

  • NFS-utils:NFS 的主程序,包含 rpc.nfsd 和 rpc.mount 这两个 deamons.

  • Rpcbind:RPC 主程序,可以将 NFS 视为 RPC 下的一个子程序。查询 nfs-utils 和 rpcbind 包是否安装:

代码块
Shell
自动换行
复制代码
rpm -qa nfs-utils rpcbind
复制成功

如果没有安装,可以用 yum 命令进行安装

代码块
Shell
自动换行
复制代码
yum install -y nfs-utils rpcbind
复制成功

(3)启动服务并检查

服务端要启动 rpcbind 和 NFS 服务且需按顺序启动,客户端要启动 rpcbind 服务不启动 NFS 服务。

代码块
Shell
自动换行
复制代码
systemctl start rpcbind.service
systemctl start nfs-server		# 如果失败,可以换成 systemctl start nfs.service
复制成功

查看系统中启用的端口:

代码块
Shell
自动换行
复制代码
netstat -lnt
复制成功

查看 NFS 向 RPC 注册的端口信息:

代码块
Shell
自动换行
复制代码
rpcinfo -p
复制成功

将 NFS 与 RPC 服务加入开机自动启动

代码块
Shell
自动换行
复制代码
systemctl enable rpcbind.service
systemctl enable nfs-server			# 如果不能成功,可以使用 systemctl enable nfs.service
复制成功

2.配置 NFS 服务

(1)创建共享目录 /data

代码块
Shell
自动换行
复制代码
mkdir -p /data
复制成功

修改 /data 及子文件属主属组 nfsnobody

代码块
Shell
自动换行
复制代码
chown -R nfsnobody.nfsnobody /data		# 无效就直接 chmod 777 /data 或者尝试 nobody.nobody
ll 
复制成功

(2)编辑 NFS 服务端配置文件

代码块
Shell
自动换行
复制代码
vi /etc/exports

# 内容为(ip 地址需要修改):/data 192.168.148.136/24(rw,sync,all_squash)
# 格式:[共享目录] [自身ip地址/类型] [共享参数设置]
# 共享参数说明:
# ro				目录可读
# rw				目录可读可写
# sync				将数据同步写入内存缓冲区与磁盘中
# async				将数据先写入内存缓冲区,有必要时才写入磁盘
# all_squash		将远程访问用户及组全映射成默认用户或用户组nfsnobody(或nobody)
# no_all_squash		与all_squash配置相反
# root_squash		将root用户及所属组映射成默认用户或用户组
# no_root_squash	与root_squash配置相反
# anonuid			将远程访问用户映射成指定用户及ID的用户
# anongid			将远程访问用户组映射成指定用户组ID的用户组
复制成功

(3)重新加载 NFS 服务配置文件

代码块
Shell
自动换行
复制代码
exportfs -rv
复制成功

(4)检查或挂载

代码块
Shell
自动换行
复制代码
showmount -e 192.168.148.136		# ip 地址需要修改
复制成功

将 /data 共享目录挂载到 /mnt 目录:

代码块
Shell
自动换行
复制代码
mount -t nfs 192.168.148.136:/data /mnt		# ip 地址需要修改
df -h
复制成功

(5)NFS 开启防火墙配置

将 NFS 服务的端口设置成固定端口,设置成功后需要重启 rpcbind、nfs 服务。

代码块
Shell
自动换行
复制代码
vim /etc/sysconfig/nfs

#内容为
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002                                                                         LOCKD_UDPPORT=30002                                                                         MOUNTD_PORT=30003                                                                           STATD_PORT=30004  

systemctl restart rpcbind.service
systemctl restart nfs-server		# 如果不能成功,可以使用 systemctl restart nfs.service
复制成功

配置防火墙开放的端口号,配置好后需要重启 iptables.service

代码块
Shell
自动换行
复制代码
dnf install iptables-services

# 关闭默认使用的防火墙
systemctl stop firewalld
systemctl mask firewalld

# 修改配置文件
vi /etc/sysconfig/iptables

# 内容为
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 30001:30004 -j ACCEPT
-A INPUT -m state --state NEW -m udp --dport 30001:30004 -j ACCEPT

service iptables save		# 使配置生效
systemctl restart iptables.service	# 重启服务
复制成功

3.NFS 客户端的部署

(1)安装 NFS 与 RPC 服务并启动

代码块
Shell
自动换行
复制代码
yum install -y nfs-utils rpcbind
systemctl start rpcbind.service
复制成功

(2)查看挂载情况

代码块
Shell
自动换行
复制代码
showmount -e 192.168.148.136	# 服务器端的 ip 地址
复制成功

(3)客户端挂载共享目录

代码块
Shell
自动换行
复制代码
mkdir /nfsclient
mount -t nfs 192.168.148.136:/data /nfsclient	# 服务器端 ip
df -h
复制成功

(4)测试共享

在客户端新建 123.txt 文件,在服务端的共享目录 /data 下也会出现

代码块
Shell
自动换行
复制代码
cd /nfsclient/
ll
touch 123.txt
ll
复制成功

(5)mount 挂载性能优化(在客户端操作)

代码块
Shell
自动换行
复制代码
time dd if=/dev/zero of=/nfsclient/text-file bs=100k count=1000
复制成功

卸载原来的挂载

代码块
Shell
自动换行
复制代码
umount -lf -t nfs 192.168.148.136:/data /nfsclient/
复制成功

安全优加优化的挂载

代码块
Shell
自动换行
复制代码
time dd if=/dev/zero of=/nfsclient/text-file bs=100k count=1000
复制成功