在启用压缩的 ZFS 文件系统中,ZFS 是否会缓存压缩或未压缩的数据?

在启用压缩的 ZFS 文件系统中,ZFS 是否会缓存压缩或未压缩的数据?

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 缓存设备进一步扩展此功能。

相关内容