在 Ubuntu 上为多个驱动器设置 zfs 冗余

在 Ubuntu 上为多个驱动器设置 zfs 冗余

目前,我有一个 Ubuntu 服务器设置,其中有 2 个 4TB 磁盘,每个磁盘都带有 ext4,采用 RAID 1(不使用 zfs)。我希望在驱动器发生故障时具有完全冗余。

我正在为机器添加另外 2 个 4TB 驱动器。我以后可能会再次这样做,所以我想我应该切换到 zfs 来支持这一点。

我读到一些指南说可以使用 zfs 进行条带化和镜像,我认为这就是我想要的方式。

通常我会将驱动器分成两对,然后对这两对进行 raid 以获得快速冗余的“8tb”驱动器。

我如何在 zfs 中实现这一点?这样是否可以轻松添加更多驱动器?

答案1

配置起来非常容易(分行使得结构更容易看清):

# zpool create <poolname> \
    mirror <disk1> <disk2> \
    mirror <disk3> <disk4>

这将创建一个具有两个条带的池,每个条带都是两个磁盘之间的镜像。这是一个非常灵活的设置(易于添加新驱动器,易于理解)。如果将来要添加另一个镜像,只需执行以下操作:

# zpool add -n <poolname> \
    mirror <disk5> <disk6>
would update '<poolname>' to the following configuration:
  <poolname>
    mirror
        <disk1>
        <disk2>
    mirror
        <disk3>
        <disk4>
    mirror
        <disk5>
        <disk6>

(使用选项-n首先进行试运行并打印池配置供您检查,我始终建议这样做,以避免事后难以/不可能撤消的错误配置!)

但是请注意,这种设置是“低效的”,因为它只担保一个磁盘故障时的数据安全性:只有当两个故障发生在不同的条带上时,您才可以保证数据安全,这种情况在双磁盘故障场景中约占 67%。此外,冗余数据仍会占用 50% 的池空间。

有一种灵活性较低的 ZFS 专用 RAID 格式,称为 RAID-Z,它允许您将所有磁盘集中起来并获得有效的数据保护。(我说灵活性较低是因为将来很难向池中添加更多磁盘,尽管目前正在开发该功能。)有raidz1两种raidz2变体,无论哪个磁盘发生故障,您分别可以丢失最多 1 个或最多 2 个磁盘。对于 4 个大小相同的磁盘,变raidz2体仍将使用 50% 的存储空间来实现冗余,但可以保证您能够承受两次磁盘故障;变raidz1体将把您的冗余开销从 50% 减少到仅 25%,但只能保证您能够承受一次磁盘故障。

相关内容