Я заметил, что есть огромная разница в свободном дисковом пространстве для root, используя для меня "ncdu" или "df":

df -Th:

    dev              devtmpfs  7,8G       0  7,8G    0% /dev
    run              tmpfs     7,8G    1,4M  7,8G    1% /run
    /dev/nvme0n1p2   ext4       25G     19G  4,3G   82% /
    tmpfs            tmpfs     7,8G     77M  7,7G    1% /dev/shm
    tmpfs            tmpfs     7,8G       0  7,8G    0% /sys/fs/cgroup
    tmpfs            tmpfs     7,8G     50M  7,7G    1% /tmp
    /dev/loop1       squashfs  4,3M    4,3M     0  100% /var/lib/snapd/snap/ngrok/11
    /dev/loop0       squashfs   91M     91M     0  100% /var/lib/snapd/snap/core/6405
    /dev/nvme0n1p1   vfat      246M     56M  191M   23% /boot
    /dev/mapper/home ext4      428G     52G  354G   13% /home
    tmpfs            tmpfs     1,6G     20K  1,6G    1% /run/user/

ncdu

10,5 GiB [##        ] /usr
 3,5 GiB [          ] /var
72,0 MiB [          ] /opt
55,1 MiB [          ] /boot
45,9 MiB [          ] /tmp

"ndcu" показывает примерно на 5,5 ГБ больше свободного места для root по сравнению с "df". Я что-то упустил или почему большая разница? Заранее спасибо!

2 ответа2

0

df -Th показывает вам "доступное" дисковое пространство. Даже при запуске от имени root это свободное пространство без (обычно ~ 5%) дискового пространства, которое зарезервировано для пользователя root.

ncdu при запуске от имени root будет учитывать все фактическое свободное место на диске, включая пространство, зарезервированное для root. Вот почему он сообщит больше "свободного" пространства, чем df сообщает о "доступном" пространстве.

Более подробную информацию об этом зарезервированном месте и о том, как изменить его размер, можно найти в ответах на мой вопрос здесь.

0

Возможный сценарий

Существуют различные другие файловые системы, смонтированные в различных точках монтирования, которые (естественно) находятся где-то глубже в / . Если корневая файловая система содержит файлы в тех местах, df будет по- прежнему "счетчик" их (потому что он запрашивает сам файловую систему) , но du не будет (потому что он сканирует доступное дерево).


пример

Только после того, как / установлено, /home содержит 4 ГБ данных. Затем в /home монтируется другая файловая система, она содержит 52 ГБ данных. В этом случае:

  • Корневая файловая система просто сообщает о своем использовании df , включая те 4 ГБ.
  • ncdu сканирует дерево каталогов. В /home он может видеть 52 ГБ из другой файловой системы; ncdu -x полностью пропускает это. В обоих случаях вы все равно игнорируете /home , потому что знаете, что это другая файловая система.

В результате, после добавления всех соответствующих строк из ncdu , вы все равно пропустите эти 4 ГБ.


подтверждение

Привязать монтировать ту же файловую систему в другом месте (примечание -B не монтирует submounts):

sudo mount -B / /mnt/elsewhere

Проанализируйте, что ncdu /mnt/elsewhere . Есть ли данные в /mnt/elsewhere/home , /mnt/elsewhere/boot или в другом каталоге, который обычно находится в подмонтировании? Это может объяснить несоответствие?

Прежде чем что-либо удалять, убедитесь, что вы знаете, что делаете. Наконец, выполните sudo umount /mnt/elsewhere для размонтирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .