概述
NFS是一款经典的网络文件系统,在Linux上我们可以通过创建一个NFS服务在不同的服务器之间共享磁盘文件,而不用在多个服务器之间进行不断的拷贝复制,麻烦且浪费存储空间。在k8s中我们也可以使用NFS来作为我们的存储类,实现文件的持久化存储。
安装
接下来我们介绍一下如何在CentOS中安装NFS服务,以及如何在客户端机器挂载NFS。
服务端
操作系统:CentOS 7.6 64bit
IP地址: 192.168.202.151
为服务端安装NFS相关组件
yum -y install nfs-utils
创建需要共享的NFS目录,并赋予相关权限
mkdir /home/nfs
chmod 777 /home/nfs
编辑配置文件/etc/exports
来配置我们的NFS服务的访问和同步策略
- ro 只读
- rw 可读写
- sync 同步写数据,保证数据不丢失
- async 异步写数据,在写入持久化存储之前进行请求响应,如果服务器重启可能会导致文件丢失或者损坏
- root_squash 将root用户(uid/gid 0)的请求映射为匿名用户(anonymous uid/gid)
- no_root_squash 禁用root_squash规则
- all_squash 将所有用户都映射为匿名用户
- no_all_squash 禁用all_squash规则,默认选项
- anonuid 指定要映射为匿名用户的uid,例如:anonuid=150
- anongid 指定要映射为匿名用户的gid,例如:anongid=100
这里我们挂载的NFS指定为可读写的目录,并且进行同步读写,将所有root用户都映射为匿名用户
/home/nfs 192.168.202.1/24(rw,sync,root_squash)
完整的配置参数介绍可以使用以下命令查看
man exports
配置完成后,启动NFS相关的服务
systemctl restart rpcbind
systemctl start nfs-server
如果需要的话,可以配置NFS服务端为开机自启动
systemctl enable rpcbind
systemctl enable nfs-server
如果不再需要开机启动时,也可以使用以下命令禁用开机自启动
systemctl disable rpcbind
systemctl disable nfs-server
客户端
操作系统:CentOS 7.6 64bit
IP地址: 192.168.202.152
为客户端安装NFS相关组件
yum -y install nfs-utils
创建需要挂载到本地的目录并赋予权限,这里任意指定,不一定要与服务端相同
mkdir /home/nfs
chmod 777 /home/nfs
将NFS文件系统挂载到本地的目录上
mount -t nfs 192.168.202.151:/home/nfs /home/nfs
如若不再需要可以使用以下命令卸载NFS目录
umount /home/nfs
如果执行上述的mount
命令一直处于等待状态,可能是服务器上启用了防火墙或者是云服务器本身的防火墙限制了端口的访问,需要在NFS服务端
开放以下端口号的访问权限:111
、2049
、20048
。如果是云服务器可以到各自的网站后台去配置防火墙策略,如果是本地的机器可以使用以下命令开放指定的端口。
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --reload
上述端口信息都可以在以下文件中查找到
/usr/lib/firewalld/services/nfs.xml
/usr/lib/firewalld/services/rpc-bind.xml
/usr/lib/firewalld/services/mountd.xml
如果你不关心具体的端口号,也可以直接使用以下命令,直接根据配置文件放行相应的端口
firewall-cmd --zone=public --add-service=nfs --permanent
firewall-cmd --zone=public --add-service=rpc-bind --permanent
firewall-cmd --zone=public --add-service=mountd --permanent
firewall-cmd --reload
如果想要在开机的时候自动挂载NFS目录,则需要在/etc/fstab文件中新增一行添加以下记录
192.168.202.151:/home/nfs /home/nfs nfs defaults 0 0
其他命令
# 在服务端执行,查看nfs状态信息
nfsstat -s
# 在客户端执行,查看nfs挂载信息
nfsstat -m
# 查看服务端的远程共享信息,此命令会调用服务端的20048端口
showmount -e 192.168.202.151
# 查看rpcbind注册的所有端口号
rpcinfo -p
# 在服务端执行,重新挂载/etc/exports中配置
exportfs -r