找回密码
 注册
查看: 635|回复: 5

ceph 分布式存储获取指定的pg分布

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-7-26 10:01:52 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 5 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-26 10:04:59 | 显示全部楼层
不难看出,PG分布的比较不均匀,但总体上来说还好,osd.28上的PG数最多 257个PG,而osd.0-14上PG数最少,只有0,平均下来,如果不同OSD之间使用量差距很大就需要引起注意

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-26 10:08:27 | 显示全部楼层
[root@compute03 ~]# ceph pg stat5 v8 {, u* _3 i2 Z  M+ `" o
[root@compute03 ~]# ceph pg dump_stuck
0 i0 L' h7 z' f. tok
8 c- `3 b& u4 U2 W- f; k0 V$ b[root@compute03 ~]# ceph pg dump
7 w' S. }& Y' |0 m! w9 }
& h4 h7 a  \- A[root@compute03 ~]# ceph pg dump_json
- z3 f  o# L% T$ \. x5 O( P...........................
1 @% }9 r2 m, Y; q$ Y$ ?$ P" r% G6 K3 z% L8 C, s- |+ G
sum 1635749 0 0 0 0 6869267547107 66904 3988 9997885 9997885 ) q1 J& I7 T  P2 y2 B" f
OSD_STAT USED    AVAIL   USED_RAW TOTAL   HB_PEERS                                                                       PG_SUM PRIMARY_PG_SUM 4 ?* L: c# n* J: ^/ v
31       696 GiB 6.6 TiB  698 GiB 7.3 TiB  [0,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30]    294            133 / ^0 T2 n1 I- g6 T+ S
30       638 GiB 6.7 TiB  640 GiB 7.3 TiB [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31]    273            129
% W$ R+ {/ ^+ o6 p7 v( ?+ g5 [29       674 GiB 6.6 TiB  675 GiB 7.3 TiB    [1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30]    277            147
& I7 x) P' V$ q: s0 j$ i28       751 GiB 6.5 TiB  753 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,27,29,30,31]    312            158 6 L, l1 N: g9 d2 l, k
27       746 GiB 6.5 TiB  748 GiB 7.3 TiB [1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31]    308            169
# s" r1 \# P4 C: `( L26       611 GiB 6.7 TiB  613 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,27,29,30,31]    271            127 # u! l- A, o' b
25       667 GiB 6.6 TiB  668 GiB 7.3 TiB    [1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,31]    287            152
% j/ W+ w- _  c. N24       681 GiB 6.6 TiB  683 GiB 7.3 TiB [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31]    290            137
/ w  T5 I7 l2 d23       681 GiB 6.6 TiB  683 GiB 7.3 TiB    [1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,31]    286            138 9 s; \8 Q7 U- z7 @) u  I: j7 N
22       614 GiB 6.7 TiB  616 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,23,24,25,26,27,28,29,30,31]    261            121 & I9 @8 }% d7 G
9        140 GiB 418 GiB  141 GiB 559 GiB                                    [1,3,5,6,7,8,10,11,12,13,14,17,21,23,26,29]    337            155
9 h- v7 h8 R4 [! z: a8         21 MiB 446 GiB  1.0 GiB 447 GiB                                    [0,2,4,6,7,9,10,11,12,13,16,19,20,25,28,31]      0              0
! E7 X+ ?$ D. m; d6 u* O7         21 MiB 446 GiB  1.0 GiB 447 GiB                                    [1,3,5,6,8,9,10,11,12,13,15,18,22,24,27,30]      0              0 ) N; _/ T/ b! |
6         21 MiB 446 GiB  1.0 GiB 447 GiB                                  [0,2,4,5,7,8,9,10,11,12,13,14,17,21,23,26,29]      0              0
( A8 E- D& r( o$ q! g2 g$ v2 P, Y5        6.4 GiB 887 GiB  7.4 GiB 894 GiB                              [0,1,2,3,4,6,7,8,9,10,11,12,13,16,19,20,25,28,31]     46             28 & v6 h9 m9 R- F0 e) E6 i5 f
4        5.9 GiB 887 GiB  6.9 GiB 894 GiB                              [0,1,2,3,5,6,7,8,9,10,11,12,13,15,18,22,24,27,30]     44             20
6 D3 m( @2 r# k; n6 C% _/ T7 r0        5.9 GiB 887 GiB  6.9 GiB 894 GiB                           [1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,21,23,26,29,31]     42             21
& E4 t8 u# w7 {# a0 O/ x1        4.6 GiB 889 GiB  5.6 GiB 894 GiB                              [0,2,3,4,5,6,7,8,9,10,11,12,13,15,18,22,24,27,30]     33             15
6 c; Y! t9 e% t8 S: T  E2        4.4 GiB 889 GiB  5.4 GiB 894 GiB                              [0,1,3,4,5,6,7,8,9,10,11,12,13,16,19,20,25,28,31]     33             16 8 ^! {" J8 f$ @/ _) P
3        7.7 GiB 886 GiB  8.7 GiB 894 GiB                              [0,1,2,4,5,6,7,8,9,10,11,12,13,14,17,21,23,26,29]     58             28
# ]/ f% A4 l5 k- O10       147 GiB 411 GiB  148 GiB 559 GiB                                     [0,2,4,6,7,8,9,11,12,13,15,18,22,24,27,30]    352            177
4 V+ V, }3 A5 ^) {# J8 C/ {0 }# C" T11       140 GiB 418 GiB  141 GiB 559 GiB                                     [1,3,5,6,7,8,9,10,12,13,16,19,20,25,28,31]    335            180 , \0 F/ p4 {8 O$ P+ k
12       110 GiB 2.1 TiB  112 GiB 2.2 TiB                                     [0,2,4,6,7,8,9,10,11,13,14,17,21,23,26,29]    512            259
  s! V/ k) d0 }4 `13       110 GiB 2.1 TiB  112 GiB 2.2 TiB                                  [1,3,5,6,7,8,9,10,11,12,14,16,18,22,24,27,30]    512            253 # S+ ]6 i+ M1 o$ `! ?
