zfs 6 存储磁盘 + usb 启动

zfs 6 storage disks + usb boot

我正在将我的 6 个磁盘组织到一个 ZFS 池中。由于我的主板 (supermicro) 可以处理 6 个 SATA,我想在外部 USB 记忆棒 (32Gb) 上安装操作系统 (centOS7),以便为 ZFS 利用最大数量的磁盘。

外部 USB centos 记忆棒工作得很好(目前),我的想法是我不太关心它,因为重要数据将在 ZFS 池中。这个对吗?或者 ZFS 会在 OS 上存储一些东西?理想情况下,如果 USB 记忆棒坏了,我应该可以用另一个替换它,并且 ZFS 池配置应该写入 ZFS 池本身。

有 6 个磁盘(每个 1Tb)并且知道池不会增长(我的意思是我不能有更多的 SATA,除非我投资 $$),您建议的最佳配置是什么?当然,我担心冗余,我相信我应该镜像 3 个磁盘.. 矫枉过正?评论?

我认为将 OS 与数据池分开是有道理的。只需确保您有办法在 USB 记忆棒上重新创建 所有内容;否则,如果它丢失或损坏,你会很抱歉。

对于您的 ZFS 池配置,我看到了几个选项:

  • 6条条纹
    • 仅元数据冗余(无数据冗余)
    • 最佳存储容量
    • 接近最佳的读取性能
    • 最佳写入性能
  • 2条条纹,每条都是三向镜
    • 可以容忍任何 2 个磁盘丢失,有时最多可以容忍 4 个磁盘(当每个条带中有 2 个磁盘丢失时)
    • 66% 的可用存储浪费在冗余数据上
    • 最佳读取性能
    • 最大写入吞吐量慢 3 倍
  • raidz1 所有 6 个磁盘
    • 可以容忍丢失任何 1 个磁盘(恰好 1 个磁盘,不能再多)
    • ~20% 的可用存储被浪费在冗余数据上
    • 接近最佳的读取性能
    • 子条带更新的读取-修改-写入限制了最大写入吞吐量,可能是 2x
  • raidz2 所有 6 个磁盘
    • 可以容忍丢失任意2个磁盘(恰好2个磁盘,不能再多了)
    • ~35% 的可用存储浪费在冗余数据上
    • 接近最佳的读取性能
    • 子条带更新的读取-修改-写入限制了最大写入吞吐量,可能是 2x

除非您非常关心写入吞吐量(如果您正在考虑使用 3 向镜像,您可能不会这样做),否则我可能会建议 raidz2 用于大多数用例。您不太可能单独丢失 3 个驱动器(如果丢失,可能是自然灾害/电气问题等),并且 raidz2 是 "efficient",因为它存储了准确的冗余数据量在两次故障中幸存下来,但仅此而已,这意味着与使用两个三向镜像相比,您可以获得更多的存储空间来存储数据 (33% -> ~65%)。

除了两个 3 向镜像之外,您还可以使用其他 "inefficient" 数据冗余技术,例如 2x raidz1 每个 3 个磁盘。我没有提到任何这些,因为我认为它们的权衡不如我上面列出的那些。

要记住 RAID-Z 的一个缺点是,事后很难向现有池中添加更多磁盘。有一项正在为此开发的功能称为 "RAID-Z expansion",但我认为它还没有发布到任何地方。一旦发布,您应该能够在现有池上使用它,但它不允许您添加更多奇偶校验(只是更多数据磁盘)。

如今扩展 RAID-Z 池的最常见方法是将容量加倍,方法是在另一个 raidz2 组中添加 6 倍以上的驱动器,并在两个 RAID-Z 组之间条带化。或者,您可以使用 zfs send -> zfs receive 将您的数据复制到您喜欢的配置的新池中,这比向同一池中添加更多磁盘更灵活但也更复杂。