Mdadm

mdadm 的“備用”數字是什麼意思?

  • August 30, 2013

我使用以下命令從六個硬碟驅動器創建了一個基於 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 建構/同步。

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