Mdadm

使用 mdadm --create --assume-clean 擴展 RAID0?

  • August 1, 2018

我創建了一個 1 磁碟 RAID0 陣列,目的是最終向其添加更多磁碟,該陣列工作正常。我用(大約)創建了它:

$ mdadm --create /dev/md0 --raid-devices=1 --level=0 /dev/sdb -f

然後我添加了另一個磁碟:

$ mdadm --grow /dev/md0 --add /dev/sdc --raid-devices=2

並且,按照手冊,mdadm將陣列轉換為 RAID4 並開始重新同步。手冊說該陣列稍後將轉換回 RAID0。但是,/etc/mdstat說完全重新同步需要 2-3 天,我想知道是否可以停止陣列,殺死超級塊/dev/sdc,然後執行以下操作:

$ mdadm --create --assume-clean --verbose /dev/md0 --chunk=512 \
   --level=0 --raid-devices=2 /dev/sdb /dev/sdc

而不是等待無用的 RAID4 重新同步?

現在,數組狀態是:

$ mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : XXXXXXXXXXXXXXXX
    Raid Level : raid4
    Array Size : 11718754304 (11175.88 GiB 12000.00 GB)
 Used Dev Size : 11718754304 (11175.88 GiB 12000.00 GB)
  Raid Devices : 3
 Total Devices : 2

   Update Time : XXXXXXXXXXXXXXXX
         State : clean, FAILED, reshaping
Active Devices : 1
Working Devices : 2
Failed Devices : 0
 Spare Devices : 1

    Chunk Size : 512K

sistency Policy : resync

Reshape Status : 2% complete
 Delta Devices : 1, (2->3)

...

[root@centos7 ~]# mdadm --stop /dev/md0
[root@centos7 ~]# mdadm -E /dev/sdb
/dev/sdb:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x44
    Array UUID : 5978222a:8f2c320c:c7059108:c3d6dc41
          Name : centos7:0  (local to host centos7)
 Creation Time : Sat Apr 28 05:15:00 2018
    Raid Level : raid4
  Raid Devices : 3

Avail Dev Size : 23437508608 (11175.88 GiB 12000.00 GB)
    Array Size : 23437508608 (22351.75 GiB 24000.01 GB)
   Data Offset : 262144 sectors
    New Offset : 260096 sectors
  Super Offset : 8 sectors
         State : clean
   Device UUID : 9a75cd7e:bb469dab:2e0db890:69a68f54

 Reshape pos'n : 620094464 (591.37 GiB 634.98 GB)
 Delta Devices : 1 (2->3)

   Update Time : Wed Aug  1 06:12:00 2018
 Bad Block Log : 512 entries available at offset 8 sectors
      Checksum : d239a780 - correct
        Events : 608

    Chunk Size : 512K

  Device Role : Active device 0
  Array State : AA. ('A' == active, '.' == missing, 'R' == replacing)
[root@centos7 ~]# mdadm -E /dev/sdc
/dev/sdc:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x46
    Array UUID : 5978222a:8f2c320c:c7059108:c3d6dc41
          Name : centos7:0  (local to host centos7)
 Creation Time : Sat Apr 28 05:15:00 2018
    Raid Level : raid4
  Raid Devices : 3

Avail Dev Size : 23437508608 (11175.88 GiB 12000.00 GB)
    Array Size : 23437508608 (22351.75 GiB 24000.01 GB)
   Data Offset : 262144 sectors
    New Offset : 260096 sectors
  Super Offset : 8 sectors
Recovery Offset : 620094464 sectors
         State : clean
   Device UUID : ce6e93f9:729557dc:a1afc6a4:39b954f9

 Reshape pos'n : 620094464 (591.37 GiB 634.98 GB)
 Delta Devices : 1 (2->3)

   Update Time : Wed Aug  1 06:12:00 2018
 Bad Block Log : 512 entries available at offset 264 sectors
      Checksum : 5b8389b4 - correct
        Events : 608

    Chunk Size : 512K

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

將 1 磁碟 RAID-0(本質上是線性數據)擴展到 2 磁碟 RAID-0(條帶數據)涉及重塑/重新分配所有數據。相反,簡單地創建一個新的 RAID 會導致完全的數據失去。

因此,僅當 RAID 陣列上最初沒有數據時,重新同步才無用。顯然,沒有數據你可以做任何你想做的事。

如果您要從頭開始重新創建該 RAID 陣列,我建議您還在驅動器上放置一個分區表,然後使用分區。對於未分區的驅動器,很容易意外創建分區表,這樣做會損壞您的 RAID 元數據。

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