Inod linux что это

Роль 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 , как показано здесь:

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

Номер inode файла

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

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

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

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

Как вы можете видеть, мы использовали опцию -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.

Источник

Что такое иноды в Linux и как они используются?

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

Читайте также:  Перепрошить навигатор windows ce

Что такое иноды в Linux? Записи Inode являются основой файловой системы Linux. Они управляют метаданными о файле и являются неотъемлемой частью внутренней работы Linux.

Какова структура файловой системы?

Файловая система разделена на две части — блоки данных и inode. Количество блоков фиксируется после создания и не может быть изменено.

Имя, путь, местоположение, ссылки и другие атрибуты файла не находятся в каталоге. Каталоги — это просто таблицы, которые содержат имена файлов с соответствующим номером инода.

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

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

Верхняя часть иерархии — это сама файловая система. Внутри файловой системы находятся имена файлов. Имена файлов ссылаются на иноды. Индексы ссылаются на физические данные.

Что такое Inode в Linux?

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

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

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

Имена файлов и номера индексов хранятся в отдельном индексе и ссылаются на индекс. Вы можете ссылаться на метаданные, которые представляют файл. Можно иметь несколько имен файлов, которые ссылаются на один фрагмент данных или индекс, как вы можете видеть на рисунке ниже.

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

Каждый индекс в структуре Linux имеет уникальный номер, идентифицируемый с ним. Он также называется индексным номером и имеет следующие атрибуты:

  • Размер
  • Владелец
  • Дата/время
  • Разрешения и контроль доступа
  • Расположение на диске
  • Типы файлов
  • Количество ссылок
  • Дополнительные метаданные о файле

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

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

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

Когда вы создаете новый файл, ему присваивается имя файла и номер индекса. Оба хранятся в виде записей в каталоге. Выполнение команды ls ( ls -li ) покажет вам список имен файлов и номеров инодов, которые хранятся в каталоге.

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

Сколько Inode вы используете?

Один из способов освободить место в файловой системе — это использовать все свои inode. Даже если у вас достаточно свободного места на диске, вы не сможете создавать новые файлы.

Использование всех инодов также может привести к внезапной остановке системы. Чтобы просмотреть список статистических данных об использовании inode, таких как «Используется», «Свободен» и «Процент использования», введите следующую команду:

Используются дополнительные способы Inode

То, как работают inode в Linux, делает невозможным наличие конфликтующих номеров inode. Невозможно создать жесткую ссылку на разные файловые системы. Однако вы можете использовать программные ссылки в разных файловых системах. Вы можете удалить исходные файлы и по-прежнему иметь доступ к данным по жесткой ссылке.

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

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

Пользователи не взаимодействуют напрямую с inode, но они представляют фундаментальный компонент файловых структур Linux.

Источник

Что такое inodes и почему они могут кончиться (ликбез)

Иногда пользователь Линукса получает от ОС неожиданное сообщение о том, что файл не может быть сохранён, хотя в разделе всё ещё есть свободное место. Естественно, пользователь недоумевает. Особенно, если он не айтишник. Однако, что же это за препятствие такое возникло? Откуда оно берётся и как с ними бороться? И нужно ли? Давайте разберёмся. Предупреждён – значит, вооружён.

Часто подобное происходит по причине исчерпания inodes. Inode (далее – инода) – это сокращение от «index node» – по-русски – индексный узел. Математически он представляет собой описатель (дескриптор) файла и является базовым понятием, на котором основаны многие юниксные и линуксные файловые системы. Иноды подобны каталогу фундаментальной академической библиотеки, в котором находится информация, связывающая название-автор книг с их физическим местонахождением – комната хранилища, стеллаж, полка. Другими словами, иноды – это данные о данных или метаданные, как любят выражаться айтишники. Линуксная инода содержит достаточно много метаданных:

  • размер файла
  • идентификатор (ID) устройства, содержащего файл
  • ID пользователя-владельца файла
  • ID группы пользователей, к которой принадлежит владелец
  • права доступа, присвоенные владельцу, группе и т.н. «другим»
  • права чтения, модификации и исполнения для владельца, группы и других
  • таймштампы моментов последнего доступа и изменения файла
  • счётчик количества жёстких ссылок на файл (если он не нулевой, то файл невозможно удалить)
  • указатели на блоки (кластеры) диска, в которых размещён файл
  • имя папки или блочного устройства, где расположен файл
  • размер блока файловой системы (ФС) раздела, в котором находится файл
  • количество блоков, занимаемых файлом
