Що таке Superblock, Inode, Dentry та File?


125

З статті " Анатомія файлової системи Linux" від М. Тіма Джонса я прочитав, що Linux розглядає всі файлові системи з точки зору загального набору об'єктів, і ці об'єкти - суперблок , inode , стоматологія та файл . Незважаючи на те, що решта пункту пояснює вищесказане, мені це було не так комфортно.

Може хтось пояснить мені ці терміни?

Відповіді:


136

Перш за все, і я розумію, що це був не один із термінів вашого запитання, ви повинні розуміти метадані . Метадані, які є кращими та викраденими з Вікіпедії, - це дані про дані. Тобто метадані містять інформацію про фрагмент даних. Наприклад, якщо я володію автомобілем, то у мене є набір інформації про машину, але вона не є частиною самого автомобіля. Така інформація, як реєстраційний номер, марка, модель, рік виготовлення, інформація про страхування тощо. Вся ця інформація в сукупності називається метаданими. У файлових системах Linux та UNIX метадані існують на різних рівнях організації, як ви побачите.

Суперблок , по суті , метадані файлової системи і визначає тип файлової системи, розміру, стан, а також інформації про інших структурах метаданих (метадані метаданих). Суперблок дуже важливий для файлової системи і тому зберігається у кількох зайвих копіях для кожної файлової системи. Суперблок - це структура метаданих дуже "високого рівня" для файлової системи. Наприклад, якщо суперблок розділу / var стає пошкодженим, тоді файлова система (/ var) не може бути змонтована операційною системою. Зазвичай у цьому випадку вам потрібно бігтиfsckякий автоматично вибере альтернативну резервну копію суперблоку та спробу відновити файлову систему. Самі резервні копії зберігаються у групах блоків, розповсюджених через файлову систему, з першим, що зберігається в зсуві 1 блоку від початку розділу. Це важливо в тому випадку, якщо необхідне відновлення вручну. Ви можете переглянути інформацію про резервні копії суперблоку за допомогою команди, dumpe2fs /dev/foo | grep -i superblockяка корисна в разі спроби відновлення вручну. Припустимо, що команда dumpe2fs виводить рядок Backup superblock at 163840, Group descriptors at 163841-163841. Ми можемо використовувати цю інформацію, а також додаткові знання про структуру файлової системи, щоб спробувати використовувати цю резервну копію суперблоку: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Зверніть увагу, що я припустив розмір блоку 1024 байти для цього прикладу.

Інф.узлов існує, або, файлову систему і являє собою метадані про фото. Для наочності всі об'єкти в системі Linux або UNIX - це файли; фактичні файли, каталоги, пристрої тощо. Зауважте, що серед метаданих, що містяться в inode, немає файлу, як люди думають про це, це буде важливо пізніше. Inode містить по суті інформацію про право власності (користувач, група), режим доступу (читання, запис, виконання дозволів) та тип файлу.

Dentry це клей , який тримає дескриптори і файли разом, пов'язуючи число індексних дескрипторів імен файлів. Стоматологи також відіграють певну роль у кешуванні каталогів, що в ідеалі зберігає найчастіше використовувані файли під рукою для швидшого доступу. Перехід файлової системи - це ще один аспект зубного ряду, оскільки він підтримує взаємозв'язок між каталогами та їхніми файлами.

Файл , на додаток до того , що люди , як правило , думають про те, коли представлені слова, насправді просто блок логічно пов'язаних довільних даних. Порівняно дуже тьмяний, враховуючи всю виконану роботу (вище), щоб слідкувати за ними.

Я цілком усвідомлюю, що кілька пропозицій не дають повного пояснення будь-якого з цих понять, тому, будь ласка, не соромтеся запитати додаткові деталі, коли та де це необхідно.


@Tok: Чи буде це дамп так (як показано у відповіді): резервне копіювання резервного блоку на 163840, дескриптори групи на 163841-163841 або так: Суперблок резервного копіювання на 163840, дескриптори групи на 163841-163842? Це була помилка друку? :-)
Сен

@TOK: Суперблок резервного копіювання на 163840, Дескриптори групи на 163841-163842, яку інформацію передають Дескриптори групи?
Сен

@Sen - теоретично дескриптори груп можуть охоплювати кілька блоків, але для більшості настільних систем ви побачите, що вони беруть лише один блок і посилаються на $ ((BackupBlock + 1)) - $ ((BackupBlock + 1))
Tok

@TOK: нормально в моїй системі, я бачу це як $ ((BackupBlock + 1)) - $ ((BackupBlock + 2))
вересня

