ZFS 支持文件系统压缩,还可以缓存经常或最近访问的数据。
如果系统有大量 CPU,但底层数据存储系统很慢。ZFS 在启用压缩后可能会表现更好。在写入文件时,可以通过测量 CPU 和磁盘使用率以及吞吐量轻松测试这一点。(当然可能存在延迟,但对于大文件来说这不是问题)。
但是缓存怎么办?如果每次读取数据时都必须解压缩,那么这可能不是一个好主意。
缓存数据是否已压缩?有人知道这方面的信息吗?
答案1
我向前 Sun ZFS 工程师 Richard Elling 询问了这个问题。他告诉我 L2ARC 是未压缩的,就像 ARC 是未压缩的一样。
抱歉,我无法提供文档或规范。我唯一的证据是上周我见到一位参与设计 ZFS 的人时亲自告诉了我。:)
答案2
如今,L2ARC 可以用 LZ4 压缩,ARC 仍未压缩。更多信息请访问 OpenZFS 网站 ->http://open-zfs.org/wiki/Features#l2arc_compression
答案3
ARC 或 L2ARC 中的缓存数据始终未压缩。就是这样。否则,每次从 ARC 或 L2ARC 读取都会产生相应的 CPU 开销,对于某些算法来说,这可能会非常大(我正在研究 bzip2)。假设您的文件系统上的 compression=yes,池磁盘和 ZIL(如果适用)上的数据将始终被压缩。
您说得对,当存储压缩效果良好的数据时,具有大量 CPU 但有限 IO 的系统在启用压缩后可能会表现更好。这不是 ZFS 独有的特性,您会发现很多关于在 NTFS 或其他文件系统上启用压缩的参考资料。
答案4
是的。ZFS 会以任一形式缓存经常访问的数据。默认压缩方案的性能很好,而且不消耗任何 CPU 时间。压缩是即时完成的。您可以通过添加 SSD L2ARC 缓存设备进一步扩展此功能。