Software-Raid

在 md raid 中失去了超級塊

  • April 21, 2013

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。

引用自:https://unix.stackexchange.com/questions/72788