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

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

[复制链接]

0

主题

0

回帖

9

积分

管理员

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

0

主题

0

回帖

9

积分

管理员

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

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
 楼主| 发表于 2022-7-26 10:08:27 | 显示全部楼层
[root@compute03 ~]# ceph pg stat. A- X* G4 J+ {- L4 l, S
[root@compute03 ~]# ceph pg dump_stuck
9 u* x/ G1 J$ b# l1 p5 zok0 G) C$ a; P* \$ q7 [/ F5 {; J
[root@compute03 ~]# ceph pg dump
& S- m) s" h  C" D3 o' r0 {) d6 H1 S0 |! t
[root@compute03 ~]# ceph pg dump_json2 v1 H  V& }( I! |- |: h
...........................
( ^8 h' }1 e9 g3 s8 A7 a. v! u9 }0 p" g8 C6 M+ W' _# I! Q
sum 1635749 0 0 0 0 6869267547107 66904 3988 9997885 9997885
  D, X) e0 N' B3 I4 t# `% y/ B# IOSD_STAT USED    AVAIL   USED_RAW TOTAL   HB_PEERS                                                                       PG_SUM PRIMARY_PG_SUM
% P0 `) \1 c: E. X0 l8 @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
8 J+ a9 b1 c4 i6 j6 S8 \+ H0 P9 w5 ]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
4 i0 n& P1 f9 K1 m29       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
: k: x4 R- V0 g, f28       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
& |$ d7 b8 |) V( _* R2 P6 I  l& G8 g27       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 2 p1 ]; ~& w; |" O9 h, i5 T* Q
26       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 ! r; b& g/ P1 G9 r$ u+ S
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
' v% ~# U. ~+ s24       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 ' _0 ^0 Z" s/ ?
23       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
3 k9 }1 P9 N) S) X/ A7 s8 I/ y22       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
  F' F. X; Q9 r8 @! M, ^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
" U% O9 L8 a4 F8 i8         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
' M+ c) |1 A) U' Q) {7         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
+ j% Y/ s8 M' z. ~! s6         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
: q% h- e( C+ B) e4 y  `5        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
# }1 }1 ~  k5 \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 % k. W5 v5 C% u0 r
0        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 6 @6 Q" }% ]0 s0 B2 j+ T- T
1        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
, Y* B3 e: M  ~9 I# e! g/ n2        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 6 p( H  u" C8 L+ ]6 A
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
% y) R/ j3 |- y; F* K: }& g" b' f- K) v10       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 * r* c! U3 c7 m# V) x' C& F
11       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
) v* z& K- P* F+ x12       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 . O* i. l2 J7 ?- d
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 5 i$ x9 m4 c9 Z9 [1 ]# P
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
5 @* N$ f2 m8 E+ [" n15       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
4 H7 g8 W4 ?4 F: X( j9 I0 H% g9 V16       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 + v. y6 {7 R% T9 e% K/ p8 P
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
  r9 C+ Q" S) ?- u18       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 7 t' o% r+ J+ o
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 # ]) Q/ E6 {8 M2 S6 X
20       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   I' l  _3 C# G. K0 x" I
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 X6 g3 ~# a, g6 h$ h) Z, h' p% ^
sum       12 TiB 131 TiB   12 TiB 144 TiB                                                                                                      
+ E( t) h. |" b6 x$ w2 r
/ X# T- x; I  n% e6 ?  E4 G& t* 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.

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
 楼主| 发表于 2022-7-26 10:09:25 | 显示全部楼层
常见的PG状态:8 ?0 K% X- @# f" O+ J5 [

0 P7 L* Q$ p1 r2 m: o常见的pg状态:1 K/ w: w" q5 B1 W+ R' `( j6 ~5 B
creating :创建中
+ X: C; j" x& N down :PG处于失效状态,PG处于离线状态! p" U2 Z8 V/ v! x0 Y, S4 \
. h  J, ]6 Q$ S" v! \( i8 W2 y
repair (修复):PG正在被检查,被发现的任何不一致都将尽可能的被修复。5 _4 S" u* n7 l1 @& n& _! d
8 g& h/ e3 L1 G. r" D# G7 u
peering(等待互联):
  x3 r# Y  |; ?1 ~2 c1. 当ceph peering pg, ceph 将会把 pg 副本协定导入 osd, 当 ceph 完成 peering, 意味着 osd 同意当前 PG 状态, 并允许写入$ g, E. g2 a; \3 c2 Q8 f% C
2. PG处于 peering 过程中, peering 由主 osd 发起的使存放 PG 副本的所有 OSD 就 PG 的所有对象和元素数据的状态达成一致的过程,  peering 过程完成后, 主 OSD 就可以接受客户端写请求.# y  G( S) z/ n- h" l" I# K+ A2 F' v
- e! g3 b7 q$ B
active:
' @9 z6 m% X" H: l4 H3 z4 C" e/ B! X1. 当 ceph 完成 peering 过程, pg 将会变成 active, active 状态意味着 pg 中的数据变得可用, 主 pg 将可执行读写操作
% N* }7 ?" n' ^1 x, j) ~+ a; I2. PG 是活动的, 意味着 PG 中的数据可以被读写, 对该 PG 的操作请求都讲会被处理.
0 W( u9 S2 v* U
- k4 i4 C( t$ o clean: 干净态。PG当前不存在待修复的对象, Acting Set和Up Set内容一致,并且大小等于存储池的副本数9 a/ o) _) G( E3 u) ?8 ^- m) u
; ~) m! Z- J: H+ S

