zoukankan      html  css  js  c++  java
  • ceph高可用分布式存储集群10-osdmaptool详解与实战– ceph osd 运行图操作工具

    提纲
    osdmaptool mapfilename [–print] [–createsimple numosd [–pgbits bitsperosd ] ] [–clobber]
    osdmaptool mapfilename [–import-crush crushmap]
    osdmaptool mapfilename [–export-crush crushmap]
    osdmaptool mapfilename [–upmap file] [–upmap-max max-optimizations] [–upmap-deviation max-deviation] [–upmap-pool poolname] [–save] [–upmap-active]
    osdmaptool mapfilename [–upmap-cleanup] [–upmap file]
     
    描述
    osdmaptool是一个实用程序,可让您从 Ceph 分布式存储系统创建、查看和操作 OSD 集群映射。值得注意的是,它允许您提取嵌入的 CRUSH 地图或导入新的 CRUSH 地图。它还可以模拟 upmap 平衡器模式,以便您了解平衡 PG 所需的条件。
     
    选项
    --print
    在进行任何修改后,将简单地使该工具打印地图的纯文本转储。
    --dump <format>
    当 <format> 为 'plain' 时,以纯文本形式显示地图,如果不支持指定的格式,则显示为 'json'。这是打印选项的替代方法。
    --clobber
    如果进行了更改,将允许 osdmaptool 覆盖 mapfilename。
    --import-crush mapfile
    将从 mapfile 加载 CRUSH 地图并将其嵌入到 OSD 地图中。
    --export-crush mapfile
    将从 OSD 地图中提取 CRUSH 地图并将其写入 mapfile。
    --createsimple numosd [--pg-bits bitsperosd] [--pgp-bits bits]
    将使用 numosd 设备创建一个相对通用的 OSD 映射。如果指定了 –pg-bits,则初始归置组计数将设置为每个 OSD 的 bitsperosd 位。也就是说,pg_num 映射属性将设置为 numosd,由 bitsperosd 移位。如果指定了 –pgp-bits,则 pgp_num 映射属性将设置为 numosd 位移位。
    --create-from-conf
    使用默认配置创建一个 osd 映射。
    --test-map-pgs [--pool poolid] [--range-first <first> --range-last <last>]
    将打印出从归置组到 OSD 的映射。如果指定了范围,则它会在 osdmaptool 的参数指定的目录中从第一个到最后一个迭代。例如:osdmaptool –test-map-pgs –range-first 0 –range-last 2 osdmap_dir。这将遍历 osdmap_dir 中名为 0,1,2 的文件。
    --test-map-pgs-dump [--pool poolid] [--range-first <first> --range-last <last>]
    将打印出所有归置组的摘要以及从它们到映射的 OSD 的映射。如果指定了范围,则它会在 osdmaptool 的参数指定的目录中从第一个到最后一个迭代。例如:osdmaptool –test-map-pgs-dump –range-first 0 –range-last 2 osdmap_dir。这将遍历 osdmap_dir 中名为 0,1,2 的文件。
    --test-map-pgs-dump-all [--pool poolid] [--range-first <first> --range-last <last>]
    将打印出所有归置组的摘要以及从它们到所有 OSD 的映射。如果指定了范围,则它会在 osdmaptool 的参数指定的目录中从第一个到最后一个迭代。例如:osdmaptool –test-map-pgs-dump-all –range-first 0 –range-last 2 osdmap_dir。这将遍历 osdmap_dir 中名为 0,1,2 的文件。
    --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 的参数指定的目录中从第一个到最后一个迭代。例如:osdmaptool –test-crush –range-first 0 –range-last 2 osdmap_dir。这将遍历 osdmap_dir 中名为 0,1,2 的文件。
    --mark-up-in
    标记 osds up and 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> [默认:- 用于 stdout]
    --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 或 crash-adjust 更改编写修改后的 osdmap
     
    实例
    要创建个有 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. 池 1 有 8 个归置组。两个表如下:
    2. 归置组表。每行代表一个归置组。带有以下列:
        * 置放群组 ID,
        * 表演集,和
        * 主 OSD。
    3. 所有 OSD 的表格。每行显示一个 OSD。带有以下列:
        * 映射到此 OSD 的归置组计数,
        * 此 OSD 是其执行集中的第一个归置组的计数,
        * 此 OSD 是其中主要的归置组计数,
        * 此 OSD 的 CRUSH 权重,以及
        * 此 OSD 的权重。
    4. 查看 3 个 OSD 持有的归置组数量。我们有
        * 平均、标准差、标准差/平均、预期标准差、预期标准差/平均
        * 最小值和最大值
    5. 映射到 n 个 OSD 的归置组数量。在这种情况下,所有 8 个归置组都映射到 3 个不同的 OSD。
    在一个不太平衡的集群中,我们可以有以下输出用于归置组分布的统计数据,其标准差为 1.41421:
    #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
     
    生产环境实际操作命令:
    ceph osd getmap -o osdmap.bin
    osdmaptool osdmap.bin --upmap afterosdmap.txt --upmap-active --upmap-pool default.rgw.buckets.data  --upmap-max 10 --upmap-deviation 3
    osdmaptool: osdmap file 'osdmap.bin'
    writing upmap command output to: afterosdmap.txt
    checking for upmap cleanups
    upmap, max-count 10, max deviation 3
    limiting to pools default.rgw.buckets.data ([6])
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.076436 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0749774 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0752506 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0748528 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0755334 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0925288 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0924468 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0745339 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0750492 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0871084 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.108964 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0765064 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0753739 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0758705 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0748681 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0774396 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0788097 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.0996727 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 0.265296 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 1.06738 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 2.29387 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 2.20727 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 3.18508 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 5.79051 secs
    pools default.rgw.buckets.data
    prepared 10/10 changes
    Time elapsed 13.4537 secs
    pools default.rgw.buckets.data
    prepared 9/10 changes
    Time elapsed 215.485 secs
    pools default.rgw.buckets.data
    prepared 9/10 changes
    Time elapsed 40.737 secs
    pools default.rgw.buckets.data
    prepared 8/10 changes
    Time elapsed 158.041 secs
    pools default.rgw.buckets.data
    prepared 4/10 changes
    Time elapsed 281.47 secs
    pools default.rgw.buckets.data
    prepared 0/10 changes
    Time elapsed 214.633 secs
    Unable to find further optimization, or distribution is already perfect
    osd.1 pgs 44
    osd.2 pgs 44
    osd.3 pgs 81
    osd.5 pgs 65
    osd.6 pgs 58
    osd.7 pgs 56
    osd.9 pgs 25
    osd.10 pgs 52
    osd.11 pgs 67
    osd.13 pgs 64
    osd.14 pgs 58
    osd.15 pgs 44
    osd.17 pgs 49
    osd.18 pgs 17
    osd.19 pgs 81
    osd.21 pgs 63
    osd.22 pgs 55
    osd.23 pgs 51
    osd.25 pgs 39
    osd.26 pgs 59
    osd.27 pgs 80
    osd.28 pgs 81
    osd.29 pgs 43
    osd.30 pgs 64
    osd.31 pgs 64
    osd.32 pgs 64
    osd.33 pgs 43
    osd.34 pgs 86
    osd.35 pgs 57
    osd.36 pgs 65
    osd.37 pgs 65
    osd.38 pgs 59
    osd.39 pgs 81
    osd.40 pgs 81
    osd.41 pgs 64
    osd.42 pgs 52
    osd.43 pgs 81
    osd.44 pgs 64
    osd.45 pgs 92
    osd.46 pgs 80
    osd.47 pgs 81
    osd.48 pgs 64
    osd.49 pgs 58
    osd.50 pgs 64
    osd.51 pgs 42
    osd.52 pgs 64
    osd.53 pgs 81
    osd.54 pgs 48
    osd.55 pgs 49
    osd.56 pgs 48
    osd.57 pgs 69
    osd.58 pgs 64
    osd.59 pgs 81
    osd.60 pgs 81
    osd.61 pgs 64
    osd.62 pgs 80
    osd.63 pgs 50
    osd.64 pgs 70
    osd.65 pgs 80
    osd.66 pgs 60
    osd.67 pgs 57
    osd.68 pgs 81
    osd.69 pgs 59
    osd.77 pgs 88
    osd.78 pgs 95
    osd.79 pgs 75
    osd.80 pgs 75
    osd.81 pgs 77
    osd.82 pgs 88
    osd.83 pgs 89
    osd.84 pgs 75
    osd.85 pgs 75
    osd.86 pgs 78
    osd.87 pgs 75
    osd.88 pgs 75
    osd.89 pgs 75
    osd.90 pgs 75
    osd.91 pgs 94
    osd.92 pgs 99
    osd.93 pgs 96
    osd.94 pgs 75
    osd.95 pgs 88
    osd.96 pgs 75
    osd.97 pgs 75
    osd.98 pgs 75
    osd.99 pgs 88
    osd.100 pgs 104
    osd.101 pgs 89
    osd.102 pgs 75
    osd.103 pgs 62
    osd.104 pgs 77
    osd.105 pgs 70
    osd.106 pgs 92
    osd.107 pgs 84
    osd.108 pgs 90
    osd.109 pgs 80
    osd.110 pgs 97
    osd.111 pgs 92
    osd.112 pgs 75
    osd.113 pgs 75
    osd.114 pgs 92
    osd.115 pgs 75
    osd.116 pgs 79
    osd.117 pgs 87
    osd.118 pgs 94
    osd.119 pgs 75
    osd.120 pgs 75
    osd.121 pgs 75
    osd.122 pgs 103
    osd.123 pgs 81
    osd.124 pgs 75
    osd.125 pgs 75
    osd.126 pgs 70
    osd.127 pgs 75
    osd.128 pgs 76
    osd.129 pgs 77
    osd.130 pgs 95
    osd.131 pgs 94
    osd.132 pgs 75
    osd.133 pgs 75
    osd.134 pgs 75
    osd.135 pgs 89
    osd.136 pgs 82
    osd.137 pgs 77
    osd.138 pgs 64
    osd.139 pgs 75
    osd.140 pgs 80
    osd.141 pgs 64
    osd.142 pgs 54
    osd.143 pgs 80
    osd.144 pgs 86
    osd.145 pgs 18
    osd.146 pgs 80
    osd.147 pgs 75
    osd.148 pgs 75
    osd.149 pgs 91
    osd.150 pgs 89
    osd.151 pgs 92
    osd.152 pgs 80
    osd.153 pgs 75
    osd.154 pgs 64
    osd.155 pgs 80
    osd.156 pgs 51
    osd.157 pgs 58
    osd.158 pgs 80
    osd.159 pgs 49
    osd.160 pgs 39
    osd.161 pgs 64
    osd.162 pgs 43
    osd.163 pgs 64
    osd.164 pgs 80
    osd.165 pgs 75
    osd.166 pgs 53
    osd.167 pgs 75
    osd.168 pgs 75
    osd.169 pgs 98
    osd.170 pgs 75
    osd.171 pgs 95
    osd.172 pgs 75
    osd.173 pgs 94
    osd.174 pgs 75
    osd.175 pgs 75
    osd.176 pgs 75
    osd.177 pgs 89
    osd.178 pgs 94
    osd.179 pgs 80
    osd.180 pgs 86
    osd.181 pgs 83
    osd.182 pgs 32
    osd.183 pgs 92
    osd.184 pgs 95
    osd.185 pgs 95
    osd.186 pgs 95
    osd.187 pgs 91
    osd.188 pgs 75
    osd.189 pgs 75
    osd.190 pgs 92
    osd.191 pgs 75
    osd.192 pgs 93
    osd.193 pgs 95
    osd.194 pgs 91
    osd.195 pgs 75
    osd.196 pgs 91
    osd.197 pgs 80
    osd.198 pgs 75
    osd.199 pgs 75
    osd.200 pgs 75
    osd.201 pgs 75
    osd.202 pgs 75
    osd.203 pgs 81
    osd.204 pgs 75
    osd.205 pgs 75
    osd.206 pgs 75
    osd.207 pgs 95
    osd.208 pgs 75
    Total time elapsed 940.102 secs, 29 rounds
     
    扩展:使用 PG-UPMAP
    从 Luminous v12.2.z 开始,OSDMap 中有一个新的pg-upmap异常表,允许集群显式地将特定 PG 映射到特定 OSD。这允许集群对数据分布进行微调,在大多数情况下,可以在 OSD 之间完美分布 PG。
    这种新机制的关键警告是它要求所有客户端都理解OSDMap 中的新pg-upmap结构。
    启用
    默认情况下,新集群将启用此模块。集群必须只有发光的(和更新的)客户端。您可以通过以下方式关闭平衡器:
    ceph balancer off
    要允许在现有集群上使用该功能,您必须告诉集群它只需要通过以下方式支持发光(和更新)客户端:
    ceph osd set-require-min-compat-client luminous
    如果任何 pre-luminous 客户端或守护程序连接到监视器,此命令将失败。您可以查看正在使用的客户端版本:
    ceph features
    平衡器模块
    ceph-mgr的平衡器模块会自动平衡每个 OSD 的 PG 数量。见平衡器
    离线优化
    Upmap 条目使用内置于osdmaptool.
    1. 获取 osdmap 的最新副本:
    ceph osd getmap -o osdmap.bin
    2. 运行优化器:
    osdmaptool osdmap.bin --upmap out.txt [--upmap-pool <pool>]
             [--upmap-max <max-optimizations>] [--upmap-deviation <max-deviation>]
             [--upmap-active]
    强烈建议对每个池单独进行优化,或对类似使用的池集进行优化。您可以--upmap-pool多次指定该选项。“相似池”是指映射到相同设备并存储相同类型数据的池(例如,RBD 图像池,是;RGW 索引池和 RGW 数据池,否)。
    该max-optimizations值是要在运行中识别的最大上行映射条目数。与 ceph-mgr 平衡器模块一样,默认值为10,但如果您正在进行离线优化,则应使用更大的数字。如果它找不到任何额外的更改,它将提前停止(即,当池分布完美时)。
    该max-deviation值默认为5。如果 OSD PG 计数与计算的目标数量相差小于或等于此数量,则将被视为完美。
    该--upmap-active选项模拟主动平衡器在 upmap 模式下的行为。它一直循环直到 OSD 平衡并报告多少轮以及每轮需要多长时间。循环所用的时间表示 ceph-mgr 在尝试计算下一个优化计划时将消耗的 CPU 负载。
    3. 应用更改:
    source out.txt
    建议的更改写入out.txt上述示例中的输出文件。这些是普通的 ceph CLI 命令,可以运行这些命令将更改应用到集群。
    上述步骤可以根据需要重复多次,以实现每组池的完美 PG 分布。
    你可以看到有关该工具是通过传递做一些参数查看细节更改。--debug-osd 10 and even more with --debug-crush 10 to osdmaptool 
     
     作者:Dexter_Wang   工作岗位:某互联网公司资深云计算与存储工程师  联系邮箱:993852246@qq.com
  • 相关阅读:
    深入理解 Netty编码流程及WriteAndFlush()的实现
    深入理解 Netty-解码器架构与常用解码器
    暑假集训Day 5 P3963 [TJOI2013] 奖学金
    暑假集训日记Day xx
    P3226 [HNOI2012]集合选数 状压dp(思维题)
    线段树(毒瘤)总结
    P3622 [APIO2007]动物园
    暑假集训Day 4 P4163 [SCOI2007]排列 (状压dp)
    暑假集训Day2 互不侵犯(状压dp)
    暑假集训Day2 状压dp 特殊方格棋盘
  • 原文地址:https://www.cnblogs.com/dexter-wang/p/14962439.html
Copyright © 2011-2022 走看看