ZFS - 启用或禁用磁盘缓存?

mat*_*ann 3 zfs cache ups raidz

我在带有 4 个 WD Red SATA HDD(通过 HBA 模式下的 PERC H330 连接)的服务器上使用 RAIDZ1 设置 ZFS(通过 FreeNAS)。

服务器连接到 UPS。

对于 ZFS 和在此设置中,启用每个磁盘的 HD 缓存是否有意义,或者尽管有 UPS,这是否非常危险?

sho*_*hok 6

您绝对应该启用磁盘缓存。

基本原理是 ZFS假设启用了磁盘缓存,因此通过适当和特定的 SATA/SAS 命令(ATA FLUSH、FUA 等)刷新任何关键写入(即:同步写入和超级块重写)。

启用磁盘缓存允许在不影响池可靠性的情况下利用现代磁盘的写入组合功能。

这显然假设您的磁盘实际上遵守缓存刷新命令,这是现代(2006 年后)磁盘的标准。在罕见的缓存中,您的磁盘涉及缓存刷新,那么您应该禁用它。

作为附加信息,我建议您阅读zfs_nocacheflush可调参数说明:

ZFS 使用屏障(易失性缓存刷新命令)来确保设备将数据提交到永久介质。这确保了缓存不稳定的设备(例如 HDD)的介质上状态一致。