Библиотека сайта rus-linux.net
Роль Inode в файловых системах Linux
Оригинал: Inodes and the Linux filesystem
Автор: Tyler Carrigan (Red Hat)
Дата публикации: 9 июня 2020 г.
Перевод: В.Костромин
Дата перевода: 15 июня 2020 г.
Понять строение файловых систем 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.
Tyler Carrigan
Tyler работает менеджером в Enable Sysadmin, является ветераном подводного флота и энтузиастом новых технологий! Он впервые познакомился с Red Hat в 2012 году при использовании основанной на Red Hat Enterprise Linux боевой системы в Центре управления ракетами на подводной лодке USS Georgia.