Примечание: я пишу этот ответ после того, как ОП получил помощь через комментарии, испытания и ошибки. Имея в виду других пользователей, я делаю ответ более широким и чуть более общим.
Если эти два диска работают вместе, они могут быть
- зеркальный, в стиле RAID1;
- или сцепленный, в стиле JBOD;
- или полосатый, в стиле RAID0.
Случаи упорядочены, начиная с самого простого, чтобы иметь дело с. Я научу вас, как отличать их друг от друга и как с ними обращаться, чтобы в конечном итоге смонтировать разделы.
-o ro
Сначала следует выполнить монтаж, пока вы не убедитесь, что все правильно поняли. В некоторых случаях это mount
может быть успешным и дать вам доступ к искаженной структуре каталогов и / или зашифрованным файлам. Безумные данные и / или метаданные указывают, что вы не поняли это правильно. Монтирование только для чтения гарантирует, что вы не повредите изображения.
1. зеркальный, в стиле RAID1
В этом случае оба диска должны содержать одинаковые данные, если они исправны; они оба должны содержать одну и ту же действительную таблицу разделов. Только изображение, которое у вас есть, /dev/loop2
сообщает таблицу разделов. Это может быть потому, что
- они не были отражены в первую очередь,
- или эти ошибки, которые вы упоминали на других дисках, произошли там, где находится таблица разделов (в случае таблицы разделов DOS это MBR, то есть в самом начале номер сектора
0
).
Однако есть одна большая подсказка, которая делает RAID1 маловероятным в вашем случае: fdisk
говорит, что 976773168
на одном диске точно есть секторы, но последний сектор четвертого раздела - это 1953533951
. Это почти вдвое больше, это предполагает, что структура разделов появляется на двух не зеркальных дисках.
Но допустим, что ваши диски были в два раза больше, и приведенная выше подсказка не применима. Если вы считаете, что имеете дело с зеркальными дисками, работайте с полученным образом без ошибок, оставьте другое изображение в покое. Попробуйте смонтировать разделы так:
mount -o ro,offset=$((512*2048)) /dev/loop2 /mnt/partition1 mount -o ro,offset=$((512*31459328)) /dev/loop2 /mnt/partition2 mount -o ro,offset=$((512*31664128)) /dev/loop2 /mnt/partition3
и т. д. Вы можете даже не использовать, losetup
чтобы получить, /dev/loop2
но указать путь к файлу напрямую, mount
следует самостоятельно создать устройство цикла и обработать это просто:
mount -o ro,offset=$((512*2048)) /path/to/the/image2.raw /mnt/partition1
2. сцепленный, в стиле JBOD
Если диски, создающие JBOD, используют MBR для хранения таблицы разделов, она fdisk
будет найдена только на самом первом диске. Другие диски могут ничего не сообщать или какие-то безумные таблицы разделов; Вероятность получения таблицы разделов, которая выглядит нормально с не первого диска, очень мала, но даже тогда эта таблица разделов ничего не значит.
Если диски, создающие JBOD, используют GPT для хранения таблицы разделов, такие инструменты, как gdisk
, найдут первичную таблицу на самом первом диске, вторичную (резервную) таблицу на самом последнем.
У вас есть два изображения, одно из которых сообщает таблицу разделов DOS (т. Е. Таблицу разделов в MBR), а другое - отсутствие таблицы разделов. Если они создают JBOD, вы знаете, что тот, который соответствует, /dev/loop2
идет первым.
В вашем случае разделы 1 и 2 достаточно малы, чтобы полностью вписаться в первый диск JBOD. Вы можете попробовать смонтировать их с соответствующим смещением от подошвы /dev/loop2
. Если это даст вам доступ к здравым файловым системам, то вы будете знать, что JBOD, вероятно, является правильной настройкой. Для доступа ко всем разделам необходимо объединить изображения.
Этот мой ответ предоставляет способ объединения изображений без записи результата на диск. В вашем случае процедура может быть:
dmsetup create mydisk
- тип
0 976773168 linear /path/to/the/image2.raw 0
Enter - тип
976773168 976773168 linear /path/to/the/image1.raw 0
Enter - хит Ctrl+D
Полученное устройство должно быть /dev/mapper/mydisk
. Попробуйте смонтировать любой раздел из него с соответствующим offset=…
.
Чтобы уничтожить устройство, вызовите dmsetup remove mydisk
.
3. полосатый, в стиле RAID0
Аналогично JBOD, если диски, создающие RAID0, используют MBR для хранения таблицы разделов, они fdisk
будут найдены только на самом первом диске. Другие диски могут ничего не сообщать или какие-то безумные таблицы разделов; Вероятность получения таблицы разделов, которая выглядит нормально с не первого диска, очень мала, но даже тогда эта таблица разделов ничего не значит.
Если диски для сборки RAID0 используют GPT для хранения таблицы разделов, ситуация усложняется. В зависимости от того, насколько велик размер полосы, вы можете получить или не получить первичную таблицу разделов с самого первого диска, вы можете или не можете получить вторичную (резервную) таблицу разделов с самого последнего диска. Вы должны получить устаревшую MBR с самого первого диска (если только не произошла ошибка чтения).
У вас есть два изображения, одно из которых сообщает таблицу разделов DOS (т. Е. Таблицу разделов в MBR), а другое - отсутствие таблицы разделов. Если они создадут RAID0, вы знаете, что тот, который соответствует, /dev/loop2
идет первым. То, что вы не знаете, это размер полосы. В общем, нет твердого способа узнать это, вы должны попробовать общие ценности и проанализировать результаты.
Процедура чередования ваших изображений и создания виртуального устройства выглядит следующим образом:
dmsetup create mydisk
- тип
0 1953546336 striped 2 256 /dev/loop2 0 /dev/loop1 0
Enter - хит Ctrl+D
Полученное устройство должно быть /dev/mapper/mydisk
. Число 256 означает размер полосы 128 КиБ, и это должно быть правильно угадано. В общем, независимо от возможных проблем с GPT раньше dmsetup
, теперь gdisk -l /dev/mapper/mydisk
следует возвращать действительную таблицу разделов, если вы угадаете размер полосы справа. Если вы угадаете это неправильно, таблица разделов может быть или не быть действительной. Если он выглядит корректным, попробуйте смонтировать все разделы из него с соответствующими offset=…
значениями.
В вашем случае таблица разделов, безусловно, будет той, с которой вы получили /dev/loop2
.
Помните, что даже при неправильном предположении вы сможете смонтировать, но файлы будут зашифрованы. В этом случае umount
вызовите dmsetup remove mydisk
и повторите dmsetup create…
с другим значением вместо 256. Числа, которые нужно попробовать: 8, 16, 32, 64, 128, 256, возможно, другие степени 2. Если возможно, читайте файлы с проверяемым содержимым (носители, такие как MP3, делайте они играют без джиттера?) или формальной структуры (например, PDF-файлы, они открываются без ошибок?), чтобы определить, верны ли ваши предположения. Файлы, размер которых меньше правильного размера полосы, могут не показывать, что ваше предположение неверно, поэтому лучше использовать avi 700 МБ, а не просто текстовый файл размером в несколько КБ.
Чтобы уничтожить устройство, вызовите dmsetup remove mydisk
.