• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Стаття також доступна російською (перейти до перегляду).

Inode в Linux

Призначення Inode в ОС Linux

Для ОС Linux є таке поняття, як Inode або індексний дескриптор. Індексні дескриптори у файлових системах (таких як ext4) призначені для зберігання метаданих про файли, каталоги та інші об'єкти.

Уявимо ієрархічну структуру файлової системи Лінукс в спрощеному виді:

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

Таким чином, файлова система Linux містить блоки для зберігання даних та inodes. За умовчанням, в ext4, 4092 байти — це розмір одного блоку. Будь-який файл в каталозі ОС Linux має ім'я файлу і номер inode. Користувач може дізнатися метадані цього файлу, вказавши його номер inode.

Як правило, кожен Inode зберігає наступні атрибути:

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

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

Для ОС Лінукс також важливим є поняття посилань: символічні і жорсткі посилання.

Символічне посилання — це за своєю суттю «ярлик», воно містить адресу файлу.

Якщо ви спробуєте відкрити таке посилання, то відкриється відповідний файл (папка). Якщо видалити цей файл (папку), символічне посилання не видалиться, але при спробі відкрити його — воно приведе «в нікуди raquo;. Номер Inоdе «символічного посилання» відрізняється від номера inоde того файлу, на який воно посилається.

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

Здавалося б, тема «Inode в ОС Linux» — це сфера діяльності системних адміністраторів і не стосується пересічних користувачів, проте, у вас може статися такий випадок, коли на диску начебто є ще вільне місце, а ось нові файли ви вже створювати не можете, оскільки у вас закінчилися номери inode. У цій статті ми пояснюємо навіщо потрібний inode, а також розглянемо, як працювати з linux інод і дамо усі необхідні команди для цього.

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

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

Якщо вам знадобляться права користувача root для виконання деяких команд, то заздалегідь виконайте:

sudo -i

Команди ls та df

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

Отже, подивимося inode для файлів нашої системи за допомогою команди:

ls -li /

Використання команди ls

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

df -hi

Використання команди df

Ця команда буде корисна, щоб подивитися, скільки inode вже використано в системі, а який відсоток їх вільний. Ці дані дозволять вам запобігти ситуації, коли на диску вільне місце ще є, а ось нові файли вже створювати не можна.

Як працювати з налагоджувачем debugfs

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

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

sudo debugfs /dev/sda5

Після цього, виконаємо таку команду:

debugfs: stat

Робота з налагоджувачем debugfs

Яку ж основну інформацію ми можемо отримати з цього скріншоту?

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

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

debugfs: block_dump 9308

Перегляд блоку block_dump

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

А для того, щоб отримати номери Inode, скористаємося наступними командами:

debugfs: ls -l

Перегляд номерів Inode

У першому стовпчику (ліворуч) ми бачимо номери inode для папок або файлів, для прикладу, можна знайти папку usr c номером інод 6160385 і подивитися цей запис:

debugfs: stat

Перегляд запису Inode

Зараз звернемо увагу на розділ EXTENTS, там міститься запис з номером блоку, в якому знаходиться вміст цієї директорії, подивимося його за допомогою команди:

debugfs: block_dump 24649760

Перегляд конкретного блоку командою block_dump

Приклад використання команди tune2fs

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

sudo tune2fs -l /dev/sda5

На цьому скриншоті можна побачити загальну кількість Inode в системі:

Inode count 30498816

Використання команди tune2fs

Команда mkfs для створення нової файлової системи в Лінукс

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

mkfs -t ext4 -N 10000000 /dev/sda5

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

mkfs -t ext4 -i 4K /dev/sda5

Використання альтернативних файлових систем

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

Висновок

У цій статті ми постаралися пояснити читачам, що таке Inode в ОС Linux, а також дали ряд корисних команд і утиліт для роботи з індексними дескрипторами. Також ми постаралися розповісти, як запобігти проблемі на диску, коли закінчилися Inode.

Сподіваємося, що цей матеріал буде корисний, як звичайним користувачам ОС Лінукс, так і системним адміністраторам початківцям.

Якщо ж у вас виникають проблеми з індивідуальним налаштуванням вашої ОС Linux на арендовані у нас сервери, то ви завжди можете звернутися за консультацією до фахівців нашої компанії FREEhost.UA.

Дата: 24.03.2021
Автор: Владислав
Голосування

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:

comments powered by Disqus
navigate
go
exit
Дякуємо, що обираєте FREEhost.UA