14       709 GiB 6.6 TiB  711 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]    291            142
6 G! J% o3 G+ f+ }+ s. F+ q) T15       662 GiB 6.6 TiB  664 GiB 7.3 TiB [1,3,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]    288            142 % }, |7 M, J, Y: V9 A; J2 ^& v' w
16       631 GiB 6.7 TiB  633 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]    280            145 3 z2 B$ E4 e0 H/ k6 M$ j! K9 [
17       629 GiB 6.7 TiB  630 GiB 7.3 TiB    [1,3,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29,30,31]    279            141
. W6 G' x6 _' ~. m; h& h18       617 GiB 6.7 TiB  619 GiB 7.3 TiB [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31]    266            126 0 n3 j0 z; u' r* {" _2 V- n
19       633 GiB 6.7 TiB  635 GiB 7.3 TiB    [1,3,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29,30,31]    271            146
0 h( g; x5 y6 ]" X1 N; h' E( m! Y20       730 GiB 6.6 TiB  732 GiB 7.3 TiB    [0,2,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,23,24,25,26,27,28,29,30,31]    305            160 ' G! N9 ], e; h1 L" h$ X
21       667 GiB 6.6 TiB  668 GiB 7.3 TiB [1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31]    281            147
6 }$ X0 Q. G6 x. J4 M( d9 x9 {sum       12 TiB 131 TiB   12 TiB 144 TiB                                                                                                      
. m0 Z8 l# ]5 N/ W% r; f2 w  |1 b/ I5 Y( c: F- m  {6 f
* NOTE: Omap statistics are gathered during deep scrub and may be inaccurate soon afterwards depending on utilisation. See http://docs.ceph.com/docs/master ... up/#omap-statistics for further details.

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-26 10:09:25 | 显示全部楼层
常见的PG状态:
8 B2 r! }- w% O! j# I* ?( k; [
2 R$ r0 @1 w# U9 p8 e3 h常见的pg状态:& G0 I. w8 }& t9 T
creating :创建中' k6 s7 m( l2 q! Q8 b
down :PG处于失效状态,PG处于离线状态) E, A$ f% @" R, Y* @; H4 f; N

