Каково «волшебное» число файловой системы в суперблоке?


9

Я работаю над NAS-системой среднего уровня, в основном работающей под Linux, и сегодня мне нужно провести отличное тестирование. Пошаговое руководство привело меня к использованию fsdb для повреждения магического числа в файловой системе с целью его повреждения / тестирования сценария, который должен это исправить.

Я немного погуглил и не нашел убедительного объяснения. Может ли кто-нибудь пролить некоторый свет на промежуточный уровень?

Ответы:


15

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

Здесь эта концепция применяется к формату файловой системы. Например, файловая система ext2 / ext3 / ext4 всегда имеет байты 0x53 0xEFв позициях 1080–1081. А ReiserFS Файловая система всегда ReIsErFsначиная с позиции 65588 (или ReIsEr2Fs, и т.д., в более поздних версиях). Другие файловые системы имеют похожие магические числа. Инструменты файловой системы проверяют наличие магического числа (и, возможно, других подсказок), чтобы убедиться, что вы случайно не запустили их для данных, которые организованы в формате, с которым они не могут иметь дело и могут повредить. Если вы измените магическое число в файловой системе, обычные инструменты, скорее всего, откажутся его трогать; инструменты ремонта могут быть более умными и рассматривать плохое магическое число как одну из вещей, которые могут быть сломаны.

Команда fileраспознает файлы на основе их магических чисел. Вы можете запустить, file -s /dev/sda1чтобы увидеть, что он думает о разделе /dev/sda1. Его решения основаны на базе данных, которая обычно находится в /etc/magicили /usr/share/misc/magic. Определенные команды могут использовать разные магические числа для распознавания форматов файлов, с которыми они могут справиться.


На Ubuntu, apt-get install source fileбудет тянуть, file-x.yy/magic/Magdir/filesystemsкоторый содержал именно ту информацию, которую искал вопрос (и я).
Ник Гарви

Не должно ли это быть file /dev/sda1?
Бобби

@ Бобби Нет, file /dev/sda1скажу только, что это узел устройства, он ничего не говорит о контенте. Вам нужно либо file </dev/sda1или file -s /dev/sda1.
Жиль "ТАК - перестань быть злым"

Ну ладно, у меня file < /dev/sda1не получается с текстом справки из файла (отсутствует параметр?), Но он -sпрекрасно работает. Спасибо.
Бобби

1
@ Бобби Ах, я вижу, я забыл один персонаж. Это file - </dev/sda1потому, что вы должны fileявно указать, чтобы читать из стандартного ввода. Спасибо, я исправлю это.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.