"На пристрої не залишилось місця", df показує невідповідність


15

Кілька годин тому мій кореневий розділ заповнився, я перемістив файли від нього і df повідомляє:

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

Таким чином, має бути 9 ГБ безкоштовно, але звітність про 0 та використання все ще на 100%.

Я перевірений як корінь, наприклад

# 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

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


3

Погляньте і на INODES. У "ванільній" установці, якщо у вас є багато невеликих файлів, вони можуть споживати inode, але не місця. Ви побачите, що у вас є вільний простір, але оскільки ваші вставки заповнені, ви не зможете використовувати цей простір.


3
Більшість сучасних уніцій мають дуже велику кількість вкладень навіть у невеликих файлових системах. Іноді це проблема, але враховуючи, що користувач взагалі здатний створити файл c, навряд чи це буде проблемою inode. (Для записів у каталозі потрібні вставки, навіть якщо вони не потребують місця).
chris

2

"За замовчуванням у кожної файлової системи в Unix є певний простір, зарезервований для суперпользователя (root). Це означає, що жоден звичайний користувач Unix не може заповнити вашу файлову систему на 100%, і тому у неї завжди буде достатньо вільного місця для продовження нормальної функції. "

Від: http://www.unixtutorial.org/commands/tune2fs/


1

Інша справа, щоб перевірити, чи є в цій файловій системі якісь відкриті файли (особливо журнали). Видалення файлів не очистить простір на диску, поки файл фактично не закриється.


0

Я ставлюся до $ 1, що у Клайда є відповідь. У цьому процесі на цьому пристрої відкритий файл. У Linux Linux файл фактично не видаляється, поки процес його відкриття не відпустить його.

Я б почав із: lsof | grep hda1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.