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

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?手册页指出它“指定初始阵列中备用(额外)设备的数量。”,但这里的情况似乎并非如此。

答案1

该输出是正确的。您创建了一个包含 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: 初始数组创建

更新:我决定在我的系统中创建一个 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 构建/同步完成。

答案2

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

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

相关内容