注意
本文档适用于 Ceph 开发版本。
osdmaptool -- Ceph osd 集群映射操作工具
概要
描述
osdmaptool是一个允许你创建、查看和操作
选项
- --print
将简单地使该工具在做出任何修改后
- --dump <format>
当 <format> 为“plain”、“json”时显示纯文本映射,
- --clobber
将允许 osdmaptool 如果做出更改则覆盖 mapfilename。
- --import-crush mapfile
将从 mapfile 加载 CRUSH 映射并将其嵌入 OSD 映射中。
- --export-crush mapfile
将从 OSD 映射中提取 CRUSH 映射并写入到
- --createsimple numosd [--pg-bits bitsperosd] [--pgp-bits bits]
将使用 numosd 设备创建一个相对通用的 OSD 映射。
- --create-from-conf
创建具有默认配置的 osd 映射。
- --test-map-pgs [--pool poolid] [--range-first <first> --range-last <last>]
将打印出放置组到 OSD 的映射。osdmaptool --test-map-pgs --range-first 0 --range-last 2 osdmap_dir.
- --test-map-pgs-dump [--pool poolid] [--range-first <first> --range-last <last>]
将打印出所有放置组的摘要以及它们到映射 OSD 的映射。osdmaptool --test-map-pgs-dump --range-first 0 --range-last 2 osdmap_dir.
- --test-map-pgs-dump-all [--pool poolid] [--range-first <first> --range-last <last>]
将打印出所有放置组的摘要以及它们到所有 OSD 的映射。osdmaptool --test-map-pgs-dump-all --range-first 0 --range-last 2 osdmap_dir.
- --test-random
对放置组到 OSD 进行随机映射。
- --test-map-pg <pgid>
将特定的放置组(由 pgid 指定)映射到 OSD。
- --test-map-object <objectname> [--pool <poolid>]
将特定的放置组(由 objectname 指定)映射到 OSD。
- --test-crush [--range-first <first> --range-last <last>]
将放置组映射到活动的 OSD。osdmaptool --test-crush --range-first 0 --range-last 2 osdmap_dir.
- --mark-up-in
将 osds 标记为 up 和 in(但不会持久化)。
- --mark-out
将一个 osd 标记为 out(但不会持久化)
- --mark-up <osdid>
将一个 osd 标记为 up(但不会持久化)
- --mark-in <osdid>
将一个 osd 标记为 in(但不会持久化)
- --tree
显示映射的层次树。
- --clear-temp
清除 pg_temp 和 primary_temp 变量。
- --clean-temps
清理 pg_temps。
- --health
转储健康检查
- --with-default-pool
在创建映射时包含默认池
- --upmap-cleanup <file>
清理 pg_upmap[_items] 条目,将命令写入到 <file> [默认:- 用于标准输出]
- --upmap <file>
计算 pg upmap 条目以平衡 pg 布局,将命令写入到 <file> [默认:- 用于标准输出]
- --upmap-max <max-optimizations>
设置要计算的 upmap 条目的最大值 [默认:10]
- --upmap-deviation <max-deviation>
目标的最大偏差 [默认:5]
- --upmap-pool <poolname>
限制 upmap 平衡到 1 个池,或者可以重复该选项以用于多个池
- --upmap-active
像一个活跃的平衡器,持续应用更改直到平衡
- --adjust-crush-weight <osdid:weight>[,<osdid:weight>,<...>]
改变 <osdid> 的 CRUSH 权重
- --save
使用 upmap 或 crush-adjust 变更写入修改后的 osdmap
- --read <file>
计算 pg upmap 条目以平衡 pg 主要
- --read-pool <poolname>
指定 read 平衡器应调整的池
- --vstart
在 upmap 和 read 输出前加上 ‘./bin/’
示例
要创建一个具有 16 个设备的简单映射:
osdmaptool --createsimple 16 osdmap --clobber
要查看结果:
osdmaptool --print osdmap
要查看池 1 的放置组映射:
osdmaptool osdmap --test-map-pgs-dump --pool 1
pool 1 pg_num 8
1.0 [0,2,1] 0
1.1 [2,0,1] 2
1.2 [0,1,2] 0
1.3 [2,0,1] 2
1.4 [0,2,1] 0
1.5 [0,2,1] 0
1.6 [0,1,2] 0
1.7 [1,0,2] 1
#osd count first primary c wt wt
osd.0 8 5 5 1 1
osd.1 8 1 1 1 1
osd.2 8 2 2 1 1
in 3
avg 8 stddev 0 (0x) (expected 2.3094 0.288675x))
min osd.0 8
max osd.0 8
size 0 0
size 1 0
size 2 0
size 3 8
- 其中,
池 1 有 8 个放置组。并且有两个表格如下:
一个放置组的表格。每一行表示一个放置组。列包括:
放置组 id,
作用集,和
主要 OSD。
所有 OSD 的表格。每一行表示一个 OSD。列包括:
映射到此 OSD 的放置组数量,
在其作用集中此 OSD 是第一个的放置组数量,
此 OSD 是它们的 PRIMARY 的放置组数量,
此 OSD 的 CRUSH 权重,和
此 OSD 的权重。
查看由 3 个 OSD 持有的放置组数量。我们有
平均值、标准差、标准差/平均值、预期标准差、预期标准差 / 平均值
最小值和最大值
映射到 n 个 OSD 的放置组数量。在这种情况下,所有 8 个放置
在一个不太平衡的集群中,我们可以有如下输出作为放置组分布的统计数据,
#osd count first primary c wt wt
osd.0 8 5 5 1 1
osd.1 8 1 1 1 1
osd.2 8 2 2 1 1
#osd count first primary c wt wt
osd.0 33 9 9 0.0145874 1
osd.1 34 14 14 0.0145874 1
osd.2 31 7 7 0.0145874 1
osd.3 31 13 13 0.0145874 1
osd.4 30 14 14 0.0145874 1
osd.5 33 7 7 0.0145874 1
in 6
avg 32 stddev 1.41421 (0.0441942x) (expected 5.16398 0.161374x))
min osd.4 30
max osd.1 34
size 00
size 10
size 20
size 364
要模拟 upmap 模式中的活跃平衡器:
osdmaptool --upmap upmaps.out --upmap-active --upmap-deviation 6 --upmap-max 11 osdmap
osdmaptool: osdmap file 'osdmap'
writing upmap command output to: upmaps.out
checking for upmap cleanups
upmap, max-count 11, max deviation 6
pools movies photos metadata data
prepared 11/11 changes
Time elapsed 0.00310404 secs
pools movies photos metadata data
prepared 11/11 changes
Time elapsed 0.00283402 secs
pools data metadata movies photos
prepared 11/11 changes
Time elapsed 0.003122 secs
pools photos metadata data movies
prepared 11/11 changes
Time elapsed 0.00324372 secs
pools movies metadata data photos
prepared 1/11 changes
Time elapsed 0.00222609 secs
pools data movies photos metadata
prepared 0/11 changes
Time elapsed 0.00209916 secs
Unable to find further optimization, or distribution is already perfect
osd.0 pgs 41
osd.1 pgs 42
osd.2 pgs 42
osd.3 pgs 41
osd.4 pgs 46
osd.5 pgs 39
osd.6 pgs 39
osd.7 pgs 43
osd.8 pgs 41
osd.9 pgs 46
osd.10 pgs 46
osd.11 pgs 46
osd.12 pgs 46
osd.13 pgs 41
osd.14 pgs 40
osd.15 pgs 40
osd.16 pgs 39
osd.17 pgs 46
osd.18 pgs 46
osd.19 pgs 39
osd.20 pgs 42
Total time elapsed 0.0167765 secs, 5 rounds
要模拟 read 模式中的活跃平衡器,首先确保通过在 upmap 模式中运行平衡器来平衡容量。然后,使用以下方式平衡复制池的读取:
osdmaptool osdmap --read read.out --read-pool <pool name>
./bin/osdmaptool: osdmap file 'om'
writing upmap command output to: read.out
---------- BEFORE ------------
osd.0 | primary affinity: 1 | number of prims: 3
osd.1 | primary affinity: 1 | number of prims: 10
osd.2 | primary affinity: 1 | number of prims: 3
read_balance_score of 'cephfs.a.meta': 1.88
---------- AFTER ------------
osd.0 | primary affinity: 1 | number of prims: 5
osd.1 | primary affinity: 1 | number of prims: 5
osd.2 | primary affinity: 1 | number of prims: 6
read_balance_score of 'cephfs.a.meta': 1.13
num changes: 5
可用性
osdmaptool是 Ceph 的一部分,Ceph 是一个大规模可扩展的、开源的分布式存储系统。请参考https://docs.ceph.com中的 Ceph 文档以获取更多信息。
参见
ceph(8),crushtool 的 Ceph 文档(8),
由 Ceph 基金会提供
Ceph 文档是一个由非盈利Ceph 基金会资助和托管的社会资源。。如果您想支持此项目和其他工作,请考虑现在加入.