從失敗且可能部分覆蓋的 mdadm raid1 中恢復數據
我有一個故障硬碟(我們稱之為
sda
),其中包含一個 1.5 TB 分區(我們稱之為sda3
)。還有另一個磁碟 (sdb
),它也有一個 1.5 TB 的分區 (sdb1
)。兩者都曾經是使用元數據版本 1.2 的 mdadm 1 級 RAID 的一部分。在這個 RAID 分區內(我們稱之為 idmd5
),有一個 LUKS 加密容器(我們稱之為md5_uncrypted
)。這個容器應該包含一個 ext4 分區。在 2012 年 8 月 10 日左右的某個時間,我以某種方式重新啟動了
sdb1
失去的 RAID 陣列,甚至沒有註意到這一點。當我昨天(三個月後)想更換 RAID 時,我開始複製數據,sdb1
直到我意識到它已經過時了。於是我看了一下舊的sda3
。錯誤地,我跑mdadm --create
而不是mdadm --assemble
重新啟動md5
,只有sda3
可用。因此,我忽略了所有警告並mdadm --create
繼續。cryptsetup
不喜歡新 RAID 的內容。mdadm --create
如果使用相同的元數據版本,我實際上並沒有認為會損壞數據?嗯,顯然它做到了。我比較了和的前 20 MB,
sda3
並sdb1
註意到它們從大約 8 MB 開始是相等的。所以我將前 8 MB 複製sdb1
到sda3
(我有舊的前 20 MB 的備份sda3
)並嘗試組裝md5
(只有一個驅動器,sda3
)。不幸的是,這給了我一個錯誤:failed to add /dev/sdb1: Invalid argument
我還嘗試使用
sdb1
新mdadm --create
d上的 LUKS 標頭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 上創建的陣列?
sdb1 和 sda3 上 luks 標頭 {‘L’,‘U’,‘K’,‘S’,0xba,0xbe} 的不同偏移量可以解釋 luks 卷中的垃圾。