ZFS池configuration – build议需要

我们有20个2TB SATA驱动器用于ZFS池。 我在获得一些有关获得良好I / O性能的最佳方法的build议之后,能够提供一些冗余(数据丢失之前的3个磁盘故障是我们期望实现的)。

我有点困惑,我是否需要使用镜像或raidz。

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

任何build议将是伟大的。

有了20个磁盘,你有很多select。 我假设你已经有操作系统的驱动器,所以20个磁盘将是专用的数据驱动器。 在我的Sun Fire x4540 (48个驱动器)中,我已经在镜像设置中分配了20个驱动器,并且在条带化raidz1configuration中分配了24个驱动器(每个raidz有6个磁盘,4个有条纹的vdevs)。 两个磁盘是为操作系统,其余的是备件。

你正在使用哪个控制器? 您可能想要参考: ZFS SAS / SATA控制器build议

如果可以的话,不要使用硬件raid。 当驱动器以原始磁盘forms提供给操作系统时,ZFS就会兴旺起来。

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

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

使用镜像设置可以最大限度地提高速度,但在此时您将遇到控制器的带宽限制。 你可能不需要这种速度,所以我build议raidz1和条纹的组合。 在这种情况下,每个镜像对可以支持一个失败的磁盘(例如,如果正确的磁盘可能会损坏10个磁盘)。

无论哪种方式,无论您采用哪种解决scheme,您都应该考虑热备份安排。 也许18个磁盘镜像安排有2个热备份或3个条带6个磁盘raidz1与2个热备份…

当我build立我的第一个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 

20磁盘条纹raidz1由4个5磁盘raidz1 vdevs条纹组成。

  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 

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

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

这给你两种types的存储,良好的冗余,一个备用驱动器,你可以testing每个池的性能背对背。

看看最佳实践指南 。

我们有20个2TB SATA硬盘用于zfs池。 我在获得一些build议,以获得良好的I / O性能,同时能够提供一些冗余(3个磁盘故障,在数据丢失之前,我们正在寻求实现)。

带有RAIDZ-3(三重奇偶校验RAID)的ZFS将为您提供所需的冗余。 I / O性能 – 与任何RAID-5-ishconfiguration一样 – 对于读取而言会比写入更好,并且是否“足够好”取决于您的硬件。 其他人可能能够提供有关这方面的更好的信息(与我一起工作的ZFS文件系统没有devise性能作为主要考虑因素)。

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

ZFS最大的优势之一就是将RAID,卷pipe理和文件系统pipe理结合在一起 – 为您的环境提供单点pipe理。 如果在JBODconfiguration中configuration磁盘,则可以获得更多的灵活性。

大家告诉你使用RAIDZ是错误的。 RAIDZ性能糟糕 ! 镜像是最好的performance! 只有在需要空间而不是性能时才使用RAIDZ。

  • 阅读关于ZFS的东西,没人告诉你 。
  • 阅读RAID-GREED和为什么镜像仍然是最好的 。
  • 仔细阅读ZFS vdevs和性能 。
  • 阅读10种提高ZFS性能的方法 。

你有20个磁盘。 创build9个vdevs双向镜像和两个热备份。 这给你三个磁盘故障和18TB的存储空间。

根本不要使用硬件RAID。 如果可能的话,在JBOD中configurationraid控制器(有时也称为“passthrough”)。 如果没有,创build20个RAID0(这是一件很糟糕的事情,但是如果你不能configurationJBOD,那就太糟糕了)。 任何其他configuration都会使ZFS失败。

尽可能多地在控制器之间传播磁盘(最好是1-1,但是我认识到在你的情况下这是不实际的)。 购买更多的控制器如果可能

shannon,在一个类似的configuration中,我创build了15个磁盘的RAIDZ2池。 性能很好,但在磁盘故障后重buildRAID的时间很长。 就像30个小时,我正在使用500GB的磁盘。 我想我受存储控制器带宽(U160 scsi)的限制比其他任何东西都多,但是我预测你会发现需要比您想要的更长的时间。

当升级到2TB的磁盘时,我已经结束了120小时的重build,这似乎太多了。 我结束了与9磁盘RAIDZ2的重build。

在你的环境中进行testing是很容易的。 build立你的数组,填充它,然后拉一个磁盘并等待重build。 请记住,在ZFS中,只有实际使用的空间才会被重build(按照ZFS的说法重新设置),所以你必须填充数组来做一个好的testing。

如果我是你,我会做两个RAIDZ2,每个9和10个磁盘,以及一个热备份。 您将不得不使用-f标志来使ZFS允许将不同大小的raidz2添加到相同的池中。

请注意,使用我build议的RAIDZ2configuration,如果同一个池中的3个磁盘出现故障,那么就会出现故障。 OTOH如果有4个磁盘,每个池中有2个,都会失败,你可以。

不要将硬件RAID与ZFS结合使用。 文件系统不会意识到硬件控制器意识到的任何问题,并且不会相应地作出反应。

您可以使用RAIDZ3来实现3个磁盘故障安全。 镜子也可以达到这个目标,但是3个磁盘会有限制。 如果你select失败的概率比任意说你可以允许3个磁盘失败更有意义。

在这种情况下的性能将主要受到networking连接性的限制(我假设大部分arrays用于通过networking以某种方式提供文件)和计算机的CPU(所有这些奇偶校验不会自行计算,ZFS将还没有使用encryption加速器)。