对于L2ARC和ZIL:最好同时拥有一个大SSD或两个小SSD?


22

主要参考

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

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

我是否应该在SSD层上解释垂直白线,以偏爱使用单独的 SSD,

  • 是否不想在单个磁盘上混合使用L2ARC和ZIL?

背景(回应评论)

就个人而言,我不太可能在任何可用的计算机上使用L2ARC或ZIL。(我的日常计算机是具有8 GB内存的MacBookPro5,2和混合型Seagate ST750LX003-1AC154。没有计划用SSD取代光盘驱动器。)

在其他地方:在工作中会有一些工具包的用途,但我没有日期或完整细节。(混合使用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)建议不要在单个磁盘上混合使用三样东西(根池,ZIL和L2ARC)–

…不值得尝试在同一磁盘上管理所有3个磁盘时出现的头痛问题。例如,如果您决定重新安装数据存储池并意外破坏ZIL的内容。不要为池组件或跨池共享磁盘,以简化管理和恢复。…

–我对是否建议不要在单个磁盘上混合使用其中的两种方法更感兴趣。

/superuser//a/238744/84988(2011-01-28)提到“缓存(L2ARC缓存)并将日志(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的一些知识:它具有两种不同类型的缓存(读写)(L2ARC和ZIL),通常存储在SSD上。ZIL是写缓存。这可能是这种误解的来源。每次对zpool进行写操作时,ZIL都会受到锤击(假设是活动系统)。问题在于,将基于mlc的SSD用作ZIL会使它们磨损并很快发生故障。您需要一个(价格昂贵得多)基于slc的SSD用作ZIL驱动器。

具有完全由SSD组成的zpool不仅可能,而且效果很好。从根本上讲,它也不需要ZIL和L2ARC的单独驱动器。是的,您没有TRIM支持,但是基于ZFS的写时复制特性,这可能是一件好事。

话虽如此,ZFS在几乎满(例如85%或更高)的zpool上不能很好地发挥作用。无论您使用的是旋转磁介质还是固态介质,性能都会开始显着下降。缺少TRIM支持可能会加剧该问题,但是这已经是一个问题。

/server//a/397431/91969(2012-06-11)建议:

  • ZIL的SLC类型SSD(特别不是MLC)
  • 适用于L2ARC的MLC型SSD。

/superuser//a/451145/84988(2012-07-19)提到了单数形式的 “用于ZIL和L2ARC的SSD以加速ZFS”。

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

  • 除了总线顺序,那个ZEVO话题使我开始怀疑是否最好使用单独的SSD。

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


2
看起来可能更多是服务器故障问题。但是,您需要考虑的是存储池上的读写负载。有一些研究表明,与单驱动器配置相比,SSD RAID读写通常可以大大降低性能。xbitlabs.com/articles/storage/display/...

2
那些最可能非常熟悉ZFS的人比SuperUser更有可能发生服务器故障。投票赞成提出动议,但这是一个很好的问题。
afrazier 2012年

我看到目前有两张选票要关闭,我们可以简单地提出这个问题吗?感谢@afrazier
Graham Perrin

1
欢迎使用服务器故障。如FAQ所述,我们根据您面临的特定问题,更喜欢实用,可回答的问题。就是说,您已经在这里进行了很多理论和讨论,但是似乎缺少的是您要解决的问题。添加实际细节,这是一个很大的问题。
迈克尔·汉普顿

1
请注意,VTC 一种移动答案的方法。如果大多数VTC要移到某个站点,它将被移走。是的,请提供一些实用的细节,这看起来确实写得很好,而且详细,但是在不知道您所处的情况下,很难真正获得具体答案。显然,您正在构建一个kickass ZFS设置,详细信息将有助于确定答案。
Journeyman Geek

Answers:


14

简短的回答,因为我看不到您要解决的问题...

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

在大型或高性能ZFS解决方案中,我使用的设备特别适合其ZIL或L2ARC角色...例如 对于ZIL而言,是STEC ZeusRAMDDRDrive;对于L2ARC是任何企业SLC或MLC SAS SSD。

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

你在做什么?


我为问题添加了一些背景。这个答案似乎很理想-谢谢-在接受之前,我会先待几天。
格雷厄姆·佩林

出于链接目的:来自@ewwhite ZFS的2011年问题-如何对SSD进行分区以供ZIL或L2ARC使用?并在可接受的答案内,“ ...每个池都有专用的ZIL和L2ARC设备”。
Graham Perrin

6

从一开始就有一些关于ZIL的基本误解,需要继续进行纠正。

理解这一点:在“正常”情况下,不会触摸ZIL / SLOG。

它是唯一写入时同步写入被命令或者同步=始终是在一个特定的池/数据集上启用(“ZFS得到同步池/数据集”)

正常情况下从不读取ZIL。这是灾难恢复功能。

IE:ZIL仅在电源关闭时存在。它用于在将数据提交到池之前重播已确认回操作系统的数据。所有ZFS写入池(同步或异步)均来自内存缓冲区。

通常情况下,一旦数据到达池中,slog条目就被蒸发掉-它只是一个很大的循环写入缓冲区,并且不需要很大(在大多数情况下,即使1GB也是过大的)

非同步写入会在适当的时候缓冲在ram中,整理并写入磁盘。如果电源关闭,则该数据会丢失,但FS完整性会得到保持(这就是为什么您可能要设置sync = always的原因)

另一方面,L2ARC在读取和写入级别上都受到重创。

之类的事情就是“ l2arc过多”,因为l2arc中内容的元数据来自您的ARC内存(即,如果增大l2arc的大小,则必须增加ram以适应)。否则可能会导致严重的性能下降和最终,l2arc的使用将在“所有可用空间”以下的某个水平上稳定下来)

尽管有些制造商提出了抗议,但是您不能通过增加l2arc大小来弥补内存不足(已经进入ZFS设备的几家硬件RAID阵列制造商做出了这一假设)

tl; dr:如果您的IO负载是数据库活动,则ZIL可能会受到重击。如果还有其他的话,很可能只会被轻触。ZIL功能极有可能在99.9%的活动中从未发挥作用。

知道这一点后,您就可以决定是否需要ZIL的SLOG分区,它是否可以与l2arc分区共存或是否需要独立驱动器(以及独立驱动器应具有的性能级别)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.