Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Як Linux бачить файли: розбір роботи Inode

Уявіть, що ви прийшли до величезної бібліотеки. На полицях лежать тисячі книг, але щоб знайти потрібну, ви не бігаєте між стелажами, а просто відкриваєте картковий каталог. Там вказані назви книг, їх автори, кількість сторінок, жанр і, найголовніше, — точне місце на полиці.

У світi Unix-подібних операційних систем роль такої картки виконує Inode (скорочення від Index Node або індексний дескриптор).

Розберемося, як влаштована ця структура та як правильно працювати з інодами на практиці.

Як Linux бачить ваші файли: будова Inode

Для користувача файл — це ім’я (наприклад, document.pdf) і його вміст. Але для операційної системи файл ділиться на дві принципово різні частини:

  1. Самі дані (текст, зображення, код), які зберігаються в блоках диска.
  2. Метадані (інформація про файл), які зберігаються в Inode.

Inode не містить імені файлу та самих даних. Він зберігає лише інформацію про дані та вказівки на те, де ці дані шукати.

Що зберігається всередині Inode

Коли ви створюєте файл, система виділяє для нього один Inode, куди записуються такі метадані:

Де ж зберігається ім’я файлу

Ім’я файлу зберігається в директорії. У Linux каталог — це теж файл особливого типу. Всередині нього міститься проста таблиця з двох колонок: Ім’я файлу → Номер Inode.

Коли ви відкриваєте файл /home/user/photo.jpg, система робить наступне:

  1. шукає в каталозі запис photo.jpg.
  2. знаходить відповідний номер Inode (наприклад, #142583).
  3. звертається до таблиці Inode за цим номером.
  4. зчитує права доступу (чи дозволено вам відкрити файл) і адреси блоків на диску.
  5. зчитує самі блоки даних з диска й відображає вам картинку.

Як Inode знаходить дані

Розмір одного Inode фіксований — зазвичай 256 байт у файловій системі ext4. Як у таку маленьку картку вмістити адреси блоків для файлу розміром у десятки гігабайт?

Для цього використовується каскадна система вказівників:

Допоміжні технології

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

Extents: у сучасних версіях ext4 замість довгого списку окремих блоків часто використовуються екстенти — записи вигляду «починаючи з блоку №100, наступні 500 блоків належать цьому файлу».

Як працюють посилання через Inode: різниця між жорсткими та символічними 

Механізм інодів робить дуже простою для розуміння тему посилань у Linux, де початківці часто плутаються. 

Жорсткі посилання (Hard Links)

Жорстке посилання — це просто ще одне ім’я для того самого Inode.

Символічні посилання (Symbolic Links)

Символічне посилання — це аналог звичайного «ярлика» у Windows.

Основні команди для роботи з Inode

Розглянемо корисні інструменти Linux для діагностики та налаштування.

1. Перевірка номерів Inode для файлів

Команда ls з прапорцем -i (або -li для детального списку) виводить номер Inode у першій колонці:

ls -li /

Результат:

131073 drwxr-xr-x   2 root root  4096 Aug 10 12:00 bin
 6160385 drwxr-xr-x 150 root root 12288 Aug 12 10:30 usr

2. Перевірка залишку Inode на дисках

Використовуйте команду df з прапорцем -h (зручний формат) та -i (інформація про Inode):

df -hi

Приклад виводу:

Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sda5        1.9M  200K  1.7M   11% /

Якщо колонка IUse% досягає 100% — настав час очищати дрібні файли або розширювати таблицю.

Детальніше про прапорці та параметри виводу можна прочитати в офіційній документації man-сторінок Linux.

3. Пошук каталогів, які забирають найбільше Inode

Якщо номери Inode вичерпуються, знайти винуватця можна за допомогою такої комбінації команд (рахує кількість файлів у кожній папці поточного каталогу):

find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n\

4. Глибокий аналіз через debugfs (для експертів)

Утиліта debugfs дозволяє зазирнути під капот файлової системи ext4:

sudo debugfs /dev/sda5

Всередині режиму налагодження ви можете переглянути детальний стан конкретного Inode: 

debugfs: stat <6160385>

Ви побачите точні права доступу, розмір, часові мітки та конкретні номери блоків диска, закріплені за об’єктом.

Як запобігти проблемі з обмеженням Inode?

# Створити 10 мільйонів Inode:
sudo mkfs.ext4 -N 10000000 /dev/sda5

# Або вказати створювати 1 Inode на кожні 4 КБ простору (частіше 16 КБ):
sudo mkfs.ext4 -i 4096 /dev/sda5

Підсумок

Головні тези, які варто запам’ятати ↓

  1. Один файл = один Inode (окрім випадків використання жорстких посилань).
  2. Inode не містить імені файлу — ім’я зберігається в каталозі.
  3. Стандартні файлові системи (ext4) мають фіксований ліміт Inode, який контролюється командою df -i.
  4. Жорсткі посилання ділять один Inode між декількома іменами, а символічні — створюють новий Inode-ярлик.

Якщо тема Inode стала для вас першим зануренням у Linux і ви хочете системно розібратися в цій темі — запрошуємо на курси з Linux від ITEDU

У нас є навчальні програми для будь-якого рівня підготовки. Обирайте свій напрямок та розвивайте професійні навички разом із практиками! 

Exit mobile version