RAW пишет в VHD без монтажа - PullRequest
1 голос
/ 29 февраля 2020

Я знаю, что если вы смонтируете виртуальный жесткий диск (или другой формат виртуального диска), вы можете написать на него. Но как вы можете написать на VHD, не монтируя его? Есть ли хорошее программное обеспечение для использования?

Под сырым я имею в виду то, что предоставляет HDD Raw Copy Tool. Вы можете просто взять текстовый файл или другой файл и записать байты в нем точно на диск.

1 Ответ

0 голосов
/ 29 марта 2020

Для «фиксированного» VHD вы могли бы, как вы сказали: «просто взять текстовый файл или другой файл и записать байты в нем точно на диск». Фиксированные виртуальные жесткие диски - это просто образы дисков и нижний колонтитул 512 в конце. Пока вы не трогаете этот конечный нижний колонтитул, редактирование на уровне сырых блоков должно быть в порядке.

Для динамических c виртуальных жестких дисков или других разреженных представлений физического диска задача сводится к переводу смещений логического диска в "контейнер" смещений файла. В частности, для динамических c VHD вся длина диска делится на логические 2 МБ windows. Dynami c VHD - это, по сути, последовательность таких блоков по 2 МБ; ни в каком конкретном порядке. Значение: в образе Dynami c VHD окно диска размером 2 МБ потенциально может появиться после окна размером 2 МБ, которое на физическом диске физически находится перед первым окном размером 2 МБ. Отображение того, какой блок VHD соответствует тому, какое окно физического диска поддерживается в таблице размещения блоков. Записи BAT (в отличие от того, как блоки данных могут располагаться не последовательно) упорядочены и содержат смещение динамического c VHD-файла соответствующего блока данных контейнера.

Все, что нам нужно сделать, это найти: Смещение файла VHD "логического блока, в который нам нужно записать, используя запись для логического окна размером 2 МБ, присутствующего в BAT. Затем добавьте 512 к нему (т.е. пропустите растровое изображение сектора, которое предшествует каждому блоку). Смещение файла VHD, которое вы получаете в этот момент, является смещением, в которое вам нужно записать данные с учетом входного смещения логического диска. Вполне возможно, что BAT не имеет записи для блока логического диска, в который вам нужно записать. В таком случае вам нужно добавить новый блок данных [512 байт + 2 МБ] к динамическому c VHD, обновить запись BAT, указав начало этого блока (сектор 512), а затем обновить динамический c заголовок и поле CR C нижнего колонтитула, так как мы обновили BAT (CR C поверх него). Помните, что эта схема действительна только для динамических виртуальных жестких дисков c, которые не связаны между собой. Это означает, что если есть связанный разностный дочерний VHD, то мы должны применить вышеописанный процесс к дочернему, а не к базовому. Отношения о том, кто является родителем, а кто ребенком, снова присутствуют в заголовке динамического c VHD. Для записи дочернему элементу дополнительно требуется обновить растровое изображение сектора размером 512 байт.

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

...