在项目生产环境我们经常需要实现文件共享,传统的常见方案是通过NFS,实现服务器之间共享某一块磁盘,通过网络传输将分散的文件集中存储在一块指定的共享磁盘,实现基本的文件共享。实现这种方案,分服务端和客户端,将服务端的磁盘mount到客户端指定目录下,在客户端操作就像操作本地磁盘一样,nfs基本的安装如下:
模拟环境:
服务端/客户端 | 服务器IP | 版本信息 |
服务端 | 120.27.15.116 | centOS 7.2 |
客户端 | 39.108.85.46 | centOS 7.2 |
一、服务端安装NFS
step1、安装nfs和rpcbind程序:yum -y install nfs*
step2、检测nfs与rpcbind是否安装OK
rpm -qa |grep nfs
rpm -qa |grep rpcbind
step3、创建一个共享目录,并配置共享信息
mkdir /data01/nfs 这里假设共享目录为/data01/nfs
vi /etc/exports
step4、启动nfs,rpcbind
systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs
step5、查看是否共享成功
showmount -e localhost
二、客户端安装并挂载
step1、安装nfs程序:yum -y install nfs*
step2、启动nfs,rpcbind
systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs
step3、创建挂在目录:mkdir /data01/share
step4、检测远程共享服务器是否共享成功
step5、挂载,mount -t nfs -o nolock 服务端IP:共享目录绝对路径 本地挂载目录
mount -t nfs -o nolock 120.27.15.116:/data01/nfs /data01/share
step6、查看挂载结果:df -Th
可以看到,远程那块磁盘已经挂载OK。
三、测试
在/data01/share下新增一个文件,并写入相关内容,然后到服务器端查看
去服务端查看:
四、卸载
卸载直接执行如下操作即可:umount 120.27.15.116:/data01/nfs
五、所遇到的问题
1、如果是在阿里云上,可能要在安全组开放相关的端口,在私有环境下,同样需要处理防火墙,开放相关端口。可以通过rpcinfo -p 查看具体用到的端口。
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT 其他端口类似处理
2、由于NFS启动会随机生成端口并向RPC注册,每次的端口都不固定,所以,可以设置固定端口,便于配置防火墙和安全组。例如: