«На устройстве не осталось места», df показывает расхождение


15

Несколько часов назад мой корневой раздел заполнился, я удалил файлы из него и df сообщает:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Таким образом, должно быть 9 ГБ свободного места, но выдает отчет 0 и Использование по-прежнему на 100%.

Я тестировал как root, например

# echo test >a ; cat a
test

работает как положено; однако, как обычный пользователь, я все еще получаю ошибку:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

Корневой домашний каталог, где я провел положительный тест, и мой домашний каталог находятся в одном разделе. Запись fstab:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1

Ответы:


34

Большинство файловых систем резервируют определенный процент для root, так что вы все равно можете войти в систему как root и решить проблемы с дисковым пространством. Обычно это 5%. 9 ГБ примерно 5% от 183 ГБ, так что это имеет смысл. Вы можете увидеть, сколько зарезервировано, используя tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Вы можете изменить его, используя

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

На современных больших дисках 5%, вероятно, немного завышены, и вы, вероятно, захотите установить его ниже. Вы не хотите устанавливать его на ноль.


1
Не могу поверить, что я этого не знал. Я лучше не сказать , как долго я использую Linux теперь ...
знак

@nfm Привет, я годами занимался базовым администрированием Linux на домашних компьютерах и никогда не слышал об этом. +1 за отличную информацию :-)
Topher Fangio

5

я с бобом, попробуйте df -i, если у вас есть куча плохих выходных crontabs, например, ваш каталог / var / spool / clientmqueue / может быть заполнен


3

Посмотрите на INODES тоже. При «ванильной» установке, если у вас много маленьких файлов, они могут использовать inode, но не место. Вы увидите, что у вас есть свободное место, но так как ваши иноды заполнены, вы не сможете использовать это пространство.


3
В большинстве современных юнитов очень много inode даже в небольших файловых системах. Иногда это проблема, но, учитывая, что пользователь вообще может создать файл c, это вряд ли будет проблемой inode. (записи каталога требуют inode, даже если они не требуют места).
Крис

2

«По умолчанию каждая файловая система в Unix имеет некоторое пространство, зарезервированное для суперпользователя (root). Это означает, что ни один обычный пользователь Unix не может заполнить вашу файловую систему до 100%, и поэтому всегда будет достаточно свободного места для продолжения нормальной работы. "

Из: http://www.unixtutorial.org/commands/tune2fs/


1

Еще одна вещь, которую нужно проверить, это посмотреть, есть ли в этой файловой системе открытые файлы (особенно журналы). Удаление файлов не очистит место на диске, пока файл не будет фактически закрыт.


0

Я бы поставил 1 доллар, что у Клайда есть ответ. У процесса есть файл, открытый на этом устройстве. В linux файл фактически не удаляется, пока процесс, удерживающий его открытым, не отпустит его.

Я бы начал с: lsof | grep hda1

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.