对于L2ARC和ZIL:两个或两个较小的固态硬盘最好有一个大的SSD吗?

主要参考

ZFS L2ARC(Brendan Gregg) (2008-07-22)以及ZFS和混合存储概念(Anatol Studler的博客) (2008-11-11)包括以下图表:

ARC,L2ARC,ZIL和磁盘存储池的ZFS金字塔视图

我应该解释垂直的白线 – 在SSD层 – 作为使用单独 SSD的首选项 –

  • 不要在单个磁盘上混用L2ARC和ZIL?

背景(对评论的回应)

就我个人而言,我不太可能在任何可用的计算机上使用L2ARC或ZIL。 (我的日常电脑是一个MacBookPro5,2,8GB内存和混合希捷ST750LX003-1AC154。没有计划用SSDreplace光驱。)

其他地方:在工作中会有一些套件的重新调整,但我没有date或完整的细节。 (Xserve RAID x2 …在这个时候我不会想象给那些ZFS,但我保持开放的态度。)

L2ARC和ZIL SSD最佳实践的好奇心始于ZEVO领域的性能相关讨论,特别是下面提到的主题,即用户在单个磁盘上同时具有L2ARC和ZIL。

其他参考和讨论

L2ARC屏幕截图(Brendan Gregg) (2009-01-30)

SLOG截图(Brendan Gregg) (2009-06-26)

[zfs-discuss] ZFS根备份/“灾难”恢复和移动根池 (2011-01-10)build议在单个磁盘上禁止三种东西(root pool,ZIL和L2ARC)

…不值得在试图pipe理同一磁盘上的所有3时可能发生的问题。 例如,如果您决定重新安装并意外地打开数据池的ZIL的内容。 不要为池组件或池共享磁盘以简化pipe理和恢复。 …

– 我更感兴趣的是build议不要在单个磁盘上混合两个这样的东西。

https://superuser.com/a/238744/84988(2011-01-28 )提到“caching(L2ARCcaching)和写入日志(ZIL)到SSD”( 单数 )。 但是,因为它涉及到FUSE和Windows,所以我不认为这个答案与ZFS的更常见和更高性能的用途特别相关。

@ChrisS在2011-08-16 在Comms Room中提到了ZIL和L2ARC 。

http://forums.macrumors.com/showpost.php?p=14248388(2012-01-31 )讨论了多个 SSD:

您需要了解的ZFS:它有两种不同types的caching,读写(L2ARC和ZIL),通常安装在SSD上。 ZIL是写入caching。 这可能是这种误解来自的地方。 对Zpool而言,ZIL正在受到打击(假设一个活动的系统)。 问题是使用基于mlc的SSD作为ZIL会导致它们磨损并且很快失败。 您需要(更昂贵的)基于slc的SSD用作ZIL驱动器。

有一个完全由SSD组成的zpool不仅是可能的,但它工作得很好。 它也基本上消除了ZIL和L2ARC的独立驱动器的需要。 是的,你没有TRIM的支持,但是基于ZFS的copy-on-write特性,这可能是一件好事。

有了这个说法,ZFS在接近完整(比如85%或更高)的zpools的时候performance不佳。 无论您是使用旋转磁介质还是固态,性能都会显着下降。 缺乏TRIM支持可能会加剧这个问题,但这已经是一个问题。

https://serverfault.com/a/397431/91969(2012-06-11 )推荐:

  • 用于ZIL的SLC型SSD(具体而言,不是MLC)
  • 用于L2ARC的MLC型SSD。

https://superuser.com/a/451145/84988(2012-07-19 )提到了一个单独的 “ZIL和L2ARC加速ZFS的SSD”。

zevo.getgreenbytes.com•查看主题 – FW800连接顺序的性能问题? (2012-09-24)关注的是FireWire总线上使用ZIL和L2ARC的单个 SSD的顺序

  • 不考虑巴士订单,那ZEVO的话题开始让我想知道单独的固态硬盘可能是更可取的。

更具体地说:我想知道上图中白线的解释…

简短的回答,因为我没有看到你要解决什么问题…

如果可以,请使用单独的设备。 这取决于您的环境规模……如果只是简单的家庭系统或虚拟化或一体化的ZFS解决scheme ,则可以使用单个设备。

在大型或高性能的ZFS解决scheme中,我使用专门适用于其ZIL或L2ARCangular色的设备…例如ZEC ZeusRAM或DDRDrive用于ZIL,以及用于L2ARC的任何企业SLC或MLC SAS SSD。

  • ZIL设备应该是能够实现高IOPS的低容量,低延迟设备。 它们通常是镜像的。
  • L2ARC设备应该是高容量的(原因在于:随着L2ARC尺寸的增加,您需要添加RAM)。 他们通过条带缩放。

你在做什么?

ZIL从一开始就存在一些基本的误解,在继续之前需要纠正。

理解这一点:在“正常”情况下,ZIL / SLOG没有被触及。

只有在写入同步写入命令时,或者在特定池/数据集(“zfs get sync pool / dataset”)上启用了sync = always

在正常情况下,ZIL永远不会被读取。 这是一个灾难恢复function。

IE:ZIL只在电源closures的时候才有。 它被用来重放在数据被提交到池之前已经回到操作系统的数据。 所有ZFS写入池(同步或asynchronous)都来自内存缓冲区。

在正常情况下,一旦数据冲击到池中,允许slog条目被蒸发 – 这只是一个大的循环写入缓冲区,并不需要很大(在大多数情况下,即使是1GB也是如此)

非同步写入以ramcaching,整理并在适当的时候写入磁盘。 如果电源closures,数据将丢失,但FS的完整性得以维持(这就是为什么您可能需要设置sync = always)

另一方面,L2ARC在阅读和写作方面都受到严重打击。

有太多的“l2arc”这样的东西,因为l2arc中的元数据来自你的ARC ram(也就是说,如果你增加l2arc的大小,你必须提升内存大小,否则会导致严重的性能下降,最终l2arc的使用量将在一定程度上低于“所有可用空间”)

尽pipe有些制造商表示了抗议,但是你不能通过增加12arc的尺寸来弥补内存不足(一些分支到ZFS设备的硬件RAIDarrays厂商已经做出了这个假设)

tl; dr:如果你的IO负载是数据库活动,那么ZIL很可能会被猛烈抨击。 如果是其他的东西,那很可能只是轻轻一碰。 很有可能在99.9%的活动中ZILfunction从来没有启动过。

知道这将允许您决定是否需要ZIL的SLOG分区,是否可以与l2arc分区同时使用,或者是否需要独立驱动器(以及独立驱动器的性能级别)。