
df -h
отпечатки:
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 6.6G 50G 12% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.0M 1.9G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 54M 199M 22% /boot
tmpfs 391M 0 391M 0% /run/user/1000
в то время как ncdu /
печатает:
Total disk usage: 1.8 GiB Apparent size: 1.8 GiB Items: 176500
Почему в одном отчете указано использование 6,6+ ГиБ, а в другом — только 1.8 GiB
?
решение1
Вывод df
основан на статистике уровня файловой системы, тогда как ncdu
(и обычный du
) генерирует свои результаты путем сканирования каталогов, считывания размеров отдельных файлов и суммирования этих данных.
Если du
команды -style выполняются от имени пользователя, не являющегося пользователем root, у него не будет полного доступа ко всем каталогам, и поэтому он не сможет увидеть все (используйте sudo ncdu
в этом случае).
Попробуйте запустить du -hs /
и сравнить его результаты с "общим использованием диска", о котором сообщает ncdu /
. Вы можете обнаружить, что результаты похожи... и с du
, вы также можете увидеть сообщения о куче каталогов, к которым команда не может получить доступ и поэтому не учитывает их. То же самое, вероятно, относится и к ncdu
, но он просто скрывает сообщения об ошибках.
Также мне кажется, что, ncdu
возможно, не были обновлены для понимания виртуальных файловых систем современных дистрибутивов Linux, и они могут сбить меня с толку. В моей системе Debian 10 ncdu /
отчеты:
Total disk usage: 75.6 GiB Apparent size: 128.1 TiB Items: 469143
В моем случае "Видимый размер" явно бессмыслен и бесполезен. "Общее использование диска" примерно такое же, как то, что я получаю с du -hs /
... но поскольку это включает в себя ряд виртуальных файловых систем на основе ОЗУ ( devtmpfs
, tmpfs
), это число также вряд ли будет очень полезным.
Но если я ограничу команду только одной файловой системой (например, ncdu -x /
), то, похоже, я получу более разумные результаты, которые также du -shx /
с точностью до ошибки округления соответствуют выводу , а также выводу , df -h
если вспомнить, что файловой системе может потребоваться некоторое пространство для внутренних метаданных.
Другим возможным источником ошибок может быть использование расширенных функций файловой системы, таких как моментальные снимки файловой системы BTRFS. Конечно, у вас может быть всего 1,8 ГиБ файлов в вашей корневой файловой системе, но если файловая система также содержит два моментальных снимка своих предыдущих состояний, общий объем используемого дискового пространства может быть в 3 раза больше, чем сумма размеров файлов, которую вы (и любая du
-подобная команда) ожидаете.
Поскольку df
команда получает информацию, запрашивая драйвер файловой системы, большее «используемое» значение, сообщаемое ею, может включать моментальные снимки, которые в противном случае могли бы быть невидимы, пока к ним не будет получен доступ с помощью соответствующего метода.