У меня неисправный жесткий диск (назовем его sda
), который, помимо прочего, содержит раздел размером 1,5 ТБ (назовем его sda3
). Есть еще один диск (sdb
), который имеет раздел 1,5 ТБ (sdb1
) также. Оба раньше были частью RAID уровня 1 mdadm с использованием метаданных версии 1.2. Внутри этого раздела RAID (назовем id md5
), есть контейнер шифрования LUKS (назовем его md5_uncrypted
). Этот контейнер должен содержать раздел ext4.
Примерно 10 августа 2012 г. я каким-то образом перезапустил RAID-массив с помощью sdb1
пропал без вести и даже не заметил этого. Когда вчера (три месяца спустя) я хотел заменить RAID, я начал копировать данные из sdb1
пока не понял, что он устарел. Поэтому я взглянул на старую sda3
. По ошибке я сбежал mdadm --create
вместо того mdadm --assemble
начать заново md5
только с sda3
доступный. Соответственно, я проигнорировал все предупреждения и позволил mdadm --create
Продолжать. cryptsetup
не понравилось содержание нового RAID. Я действительно не думал mdadm --create
приведет к повреждению данных при использовании той же версии метаданных? Ну, видимо, так и было.
Я сравнил первые 20 МБ sda3
и sdb1
и заметил, что они равны начиная примерно с 8 МБ. Итак, я скопировал первые 8 МБ sdb1
к sda3
(У меня есть резервная копия старых первых 20 МБ sda3
) и попробовал собрать md5
(только с одним приводом, sda3
). К сожалению, это дало мне ошибку:
failed to add /dev/sdb1: Invalid argument
Я также пробовал использовать заголовок LUKS из sdb1
на недавно mdadm --create
d sda3
, который cryptsetup
с радостью сделал (конечно), но там был мусор.
У меня вопрос: есть ли шанс восстановить хотя бы часть данных из sda3
? Поскольку у меня состояние трехмесячной давности, все помогает, даже просто список файлов или список файлов с датами модификации.
Редактировать:
# mdadm --examine /dev/sdb1
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 76a25475:70aa881c:dd30cc93:bbae03b7
Name : ubuntu:0
Creation Time : Fri Mar 16 20:52:16 2012
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 2930272256 (1397.26 GiB 1500.30 GB)
Array Size : 1465129848 (1397.26 GiB 1500.29 GB)
Used Dev Size : 2930259696 (1397.26 GiB 1500.29 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : b9012482:afa502cf:7794f4fb:2a0da196
Update Time : Wed Nov 21 20:51:51 2012
Checksum : 4e54a07 - correct
Events : 15003
Device Role : Active device 1
Array State : .A ('A' == active, '.' == missing)
# mdadm --examine /dev/sda3
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 54ea031e:42367512:b6a8675b:91f2cb6f
Name : willow:5 (local to host willow)
Creation Time : Wed Nov 21 18:03:35 2012
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 2929999872 (1397.13 GiB 1500.16 GB)
Array Size : 1464999744 (1397.13 GiB 1500.16 GB)
Used Dev Size : 2929999488 (1397.13 GiB 1500.16 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : active
Device UUID : 93c70c36:3cc540a5:13817695:bd4f327c
Update Time : Wed Nov 21 18:03:35 2012
Checksum : 321ddb3e - correct
Events : 0
Device Role : Active device 1
Array State : .A ('A' == active, '.' == missing)
Во-первых, если у вас есть запасной жесткий диск, я бы настоятельно рекомендовал зеркалировать sda3 и просто работать с зеркалом.
mdadm --create с теми же параметрами не должен повреждать данные, если значения по умолчанию для неопределенных параметров не изменяются между версией, которая изначально создавала массив, и текущей версией.
Вы сравнивали суперблоки на sdb1 и sda3 с mdadm --examine?
Если вы не добавили / не изменили / не удалили ключи, заголовок luks должен быть идентичным. Вы пробовали восстановить luksHeaderBackup из массива sdb1 в созданный массив на sda3?
Различные смещения заголовка luks {'L', 'U', 'K', 'S', 0xba, 0xbe} на sdb1 и sda3 объясняют мусор в объеме luks.