ZFS l2arc 无法预热

ZFS l2arc 无法预热

我的设置有 256 GB 的 RAM,其中 200 GB 专用于 arc,还有 2 个 SSD 用于 l2arc。它已经运行了好几天,并稳定地为许多客户端提供文件,但似乎 l2arc 仍未正确预热。缓存报告显示zpool iostat -v

cache           -      -      -      -      -      -
  sdy       4.84G   889G      0      0    203    819
  sdz       4.84G   889G      0      0    202    826

我看到弧的未命中率一直在 10% 左右:

$ arcstat 2
    time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  size     c  avail
09:18:03    78     7      9     0    0     7  100     0    0  200G  199G    31G
09:18:05   21K  1.0K      8     5    1  1.0K   50     5    1  200G  199G    31G
09:18:07   18K  1.0K      8    40    1  1.0K   47     2    1  199G  199G    31G
09:18:09   18K  1.0K      7    44    1  1.0K   48     3    1  200G  199G    31G

因此我认为这应该会导致 l2arc 的填充,但这种情况似乎并没有发生,因为两个缓存 SSD 几天来一直占用着大约 4.8 GB。作为一致性检查,l2arc 未命中率始终为 100%:

$ arcstat -f l2bytes,l2read,l2miss,l2miss% 2
l2bytes  l2read  l2miss  l2miss%
      0       6       6      100
      0    1.0K    1.0K      100
      0    1.0K    1.0K      100
      0    1.0K    1.0K      100

肯定是我遗漏了某些东西或者设置有错误,所以我需要一些指导。

答案1

L2ARC 仅从即将被驱逐的 ARC 缓冲区中填充。如果 ARC 流失率太低,或者太高,L2ARC 可能会出现预热问题。

为了增加 L2ARC 利用率,您可以尝试设置l2arc_noprefetch=0,如果您使用的是 ZFS 2.0.x,l2arc_headroom=0(如果使用旧版 ZFS,则需要指定一个值l2arc_headroom=32)。

相关内容