目录
nfs服务挂载问题及解决方法_mhrobot的博客-CSDN博客_nfs文件不完整
1.NFS服务端
如果共享文件夹位于Linux系统,需要在共享文件夹所在机器(假如这里为70的机器)安装NFS和rpcbind服务,可以通过以下命令查看是否已安装这两个服务。
$systemctl status nfs-server
$systemctl status rpcbind
如果未安装,只安装nfs-utils即可,rpcbind 属于它的依赖,会同步安装;
设置rpcbind和nfs开机自启动;
启动 NFS 服务(先开rpcbind);
配置防火墙(按需)。
$ sudo yum install nfs-utils
$ sudo systemctl enable rpcbind
$ sudo systemctl enable nfs-server.service
$ sudo systemctl start rpcbind
$ sudo systemctl start nfs-server.service
查看防火墙状态,如果状态为关闭,则跳过防火墙配置。
#systemctl status firewalld
如果防火墙未关,可以选择关闭防火墙或者配置防火墙。
#systemctl stop firewalld
#systemctl disable firewalld
不想关闭防火墙的可以分别执行下方命令配置,但此处我未验证,只做参考。
$ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
$ sudo firewall-cmd --reload
挂载文件夹时根据自己的路径及IP设置,如:70上/home/share文件夹共享给85,在85上挂载的路径:/mnt/share
70上配置:
$ sudo vi /etc/exports
打开文件后点击I(i)按钮,进入编辑模式,在后面增加下面代码,其中no_root_squash,no_subtree_check可以选择性添加(如果打开为空白,说明原本不存在这个文件,添加下面的内容即可):
/home/share *(rw,sync,no_subtree_check)
按Esc键后键入“:wq”并回车保存,关闭文件。
参数:
rw:可读写 / ro:只读
sync数据同步写入到内存与硬盘中 / async数据会暂存于内存中,而非直接写入硬盘
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限(可选)
no_subtree_check:阻止子树检查(可选)
共享目录导出(看到介绍说如果挂载成功后修改了exports文件,可通过下面命令重新加载exports文件使更改生效,而不必重启NFS服务。因我未遇到该场景,暂未验证):
$sudo exportfs -a
重启NFS服务:
$sudo systemctl restart nfs-server
2.NFS客户端
安装NFS客户端(该步可以先略过,挂载不上看看原因再说,我并未安装但挂载成功了):
$sudo yum install nfs-common
手动挂载:
$mount -t nfs xx.xx.xx.70:/home/share /mnt/share
查看挂载情况,出现下图最后一行类似信息说明挂载成功(为了好区分,所写路径与我实际使用的有点区别):df -h
卸载挂载点:
$umount /mnt/share
设置开机自动挂载:
步骤一:在/etc/fstab中 按以下格式添加内容,含义不清楚,但我配置后执行成功了(通过sudo vim /etc/fstab打开文件,保存不清楚可参考服务端部分“70上配置”):
xx.xx.xx.70:/home/share/ /mnt/share nfs rw,auto,nofail,noatime,nolock,intr,tcp,actimeo=1800,noac 0 0
保存后可以用df -h查看是否处于挂载状态,若是,先用卸载命令umount /mnt/share卸载挂载点,查看挂载状态确认此时未挂载,然后执行mount -a命令,之后再次查看挂载状态,正常情况此时应该挂载成功,可以再开机重启验证一下。
步骤二: 若开机重启发现未挂载上,将mount -a写到/etc/rc.local文件中。
$sudo vi /etc/rc.local
增加挂载命令:
mount -a
保存完重启机器检查一下,用df -h查看是否挂载成功。