
2025年11月14日,飞牛更新0.9.37版本,带来了比较完整的zfs有关功能,那么这时候这下这篇,应该有些参考价值。比较啰嗦,还请端杯茶,边喝边看,边思考。
对于大多数人来说,一个操作系统的价值是低故障高效率的利用电脑硬件满足人们的工作娱乐需求。而文件系统则是操作系统的基础,它应该对系统CPU低消耗,并且高可靠高性能的给操作系统提供数据的读写支持。实际上现代计算机的架构,从一开始就是分层分级的去处理各种数据,然后用总线把各个部分连接起来,同时每个部分有保证自己的数据一致性的设计。CPU的缓存集成了ecc功能,内存也可选ecc功能,到硬盘的数据传输采用差分信号并使用crc校验和,硬盘本身也全部有ecc功能。这些功能都是由专门的硬件去完成的,对于使用者来说是无感的。而现代计算机的架构本身也决定了不能什么都想着让CPU去完成,因为这么干的效率太低了。所以显卡,网卡,声卡,阵列卡各种卡都在把一些CPU执行效率低的任务从CPU那里卸载下来,让CPU去干更适合的工作。例如,今天的显卡不仅仅要直接读写内存,还要直接操作nvme,网卡不仅仅要打包数据,还要用rdma技术直接操作内存,有些网卡和声卡也有自己的ram,而阵列卡为了实现加速raid5和raid6则用了专用的asic处理器负责xor运算也拥有独立的ecc ram作为运算的临时存储之用,同时可以直接操作内存。
以上简述就是告诉大家,计算机是由很多零部件和代码互相配合的软硬件整体,只有互相配合好了,我们才能获得最高效,最佳的体验,适合的才是最好的。你给一个打游戏的128核的EPYC,但是给他一个K620显卡去玩黑神话悟空那就是牛头不对马嘴,水泵插上吸管。

文件系统是计算机的基础,电脑不管干什么都离不开数据的读写,而且大多数时候我们希望数据读写都不要过多占用CPU,让CPU专心去跑运算。所以数据传输的CRC,硬盘的ECC都是专门的硬件完成的,就是让CPU轻松点,认真干活。软件层面,为了安全,日志式文件系统也在历史中一步步走向前台,为人类可靠服务多年。但是即使是日志式文件系统也不能保证数据的绝对安全,在一些极端环境,内存的比特反转,crc的漏洞,意外断电等等,依然是数据可靠性的敌人。于是我们聪明的科学家和工程师又研发出了ZFS这样的文件系统,它在所有的硬件数据一致性手段之外又加上了一层软件级别的校验和,用于确认数据是否一致。同时使用写时复制技术,天生对于快照和去重有更好支持。这么看起来,ZFS是极先进的。现实中的应用场景看,一些企业级用途的确从中获益。
有很多大神看到了zfs的好,向众人推荐。不过,这个世界从来没有绝对的好,阳光所照必有阴影。zfs需要ecc内存配合raidz才能获得完整的数据一致性体验和数据修复功能,同时zfs的检验和是软件的,依赖系统CPU去运算,你的CPU的检验和运算能力决定了你用zfs的性能上限。除此之外,和其他软阵列一样,你的CPU跑xor的性能,以及整套系统跑软阵列的中断和IO能力,共同决定了raidz的性能上限。一般来说传统软阵列,你只要硬件配置好,建立阵列时配置一个stripsize就完了。而raidz就复杂多了,你需要考虑recordsize,io的并行数量,arc缓存大小。更深层级的还可能需要配置脏数据的大小,L2ARC,SLOG等,这已经标出了99%的人的能力了。同时,这样的文件系统成为了性能最差的文件系统之一,并不是它不强大,而是它太复杂了,执行效率有限,另外就是,它的实际能耗也比传统软阵列比如mdadm的软阵列要明显的高。
zfs的检验和是有效的,不过价值必须要和效果对应。对于工业环境,电磁和辐射特别复杂的地方,在硬件ecc,crc之上再加上软件检验和确有意义。但是对于个人,小企业的环境下,就一个问题,大家使用NTFS或者EXT4遇到过几次因为文件系统导致的数据安全问题?如果你没遇到过,那么再加上软件检验和的必要性是什么?是硬件太便宜了还是电费不要钱了?还是你的存储性能跑的太快让你不爽了?让你有希望它慢一点的想法了?所以,实际上对于个人和小企业,额外的检验和是负担,是能源浪费,并不是雪中送炭,甚至连锦上添花都算不上。但是电磁环境复杂的地方,对数据一致性要求特别特别高的地方,这个检验和是最后一道防线,加强一些硬件投入,多花一些电费正合适。
快照也是大家喜闻乐见的,依赖于写时复制。如果你的数据确实经常需要回滚到某个时间的状态,那么快照是很好用的功能,或者你的数据担心遇到勒索软件,那么快照也是高效有用的。不过必须明白,快照需要付出额外的存储空间,这需要你自己去平衡。
去重,实际上写时复制本身就可以简单的不去复制完全相同的文件,只是简单生成个指针就好,实际上华为手机有一些也有类似的功能。但是块级的去重,需要对每一个数据快计算检验和并比对,所以需要消耗大量的CPU算力和内存,这点,对个人来说性价比低的可怜,你不会有难么多相同的块,所以你付出的电费很多,收益极少。
所以实际上个人和小企业用不用zfs就只看你是否需要快照,对于检验和的数据一致性的优点根本无需考虑,因为它在大多数个人和小企业环境中基本上是英雄无用武之地,爆裂拳打在空气中。
ext4,它是多年以来一直在用的稳定可靠的文件系统,稳如老狗,消耗少,性能佳,你不需要zfs的特性就直接用它最好。
btrfs,这个实际上在ext4和zfs之间找了一个平衡,有写时复制,有检验和,但是没有zfs复杂,很多时候性能表现也比zfs好些,但是直到今天,它的可靠性依然不如ext4和zfs。
飞牛从0.9.37已经把zfs的Recordersize,同步异步,异步线程数,ACR缓存大小,自动trim,压缩,去重,scrub全部集成到UI中,大家都可以针对自己的硬件情况非常简单的优化飞牛的zfs,目前简单试用看下来,飞牛的zfs已经推荐用于简单使用了。比其他系统的zfs功能直观的多。




如果不需要快照,那么大家就老实的用ext4,稳如老狗,资源占用远低于zfs。不过目前的飞牛ext4可能是因为linux内核版本的原因导致高性能存储的性能异常,只有正常的一半,比如NVME或者硬件阵列,但是更改linux内核后性能就能恢复,还得等飞牛更新。
没有zfs的时候btrfs的快照也是好用的,有了zfs以后确实有些看不上btrfs了~~希望btrfs再努力点,把可靠性做上来,这样就有个中庸之选了。
最后也希望随着CPU的发展,zfs能够打破性能桎梏,甚至zfs也能退出专用硬件提高效率,现在的zfs在普通的nas中消耗过多,性价比过低了。