Как диск Linux может быть заполнен, но общее количество файлов значительно меньше?

4

df сообщает 16G раздел на 100%. du на root сообщает о 1G в файлах. Куда делось все мое дисковое пространство?

Justin Love
источник

Ответы:

7

Файлы могут быть скрыты точкой монтирования.

(Запланированная программа (резервное копирование) должна была выполняться в то время, когда у меня был отключен вспомогательный том для обслуживания, и я радостно воссоздала его структуру каталогов, а не провалилась)

Justin Love
источник
Ах. Отлично. Хорошая головоломка, чтобы показать нам, когда мы не так умны, как нам хотелось бы думать.
dmckee
4

В добавок к впустую космическое вещество, которое обсуждает Дуг некоторые файловые системы имеют ограниченное количество inode (уникальных идентификаторов файлов), и после их создания невозможно создавать новые файлы. использование df -i чтобы увидеть, где вы стоите на inode.

Кроме того, это возможно для ext[23] файловые системы (и другие?), чтобы зарезервировать часть диска для суперпользователя. Обычно это всего лишь несколько процентов (5 типично для более старых систем), но его можно установить намного выше, чем это. Я верю, что вы хотите использовать tune2fs здесь (Mac OS и, возможно, другие Unixes называют это tunefs ) с -m вариант.

dmckee
источник
3

Возможно, у вас запущены программы со старыми несвязанными файлами. Эти файлы сохраняются на диске до тех пор, пока эти программы не закроются, но не будут связаны с деревом файловой системы.

Обратите внимание, что это отличается от поведения Windows, которое не позволит вам удалить такой файл.

Captain Segfault
источник
2

У вас есть большое количество очень маленьких файлов? Linux (и большинство операционных систем) записывают файлы в виде блоков размером, скажем, 4k, и каждый файл использует кратное этого размера. Например, если у вас есть 121-байтовый файл, 4096 байт все еще используются на диске. Остальная часть пространства в этом блоке по существу "потрачена впустую".

Doug
источник
1
Это составляет несколько мегабайт, но не 94% раздела.
Justin Love
1
Правда, за исключением крайнего случая, когда вы написали неконтролируемую программу, которая порождает миллионы этих маленьких файлов ... Были там, сделали это :(
Doug
0

У меня была точно такая же проблема. У меня была проблема, когда мой основной загрузочный диск заполнялся после выполнения синхронизации резервных дисков.

>rsync -avxHAXW /media/backup1 /media/backup2

После этой синхронизации мой основной диск был заполнен .... что меня озадачило. Оказывается, я случайно копировал файлы на загрузочный диск, а не на резервную копию2. Я исправил ошибку, удалил массивный файл с моего основного диска и перезапустил rsync. Даже после размонтирования и перемонтирования моих резервных дисков на моем загрузочном диске не хватило места. Я даже пытался очистить большие файлы на моем загрузочном диске ....

>find . -type f -print0 | xargs -0 du -s | sort -n | tail -25 | cut -f2 | xargs -I{} du -sh {}

Удалил все большие файлы, которые больше не нужны. Я также удостоверился, чтобы очистить мусор.

>empty-trash

После всей этой работы ... диск все еще заполнен. Я решил перезагрузить машину. После перезагрузки мой раздел загрузочного диска изменился с 100% до 10%! Похоже, что процесс rsync должен продолжаться в фоновом режиме, удерживая ресурсы диска. Я ненавижу давать этот совет, но после выполнения всей очистки диска вам может потребоваться перезагрузить компьютер, чтобы убить все фоновые процессы, которые висят на данных, что препятствует истинному освобождению диска.

Steve Scherer
источник