通过对不同大小的磁盘进行分区来提高可靠性?

pyt*_*152 8 zfs redundancy

我知道 ZFS 更喜欢所有具有相同大小的磁盘。但是,如果我有两个不同大小的磁盘(1TB 和 1.5TB),我希望有一定的冗余,但不是镜像。所以我把两个磁盘分成 5 个分区,每个分区大约 500GB 并创建一个“raidz”池……zfs 高兴地答应了。它的设置实际上会增加任何可靠性吗?我的想法是,如果磁盘没有完全损坏,并且只有一部分出现故障,我仍然可以访问数据吗?

eww*_*ite 5

你所描述的有点俗气。

ZFS 需要相同大小和功能的完整磁盘。由于各种原因,这很重要,但也只是常识。

在您所概述的情况下,您所做的只是增加了环境的复杂性并增加了风险。

  • @cat 因为 ZFS 认为您有五个主轴,而实际上您有两个。 (2认同)

use*_*391 3

我的想法是,如果磁盘没有完全损坏,而只是部分损坏,我仍然可以访问数据吗?

从理论上来说,这个想法是正确的。只要您在 RAIDZ1 vdev 的单个设备上遇到错误,ZFS 就可以通知您并纠正错误(假设其他设备没有错误)。

实际情况可能有所不同,有以下几点:

  • 错误可能跨越多个分区,因此两个或更多设备将受到影响,这可能会导致不可恢复的错误,甚至整个池丢失(取决于错误的位置和数量)。您可以使用 RAIDZ2 或 Z3 来稍微缓解这一问题,但问题始终存在。
  • 重新同步分区时,磁盘需要同时随机地对同一磁盘进行读取(2 次)和写入(1 次)。除非您使用具有顺序重新同步功能的 Solaris 11.3,否则这将非常非常慢。在完成重新同步过程之前,您很容易受到其他分区上错误的影响。如果您的重新同步时间较长,您遇到额外 URE 的机会就会增加。它还会给驱动器带来额外的负载,增加驱动器完全故障的可能性。
  • 想象一下,您的第三个分区(1.5TB 磁盘上的最后一个分区)显示出足够多的错误,足以降低池性能并要求更换。如果您无法添加另一个磁盘,则无法在不关闭/导出的情况下进行更换,即使如此,它也比平常更复杂。

基于这些观点,如果可靠性是您的主要目标,我建议不要这样做。假设硬件情况固定,我会执行以下操作之一:

  1. 使用镜像会损失 500GB,但获得简单的设置,并且将来易于扩展
  2. 如果您希望对较小错误具有一定的弹性,请使用两个单独的池copies = 2(与您的设置相比,整个磁盘故障只会杀死 2/5 或 3/5 的数据)
  3. 如果您想鱼与熊掌兼得,请使用 ZFS 以外的其他文件系统