mdadm 的“备用”号码是什么意思?

jst*_*rek 9 software-raid 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
Run Code Online (Sandbox Code Playgroud)

我希望阵列有一个热备份,即 /dev/sdg1。但是,检查mdadm --detail显示 2 个备件:

# mdadm --detail --scan 
ARRAY /dev/md0 metadata=1.2 spares=2 name=...
Run Code Online (Sandbox Code Playgroud)

此外,如 所示的阵列大小为df2 TB,这仅对应于我使用的 500 GB 驱动器中的四个。

那么 的语义究竟是什么--spare-devices?手册页指出它“指定 [ies] 初始阵列中备用(eXtra)设备的数量。”,但这里似乎并非如此。

jst*_*rek 3

为了清楚起见,我将在这里汇总 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 获取其中一个磁盘并将其标记为“备用”;然后以降级模式创建阵列。内核将备用磁盘标记为“重建”并开始从“良好”读取磁盘,计算奇偶校验并确定备用磁盘上应该有什么,然后写入它。”

阵列初始化完成后,报告的备用数量将恢复到创建时选择的数量。