ZFS 和缓存设备

ZFS 和缓存设备

我要将 SSD 驱动器添加到我的 ZFS 存储中作为缓存。有人有这方面的经验吗?如果缓存设备坏了,数据会受到影响吗?

答案1

http://web.archive.org/web/20100911224754/http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

(Solaris Internals 网站已不再可用,但 WebArchive 有一份副本)

答案2

基本上有三种类型的 ZFS 缓存,均用于数据和元数据。

  • ARC(自适应替换缓存)——用于读写的主存储器 DRAM 缓存。
  • L2ARC(2 级 ARC)- 安全读取缓存:设备故障不会造成数据丢失/服务中断。通常基于 SSD。
  • ZIL(ZFS 意图日志)- 安全地保存永久存储上的写入,这些写入也在 ARC 中等待刷新到磁盘。数据很少会在此缓存中停留超过 30 秒,并且除非崩溃后重放任何未提交的池写入,否则永远不会读取数据。在最近的任何 ZFS 版本中,Zil 设备故障不会导致数据丢失(所有数据仍在 ARC 中),但设备故障 + 崩溃或断电可能会导致某些写入丢失。

首先升级您的 ARC,购买大量主内存。注意 L2ARC 和 Zil 都分配了 ARC 之外的开销。

L2Arc 由从 ARC 中逐出的读取缓存块填充。默认情况下,ZFS 仅将随机 IO(小读取)缓存到 L2ARC 中,不用于流式工作负载(除非得到指示)。基本上,您可以使用任何设备来实现此目的(包括快速的 15k HD),但使用可以轻松处理许多随机读取 IOPS 的 SSD 效果最佳。

ZIL 可加速需要同步写入的工作负载(进程等待确认写入已实际提交到磁盘后再继续执行)。Zil 的作用类似于高端 RAID 控制器上的电池备份缓存。虽然写入延迟和流式写入 IOPS 是定义优质 Zil SSD 的标准,但最重要的是,Zil 在断电时绝不能丢失任何数据。许多合适的设备都配有超级电容器,以便在没有系统电源的情况下完成任何待处理的操作。过去推荐使用具有高写入耐久性的 SLC SSD(Intel X25-E),但较新的设备使用带电池/超级电容器的 RAM 在断电时写回 NAND。ZIL 不需要很大,但通过仅使用大型设备的一小部分(例如 300GB Intel 320 MLC SSD 中的 8GB),您可以获得更高的有效写入耐久性。“企业”供应商始终推荐镜像 ZIL,我的工作负载从未如此重要。

至于具体产品,STEC 为 Sun 的 Fishworks 项目(Logzilla 和 Readzilla)制造了第一批 SSD,并且目前拥有 ZIL 的设备(宙斯RAM$2500/8GB)和 L2ARC(宙斯IOPS3000 美元/400GB),这两款产品都值得推荐。基于 PCIe 的 SSD 也值得考虑,比如 ZIL 专用的DDR 驱动器 x1($2k/4GB) 或任何用于 L2ARC 的大型 PCIe SSD。其他性能较差(即较便宜)的 2.5 英寸 SSD 设备也可以提供显著的性能提升,尤其是在用于 L2ARC 时。

相关内容