Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Роль Inode в файловых системах Linux

Оригинал: Inodes and the Linux filesystem
Автор: Tyler Carrigan (Red Hat)
Дата публикации: 9 июня 2020 г.
Перевод: В.Костромин
Дата перевода: 15 июня 2020 г.

Index nodes
Image by Bruno /Germany from Pixabay

Понять строение файловых систем Linux довольно сложно, особенно когда вы погружаетесь в хитросплетение данных и метаданных. Каждый раз, когда вы запускаете команду ls и видите вывод - перечисление файлов, разрешения, владельцев и т.д. - вы должны понимать, что данные о просматриваемых файлах хранятся где-то отдельно от самих файлов и должны вызываться при обращении к файлу. Иноды усердно работают "за кадром", выполняя работу, которую вы не видите. Давайте же посмотрим, что же такое inode и для чего он нужен.

Что такое inode?

Inode – это сокращение от «index node», по-русски – индексный узел. По сути он представляет собой уникальную порцию метаданных в заданной файловой системе. Эта порция метаданных описывает то, что мы называем файлом. Иноды относятся только к определенной файловой системе, не касаясь других. Как ни странно это может показаться, но все иноды хранятся в общей таблице и это иногда вызывает недоумение. Однако каждая файловая система, смонтированная на вашем компьютере, имеет свои собственные inode. Номер inode может использоваться более одного раза, но никогда не может дважды использоваться одной и той же файловой системой. Идентификатор файловой системы в сочетании с номером инода создает уникальную идентификационную метку.

Сколько существует инодов?

Если вы не хотите связываться с математикой, вы можете пропустить этот раздел. В каждой системе имеется множество inode и есть несколько относящихся к ним числовых значений, которые нужно знать. Прежде всего, хотя это и менее важно, теоретическое максимальное число inode равно 2 ^ 32 (приблизительно 4,3 миллиарда inode). Во-вторых, что гораздо важнее, это число inode в вашей системе. Как правило, количество inode составляет 1:16 от объема файловой системы в КБ. Очевидно, что каждая система отличается, поэтому вам нужно рассчитать это значение самостоятельно.

Команды для работы с inode

Есть хорошая новость для тех, кто не любит математику: для этого есть специальная команда. Чтобы узнать количество inode в вашей системе, вы можете использовать команду df с опцией -i, как показано здесь:

[tcarrigan@rhel ~]$ df -i /dev/sda1
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda1      524288   312 523976    1% /boot

Вы можете видеть, что в этом примере мы запустили команду df -i на файловой системе /dev/sda1. В этой системе всего имеется 524 288 инодов, но только 312 из них используется (примерно 1%).

Номер inode файла

Мы также можем узнать номер inode конкретного файла. Для этого можно использовать команду ls -i с указанием нужного файла. Например:

[tcarrigan@rhel my_articles]$ ls -i Creating_volume_groups 
1459027 Creating_volume_groups

Номер inode этого файла - 1459027.

Номер inode каталога

Подобно тому, как мы узнали номер inode файла, мы можем посмотреть и номер inode каталога. Для этого снова используем команду ls -i с некоторыми дополнительными опциями. Например:

[tcarrigan@rhel article_submissions]$ ls -idl my_articles/
352757 drwxrwxr-x. 2 tcarrigan tcarrigan 69 Apr  7 11:31 my_articles/

Как вы можете видеть, мы использовали опцию -i (inodes), а также -l (long format) и -d(directory). Применение этих флажков позволяет нам получить множество информации о каталоге my_articles, включая номер inode, разрешения, владельцы и т.д.

Подведем итог

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

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

Author’s photo

Tyler Carrigan

Tyler работает менеджером в Enable Sysadmin, является ветераном подводного флота и энтузиастом новых технологий! Он впервые познакомился с Red Hat в 2012 году при использовании основанной на Red Hat Enterprise Linux боевой системы в Центре управления ракетами на подводной лодке USS Georgia.

Больше об авторе