我有一个包含超过 10,000,000 个文件的系统,我想跟踪几个用户的磁盘使用情况(这些用户拥有数百万个文件)。基于以下问答https://stackoverflow.com/questions/4307692/fastest-way-to-calculate-directory-sizes我想研究一下这项工作的 Linux 磁盘配额,因为 du 命令在我的系统上运行也需要一个多小时。
我的问题是:
1) repquota 的预期运行时间是多少?它总是非常快吗(例如,在 1 分钟内运行)?还是取决于跟踪的文件数量和磁盘大小?
2) 我是否需要运行quotacheck来更新配额信息(文件?数据库?)以更改repquota的输出?或者repquota是否会始终为我提供最新信息?
更新
示例 2):如果我运行以下命令,预期输出是什么:
repquota /tmp
head -c 1024 /dev/urandom > /tmp/new.file
sleep 1
repquota /tmp
3) 第二个 repquota /tmp 是否会提供与第一个相同的输出?或者配额信息是否仅因为我写入磁盘而更新(而不是基于运行其他后台配额更新程序)?
答案1
Repquota 应该几乎是即时的,但是执行配额检查则不会。在具有大约 500k 个文件、4 个磁盘 RAID0 的服务器上,大约需要半小时,但是磁盘负载相当高(50% 左右)。它确实取决于文件数量,而不是磁盘大小,而是磁盘速度。
repquota 根据配额文件(配额运行时更新,我认为大约每 5 分钟更新一次)报告,如果您想要完整的最新信息,那么运行配额检查是一个好主意。请记住,您需要关闭配额才能执行此操作。
我们使用以下脚本:
#!/usr/bin/php
<?php
echo date('Y-m-d H:i:s') . ': Checking quota and fixing' . "\n";
if (file_exists('/usr/local/bin/quota')) {
`rm -rf /usr/bin/quota`;
`ln -s /usr/local/bin/quota /usr/bin/quota`;
}
`quotacheck -avugm`;
sleep(1);
`quotaon -av`;
`repquota -as`;