zfs,叫人又爱又恨。
优点自不用说,我就说说缺点。
1、需要ECC内存。
绝大部分人的nas设备都是普通内存,没有ecc校验机制,虽然也能用zfs,但是出现文件系统错误的概率高出来不是一点半点。
虽然有人说,没有ecc也没关系,但实际上,你仔细看下zfs的文件校验机制会发现,每当 ZFS 遇到错误时(不管是在清理时还是按需访问文件时),都会在内部记录该错误,以便您可以快速查看池中所有已知错误的概述。
仔细阅读这个描述就能发现,如果错误发生在校验过程中,这个错误也会被记录用于纠正文件错误(其实是正确的,但是校验错了),而这个校验过程发生在内存中,内存没有校验机制的结果就是内存级的错误导致zfs校验错误,从而进一步导致目标文件被错误的纠正,从而导致文件错误。
我不确定这个描述你看懂了没,如果没看懂就多看几次,总之结论就是,对zfs来说,ecc内存是必需的,否则会面临巨大的数据风险,尤其是文件读写量非常大的场景。
2、需要大量的内存
因为zfs会缓存大量文件在内存中,所以一般来说,zfs需要的内存是非常大的。同时这也是为什么zfs需要ecc内存,因为zfs太依赖内存了。
3、操作不是那么简单。
对于技术从业者来说,几条zfs命令不是什么难事,但是对于普通用户来说,如果nas的web界面无法提供足够多的zfs操作选项,当zfs发生异常需要修复或者替换硬盘时,那麻烦可就有点大了。
当然,这些对于有合适的设备的用户来说并不是很大的问题。问题在于很多人认为在普通硬件设备上也可以安全的使用zfs,这势必会带来很大的风险。
另,有不少人引用b站的一个所谓实测ecc内存对zfs影响的视频,简直是可笑。
首先,每个人使用zfs的环境不一致,配置不一样,内存型号不一样,硬盘不一样,你用一套硬件来验证一个结论,微软都不敢这么搞。
这个视频简直是可笑之极,也能被拿来证明zfs不需要ecc?!
内存的原理是什么,为什么linux服务器可以运行几年不关机,前提是什么?是ecc内存。
那我主板不支持ecc,unraid到底应该用zfs不