2020.05.22更新:
结合原帖的回复和更多的google,周末又跑了几次fio,对zfs的认识再多了几分。
1. 很多回复指出zfs对内存的依赖,fio太小的数据集跑出来的分数过于理想化,实际参考意义不大。后来找到一篇来在NetApp的技术博客(https://cloud.netapp.com/blog/aws-netapp-baseline-performance-testing),里面关于使用fio测试随机性能的方法给我在接下来的跑分一个很好的参考,回帖也有建议选用数倍于内存的数据集大小。
2. 下面这个回帖非常在理:
开这个贴的主题还是围绕软件层面的讨论,如果只是去惊叹Optane 900p随机跑分的话我应该把贴开去硬件开箱区了。
3.这个贴只讨论随机性能,周末跑分的时候按900p的4k实际基础性能51万IOPS作为参照。发现只要把数据集size放大到超过内存,900p做L2ARC的zpool 4k随机读取成绩真的是惨不忍睹(1.5万IOPS),只有900p基础性能的3%,符合一些大大们对L2ARC鸡肋的评价,至于具体原因和解决办法,欢迎大家跟帖讨论哈。
当发现了这个情况后,我多跑了一个测试,就是用两块900p组成mirror zpool(不要问为什么不用4块组类raid10,问就是没有钱.jpg)去测试随机读取,结果依然一样。这就让我非常疑惑了,按道理两块900p组的raid1,随机读取应该在100万IOPS(51万*2)上下,而不是只有可怜的几万IOPS。为了解决这个疑惑,我用mdadm给900p组了raid1,再用80G的数据集跑fio,结果轻松破百万IOPS,接下来我的目标是调高zpool(纯900p)的4k读取,欢迎各位大大给我一点方向哈。
raid1_1M_IOPS.jpg (194.21 KB, 下载次数: 0)
1M_iops
----------------------------------------------------------------------
原帖
受上一贴关于raid卡性能的启发,意识到raid卡的性能和扩展性的限制。一番研究决定入坑zfs(还省钱)。
https://www.chiphell.com/thread-2207921-1-1.html
本人喜欢手动搭建的乐趣,而且所需功能简单,所以没有选择Freenas这种非常受欢迎的做法。
基本系统如下:
硬盘 4x Exos 8TB CPU Intel W-2295 (HT=off) 内存 128G ECC内存(8*16) 系统盘 Intel D3-S4610 SSD 240G 缓存 Optane SSD 900p 280G
评论
看不懂,只能膜拜
评论
用普通内存的我弱弱路过
评论
我看过你的贴,还是毕竟喜欢手动挡,一起交流哈
评论
把同步选项关闭试试看。
另外压缩关闭了么?
评论
ECC内存便宜。
评论
之前有看到一些原理说明的帖子,是说当开启L2ARC之后,L2ARC中的数据的索引是在内存里面的。内存的角色转变成ARC+L2ARC的索引。所以如果数据不再ARC但是在L2ARC中的话,那么意味着速度和IOPS会降低一点。
评论
1. 你可以设置下primarycache来尝试关掉ARC
2. 正常情况不会开sync=always,这样等于禁用了内存的缓存写入功能,写内存快还是900p快?你可以关掉always再试试。
3. 写缓存适用于对数据安全性要求比较高的情况,比如数据库。
4. zfs严重依赖内存,L2ARC会增加内存需求量。L2ARC默认只对非连续的小块数据缓存。
评论
fio 有个参数 -sync https://fio.readthedocs.io/en/la ... #cmdoption-arg-sync
楼主测试的 fio size 好像是 2M,有点小,建议改大,最好超过内存数倍,size 太小情况下应该用不到 l2arc, 2M 甚至都没填满机械盘的缓存,测试的时候可以开一个 iostat 或者用 arc_stat 观察一下 arc/l2arc 的独写和命中率
另外楼主的 zfs 参数调整过么
vfs.zfs.l2arc_noprefetch 默认是 1,没有预读取
vfs.zfs.l2arc_write_max 默认是 8M,也就是说内存中的 arc 数据默认情况下是以 8M/s 的速度写到 l2arc 里面的,可以改大一点
vfs.zfs.l2arc_norw 默认是 0 还是 1 我忘了(看系统,调到 0 可以同时独写
我只用过 freenas 下面的 zfs,没怎么用过 zol, 参数可能不太一样但是整体应该差不多
评论
关于你的第二点,我是特意sync=always来关掉内存缓存写入,目的是只比较单hdd 和hdd vdevs 的性能差别。
1. 我去试下哈
3.粗略阅读了一些文档,也发现了zfs对数据完整性的校验,数据一致性和快照等等的优点,所以才感觉相逢恨晚
4. 现在内存很便宜,分数也不错,有空会用自己的数据库测一下实际提升。
评论
非常好的建议哈~(鲜花.jpg)
回去就翻一下这两个缓存的数据。
你提供的参数我也去研究一下哈。
评论
关于raid卡 我记得我看过level1tech的视频,那人说了,raid卡也就是一个小型的电脑,里面也有cpu,内存什么的
当年电脑cpu比较弱才有用,现在是用不到了,多一点硬件,多一个会出事的地方
评论
那是R/ECC,单ECC么呵呵呵呵
评论
纯ECC价格是要媲美高档超频内存了。
评论
压缩关了,打开sync是想测试hdd的真实性能,加上傲腾作缓存的时候关了。
评论
其实硬件的规格是确定的,优化其实就是靠软件,哪怕固件等算法本质也是软件,只不过是更底层一点的软件
评论
关HT是啥?有啥讲究的?
评论
太高深了,完全看不懂。
这个意思是水变成油了吗?
评论
关闭超线程,跟zfs没有关系的。
评论
少数特殊场景下,如频繁的数据库写入(mysql),的确有水变油的感觉
评论
sync=always没有意义啊。sync=always开了,内存写入缓存就废了。不开这个,NIC基本上随便打满。
L2ARC不用开,128G内存稳稳的。SLOG用900p就可以了。
评论
以我这么几年的zfs使用经验,Zpool最好是raidz-1*N这种布局,IOPS受限于一个VDEV的最低IOPS设备,简单说,假如一个盘IOPS为100,有6个,那么:
全部做raidz-1:整个pool的IOPS=100
条带化raidz-1:raidz-1*2,整个zpool的IOPS=100*2
增加ARC_L2对于缓存文件有那么点用,其余更多场景意义不是太大(我是kvm的虚拟机放在zfs dataset上,每次clone明显慢于相同配置的硬件raid)
之所以一直割舍不下zfs,还是COW的特性和扩展容易,有快照和加密。
评论
感觉ZFS的文件系统元数据非常占IOPS,实际上全靠内存硬撑,只要超出ARC马上死
跑fio要按内存x2来设置数据集,跑个200G就知道ZFS的性能有多差了。
不过你有128G内存,也不容易用完
L2ARC更拉跨,浪费一块SSD还不支持持久存储(重启后从零积累缓存),而且加速效果实在是对不起专门配块nvme SSD
SLOG对家用是纯鸡肋,直接把sync关了用内存缓存就行,反正一般都要配UPS的不会意外断电,独立的SSD SLOG也就没什么登场机会。
评论
非常中肯的意见~刚接触的东西,我都只是从性能上简单评价。
我在开头也说了,扩展性也是我入坑zfs的原因之一。
想不到大家对L2ARC和SLOG的评价比较一般,之后我也会用sql测一下这两块缓存的提升作用。
对zfs其他很多的特性也在慢慢学习中,一起交流哈。
评论
结合了楼上几位的意见,fio测试的时候用500M*8的数据集就已经能让zfs脱去ARC的外衣了,用不了200G。
我的理解是SLOG 还是应该设一个,然后SYNC=standard,让应用决定是否调用sync()?不知道这样理解对不对。
我目前还没理解到L2ARC的应用机制,本以为l2arc是一个比arc容量大,速度差一个级别的缓存,但目前看来又不是这么一回事,还望指教。
评论
要搞清楚SLOG,首先要搞清楚同步写和异步写
异步写就是数据一堆丢过来,自己看着写,写好了报告一下就行
同步写是给一个数据,等你写,报告写好了再给下一个。也就是磁盘测试的4K Q1T1那种模式。
像数据库之类安全要求高的全都是同步写,以保证意外断电的数据完整性。
显然,同步写完全无法使用内存缓存,会非常的慢,IOPS等于整个池中最慢的一块盘。
ZFS为了加速同步写,引入了SLOG,同步写请求来了往SLOG里一丢,就报告写好了,有空了再把SLOG里的写请求誊到真正的数据区域去。
即使不加额外的SSD,SLOG也存在于储存池的机械硬盘上。
所以,SLOG是为了加速同步写,同步写是为了防意外断电。
既然都配了UPS几乎不会意外断电,直接关掉sync,把所有的操作都视为异步写就行了,充分利用内存加速。
评论
L2ARC有用的前提是日常访问数据量可以轻易的塞满ARC。
虽然用的是SSD,但是索引是全在内存的ARC中的,一旦关机内存都没了,L2ARC也就相当于清空了,下一次开机会从0再来。
虽然NAS不会轻易关机,但一月一重启的频率还是有吧,就算不重启也得apt升级吧。
按我把电影游戏PT挂机都装NAS上的玩法,L2ARC能塞满SM961 256G就不错了,至于缓存命中率,基本是心理安慰。
断电持久化L2ARC的事情已经吹了好几年,最新进展是这个功能暂时不会开发
就算能塞满,命中率高,由于ZFS冗杂的元数据,日常写入量爆炸,实际加速性能也会远差于直接用SSD本身的性能。
评论
断电持久化,是要上nvdimm吗?上nvdimm的话是否直接开箱即用?还是要在bsd里面调试的?
评论
请教,freebsd里面的iscsi如何调优。目前我碰到的问题是intel 82599兼容网卡下(服务端和客户端均为兼容网卡,不是什么山寨卡,是深圳联瑞品牌的),iscsi的target无论是在pm1725a上,还是pm1643上还是hdd上,一概只有5秒真男人(在头2秒的传输速率达到2GB/s(仅限pm1725a,pm1643是1.5G左右,HDD也就1G),后3秒达到1GB/s的水平(算是正常了)),但是5秒过后,一律将为110MB/s。
压缩关,同步关闭,zfs是128K blocksize,iscsi的块是4Kb(最大也就是4K了),客户端是win10。链接iscsi的时候开了多路径访问。测试的时候都是大文件(数十个iso镜像和一个107G的zip压缩包)
评论
请教,我自己的测试下发现l2arc对于大文件读写貌似没有帮助,是如此的么?测试的时候用的l2arc是pm1725a 6.4T,内存128G。测试一开始是多次拷贝107G的数据到HDD stripe+mirror以及pm1643 上,然后反向拷贝HDD上的数据到另外一块pm1643上,发现拷贝速度仅是HDD stripe + mirror的读速度,显然遇到了瓶颈,l2arc没有起作用。
另外想请教有什么办法可以在HDD上面把读速度调试到这篇文章所测得的数据? https://calomel.org/zfs_raid_speed_capacity.html (我的都是大文件,所以不会有小文件的烦恼)
L2ARC在SSD里,本身就应该断电保持。
但是L2ARC的索引被保存在内存里,关机也不转储。
结果就是本应该持久的SSD缓存,变成和内存一样重启就要从零开始。
评论
那看来只要用了nvdimm的内存,就可以解决这个问题了。而且听你描述,属于开箱即用,zfs或者bsd都不用调试或者单独开启什么东西就可以了。
评论
不了解nvdimm的部署,感觉现在谈nvdimm还是遥远了一点
而且不只是关机会丢,升级zfs也会丢,现在版本号刷得这么快,一个月不升级两个月总要升级吧,这下和nvdimm没关系了。
评论
偶尔去看一看openzfs的issue,从0.6到0.8一堆性能下降报告
我现在完全把L2ARC当成心理安慰在用……它的帮助实在是太小了
评论
zfs on linux我觉得坑还挺多的,之前试过一段时间,现在安安心心lvm + xfs,真香
评论
请问lvm 对ssd caching 的效果怎么样
评论
emmm...
其实没有认真测试过,8t x 2 + 120G sata ssd 做caching,局域网内smb速度可以稳定110MB/s,之前用zol,大文件读写把arc cache吃完后,速度就掉到几M了
评论
周末多跑了几次随机4k,目前暂时放弃zfs,不知道为什么性能下降的这么大。目前换了楼下建议的lvm+xfs,成绩又正常了
评论
为何我用centos+openzfs 6块P3700组raidz1 性能还没有单盘好
评论
纯ssd或者纯nvme组zfs性能是个谜,国外有文章提到,号称会解决,不知何时会解决。
评论
L2ARC设计的时候,认为固体硬盘都是昂贵而且尺寸又小的玩意。而且这个设计默认只对频繁读取的小文件有效果,连续读取的大文件是不会进入cache的。所以不是特殊场景的话,对性能并没有多大的提升,也没有多大的必要添加,还不如老实堆内存。
zfs目前最适合的场景是12块3.5机械硬盘做raidz2,能兼顾容量和速度。拿来做iSCSI或者smb共享都可以。
我有几块2.5的ssd(不是M.2)做raid0(striped raid),性能很正常。 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?