平台人生
作者平台人生2016-11-24 17:17
软件开发工程师, 平台人生

AIX系统中df与du结果差别过大的原因与解决方法

字数 1142阅读 9232评论 0赞 1

作者:吴湘 中国建设银行

来自微信公众号:平台人生

问题描述
df -g 发现/opt文件系统使用了将近1G的空间,但du -sm则显示/opt大小只有178MB, 也就是说有高达800多M的空间不知去向!
root@XXXXXXX:/>df -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd10opt 1.50 0.53 65% 1002 1% /opt
root@XXXXXXX:/>du -sm /opt
178.66 /opt

常见的解释:
du -s只是访问目录结构(inode),返回的值反映了分配给文件及目录的磁盘块数,而df命令则反映了文件系统的实际分配情况。df命令反映的实际情况包含了用户数据(文件及目录)和Meta Data。因此df返回的值要比du返回的值大些。 但本例中df与du返回值相差十分悬殊,用上述说法难以解释。

另解:
如果用户删除了一个正在运行的应用所打开的某个目录下的文件,则du命令返回的值显示出减去了该文件后的目录的大小。但df命令并不显示减去该文件后的大小,直到该运行的应用关闭了这个打开的文件,df返回的值才显示出减去了该文件后的文件系统的使用情况。

解决方法:
root@XXXXXXX:/>fuser -dV /opt 找到/opt下已经被删除,但依然处于打开状态的文件以及打开这个文件的进程号。
/opt:
inode=20552 size=847942456 fd=0 966686
分析:inode=20552这个文件已经被删除,但pid=966686这个进程依然在使用这个文件,造成该文件占用的空间没有释放。

root@XXXXXXX:/>ps -ef|grep 966686
root 786648 643122 0 15:19:37 pts/5 0:00 grep 966686
root 966686 1 0 Dec 27 - 25:25 /opt/VRTSpbx/bin/pbx_exchange
root@XXXXXXX:/opt/VRTSpbx/bin>kill 966686 与应用确认pbx_exchange无用后,杀掉它, 问题解决。
root@XXXXXXX:/opt/VRTSpbx/bin>df -g
Filesystem GB blocks Free %Used Iused%IusedMounted on
/dev/hd10opt 1.50 1.32 12% 1001 1% /opt

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