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

Perl имеет base64 модуль (в основном распределении с тех пор 5.7.1).

echo foo | sha1sum | \
perl -MMIME::Base64 -ne '/^([[:xdigit:]]+)/ and print encode_base64(pack("H*",$1))'

Если Вы имеете Digest::SHA модуль (в основном распределении с тех пор 5.9.3), или более старое Digest::SHA1 модуль, можно сделать целое вычисление в жемчуге. С жемчуга 5.10.1, b64digest не заполняет вывод base64; если Вам нужно дополнение самого легкого пути, должен использовать MIME::Base64.

perl -MDigest::SHA -e 'print Digest::SHA->new(1)->addfile(*STDIN)->b64digest'
perl -MMIME::Base64 -MDigest::SHA \
     -le 'print encode_base64(Digest::SHA->new(1)->addfile(*STDIN)->digest)'
8
25.10.2011, 04:54
3 ответа

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

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

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

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

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

13
27.01.2020, 20:08

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

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

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

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

6
27.01.2020, 20:08

Метаданные являются "Данными о Данных".

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

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

5
27.01.2020, 20:08
  • 1
    Просто любопытный, но Вы знаете, как или где современные реализации хранят метаданные по диску? –  Kaitlyn Mcmordie 25.10.2011, 05:08
  • 2
    @KaitlynMcmordie, зависит от фс. Для расширения [234], большинство метаданных хранится в inode файла. Имя (имена) хранится в каталогах, который должен сказать, что часть данных файлов, которые имеют флаг каталога и определенный формат для их основных данных. Данные файла хранятся в блоках данных, и inodes хранятся в inode таблицах, которые выделяются, когда фс отформатирована. Другие данные в inode включают владельца, полномочия, метки времени доступа и указатели на блоки данных. –  psusi 25.10.2011, 06:30

Теги

Похожие вопросы