Mdadm

mdadm - 從 RAID0 中刪除磁碟

  • July 10, 2014

所以,我想知道,是否可以使用 mdadm 執行以下操作:

  1. 我從 2 個磁碟上的 RAID0 配置開始:sdasdb.
  2. 我想再向陣列添加一個磁碟,sdc並將所有數據sdb移到其中。
  3. 斷開連接sdb

現在我只看到一個選項 - 我停止陣列,使用或任何其他塊複製工具複製sdb到並重新啟動陣列。sdc``dd

我錯過了什麼嗎?可以用 mdadm 做到這一點嗎?

首先:對於那些仍然相信“RAID0 沒有熱備件”的人。它可以有一個手動備用,由了解 RAID 級別和 mdadm 的人完成。mdadm 是軟體 RAID,所以它可以做很多有趣的事情。

歸功於Zoredache的想法!

所以,情況:

  • 你有兩個磁碟的 RAID0 陣列
  • 您想在不停機的情況下更換其中之一

如果停機時間可以接受,您總是可以使用 dd 製作磁碟的塊副本並重新組裝陣列,mdadm 就可以了。

解決方案:使用RAID4作為中間解決方案

RAID0 -> RAID4 -> RAID0

所以,如果你不記得 RAID4,那很簡單。它有一個奇偶校驗塊,但與 RAID5 不同,它不是分佈在整個陣列中,而是駐留在一個磁碟上。這就是重點,這很重要,這也是 RAID5 不起作用的原因。

您需要:另外兩個大小相同的磁碟,與您要更換的磁碟相同。

環境:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 2012 年 5 月 18 日
  • /dev/sdb - 從它開始,將替換它
  • /dev/sdc - 從它開始
  • /dev/sdd - 將臨時使用
  • /dev/sde - 將被用來代替 sdb

終極 RAID0 熱備 mdadm 指南 ;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
     2096128 blocks super 1.2 512k chunks

我們創建了 raid0 數組,它看起來很可愛。

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

這是我們的檢查點——如果結果有一點不同/dev/md0——我們就失敗了。

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

因此,我們將陣列擴展為 RAID4。我們還沒有添加奇偶校驗盤,所以讓我們來做吧。增長將是即時的——無需重新計算或重新計算。

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
     [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

我們已添加sdd為奇偶校驗磁碟。記住這一點很重要 - 第一行中的磁碟順序與第二行中的圖片不同步!

$$ UU_ $$ sdd首先顯示,但實際上它是最後一個,並且保存的不是數據,而是奇偶校驗。

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

我們已經使我們的磁碟 sdb 出現故障,以便在接下來的步驟中將其刪除。

sudo mdadm --detail /dev/md0

State : clean, degraded

   Number   Major   Minor   RaidDevice State
      0       0        0        0      removed
      1       8       32        1      active sync   /dev/sdc
      3       8       48        2      active sync   /dev/sdd

      0       8       16        -      faulty spare   /dev/sdb

詳細資訊向我們展示了第一個磁碟的移除,在這裡我們可以看到陣列中磁碟的真實順序。用奇偶校驗跟踪磁碟很重要,當回到 RAID0 時,我們不應該將它留在陣列中。

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb完全刪除,可以帶走。

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
     [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

我們添加了 sdb 磁碟的替換。現在我們開始:現在正在使用奇偶校驗恢復**sdb的數據。**親愛的。

md0 : active raid4 sde[4] sdd[3] sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

完畢。現在我們是完全安全的 - 來自 sdb 的所有數據都已恢復,現在我們必須刪除 sdd(請記住,它具有奇偶校驗)。

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

使sdd出現故障。

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

從我們的數組中刪除了 sdd。我們準備好再次成為 RAID0。

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
     2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
     [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

啊啊啊砰!

md0 : active raid0 sde[4] sdc[1]
     2096128 blocks super 1.2 512k chunks

完畢。讓我們看看 md5 校驗和。

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

還有問題嗎?所以 RAID0 可以有一個熱備份。它被稱為“使用者”;)

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