mdadm 的“備用”數字是什麼意思?
我使用以下命令從六個硬碟驅動器創建了一個基於 mdadm 的 RAID 5:
# mdadm --create /dev/md0 --level=5 --raid-devices=5 \ /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 \ --spare-devices=1 /dev/sdg1
我希望陣列有一個熱備件,即 /dev/sdg1。但是,檢查
mdadm --detail
顯示 2 個備件:# mdadm --detail --scan ARRAY /dev/md0 metadata=1.2 spares=2 name=...
此外,如圖所示的陣列大小
df
是 2 TB,這相當於我的 500 GB 驅動器中只有四個正在使用。那麼 的語義究竟是什麼
--spare-devices
?手冊頁指出它“Specif$$ ies $$初始陣列中備用 (eXtra) 設備的數量。”,但這裡的情況似乎並非如此。
為了清楚起見,我將匯總 derobert 和 Alexandre Alves 提供的資訊以及我的一些進一步測試:
mdadm
的--spare-devices
參數確實作為手冊頁狀態起作用,即它定義了陣列中“熱備用”驅動器的數量。與普通 RAID 術語一樣,“熱備用”與 RAID 5 或 RAID 6 陣列中存在的額外驅動器沒有任何關係——它是一個額外的驅動器,旨在接管陣列中的驅動器失敗了。備用驅動器的數量在陣列創建時給出。稍後,可以使用
#mdadm --detail --scan
.但是,在基於 mdadm 的 RAID 5 的短暫初始化期間,有一個優化,在https://raid.wiki.kernel.org/index.php/Initial_Array_Creation中進行了描述,這使得額外的備用驅動器出現在該命令的輸出:
“對於 raid5 有一個優化:mdadm 獲取其中一個磁碟並將其標記為‘備用’;然後它以降級模式創建陣列。核心將備用磁碟標記為‘正在重建’並開始從‘好’讀取磁碟,計算奇偶校驗並確定備用磁碟上應該有什麼,然後寫入它。”
陣列初始化完成後,報告的備用數量會回到創建時選擇的數量。
那個輸出是正確的。您創建了一個包含 5 個磁碟的 RAID 5(其中只有 4 個將“用於”空間)。你添加了一個額外的備用驅動器。
所以你實際上有一個 RAID 5,它允許一個磁碟故障 + 一個額外的備用驅動器。
如果您想要的實際上是具有 6 個磁碟的 RAID 5 並且有 5 個磁碟的空間,那麼您需要將命令更改為:
mdadm --create /dev/md0 --level=5 --raid-devices=6 \ /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1
但在這種情況下,根據 RAID 5 的規範,您只能容忍一個磁碟故障。
編輯:從官方raid頁面添加連結:您可以看到帶有6個磁碟的raid 5,它聲明spare = 1: Initial Array Creation
**更新:**我決定在我的系統中創建一個raid 5,一旦陣列處於乾淨狀態,備用值就會消失:
Raid Devices : 4 Total Devices : 4 State : clean, degraded, recovering Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1
清潔狀態:
Raid Devices : 4 Total Devices : 4 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0
因此,正如 OP 評論一樣,在最初的 raid 5 創建期間,它具有備用驅動器,直到完成 raid 建構/同步。