ZFS:RAIDZ 与具有重复块的条带

ZFS:RAIDZ 与具有重复块的条带

我打算从 FreeBSD 构建一个 ZFS 文件服务器。我最近了解到,一旦 RAIDZ udev 成为池的一部分,我就无法对其进行扩展。这是一个问题,因为我是家庭用户,可能每年最多添加一个磁盘。

但是,如果我将整个池的副本数设置为 3,然后将各个驱动器分开放入池中,结果会怎样?我读到过一些文章说,如果可能,副本将尝试分布在驱动器上。这有保证吗?我真的只是想以低成本保护数据免受位衰减和驱动器故障的影响。速度不是问题,因为它将通过 1Gb 网络传输,最多可以播放 720p 的播客。

如果出现单个驱动器故障,我的数据是否能得到保证?是否有我没有考虑到的事情?欢迎提供任何意见。

答案1

使用同一池中的 raidz vdev + 单个磁盘 vdev 不会保护您。您应该同时将两个磁盘(并镜像它们)添加到 zpool,这将覆盖一个磁盘故障。

原因是copies不能保证块最终会位于不同的磁盘上。

扩展 raidz vdev 的一个替代方法是,zfs send在添加磁盘并重建 raidz vdev 时将所有数据临时存储在某个地方,然后zfs receive再将其恢复。一旦超过几 TB,这将变得很困难,因为您需要大量空间来存储数据。

答案2

文件系统数据很可能是冗余的,尤其是在副本数=3 的情况下,这样您的数据将受到保护以免遭受位腐烂。

但是,由于无法用新磁盘替换故障磁盘,因此无法可靠地防止整个磁盘故障。即使在故障发生后您应该能够访问所有数据,但系统无法在重新启动后继续运行,因为您的池无法导入。

ZFS:丢失驱动器后如何恢复正确数量的副本?对于类似的问题。

答案3

很有趣,今天发现了这个。副本应保证由“副本”创建的 ditto 块存储在不同的 vdev 上: https://blogs.oracle.com/bill/entry/ditto_blocks_the_amazing_tape(参见“传播它们”部分)

因此,根据这篇博文,在具有多个可用副本的文件系统上,您将受到保护,以免出现磁盘完全故障。但是仅有的在这些文件系统上。

“在具有多个设备 (vdev) 的存储池中,事情会变得更加棘手。我们将每个块的副本分配到单独的 vdev 上”

相关内容