- 论坛徽章:
- 0
|
(今天cu好像处问题了,发表几次都不成功。)
原帖由 security1024 于 2007-5-22 16:57 发表
谢谢先!这些进程真的不可以停掉的(生产机),你是说有用户使用该文件系统的话,会占用该文件系统的空间吗?
通常df 和du 不一致的原因有两条:
1. df 报告的使用量包括 filesystem metadata, 这部分是du 看不到的。
如果df/du差别相对文件系统本身大小不大的话,不能排除这个原因。
2. 如果一个进程正在使用某个文件 (file reference count >0),而该文件又从目录中被“删除”了( file disk link count = 0),那么这个文件所占用的空间在df中会体现出来,因为它们还没被释放,但du找不到这个文件,从而不能报出它占用的空间。
根本的区别在于:df看的是文件系统总的空间分配量(不是读每个文件的大小),而du是一个文件(disk inode)一个文件地去读,然后累加。
只有当使用“已删除”文件的那个进程把文件关闭(比如进程本身退出)时,那个文件所持有的空间才会被释放到文件系统的可用空间中去,才能在df中体现出来。
下面是kdb输出:
(0)> inode | grep CNOLINK
Expected symbol, address or slot_number.
(0)> q
想起来了,4.3的kdb 不支持 "grep".
如果单独用 "inode" 呢?
(0)> inode
输出可能很长,想办法存到一个文件中去,再 'grep CNOLINK'.
这个不行还有其他办法,但我写这些真是够累的,很花时间啊。 |
|