假设以下驱动器设置(使用 ZFS):
控制器 1 驱动器 1 驱动器 4 驱动器 7 驱动器 10 控制器 2 驱动器 2 驱动器 5 驱动器 8 驱动器 11 控制器 3 驱动器 3 驱动器 6 驱动器 9 驱动器 12
VDEV 设置:
vdev1:驱动器 1、驱动器 2、驱动器 3 vdev2:驱动器 4、驱动器 5、驱动器 6 vdev3:驱动器 7、驱动器 8、驱动器 9 vdev4:驱动器 10、驱动器 11、驱动器 12
将所有 vdev 添加到同一个 zpool 是否更好(为了可靠性),还是有单独的 zpool(每个 vdev 一个)?此外,如果我们丢失了一个 vdev,我们会丢失整个阵列吗?我们不需要将所有存储容量放在一个地方 - 从存储的角度来看,较小的 zpool 会更好。
更新:对于 3dinfluence 关于启动池的问题,它将位于 RAID1 集上。我不喜欢将操作系统和我的多 TB RAID 阵列混在一起。
答案1
ZFS 的工作方式是,池内有 RAID 集或组。要扩展容量,您必须向池中添加相同 RAID 级别的其他组。然后,IO 会被剥离到 zpool 内所有具有可用块的组中。因此,具有大量小磁盘集的 zpool 速度快且可用性高。
因此,我建议您将所有驱动器放在一个池中,作为 3 个磁盘 raidz 组或 6 个 2 驱动器镜像组。
Raidz 选项
- ZFS 池
- raidz 驱动器 1、驱动器 2、驱动器 3
- raidz 驱动器 4、驱动器 5、驱动器 6
- raidz 驱动器 7、驱动器 8、驱动器 9
- raidz 驱动器 10、驱动器 11、驱动器 12
优点
- 这将使您的设置能够承受控制器故障。
- 它还会将您的 IO 分散到池中的所有 4 个组,从而进一步提高吞吐量。
镜像选项
- ZFS 池
- 镜像驱动器 1、驱动器 2
- 镜像驱动器3、驱动器4
- 镜像驱动器5、驱动器6
- 镜像驱动器 7、驱动器 8、
- 镜像 Drive9、Drive10
- 镜像驱动器 11、驱动器 12
优点
- 这将使您的设置能够承受 1 个控制器故障。
- 它还会将您的 IO 分散到池中的所有 6 个组,这可能会更快。
缺点
- 您将损失驱动器原始容量的 50%。
答案2
我同意 3dinfluence 的建议。但是,我认为更好的解决方案是使用 RAID-Z2(类似于 RAID6;即两个“奇偶校验”磁盘而不是一个)和两个池,如下所示:
- raidz2 #1:1,4,2,5,3,6
- raidz2 #2:7,10,8,11,9,12
现在,如果单个磁盘发生故障,您仍然有剩下一个“奇偶校验”磁盘(相比之下,RAID-Z 会丢失所有冗余信息)!如果您使用高容量硬盘,这可能是一个好主意,因为 ZFS 重新同步(填充替换磁盘,即在新磁盘上重新创建冗余信息)可能需要很长时间,并且您的数据在此期间处于危险之中 - 如果您使用 RAID-Z。(单个控制器故障不会导致 RAID-Z2 池崩溃 - 但在这种情况下冗余会丢失。)
另一个重要问题:你还应该考虑备用磁盘- 特别是如果你决定使用 RAID-Z,因为单个磁盘故障将使你的数据处于危险之中,直到你更换故障磁盘(磁盘很容易在周五晚上出现故障,这意味着您可能整个周末都没有冗余!)
考虑到备用磁盘问题,您甚至可能想要使用以下配置:
- 突袭2 #1:1,4,2,5,3
- raidz2 #2:7,10,8,6,9
- 备用磁盘:11,12
此配置将是更安全与相当总容量损失较小。