it-swarm-ru.tech

Что такое суперблок, инод, дентри и файл?

Из статьи Анатомия файловой системы Linux М. Тим Джонса я прочитал, что Linux рассматривает все файловые системы с точки зрения общего набора объектов, и эти объекты суперблок, индекс, dentry и file. Несмотря на то, что остальная часть параграфа объясняет вышеизложенное, мне не очень понравилось это объяснение.

Может ли кто-нибудь объяснить мне эти термины?

132
Sen

Прежде всего, и я понимаю, что это не был один из терминов из вашего вопроса, вы должны понимать метаданные . Вкратце и украденные из Википедии, метаданные - это данные о данных. То есть метаданные содержат информацию о части данных. Например, если я владею автомобилем, у меня есть набор информации об автомобиле, который не является частью самого автомобиля. Информация, такая как регистрационный номер, марка, модель, год выпуска, информация о страховке и так далее. Вся эта информация в совокупности называется метаданными. Как вы увидите, в файловых системах Linux и UNIX метаданные существуют на нескольких уровнях организации.

--- суперблок по сути является метаданными файловой системы и определяет тип файловой системы, размер, состояние и информацию о других структурах метаданных (метаданные метаданных). Суперблок очень важен для файловой системы и поэтому хранится в нескольких избыточных копиях для каждой файловой системы. Суперблок - это структура метаданных очень высокого уровня для файловой системы. Например, если суперблок раздела/var становится поврежденным, то рассматриваемая файловая система (/ var) не может быть смонтирована операционной системой. Обычно в этом случае вам нужно запустить fsck, который автоматически выберет альтернативную резервную копию суперблока и попытается восстановить файловую систему. Сами резервные копии хранятся в группах блоков, распределенных по файловой системе, причем первые хранятся со смещением в 1 блок от начала раздела. Это важно в случае необходимости ручного восстановления. Вы можете просмотреть информацию о резервных копиях суперблока ext2/ext3/ext4 с помощью команды 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 байта.

inode существует в или в файловой системе и представляет метаданные о файле. Для ясности все объекты в системе Linux или UNIX являются файлами; актуальные файлы, каталоги, устройства и так далее. Обратите внимание, что среди метаданных, содержащихся в inode, нет имени файла, как думают люди, это будет важно позже. Inode содержит по существу информацию о владельце (пользователь, группа), режиме доступа (права на чтение, запись, выполнение) и типе файла.

A dentry - это клей, который объединяет иноды и файлы, связывая номера инодов с именами файлов. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа. Обход файловой системы является еще одним аспектом dentry, поскольку он поддерживает связь между каталогами и их файлами.

A file, в дополнение к тому, о чем обычно думают люди, когда они представлены с Word, на самом деле является просто блоком логически связанных произвольных данных. Сравнительно очень скучно, учитывая всю работу, проделанную (выше), чтобы отслеживать их.

Я полностью понимаю, что несколько предложений не дают полного объяснения какой-либо из этих концепций, поэтому, пожалуйста, не стесняйтесь спрашивать дополнительные детали, когда и где это необходимо.

144
Tok

File

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

Дескриптор

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

Dentry

Дентри (сокращение от "запись каталога") - это то, что ядро ​​Linux использует для отслеживания иерархии файлов в каталогах. Каждый dentry сопоставляет номер индекса с именем файла и родительским каталогом.

Суперблок

Суперблок - это уникальная структура данных в файловой системе (хотя существует несколько копий для защиты от повреждения). Суперблок содержит метаданные о файловой системе, например, какой inode является каталогом верхнего уровня и типом используемой файловой системы.

50
pingswept

суперблок , индексный узел (или индекс ), запись каталога ( или dentry ) и, наконец, объект файла является частью виртуальная файловая система (VFS) или переключатель виртуальной файловой системы . Цель VFS - предоставить клиентским приложениям доступ к различным типам конкретных файловых систем единообразным способом.

Отношения основных объектов в VFS

enter image description here


Inode - это структура данных в файловой системе Unix/Linux. Inode хранит метаданные о обычном файле, каталоге или другом объекте файловой системы. Inode действует как интерфейс между файлами и данными. Индод может ссылаться на файл или каталог или символическую ссылку на другой объект. Он содержит уникальный номер (i-номер), атрибуты файла, включая имя, дату, размер и разрешения на чтение/запись, а также указатель на местоположение файла. Это аналог таблицы FAT в мире DOS/Windows.

Программы, сервисы, тексты, изображения и т.д. - это все файлы . Устройства ввода и вывода, и, как правило, все устройства, считаются файлами , в соответствии с системой.

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

Dentry - это интерфейс между файлами и Inodes. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа.

Источник

14
Premraj

В простоте dentry и inode - это одно и то же, абстракция файла или каталога. Различия между dentry и inode заключаются в том, что dentry используется для облегчения операций, специфичных для каталога, inode - это просто набор метаданных о файле или каталоге. Суперблок - это абстракция файловой системы.

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

Зачем нам нужен Дентри? Он используется для ускорения перевода из имени пути (например,/etc/passwd) в inode. Ядро Linux использует inode для манипулирования "файлом" или каталогом, а не их именем.

5
firo

Обратите внимание, что эти термины относятся не к Linux, а к файловой системе. Большинство файловых систем, используемых в современных Unix и Unix-подобных системах, являются производными или основаны на оригинальной файловой системе Unix, которая определила идиомы суперблока и inode. Linux также может монтировать несколько файловых систем, в которых нет понятия суперблока и/или inode, наиболее распространенным из которых является FAT. Другой, ZFS, не использует суперблоки, а überblocks.

4
jlliagre