+ O' Y0 p: v# M* T replay(重做):某OSD崩溃后,PG正在等待客户端重新发起操作。
2 A! ^; J9 ^: E
5 A9 |% c* T/ R9 G3 R; ~degraded(降级):3 Y! X! x/ @/ u" O' U2 Q& f4 o
1. 当客户端写对象到主 osd, 主 OSD 会把数据写复制到对应复制 OSD, 在主 OSD 把对象写入存储后, PG 会显示为 degraded 状态, 直到主 osd 从复制 OSD 中接收到创建副本对象完成信息
7 `9 t7 y! R7 U  {9 y& M% b5 `3 q2 V2. PG 处于 active+degraded 原因是因为 OSD 是处于活跃, 但并没有完成所有的对象副本写入, 假如 OSD DOWN, CEPH 标记每个 PG 分配到这个相关 OSD 的
& P! b: M* V. T& x7 R3 q状态为 degraded, 当 OSD 重新上线, OSD 将会重新恢复, 4 z' t# s7 K+ ~
3. 假如 OSD DOWN 并且 degraded 状态持续, CEPH 会标记 DOWN OSD, 并会对集群迁移相关 OSD 的数据, 对应时间由 mon osd down out interval 参数决定
1 f! y6 f  G3 J4. PG 可以被北极为 degraded, 因为 ceph 在对应 PG 中无法找到一个或者多个相关的对象, 你不可以读写 unfound 对象, 你仍然可以访问标记为 degraded PG 的其他数据, N7 f8 s  y( [: p2 a, u( I
5. PG 中部分对象的副本数量未达到规定的数量
6 `$ i5 v% F& n# S5 O5 G) w2 p; |! v+ x% K' V
inconsistent(不一致):PG副本出现不一致, 对象大小不正确或者恢复借宿后某个副本出现对象丢失现象
8 J3 f8 }% n9 h0 u2 Q- H$ R9 T; W7 w
recoverying(恢复中):% |3 ?* R& J4 K5 w
ceph 设备故障容忍在一定范围的软件与硬件问题, 当 OSD 变 DOWN, 那么包含该 OSD 的 PG 副本都会有问题, 当 OSD 恢复, OSD 对应的 PG 将会更新
- g5 m" m, r, C5 }并反映出当前状态, 在一段时间周期后, OSD 将会恢复 recoverying 状态( @6 s5 f0 B$ c4 A1 t2 @- B
recovery 并非永远都有效, 因为硬件故障可能会导致多个 OSD 故障, 例如, 网络交换机故障, 可以导致集群中的多个主机及主机包含的 OSD 故障
' k! |0 e+ ^, j, c* {当网络恢复之后, 每个 OSD 都必须执行恢复
4 {6 e+ k9 Q- `9 J0 U* \6 g7 Y3 e9 j6 t

' W1 M& \" d- G1 \( B& Xback filling(回填):
3 ?3 r5 D" v6 A; ^8 G, E( ~- S) z当新 OSD 加入集群, CRUSH 将会为集群新添加的 OSD 重新分配 PG, 强制新的 OSD 接受重新分配的 PG 并把一定数量的负载转移到新 OSD 中,back filling OSD 会在后台处理, 当 backfilling 完成, 新的 OSD 完成后, 将开始对请求进行服务+ R* B" P. T* `0 A) S' J
* I& Z  p. M5 V
在 backfill 操作期间, 你可以看到多种状态,
- d. Z4 r3 x  t3 F& \- kbackfill_wait 表示 backfill 操作挂起, 但 backfill 操作还没有开始 ( PG 正在等待开始回填操作 )' [3 v/ D6 K# s* x5 h8 I
backfill 表示 backfill 操作正在执行
; h. e6 W9 `3 h# Ybackfill_too_full 表示在请求 backfill 操作, 由于存储能力问题, 但不可以完成, 2 ?! z4 X2 N, W9 R. E5 J! J) T# v
ceph 提供设定管理装载重新分配 PG 关联到新的 OSD
! R& w/ s2 p! S3 Q  E: O. uosd_max_backfills 设定最大数量并发 backfills 到一个 OSD, 默认 10" p- l5 g$ l4 `) `. E7 c
osd backfill full ratio  当 osd 达到负载, 允许 OSD 拒绝 backfill 请求, 默认 85%,
  E8 d1 T( O5 G7 K7 `/ D假如 OSD 拒绝 backfill 请求,  osd backfill retry interval 将会生效, 默认 10 秒后重试; t7 h* k, o# H5 e% }9 q" v; ?
osd backfill scan min ,  osd backfill scan max 管理检测时间间隔9 q6 |% {6 f/ l( b+ E/ }9 r
一个新 OSD 加入集群后, CRUSH 会把集群先有的一部分 PG 分配给他, 该过程称为回填, 回填进程完成后, 新 OSD 准备好了就可以对外提供服务。' D2 E! [0 Q) m  j7 E7 \

6 {8 o; A+ p% ~$ e8 w* v
" a1 _6 c, y  F4 Q* I; a8 Y, `& @+ s" d( S7 @( K3 ]& r, x$ W; u
remapped(重映射):/ g+ K: D+ m, |2 _0 C
当 pg 改变, 数据从旧的 osd 迁移到新的 osd, 新的主 osd 应该请求将会花费一段时间, 在这段时间内, 将会继续向旧主 osd 请求服务, 直到3 E3 g+ J0 y' c4 j9 K3 r
PG 迁移完成, 当数据迁移完成,  mapping 将会使用新的 OSD 响应主 OSD 服务7 q/ B: u3 T: w+ @

' f0 h" J" y3 u+ b0 D& U$ K$ w" J; X当 PG 的 action set 变化后, 数据将会从旧 acting set 迁移到新 action set, 新主 OSD 需要过一段时间后才能提供服务, 因此它会让老的主 OSD 继续提供服务, 知道 PG 迁移完成, 数据迁移完成后, PG map 将会使用新 acting set 中的主 OSD ! f. N* c) J2 ~. G8 P

& o. j' [  e% d: W例如:) `6 X3 O2 [/ v4 z6 P4 ^( A
[root@ ~]# ceph osd map volumes rbd_id.volume-1421625f-a9a2-41d0-8023-4cec54b33a570 c0 w# \3 H5 d0 h( g  ^9 g6 Y
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)
3 J! I; R4 k( X4 @/ v* S) M
" R9 C* k% X" i; C2 A& Jstale(旧):
" k7 `) [4 R, O' q当 ceph 使用 heartbeat 确认主机与进程是否运行,  ceph osd daemon 可能由于网络临时故障, 获得一个卡住状态 (stuck state) 没有得到心跳回应7 L2 s- f( W- a: _5 Y- D
默认, osd daemon 会每 0.5 秒报告 PG, up 状态, 启动与故障分析,
8 m2 e# P/ {/ Q6 n1 x假如 PG 中主 OSD 因为故障没有回应 monitor 或者其他 OSD 报告 主 osd down, 那么 monitor 将会标记 PG stale, % Y* K4 |- |, w/ f/ j9 r) x5 x
当你重启集群, 通常会看到 stale 状态, 直到 peering 处理完成, : d# O+ Y! }* j- [( r
在集群运行一段时候, 看到 stale 状态, 表示主 osd PG DOWN 或者没有主 osd 没有报告 PG 信息到 monitor 中
; ~; L7 Y# W# N7 IPG 处于未知状态, monitors 在 PG map 改变后还没有收到过 PG 的更新, 启用一个集群后, 常常会看到主 peering 过程结束前 PG 处于该状态。
5 W4 l; ~) j; v1 H5 T% l" s' J; `7 R7 B7 u. j3 y

5 A5 W7 F* E& E$ {scrubbing(清理中):/ i- `2 S% H) _' J3 F
PG 在做不一至性校验
' Y* b  r3 s# B; {3 \9 l8 w9 M有问题的PG:
8 C& g0 s3 e, V! m: m: v' E2 I+ ginactive :PG 很长时间没有显示为 acitve 状态,  (不可执行读写请求), PG 不可以执行读写, 因为等待 OSD 更新数据到最新的备份状态7 q% u& `5 }- t: I+ Y5 c

( v9 V3 S8 y( W, D6 d/ Iunclean:PG 很长时间都不是 clean 状态 (不可以完成之前恢复的操作),  PG 包含对象没有完成相应的复制副本数量, 通常都要执行恢复操作。
1 v# P7 m9 K) ^0 D' m$ `0 ]+ O! D6 @$ k2 D1 S
stale:PG 状态很长时间没有被 ceph-osd 更新过, 标识存储在该 GP 中的节点显示为 DOWN,  PG 处于 unknown 状态, 因为 OSD 没有报告 monitor 由 mon osd report timeout 定义超时时间
  u) \. m3 L) E# z5 d* Z- Jceph pg 常见问题处理:
) u# _" f0 z9 e0 L7 l& Y) l( T2 F4 z4 e% V
案例1:! V% q- D; ~8 B9 W) A3 c
5 _7 g+ R- V9 u* Q' i4 \7 M+ d( O
1. 检查集群状态发现有pg  inconsistent8 A8 @8 T1 @0 n- U  ?& C' c
通过ceph health detail查看具体的PG id。
) J, {6 H$ H+ D- T7 t7 Y# \
4 W* B' P: Z8 B$ o$ ceph health detail% R% C+ A/ q7 x, K$ j
HEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistent  L; c8 z4 Q' c) c
OSD_SCRUB_ERRORS 1 scrub errors0 K6 H- Q$ y$ J# Q7 c3 Q
PG_DAMAGED Possible data damage: 1 pg inconsistent# E$ }( S+ J+ Y
    pg 3.0 is active+clean+inconsistent, acting [34,23,1]
9 x1 y$ l3 u0 C' J, Y6 n3 e9 c7 x% Y- d9 Z" c& s
通过上面输出可以看到当前PG3.0处于inconsistent,并且它的三副本分别在osd.34,osd.23,osd.1。
% v% \5 {* ^6 C% v0 S* K- s1 ^
2. 修复PG 3.0
- j1 }5 W7 I; o* o3 N. B$ ceph pg repair 3.02 Y0 X2 z: t  u4 H3 M) `
instructing pg 3.0 on osd.34 to repair* U3 ^" L4 k  [4 A- }

* [( s/ h  w# I' V+ H+ W#查看集群监控状态
' c* y% a4 R1 \* _1 a1 l- |$ ceph health detail
1 A% E5 C& r" g8 E1 ^HEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistent, 1 pg repair
. {) L1 Y5 o% j  ?OSD_SCRUB_ERRORS 1 scrub errors( _6 Z0 ~$ M! V$ p1 F% s) J+ ~
PG_DAMAGED Possible data damage: 1 pg inconsistent, 1 pg repair
4 d' U4 _$ I$ G1 u    pg 3.0 is active+clean+scrubbing+deep+inconsistent+repair, acting [34,23,1]
# k. L9 d4 y! g2 G0 u8 [  p* O$ I5 h; e6 N; N% d2 _
#集群监控状态已恢复正常
1 r; ?4 T) T3 m. i  t! n! Q" D: X$ ceph health detail
4 k, @. R! @/ k* j) K3 c/ c9 [# MHEALTH_OK
8 c/ M1 Z. ?9 S. |$ d
  `, j! l5 j0 o3. 根据以往经验,pg出现inconsistent很有可能是对应的osd磁盘上有逻辑坏道,可以去查看osd [34,23,1]的磁盘,查看对应节点上的dmesg日志。& X1 S. x0 Z( L6 B0 j/ Y; n' C
dimes -T |grep -I err' d5 R3 t/ \. h8 H  d
案例2: osd挂了3 J8 E6 K3 K  c+ x$ H  A- Q( k( p/ ?

: ?. ^9 o% _" x9 m# b: [% w7 c当osd短暂挂掉的时候,因为集群内还存在着两个副本,是可以正常写入的,但是 osd.34 内的数据并没有得到更新,过了一会osd.34上线了,这个时候osd.34的数据是陈旧的,就通过其他的OSD 向 osd.34 进行数据的恢复,使其数据为最新的,而这个恢复的过程中,PG的状态会从inconsistent ->recover -> clean,最终恢复正常。( `/ D5 P# W! x, @! o9 ?
这是集群故障自愈一种场景。

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
 楼主| 发表于 2022-7-26 10:14:15 | 显示全部楼层
1、查看ceph集群配置信息
7 w1 d7 y9 Q: O, O: K: E7 t5 S9 T4 u, {  G9 b( S( H. @, c
- n+ c% u* `: L, [" X

7 h- L# ]% C3 c% A6 N" Uceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show
: `$ {9 v% H) y2、在部署节点修改了ceph.conf文件,将新配置推送至全部的ceph节点
% d, [5 |* ~( ~5 ?5 P! w( r7 [+ H
" b- k& h2 H6 z. ]9 @* e; O! `ceph-deploy  --overwrite-conf config push dlp node1 node2 node33 u$ b5 [0 \" `- d/ `% p9 t
3、检查仲裁状态,查看mon添加是否成功
- e0 N" J% p2 @* O( V  f- J: |; `# d& U3 d
ceph quorum_status --format json-pretty
+ ^( s9 H$ c  T! w' o8 D7 s4、列式pool列表
* T' ?9 V- C* ]4 W* w
8 ]$ N- s; [* s* R" P, Oceph osd lspools
9 L6 Q" z( O: T. r' y" w& A5、列示pool详细信息0 \. _  [! _  v; |! N1 t
5 H+ T+ C- [5 d5 W1 y  b
ceph osd dump | grep pool
# I  m! I4 J7 W! z2 E% P8 W6、检查pool的副本数
% p4 L" y! ^5 _: o+ O4 d% l8 J6 n+ P3 N2 D8 |1 P
ceph osd dump|grep -i size7 h7 Z2 P$ a; r4 C  A  k7 S, K
7、创建pool
& I, Z0 a; }! q. q. o! q  n; l/ ^* e& k  y4 w
ceph osd pool create pooltest 128& [! g& i: q( V3 a( x6 _  h. ^
8、删除pool/ R6 x( J6 w& l# K" f3 B2 v& N# M

9 c0 Q3 i: R8 N1 aceph osd pool delete data  #会提示确认信息(增加命令,如下)
( G2 B. ~( t$ O6 o1 Kceph osd pool delete data data  --yes-i-really-really-mean-it  G: J0 p0 Z) _, G4 M$ i' l
9、设置pool副本数8 K* q. M4 j. F, }5 ]
1 ~7 A& |. G5 p2 u6 N7 Y
ceph osd pool get data size4 D2 t% @- D! Y
ceph osd pool set data size 3( B) R  E: v: J1 t) |( ^( H
10、设置pool配额
. v3 @0 b2 P/ `5 p) L5 r0 g# T' {7 I
ceph osd pool set-quota data max_objects 100                              #最大100个对象
0 B. ^/ [. Z- h8 k: o$ l$ Uceph osd pool set-quota data max_bytes $((10 * 1024 * 1024 * 1024))       #容量大小最大为10G3 f  o7 X) M( q
11、重命名pool
+ W7 C7 v' ]( x: N, E" @( f6 i
0 B9 ?; z, {; U9 E, Yceph osd pool rename data date" Y1 `, u5 t* X: y! h- s
12、PG, Placement Groups。CRUSH先将数据分解成一组对象,然后根据对象名称、复制级别和系统中的PG数等信息执行散列操作,再将结果生成PG ID。可以将PG看做一个逻辑容器,这个容器包含多个对 象,同时这个逻辑对象映射之多个OSD上。如果没有PG,在成千上万个OSD上管理和跟踪数百万计的对象的复制和传播是相当困难的。没有PG这一层,管理海量的对象所消耗的计算资源也是不可想象的。建议每个OSD上配置50~100个PG。
4 ?4 r0 D$ \$ h, B& G9 B' h6 a9 j0 {' F4 r! F) E
  PGP是为了实现定位而设置的PG,它的值应该和PG的总数(即pg_num)保持一致。对于Ceph的一个pool而言,如果增加pg_num,还应该调整pgp_num为同样的值,这样集群才可以开始再平衡。
4 v" S3 x4 C' ~+ w
' {$ [  \: ?' i! D$ |, @% i      参数pg_num定义了PG的数量,PG映射至OSD。当任意pool的PG数增加时,PG依然保持和源OSD的映射。直至目前,Ceph还未开始再平衡。此时,增加pgp_num的值,PG才开始从源OSD迁移至其他的OSD,正式开始再平衡。PGP,Placement Groups of Placement。: n2 m4 N" {1 l5 ^# Z3 X

; b! L# k( ~5 l$ o2 ~  计算PG数:
# J1 N/ ~5 s: [7 A: f1 F' Q$ K7 z( X2 G+ k  C
" W8 l5 W/ \- h2 S( t$ w$ \% u2 N
  ceph集群中的PG总数:
) }2 P  N- u+ r8 _* b# |
+ C2 z) z  M! P% m" MPG总数 = (OSD总数 * 100) / 最大副本数        ** 结果必须舍入到最接近的2的N次方幂的值
5 {: V4 X  W/ D- ?: q3 x  ceph集群中每个pool中的PG总数:
& `, V* p) O, {% G
% Y! T' ^/ ~' {( K# n9 T存储池PG总数 = (OSD总数 * 100 / 最大副本数) / 池数. |& z* ]# u/ D; G
  获取现有的PG数和PGP数值:
: G' N! c! ^% t, p; @% d! O: K% X0 R$ p' e9 T# a
ceph osd pool get data pg_num; c1 r, r/ A( E$ H' w; q- f
ceph osd pool get data pgp_num) T" d- b& j! O8 M. @
13、修改存储池的PG和PGP
. n! K0 X( c  ]0 Z) m& [9 S$ W9 o2 r$ x! o' ]/ t! t
ceph osd pool set data pg_num = 1
- U% @! u, J) h/ `- s( _. I9 jceph osd pool set data pgp_num = 1

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
 楼主| 发表于 2022-7-26 10:17:54 | 显示全部楼层
修复方式 wanted: command to clear 'incomplete' PGs
6 x% Z. e" N5 s; j3 k  B8 Z! v0 @' n. Y比如:pg 1.1是incomplete,先对比pg 1.1的主副本之间 pg里面的对象数 哪个对象数多 就把哪个pg export出来& q4 U) \  \+ `" j1 R
然后import到对象数少的pg里面 然后再mark complete,一定要先export pg备份。
# i* {- x& E9 s! B简单方式,数据可能又丢的情况5 \# Y; x) [+ R, M4 a! z

; \: T8 y! Y% F+ _; O' c# ?7 J5 _4 M3 U a. stop the osd that is primary for the incomplete PG;    7 T" I& h$ R/ g9 n( W  D- A7 ]
b. run: ceph-objectstore-tool --data-path ... --journal-path ... --pgid $PGID --op mark-complete   
% A4 t" n7 Y& F# J/ n- Y c. start the osd. 3 k+ Q: A; b& G8 }2 F/ K3 ~  E2 n

5 w: |! E/ k" w3 V保证数据完整性; N5 q1 }. d4 T: ?

$ A7 I9 V# K1 P9 z8 O0 a9 Z #1. 查看pg 1.1主副本里面的对象数,假设主本对象数多,则到主本所在osd节点执行 " Q( U- U/ L* R* ~, M7 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 ! l! w0 p# @$ o+ P; u
/ E1 T+ y- O3 E9 ~8 \/ W4 R' C8 G
#2. 然后将/home/pg1.1 scp到副本所在节点(有多个副本,每个副本都要这么操作),然后到副本所在节点执行 & k$ u( F% P  G1 _$ U/ 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
& P  O7 |" ]% A5 _; h
. b& Y2 v+ _# `" O7 i#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  4 P5 b- x6 D3 g* p; I- H
! R9 w/ g0 c6 [- H- t
#4. 最后启动osd $ start osd
! d  ]3 p, @/ C6 N2 s. `( |* p; [- C
. O: B  L: l6 I" [( B2 `* ~4 }验证方案
6 I! i+ ]0 y* u7 U/ r: {; r( S- ]3 d5 V4 D1 C
#1. 把状态incomplete的pg,标记为complete。建议操作前,先在测试环境验证,并熟悉ceph-objectstore-tool工具的使用。
0 @! q- |4 F& T! T3 S: CPS:使用ceph-objectstore-tool之前需要停止当前操作的osd,否则会报错。  : P$ r  @% t' G5 J. B; I: x
. h3 a. L" r2 Q4 K% Z% n6 ]6 t7 B
#2. 查询pg 7.123的详细信息,在线使用查询 5 A" J5 c3 _. G; I
ceph pg 7.123 query > /export/pg-7.123-query.txt  0 B( k4 g: E$ D. ?! ~/ [0 o' X7 f

4 R1 l0 L, d7 N. D6 M. K  v4 \9 q#3. 每个osd副本节点进行查询
4 ~  l% Q/ }$ 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 7 S  o1 x: N3 ?

% z1 _1 x$ s3 q6 i, j! K pg 7.123 OSD 1 存在1,2,3,4,5 object   V" g* W* C5 J/ |9 ]% [
pg 7.123 OSD 2 存在1,2,3,6 object 6 i# P& m+ O$ O% ?- z2 n6 b# x: `
pg 7.123 OSD 2 存在1,2,3,7 object 4 f1 U' n, w3 q4 V6 X, ^& I
% x$ @+ ?0 g; K
#4. 查询对比数据
/ I( V+ X8 `: ~. f" ]4 q#4.1 导出pg的object清单
5 N1 f2 F8 _' b- ~3 Z! r1 e2 I% x/ eceph-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  
% W" h" |- C, b* P5 ]  G
) G: P7 {/ T! X$ J) e#4.2 查询pg的object数量 * i1 Q4 J3 j- c" r* u. e' b
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-641/ --type bluestore --pgid 7.123 --op list|wc -l  $ t' W4 _; X7 S1 I
( l' s- ?/ ]! v/ q; j
#4.3 对比所有副本的object是否一致。 . g3 J& }# I, z  ]: m
diff -u /export/pg-7.123-object-list-osd-1.txt /export/pg-7.123-object-list-osd-2.txt
5 E6 \  q1 w+ n( J% l$ L: M* U比如:pg 7.123是incomplete,对比7.123的所有副本之间pg里面的object数量。  8 W- X0 g+ j3 @9 U  P
- 如上述情况,diff对比后,每个副本(主从所有副本)的object list是否一致。避免有数据不一致。使用数量最多,并且diff对比后,数量最多的包含所有object的备份。  
. H, g; c% B, p5 q- 如上述情况,diff对比后,数量是不一致,最多的不包含所有的object,则需要考虑不覆盖导入,再导出。最终使用完整的所有的object进行导入。注:import是需要提前remove pg后进行导入,等于覆盖导入。  
% t0 L# ]. A6 B  A$ S* F- 如上述情况,diff对比后,数据是一致,则使用object数量最多的备份,然后import到object数量少的pg里面 然后在所有副本mark complete,一定要先在所有副本的osd节点export pg备份,避免异常后可恢复pg。  - ?# _% |' r: r( G1 W

. J# h0 h& G2 {#5. 导出备份 - N" e: S! H  Y8 o
查看pg 7.123所有副本里面的object数量,参考上述情况,假设osd-641的object数量多,数据diff对比一致后,则到object数量最多,object list一致的副本osd节点执行(最好是每个副本都进行导出备份,为0也需要导出备份)
. D$ u# I9 _  m 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 ) F1 l& Y+ C' [: k1 Y9 V( ?* \
0 w- O/ ^2 p8 y8 K  F+ B
#6. 导入备份 9 ?' W! w( w( M1 A' ^* h  ?! k
然后将/export/pg1.414-osd-1.obj scp到副本所在节点,在对象少的副本osd节点执行导入。(最好是每个副本都进行导出备份,为0也需要导出备份)
7 p3 \5 Z6 D9 X& _' j4 a0 C5 }1 X将指定的pg元数据导入到当前pg,导入前需要先删除当前pg(remove之前请先export备份一下pg数据)。需要remove当前pg,否则无法导入,提示已存在。 ! o2 u4 v0 t) K& }& \+ p  K
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-57/ --type bluestore --pgid 7.123 --op remove 需要加–force才可以删除。
5 C- s: I3 T' Z 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  7 ]5 T. g$ G. q) u
$ ]: v5 q4 P& }# }/ h: k+ c
#7. 标记pg状态,makr complete(主从所有副本执行) 8 j% G8 U" W# Y$ i: J5 O
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-57/ --type bluestore --pgid 7.123) ?, z! }, E* R4 n7 g9 P
( H' i' y/ e) S1 l. g, l+ ~+ g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 22:59 , Processed in 0.033551 second(s), 25 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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