zfs 在一个池中混合 raid 级别

zfs 在一个池中混合 raid 级别

我读过“不建议在池中混合使用 RAID 类型”,暗示这是可能的。为什么不推荐呢?

在我的设置中,非常希望为一个池内的不同文件系统动态分配不同的 RAID-Z 级别,该设置由非常重要、重要和不重要的文件组成。

第二个问题是:如果磁盘开始出现故障,会发生什么?我知道,我将无法访问没有足够冗余的文件系统。但是,如果冗余的文件系统(具有足够的冗余来处理故障)嵌套在发生故障的文件系统中,该怎么办?它们还能用吗?怎么用?

我计划使用 ZOL 0.6.0.80 版本,它与 zpool 版本 28 和 zfs 版本 5 兼容。

答案1

您关于将重要文件存储在更安全的文件系统上的观点表明了您对 ZFS 如何在池中存储数据的想法是错误的。

如果您有多个 vdev,则所有文件系统的数据都会分布在所有的 vdev 上,您无法将文件系统分配给特定的 vdev,而是将池作为一个整体使用。

这意味着整个池的安全性永远取决于最弱的 vdev。如果您有一个由 5 个 radiz3 vdev 和一个磁盘 vdev 组成的池,那么该磁盘发生故障就会导致整个池瘫痪。

如果您想要多层次的安全,最好创建单独的池。

答案2

只是因为你并不意味着你应该...

如何将这些数据动态分配给所需的 RAID 集?

避免在池中使用 RAID 类型的原因是一致的访问时间/速度和可靠性。

您的顶级设备 vdev 最终会被条带化。ZFS 性能会随条带数量而变化。虽然您可以拥有 RAIDZ1 的 vdev 和 RAIDZ2 的 vdev,但如果将它们组合在一个池中,它们将被条带化在一起(例如,RAID0 跨它们)。您无法控制数据的写入位置或方式...

如果您有足够的磁盘来拥有不同的 vdev 和 RAID 类型,请将它们分成多个池。

那里一个功能,允许您设置文件副本数这样它们就可以存储在文件系统的不同部分。也许这更接近您的需要。

查看此资源来帮助您规划 ZFS 实施。

解释建议...

  • 不要在单个 vdev 中混合使用磁盘大小或速度
  • 不要在 zpool 中混合使用磁盘大小或速度
  • 不要在 zpool 中混合使用冗余类型 - 如果您执行镜像 vdev,则执行所有镜像 vdev,如果您执行 raidz2,则执行所有 raidz2
  • 不要在 zpool 中的 vdev 之间混合使用磁盘数量

相关内容