Где Linux ведет учет свободных инодов?

Мне любопытно, как и где Linux (и любая операционная система, использующая Inode для своей файловой системы) отслеживает свободные inode, которые можно использовать? Когда создается новый файл, какой индексный дескриптор назначает ему операционная система? Все усложняется, поскольку файлы постоянно создаются и удаляются. Как вообще ОС управляет тем, какие иноды свободны, а какие используются?

Я бы предположил, что индексные дескрипторы структурированы как список свободных мест, похожий на распределитель памяти. Но при просмотре всех описаний структуры инода я не нашел поля указателя на «следующий доступный инод». Я думаю, что это какой-то важный вопрос, но, что любопытно, я не могу найти ни одной литературы с определенным ответом.


person J. Li    schedule 21.06.2016    source источник
comment
Этот вопрос не о программировании и должен быть перенесен на unix.stackexchange.com.   -  person jlliagre    schedule 21.06.2016


Ответы (2)


Во-первых, давайте отделим понятие inodes от Linux; inodes — это особенность файловых систем ext3, ext4 и UFS, а не ОС. Итак, где хранится информация об индексных дескрипторах? Следующая ссылка должна ответить на это.

https://serverfault.com/questions/212766/where-is-inode-number-stored?newreg=ddf0ea8fd887447698c8f95

Что касается «свободных» инодов, то они не создаются до тех пор, пока не будет создан новый файл или каталог; нет такой вещи, как «бесплатные» иноды.

person Ryan Laboucane    schedule 21.06.2016

Где именно хранятся иноды, зависит от файловой системы, точно так же, как релевантны ли иноды или нет.

Большинство традиционных файловых систем Unix/Linux (например, ufs, ext2, ext3, ext4, gfs2, ocfs2,...) создают таблицу inode фиксированного размера, хранящуюся на диске. Эта таблица кэшируется в оперативной памяти.

Исключениями являются reiserfs, jfs, xfs, btrfs и zfs, которые могут динамически выделять новые иноды.

С последними свободные иноды не имеют большого смысла, но с первыми определенно могут закончиться иноды, если размер, сделанный во время создания файловой системы, не был подходящим. Помимо полной таблицы инодов, в файловой системе обычно также хранится список свободных инодов.

В NTFS есть что-то похожее на иноды под прикрытием, и, наконец, некоторые файловые системы вообще не используют иноды, например, fat32 и iso9660.

person jlliagre    schedule 21.06.2016