mdadm的“备用”数字是什么意思?


8

我使用以下命令从六个硬盘驱动器创建了一个基于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=...

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

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


1
RAID 5使用一台设备的奇偶校验值。我不知道,这就是为什么我要对此发表评论,但是那可能与它有关吗?(mdadm --detail包括“备用”计数中的奇偶校验驱动器。)您可以通过制作没有热备用的RAID 6阵列来检查此情况。如果我的理论成立,它将也显示出备用数= 2。
2013年

2
在标准RAID术语中,备用磁盘只是一个不活动的,通常为空白的磁盘,可以在其他磁盘发生故障后自动启动以帮助重建阵列。奇偶校验磁盘不是备用磁盘。同样,备用磁盘的数量也不是在数据受到威胁之前可以发生故障的磁盘的数量。(该编号的定义不明确。四磁盘RAID 10最多可以处理2个磁盘故障,但也可能因2个磁盘故障而失效。)
200_success 2013年

4
您会看到两个备用磁盘,因为它仍在进行初始数组初始化-正在“重建”两个备用磁盘之一。一旦做到这一点(通过检查进度cat /proc/mdstat),我想你会看到预期的1
derobert

@derobert,您是正确的:初始重建完成后,我从mdadm --detail --scan中获取了ARRAY / dev / md0元数据= 1.2备件= 1 name = [...]和来自/ proc /的等效信息mdstat。
jstarek 2013年

Answers:


4

该输出是正确的。您创建了具有5个磁盘的RAID 5(其中只有4个磁盘将“用于”空间)。并且您添加了一个额外的备用驱动器。

因此,您实际上拥有一个RAID 5,该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页添加链接:您可以看到raid 5有6个磁盘,并且它指出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构建/同步完成。


1
我认为您链接到的Wiki页面上的关键信息是:“对于raid5,有一个优化:mdadm占用其中一张磁盘并将其标记为'spare';然后以降级模式创建阵列。” -与上述评论中derobert的观察非常吻合。除此之外,恐怕您误解了我的问题:我不想拥有5个驱动器的空间。提到2 TB只是一个观察。
jstarek 2013年

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将其中一张磁盘标记为'spare';然后以降级模式创建阵列。内核将备用磁盘标记为'rebuilding',并开始从'good'读取数据磁盘,计算奇偶校验并确定备用磁盘上应包含的内容,然后将其写入。”

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.