我家里有一个简单的 ZFS 设置,四个磁盘镜像,8GB RAM 和 120GB Intel X25-M SSD 用于 L2ARC。我运行zpool add poolname cache cXtXdX
然后生成负载并通过运行来热切跟踪预热过程zpool iostat -v mypool
。几个小时后,L2ARC 已满,但究竟缓存了什么?
我可以查看一下我的 ARC/L2ARC 中的内容吗?我知道某些块会映射到多个文件系统(由于快照、克隆或重复数据删除),但我仍然想对以下统计信息进行抽样:
- 缓存的块类型:元数据、iSCSI、数据等。
- 年龄:每个区块在 L2ARC 中存在多长时间
- 哪些文件:缓存了部分内容的目录
- 文件系统细目:每个文件系统缓存的 GB
- 块的非易失性副本的位置(哪个驱动器/vdev)
我认为 zdb 和/或 dtrace 会是当今最流行的工具,但我真的不知道从哪里开始。
答案1
这是一个已更新的脚本,以反映 L2ARC 中的数据。
看:http://blog.harschsystems.com/2010/09/08/arcstat-pl-updated-for-l2arc-statistics/
来源可以在这里找到:https://github.com/mharsch/arcstat
答案2
我可能会说,你不应该关心缓存中有什么,而应该关心最有效的东西是否已被缓存。也就是说,ARC 缓存是否被充分利用了?
我在工作中运行了一个小规模(9TB)的 ZFS 实现,我发现 Ben Rockwood 的工具弧摘要.pl以及 Sun 的arcstat.pl,均详见本文cuddletech 博客文章,非常有用。
我知道它不能直接回答你关于 ARC 缓存中到底有什么的问题,但这些应该为你提供一些关于你的缓存如何使用以及你是否需要更多内存/SSD 空间的可靠数据。