Читайте также:  Windows 10 download 64 bit eng

Инода не содержит ни таймштампа создания файла, ни его имени. Это атрибуты таблицы директориев (directory table). Когда пользователь пытается получить к файлу доступ, происходит следующее:

  • по имени файла в таблице директориев определяется соответствующий ему номер иноды,
  • по номеру иноды происходит обращение к Inode table и считываются метаданные,
  • начинается работа с файлом, если это возможно.

В некоторых файловых системах, таких как ext3 или ext4, иноды создаются сразу вместе с ФС. При создании ФC количество инодов определяется параметром -i команды mkfs. Чем больше это число, тем меньше инод создаётся вместе с ФС. Если создавать ФС с параметром -O largefile, то это будет равносильно заданию -i 1048576, т.е. 1 шт./Мб. А уменьшать -i можно вплоть до размера блока, который обычно составляет 4 кб.

Увидеть метаданные директория или файла можно командой stat. Например:

stat /home

Увидеть номера инод файлов текущего директория можно командой

ls -i

Посмотреть, как распределились иноды в вашей системе (сколько использовано и сколько свободно) можно командой

df -hTi

Иноды – ловкое изобретение. Именно они позволяет наиболее просто реализовать работу LVM (Logical Volume Manager), с помощью которого, набив компьютер приводами жёстких дисков, можно «сделать» один большой винчестер. Механизм инод ускоряет работу ФС, позволяет значительно уменьшить нарастание фрагментации, но за всё надо платить: метаданным нужно какое-то ограниченное место. Поэтому, если раздел содержит очень много мелких файлов, то может случиться так, что запаса инод на всех не хватит. Некоторые опасливые, но грамотные пользователи даже выводят информацию о свободных инодах в conky, и она постоянно красуется на рабочем столе.

Что же делать, если ВНЕЗАПНО кончились иноды? Можно, конечно, спасти данные на другой носитель и пересоздать ФС раздела. Ужасно, но это Линукс, друзья. А можно поступить разумнее: всю мелочь выгрузить в облако. Если нет Интернета (бывает же такое), можно просто удалить ненужные файлы (они есть у всех), а досадную «мелочь» заархировать. А если нет ни интернета, ни ненужных файлов, ни флэшки под руками? Тогда остаётся одно: закрыть все приложения, убедиться, что ОС не «свопит», перебить с помощью утилиты gparted раздел swap в какой-нибудь пригодный для хранения данных, например, FAT, слить туда часть данных, «мелочь» заархивировать и затем добавить в архив слитые данные. Потом восстановить swap-раздел.

Источник

Inode в Linux — что это такое?

Назначение Inode в ОС Linux

Для ОС Linux есть такое понятие, как Inode или индексный дескриптор. Индексные дескрипторы в файловых системах (таких как ext4) предназначены для хранения метаданных о файлах, каталогах и др. объектах.

Представим иерархическую структуру файловой системы Линукс в упрощенном виде:

  1. верхушка иерархии — это сама файловая система;
  2. уровнем ниже идут имена файлов (папок);
  3. имена файлов ссылаются на inode;
  4. inode ссылаются на физические данные.

Таким образом, файловая система Linux содержит блоки для хранения данных и inodes. По умолчанию, в ext4, 4092 байта — это размер одного блока. Любой файл в каталоге ОС Linux имеет имя файла и номер inode. Пользователь может узнать метаданные этого файла, указав его номер inode.

Как правило, каждый Inode хранит следующие атрибуты:

  • размер;
  • владелец;
  • дата/время;
  • разрешения и контроль доступа;
  • расположение на диске;
  • тип файла;
  • количество ссылок;
  • дополнительные метаданные о файле.

Таблица с Inode размещена в начале раздела диска, после нее уже идут блоки с данными. Директории в ОС Линукс рассматриваются как Inode типа «директория», в них содержатся списки имен файлов и номера их inode.

Для ОС Линукс также важно понятие о ссылках (символические и жесткие ссылки).

Символическая ссылка — это по своей сути «ярлык», она содержит адрес файла.

Если вы попытаетесь открыть такую ссылку, то откроется соответствующий файл (папка). Если удалить данный файл (папку), символическая ссылка не удалится, но при попытке открыть ее — она приведет «в никуда». Номер Inоdе «символической ссылки» отличается от номера inоde того файла, на который она ссылается.

Читайте также:  Как искать файлы по содержимому linux