; J$ v. \) B8 k2 N6 j repair (修复):PG正在被检查,被发现的任何不一致都将尽可能的被修复。
3 r; p) Y) }, Z2 D( O$ ], G  U) j9 p- ^. P! y9 |
peering(等待互联):
8 t0 w! k( N* g' |& M* S9 B) C1. 当ceph peering pg, ceph 将会把 pg 副本协定导入 osd, 当 ceph 完成 peering, 意味着 osd 同意当前 PG 状态, 并允许写入
# Y; g" t2 j) q9 w; V' _2. PG处于 peering 过程中, peering 由主 osd 发起的使存放 PG 副本的所有 OSD 就 PG 的所有对象和元素数据的状态达成一致的过程,  peering 过程完成后, 主 OSD 就可以接受客户端写请求.
1 [& J, d5 b; |) n# N% r! Q
* b. {! K' g9 C4 ~ active:0 Q7 B8 ^% y$ j- U
1. 当 ceph 完成 peering 过程, pg 将会变成 active, active 状态意味着 pg 中的数据变得可用, 主 pg 将可执行读写操作) c# Y: Q. I# Q% |, f) N4 [  N( F
2. PG 是活动的, 意味着 PG 中的数据可以被读写, 对该 PG 的操作请求都讲会被处理. & E. j% ~1 v+ V& z5 _
- z! \3 ^1 G8 F' j, n
clean: 干净态。PG当前不存在待修复的对象, Acting Set和Up Set内容一致,并且大小等于存储池的副本数
+ C; ^0 m: S8 e
! D: G% E( z8 b# f2 ]8 \
8 f# U* |( B+ x: w; I7 l( \ replay(重做):某OSD崩溃后,PG正在等待客户端重新发起操作。
, x7 D3 z) l2 l6 X2 v) R, ^6 J& ^: T
degraded(降级):
0 E" [$ Z0 ^) n# X+ @* j1. 当客户端写对象到主 osd, 主 OSD 会把数据写复制到对应复制 OSD, 在主 OSD 把对象写入存储后, PG 会显示为 degraded 状态, 直到主 osd 从复制 OSD 中接收到创建副本对象完成信息4 f8 W2 @; P: a! i! k
2. PG 处于 active+degraded 原因是因为 OSD 是处于活跃, 但并没有完成所有的对象副本写入, 假如 OSD DOWN, CEPH 标记每个 PG 分配到这个相关 OSD 的3 z- P: W7 D) p7 U% G0 p
状态为 degraded, 当 OSD 重新上线, OSD 将会重新恢复, * S' o5 X) Z- L! |6 I
3. 假如 OSD DOWN 并且 degraded 状态持续, CEPH 会标记 DOWN OSD, 并会对集群迁移相关 OSD 的数据, 对应时间由 mon osd down out interval 参数决定
" a! c' f; i7 j) m3 {# v4. PG 可以被北极为 degraded, 因为 ceph 在对应 PG 中无法找到一个或者多个相关的对象, 你不可以读写 unfound 对象, 你仍然可以访问标记为 degraded PG 的其他数据
' u6 _" B; }( S- c1 j3 W% D# N2 Y5. PG 中部分对象的副本数量未达到规定的数量
6 v5 x$ d& w# h. z" g8 c3 B1 T
inconsistent(不一致):PG副本出现不一致, 对象大小不正确或者恢复借宿后某个副本出现对象丢失现象* L. ~2 U4 q  L3 F6 k

  O8 k" o3 [6 H1 ^recoverying(恢复中):
; _9 [1 J4 y! F  B5 s! _ceph 设备故障容忍在一定范围的软件与硬件问题, 当 OSD 变 DOWN, 那么包含该 OSD 的 PG 副本都会有问题, 当 OSD 恢复, OSD 对应的 PG 将会更新1 Z2 s) g2 s# e0 W% I' D& Y9 j
并反映出当前状态, 在一段时间周期后, OSD 将会恢复 recoverying 状态' x1 [+ }- j, a5 w* Q
recovery 并非永远都有效, 因为硬件故障可能会导致多个 OSD 故障, 例如, 网络交换机故障, 可以导致集群中的多个主机及主机包含的 OSD 故障
: _1 l# n( \' V1 c1 @2 v) j当网络恢复之后, 每个 OSD 都必须执行恢复- {5 q4 D! G$ t) r" w2 _  x8 r4 w

