假设现在有三台服务器(x86-64):A,B,C,准备将A服务器上某文件夹作为共享文件夹
详细步骤:
- 安装docker,修改docker 数据存放位置(/etc/docker/daemon.json文件中的data-root参数,如果没有该文件,则自己建一个就好了)(A,B,C服务器)
- 安装nfs-utils包(A,B,C 均要安装)
yum install nfs-utils
- 关闭防火墙并且禁止开机自启动防火墙(A, B, C 要全部关闭)
systemctl stop firewalld.service
systemctl disable firewalld.service
- 在A服务器上创建共享文件夹,并且赋予其权限 (A服务器)
mkdir xxxx
chmod -R 755 xxx
- 修改/etc/exports文件,文件最后添加如下内容(A服务器)
A服务器上共享路径 <网络段>(rw,sync,no_root_squash,no_subtree_check)
替换<网络段>为你的网络段或者特定机器的IP地址(可以直接写 * ,这样表示所有的机器)
- 重新加载配置文件(A服务器)
exportfs -arv
- 启动nfs(A服务器)
如果报错找不到或者不存在,可能是服务器的名字有一点出入,去/lib/systemd/system/ 这个路径下找对应的服务器的名字,替换下边的命令后执行就好了
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service
- B, C 服务器创建用于挂载的文件夹(假设你现在已经在B, C上安装了nfs-utils)
mkdir xxx
chmod -R 755 xxx
- 搭建共享(B,C服务器)
sudo mount <服务器A的IP地址>:A服务器上共享路径 待挂载服务器B / C文件路径
- 修改 /etc/fstab 文件,让配置永远生效(B, C 服务器)
<服务器A的IP地址>:A服务器上共享路径 待挂载服务器B,C文件路径(那个服务器就写那个的) auto,noatime,nolock,bg,nfsvers=3,intr,tcp,actimeo=1800 0 0
- nfs启动(B,C服务器)
如果报错找不到或者不存在,可能是服务器的名字有一点出入,去/lib/systemd/system/ 这个路径下找对应的服务器的名字,替换下边的命令后执行就好了
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service
- 检查挂载(B,C服务器)
df -h
看一下,挂载的文件夹是否存在,如果存在就表示已经搭建成功了!
到此nfs共享存储搭建完成!
常见问题汇总解决:
- 如果你搭建好了nfs,并且df -h 已经可以看到挂载,但是你的文件放进去就是不共享,那么这个时候只需要重新登录一下该服务器就好了
- 如果报 (…No route to host…)那就是防火墙没有关,给关掉就好了(命令见以上步骤)
【文章编写不易,如需转发请联系作者!】