企业存储技术 · 2020年12月21日

OpenZFS开源文件系统2.0+:持久化L2ARC读缓存、ZIL写缓存提速

作者:唐僧 huangliang
来源:企业存储技术

最近想给自己找各种理由少写点东西:)不过今天这个主题例外。班门弄斧,如有写的不准确之处还望大家多指正。

ZFS的价值与争议

提到ZFS文件系统,由于其功能全面以及最大的优势——开源(而且是BSD类的CDDL协议,修改不用回馈给社区那种),国内外应该有数不清的存储公司、用户都从中获益。

关于ZFS的介绍我不想用太多笔墨,下面这2张截图引自南京大学人工微结构科学与技术协同创新中心姚舸老师的ppt。

image.png

ZFS最早由Sun公司设计用于Solaris系统,其代码质量相当高,在OpenSolaris分支(illumos)和FreeBSD(以FreeNAS为代表)下的稳定性也有目共睹。ZFS后来又移植到Linux上,但至今无法改为LGPL开源协议,Linus大神对此相当不爽也就无法进入Kernel。

在不久前的新闻中,OpenZFS的版本号由0.8升级为2.0,并且合并了Linux和FreeBSD的代码。

与Ext4、XFS文件系统相比,ZFS尽管也是本地单机文件系统(没有免费的双控实现,ZFS有点像是本地文件系统中的Ceph),但却集成了软件RAID——含RAID 0、1、Z1(类似R5)、Z2(类似R6双校验盘)、Z3和卷管理器,基于元数据的COW写任意位置事务模型,自带Chenksum等保证数据完整性,免费提供高效的快照(几乎无限数量)和复制,还有读/写SSD缓存、压缩/重删等支持。

ZFS还提供了NAS(包括NFS和Samba)文件共享协议和iSCSI Target支持,有的高手能把FCTarget也搞定,俨然就是套统一网络存储系统。对成本敏感的客户,用ZFS代替存储阵列和RAID卡提供数据保护的也有一些。

image.png

了解ZFS,有些名词概念有必要知道。比如ARC是DRAM内存中的Cache,主要用于元数据和数据的读缓存加速,ARC(Adjustable Replacement Cache)这一名词最早应该是源于IBM高端存储。L2ARC(可选)通常放在SSD上,相当于ARC之外的二级读缓存。ZIL(ZFS intent log,写日志)是支持掉电保护的SSD写缓存,用于加速同步写的性能。

谈到ZFS的不足和争议,前两年我就曾想过写一点,还是不讲太多为好吧:)Linux下应用的适应场景和限制后续有时间再分享。对于大家要不要回馈开源社区这一点,可以说没有答案?我随便扯一句(大家不要认真):企业首先要生存,然后在同行业竞争没怎么“作恶”是不是也算是一种贡献呢。

关于姚舸老师的ppt,主要的性能测试我放在本文后半部分。下面先看看ZFS新版本和后续设计中的一些增强改进。

image.png

这里有几份ppt参考资料来自OpenZFS Developer Summit 2020(文末我会分享出来),当然如今OpenZFS 2.0版本已经不是rc了。

image.png

在新版本的性能增强部分,主要包括快速克隆删除、Log Spacemap、Metaslab performance和send/receive(即本地/远程复制)性能。

接下来的重要特性还有持久化L2ARC等;Sequential resilvering(顺序重建加速)我想在下一篇中结合未来的另一个新特性来写。

L2ARC读缓存的持久化

image.png

前面提到过L2ARC一般放在SSD上,存储介质本身是持久化的,这个就像Optane PM持久内存(DIMM)的MemoryMode那样,并不是硬件ok了就能用上持久化的。

如果有持久化就需要保证Crash一致性,这里的做法就是在L2ARC buffer中拆入log日志。

image.png

上面是用于存储buffer header entrie的L2ARC log block示意图。

L2ARC持久化的价值不言而喻:一旦系统重启,SSD Cache中的读缓存数据不需要再进行预热。

针对快速介质的ZIL性能改进

关于SSD写缓存加速这部分原理我就不多写了,ZIL设计早期还没有如今的高速NVMe SSD等。有兴趣的朋友可以参考具体文档,下面只交待性能对比测试结果:

image.png

以上平台配置的zpool记录大小是8K(相当于硬RAID的条带),2个NVMe SSD穿透给Linux虚拟机用于ZFS的ZIL写缓存。

image.png
FIO同步随机写测试结果如上图,改进后ZIL性能提高还是很明显的,高并发下IOPS从不到9万提高到12万以上,4线程低并发时甚至提高4倍。

