Суперблок linux что это
Первый элемент этой структуры (суперблок) — одинаков для всех групп, а все остальные — индивидуальны для каждой группы. Суперблок хранится в первом блоке каждой группы блоков (за исключением группы 1, в которой в первом блоке расположена загрузочная запись). Суперблок является начальной точкой файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы. Наличие нескольких копий суперблока объясняется чрезвычайной важностью этого элемента файловой системы. Дубликаты суперблока используются при восстановлении файловой системы после сбоев.
Информация, хранимая в суперблоке, используется для организации доступа к остальным данным на диске. В суперблоке определяется размер файловой системы, максимальное число файлов в разделе, объем свободного пространства и содержится информация о том, где искать незанятые участки. При запуске ОС суперблок считывается в память и все изменения файловой системы вначале находят отображение в копии суперблока, находящейся в ОП, и записываются на диск только периодически. Это позволяет повысить производительность системы, так как многие пользователи и процессы постоянно обновляют файлы. С другой стороны, при выключении системы суперблок обязательно должен быть записан на диск, что не позволяет выключать компьютер простым выключением питания. В противном случае, при следующей загрузке информация, записанная в суперблоке, окажется не соответствующей реальному состоянию файловой системы.
Суперблок имеет следующую структуру.
Название поля | Тип | Комментарий |
1.2em s_inodes_count | ULONG | Число индексных дескрипторов в файловой системе |
s_blocks_count | ULONG | Число блоков в файловой системе |
s_r_blocks_count | ULONG | Число блоков, зарезервированных для суперпользователя |
s_free_blocks_count | ULONG | Счетчик числа свободных блоков |
s_free_inodes_count | ULONG | Счетчик числа свободных индексных дескрипторов |
s_first_data_block | ULONG | Первый блок, который содержит данные. В зависимости от размера блока, это поле может быть равно 0 или 1 |
s_log_block_size | ULONG | Индикатор размера логического блока: 0 = 1 Кб; 1 = 2 Кб; 2 = 4 Кб |
s_log_frag_size | LONG | Индикатор размера фрагментов (кажется, понятие фрагмента в настоящее время не используется) |
s_blocks_per_group | ULONG | Число блоков в каждой группе блоков |
s_frags_per_group | ULONG | Число фрагментов в каждой группе блоков |
s_inodes_per_group | ULONG | Число индексных дескрипторов (inodes) в каждой группе блоков |
s_mtime | ULONG | Время, когда в последний раз была смонтирована файловая система |
s_wtime | ULONG | Время, когда в последний раз производилась запись в файловую систему s_mnt_count USHORT Счетчик числа монтирований файловой системы. Если этот счетчик достигает значения, указанного в следующем поле ( s_max_mnt_count ), файловая система должна быть проверена (это делается при перезапуске), а счетчик обнуляется |
s_max_mnt_count | SHORT | Число, определяющее, сколько раз может быть смонтирована файловая система |
s_magic | USHORT | «Магическое число» ( 0xEF53 ), указывающее, что файловая система принадлежит к типу ex2fs |
s_state | USHORT | Флаги, указывающее текущее состояние файловой системы (является ли она чистой ( clean ) и т.п.) |
s_errors | USHORT | Флаги, задающие процедуры обработки сообщений об ошибках (что делать, если найдены ошибки) |
s_pad | USHORT | Заполнение s_lastcheck ULONG Время последней проверки файловой системы |
s_checkinterval | ULONG | Максимальный период времени между проверками файловой системы |
s_creator_os | ULONG | Указание на тип ОС, в которой создана файловая система |
s_rev_level | ULONG | Версия (revision level) файловой системы |
s_reserved | ULONG[235] | Заполнение до 1024 байт |
Next: Group Descriptors Up: Структура дискового раздела ext2 Previous: Структура дискового раздела ext2 Contents Index Alex Otwagin 2002-12-16
Источник
Что такое суперблок, инод, дентри и файл?
Из статьи Анатомия файловой системы Linux М. Тима Джонса я прочитал, что Linux рассматривает все файловые системы с точки зрения общего набора объектов, и это объекты суперблок , inode , dentry и файл . Несмотря на то, что остальная часть параграфа объясняет вышеизложенное, мне не очень понравилось это объяснение.
Может ли кто-нибудь объяснить мне эти термины?
Прежде всего, и я понимаю, что это не был один из терминов из вашего вопроса, вы должны понимать метаданные . Вкратце и украденные из Википедии, метаданные — это данные о данных. То есть метаданные содержат информацию о части данных. Например, если я владею автомобилем, у меня есть набор информации об автомобиле, который не является частью самого автомобиля. Информация, такая как регистрационный номер, марка, модель, год выпуска, информация о страховке и так далее. Вся эта информация в совокупности называется метаданными. Как вы увидите, в файловых системах 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, поскольку он поддерживает связь между каталогами и их файлами.
Файл , в дополнение к тому , что люди , как правило , думают о том, когда представлены слова, на самом деле просто блок логически связанных произвольных данных. Сравнительно очень скучно, учитывая всю работу, проделанную (выше), чтобы отслеживать их.
Я полностью понимаю, что несколько предложений не дают полного объяснения какой-либо из этих концепций, поэтому, пожалуйста, не стесняйтесь спрашивать дополнительные детали, когда и где это необходимо.
Источник
Что такое Superblock, Inode, Dentry и файл?
Из статьи Анатомия файловой системы Linux М. Тимом Джонсом, я прочитал, что Linux рассматривает все файловые системы с точки зрения общего набора объектов, и эти объекты superblock , inode , dentry и файл . Несмотря на то, что в остальной части параграфа объясняется это выше, я не был так доволен этим объяснением.
Может ли кто-нибудь объяснить мне эти термины?
5 ответов
В первую очередь, и я понимаю, что это не было одним из условий вашего вопроса, вы должны понимать метаданные . Кратко и украденные из Википедии метаданные — данные о данных. То есть, метаданные содержат информацию о части данных. Например, если я владею автомобилем, то у меня есть свод информации о машине, но который не является частью самого автомобиля. Информация, такая как регистрационный номер, марка, модель, год изготовления, страховая информация и т. Д. Вся эта информация в совокупности упоминается как метаданные. В файловых системах 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 байта для этого примера.
inode существует или входит в файловую систему и представляет метаданные о файле. Для ясности все объекты в системе Linux или UNIX являются файлами; фактические файлы, каталоги, устройства и т. д. Обратите внимание, что среди метаданных, содержащихся в inode, нет имени файла, поскольку люди думают об этом, это будет важно позже. Индекс содержит по существу информацию о собственности (пользователе, группе), режиме доступа (чтение, запись, выполнение разрешений) и тип файла.
A dentry — это клей, который содержит inodes и файлы вместе, связывая номера inode с именами файлов. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа. Обход файловой системы — еще один аспект дентриса, поскольку он поддерживает связь между каталогами и их файлами.
A файл , в дополнение к тому, что люди обычно думают о том, когда он представлен этим словом, на самом деле является просто блоком логически связанных произвольных данных. Сравнительно очень скучно, учитывая всю выполненную работу (см. Выше), чтобы отслеживать их.
Я полностью понимаю, что несколько предложений не дают полного объяснения ни одной из этих концепций, поэтому, пожалуйста, не стесняйтесь спрашивать дополнительную информацию, когда и где это необходимо.
Файл
Файл просто означает кучу байтов, расположенных в определенном порядке. Это то, что обычные люди называют содержимым файла. Когда Linux открывает файл, он также создает объект-файл, в котором хранятся данные о том, где хранится файл и какие процессы его используют. Объект файла (но не сам файл) отбрасывается, когда файл закрыт.
Дескриптор
Индекс (short для «index node») представляет собой набор атрибутов о файле, который хранит Linux. Для каждого файла есть один индексный дескриптор (хотя с некоторыми файловыми системами Linux должен создавать свои собственные inodes, потому что информация распространяется на файловую систему). В inode хранится информация, например, кто владеет файлом, насколько большой файл и кому разрешено открывать файл. Каждый индексный дескриптор также содержит число, уникальное для раздела файловой системы; это как серийный номер для файла, описанного этим inode.
Dentry
Дентри (сокращение от записи «directory») — это то, что использует ядро Linux для отслеживания иерархии файлов в каталогах. Каждый dentry отображает номер inode в имя файла и родительский каталог.
Суперблок
Суперблок — это уникальная структура данных в файловой системе (хотя существует несколько копий для защиты от коррупции). Суперблок содержит метаданные о файловой системе, например, какой inode является каталогом верхнего уровня и типом используемой файловой системы.
суперблока , индексный узел (или inode ), запись в каталоге (или dentry ) и, наконец, файл являются частью виртуальной файловой системы (VFS) или виртуальной файловой системы . Целью VFS является предоставление клиентским приложениям единообразного доступа к различным типам конкретных файловых систем.
Отношения основных объектов в VFS
Inode — это структура данных в файловой системе Unix /Linux. Индекс хранит метаданные о регулярном файле, директории или другом объекте файловой системы. Inode действует как интерфейс между файлами и данными. Индекс может ссылаться на файл или каталог или символическую ссылку на другой объект. Он содержит уникальный номер (i-номер), атрибуты файла, включая имя, дату, размер и разрешения на чтение /запись, а также указатель на расположение файла. Это аналог таблицы FAT в мире DOS /Windows.
Программы, службы, тексты, изображения и т. д. — это все файлы . В соответствии с системой устройства ввода и вывода, как правило, все устройства считаются файлами .
суперблок — это контейнер для высокоуровневых метаданных о файловой системе. Суперблок — это структура, которая существует на диске (фактически, несколько мест на диске для избыточности), а также в памяти. Он обеспечивает основу для работы с файловой системой на диске, поскольку он определяет параметры управления файловой системой (например, общее количество блоков, свободных блоков, узел корневого индекса).
Dentry — это интерфейс между файлами и Inodes. Dentries также играют роль в кэшировании каталогов, что в идеале позволяет хранить наиболее часто используемые файлы для быстрого доступа.
Обратите внимание, что эти термины не специфичны для Linux, а специфичны для файловой системы. Большинство файловых систем, используемых текущими системами Unix и Unix, либо производятся, либо вдохновляются оригинальной файловой системой Unix, которая определяет идиомы суперблока и inode. Linux также может монтировать несколько файловых систем, в которых нет понятия суперблока и /или inode, наиболее распространенным из которых является FAT. Другой, ZFS, не использует суперблоки, а Ã ерберблоки.
В простоте, dentry и inode — одно и то же, абстракция файла или каталога. Различия между dentry и inode заключаются в том, что dentry используется для облегчения операций, специфичных для каталога, inode — это всего лишь коллекция метаданных о файле или каталоге. Superblock — это абстракция файловой системы.
struct file, в linux kernle, неправильно обозначается как много других (например, struct address_space) и не является абстракцией реального «файла» (например, /etc /passwd). Он обозначает открытый «файл» или каталог. struct file создается sys_open в ядре, поэтому процесс может иметь много структурного файла.
Зачем нам нужны зубные протезы? Он используется для ускорения перевода от имени пути (например, /etc /passwd) к inode. Ядро Linux использует inode для управления «файлом» или каталогом, а не их именем.
Источник