我读过“不建议在池中混合使用 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 类型,请将它们分成多个池。
那里是一个功能,允许您设置文件副本数这样它们就可以存储在文件系统的不同部分。也许这更接近您的需要。
解释建议...
- 不要在单个 vdev 中混合使用磁盘大小或速度
- 不要在 zpool 中混合使用磁盘大小或速度
- 不要在 zpool 中混合使用冗余类型 - 如果您执行镜像 vdev,则执行所有镜像 vdev,如果您执行 raidz2,则执行所有 raidz2
- 不要在 zpool 中的 vdev 之间混合使用磁盘数量