JBOD:如何Raid1不同容量的硬盘? Btrfs、ZFS?

JBOD:如何Raid1不同容量的硬盘? Btrfs、ZFS?

我选择了一些硬盘,容量为:

1 TB
500 GB
320 GB
250 GB

我想用它们制作 Raid1,从某种意义上说,任何数据的副本都将始终位于我拥有的四个驱动器中的两个上。问题是,所有驱动器都有不同的容量。过去,从 mdadm 迁移后,我一直运行正常的 Raid1 mdadm 2x 2TB、Btrfs 和 2x 2TB。我不介意再次使用 mdadm、Btrfs 或 ZFS,尽管我对此一无所知。

最适合我的文件系统或实用程序是什么,符合这个标准:

  1. 始终拥有两个文件副本,因此如果一个磁盘损坏,我不会丢失数据
  2. 拥有尽可能多的可用空间且仍满足第 1 点的标准

我应该用什么?我感觉 Btrfs Raid1 会处理这个问题,并且在所有四个硬盘驱动器上为每个文件提供两个副本,但我不确定。我的 Linux 运行在 AMD64 计算机上,内核为 5.10。

欢迎任何建议。

编辑 - 解决方案!

非常感谢您的所有回复!所以我继续进行 Btrfs Raid1 配置,这是一个耗时的过程,但非常轻松,因为我已经熟悉 Btrfs 并每天使用它。我认为 Raid1 不会损失任何物理空间,同时保持冗余比为 2。我使用了这个计算器:https://carfax.org.uk/btrfs-usage/

我的设备尺寸:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

在 Raid1 中,我现在存储了 719.5 GiB 数据,还有 241.6 GiB 可用空间,总共 961.1 GiB,与计算器显示的数据相符。我可以稍后随意添加/删除驱动器。惊人的。

我很想选择 Raid5,因为它的理论读取速度增益为 4 倍,而 Raid1 则为 2 倍。但我听说它目前还处于实验阶段,不建议日常使用,对吗?它在5.10内核上的状态如何,有人使用它并可以分享他们的经验吗?

在构建阵列、一一添加所有驱动器并将所有数据迁移到其中(我有备份)之后,我进行了全面清理,一切都很好:

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

很高兴!

编辑 - @Marcus Müller 的评论:

“备注:您确定需要这个吗?320 GB 和 250 GB 可能不是很新的驱动器 (...)”

你说得很对,这些都是非常旧的驱动器!我删除了过去几年我在 Btrfs Raid1 上使用的当前 2 个 2TB Seagate Barracuda Compute 驱动器,以放置这些随机的 4 个旧驱动器。 Barracudas 将连接到我的服务器,这需要完全的可靠性,我有 2 个 SSD 250GB 用于 / 那里 (Ext4 mdadm),以及 2 个 HDD TB 用于 /home 和 /var (Btrfs Raid1),并配有 ECC RAM。另外两个 Barracuda 将加入前两个,用于 Btrfs Raid1 模式或可能的 Raid10 或 Raid5。

4x 旧驱动器现在位于我的桌面上,它们包括:

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591

可靠性确实不是问题,我有备份,但我不希望太快出现任何令人痛苦的意外,因此 2.0 的基本冗余将节省我的麻烦,如果其中一个驱动器在一年左右内失效,我会再安装另一个驱动器一个或两个。

答案1

我只需在每个驱动器上拥有一个 LVM 物理卷即可:

pvcreate /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

然后创建一个卷组:

vgcreate myvolumegroup /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

最后,在其上创建一个逻辑卷,该逻辑卷具有每个块都有一个镜像的属性:

lvcreate --mirrors 1 -l100%FREE  -n myvolume myvolumegroup

恭喜!您现在拥有一个可以使用的块设备任何您想要的文件系统,例如 btrfs 或 XFS:

mkfs.xfs /dev/myvolumegroup/myvolume
mount /dev/myvolumegroup/myvolume /mnt

应该可以工作。


备注:你是吗当然你要这个? 320 GB 和 250 GB 可能不是很新的驱动器,通过将这些可能非常老化的驱动器包含在此处,您只能获得 (160+125)GB = 285 GB 的额外存储空间。

使用旧驱动器与您希望 RAID1 开始的原因有点相反:数据可用性。另外,请考虑使用 RAID5(man lvmraid可能会帮助您)。

答案2

使用它btrfs是因为与 ZFS 不同,它可以有效地处理不同大小的驱动器。您最终会得到所有驱动器的总容量大致除以二的结果(有 2 个副本用于冗余)。约 1TB。不包括透明压缩。

ZFS 只会创建一个容量为最小的设备 - 但如果有 4 个驱动器,您将创建两个镜像 vdev。例如,具有 1TB 和 500GB 的镜像 1 vdev 以及具有 320GB 和 250GB 的镜像 2 vdev。为了最大限度地减少浪费的空间,您可以对 1TB 和 320GB 驱动器进行分区,以便它们具有 500GB 分区和 250GB 分区来匹配其镜像驱动器。这将在压缩前为池提供总共 750GB 的容量(在类似 RAID1+0 的配置中)。这些驱动器上的剩余空间(500GB 和 70GB)可用于其他用途,例如您不关心的东西,因为它是从互联网下载并“备份在互联网上”的。

如果您负担得起,我建议您将 250GB 驱动器更换为另一个 1TB 驱动器。这对于 zfs 来说非常好,对于 btrfs 来说也非常好,因为在透明压缩之前,它们的容量都会增加到大约 1.3TB。 “浪费”的空间要少得多。

不要使用 LVM 或 mdadm 来执行 RAID-1/镜像,btrfs 本身可以做到这一点 - 并且它会破坏使用 btrfs 等纠错文件系统的大部分目的。

快照和透明压缩等功能仍然有效,但您将失去这些文件系统纠正错误的能力,因为您实际上只为其提供了一个驱动器。

如果您愿意,可以在 ZFS 或 btrfs 下使用软件或硬件 raid,但 a) 不需要,b) 这不是一个好主意,事实上这是一个糟糕的主意。它的工作量更大,设置起来也更复杂,删除了一个重要的功能,并且没有提供任何补偿性的好处。

如果您想使用 LVM 或 mdadm,请在它们之上使用ext4(或者更好的是)。xfs

顺便说一句,我仍然不认为我会相信 btrfs 用于 RAID-5/6,但它对于 RAID-1 或​​ RAID-10(如镜像)来说绝对没问题。

相关内容