NFS挂载后原始文件隐藏问题
Posted 疏影暗香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFS挂载后原始文件隐藏问题相关的知识,希望对你有一定的参考价值。
背景:
DBA的一台服务器出现了根分区爆满的情况,导致数据无法写入及部分服务报错,但他们又找不到是哪个大文件占用了空间,于是来求助我们运维组。
排查:(为保护隐私,服务器名用pc-03名称代替了)
首先查看空间,及使用情况:
[root@pc-03 /]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.8G 9.3G 0 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 # 完成后,卸载
以上是关于NFS挂载后原始文件隐藏问题的主要内容,如果未能解决你的问题,请参考以下文章