Если же вы используете «жесткие ссылки», то ваш конкретный файл находится только в определенном месте жесткого диска, а уже именно на это место и ведут сразу несколько ссылок. Каждая «жесткая ссылка» представлена в виде отдельного файла, однако все такого вида ссылки указывают на один и тот же участок диска (даже если мы перемещаем этот файл между разными каталогами). Жесткая ссылка в системе идет под таким же номером Inode, как и фaйл, на который она ссылается.

Казалось бы, тема «Inode в ОС Linux» — это сфера деятельности системных администраторов и не касается рядовых пользователей, однако, у вас может произойти такой случай, когда на диске вроде бы есть еще свободное место, а вот новые файлы вы уже создавать не можете, так как у вас закончились номера inode. В данной статье мы объясняем зачем нужен inode, а также рассмотрим, как работать с linux инод и дадим все необходимые команды для этого.

Методы и команды для работы c Linux inode

Все способы работы с linux inode будут показаны на примере десктопной ОС Ubuntu 20. Перед началом работы, необходимо узнать, на каком диске расположена файловая система, в нашем случае — это /dev/sda5. Номер 2 имеет наша корневая папка (для ext4).

Если вам потребуются права пользователя root для выполнения некоторых команд, то предварительно выполните:

Команды ls и df

Наиболее известная команда Linux, которую можно рекомендовать для просмотра информации об индексных дескрипторах — это ls, используемая с параметрами -i, -li. С помощью ls мы можем вывести на монитор сведения о содержимом каталогов и файлах нашей ОС.

Итак, посмотрим inode для файлов нашей системы с помощью команды:

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

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

Как работать с отладчиком debugfs

Debugfs — это утилита для работы с файловыми системами Ext2/Ext3/Ext4, работает она в режиме отладчика. Для вывода списка всех команд утилиты, воспользуйтесь опцией help, для выхода из режима отладчика нужно воспользоваться командой quit.

Итак, посмотрим информацию о диске, на котором расположена наша файловая система:

После этого, выполним такую команду:

Какую же основную информацию мы можем получить из данного скриншота?

  • Тип Inode — директория (Directory).
  • Права (Mode) — 755.
  • Владелец директории (User) — группа root (идентификатор пользователя 0).

Ниже находятся блоки с данными для этого Inode, здесь хранится список директорий и файлов. Для просмотра блока можно воспользоваться командой (результаты на скриншоте ниже):

На скриншоте мы видим только данные, записанные в форматах HEX и ASCII, справа видны и имена папок.

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

В первом слева столбике мы видим номера inode для папок или файлов, для примера, можно найти папку usr c номером инод 6160385 и посмотреть эту запись:

Сейчас обратим внимание на раздел EXTENTS, там содержится запись с номером блока, в котором находится содержимое этой директории, посмотрим его с помощью команды:

Пример использования команды tune2fs

Как мы уже знаем, количество инод в системе ограничено, посмотреть эту информацию можно с помощью команды tune2fs. Утилита tune2fs дает возможность пользователю изменять различные параметры файловых систем ext2/ext3/ext4. А также она позволяет посмотреть установленные в системе параметры

На этом скриншоте видно сколько всего у нас в системе Inode:

Команда mkfs для создания новой файловой системы в Линукс

Команда mkfs (“make file system”) используется для форматирования файловой системы Линукс. На этапе создания новой файловой системы можно предусмотреть большее количество Inode, чтобы в будущем избежать проблему с их нехваткой. Делается это следующей командой (создаем файловую систему с 10 миллионами inode):

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

Использование альтернативных файловых систем

Для тех пользователей, кто не хочет испытывать проблемы с нехваткой Inode в файловых системах ext2/ext3/ext4, мы можем посоветовать использование альтернативной файловой системы Btrfs (B-tree FS или Better Fs, Butter FS), которая основана на принципах структур B-деревьев и «копирования при записи» (copy-on-write). Основное преимущество Btrfs — это использование динамического выделения inоdе, которое исключает ограничения на максимальное количество файлов в файловой системе, существующее в системах ext.

Заключение

В этой статье мы постарались объяснить читателям, что такое Inode в ОС Linux, а также дали ряд полезных команд и утилит для работы с индексными дескрипторами. Также мы постарались рассказать, как предотвратить проблему на диске, когда закончились Inode.

Надеемся, что данный материал будет полезен, как обычным пользователям ОС Линукс, так и начинающим системным администраторам.

Источник

Оцените статью