具有不同驱动器大小的 ZFS 池

具有不同驱动器大小的 ZFS 池

我计划使用两个 2 TB 驱动器和两个 1 TB 驱动器设置 FreeNAS ZFS 池。我希望以某种方式实现数据冗余。我读到帖子似乎表明我的两个选择是使用 RAIDZ 每 2TB 驱动器丢失 1TB 或使用此命令(将数据冗余所需的空间加倍):

zfs set copies=2 poolname

有没有更好的方法来处理这个问题并实现更像 Drobo 的 Beyond RAID 或 Netgear 的 XRAID 的功能?或者,我可以将每个 2TB 驱动器划分为 1TB 分区并将两个分区都放入池中吗?

答案1

有一个更好的方法,创建一个由两个镜像组成的单个 3 TB 池。

zpool create test mirror disk1 disk2 mirror disk3 disk4

其中 disk1 和 disk2 是 1TB 磁盘,disk3 和 disk4 是 2 TB 磁盘。

编辑:

如果您想要最大化尺寸而不太关心性能或最佳实践,则可以用相同大小的分区(或切片)对所有驱动器进行分区,并创建一个具有 4 vdev RAIDZ 和 2 vdev 镜像的 4 TB 混合池。

zpool create -f test raidz d0p1 d1p1 d2p1 d3p1 mirror d0p2 d1p2

请注意,强制命令接受复制级别不匹配所需的“-f”选项。

答案2

来自 ZFS 管理指南:

“这些设备可以是预先格式化的磁盘上的单独切片,也可以是 ZFS 格式化为单个大切片的整个磁盘。”

所以是的,您可以在这 2TB 驱动器上创建两个 1 TB 分区,将它们用于 RAID-Z vdev,并将剩余空间用于非冗余存储。

但是,根据 ZFS 最佳实践指南,您可能会遇到性能下降的情况:

对于生产系统,请使用整个磁盘而不是切片作为存储池,原因如下:

  • 允许 ZFS 为具有写缓存的磁盘启用磁盘的写缓存。如果您使用的是具有非易失性写缓存的 RAID 阵列,那么这不是什么大问题,并且作为 vdev 的切片仍应能从阵列的写缓存中获益。

  • 对于 JBOD 附加存储,启用磁盘缓存后,可以将一些同步写入作为多个磁盘写入发出,然后进行一次缓存刷新,从而使磁盘控制器能够优化 I/O 调度。另外,对于缺乏对 SATA NCQ 或 SCSI TCQ 适当支持的系统,启用写入缓存后,主机可以与物理 I/O 异步发出单个 I/O 操作。

  • 当磁盘的切片上同时包含 ZFS 和 UFS 文件系统时,更换故障磁盘的恢复过程更加复杂。

答案3

这取决于您需要多少数据存储。您可以使用 RAID 1 创建两个池,每个池 1TB 和 2TB。如果不行,看看您是否可以获取大小相同的磁盘并尝试 RAID 1+0 或 RAIDZ。

相关内容