Что такое метаданные и как они помогают в процессе «fsck»?


8

Если я правильно понимаю, «fsck» используется в системах UNIX для проверки внутренней согласованности на дисках после сбоя. Тогда мне было интересно, как он использует «метаданные», чтобы убедиться, что все в файловой системе согласованно, например, какие шаги должен предпринять процесс fsck для восстановления и исправления?

-> редактировать: было бы также полезно, если бы кто-то мог уточнить, что означает «синхронная сквозная запись» на этом рисунке.


Похоже, что это будет больше по теме U & L, может быть.

Ответы:


13

Метаданные - это информация о данных. Если вы думаете о текстовом файле, последовательность букв этого текстового файла является фактическими данными, содержащимися в файле. Однако у файла есть имя, владелец, дата создания, местоположение на носителе данных и т. Д. Вся эта информация является метаданными. Обратите внимание, что метаданные могут обрабатываться так же, как данные. Например, Unix хранит метаданные файла в файлах данных, называемых каталогами (или папками в эту новую эпоху вычислений :-)

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

Проверка файловой системы заключается в чтении всех инодов и попытке решить как можно больше проблем с повреждением. Например, предположим, что inode отсутствует в списке свободных inode, но нет записей каталога, в которых говорится, что этот inode является частью файла в любом из каталогов, о которых знает файловая система. Этот инод может быть возвращен в список бесплатных инодов.

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

Возможны и другие типы проверок файловой системы.


6

В контексте файловых систем Unix или Linux «метаданные» - это информация о файле: идентификатор пользователя, которому он принадлежит, права доступа, тип файла (специальный, обычный, именованный канал и т. Д.) И какие блоки диска используются в файле. Все это обычно хранится в структуре на диске, называемой «inode». Одна из частей информации в inode - это сколько «ссылок» на файл существует. Обычный файл обычно имеет 1, но каталог (который в основном представляет собой файл со специальной отметкой типа «Я каталог») имеет как минимум 2 ссылки. Все, что видно в файловой системе, имеет одну ссылку из каталога, в котором оно появляется, но поскольку у каждого каталога есть «.» имя, а также его обычное имя, они имеют 2 ссылки.

fsckможет сканировать «блоки inode» файловой системы (дисковые блоки, которые содержат структуры данных inode), чтобы найти inode с числом ссылок больше 0. Файл, представленный inode с числом ссылок больше 0, должен появиться в каталог где-то. Если этот индекс не отображается в каталоге, fsckпомещает файл в хорошо известный каталог, обычно «lost + found» вверху файловой системы. Обратите внимание, что файловые системы Unix / Linux обычно не содержат метаданных в inode о том, к какому каталогу принадлежит этот inode, а только информация в файле каталога о том, какие файлы содержит этот каталог.

fsckможет использовать другие метаданные, например, какие дисковые блоки содержат данные файла. fsckможет проверить, присутствуют ли дисковые блоки, которые, как говорит инод, принадлежат файлу, в "нераспределенном списке" файловых систем дисковых блоков. Потенциально fsckмог бы проверить, содержат ли два или более inode одинаковые дисковые блоки, что указывало бы на какое-то повреждение с множественным распределением.

Распределение дисковых блоков по файлам появляется в inode диска. Древовидная структура членства в каталогах файловой системы появляется в каталогах. Иноды не отображаются и не выделяются для каталогов. fsckиспользует это разделение, чтобы сделать ремонт. Это сильно отличается от систем, таких как MS-DOS или ранних версий Windows, где «таблица размещения файлов» содержала как древовидную структуру (членство в каталоге), так и распределение дисковых блоков. Повредите «FAT», и вам придется сканировать блоки дисков, чтобы увидеть, что они содержат, и как они могут совмещаться.


5

Метаданные - это «Данные о данных».

В случае файловой системы * nix метаданные, используемые fsckзаголовком в каждом блоке данных, указывают на запись каталога или следующий блок данных и соответствующие записи в каталоге. fsckсканирует блоки и проверяет, совпадают ли записи каталога и правильно ли указаны указатели на следующий блок.

Это сильно различается между файловыми системами. Фактически, какие метаданные хранятся и где они хранятся, это то, что наиболее отличает различные файловые системы * nix. Более современные также ведут журнал изменений в структурах каталогов.


Просто любопытно, но знаете ли вы, как или где современные реализации хранят метаданные на диске?
Кейтлин Макморди

1
@KaitlynMcmordie, зависит от фс. Для ext [234] большая часть метаданных хранится в inode файла. Имя (я) хранятся в каталогах, то есть часть данных файлов, которые имеют флаг каталога и определенный формат для их основных данных. Данные файла хранятся в блоках данных, а inode хранятся в таблицах inode, которые выделяются при форматировании fs. Другие данные в inode включают владельца, разрешения, метки времени доступа и указатели на блоки данных.
Псуси
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.