Software-Raid
在 md raid 中失去了超級塊
Red Hat Linux 5 上的問題。
由於某些通信錯誤,我們環境中的兩個 LUN 從 1.2 TB 擴大到 1.7 TB。
現在,在重新啟動後,mdadm 找不到再次建構陣列的超級塊。
通用格式(稱為 0.90 版)有一個 4K 長的超級塊,並寫入一個 64K 對齊的塊,該塊從設備末尾開始至少 64K 且小於 128K(即獲取超級塊的地址)設備的大小縮小到 64K 的倍數,然後減去 64K)。
我找到了一些舊文件:
# mdadm -D /dev/md0 /dev/md0: Version : 0.90 Creation Time : Tue Jul 10 17:45:00 2012 Raid Level : raid1 Array Size : 1289748416 (1230.00 GiB 1320.70 GB) Used Dev Size : 1289748416 (1230.00 GiB 1320.70 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Wed Apr 17 15:03:50 2013 State : active Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : 2799bd51:67eb54d2:1fcd3c90:293311a1 Events : 0.39 Number Major Minor RaidDevice State 0 253 10 0 active sync /dev/dm-10 1 253 11 1 active sync /dev/dm-11 # fdisk -l /dev/dm-10 /dev/dm-11 Disk /dev/dm-10: 1320.7 GB, 1320702443520 bytes 255 heads, 63 sectors/track, 160566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-10 doesn't contain a valid partition table Disk /dev/dm-11: 1320.7 GB, 1320702443520 bytes 255 heads, 63 sectors/track, 160566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-11 doesn't contain a valid partition table
只需執行
mdadm --build -l1 -n2 /dev/md0 /dev/dm-10 /dev/dm11
即可取回您的數據。在執行此操作之前驗證設備是否正確(或使用 /dev/mapper 中的別名)!
此外,如果您的核心已經使用(或正在使用)這些設備之一,數據將不一致。您應該將第二個設備設置為退化 1.2 陣列,複製數據,開始使用新的退化 RAID,並將第一個磁碟添加到其中。如果您沒有目前備份,請在嘗試此操作之前讓您知道要做什麼。
(無論如何,切換到 1.2 是個好主意,因為 1.2 RAID 超級塊可以防止此類問題。)
如果是 0.90 superblock 的 RAID 1,你應該可以直接掛載而不使用 RAID 層。數據在磁碟的開頭沒有偏移,所以應該沒有問題。為以防萬一,請使用只讀掛載選項或只讀循環設備進行實驗。
如果可行,最簡單的方法是使用另一個磁碟從頭開始創建一個新的 RAID(最好是 1.2 元數據,這樣可以避免這個問題並且不會受到 2TB 的限制),複製數據,然後完成後,將您從中複製的磁碟添加到新的 RAID。