У меня есть система с более чем 10 000 000 файлов, в которой я хочу отслеживать использование диска парой пользователей (этим пользователям принадлежат миллионы файлов). На основании следующих вопросов и ответов https://stackoverflow.com/questions/4307692/fastest-way-to-calculate-directory-sizes Я хочу изучить дисковые квоты Linux для этого задания, так как выполнение команды du в моей системе занимает больше часа.
У меня вопрос:
1) Каково ожидаемое время работы репквоты? всегда ли он очень быстрый (например, пробег менее 1 минуты)? или это зависит от количества отслеживаемых файлов и размера диска?
2) нужно ли мне запускать quotacheck для обновления информации о квоте (файлы? База данных?), Чтобы изменить вывод repquota? или repquota всегда будет предоставлять мне самую свежую информацию?
Обновить
Пример для 2): если я запускаю следующие команды, каков ожидаемый результат:
repquota /tmp
head -c 1024 /dev/urandom > /tmp/new.file
sleep 1
repquota /tmp
3) Будет ли вторая команда repquota / tmp давать такой же результат, как и первая? или информация о квотах будет обновлена только потому, что я записал на диск (а не на основе выполнения какой-либо другой фоновой программы обновления квот)?
Repquota должна быть почти мгновенной, однако проверка квоты - нет. На сервере примерно с 500k файлов с 4 дисками RAID0 это заняло около получаса, однако это было при довольно высокой загрузке диска (около 50%). Это действительно зависит от количества файлов, не столько от размера диска, сколько от его скорости.
отчеты repquota на основе файла квоты (который обновляется при запуске квоты, я полагаю, примерно каждые 5 минут), если вы хотите получить полную актуальную информацию, то запуск quotacheck - хорошая идея. Имейте в виду, что для этого вам нужно отключить квоту.
Мы используем следующий скрипт:
#!/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`;