dag/stat如何核对共享大小? 图 1
dag/stat如何核对共享大小? · 图 1

多个数据集可能引用同一批IPLD块。把每个根的逻辑大小直接相加,会重复计算共享内容;只看仓库总大小,又无法解释某个DAG贡献了多少。Kubo dag/stat提供一组结构统计,用于把块数量、总量和去重关系拆开。

根CID和遍历条件必须进入主键

Kubo dag/stat按DAG根CID统计DagStats,并返回NumBlocks与Size等信息。

dag/stat围绕DAG根CID执行统计,返回DagStats中的NumBlocks与Size等信息。同一个根在不同codec、遍历能力或数据完整性下,成本与结果可能不同。报告应保存根CID、Kubo版本、请求参数、开始结束时间和错误。

NumBlocks描述遍历观察到的块数量,Size描述对应体量。不要把NumBlocks当文件数:一个文件可由多个块构成,一个DAG也可表示目录、结构化数据或其他IPLD对象。

三种大小回答三个问题

响应还包含UniqueBlocks、SharedSize、TotalSize与Ratio,用于表达多DAG或遍历中的共享块和去重关系。

UniqueBlocks关注去重后的唯一块,SharedSize表达被多个部分共享的体量,TotalSize则描述未去重的逻辑总量,Ratio帮助观察两者关系。实现时以接口原始定义和字段为准,不能凭字段名自行套入压缩率。

观察角度适合回答不适合回答
NumBlocks与Size单根遍历规模仓库全部对象数量
UniqueBlocks去重后涉及多少块每块是否被pin
SharedSize重叠内容贡献共享者的业务所有权
TotalSize与Ratio逻辑总量和复用程度文件系统实际占用

若多个团队共同引用一块,物理成本如何分摊是会计政策,不是dag/stat替你决定的事实。可以按首个拥有者、引用次数或公共池分配,但报表必须注明规则。

CID相同意味着内容块相同

DAG由内容寻址块和链接组成,共享CID可被多个根引用,因此逻辑总量与唯一块量可以不同。

IPLD通过内容寻址块和链接组成DAG。相同CID被多个根引用时,逻辑结构可以共享同一块,这正是去重差异的基础。但codec、分块方式或元数据变化可能让内容相似却产生不同CID,不能仅凭用户看到的文件名判断共享。

比较迁移前后数据集时,应固定导入参数与CID版本。如果分块器改变,UniqueBlocks增加并不一定表示内容真正新增;它也可能是编码结构重建。

统计完成不代表本地长期可取

dag/stat不能单独证明所有块已经本地持久化、被pin或可从公网网关取回。

dag/stat不能单独证明所有块已经本地持久化、处于pin保护或能从公网网关稳定取得。统计请求可能在遍历时从网络获取部分数据,也可能因缺块而失败。需要把结果与pin状态、本地块存在性和受控读取测试结合。

公网网关成功也不是本地节点持有证明,因为内容可能来自其他提供者或缓存。若目标是备份验收,应断开外部依赖或使用明确的本地检查,并对CAR导出执行完整性验证。

用集合图核对共享关系

为每个根导出涉及CID集合,在允许的规模内计算交集、并集和仅属于单根的块;再把dag/stat的UniqueBlocks、SharedSize与TotalSize进行交叉核对。大型DAG可使用流式集合或概率结构,但要说明误差。

发现Ratio突变时,先查根集合、导入方式和版本,再判断是否真的去重退化。不要直接运行垃圾回收清理“重复块”,因为共享块可能仍被其他根引用。

容量规划要与repo/stat分工

dag/stat解释某个或一组DAG的逻辑结构,repo/stat观察整个本地仓库的容量与对象。两者不会一一相等:仓库还包含其他内容、块存储开销与历史对象,DAG统计也未必对应本地物理持有。容量日报应并排展示,不强行对齐。

清理前先盘点pin、引用和备份,建立候选删除集合并在隔离环境验证。任何破坏性维护都不应由dag/stat单一阈值自动触发。

一份共享容量审计记录

记录DAG根列表、CID集合生成方式、NumBlocks、Size、UniqueBlocks、SharedSize、TotalSize、Ratio、统计耗时、缺块错误、pin结果和本地读取结果。最后将“逻辑数据量”“去重唯一量”“仓库物理占用”分别下结论。

DAG统计是结构账,不是持久化收据

共享CID会让逻辑总量与唯一存储量产生差异。保存根、遍历条件和原始统计,再用pin、本地块检查与实际读取补足可用性证据,容量结论才完整。

dag/stat如何核对共享大小?的复查入口

本文的事实底稿来自Kubo RPC dag/stat、IPLD concepts、Pin files to IPFS,定义和字段均可回到原文核对。

当前不能越过的事实边界是:不同DAG遍历、codec和本地块缺失会影响统计成本与完成结果。

相关背景可继续查看repo/statIPFS CAR完整性bitswap/stat。接口、客户端与网络状态会随时间变化,本文不构成投资、交易或收益建议。