我有一个失败的硬盘(我们称之为sda ),其中包含1.5 TB的分区(我们称之为sda3 )。 还有另一个磁盘( sdb ),它也有一个1.5 TB的分区( sdb1 )。 两者都是使用元数据版本1.2的mdadm 1级RAID的一部分。 在这个RAID分区(我们称之为id md5 )里面有一个LUKSencryption容器(我们称之为md5_uncrypted )。 这个容器应该包含一个ext4分区。
在2012年8月10 sdb1某个时间,我以某种方式重新启动了RAIDarrays,但是sdb1丢失,甚至没有注意到这一点。 当我想在昨天(三个月后)更换RAID时,我开始从sdb1复制数据,直到意识到它已经过期。 所以我看了一下老sda3 。 错误的是,我运行mdadm --create而不是mdadm --assemble重新启动md5只有sda3可用。 因此,我忽略了所有警告,并让mdadm --create继续。 cryptsetup不喜欢新的RAID的内容。 如果使用相同的元数据版本,我实际上并不认为mdadm --create会损坏数据? 那么,显然是这样。
我比较了sda3和sdb1的前20 MB,并注意到它们的起始大小约为8 MB。 所以我复制了第一个8 MB的sdb1到sda3 (我有一个旧的前20 MB sda3备份),并试图组装md5 (只有一个驱动器, sda3 )。 不幸的是,这给了我一个错误:
failed to add /dev/sdb1: Invalid argument
我也尝试过使用刚创buildmdadm --create上的sdb1的LUKS头文件mdadm --create d sda3 ,这个cryptsetup幸运(当然),但是它包含了垃圾。
我的问题是:是否有机会恢复sda3至less一些数据? 由于我有三个月前的状态,所有事情都会有帮助,甚至只是一个文件列表,或者一个修改date的文件列表。
编辑:
# 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)
首先,如果你有一个备用的硬盘我强烈build议镜像sda3,只是与镜子一起工作。
mdadm – 使用相同的选项创build应该不会损坏数据,除非在最初创build数组的版本和当前版本之间未更改未指定选项的默认值。
你有没有比较sdb1和sda3上的超级块与mdadm –examine?
除非你已经添加/更改/删除密钥,那么头部标题应该是相同的。 您是否尝试将sdb1数组中的luksHeaderBackup还原到sda3上创build的数组?
在sdb1和sda3上,path标题{'L','U','K','S',0xba,0xbe}的不同偏移量将解释luks音量中的垃圾。