我必须说我已经在这个平台上找到了类似的问题,但是背景不同,所以我正在自己尝试。
我的想法是这样的:
我有 4 个磁盘,其中 3 个容量相同,第 4 个磁盘的容量是其他两个磁盘的两倍。我将在 RAID 5 配置中使用上述 3 个磁盘,然后在 RAID 1 配置中将它们与第 4 个磁盘一起使用。\
假设 3 个磁盘都是 250GB,第四个磁盘是 500GB,那么通过镜像我应该可以获得 500GB 的可用存储空间。
如果这是一个可行的想法,那么实施它是否有意义,或者有什么缺点?如果有的话,在 RAID 设置中使用这些磁盘的可能方法是什么?
PS:正如您可能想到的,我无意将此设置用作备份系统,我知道 RAID 不是备份解决方案!:)
答案1
使用硬件 RAID - 不可以:嵌套 RAID 级别仅在非常特殊的情况下受支持(即:RAID50 或 60)。
如果使用 Linux MD,它非常灵活,您可以轻松完成此操作。让我们看看我如何使用由(小)文件支持的循环设备来模拟它:
# create loopbacks - for testing only, you are going to use real disks
root@localhost:~/raid# truncate --size=250M disk1.img
root@localhost:~/raid# truncate --size=250M disk2.img
root@localhost:~/raid# truncate --size=250M disk3.img
root@localhost:~/raid# truncate --size=500M disk4.img
root@localhost:~/raid# losetup -f /root/raid/disk1.img
root@localhost:~/raid# losetup -f /root/raid/disk2.img
root@localhost:~/raid# losetup -f /root/raid/disk3.img
root@localhost:~/raid# losetup -f /root/raid/disk4.img
root@localhost:~/raid# losetup -a | grep -v snaps
/dev/loop8: [64768]:132175 (/root/raid/disk4.img)
/dev/loop6: [64768]:132150 (/root/raid/disk2.img)
/dev/loop7: [64768]:132173 (/root/raid/disk3.img)
/dev/loop5: [64768]:132147 (/root/raid/disk1.img)
# create first RAID5 device
root@localhost:~/raid# mdadm --create md127 -l 5 -n 3 /dev/loop5 /dev/loop6 /dev/loop7
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md127 started.
root@localhost:~/raid# mdadm --create md126 -l 1 -n 2 /dev/md127 /dev/loop8
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md126 started.
# show arrays
root@localhost:~/raid# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid1 loop8[1] md127[0] <--- this is the 2x ~500MB RAID1 one
506880 blocks super 1.2 [2/2] [UU]
md127 : active raid5 loop7[3] loop6[1] loop5[0] <--- this it the 3x ~250MB RAID5 one
507904 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
请注意,使用此嵌套的 RAID5+1 阵列,您最终将只剩下 500 GB 的可用空间。我会认真考虑使用 RAID6 而不是 4x 250GB 磁盘(除了丢失空间外,较大的磁盘可以用作较小的磁盘,没有问题),提供相同的可用 500 GB更好的可靠性(并且更大磁盘末尾可能还有另外 250 GB 未受保护的“暂存空间”)。
答案2
我将在 RAID 5 配置中使用上述 3 个磁盘,然后在 RAID 1 配置中将它们与第四个磁盘一起使用。
“奇特”嵌套 RAID 级别的操作风险会增加,而且硬件 RAID 不太可能支持您正在考虑的嵌套。简单的 RAID5 通常可以提供更好的弹性。此外,将所有四个磁盘放入 RAID5 阵列中可为您提供 3*250=750 GB 的可用存储空间。(我希望您的 3x 250 GB + 1x 500 GB 硬盘只是举例,我不会再使用那么旧的磁盘了。)
不过,我一般建议考虑 RAID6。如今的 HDD 非常大,重建需要相当长的时间,而且重建期间的任何读取问题都会导致阵列脱机。
此外,请确保您配置了媒体巡查(又称数据清理)。定期清理可防止软错误加重,并防止硬错误长时间未被发现。您肯定不希望在重建期间发现额外的硬错误。
答案3
@Ancool,欢迎加入!
作为 RAID 的替代方案,您可以考虑使用逻辑卷 - 如果您使用的是 Debian,请使用 安装它apt install lvm2
。我更喜欢它而不是 RAID,因为它非常方便,至少对于我管理系统的方式而言。原理很简单:
- 将磁盘/分区标记为物理卷:
# pvcreate /dev/sda
- 您可以对整个磁盘或分区执行此操作 - 将物理卷收集到一个或多个卷组中:
vgcreate vg00 /dev/sda /dev/sdb ...
- 创建逻辑卷:
lvcreate -L 100G -n var vg00
最后一个命令创建一个设备,/dev/vg00/var
它可以像任何磁盘设备一样进行格式化。
lvcreate
有大量选项 - 一些用于类似 RAID 的功能,尽管我从未使用过它们,并且您可以指定应在哪些物理卷上分配文件系统。在我看来,主要优点是您可以使用lvextend
(后跟适当的命令来扩展文件系统)来增加逻辑卷的大小 - 而且与固定分区不同,您不受要扩展的分区之后是否有分区的限制。
它可能不是您要找的,但请稍微研究一下 - 我认为每个使用 Linux 的人都应该至少了解 LVM;事实上,它们存在于所有 UNIX 中,因此值得了解。