--每台服务器都执行
-安装NFS工具
yum install -y nfs-utils
--Master服务器执行
# 暴露挂载配置
echo "/data/share *(insecure,rw,sync,no_root_squash)" > /etc/exports
# 创建挂载目录
mkdir -p /data/share
# 应用rpcbind
systemctl enable rpcbind
# 应用NFS服务器
systemctl enable nfs-server
# 启动rpcbind
systemctl start rpcbind
# 启动NFS服务器
systemctl start nfs-server
# 激活上述配置
exportfs -r
# 检查NFS
exportfs
--Worker服务器执行
# 使用Master的内网ip
showmount -e 192.168.1.101
mkdir -p /data/file
mount -t nfs 192.168.1.101:/data/share /data/file
--卸载
umount 192.168.1.101:/data/share
-查看安装是否安装
rpm -qa |grep nfs-utils
rpm -qa |grep rpcbind
yum remove -y nfs-utils-2.3.3-59.el8.x86_64
yum remove -y rpcbind-1.2.5-10.el8.x86_64
# 服务端安装NFS服务
yum install -y nfs-utils #安装nfs服务
yum install -y rpcbind #安装rpc服务
systemctl status rpcbind.service
systemctl status nfs-utils.service
systemctl start rpcbind.service
systemctl start nfs.service
-先查看是否开机自启
systemctl list-unit-files |grep rpcbind
systemctl list-unit-files|grep nfs.service
-设置开机自启
systemctl enable rpcbind. service
systemctl enable nfs. service
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl disable
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
# 创建public共享目录
mkdir -p /data/file
chmod -R 777 /data/file
echo "/data/file 192.168.0.*(rw,sync,no_root_squash)" >> /etc/exports
vi /etc/exports
/data/file *(insecure,rw,async,no_root_squash)
/data/file 192.168.245.0/24(rw,sync)
/protected 192.168.245.0/24(rw)
systemctl reload nfs #重新加载NFS服务,使配置文件生效
其中:/public 是服务器端共享的目录
192.168.245.0/24共享目录的客户端ip地址
(rw,sync) ,其中rw代表拥有读写的权限,sync代表数据同步写入NFS服务器端的硬盘中。
也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。
exportfs -r #让配置文件生效
#参数详解
ro #只读共享
rw #读写共享
sync #同步写操作
async #异步写操作
wdelay #延迟写操作
root_squash #屏蔽远程root权限
no_root_squash #不屏蔽远程root权限
all_squash #屏蔽所有远程用户的权限
no_subtree_check #此选项可防止子树检查
# 配置文件说明
格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)
如上,共享目录为/public , 允许访问的客户端为192.168.245.0/24网络用户,权限为只读。
请注意,NFS客户端地址与权限之间没有空格。
NFS输出保护需要用到kerberos加密(none,sys,krb5,krb5i,krb5p),格式sec=XXX
none:以匿名身份访问,如果要允许写操作,要映射到nfsnobody用户,同时布尔值开关要打开,setsebool nfsd_anon_write 1
sys:文件的访问是基于标准的文件访问,如果没有指定,默认就是sys, 信任任何发送过来用户名
krb5:客户端必须提供标识,客户端的表示也必须是krb5,基于域环境的认证
krb5i:在krb5的基础上做了加密的操作,对用户的密码做了加密,但是传输的数据没有加密
krb5p:所有的数据都加密
# 用于配置NFS服务程序配置文件的参数
参数 作用
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
# NFS客户端挂载配置
yum -y install showmount
-使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”
showmount -e 192.168.245.128
showmount命令的用法;
| 参数 | 作用 |
|---|
| -e | 显示NFS服务器的共享列表 |
| -a | 显示本机挂载的文件资源的情况NFS资源的情况 |
| -v | 显示版本号 |
# 在客户端创建目录,并挂载共享目录
mkdir -p /data/file
---客户端挂载mount操作
mount -t nfs 119.3.157.97:/data/file /data/file
vim /etc/fstab # 在该文件中挂载,使系统每次启动时都能自动挂载
119.3.157.97:/data/file /data/file nfs defaults 0 0
192.168.245.128:/protected /mnt/data nfs defaults 0 1
mount -a # 让文件/etc/fstab生效
df -Th # 检查
---卸载
umount 119.3.157.97:/data/file
mount -h 验证客户端是否安装成功
#在Window上挂载NFS
第一步:在控制面板–>添加程序和功能–>添加NFS组件。
NFS服务, NFS客户端, 管理工具
在此电脑,映射驱动器中添加nfs地址,和要共享的文件夹。
\\ip\
第三步:如果权限有问题,打开注册表:regedit, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default 下新建两个OWORD(64)位值,添加值AnonymousGid,值默认为0,AnonymousUid,值默认为0。
# NFS Iptables放行服务端口
---启动NFS会开启如下端口:
1)portmapper 端口:111 udp/tcp;
2)nfs/nfs_acl 端口:2049 udp/tcp;
3)mountd 端口:"32768--65535" udp/tcp
4)nlockmgr 端口:"32768--65535" udp/tcp
系统 RPC服务在 nfs服务启动时默认会给 mountd 和 nlockmgr 动态选取一个随机端口来进行通讯。
---查看NFS启动后的端口
rpcinfo -p localhost
--设置固定端口
vim /etc/sysconfig/nfs
-在最后添加
RQUOTAD_PORT=4001
LOCKD_TCPPORT=4002
LOCKD_UDPPORT=4002
MOUNTD_PORT=4003
STATD_PORT=4004
---重启服务
systemctl daemon-reload
-注意先启动rpc
service rpcbind restart
service nfs restart
---设置防火墙
-增加需要开放的端口:111、2049、4001-4004
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4001:4004 -j ACCEPT
-A INPUT -p udp -m udp --dport 4001:4004 -j ACCEPT
-重启防火墙
service iptables restart
service iptables save