ubuntu 上具有多个磁盘的新 ZFS 设置镜像与 raid

new ZFS setup mirror vs raid with multiple disks on ubuntu

我是 ZFS 的新手并且一直在做很多研究。我已准备好从硬件 RAID 切换到 ZFS。这是我拥有的驱动器列表:

我的主要目标是建立一个可供多个 (1-6) 用户快速读取访问的家庭系统。

选项 1:不太可用 space 但速度更快?

pool data
  vdev1 mirror
    2 2TB disks
  vdev2 mirror
    2 2TB disks
  vdev3 mirror
    2 2TB disks
  vdev4 mirror
    2 4TB disks
  vdev5 mirror
    2 4TB disks
  vdev6 mirror
    2 4TB disks

选项 2:(这接近于我现在所拥有的)

pool
  vdev1
    6 2TB drives as RAID6
  vdev2
    6 4TB drives as RAID6
maybe???
  vdev3 striped
    3 1.5TB disks

这些只会保存我想要快速访问的数据副本。根据我的阅读,如果 vdev 中的磁盘超过 5 个,性能会下降。是否有另一种组合可能更好地实现我想要做的事情?

我还有一个 120GB SSD 驱动器用于缓存或用作日志驱动器?或者,如果我将其拆分并使用不同的分区作为 vdev,则可能两者兼而有之?

您应该使用的配置完全取决于您的用例。对于家庭设置(没有 VM、没有数据库等),除了可能使用 SSD 的方式外,您可能无法分辨 latency/throughput 性能的差异,所以我个人会使用 RAID-Z 用于额外的存储容量。

也就是说,这些是 RAID-Z 和池中 HDD 磁盘镜像之间的主要权衡:

  • Space 用于校验信息。镜像导致 100% 的数据开销,RAID-Z 将比这少得多,每组数据块有一个或多个奇偶校验块。您可以使用各种 RAID-Z 选项来提高或降低此值——有关详细信息,请参阅 this blog post from one of the creators of ZFS
  • 冗余。 raidz1 可以承受一个磁盘故障,但您可以使用 raidz2+ 承受多个故障。使用镜像,理论上您可以丢失一半的池,但最坏的情况是仅丢失 2 个驱动器可能会清除大量数据。
  • 性能特征:延迟、吞吐量、磁盘故障后的重新同步时间以及重新同步期间的性能都会因您的池配置而异。 (如果你对这些没有严格的要求,我不会太担心它。resilvers 和 resilvers 期间的性能是最不同的东西,无论如何这些都是相当罕见的事件。)

关于SSD的使用方法,对于大多数用例来说,拆分可能是最好的选择:

  • 如果同步写入延迟很重要,您应该配置一个 SLOG 设备。您可能不需要超过几个 GiB,因为写入那里的数据很快就会刷新到主池。
  • 如果您需要非常好的读取延迟,您应该配置一个 L2ARC 设备。由于您的 SSD 与整个池相比非常小,因此您需要有一个适合 SSD 的工作集才能从中获得最大的提升。