Назад | Перейти на главную страницу

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

Несколько часов назад мой корневой раздел заполнился, я переместил с него файлы и сообщает 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

Большинство файловых систем резервируют определенный процент для пользователя 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%, вероятно, немного избыточно, и вы, вероятно, захотите установить его ниже. Вы не хотите обнулять его.

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

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

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

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

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

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

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