@Sen - Дескриптор групи описує групу блоків. Що це означає? Більше метаданих. По суті, дескриптор групи містить растрову карту блоків (номер блоку растрового зображення розподілу блоків), растрову індею (те саме, але для inodes), таблицю inode (номер блоку стартового блоку для таблиці inode), вільний блок та кількість інодів, і кількість використаних директорій. Все це базується на файловій системі ext2. Дескриптори груп дуже важливі для належної роботи файлової системи та дублюються разом із суперблоком.
Ток

49

Файл

Файл просто означає купу байтів, розташованих у певному порядку. Це те, що звичайні люди називають вміст файлу. Коли Linux відкриває файл, він також створює об’єкт файлу, в якому зберігаються дані про те, де файл зберігається та які процеси використовують його. Об'єкт файлу (але не самі файлові дані) викидається, коли файл закритий.

Inode

Інод (скорочення "індексний вузол") - це купа атрибутів про файл, який зберігає Linux. Для кожного файлу існує одна inode (хоча для деяких файлових систем Linux має створити власні inode, оскільки інформація поширюється навколо файлової системи). Inode зберігає інформацію про те, хто належить файлу, наскільки великий файл і кому дозволено відкривати файл. Кожен inode також містить число, унікальне для розділу файлової системи; це як серійний номер для файлу, описаного цим inode.

Стоматологія

Зубний апарат (скорочення «запис у каталог») - це те, що ядро ​​Linux використовує для відстеження ієрархії файлів у каталогах. Кожна стоматологія відображає номер inode на ім'я файлу та батьківський каталог.

Суперблок

Суперблок - це унікальна структура даних у файловій системі (хоча існує кілька копій для захисту від корупції). У суперблоку містяться метадані про файлову систему, наприклад, що inode - це каталог верхнього рівня та тип використовуваної файлової системи.


11

суперблок , вузол індексу (або inode ), запис каталогу (або зубний ряд ) і, нарешті, об’єкт файлу є частиною віртуальної файлової системи (VFS) або комутатора віртуальної файлової системи . Мета VFS - дозволити клієнтським програмам отримати доступ до різних типів конкретних файлових систем рівномірно.

Взаємовідносини основних об'єктів у СФС

введіть тут опис зображення


Дескриптор є структурою даних в файлової системі Unix / Linux. Inode зберігає метадані про звичайний файл, каталог або інший об'єкт файлової системи. Inode діє як інтерфейс між файлами та даними. Інод може посилатися на файл або каталог або символічне посилання на інший об’єкт. Він містить унікальне число (i-число), атрибути файлу, включаючи ім'я, дату, розмір та дозволи на читання / запис та вказівник на розташування файлу. Це аналог таблиці FAT у світі DOS / Windows.

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

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

Dentry - це інтерфейс між файлами та Inodes. Стоматологи також відіграють певну роль у кешуванні каталогів, що в ідеалі зберігає найчастіше використовувані файли під рукою для швидшого доступу.

Джерело


5

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

struct file, в ядрі Linux, неправильно називається як безліч інших (наприклад struct address_space) і не є абстракцією реального "файлу" (наприклад, / etc / passwd). Він означає розкритий "файл" або каталог. struct fileстворено sys_openв ядрі, тому процес може мати багато struct files для одного файлу.

Для чого нам потрібна стоматологія? Він використовується для прискорення перекладу з назви шляху (наприклад, / etc / passwd) в inode. Ядро Linux використовує inode для маніпулювання "файлом" або каталогом, а не їх ім'ям.


4

Зауважте, що ці терміни не для Linux, а для файлової системи. Більшість файлових систем, що використовуються в поточних системах Unix та Unix, є або похідними, або натхненими оригінальною файловою системою Unix, яка визначала ідіоми суперблоку та inode. Linux також може монтувати декілька файлових систем, з якими не існує поняття про суперблок та / або inode, найпоширенішим - FAT. Ще один, ZFS, не використовує суперблоки, а überblocks.


Сподіваюсь, ви прочитаєте цей коментар через стільки часу. Я читав, що VFS має індекси та суперблоки, які не пов'язані з узами та суперблоками скажімо EXT2. Отже, щоб не зрозуміти те, що ви сказали, в силу кожного Linux, що має VFS, всі вони повинні використовувати inode та superblock, правда?
CuriousKimchi

1
@CuriousKimchi Незважаючи на те, що вони мають ту саму назву, ви не повинні плутати інформацію, що зберігається на диску (суперблок / inodes) та структури, які використовуються ядром для доступу до файлової системи та її файлів. Кожна файлова система має деякі метадані на диску, що описують характеристики файлової системи, ці метадані використовуються для заповнення структури суперблоку Linux VFS. Аналогічно, файли мають структуру inode ядра під VFS. Коли в базових файлових системах відсутнє поняття inode, ця структура містить підроблений номер inode, створений під час руху OS.
jlliagre
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.