Что такое inode? Объяснение функций и использования

Что такое inode Изучение

Иноды — это структура управления файловыми системами в Unix-подобных операционных системах. В этом контексте иноды обозначают заголовки данных в списках инодов или подобных структурах данных, которые содержат метаданные о сохраненных файлах. Эти метаданные включают такую ​​информацию, как права доступа, место хранения, группа, номер пользователя или время внесения изменений и доступа.

Что такое инод?

Inode означает «индексный узел». Это форма управления файлами, которая играет важную роль с момента появления операционной системы Unix и систем на ее основе, таких как Linux или macOS. Основная функция индексных дескрипторов для файловых систем состоит в том, чтобы ссылаться на определенные файлы в системе, управлять ими и находить их по уникальным и отличительным номерам индексных дескрипторов. Как определенные структуры данных, индексные дескрипторы описывают определенные файлы и управляют ими с помощью метаданных. Какие метаданные задействованы, зависит от соответствующей файловой системы.

Хотя они не содержат никакой информации о самом имени файла, индексные дескрипторы обычно содержат следующую информацию о файлах и файловых блоках :

  • Тип и права доступа
  • Количество жестких ссылок
  • Номер пользователя (UID)
  • Номер группы (GID) или GUI (GroupID)
  • Размер файла в байтах
  • Дата последнего изменения (mtime)
  • Дата последнего изменения статуса (ctime)
  • Дата последнего доступа (atime)
  • Адрес блоков данных
  • Адрес блока косвенности
  • Количество ссылок
  • Номер версии

Как работают иноды?

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

Читайте также:  Как достичь эффективного параллельного выполнения с помощью WaitGroup в языке Go

Индексные дескрипторы гарантируют, что данные, хранящиеся в системе, могут быть найдены с использованием справочных данных и данных каталогов, а также их индексных дескрипторов с уникальным номером индексного дескриптора. Большим преимуществом здесь является то, что они не зависят от имени файла. Если файл копируется и переименовывается, его можно легко найти по тому же номеру инода, что и у исходного файла. Это относится к жестким ссылкам, которые пользователи создают с помощью команды Linux ln. Преимущество этой формы внутреннего учета заключается в том, что индексные дескрипторы относятся как к исходным файлам, так и к связанным с ними резервным копиям, не занимая при этом дополнительной памяти.

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

Где используются иноды?

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

Какие файловые системы поддерживают индексные дескрипторы?

Все Unix-подобные операционные системы, такие как Linux или macOS, используют индексные дескрипторы. Однако в зависимости от поддерживаемой файловой системы структура и состав инодов могут различаться. Они используются в системах ext2/ext3/ext4 в виде списков инодов или таблиц в качестве описательных заголовков данных. Список инодов явно создается здесь при создании системы и не может быть изменен впоследствии. Кроме того, иноды ext4 занимают 256 байт фиксированного пространства для хранения, которое больше нельзя использовать для других целей. В этих системах данных индексный дескриптор описывает файл или каталог в системе, используя соответствующие метаданные.

С другой стороны, существуют более сложные файловые системы, такие как xfs или btrfs, в которых индексные дескрипторы создаются только тогда, когда они необходимы для поиска файлов. В этом случае никакие списки или таблицы с инодами не используются. Существуют и другие различия в функциональности инодов на жестких дисках (дисковые иноды) и инодов, которые используются для обработки памяти Linux (внутриядерные иноды).

Читайте также:  Оптимизация и практическое применение порядка модификаторов в Jetpack Compose

Краткий обзор важных команд inode

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

Команда для отображения занятых мест в файловой системе

Если вы хотите увидеть, какие позиции занимают иноды в файловой системе, используйте эту команду:

~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20

Команда для просмотра текущего распределения инодов

Чтобы просмотреть все используемые в настоящее время иноды в системе, используйте:

df -ih

Команда предоставляет обзор использования инодов, включая связанную файловую систему, общее количество инодов, текущее распределение и неиспользуемые иноды:

df -i

Команда для отображения определенного номера инодов

Чтобы отобразить конкретный номер инода файла, используйте эту команду:

ls -i

Команда для отображения всех файлов индексного дескриптора

Если вы хотите узнать, на какие файлы (включая исходные файлы, копии файлов или резервные копии) ссылается индексный дескриптор, используйте:

-inum

Советы по высокому использованию инодов

Высокая загрузка инодов не всегда означает, что ваши хранилища подходят к концу. Повышенное использование inode часто можно проследить до избыточных небольших данных, таких как временные файлы TMP, кэши или сеансы. Проблема обычно решается автоматическим удалением всех файлов старше 14 дней. Для этого запустите задание cron с помощью следующей команды:

03 \*\*\* /usr/bin/find /path/to/files/\* -type f – mtime +14 -delete \> /dev/null 2\>&1

Что произойдет, если не хватит инодов?

Если для дополнительных файлов недостаточно доступных индексных дескрипторов, это может привести к следующим последствиям:

  • Сбой приложений
  • Данные будут потеряны
  • Незапланированная перезагрузка
  • Процессы вылетают и не перезапускаются
  • Запланированные процессы не запускаются автоматически

Если емкость инода на самом деле составляет 100 процентов, рекомендуется освободить занятую память. Кроме того, вы можете реструктурировать файловую систему в относительно сложном процессе и, таким образом, увеличить максимальное количество инодов.

Оцените статью
Блог о программировании
Добавить комментарий