CentOS7-搭建NFS服务、客户端NFS无法写入
- 1.Server安装软件:nfs-utils
- 2.Server建立共享文件夹
- 3.Server修改配置文件
- 4.Server重启服务:nfs-server
- 5.Client验证
- 5.1 排查错误
- 6.Client挂载使用
- 6.1.Client建立挂载文件夹
- 6.2.Client挂载
- 6.3.Client开机自动挂载
- 6.4.Client测试写入读取
1.Server安装软件:nfs-utils
- NFS服务:nfs-server
yum -y install nfs-utils
2.Server建立共享文件夹
mkdir /public01 #开放只读权限
mkdir /public02 #开放可读写权限
echo "i am read" > /public01/r0.txt #分别写入一个文本
echo "i am read and write" > /public02/rw.txt
3.Server修改配置文件
- 配置内容格式:共享文件夹路径 客户端地址1(ro或rw等控制参数) 客户端地址2(ro或rw等控制参数)
vim /etc/exports
#####写入以下内容#######
/public01 *(ro) #表示所有客户均可访问(具有只读权限)
/public02 *(rw) #表示所有客户均可访问(具有可读写权限)
4.Server重启服务:nfs-server
systemctl restart nfs-server #重启nfs-server服务
service nfs-server status #查看nfs-server服务状态
Redirecting to /bin/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: active (exited) since 四 2022-03-31 10:58:28 CST; 35s ago #服务正在运行
Process: 3927 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 3909 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 3907 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 3909 (code=exited, status=0/SUCCESS)
Tasks: 0
CGroup: /system.slice/nfs-server.service
- 查看共享路径:
showmount -e ServerIP
showmount -e 192.168.162.134 #服务端IP:192.168.162.134
5.Client验证
showmount -e 192.168.162.134 #查看服务端共享路径
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
5.1 排查错误
- 建议使用 方法三
以上错误提示是指:服务端的防火墙上默认没有开启nfs服务相应的端口
- 查看防火墙信息
firewall-cmd --get-default-zone #查看防火墙默认状态
public #允许本机服务:sshd,ping,dhcp
firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 方法一:Server直接关闭防火墙
systemctl stop firewalld #Server关闭防火墙
Client验证:能显示共享路径,证明可以挂载使用
- 方法二:Server防火墙打开允许所有(trusted)
firewall-cmd --set-default-zone=trusted #防火墙设置运行所有
success #成功
firewall-cmd --reload #刷新防火墙策略
success #成功
Client验证:能显示共享路径,证明可以挂载使用
- 方法三:Server防火墙只开启NFS相关服务
nfs 、 rpc-bind 、 mountd
firewall-cmd --set-default-zone=public #防火墙切换回public公开状态
success #成功
firewall-cmd --zone=public --add-service=nfs #public公开模式添加:nfs服务
success #成功
firewall-cmd --zone=public --add-service=rpc-bind #public公开模式添加:rpc-bind服务
success #成功
firewall-cmd --zone=public --add-service=mountd #public公开模式添加:mountd服务
success #成功
Client验证:能显示共享路径,证明可以挂载使用
showmount -e 192.168.162.134
Export list for 192.168.162.134:
/public02 *
/public01 *
6.Client挂载使用
6.1.Client建立挂载文件夹
mkdir /mnt/test01 #用来存放、public01(只读)
mkdir /mnt/test02 #用来存放、public02(可读写)
6.2.Client挂载
- 挂载格式: mount Server IP:共享文件夹路径 挂载到Client路径
mount 192.168.162.134:/public01 /mnt/test01 #Server:public01 挂载到 Client: /mnt/test01
mount 192.168.162.134:/public02 /mnt/test02 #Server:public02 挂载到 Client: /mnt/test02
df -h
文件系统 容量 已用 可用 已用% 挂载点
192.168.162.134:/public01 47G 4.5G 43G 10% /mnt/test01
192.168.162.134:/public02 47G 4.5G 43G 10% /mnt/test02
6.3.Client开机自动挂载
- 配置文件: /etc/fstab
- 配置格式:Server IP:共享文件夹路径 挂载到Client路径 文件系统类型 挂载参数 备份 检查
vim /etc/fstab #修改开机自启配置文件
....
<file system> <dir> <type> <options> <dump> <pass>
/dev/mapper/centos-swap swap swap defaults 0 0
192.168.162.134:/public01 /mnt/test01 nfs defaults,netdev 0 0
192.168.162.134:/public02 /mnt/test02 nfs defaults,netdev 0 0
6.4.Client测试写入读取
- 分别测试两个文件读取正常
cat /mnt/test01/r0.txt
i am read
cat /mnt/test02/rw.txt
i am read and write
- 分别测试写入
echo "haha" >> /mnt/test01/r0.txt
bash: /mnt/test01/r0.txt: 只读文件系统 #只读文件,所以不能写入
echo "haha" >> /mnt/test02/rw.txt
bash: /mnt/test02/rw.txt: 权限不够 #上面第三步已经开放写入权限,这是为什么?
/public02 *(rw) #表示所有客户均可访问(具有可读写权限)
检查Server端 /public02文件夹权限
ll -d /public02 #检查Server /public02文件夹权限
drwxr-xr-x. 2 root root 20 3月 31 13:24 /public02 #其他人只有(rx)权限
Server端
对/public02文件夹下开放其他人
写入
(w)权限
chmod -R o+w /public02
Client
端再次测试写入
:正常
echo "haha" >> /mnt/test02/rw.txt
cat /mnt/test02/rw.txt
i am read and write
haha
完。