NFS挂载后原始文件隐藏问题

知识的领域是无限的,我们的学习也是无限期的。这篇文章主要讲述NFS挂载后原始文件隐藏问题相关的知识,希望能为你提供帮助。
背景:
DBA的一台服务器出现了根分区爆满的情况,导致数据无法写入及部分服务报错,但他们又找不到是哪个大文件占用了空间,于是来求助我们运维组。
排查:(为保护隐私,服务器名用pc-03名称代替了)
【NFS挂载后原始文件隐藏问题】首先查看空间,及使用情况:

[root@pc-03 /]# df -h /
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda29.8G9.3G0 100% /

[root@pc-03 /]# cd /
[root@pc-03 /]# du -mx --max-depth=3|sort -nr|head
1282.
1089./usr
380./usr/lib
287./usr/share
183./usr/lib64
173./usr/lib/firmware

从df和du的命令中看出:
9.8G的磁盘,使用了9.3G,但实际使用的空间才1.2G左右。经过向DBA了解,/mysqldata 之前使用的是本地磁盘,后来切换到了NetApp上,使用NFS进行挂载。那么问题可能就出现在这里,/mysqldata用NFS挂载后,原来文件夹里的内容就被隐藏了。
解决:
停止MySQL服务,umount /mysqldata,再次查看及验证猜想,果然里面有一推旧的数据文件,让DBA清理之,问题解决。
原因总结:
由于网络不稳定,可能导致NFS挂载断开。那么数据就会写入本地磁盘的目录下,当恢复挂载时,本地目录下的文件就会隐藏掉,所以df或du查看时就找不到大文件。
=======================================
方法二:
当生产服务器不能停机时,客户则不会同意上述的做法,怎么办呢?我们可以用mount --bind的参数解决。将原始的文件系统挂载到其他地方。以上述为例:
sudo mkdir /tmp/hidden# 创建一个临时的挂载点
sudo mount --bind / /tmp/hidden# 将 / 挂载到/tmp/hidden
cd /tmp/hidden/# 进入目录,处理数据
sudo cp -ap mysqldata /mysqldata/old_mysqldata_2bedeleted# 此时NFS还挂载着,将旧数据拷贝至NFS中,由DBA自行处理。
sudo umount /tmp/hidden# 完成后,卸载






    推荐阅读