Intel Optane在OpenZFS中的应用及测试

image.png让我们回到姚舸老师的分享资料。首先是测试平台,包括Dell PowerEdge R740xd服务器、HGST(刘委员长家的)JBOD、60块HDD硬盘、SSD、Optane SSD和持久内存等。

image.png
Optane Persistent Memory配置为MM+AD模式——95%为内存模式(可用于大容量ARC),5% App Direct模拟块设备(专门用来放ZIL,因为不需要太大)。

扩展阅读推荐:《Optane(傲腾)、非易失内存》专辑

image.png

在部分测试中,L2ARC使用NVMe SSD、ZIL使用Optane持久内存。

image.png

上面列出4种测试环境:

(1)    247GB DRAM内存做ARC,ZIL放在RAID 5 HDD上,这个肯定成本最低,性能相对最差?
(2)    L2ARC和ZIL都放在P4510NVMe SSD上;
(3)    ARC放在1.3TB Optane MM(含DRAM缓存)上,L2ARC使用4个P4510SSD,ZIL换成Optane P4800X;
(4)    在第3种配置的基础上,ZIL改放在2个36GB的Optane持久内存AD设备镜像上。

image.png

由于ZIL写缓存需要考虑SSD介质的写寿命,这里假设长期平均写入速度为100MB/s,五年的总写入量14.69PB——已经超过8TBP 4510、1.6TB P4610还有100GB小容量Optane P4801X的设计寿命。看来ZIL还是用容量大一点的P4610(或别的品牌同等级SSD)、OptaneP4800X更好。

扩展阅读:《Intel Optane SSD写寿命翻倍:5年60 DWPD》(最新的Optane P5800X达到了100DWPD

image.png

异步写对比结果被我略过了,因为只有同步写才考验ZIL。上图中列出了Ubuntu Linux和内核版本、OpenZFS用的是0.8.3,以及fio测试的参数。

除了SSD ZIL相比单纯HDD同步写的重要性能价值之外,我想说另一点是128K 64进程顺序写带宽,NVMe SSD和NVMeOptane都达到1300MB/s,而Optane DIMM只有974MB/s。

这一点并不意外,其实在我去年的文章中也写过,当前Optane持久内存(AEP)在模拟块设备时的写性能不见得总是强于SSD,而且现在更牛的Optane P5800X也发布了。

扩展阅读《性能修正:Intel Optane DC持久化内存更多测试

image.png

这里就能看出ZFS 0.8.3版本ZIL性能方面的限制了,比如4KB随机写Optane SSD就没有比普通NVMe SSD快太多,看来后续的ZIL性能改进值得期待。

image.png

顺序读测试,姚舸老师特别加了有一组ARC限制到2GB的对比,除了这个性能较低之外,当ARC配置247GB之后有没有L2ARC差别就不明显了。毕竟顺序写要落到zpool存储池里的HDD RAID上,3314-3519MB/s这个数字也算还可以吧。

image.png

相比只有247GB ARC,配置Optane DIMM加大ARC容量对随机读有一些帮助。我想这个还与测试数据集大小有关。

image.png
生产环境下的ZFS延迟,Optane DIMM也没能比NVMe Optane SSD表现更好。在存储软件的效率足够高之前,再快的硬件也无法充分发挥。

image.png

最后是对Optane持久内存的优势总结。MM+AD混合模式兼顾读写缓存确实可以节约ZIL SSD,不过用Optane DIMM做ARC还是比普通NVMe SSD做L2ARC要贵吧。

另外一点,就是当OpenZFS 2.0有了持久化L2ARC之后,我理解Optane DIMM也只有配置为App Direct模式才能像NVMe SSD那样支持读缓存持久化,虽然效率应该比内存模式ARC要低一些。对于这点的取舍,读者朋友中肯定有比我高见的专家,还有本文中更多的未尽之处,欢迎在下面留言:)

关于ZFS新特性和踩坑经验,我还规划了2-3篇,有时间争取再写给大家。感谢关注!

参考资料

《英特尔®傲腾™在存储中的应用》by南京大学人工微结构科学与技术协同创新中心姚舸
《OpenZFS- State of the Project》
《PersistentL2ARC》
《ZILPerformance Improvements for Fast Media》

链接:https://pan.baidu.com/s/1lVjs...

提取码:ua14



推荐阅读

注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。 进一步交流技术可以加我的微信/QQ:490834312。
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:HL_Storage,也欢迎关注企业存储技术极术专栏,定期更新。
42.jpg
4 阅读 517
推荐阅读
0 条评论
关注数
3142
内容数
109
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息