如何查找幻像存储的使用情况?

如何查找幻像存储的使用情况?

我有一台 Mac OS X 10.6.4 Snow Leopard Server 文件服务器 (AFP),过去几周启动卷上的存储空间已经用完了。80GB 启动卷上剩余的 42GB 大约需要两天时间才能用完,尽管仍然sudo du -chsx -I dev /显示只使用了 29GB。

我以前遇到过这种情况,Linux 服务器的 Apache 日志在 N 天后被删除,但日志仍由 Apache 保持打开状态,导致存储未被释放。在那种情况下,我能够相对轻松地追踪到它sudo lsof,但在这种情况下,我很难找到罪魁祸首(作为文件服务器,有很多打开的文件和套接字)。如何lsof按文件大小对输出进行排序(并以人性化的格式显示大小)以便找到罪魁祸首?

服务器有 3GB 的 RAM。启动 4 小时后,活动监视器显示有 700MB 可用,1.5GB 不活动,以及 200GB 的 VM。VMmds使用量最大,为 1.8GB,AppleFileServer第二位为 500MB,其他所有服务器均使用 10MB-75MB 的 VM。也就是说,/private/var/vm 只有 128MB。

重新启动系统可以解决问题,因此我相信它是仍然由一个或多个进程保持开放的可用存储空间。

任何其他假设、建议等都将不胜感激。

答案1

您可以使用以下方法找到最大的打开文件:

sudo lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50

这将列出常规文件(不是管道、套接字等),按大小降序排序,并取前 50 个。

您还可以查看哪些进程打开了最多的文件,例如

sudo lsof | awk '$5 == "REG" {freq[$2]++ ; names[$2] = $1 ;} END {for (pid in freq) print freq[pid], names[pid], pid ; }' | sort -n -r -k 1,1

答案2

我会看看sudo lsof | grep deleted

答案3

sudo lsof +L1将显示已删除的文件。为了提高速度,请将其与 结合使用-Pn

例如lsof -Pn +L1

相关内容