Прежде всего, и я понимаю, что это не был один из терминов из вашего вопроса, вы должны понимать метаданные . Вкратце и украденные из Википедии, метаданные - это данные о данных. То есть метаданные содержат информацию о части данных. Например, если я владею автомобилем, у меня есть набор информации об автомобиле, который не является частью самого автомобиля. Информация, такая как регистрационный номер, марка, модель, год выпуска, информация о страховке и так далее. Вся эта информация в совокупности называется метаданными. Как вы увидите, в файловых системах 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 это клей , который держит дескрипторы и файлы вместе, связывая номер индексных дескрипторов файлов с именами файлов. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа. Обход файловой системы является еще одним аспектом dentry, поскольку он поддерживает связь между каталогами и их файлами.
Файл , в дополнение к тому , что люди , как правило , думают о том, когда представлены слова, на самом деле просто блок логически связанных произвольных данных. Сравнительно очень скучно, учитывая всю работу, проделанную (выше), чтобы отслеживать их.
Я полностью понимаю, что несколько предложений не дают полного объяснения какой-либо из этих концепций, поэтому, пожалуйста, не стесняйтесь спрашивать дополнительные детали, когда и где это необходимо.
файл
Файл просто означает группу байтов, расположенных в определенном порядке. Это то, что нормальные люди называют содержимым файла. Когда Linux открывает файл, он также создает объект file, который содержит данные о том, где хранится файл и какие процессы его используют. Файловый объект (но не сами данные файла) выбрасывается при закрытии файла.
Inode
Inode (сокращение от «индексный узел») - это набор атрибутов файла, который хранит Linux. Для каждого файла существует один индекс (хотя в некоторых файловых системах Linux вынужден создавать собственные индексы, поскольку информация распространяется по файловой системе). Inode хранит информацию о том, кто владеет файлом, его размер и кому разрешено открывать файл. Каждый индекс также содержит уникальный номер раздела файловой системы; это как серийный номер файла, описанного этим индексом.
Dentry
Дентри (сокращение от «запись каталога») - это то, что ядро Linux использует для отслеживания иерархии файлов в каталогах. Каждый dentry сопоставляет номер индекса с именем файла и родительским каталогом.
Суперблок
Суперблок - это уникальная структура данных в файловой системе (хотя существует несколько копий для защиты от повреждения). Суперблок содержит метаданные о файловой системе, например, какой inode является каталогом верхнего уровня и типом используемой файловой системы.
источник
Суперблок , индексный узел (или inode ), запись каталога (или dentry ) и, наконец, файловый объект являются частью виртуальной файловой системы (VFS) или виртуальной файловой системы . Цель VFS - предоставить клиентским приложениям доступ к различным типам конкретных файловых систем единообразным способом.
Отношения главных объектов в VFS
Дескриптор представляет собой структуру данных в файловой системе Unix / Linux. Inode хранит метаданные о обычном файле, каталоге или другом объекте файловой системы. Inode действует как интерфейс между файлами и данными. Индод может ссылаться на файл или каталог или символическую ссылку на другой объект. Он содержит уникальный номер (i-номер), атрибуты файла, включая имя, дату, размер и разрешения на чтение / запись, а также указатель на местоположение файла. Это аналог таблицы FAT в мире DOS / Windows.
Программы, сервисы, тексты, изображения и т. Д. Являются файлами . Устройства ввода и вывода и, как правило, все устройства считаются файлами в соответствии с системой.
Суперблок является контейнером для метаданных высокого уровня о файловой системе. Суперблок - это структура, которая существует на диске (фактически, в нескольких местах на диске для резервирования), а также в памяти. Он обеспечивает основу для работы с файловой системой на диске, так как определяет параметры управления файловой системой (например, общее количество блоков, свободных блоков, корневой индексный узел).
Dentry - это интерфейс между файлами и Inodes. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа.
Источник
источник
В простоте dentry и inode - это одно и то же, абстракция файла или каталога. Различия между dentry и inode заключаются в том, что dentry используется для облегчения операций, специфичных для каталога, inode - это просто набор метаданных о файле или каталоге. Суперблок - это абстракция файловой системы.
struct file
в ядре linux ошибочно именуется многими другими (напримерstruct address_space
) и не является абстракцией реального «файла» (например, / etc / passwd). Он обозначает открытый «файл» или каталог.struct file
создаетсяsys_open
в ядре, поэтому процесс может иметь многоstruct file
s для одного и того же файла.Зачем нам нужен Дентри? Он используется для ускорения перевода из пути (например, / etc / passwd) в inode. Ядро Linux использует inode для манипулирования «файлом» или каталогом, а не их именем.
источник
Обратите внимание, что эти термины относятся не к Linux, а к файловой системе. Большинство файловых систем, используемых современными Unix и Unix-подобными системами, являются либо производными, либо основанными на оригинальной файловой системе Unix, которая определила идиомы суперблока и inode. Linux также может монтировать несколько файловых систем, в которых нет понятия суперблока и / или inode, наиболее распространенным из которых является FAT. Другой, ZFS, не использует суперблоки, а überblocks.
источник