Що таке сирота-індода? [зачинено]


16

Я розумію, що таке інода, але яке точне визначення осиротіла інода? Я не розумію, що це означає.

ОНОВЛЕННЯ

Був час, коли у сервера, яким я керував, не вистачало inode, але коли я зробив df -h, це показало мені, що у сервера було використано лише 60% простору. Я здогадуюсь, це через осиротілих вузолів. Як можна використати всі вставки, але на сервері ще залишилося «місця»? Чи можете ви вирішити це у своїх відповідях?


1
Ваше оновлення - це окреме питання, пов’язане з різницею між ємністю пам’яті файлової системи та кількістю входів, які вона може містити; слід поставити це як окреме запитання.
Стівен Кітт

Запуск df -iпокаже відповідну інформацію про введення.
Kusalananda

Вільний / використаний простір на диску лише незначно співвідноситься з вільними / використаними входами. Диск з безліччю невеликих файлів закінчиться у вкладах, перш ніж у ньому не вистачить місця.
Kusalananda

Відповіді:


17

Осиротілий інод - це індея, яка не приєднана до запису каталогу у файловій системі, а значить, її неможливо досягти.

Осиротілі вузли можуть з’являтися з кількох причин:

  • тимчасові файли, які видаляються, але залишаються відкритими (звичайна практика), займають входи у файловій системі; якщо система перезавантажиться, не вимикаючись належним чином, ці індекси залишаються та є сиротами
  • Пошкодження файлової системи може пошкодити каталог, не впливаючи на вставки файлів, які містить каталог; ці індекси потім осиротіли

fsckстворює нові записи каталогів для осиротілих inodes у lost+found.


Дякуємо за вашу відповідь @ Stephen-kitt. Був час, коли у сервера, яким я керував, не вистачало inode, але коли я це зробив, df -hце показало мені, що на сервері було використано лише 60% простору. Я здогадуюсь, це через осиротілих вузолів. Як можна використати всі вставки, але на сервері ще залишилося «місця»?
ninjacoder

3

Осиротілий inode - це файл, який "напів видалений": у ньому більше немає запису до каталогу, але він все ще відкритий в деякому процесі, тому дані все ще є на диску. Коли останній процес, у якого цей файл відкритий, закритий, файл буде повністю видалений, а осиротіла інода зникне.

Осиротілий інод використовує і індею, і простір на диску, щоб зберігати файл, тому обидва dfі df -iрахувати його як використаний. Таким чином, якщо диск повідомляється як повний, але dfпоказує трохи місця, це не може бути пов'язано з осиротілими вводами. Осиротілі вставки є однією з причин, через яку може використовуватись різниця у використанні файлової системи dfта загальний розмір файлу du; див. Чому існує так багато різних способів вимірювання використання диска? Докладніше про цю тему.

Під час створення файлової системи у багатьох файлових системах зарезервовано фіксовану кількість входів, це означає, що ви можете мати щонайменше стільки файлів у файловій системі. Кількість входів - це компроміс між простором, який використовується входами, та можливістю створення багатьох файлів. Якщо у файловій системі більше місця, то ви не можете рости існуючі файли чи створювати нові файли (можливо, ви все ще можете створити кілька порожніх файлів у існуючих каталогах, якщо вони заповнюють лише частково використані блоки та не вимагає виділення нового блоку). Якщо більше немає вільної inode, ви можете вирощувати існуючі файли, але ви не можете створити новий файл.

Ядро повідомляє про ті ж помилки в додатках, чи файлова система повна через брак даних або через відсутність вкладень. Таким чином, ви можете отримати помилку "повного диска", навіть якщо залишилося деякий простір даних, якщо для операції потрібен новий вклад і таблиця вкладень заповнена. Побіжіть, df -iщоб дізнатись, скільки входів використано та скільки залишилось.


1
  • Осиротіла інода - та, яка була від’єднана, але все ще відкрита в іншому процесі. Наприклад, біг tail -f {file}в одній оболонці, а rm {file}в іншій. Файлова система відстежує їх, щоб їх можна було очистити, коли процес закінчується.

  • Це абсолютно нормально, коли у вас є нечистий виїзд. Це просто файли, які були видалені, але все ще були відкритими, коли фс перераховували лише для читання. Вони не є причиною, а лише симптомами.


Для випуску inode запустіть цей запит, щоб отримати список кількості inode, що використовується у всіх каталогах

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Ви можете звернутися до цього та цього, щоб дізнатися більше.


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