, Q7 L6 ]+ M- ?. e% o7 T
( a5 Q! x, u3 q/ U+ Yback filling(回填):
! w6 ]' d) E+ k' |; [当新 OSD 加入集群, CRUSH 将会为集群新添加的 OSD 重新分配 PG, 强制新的 OSD 接受重新分配的 PG 并把一定数量的负载转移到新 OSD 中,back filling OSD 会在后台处理, 当 backfilling 完成, 新的 OSD 完成后, 将开始对请求进行服务/ T. T% y  f8 R' P' j* o8 E

$ _/ l2 g2 u! o. K5 [0 Z7 M- C在 backfill 操作期间, 你可以看到多种状态, ' W! \1 t' d7 q" A) r; v
backfill_wait 表示 backfill 操作挂起, 但 backfill 操作还没有开始 ( PG 正在等待开始回填操作 )
9 b% Y1 j- A# [, hbackfill 表示 backfill 操作正在执行. r( N) X( c( [/ e% p* Z
backfill_too_full 表示在请求 backfill 操作, 由于存储能力问题, 但不可以完成,
/ j& }5 B4 g' l: S# ?+ {$ i6 Sceph 提供设定管理装载重新分配 PG 关联到新的 OSD
% k. v5 m: o8 K/ k: \+ ]1 Y7 Xosd_max_backfills 设定最大数量并发 backfills 到一个 OSD, 默认 10
6 V4 T& j, ?' i' M0 F) [osd backfill full ratio  当 osd 达到负载, 允许 OSD 拒绝 backfill 请求, 默认 85%,
0 _: \; ^5 c7 O0 f( t假如 OSD 拒绝 backfill 请求,  osd backfill retry interval 将会生效, 默认 10 秒后重试
: z- @5 o, ~1 Q7 I$ S8 rosd backfill scan min ,  osd backfill scan max 管理检测时间间隔
/ i% y6 c) Q4 J0 P' W  W一个新 OSD 加入集群后, CRUSH 会把集群先有的一部分 PG 分配给他, 该过程称为回填, 回填进程完成后, 新 OSD 准备好了就可以对外提供服务。
6 ~2 n. X- z' z0 P) D0 M8 [" a, T8 y
' }6 Y. p& |8 Z! C7 F
6 }! ]: c% ~. V
remapped(重映射):
# V0 x, ]3 M' W当 pg 改变, 数据从旧的 osd 迁移到新的 osd, 新的主 osd 应该请求将会花费一段时间, 在这段时间内, 将会继续向旧主 osd 请求服务, 直到) A  q: o" c* f  F3 F
PG 迁移完成, 当数据迁移完成,  mapping 将会使用新的 OSD 响应主 OSD 服务
2 U# u2 ?7 q+ O+ d$ ?. a) W) E5 W8 Q) l; ~
当 PG 的 action set 变化后, 数据将会从旧 acting set 迁移到新 action set, 新主 OSD 需要过一段时间后才能提供服务, 因此它会让老的主 OSD 继续提供服务, 知道 PG 迁移完成, 数据迁移完成后, PG map 将会使用新 acting set 中的主 OSD 1 U% ^8 S7 J4 w0 x- [

+ F) L4 H, e8 Q7 e# D! u  [例如:
1 b; f% b% x7 P! @  Q9 |+ ?; r# B[root@ ~]# ceph osd map volumes rbd_id.volume-1421625f-a9a2-41d0-8023-4cec54b33a57% q) |/ S5 i  }8 E
osdmap e5276 pool 'volumes' (1) object 'rbd_id.volume-1421625f-a9a2-41d0-8023-4cec54b33a57' -> pg 1.2cdd8028 (1.28) -> up ([32,26,41], p32) acting ([32,26,41], p32)
, Q, U9 `! Z! T4 @2 q. h6 O
2 H# `. b0 o$ I/ ^; P' Dstale(旧):7 B4 @! c# q/ \1 x6 P) [
当 ceph 使用 heartbeat 确认主机与进程是否运行,  ceph osd daemon 可能由于网络临时故障, 获得一个卡住状态 (stuck state) 没有得到心跳回应$ w- e% i1 n, r
默认, osd daemon 会每 0.5 秒报告 PG, up 状态, 启动与故障分析,
9 H: w6 I0 ~0 V6 p% l  Q! y  p) j- C5 N假如 PG 中主 OSD 因为故障没有回应 monitor 或者其他 OSD 报告 主 osd down, 那么 monitor 将会标记 PG stale, % ?/ ^2 @8 ~" N3 r6 s4 c% Q
当你重启集群, 通常会看到 stale 状态, 直到 peering 处理完成, 2 H  W5 L$ K' q8 e0 }
在集群运行一段时候, 看到 stale 状态, 表示主 osd PG DOWN 或者没有主 osd 没有报告 PG 信息到 monitor 中4 }4 F( b1 |3 j) }8 t
PG 处于未知状态, monitors 在 PG map 改变后还没有收到过 PG 的更新, 启用一个集群后, 常常会看到主 peering 过程结束前 PG 处于该状态。6 Z, l# D3 a5 }: c+ ?& l: P/ J

