Я полностью восстановил данные моего коллеги в той же ситуации (мертвая материнская плата). Инструмент был dmsetup
в Linux. Если у вас не установлен Linux, используйте LiveCD, например, Knoppix.
Я не знаю, знакомы ли вы с Linux или нет. Мой ответ не будет охватывать все "очевидные" основы, которые могут вам понадобиться (например, mkdir
или sudo
), поэтому, если вы новичок в Linux, изучите, спросите в комментариях и т.д.
Здесь я предполагаю, что ваши два диска - /dev/sda
и /dev/sdb
. Переобразите мой пример к вашим реальным значениям.
Расследование дальше
Поскольку вы знаете, что 256 секторов равны 128 КиБ, размер сектора составляет 512 В. Вам необходимо знать, сколько секторов имеется на каждом диске. Вы сказали, что знаете порядок проезда; это не обязательно означает, что вы будете знать, какое устройство будет /dev/sda
при запуске Linux. Вызвать один за другим:
gdisk -l /dev/sda
gdisk -l /dev/sdb
Одна из этих команд должна показать вам разумную таблицу разделов, она указывает на первое устройство в вашем массиве (это знание будет полезно позже). Игнорируйте предупреждения, если таковые имеются. Каждая команда покажет вам также количество секторов для соответствующего диска. Эти два числа могут или не могут быть равны. Если они равны, умножьте число на 2 (как правило: на количество дисков); если они не равны, получите наименьшее число и умножьте на 2. В результате получается максимальное количество секторов, которые может использовать RAID0. Давайте назовем это N.
Но! В вашем массиве должно быть 256 секторов одного диска, затем 256 секторов другого и т.д., Равное их количество. Поэтому число секторов в вашем массиве должно делиться на 512. N может быть не делимым, поэтому вы должны выбрать ближайшее, не большее целое число, которое делится на 512. Работа с калькулятором или, например, bash (замените "N" на ваш фактический номер):
M=$((N/512*512))
echo $M
Это наиболее вероятное количество секторов в вашем массиве. Самое важное сейчас: это действительное число, даже если по какой-то причине фактическое число меньше этого.
Создание подключенного устройства
Следующая команда должна быть почти правильной для вас:
echo "0 $M striped 2 256 /dev/sda 0 /dev/sdb 0" | dmsetup create mydevice
Я написал "почти", потому что есть несколько вещей, которые нужно отрегулировать:
- замените
$M
на его правильное значение вручную, если вы использовали калькулятор вместо арифметики оболочки;
- измените порядок устройства и имена, чтобы соответствовать вашему случаю;
- вам, вероятно, понадобится
sudo
для запуска dmsetup
.
Аргументом echo
является карта вашего устройства, mydevice
- произвольное имя. На карте написано (по порядку), что новый фрагмент устройства, начинающийся с 0
сектора и покрывающий секторы $M
stripped
, собран из 2
устройств с размером полосы 256
секторов, устройства (по порядку) - /dev/sda
(начальный от его 0
сектора) и /dev/sdb
(также начиная с его 0
сектора).
Теперь у вас должен быть /dev/mapper/mydevice
доступный и готовый к использованию. (Я не уверен на 100%, что каждая реализация dmsetup
создает узлы в /dev/mapper/
; mydevice
должен где-то появляться.)
монтаж
Проверьте таблицу разделов, которая должна быть вменяемой и имеет смысл:
gdisk -l /dev/mapper/mydevice
Если есть MBR, а не GPT, вы можете получить предупреждение о том, что таблица вторичных разделов перекрывает последний раздел. Это потому, что gdisk
готов написать GPT. Вам не нужно делать это, и вы не будете. Игнорируйте предупреждение, если оно есть. Не о чем беспокоиться, если у вас уже нет GPT и не происходит дублирование.
Я видел людей, использующих dmsetup
или kpartx
для создания узла, связанного с разделом, который они хотят смонтировать. Или даже dd
чтобы "извлечь" раздел и смонтировать полученный файл. Ничего из этого не нужно. В настоящее время вы можете mount
раздел изнутри всего устройства благодаря опции offset
. Например, если раздел, который нужно смонтировать, начинается в секторе 63. (общее значение для системного раздела Windows XP), то вы монтируете его так:
mount -o offset=$((512*63)),ro /dev/mapper/mydevice /mnt/foo
Я настоятельно рекомендую сначала монтировать только для чтения (-o ro
) (или вообще, если вы просто хотите получить данные). Если в используемом вами программном обеспечении что-то пошло не так или если я допустил ошибку с какой-либо командой, вы можете повредить ваши данные, если вы не смонтируете их только для чтения. Это хорошая причина использовать опцию ro
, по крайней мере, пока вы не бродите по файловой системе, не читаете несколько файлов (то есть воспроизводите mp3
файлы и avi
-s, не читаете pdf
-s, не отображаете jpg
-s и т.д.) И подтверждаете, что все кажется с целью.
очищающий
Чтобы уничтожить /dev/mapper/mydevice
:
dmsetup remove /dev/mapper/mydevice
Конечно, вы должны сначала umount
его разделы.