共享文件夹的使用场景:a.保证多个应用服务器的文件保持一致。b.拆分文件服务器和应用服务器解耦合。
在 CentOS 7 上使用 NFS 来实现共享文件夹是一个常见且有效的方案。以下是详细的步骤,包括如何设置 NFS 服务器以及如何从客户端访问共享目录。本文一共分为两步配置,一个注意事项。
第一步:服务端配置(CentOS 7)
1. 安装 NFS 服务
首先,确保 NFS 服务已安装。在 CentOS 7 中,这个功能包含在 nfs-utils 包中。
sudo yum install -y nfs-utils
2. 创建共享目录
创建一个目录作为要共享的文件夹。例如:
sudo mkdir -p /srv/nfs/shared
3. 设置目录权限
调整目录权限以允许访问。在示例中,我们将目录权限设置为全局可读写,以便演示(生产环境中应根据需求设置权限):
sudo chown -R nfsnobody:nfsnobody /srv/nfs/shared
sudo chmod 777 /srv/nfs/shared
4. 编辑 /etc/exports 文件
这个文件用于配置 NFS 共享目录及其访问权限。
sudo vim /etc/exports
在文件中添加以下行,将 /srv/nfs/shared 目录共享给特定的客户端:
/srv/nfs/shared 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
说明:
192.168.1.0/24: 允许从该子网段的所有 IP 访问。
rw: 读写权限。
sync: 确保写操作同步完成。
no_root_squash: 允许 NFS 客户端的 root 用户拥有 root 权限。
no_subtree_check: 禁用子树检查,提高性能。
5. 导出共享目录
让 NFS 服务意识到新的共享配置:
exportfs -a
6. 启动 NFS 服务
启动并设置 NFS 服务在启动时自动运行:
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
7. 开通防火墙端口:2049
通过以下命令:查看服务端:2049
netstat -tulpn
一般场景的防火墙有两种iptables和firewall这两种防火墙:
firewall的需要开通端口2049的linux命令如下:
#添加端口命令
firewall-cmd --add-port=2049/tcp --zone=public --permanent
#重新加载防火墙配置
firewall-cmd --reload
#查看一下是否添加成功
firewall-cmd --list-ports;
第二步:客户端配置
1. 安装 NFS 客户端
在客户端机器上,需要安装相关的 NFS 工具:
sudo yum install -y nfs-utils
2. 创建挂载点
在客户端上创建一个目录,用于挂载远程 NFS 共享:
sudo mkdir -p /mnt/nfs/shared
3. 挂载 NFS 共享
手动挂载 NFS 共享到指定的挂载点:
sudo mount 192.168.1.x:/srv/nfs/shared /mnt/nfs/shared
将 192.168.1.x 替换为 NFS 服务器的实际 IP 地址。
4. 自动挂载(可选)
为了在系统重启后自动挂载,编辑 /etc/fstab 文件并添加以下行:
192.168.1.x:/srv/nfs/shared /mnt/nfs/shared nfs defaults 0 0
测试共享
在客户端,尝试读写测试文件以确认 NFS 共享是否正常工作:
touch /mnt/nfs/shared/testfile
ls -l /mnt/nfs/shared/
注意事项
错误一:mount: wrong fs type, bad option, bad superblock on 221.0.1.11:/home/nfs/shared
解决办法:
1.检查防火墙的端口是否开启,可以先关闭,服务端和客户端服务器的防火墙,并重启一下服务端服务。
2.检查服务器上的可用导出:
在客户端机器上,使用 showmount 查看 NFS 服务器的可用共享,这可以帮助确认路径是否正确:
showmount -e 221.0.1.11
确保 /home/nfs/shared 出现在结果中。如果没有,检查 NFS 服务器的导出配置
总结:
通过此设置,您可以在 CentOS 7 系统上使用 NFS 提供和访问共享文件夹。在配置 exports 和目录权限时应考虑安全性,确保仅允许信任的客户端访问共享资源。