注意
本文档适用于 Ceph 的开发版本。
crushdiff -- ceph crush map test tool
概要
描述
crushdiff 是一个实用程序,用于测试 crushmap 更改的效果:pg 数量、对象数量、移动的字节数。它是 osdmaptool(8) 的一个包装器,依赖于它的 --test-map-pgs-dump 选项来获取更改的 pg 列表。此外,它还使用 pg 统计信息来计算移动的对象和字节数。
默认情况下,crushdiff 将使用集群当前的 osdmap 和 pg 统计信息,这需要访问集群。不过,可以使用 --osdmap 和 --pg-dump 选项来针对先前获取的数据进行测试。
选项
- --compiled
输入/输出 crushmap 是已编译的。如果未指定此选项,则预期/返回的 crushmap 是 txt(反编译)格式。
- --pg-dump <pg-dump>
ceph pg dump 的 JSON 输出。如果未指定,crushdiff 将尝试运行命令本身来获取数据。
- --osdmap <osdmap>
集群 osdmap,通过 ceph osd getmap 命令获取。如果未指定,crushdiff 将尝试运行命令本身来获取数据。
- --verbose
生成诊断输出。
命令
- compare crushmap
将 crushmap 文件中的 crushmap 与集群 osdmap 中的 crushmap 进行比较。输出将显示安装新 crushmap 时预期移动的 pg 数量、对象数量和字节数。
- export crushmap
将集群 osdmap 中的 crushmap 导出到 crushmap 文件。
- import crushmap
将 crushmap 文件中的 crushmap 导入到集群 osdmap。
示例
获取当前的 crushmap
crushdiff export cm.txt
编辑 map
$EDITOR cm.txt
检查结果
crushdiff compare cm.txt
79/416 (18.99%) pgs affected
281/1392 (20.19%) objects affected
80/1248 (6.41%) pg shards to move
281/4176 (6.73%) pg object shards to move
730.52Mi/10.55Gi (6.76%) bytes to move
当使用 --verbose 选项运行时,输出还将包含有关受影响的 pg 的详细信息,如下所示
4.3 [0, 2, 1] -> [1, 4, 2]
4.b [0, 1, 3] -> [2, 1, 3]
4.c [4, 0, 1] -> [4, 1, 2]
即 pg 编号,及其旧的和新的 osd 活动集。
如果结果令人满意,则安装更新后的 map
crushdiff import cm.txt
可用性
crushdiff 是 Ceph 的一部分,Ceph 是一个可大规模扩展的开源分布式存储系统。请参阅 Ceph 文档(网址为 https://docs.ceph.net.cn)以获取更多信息。
另请参阅
ceph(8), crushtool(8), osdmaptool(8),