Mdadm

將錯誤的超級塊歸零後恢復 RAID5 陣列

  • July 25, 2013

我在 4 個磁碟 sda1、sdb1、sdd1 和 sde1 上有一個 raid5 陣列。sdd1 已被刪除,但它是一個健康的驅動器。在嘗試重新添加它時,我不小心將 sdb1 的超級塊歸零。

sdb1 的數據與 sda1 和 sde1 一致,只是缺少它的超級塊。

是否可以在該設備上恢復超級塊並重新組裝陣列(降級)而不會失去任何數據?

下面是“mdadm -E /dev/sd{a,d,e}1”的輸出。

我是否正確讀取了 sde1 是設備 0、sdd1 是設備 2 而 sda1 是設備 3 的輸出?那麼這意味著 sdb1 是設備 1。我可以使用以下命令重新創建陣列而不會失去數據:

$ sudo mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=4 /dev/sde1 /dev/sdb1 missing /dev/sda1

/dev/sda1:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x1
    Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
          Name : cowbell:0
 Creation Time : Sun Sep 25 20:24:46 2011
    Raid Level : raid5
  Raid Devices : 4

Avail Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
    Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
   Data Offset : 1024 sectors
  Super Offset : 8 sectors
         State : clean
   Device UUID : a0abbc72:f8bb1e2b:e8f81f5c:ed62a979

Internal Bitmap : 8 sectors from superblock
   Update Time : Tue Jul 23 18:05:09 2013
      Checksum : 9f46a56 - correct
        Events : 717820

        Layout : left-symmetric
    Chunk Size : 512K

  Device Role : Active device 3
  Array State : AA.A ('A' == active, '.' == missing)
/dev/sdd1:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x1
    Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
          Name : cowbell:0
 Creation Time : Sun Sep 25 20:24:46 2011
    Raid Level : raid5
  Raid Devices : 4

Avail Dev Size : 3907027053 (1863.02 GiB 2000.40 GB)
    Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
 Used Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
   Data Offset : 2048 sectors
  Super Offset : 8 sectors
         State : active
   Device UUID : 79f5632d:46d5c083:a1c0130c:b83b0654

Internal Bitmap : 8 sectors from superblock
   Update Time : Tue Jul 23 17:42:02 2013
      Checksum : a78d6f5b - correct
        Events : 717392

        Layout : left-symmetric
    Chunk Size : 512K

  Device Role : Active device 2
  Array State : AAAA ('A' == active, '.' == missing)
/dev/sde1:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x1
    Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
          Name : cowbell:0
 Creation Time : Sun Sep 25 20:24:46 2011
    Raid Level : raid5
  Raid Devices : 4

Avail Dev Size : 3907027053 (1863.02 GiB 2000.40 GB)
    Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
 Used Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
   Data Offset : 2048 sectors
  Super Offset : 8 sectors
         State : clean
   Device UUID : 6abd9160:c8ae382c:e6c73d01:37ac057b

Internal Bitmap : 8 sectors from superblock
   Update Time : Tue Jul 23 18:05:09 2013
      Checksum : 9f5d8fa6 - correct
        Events : 717820

        Layout : left-symmetric
    Chunk Size : 512K

  Device Role : Active device 0
  Array State : AA.A ('A' == active, '.' == missing)

除了備份之外,您可能還需要考慮dd在嘗試任何恢復之前只製作磁碟的完整副本。

話雖如此,看起來您正在正確的軌道上進行恢復而不會失去數據。您正在正確解釋設備編號。該命令看起來像您需要的。

在這裡查看我的答案- 這些東西對數據失去具有驚人的彈性,並且超級塊的破壞不會損害以相同幾何形狀重建陣列的能力(參見該答案中的測試 4)。

引用自:https://serverfault.com/questions/525965