Что такое осиротевший инод? [закрыто]

16

Я понимаю, что такое инод, но каково точное определение осиротевшего инода? Я действительно не понимаю, что это значит.

ОБНОВИТЬ

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

ninjacoder
источник
1
Ваше обновление - это действительно отдельный вопрос, связанный с разницей между емкостью хранилища файловой системы и количеством инодов, которые она может содержать; Вы должны задать это как отдельный вопрос.
Стивен Китт
Запуск df -iпокажет соответствующую информацию для inode.
Кусалананда
Свободное / используемое пространство на диске лишь незначительно коррелирует со свободными / занятыми инодами. На диске с большим количеством маленьких файлов не хватит inode, прежде чем на нем закончится свободное место.
Кусалананда

Ответы:

17

Потерянный инод - это инод, который не привязан к записи каталога в файловой системе, что означает, что он недоступен.

Иноды-сироты могут появляться по ряду причин:

  • временные файлы, которые удаляются, но остаются открытыми (обычная практика), занимают inode в файловой системе; если система перезагружается без надлежащего выключения, эти inode остаются и остаются потерянными
  • повреждение файловой системы может повредить каталог, не затрагивая иноды файлов, содержащихся в каталоге; эти иноды потом осиротят

fsckсоздает новые записи каталога для потерянных инодов в lost+found.

Стивен Китт
источник
Спасибо за ваш ответ @ Стивен-Китт. Было время, когда у сервера, которым я управлял, закончились inode, но когда я сделал это, df -hон показал мне, что на сервере было занято только 60% пространства. Я думаю, это из-за осиротевших инодов. Как можно использовать все иноды, но на сервере все еще остается «место»?
ниндзя-кодер
3

Осиротевший инод - это «полуудаленный» файл: в нем больше нет записи каталога, но он все еще открыт в некотором процессе, поэтому данные все еще присутствуют на диске. Когда последний процесс, у которого открыт этот файл, закроет его, файл будет полностью удален, а потерянный индекс исчезнет.

Потерянный инод использует как инод, так и дисковое пространство для хранения файла, так что и то, dfи другое df -iучитывают как использованное. Таким образом, если диск dfуказан как заполненный, но на нем остается свободное место, это не может быть связано с потерянными инодами. Потерянные иноды являются одной из причин, по которым использование файловой системы, о котором сообщается, dfи общий размер файла, о котором сообщается, duмогут различаться; см. Почему существует так много разных способов измерения использования диска? для более подробной информации по этой теме.

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

Ядро сообщает об одной и той же ошибке приложениям, независимо от того, заполнена ли файловая система из-за недостатка места для данных или из-за отсутствия inode. Таким образом, вы можете получить сообщение об ошибке «диск заполнен», даже если осталось некоторое пространство данных, если для операции требуется новый индекс и таблица индексов заполнена. Запустите, df -iчтобы узнать, сколько инодов используется и сколько осталось.

Жиль "ТАК - перестань быть злым"
источник
1
  • Индекс-сирота - это тот, который не был связан, но все еще открыт в другом процессе. Например, работает tail -f {file}в одной оболочке, а затем rm {file}в другой. Файловая система отслеживает их, чтобы их можно было очистить при выходе из процесса.

  • Это совершенно нормально, когда у вас нечистая спешка. Это просто файлы, которые были удалены, но все еще были открыты, когда fs был перемонтирован только для чтения. Они не причина, а всего лишь симптомы.


Для проблемы с индексами выполните этот запрос, чтобы получить список того, сколько индексов используется во всех каталогах.

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

Вы можете сослаться на это и это для получения дополнительной методики проверки.

Рахул
источник
@ninjacoder вы можете проверить мой обновленный ответ на ваш вопрос об инодах
Рахул