我构建了一个包含三个驱动器的 RAID 设置,两个 1.5 TB(sdb 和 sdd)和一个 3 TB(sdc)。我的方法是将两个 1.5 TB 驱动器组合成一个 RAID0 驱动器 (md3),并使用 3 TB 驱动器 (sdc) 和 RAID0 阵列 (md3) 创建 RAID1 镜像 (md2)。这一切都有效。
问题:每当我重新启动计算机时,RAID1 阵列 (md2) 都只能看到一个活动驱动器 (sdc),即使 RAID0 阵列 (md2) 正确启动也是如此。每次我都必须手动重新添加 md2 阵列。发生了什么?有没有办法让系统在组装 md2 之前组装 md3?
我已经有了带 sdc 的 md2 驱动器。一般来说,我运行了以下命令(大约):
mdadm --create --verbose /dev/md3 --level=stripe --raid-devices=2 /dev/sdb /dev/sdd
mdadm /dev/md2 --add /dev/md3
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
我还在 mdadm.conf 文件中添加了“DEVICE 分区容器 /dev/md3”。这一切都在 Debian 6.0.8 上。
更多信息:重新启动后,/proc/mdstat 读取(编辑了 md0 和 md1 信息):
Personalities : [raid0] [raid1]
md3 : active raid0 sdb[0] sdd[1]
2930274304 blocks super 1.2 512k chunks
md2 : active raid1 sdc[4]
1415577600 blocks super 1.2 [2/1] [U_]
unused devices: <none>
看起来 md3(RAID1 阵列)已经忘记了 md2。
启动过程中也有一些可疑的事情。
dmesg | grep -i 'md2\|md3\|raid'
[ 2.537001] md: raid0 personality registered for level 0
[ 2.539298] md: raid1 personality registered for level 1
[ 2.620402] md: md2 stopped.
[ 2.623636] raid1: raid set md2 active with 1 out of 2 mirrors
[ 2.623655] md2: detected capacity change from 0 to 1449551462400
[ 2.625028] md2: unknown partition table
[ 2.914801] md: md3 stopped.
[ 2.919365] raid0: looking at sdb
[ 2.919368] raid0: comparing sdb(2930274304)
[ 2.919370] raid0: END
[ 2.919371] raid0: ==> UNIQUE
[ 2.919372] raid0: 1 zones
[ 2.919373] raid0: looking at sdd
[ 2.919374] raid0: comparing sdd(2930274304)
[ 2.919376] raid0: EQUAL
[ 2.919377] raid0: FINAL 1 zones
[ 2.919380] raid0: done.
[ 2.919381] raid0 : md_size is 5860548608 sectors.
[ 2.919382] ******* md3 configuration *********
[ 2.919397] md3: detected capacity change from 0 to 3000600887296
[ 2.921296] md3: unknown partition table
[ 3.244104] raid1: raid set md1 active with 2 out of 2 mirrors
[ 3.468709] raid1: raid set md0 active with 2 out of 2 mirrors
答案1
我的方法是将两个 1.5 TB 驱动器组合成 RAID0 驱动器 (md3),并使用 3TB 驱动器 (sdc) 和 RAID0 阵列 (md3) 创建 RAID1 镜像 (md2)。这一切都有效。
您的方法比使用 RAID-10 更容易丢失数据。条带中的磁盘之一丢失,另一个磁盘无用。这就是为什么人们通常倾向于使用镜像条带,而不是条带镜像。
此外,最好不要使用嵌套 RAID,它会带来不必要的开销。Linux 软件 RAID 支持奇数个磁盘上的 RAID-10。因此,您可以在 2 个或所有 3 个磁盘上为启动分区创建一些 RAID-1,然后将 3 个磁盘组合成 RAID-10。是的,除了 RAID-10 之外,您还会剩下一些空间,但至少您将拥有一个相当不错的 RAID-10。剩余空间可用于存放不重要的数据。
更新。:实现类似设置的最简单方法是使用 LVM-2 的功能,即剥离或镜像物理磁盘上的逻辑卷。
答案2
事实证明解决方案非常简单:确保在 md2 之前汇编 md3。此说明专门针对 Debian 6。
在 /etc/mdadm/mdadm.conf 中,按您希望组装的顺序放置驱动器。在此示例中,ARRAY /dev/md3 metadata=1.2 ARRAY /dev/md2 metadata=1.2
运行“update-initramfs -u”。这是我之前所缺少的!
现在,计算机启动时,会先组装 md3,然后再组装 md2。以前,它会先组装 md2,但会因为找不到 md3 而失败。