ZFS L2ARC (Brendan Gregg) (2008-07-22) 和ZFS and the Hybrid Storage Concept (Anatol Studler's Blog) (2008-11-11) 包括下图:

我是否应该将 SSD 层的垂直白线解释为偏好使用单独的SSD?
就个人而言,在家里,我不太可能在任何可用的计算机上使用 L2ARC 或 ZIL。(我的日常电脑是 MacBookPro5,2 8 GB 内存和混合希捷 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 内容。不要为池组件或跨池共享磁盘,以简化管理和恢复。…
– 我更感兴趣的是是否建议不要在单个磁盘上混合其中的两个。
https://superuser.com/a/238744/84988 (2011-01-28) 提到“缓存(L2ARC 缓存)和将日志(ZIL)写入 SSD”(单数)。但是,由于它与 FUSE 和 Windows 相关,我不认为该答案与 ZFS 的更常见和注重性能的使用特别相关。
@ChrisS在 2011-08-16的通讯室中提到了 ZIL 和 L2ARC。
http://forums.macrumors.com/showpost.php?p=14248388 (2012-01-31) 讨论了多个SSD:
关于 ZFS,您需要了解一些事情:它有两种不同类型的缓存,读取和写入(L2ARC 和 ZIL),通常位于 SSD 上。ZIL 是写缓存。这大概就是这种误解的来源。ZIL 会随着 zpool 的每次写入而受到重创(假设系统处于活动状态)。问题在于,使用基于 mlc 的 SSD 作为 ZIL 会导致它们很快磨损和失效。您需要一个(更昂贵的)基于 slc 的 SSD 用作 ZIL 驱动器。
拥有一个完全由 SSD 组成的 zpool 不仅是可能的,而且效果很好。它还基本上消除了 ZIL 和 L2ARC 对单独驱动器的需要。是的,您没有 TRIM 支持,但基于 ZFS 的写时复制特性,这可能是一件好事。
话虽如此,ZFS 在接近满(例如 85% 或更高)的 zpool 时表现不佳。性能开始显着下降 - 无论您使用的是旋转磁介质还是固态。缺乏 TRIM 支持可能会加剧这个问题,但这已经是一个问题。
https://serverfault.com/a/397431/91969 (2012-06-11) 建议:
https://superuser.com/a/451145/84988 (2012-07-19) 提到了一个单一的“用于 ZIL 和 L2ARC 的 SSD 以加速 ZFS”。
zevo.getgreenbytes.com • 查看主题 - FW800 连接顺序的性能问题?(2012-09-24) 关注 FireWire 总线上的事物顺序,带有用于 ZIL 和 L2ARC的单个SSD
更具体地说:我想知道上图中白线的解释……
eww*_*ite 17
简短的回答,因为我不明白你要解决什么问题......
如果可以,请使用单独的设备。这取决于您的环境规模...如果它只是一个简单的家庭系统或虚拟化或一体式 ZFS 解决方案,您可以使用单个设备。
在更大或高性能的 ZFS 解决方案中,我使用专门适合其 ZIL 或 L2ARC 角色的设备......例如,用于 ZIL 的STEC ZeusRAM或DDRDrive以及用于 L2ARC 的任何企业 SLC 或 MLC SAS SSD。
你在干嘛?
小智 10
从一开始就存在一些关于 ZIL 的基本误解,需要在继续之前更正。
理解这一点:在“正常”情况下,不会触及 ZIL/SLOG。
它仅在命令同步写入或在特定池/数据集上启用 sync=always 时写入(“zfs get sync pool/dataset”)
在正常情况下永远不会读取 ZIL。这是一个灾难恢复功能。
IE:ZIL 仅在电源关闭时才存在。它用于重放在数据提交到池之前已确认回操作系统的数据。所有 ZFS 写入池(同步或异步)都来自内存缓冲区。
在正常情况下,一旦数据到达池中,slog 条目就被允许蒸发——它只是一个大的循环写入缓冲区,不需要很大(在大多数情况下,即使 1GB 也是过大的)
非同步写入在 ram 中缓冲,整理并在适当的时候写入磁盘。如果电源关闭,该数据将丢失,但 FS 完整性将保持(这就是您可能想要设置 sync=always 的原因)
另一方面,L2ARC 在读取和写入级别都受到了重创。
有“太多 l2arc”这样的事情,因为 l2arc 中的元数据来自你的 ARC ram(即,如果你增加 l2arc 大小,你必须增加 ram 以适应。不这样做会导致严重的性能下降和最终 l2arc 的使用将在远低于“所有可用空间”的某个水平上稳定下来)
尽管一些制造商提出抗议,但您无法通过增加 l2arc 大小来弥补内存不足(几家已分支到 ZFS 设备的硬件 raid 阵列制造商已做出此假设)
tl; dr:如果您的 IO 负载是数据库活动,那么 ZIL 可能会受到猛烈抨击。如果是其他任何东西,那么它很可能只会被轻轻触摸。很可能在 99.9% 的活动中,ZIL 函数从未启动。
知道这将允许您决定是否需要 ZIL 的 SLOG 分区,它是否可以与 l2arc 分区共存,或者它是否需要独立驱动器(以及独立驱动器应该是什么性能级别)。
| 归档时间: |
|
| 查看次数: |
29692 次 |
| 最近记录: |