: `8 `% b; P- O& r' E% I4 [; ?4 J7 G
scrubbing(清理中):! r1 Z& M( Q$ k$ v& z' D. U: |
PG 在做不一至性校验
& ^  ~, J; E0 C6 l7 s, Y有问题的PG:
$ n7 ~( L6 O3 m& Q% s" i, x$ l7 q$ ?inactive :PG 很长时间没有显示为 acitve 状态,  (不可执行读写请求), PG 不可以执行读写, 因为等待 OSD 更新数据到最新的备份状态. p2 o2 o0 Q; R  ^
2 p1 b: o7 T& @; u4 F5 ~
unclean:PG 很长时间都不是 clean 状态 (不可以完成之前恢复的操作),  PG 包含对象没有完成相应的复制副本数量, 通常都要执行恢复操作。! l& c) Z4 S6 P5 J2 _
9 h0 r7 H) \& z) z; N
stale:PG 状态很长时间没有被 ceph-osd 更新过, 标识存储在该 GP 中的节点显示为 DOWN,  PG 处于 unknown 状态, 因为 OSD 没有报告 monitor 由 mon osd report timeout 定义超时时间0 D& k& a8 f% v0 ^/ z, M7 a
ceph pg 常见问题处理:& F6 g4 Y$ O/ Z) q1 w

