尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

实习笔记(二)NFS 嵌套挂载问题完整复盘

实习笔记(二)NFS 嵌套挂载问题完整复盘 一、问题背景服务端路径/NFS/1作为主共享目录该目录下存在子目录单独挂载磁盘 / 其他存储形成本地嵌套挂载服务端把/NFS/1整个目录共享给 NFS 客户端。 客户端挂载服务端IP:/NFS/1到本地挂载点后只能看到父目录原生文件嵌套挂载的子目录空白读取不到真实数据。二、完整现象挂载流程无报错 客户端执行mount -t nfs 192.168.46.xxx:/NFS/1 /mnt/nfs命令正常执行无报错mount、df -h能查看到 NFS 挂载记录父目录普通文件、未嵌套的文件夹读写完全正常。嵌套子目录异常 进入嵌套挂载的子文件夹目录是空文件夹看不到服务端该目录下的任何文件无法写入、读取服务端本地正常仅客户端异常 在 NFS 服务器本机直接进入/NFS/1/嵌套子目录所有文件完整、读写正常证明磁盘和数据无损坏问题只出在 NFS 远程共享层面补充衍生现象多层嵌套 若存在多层嵌套挂载部分环境会出现Input/output errorIO 读写报错无法 cd 进入子目录日志特征 服务端 / 客户端系统日志无致命报错容易误以为是文件丢失、权限问题排查权限、防火墙、exports 权限均无效。三、底层根本原因NFS 服务默认行为仅导出共享目录挂载时的顶层文件系统不会自动穿透目录下的子挂载点。Linux 中 mount 挂载是内核层隔离父目录/NFS/1是一个文件系统子目录单独挂载分区后子目录属于另一个独立文件系统NFS 服务读取/etc/exports共享目录时只会导出共享目录初始文件系统对子目录后续新增的挂载点默认屏蔽不会把子挂载的文件系统同步给客户端简单理解NFS 只会共享挂载那一刻/NFS/1本身的内容看不见子目录后来单独挂载的磁盘数据。四、全套解决办法分方案优先推荐方案 1方案 1exports 配置添加 nohide 参数最简推荐1. 修改服务端 NFS 配置文件编辑/etc/exports原配置示例/NFS/1 *(rw,sync,no_subtree_check)修改后增加nohide参数/NFS/1 *(rw,sync,no_subtree_check,nohide)nohide作用允许 NFS 穿透共享目录下所有子挂载点客户端能正常读取嵌套挂载目录内容。2. 重载 NFS 配置无需重启服务exportfs -r3. 客户端重新挂载生效先卸载旧挂载再重新挂载umount /mnt/nfs mount -t nfs 192.168.46.xxx:/NFS/1 /mnt/nfs补充配套隐藏参数 hidehide是默认开启状态作用就是屏蔽子挂载目录写了 nohide 等价关闭 hide。方案 2多层目录分开导出无嵌套场景备选如果不方便使用 nohide可把父目录、嵌套子目录分别配置 exports 共享/NFS/1 *(rw,sync,no_subtree_check) /NFS/1/subdir *(rw,sync,no_subtree_check)客户端分别挂载两层目录缺点客户端需要维护多个挂载点管理麻烦多层嵌套不适用。方案 3客户端挂载参数调整辅助不能单独解决仅加客户端挂载参数无法穿透子挂载只能配合 nohide 使用若挂载后权限异常可追加参数mount -t nfs 192.168.46.xxx:/NFS/1 /mnt/nfs -o rw,sync五、踩坑排查补充修改 exports 后不执行exportfs -r配置不生效依旧看不到嵌套目录只改配置不重新挂载客户端内核缓存旧挂载逻辑修改参数不生效必须 umount 再 mount混淆本地挂载与 NFS 共享权限目录空白不是文件权限问题chmod/chown 修改文件权限无法解决多层嵌套叠加nohide 支持无限层级子挂载无需额外配置。六、永久优化方案开机自启稳定/etc/exports 永久写入 nohide 参数NFS 服务开机自启systemctl enable --now nfs-server客户端写入 fstab 自动挂载避免每次手动挂载192.168.46.xxx:/NFS/1 /mnt/nfs nfs defaults,_netdev 0 0_netdev标识网络挂载系统开机等网卡就绪后再挂载防止启动失败。
返回列表