我的 ZFS ARC 和 L2ARC 缓存中有什么?

not*_*ter 8 solaris zfs dtrace ssd zfs-l2arc

我在家里有一个简单的 ZFS 设置,四个磁盘镜像,8GB 内存和 120GB 英特尔 X25-M SSD 用于 L2ARC。我运行zpool add poolname cache cXtXdX然后生成负载并通过运行zpool iostat -v mypool. 几个小时后,L2ARC 已满,但究竟缓存了什么?

我可以窥视一下我的 ARC/L2ARC 中有什么吗?我知道某些块会映射到多个文件系统(由于快照、克隆或重复数据删除),但我仍然想对以下统计数据进行采样:

  • 缓存的块类型:元数据。iSCSI,数据。等等。
  • 年龄:每个区块在 L2ARC 中存在多长时间
  • 哪些文件:缓存了部分内容的目录
  • 文件系统细分:每个文件系统缓存 GB
  • 块的非易失性副本的位置(驱动器/vdev)

我想 zdb 和/或 dtrace 将是日常工具,但真的不知道从哪里开始。

gro*_*wse 7

我可能会争辩说,您不应该关心缓存中的内容,而应该关心最有效的内容是否已被缓存。即,ARC 缓存是否已发挥最大效率?

我在工作中运行了一个小规模 (9TB) ZFS 实现,我发现 Ben Rockwood 的工具arc_summary.pl和 Sun 的arcstat.pl都在这篇cuddletech 博客文章中详细介绍,非常有用。

我知道它没有直接回答您关于 ARC 缓存中究竟有什么内容的问题,但是这些应该可以为您提供一些关于缓存如何使用的可靠数据,以及您是否需要更多内存/SSD 空间。


eww*_*ite 2

这是一个已更新以反映 L2ARC 中的数据的脚本。

请参阅: http: //blog.harschsystems.com/2010/09/08/arcstat-pl-updated-for-l2arc-statistics/

来源可在这里: https: //github.com/mharsch/arcstat