$ x3 o# ]0 k8 b6 ~$ g案例1:
1 h6 D' i, C# {# E8 X" M  C
* C+ |$ |* j) w' F$ Q3 F1. 检查集群状态发现有pg  inconsistent
! [% ]8 X2 l) g2 P" }* _" q通过ceph health detail查看具体的PG id。
+ v! o% h- d! U" k5 h" D5 D# {6 o% ~- J' h$ v, @' T
$ ceph health detail% K/ t6 W4 j% L% H4 S; {' A9 Q# D4 w  ]& `
HEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistent
( g( |# `! V, T  R' c- COSD_SCRUB_ERRORS 1 scrub errors
/ H1 v  o7 _: \* F) IPG_DAMAGED Possible data damage: 1 pg inconsistent
; q4 w" W8 ^3 m0 W    pg 3.0 is active+clean+inconsistent, acting [34,23,1]
4 X, u+ ~0 S2 G7 Z! w5 e9 u- ~0 n7 }6 o- G2 i( ~- n( q
通过上面输出可以看到当前PG3.0处于inconsistent,并且它的三副本分别在osd.34,osd.23,osd.1。
  u0 k0 z5 w" i# Q" e' a, s7 v: [0 B. T
2. 修复PG 3.0" i- t( ~; c+ t' ?$ w3 U: @: }
$ ceph pg repair 3.0& v" @8 I$ \& w
instructing pg 3.0 on osd.34 to repair* T3 ~, B* n9 N$ f

/ V2 x8 n3 S: B: P#查看集群监控状态
4 D4 \( h4 d* r9 G) r3 R0 v  L5 U3 f$ ceph health detail
2 g- f2 A/ M" R& m9 r9 V' }HEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistent, 1 pg repair1 u( W% W# u& v
OSD_SCRUB_ERRORS 1 scrub errors
4 ?  @  _7 E5 Y0 @PG_DAMAGED Possible data damage: 1 pg inconsistent, 1 pg repair$ @. m, r1 C* Q- x8 `! @
    pg 3.0 is active+clean+scrubbing+deep+inconsistent+repair, acting [34,23,1]: X. `# W' ~, _8 C, U& t
1 ^! @/ o% {) S
#集群监控状态已恢复正常
- \; P& k; i" z  q$ ceph health detail. B! i" u7 m. R) ?3 c
HEALTH_OK
3 S1 b" |6 B9 t% `) [/ H$ L2 p0 U  C1 G% R) s$ e/ e
3. 根据以往经验,pg出现inconsistent很有可能是对应的osd磁盘上有逻辑坏道,可以去查看osd [34,23,1]的磁盘,查看对应节点上的dmesg日志。* Q' W& c9 L# N# R2 K) I
dimes -T |grep -I err) e2 V' M) b' K8 h% p6 H
案例2: osd挂了8 L* k( j5 z! \; O5 m. W7 n( y
' O' d( w& T5 k  y
当osd短暂挂掉的时候,因为集群内还存在着两个副本,是可以正常写入的,但是 osd.34 内的数据并没有得到更新,过了一会osd.34上线了,这个时候osd.34的数据是陈旧的,就通过其他的OSD 向 osd.34 进行数据的恢复,使其数据为最新的,而这个恢复的过程中,PG的状态会从inconsistent ->recover -> clean,最终恢复正常。( r" O# z0 P, f- e) _8 C  K  k3 K
这是集群故障自愈一种场景。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-26 10:14:15 | 显示全部楼层
1、查看ceph集群配置信息* r9 a" p: ]3 K  q, X

- o; u$ E3 P" s' C" C
+ e( d% x/ |" A1 f2 j : F5 e; M; m- A1 S3 j
ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show
% M0 E  ]1 e$ M4 N+ x2、在部署节点修改了ceph.conf文件,将新配置推送至全部的ceph节点2 s2 ^5 _: N! f- ^7 _. T* r4 S

+ ~. O4 u: y' ~- t) v- Eceph-deploy  --overwrite-conf config push dlp node1 node2 node3! h- U8 b: H6 Z7 y: H, U1 x( H4 ?
3、检查仲裁状态,查看mon添加是否成功
' Y, u3 j! N1 Z0 E4 Y3 x4 R/ U' e* p# E" M0 V! J0 @
ceph quorum_status --format json-pretty
( j+ G# R, A' m, v/ s8 R& X' X4、列式pool列表/ e& |: C: Q+ G6 D$ I: [5 `5 c2 k
# L; X+ w2 H2 w. u4 E( G9 ~
ceph osd lspools) ~# D& t4 B, ]' E" w1 g5 f
5、列示pool详细信息
: U& K6 I9 z1 A: K3 r1 K% Z6 v; I2 r0 C8 E; {
ceph osd dump | grep pool- B* K  r- m  O+ _& X
6、检查pool的副本数' {  }$ M5 u8 D4 g$ Q' V. A) b
; k+ v/ J: |% [1 T8 {  X9 v# ~* q
ceph osd dump|grep -i size$ o% |! ]8 ~3 ~6 |
7、创建pool  ^, B! @3 J! f1 v0 f
7 y, J' |2 u* \
ceph osd pool create pooltest 128
1 L+ ~1 Q! U) q. y+ V6 E# K8、删除pool5 V6 {# V0 f6 I4 i1 t/ ^
/ n' |* q* ]9 i
ceph osd pool delete data  #会提示确认信息(增加命令,如下)
1 L+ S" W) z7 Q+ h* o+ Z7 lceph osd pool delete data data  --yes-i-really-really-mean-it
) }6 Y1 L9 a5 I9、设置pool副本数
+ l- q# h4 h! x; T* h. M0 U, {6 P  m* K$ L& d. F
ceph osd pool get data size
. H1 N* `) O# d9 f' Oceph osd pool set data size 3
% c5 E, o$ P+ S' n* K  E10、设置pool配额- X' t3 X6 V; X6 G  e+ a1 F
4 ?3 s) \! Q; V7 C% J2 h, l" G
ceph osd pool set-quota data max_objects 100                              #最大100个对象
( A, u3 e3 g% k9 ^ceph osd pool set-quota data max_bytes $((10 * 1024 * 1024 * 1024))       #容量大小最大为10G( Z; o# u6 b- a% ^2 m- t* p/ [
11、重命名pool
0 `* B0 |0 ^2 l0 }3 a1 G6 f
5 [& a# e& f- l4 Q: Mceph osd pool rename data date+ I% G% o# G& j) e
12、PG, Placement Groups。CRUSH先将数据分解成一组对象,然后根据对象名称、复制级别和系统中的PG数等信息执行散列操作,再将结果生成PG ID。可以将PG看做一个逻辑容器,这个容器包含多个对 象,同时这个逻辑对象映射之多个OSD上。如果没有PG,在成千上万个OSD上管理和跟踪数百万计的对象的复制和传播是相当困难的。没有PG这一层,管理海量的对象所消耗的计算资源也是不可想象的。建议每个OSD上配置50~100个PG。' y2 t  n- h$ y- v1 S" Z: I

2 \7 J4 @1 x5 H1 J/ D$ k9 B  PGP是为了实现定位而设置的PG,它的值应该和PG的总数(即pg_num)保持一致。对于Ceph的一个pool而言,如果增加pg_num,还应该调整pgp_num为同样的值,这样集群才可以开始再平衡。
4 n# U" h! r7 W$ G! Q# x* s& o9 m, t) ]6 q% n$ @
      参数pg_num定义了PG的数量,PG映射至OSD。当任意pool的PG数增加时,PG依然保持和源OSD的映射。直至目前,Ceph还未开始再平衡。此时,增加pgp_num的值,PG才开始从源OSD迁移至其他的OSD,正式开始再平衡。PGP,Placement Groups of Placement。
# I) i' \! c& }4 J1 z, o) Z% |0 Y( T; W+ ?
  计算PG数:
2 x& c+ L1 b# W* T# V6 ~& G5 |' ~1 x, m
5 G0 p7 N" V* ^4 D0 N. m( Y$ E
  ceph集群中的PG总数:
9 \! l$ S; G% H$ F3 Y
! I/ n# l3 p2 ^1 p- ~PG总数 = (OSD总数 * 100) / 最大副本数        ** 结果必须舍入到最接近的2的N次方幂的值
$ y: Y  y. i: `4 D9 U  ceph集群中每个pool中的PG总数:
  ]' ^$ R% ?) r9 G* E+ Y5 D+ I, C! n! g* i; D+ [/ I& h" q6 S, h
存储池PG总数 = (OSD总数 * 100 / 最大副本数) / 池数
. S9 |- u* K+ X4 M0 X! o; r  获取现有的PG数和PGP数值:
5 {" d: ]% p9 D' X% _- B& B, O/ I9 q* u
ceph osd pool get data pg_num: ]8 ^- V" J# P8 n
ceph osd pool get data pgp_num" g# f. g% o! ]7 P4 m7 K* Y
13、修改存储池的PG和PGP
2 o" i/ h8 j+ E7 ?9 ]' _
  Q3 Q% r1 Z- x. ~) Fceph osd pool set data pg_num = 19 q5 |8 Y" }% @4 g2 R$ U
ceph osd pool set data pgp_num = 1

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-26 10:17:54 | 显示全部楼层
修复方式 wanted: command to clear 'incomplete' PGs
7 q7 L* @$ f$ f比如:pg 1.1是incomplete,先对比pg 1.1的主副本之间 pg里面的对象数 哪个对象数多 就把哪个pg export出来
0 s8 D1 l1 V" @- Y% c: e$ `+ Y) [然后import到对象数少的pg里面 然后再mark complete,一定要先export pg备份。. v& K: ^% Q; e8 x. S% y
简单方式,数据可能又丢的情况% k: T+ k. `% S, t3 y
" _# o4 t% K" i8 a; o% z- n
a. stop the osd that is primary for the incomplete PG;   
  i; k* P0 ]7 d0 S/ e1 Q* c9 I b. run: ceph-objectstore-tool --data-path ... --journal-path ... --pgid $PGID --op mark-complete    6 p1 P7 h5 a0 a& i+ O, X0 S+ H
c. start the osd. , J  G8 c3 d1 e3 y+ C7 B2 p0 T
0 w0 A9 m* n/ k& Y2 ?- a% t
保证数据完整性- }6 x& O4 W' |1 h$ h

+ N/ {/ H' A! V, Y9 R #1. 查看pg 1.1主副本里面的对象数,假设主本对象数多,则到主本所在osd节点执行 # [  T) G. ^3 s
$ ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0/ --journal-path /var/lib/ceph/osd/ceph-0/journal --pgid 1.1 --op export --file /home/pg1.1
0 ~! R0 ]3 r( ~- k2 P% b2 m& I
2 _9 a  j" S, W% h  ]' B7 [1 r#2. 然后将/home/pg1.1 scp到副本所在节点(有多个副本,每个副本都要这么操作),然后到副本所在节点执行   s, h* N! n1 M: W4 r
$ ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-1/ --journal-path /var/lib/ceph/osd/ceph-1/journal --pgid 1.1 --op import --file /home/pg1.1 : T: w4 q+ n- m' u( y: n
. k* H# J" _8 j
#3. 然后再makr complete $ ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-1/ --journal-path /var/lib/ceph/osd/ceph-1/journal --pgid 1.1 --op mark-complete  ; J0 h' a5 y2 `( b1 H  @

4 n& D5 c4 ]& P! J#4. 最后启动osd $ start osd
& ]* ~6 ?7 F5 S/ R5 n+ A: l4 H) z6 p/ L- P; h7 E
验证方案1 n8 M; w  s6 U. P

, ~6 M- J3 M0 C. B8 x+ O #1. 把状态incomplete的pg,标记为complete。建议操作前,先在测试环境验证,并熟悉ceph-objectstore-tool工具的使用。 & f1 M* i7 S$ u$ V) z5 o) ^% E* G
PS:使用ceph-objectstore-tool之前需要停止当前操作的osd,否则会报错。  
1 V5 i+ r& S, J
( x: ^) L) N, `#2. 查询pg 7.123的详细信息,在线使用查询
* v; v* i8 m% s* ^0 yceph pg 7.123 query > /export/pg-7.123-query.txt  
& J: c+ y* V& |, W0 S" {
' e5 [+ D" e* W& L) S2 S#3. 每个osd副本节点进行查询/ {# I4 C$ N) C, U6 Q
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-641/ --type bluestore --pgid 7.123 --op info > /export/pg-7.123-info-osd641.txt % {) _& v' O* d8 S8 h- x. V
: e0 O% C- ^+ t! v( Q0 {
pg 7.123 OSD 1 存在1,2,3,4,5 object 9 i! d2 _, D0 Q! |
pg 7.123 OSD 2 存在1,2,3,6 object 4 h6 `0 v/ A$ ]! i1 \% B
pg 7.123 OSD 2 存在1,2,3,7 object 9 b0 E/ A: |7 a7 K/ i; i
' c; ^" S& v  s4 N& m& ^
#4. 查询对比数据 ! d9 y6 |* b' u' y% m+ B* Y8 E& a
#4.1 导出pg的object清单
6 d- s, w6 _* R8 Z5 Hceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-641/ --type bluestore --pgid 7.123 --op list > /export/pg-7.123-object-list-osd-641.txt  
# a& v. w% c+ {, z; u
7 X: g- F: e& {7 k#4.2 查询pg的object数量
# U+ p: ~6 y+ ~ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-641/ --type bluestore --pgid 7.123 --op list|wc -l  % N( W: d( W" v1 l& Z7 w& P

8 F# w/ k$ m" b: \; w% _, o  t& f#4.3 对比所有副本的object是否一致。
& ]8 I. [% z% g, P+ J0 }' bdiff -u /export/pg-7.123-object-list-osd-1.txt /export/pg-7.123-object-list-osd-2.txt
2 n/ t7 l* O/ G  i# A5 G5 @比如:pg 7.123是incomplete,对比7.123的所有副本之间pg里面的object数量。  " l/ w$ d& m& R5 v) U
- 如上述情况,diff对比后,每个副本(主从所有副本)的object list是否一致。避免有数据不一致。使用数量最多,并且diff对比后,数量最多的包含所有object的备份。  
, o: }4 a( }, h: d5 E" D" b- 如上述情况,diff对比后,数量是不一致,最多的不包含所有的object,则需要考虑不覆盖导入,再导出。最终使用完整的所有的object进行导入。注:import是需要提前remove pg后进行导入,等于覆盖导入。  
. `& H) a3 ]7 S1 r  E  E3 _" h0 S- 如上述情况,diff对比后,数据是一致,则使用object数量最多的备份,然后import到object数量少的pg里面 然后在所有副本mark complete,一定要先在所有副本的osd节点export pg备份,避免异常后可恢复pg。  
6 g% B9 a2 a  e! J8 Q
7 D# Q9 L3 {$ A#5. 导出备份 , p8 Z: a7 }) z; p
查看pg 7.123所有副本里面的object数量,参考上述情况,假设osd-641的object数量多,数据diff对比一致后,则到object数量最多,object list一致的副本osd节点执行(最好是每个副本都进行导出备份,为0也需要导出备份)' V0 h0 n3 A4 r
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-641/ --type bluestore --pgid 7.123 --op export --file /export/pg1.414-osd-1.obj
+ |% v: u, C# ~& B/ }/ }+ [5 l- n) x
#6. 导入备份 / [- m. u* f) s! {) u9 @% Q
然后将/export/pg1.414-osd-1.obj scp到副本所在节点,在对象少的副本osd节点执行导入。(最好是每个副本都进行导出备份,为0也需要导出备份) * m* r7 K0 D  F  t, j
将指定的pg元数据导入到当前pg,导入前需要先删除当前pg(remove之前请先export备份一下pg数据)。需要remove当前pg,否则无法导入,提示已存在。
$ |& H2 M5 u5 B$ J: @  jceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-57/ --type bluestore --pgid 7.123 --op remove 需要加–force才可以删除。! Y* n' v7 q1 ^9 @; K
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-57/ --type bluestore --pgid 7.123 --op import --file /export/pg1.414-osd-1.obj  ! Q2 @) |; I8 W0 h8 ^8 G
- j% m+ x# k  c. E
#7. 标记pg状态,makr complete(主从所有副本执行) % A9 e1 T& f# P& V
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-57/ --type bluestore --pgid 7.123" A+ R) F# X9 d' K4 @

+ Q& _. |# h/ x0 M8 ~: n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-11 23:03 , Processed in 0.024034 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表