![问题](https://linux22.com/image/596795/%E9%97%AE%E9%A2%98.png)
主要参考文献
ZFS L2ARC(布伦丹·格雷格)(2008-07-22)和ZFS 和混合存储概念(Anatol Studler 的博客)(2008-11-11)包括下图:
问题
我是否应该将 SSD 层的垂直白线解释为使用分离SSD –
- 偏好不是在单个磁盘上混合使用 L2ARC 和 ZIL?
背景(回复评论)
就我个人而言,在家里我不太可能在任何可用的计算机上使用 L2ARC 或 ZIL。(我每天使用的计算机是 MacBookPro5,2,配备 8 GB 内存和混合 Seagate ST750LX003-1AC154。没有计划用 SSD 替换光驱。)
其他方面:工作中会重新利用一些工具,但我还没有确定日期或完整细节。(Xserve RAID x2 也在其中……目前我还没想过把它们交给 ZFS,但我持开放态度。)
我的对SSD最佳实践的好奇在关注 ZEVO 领域中与性能相关的讨论时,我开始对 L2ARC 和 ZIL 进行研究 - 特别是下面提到的主题,其中用户在单个磁盘上同时拥有 L2ARC 和 ZIL。
其他参考文献和讨论
L2ARC 截图(Brendan Gregg)(2009年1月30日)
SLOG 截图(Brendan Gregg)(2009年6月26日)
[zfs-discuss] ZFS 根备份/“灾难”恢复以及移动根池(2011-01-10)建议不要混合三单个磁盘上的所有内容(根池、ZIL 和 L2ARC)
… 尝试在同一磁盘上管理所有 3 个文件时,可能会出现很多麻烦,这不值得。例如,如果您决定重新安装并意外破坏了数据池的 ZIL 内容。不要共享池组件的磁盘或跨池共享磁盘,以保持管理和恢复简单。…
– 我更感兴趣的是,是否建议不要混合二把这些东西放在一个磁盘上。
https://superuser.com/a/238744/84988(2011-01-28)提到“缓存(L2ARC 缓存)并将日志(ZIL)写入 SSD”(单数)。然而,由于它与 FUSE 和 Windows 相关,我并不认为该答案与 ZFS 更常见和更注重性能的用途特别相关。
@克里斯在 The Comms Room 中提到了 ZIL 和 L2ARC于2011年08月16日。
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 在 zpools 几乎已满(例如 85% 或更高)的情况下运行不佳。性能开始大幅下降 - 无论您使用的是旋转磁性介质还是固态介质。缺乏 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 的 SSD 可以加速 ZFS”。
zevo.getgreenbytes.com • 查看主题 - FW800 连接顺序的性能问题?(2012-09-24)关注的是 FireWire 总线上的事物顺序单身的适用于 ZIL 和 L2ARC 的 SSD
- 除了总线顺序之外,ZEVO 主题让我开始怀疑单独的 SSD 是否更可取。
更具体地说:我想知道上图中白线的解释……
答案1
简短的回答,因为我不知道您想要解决什么问题......
如果可以,请使用单独的设备。这取决于您的环境规模……如果它只是一个简单的家庭系统或虚拟化或一体化 ZFS 解决方案,可使用单台设备。
在更大或高性能的 ZFS 解决方案中,我使用专门适合其 ZIL 或 L2ARC 角色的设备……例如STEC ZeusRAM或者DDR 驱动适用于 ZIL 以及任何适用于 L2ARC 的企业 SLC 或 MLC SAS SSD。
- ZIL 设备应为低容量、低延迟且具有高 IOPS 能力的设备。它们通常是镜像的。
- L2ARC 设备应具有高容量(在合理范围内:随着 L2ARC 大小的增加,您需要添加 RAM)。它们通过条带化进行扩展。
你在干什么?
答案2
从一开始,人们对 ZIL 就存在一些根本性的误解,在继续之前需要纠正这些误解。
理解这一点:在“正常”情况下,ZIL/SLOG 不会受到影响。
它是仅有的当命令同步写入时或在特定池/数据集上启用 sync=always 时写入(“zfs get sync pool/dataset”)
正常情况下,ZIL 不会被读取。这是一项灾难恢复功能。
即:ZIL 仅在断电时才存在。它用于重放已在数据提交到池之前向操作系统确认的数据。所有 ZFS 对池的写入(同步或异步)都来自内存缓冲区。
在正常情况下,一旦数据到达池中,slog 条目就会消失 - 它只是一个大的循环写缓冲区,不需要很大(在大多数情况下,即使 1GB 也是大材小用)
非同步写入缓冲在 RAM 中,在适当的时刻整理并写入磁盘。如果电源关闭,数据将丢失,但 FS 完整性得以维护(这就是您可能需要设置 sync=always 的原因)
另一方面,L2ARC 在读取和写入层面都受到严重影响。
存在“太多 l2arc”的情况,因为 l2arc 中的元数据来自 ARC RAM(即,如果您增加 l2arc 大小,则必须增加 RAM 以适应。不这样做可能会导致严重的性能下降,最终 l2arc 使用率将稳定在远低于“所有可用空间”的某个水平)
尽管一些制造商提出抗议,但您无法通过增加 l2arc 大小来弥补内存不足(几家涉足 ZFS 设备的硬件 raid 阵列制造商都做出了这样的假设)
总结:如果您的 IO 负载是数据库活动,那么 ZIL 可能会受到严重影响。如果是其他活动,那么它很可能只会受到轻微影响。在 99.9% 的活动中,ZIL 功能很可能永远不会启动。
了解这一点将使您能够决定是否需要 ZIL 的 SLOG 分区,它是否可以与 l2arc 分区共存,或者是否需要独立驱动器(以及独立驱动器的性能级别应是多少)。