mdadm - 從 RAID0 中刪除磁碟
所以,我想知道,是否可以使用 mdadm 執行以下操作:
- 我從 2 個磁碟上的 RAID0 配置開始:
sda
和sdb
.- 我想再向陣列添加一個磁碟,
sdc
並將所有數據sdb
移到其中。- 斷開連接
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 可以有一個熱備份。它被稱為“使用者”;)