我了解 ZFS 更喜欢所有磁盘都具有相同的大小。但是,如果我有两个不同大小的磁盘(1TB 和 1.5TB),我希望有一定的冗余,而不是镜像。所以我将两个磁盘分成 5 个分区,每个分区大约 500GB 并创建一个“raidz”池……zfs 很高兴地答应了。它的设置是否真的增加了任何可靠性?想法是,如果磁盘没有完全损坏,并且只有一部分发生故障,我仍然可以访问数据吗?
我了解 ZFS 更喜欢所有磁盘都具有相同的大小。但是,如果我有两个不同大小的磁盘(1TB 和 1.5TB),我希望有一定的冗余,而不是镜像。所以我将两个磁盘分成 5 个分区,每个分区大约 500GB 并创建一个“raidz”池……zfs 很高兴地答应了。它的设置是否真的增加了任何可靠性?想法是,如果磁盘没有完全损坏,并且只有一部分发生故障,我仍然可以访问数据吗?
你所描述的有点俗气。
ZFS 需要大小和容量相同的完整磁盘。由于各种原因,这很关键,但也只是常识。
在您概述的情况下,您所做的只是增加环境的复杂性并增加您的风险。
让我们将其视为一般情况:
如果您在磁盘 1 上有 1 TB 的数据,您可以将其复制到磁盘 2,并且您可以承受丢失任一磁盘的后果。
如果磁盘 2 上有 1.5 TB 的数据,则只能将前 1 TB 的数据复制到磁盘 1。在这种情况下,如果磁盘 2 发生故障,您将丢失数据。
ZFS 功能非常强大,但作为一般规则,根据上述两点,混合磁盘设置很愚蠢并且不是超级有用。如果你关心可靠性和冗余,假设第二个磁盘也只有 1TB。
从理论上讲,这种想法是正确的。只要您在 RAIDZ1 vdev 的单个设备上遇到错误,ZFS 就会通知您并纠正错误,假设其他设备没有错误。
现实中可能会有所不同的是:
基于这些观点,如果可靠性是您的主要目标,我建议不要这样做。假设硬件情况固定,我会执行以下操作之一:
copies = 2
如果您希望对较小的错误具有一定的弹性(与您的设置相比,整个磁盘故障只会杀死 2/5 或 3/5 的数据)