Как мне смонтировать многодисковый Windows NTFS RAID/ логический диск в Linux?

У меня на рабочем месте два жестких диска по 500 ГБ от старого ноутбука с Windows. Мой начальник попросил меня скопировать содержимое на файловый сервер, если это возможно, с оговоркой, что никакие данные не могут быть потеряны.

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


Первое, что я сделал, это сделал изображения, используя ddrescue, Диск с таблицей разделов скопирован без ошибок, а другой диск потерял ~150 КиБ из-за ошибок. Изображения были смонтированы только для чтения /dev/loop1 а также /dev/loop2 с помощью losetup, fdisk -l показывает следующее:

Disk /dev/loop1: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/loop2: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x87afa6ad

Device       Boot      Start        End    Sectors   Size Id Type
/dev/loop2p1            2048   31459327   31457280    15G 27 Hidden NTFS WinRE
/dev/loop2p2 *      31459328   31664127     204800   100M 27 Hidden NTFS WinRE
/dev/loop2p3        31664128 1191071167 1159407040 552.9G  7 HPFS/NTFS/exFAT
/dev/loop2p4      1191071168 1953533951  762462784 363.6G  7 HPFS/NTFS/exFAT

Размеры разделов, по-видимому, позволяют предположить, что это RAID-массив или логический диск Windows, и быстрая проверка с помощью blkid показал, что типы дисков были isw_raid_member, Попытка собрать массив с mdadm -v --assemble /dev/md0 /dev/loop2 /dev/loop1 производится следующий вывод:

mdadm: looking for devices for /dev/md0
mdadm: Cannot assemble mbr metadata on /dev/loop2
mdadm: /dev/loop2 has no superblock - assembly aborted

Другие вещи, которые я пытался смонтировать диски или получить больше информации:

  • mount /dev/loop2 <mount point>: Не удалось с unknown filesystem type 'isw_raid_member'
  • mount -t с NTFS и exFAT: невозможно найти файловую систему
  • mount /dev/loop2p[1234]: Special device <dev> does not exist
  • mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/loop[21]: Говорится, что /dev/loop2 представляется частью массива raid 0 без устройств и с датой создания 00:00:00 1 января 1970 г.
  • mdadm -E /dev/loop[12]: Указывает, что на суперблоке md не обнаружено /dev/loop1 и распечатывает разделы и магическое число MBR aa55 за /dev/loop2
  • file -s /dev/loop1: печать /dev/loop1: data
  • file -s /dev/loop2: выплевывает блок текста, в основном говоря, что это загрузочный сектор DOS/MBR и дает необработанные числа для смещений / размеров разделов.
  • mount -t ntfs -o ro,offset=$((512*2048)) /dev/loop2 /mnt/partition1:

    NTFS signature is missing
    Failed to mount '/dev/loop3': Invalid argument
    The device '/dev/loop3' doesn't seem to have a valid NTFS
    

    Нет, я не опечатка 3, Понятия не имею, откуда это взялось.

Я также посмотрел на Восстановление вышедшего из строя программного RAID, но это похоже на то, что уже работающие Linux-массивы восстанавливаются в Linux (не говоря уже о том, что мне это не нравится).

Что я могу сделать, чтобы безопасно смонтировать эти образы?

1 ответ

Решение

Примечание: я пишу этот ответ после того, как ОП получил помощь через комментарии, испытания и ошибки. Имея в виду других пользователей, я делаю ответ более широким и чуть более общим.


Если эти два диска работают вместе, они могут быть

  1. зеркальный, в стиле RAID1;
  2. или сцепленный, в стиле JBOD;
  3. или полосатый, в стиле 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, вероятно, является правильной настройкой. Для доступа ко всем разделам необходимо объединить изображения.

Этот мой ответ дает возможность объединить изображения без записи результата на диск. В вашем случае процедура может быть:

  1. dmsetup create mydisk
  2. тип 0 976773168 linear /path/to/the/image2.raw 0 Войти
  3. тип 976773168 976773168 linear /path/to/the/image1.raw 0 Войти
  4. нажмите Ctrl + D

Полученное устройство должно быть /dev/mapper/mydisk, Попробуйте смонтировать любой раздел из него с соответствующим offset=…,

Чтобы уничтожить устройство, вызовите dmsetup remove mydisk,


3. полосатый, в стиле RAID0

Аналогично JBOD, если диски, создающие RAID0, используют MBR для хранения таблицы разделов, fdisk найдете его только на самом первом диске. Другие диски могут ничего не сообщать или какие-то безумные таблицы разделов; вероятность получения таблицы разделов, которая выглядит разумно с не первого диска, очень мала, но даже тогда эта таблица разделов ничего не значит.

Если диски для сборки RAID0 используют GPT для хранения таблицы разделов, ситуация усложняется. В зависимости от того, насколько велик размер полосы, вы можете получить или не получить первичную таблицу разделов с самого первого диска, вы можете или не можете получить вторичную (резервную) таблицу разделов с самого последнего диска. Вы должны получить устаревшую MBR с самого первого диска (если не происходит ошибка чтения).

У вас есть два изображения, одно из которых сообщает таблицу разделов DOS (т. Е. Таблицу разделов в MBR), а другое - отсутствие таблицы разделов. Если они создают RAID0, вы знаете, что соответствует /dev/loop2 идет первым То, что вы не знаете, это размер полосы. В общем, нет точного способа узнать это, вы должны попробовать общие ценности и проанализировать результаты.

Процедура чередования ваших изображений и создания виртуального устройства выглядит следующим образом:

  1. dmsetup create mydisk
  2. тип 0 1953546336 striped 2 256 /dev/loop2 0 /dev/loop1 0 Войти
  3. нажмите 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,

Другие вопросы по тегам