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

Tim*_*ler 9 zfs freenas

我计划使用两个 2 tb 驱动器和两个 1tb 驱动器设置 FreeNAS ZFS 池。我想以某种方式拥有数据冗余。我读了这篇文章,似乎暗示我的两个选择是使用 RAIDZ 每 2tb 驱动器丢失 1tb 或使用此命令(这使数据冗余所需的空间加倍):

zfs set copies=2 poolname
Run Code Online (Sandbox Code Playgroud)

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

jll*_*gre 13

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

zpool create test mirror disk1 disk2 mirror disk3 disk4
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

zpool create -f test raidz d0p1 d1p1 d2p1 d3p1 mirror d0p2 d1p2
Run Code Online (Sandbox Code Playgroud)

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


小智 6

来自 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 文件系统时,更换故障磁盘的恢复过程会更加复杂。