11. Иноды

Помните, что наша файловая система состоит из всех наших фактических файлов и базы данных, которая ими управляет? Эта база данных известна как таблица inode (таблица i-узлов), фундаментальная часть того, как работает inode in linux.

Что такое Inode в Linux

Inode (сокращение от index node — индексный дескриптор) — это запись в этой таблице. Каждый файл и каталог имеет свой собственный inode. Он описывает все о файле, например:

  • Тип файла (например, обычный файл, каталог, символьное устройство)
  • Владелец
  • Группа
  • Права доступа
  • Временные метки: mtime (последнее изменение), ctime (последнее изменение атрибутов), atime (последний доступ)
  • Количество жестких ссылок на файл
  • Размер файла
  • Количество блоков, выделенных файлу
  • Указатели на блоки данных файла (самое важное!)

По сути, i node хранит все метаданные о файле, кроме его имени и фактического содержимого.

Создание и выделение Inode

При создании файловой системы также выделяется место для inode. Алгоритмы определяют, сколько места для inode вам потребуется, исходя из объема диска и других факторов. Вы, вероятно, видели ошибки нехватки места на диске. То же самое может случиться и с inode, хотя это менее распространено. Если у вас закончатся inode, вы не сможете создавать новые файлы. Хранение данных зависит как от блоков данных, так и от базы данных (таблицы inode).

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

Просмотр информации об Inode

Каждый linux inode идентифицируется уникальным номером. При создании файла ему присваивается номер inode, часто последовательно. Однако вы можете заметить, что новому файлу присваивается меньший номер inode, чем старым. Это происходит потому, что номера удаленных inode могут быть повторно использованы для новых файлов. Чтобы просмотреть номера inode, выполните команду ls -li:

pete@icebox:~$ ls -li
140 drwxr-xr-x 2 pete pete 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 pete pete 6 Jan 20 20:01 Documents

Первое поле в выводе этой команды — это номер inode. Вы также можете увидеть подробную информацию о i node файла с помощью команды stat:

pete@icebox:~$ stat ~/Desktop/
  File: ‘/home/pete/Desktop/’
  Size: 6               Blocks: 0          IO Block: 4096   directory
Device: 806h/2054d      Inode: 140         Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   pete)   Gid: ( 1000/   pete)
Access: 2016-01-20 20:13:50.647435982 -0800
Modify: 2016-01-20 20:13:06.191675843 -0800
Change: 2016-01-20 20:13:06.191675843 -0800
 Birth: -

Как I-Node указывает на данные

Мы знаем, что наши данные хранятся на диске, но, вероятно, не в одном непрерывном блоке. Здесь структура inode linux становится незаменимой. Inode указывают на фактические блоки данных ваших файлов. В типичной файловой системе (хотя реализации различаются) каждый inode содержит 15 указателей. Первые 12 указателей указывают непосредственно на блоки данных. 13-й указатель указывает на блок, содержащий больше указателей. 14-й и 15-й указатели указывают на дальнейшие вложенные блоки указателей. Это может показаться запутанным, но такая структура позволяет i node сохранять фиксированный размер, при этом имея возможность ссылаться на файлы разного размера. К небольшим файлам можно быстро получить доступ с помощью прямых указателей, в то время как более крупные файлы находятся через вложенные указатели.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот несколько практических лабораторных работ для закрепления вашего понимания файловой системы Linux и управления файлами:

  1. Управление файлами и каталогами в Linux - Практикуйтесь в создании, удалении, копировании и перемещении файлов и каталогов, а также изучите создание символических и жестких ссылок при анализе inode.
  2. Навигация по файловой системе в Linux - Изучите основные навыки навигации по файловой системе Linux с помощью таких основных команд оболочки, как pwd, cd и ls.
  3. Поиск файлов и команд в Linux - Освойте основные методы поиска файлов и команд в Linux с помощью find, locate, whereis, which и type.

Эти лабораторные работы помогут вам применять концепции в реальных сценариях и повысить уверенность в управлении файловой системой Linux.

Тест

Как посмотреть, сколько inode осталось в вашей системе? (Пожалуйста, ответьте на английском языке, обращая внимание на регистр.)