ZFS 池配置 - 需要建议

Sha*_*ace 3 performance zfs pool

我们有 20 个 2TB SATA 驱动器用于 ZFS 池。我对获得良好 I/O 性能的最佳方法提出了一些建议,同时能够提供一些冗余(我们希望实现的目标是在数据丢失之前发生 3 次磁盘故障)。

我对是否需要使用镜像或raidz 感到有些困惑。

这 20 个驱动器将插入 2 个 16 端口的 raid 控制器(每个控制器上 10 个)。也许我为每批 10 个磁盘创建硬件 raid 卷,然后在 zfs 中,然后镜像两个可用的 raid 卷,从而创建一个超级卷?

任何建议都会很棒。

eww*_*ite 6

使用 20 个磁盘,您有很多选择。我假设您已经有用于操作系统的驱动器,因此这 20 个磁盘将是专用数据驱动器。在我的Sun Fire x4540(48 个驱动器)中,我在镜像设置中分配了 20 个驱动器,在条带化 raidz1 配置中分配了 24 个驱动器(每个 raidz 6 个磁盘和 4 个条带化 vdev)。两个磁盘用于操作系统,其余磁盘是备用磁盘。

你用的是哪个控制器?您可能需要参考:ZFS SAS/SATA 控制器建议

如果可以,请不要使用硬件突袭。当驱动器作为原始磁盘提供给操作系统时,ZFS 会蓬勃发展。

您的 raidz1 性能随着 raidz1 组中条带数量的增加而增加。对于 20 个磁盘,您可以使用 4 个 raidz1 组,每个组由 5 个磁盘组成,或者 5 个组(每组 4 个磁盘)。后者的性能会更好。您在该设置中的容错能力将维持每组 1 个磁盘的故障(例如,在正确的条件下可能有 4 或 5 个磁盘可能发生故障)。

raidz1 或raidz2 组的读取速度相当于一个磁盘的读取速度。通过上述设置,理论上的最大读取速度将相当于 4 或 5 个磁盘(对于每个 vdev/raidz1 磁盘组)。

使用镜像设置可以最大限度地提高速度,但此时您会遇到控制器的带宽限制。您可能不需要那种速度,因此我建议将raidz1 和stripes 结合使用。在这种情况下,您可以为每个镜像对维持一个故障磁盘(例如,如果它们是正确的,则 10 个磁盘可能会发生故障)。

无论哪种方式,无论您采用哪种解决方案,都应该考虑热备件安排。可能有 18 个磁盘以镜像方式排列,带有 2 个热备件,或者带有 2 个热备件的 3 条带 6 磁盘 raidz1...

当我构建我的第一个 ZFS 设置时,我使用了 Sun 的这篇笔记来帮助理解 RAID 级别的性能......

http://blogs.oracle.com/relling/entry/zfs_raid_recommendations_space_performance

20 个磁盘的示例:

20 个磁盘镜像对。

  pool: vol1
 state: ONLINE
 scrub: scrub completed after 3h16m with 0 errors on Fri Nov 26 09:45:54 2010
config:

        NAME        STATE     READ WRITE CKSUM
        vol1        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c4t1d0  ONLINE       0     0     0
            c5t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c6t1d0  ONLINE       0     0     0
            c7t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c8t1d0  ONLINE       0     0     0
            c9t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c4t2d0  ONLINE       0     0     0
            c5t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c6t2d0  ONLINE       0     0     0
            c7t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c8t2d0  ONLINE       0     0     0
            c9t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c4t3d0  ONLINE       0     0     0
            c5t3d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c6t3d0  ONLINE       0     0     0
            c7t3d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c8t3d0  ONLINE       0     0     0
            c9t3d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c4t4d0  ONLINE       0     0     0
            c5t4d0  ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

20 个磁盘的条带化 raidz1,由 5 个磁盘的 raidz1 vdevs 的 4 个条带组成。

  pool: vol1
 state: ONLINE
 scrub: scrub completed after 14h38m with 0 errors on Fri Nov 26 21:07:53 2010
config:

        NAME        STATE     READ WRITE CKSUM
        vol1        ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c6t4d0  ONLINE       0     0     0
            c7t4d0  ONLINE       0     0     0
            c8t4d0  ONLINE       0     0     0
            c9t4d0  ONLINE       0     0     0
            c4t5d0  ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c6t5d0  ONLINE       0     0     0
            c7t5d0  ONLINE       0     0     0
            c8t5d0  ONLINE       0     0     0
            c9t5d0  ONLINE       0     0     0
            c4t6d0  ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c6t6d0  ONLINE       0     0     0
            c7t6d0  ONLINE       0     0     0
            c8t6d0  ONLINE       0     0     0
            c9t6d0  ONLINE       0     0     0
            c4t7d0  ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c6t7d0  ONLINE       0     0     0
            c7t7d0  ONLINE       0     0     0
            c8t7d0  ONLINE       0     0     0
            c9t7d0  ONLINE       0     0     0
            c6t0d0  ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

编辑:或者,如果您想要两个存储池,您可以将 20 个磁盘分成两组:

10 disks in mirrored pairs (5 per controller).
AND
3 stripes of 3-disk raidz1 groups
AND
1 global spare...
Run Code Online (Sandbox Code Playgroud)

这为您提供了两种类型的存储、良好的冗余、备用驱动器,并且您可以背靠背测试每个池的性能。