|
|
楼主 |
发表于 2022-7-22 08:35:49
|
显示全部楼层
root # ceph pg deep-scrub pgid
c% E. |7 Z9 \" @# B: y0 \& \, p
! C# Y- s4 j* O+ `7 J5 ~6 S! ?/ K# [
" B0 a/ b, r! M( j5 M5 N3 O
提示
6 S N' m$ }( [! F: S8 N: J8 k" Y9 ^( O' c6 `
如果之前为您的配置或密钥环指定了非默认位置,则此时可以指定它们的位置:3 }6 V, n# y, i3 a: W* t. d
( Z% z4 O6 W8 ]8 J' k( Q. ^
root # ceph -c /path/to/conf -k /path/to/keyring health# j5 Q. Y/ g' X6 B$ i. J5 e9 f
; X5 D! h( a y* T; y
4.2 监视集群 $ j6 u; p/ z& u% ]8 W+ p) A2 I
& N! Z9 z7 p, o
可以使用 ceph -s 了解集群的即时状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可在某工作负载正在运行时列显以下内容:
( `1 n8 W7 g. i1 M
% l" }" s; t' W& xcluster:
! I% ^, k: K' @9 _- A& O6 e
9 N ^' i7 E E2 r6 o* F \/ D id: 6586341d-4565-3755-a4fd-b50f51bee2481 O% C! N, @0 t& a! F
0 j& P! G# i! ]7 {" {8 c
health: HEALTH_OK5 {$ X5 U. P5 o6 H$ i; t
1 Y6 S" A5 B. t% B; q
2 Z2 G+ }/ V4 d
. }/ J7 P$ b4 f1 K) j% w( Dservices:
& l% X* J8 O2 j! _& X) k6 H' B
5 \/ z% m# u& p$ c, \" ~* |' [ mon: 3 daemons, quorum blueshark1,blueshark2,blueshark3
9 D2 g, e5 D/ G- e, d( h5 Z3 K. l# t( H
mgr: blueshark3(active), standbys: blueshark2, blueshark17 _- `0 r- {; A8 S2 I- g
4 z+ l- ]- G" c' q: C osd: 15 osds: 15 up, 15 in* p, J" X% E) E3 i+ B, P
0 [2 I( j+ H/ J/ G! C0 a* P
, [0 A+ I3 T+ g) B$ H
5 M2 f7 w5 t0 v1 `0 Y1 u/ t( K. |1 bdata:2 ^; M4 j9 E/ n% U4 H' b
. i; P4 g/ u* D4 ^ W9 H9 k/ k/ z: z: Z pools: 8 pools, 340 pgs
( K1 I$ @8 ], r% n* ]0 ?$ J: X& Y5 n% x" c4 Y
objects: 537 objects, 1985 MB
& W# Q: q4 B* `* v* j8 W9 j; k7 F1 i
usage: 23881 MB used, 5571 GB / 5595 GB avail* U7 \% a4 K$ c$ W' U
* ^" h; b: |0 Q- l2 z pgs: 340 active+clean
- P r {- {, _# l/ B" M& ?
: }7 A0 ?3 N; d- Y" H
9 j% m$ s* `8 i3 g" E
Y5 A0 E2 N2 U/ Dio:
% f" l$ J5 E) r0 C" p/ z
# _% S% q* P! O n/ h& K6 q8 x client: 100 MB/s rd, 26256 op/s rd, 0 op/s wr4 K: v, c! U' W, z2 L6 z6 j
% B& k% N& ~6 c# q$ g+ s2 h4 W% w输出内容提供了以下信息:
$ C4 ~9 a$ A2 i0 L' j( C. A, H. V2 W( l. `) \+ q
集群 ID
* A! k! A' G: o2 R7 W集群运行状况
S) }$ a( O- t# e监视器地图版本号和监视器仲裁的状态
; }) y: x' o4 f8 pOSD 地图版本号和 OSD 的状态4 U% l1 h" ~3 V0 t U2 y" ^' g' _; s
归置组地图版本
8 f* Z+ ?2 ?; a2 `- n8 W" \4 q: o归置组和存储池数量
0 i& ?* K3 e/ w4 p; H所存储数据理论上的数量和所存储对象的数量;以及
& A. g7 N, l8 s5 [所存储数据的总量。$ @" e3 u, Q! T
' X" |- B7 U2 Z% {- {( u8 H
9 I: F% T) h. H& j7 \; B4 @2 G4 l! ]
提示:Ceph 计算数据用量的方式1 K" @. d+ ]' O
, W4 r7 \# l# n9 S( A/ \used 值反映实际使用的原始存储量。xxx GB / xxx GB 值表示集群的可用容量(两者中较小的数字),以及集群的整体存储容量。理论数量反映在复制、克隆所存储数据或创建其快照前这些数据的大小。因此,实际存储的数据量通常会超出理论上的存储量,因为 Ceph 会创建数据的副本,可能还会将存储容量用于克隆和创建快照。4 H2 L; D6 g+ f( x; e
- c; |) R# q: W% \3 i4 U' H* d, W显示即时状态信息的其他命令如下:# f% H1 y5 X: b& O4 D. L' u
. |% A9 b8 ]& ~; ~
ceph pg stat
, d5 @1 e+ s1 O; x2 K+ j( Y, dceph osd pool stats! O; _( ]5 X! T, Z7 e
ceph df
* _ f8 b+ Z; {( ~3 h0 w- zceph df detail; l. s+ ]7 h( @% @) x( _
要获得实时更新的信息,请将以上任何命令(包括 ceph -s)放置在等待循环中,例如:# B2 C# U' }9 C5 Q" y" }
3 [; V& k" }1 G2 y7 c
root # while true ; do ceph -s ; sleep 10 ; done
" Z F! N" H! r1 y3 `8 G+ x) Q' D# T) ?4 n, z
如果您看累了,请按 Ctrl–C。; D: {; @+ q) d+ B: P
7 R/ ]3 u) o( Z4 a% N4.3 检查集群的用量统计数字
* S' O- t8 ?' s0 B
* c& m: e) C/ g0 C6 e( O% B& g; s要检查集群的数据用量和在各存储池中的数据分布,可以使用 df 选项。它类似于 Linux df。执行以下命令:
% t$ h/ O/ C3 D& t7 M- ]7 P4 c; W# g% z, e/ _; p$ D! n
root # ceph df; R3 p# v: c4 R9 h
5 O2 ]5 C" q4 r+ @# X
GLOBAL:
- H$ V# S) @8 {* I0 d! q/ B% i
SIZE AVAIL RAW USED %RAW USED
: Y: K/ e/ ~5 }% x
$ u0 Y6 a. a* j2 y 55886G 55826G 61731M 0.11# b. i7 e* f" K M7 K6 c. l
8 A) u- x B% Q k# ]POOLS:
! O+ ]8 J( `1 W' Q" m0 b3 c- k) p' j2 p3 |0 m ~( H/ `8 `) T4 a
NAME ID USED %USED MAX AVAIL OBJECTS0 f4 R+ z5 g; u9 }+ R9 d4 b
4 R1 {" a) f* `2 c$ s testpool 1 0 0 17676G 0" n x% k# ^# \4 n* l# A1 r
% \, o7 g! r: m
ecpool 2 4077M 0.01 35352G 2102( ?! A- {' A0 ~% A3 g" o' I
7 n; _3 P) F; H0 w test1 3 0 0 17676G 0" `- t% C, ?- V4 x7 Y6 a
% c I5 G# ]) k! N7 w& ~
rbd 4 16 0 17676G 3
" V' O" [ G& r$ u; i, q' d! r# G# h5 p1 w. }6 k7 `4 \) c, \0 D
rbd1 5 16 0 17676G 30 L8 b8 X3 Q: a5 m, [
* t% u9 J& O: v+ Q- Z ecpool1 6 5708M 0.02 35352G 2871* b: s y3 @ z7 r8 r$ w
& \0 A6 i* m0 q5 \. d输出内容的 GLOBAL 段落提供集群用于数据的存储量概览。
9 z% C0 P! z' O, D B9 u0 M3 X8 a7 m; |
SIZE:集群的整体存储容量。: l3 }* ~6 A4 u% d
AVAIL:集群中可以使用的可用空间容量。4 d3 B( L1 h3 L9 S2 y$ A8 H2 d
RAW USED:已用的原始存储量。% s* t/ W5 n: O- c, k9 o
% RAW USED:已用的原始存储量百分比。将此数字与 full ratio 和 near full ratio 搭配使用,可确保您不会用完集群的容量。有关其他详细信息,请参见存储容量。9 K6 K7 c% ^" n. w5 O
- c+ J, f8 U% ~7 T0 Q" q
- L/ ^0 y; ?& @" y- g3 |; f$ o( v注意:集群填充程度
. h+ {( h F, g7 d& \" I; i% ?4 G1 b3 A4 |0 h
原始存储填充程度达到 70% - 80%,表示需要向集群添加新的存储。较高的用量可能导致单个 OSD 填满,集群处于不良运行状况。9 ]) Z4 b7 u2 G X7 ?, J1 _
* a) X( |( ]4 z% W
使用命令 ceph osd df tree 可列出所有 OSD 的填充程度。
5 d m& l) p9 R
0 R& @& R$ h: B8 a输出内容的 POOLS 段落提供了存储池列表和每个存储池的理论用量。此段落的输出不反映副本、克隆数据或快照。例如,如果您存储含 1MB 数据的对象,理论用量将是 1MB,但是根据副本、克隆数据或快照数量,实际用量可能是 2MB 或更多。$ i$ L( h, l! G4 L, K+ r! v+ A( D
9 O! ~: {" {4 a/ cNAME:存储池的名称。
7 Q U/ J8 V/ q) N. t! T1 V7 a) qID:存储池 ID。 R3 H0 g% y4 j m
USED:以千字节 (KB) 为单位的理论已存储数据量,如果该数字附加了 M,则以兆字节为单位,如果附加了 G,则以千兆字节为单位。% E7 n3 I, s9 I( v
%USED:每个存储池的理论已用存储百分比。8 t" p0 `9 X. d; v
MAX AVAIL:给定存储池中的最大可用空间。& a5 t2 J5 W! P: y% f' ]. |
OBJECTS:每个存储池的理论已存储对象数。$ w; |% K( a/ s% t0 Z
. r- t% {1 S4 v0 P$ H& k* T n
) ]! e( e% t2 U/ ~; {- v) c9 E1 g注意6 ^1 e* M4 ~3 w6 n) _
" \' `+ o3 d0 H3 h5 |$ ?' Q& U2 xPOOLS 段落中的数字是理论上的。它们不包括副本、快照或克隆数量。因此,USED 和 %USED 数量之和不会加总到输出内容 %GLOBAL 段落中的 RAW USED 和 %RAW USED 数量中。+ X" n5 j x: j
5 y$ l2 d3 T- f: r3 v
4.4 检查集群的状态
3 L. o# X# l% } ]2 G% e/ z, P7 U& U6 { y7 r
要检查集群的状态,请执行以下命令:
) I" L0 s) C/ K! t. o( \. V5 A
$ k6 r" C/ k# [0 _2 t# K( eroot # ceph status
7 {+ Y ~$ m. K+ A( ~; a3 x8 y0 {3 v- r( R3 R4 [
或者
, A3 g) y$ c1 U2 [) B4 ~4 y' `" A9 J) F1 C3 I6 ^1 P& g
root # ceph -s
9 _ A+ `- |+ F+ ?& T' U' N: _* T
! }7 ]6 L: H: z5 _ ]3 ?, \% J在交互模式下,键入 status,然后按 Enter。2 J0 n1 X; v- j& u6 W
! P O& j: X1 Q- Lceph> status
! G: y: {1 _5 F8 V, B9 O p5 c2 i2 Q+ X
Ceph 将列显集群状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可能会列显以下内容:7 S g6 S2 b: h& }4 I, k
3 {# ?/ S0 U. j2 u6 T! |5 N! r8 i
cluster b370a29d-9287-4ca3-ab57-3d824f65e3395 n X2 j5 Y( H E. k5 g
/ l9 ?4 Y! y8 _- O1 E3 c' y: a health HEALTH_OK
- u& K. K( Z! @3 q% G4 j/ ^$ o* M1 r2 k6 M( `2 K p/ G
monmap e1: 1 mons at {ceph1=10.0.0.8:6789/0}, election epoch 2, quorum 0 ceph1! ^$ s1 G) b' p9 K- O/ g! a( N
" I( X t' d( G- s& ]" h6 e osdmap e63: 2 osds: 2 up, 2 in
! u S3 |6 i1 ]+ E8 X/ |- {) \# E9 O7 r9 J% I- f' c$ R
pgmap v41332: 952 pgs, 20 pools, 17130 MB data, 2199 objects
x- N) ~* g- D; w8 Q- ^
& x5 u! O- ~' m1 Z$ K 115 GB used, 167 GB / 297 GB avail
/ t5 f; L3 r7 Q+ c9 M, f6 c' \
. I4 m$ C! M" R5 m 1 active+clean+scrubbing+deep
9 s: V( R5 `' @* `2 ? Y( G0 r/ j4 R" d2 J0 h0 n# t
951 active+clean9 ~) z" T+ H6 W! C
$ X9 x3 r# ] o' h4.5 检查 OSD 状态 4 \! z+ T9 ^( Q; u1 |$ }
; F8 I7 Q/ ^! h8 J6 t G可通过执行以下命令来检查 OSD,以确保它们已启动且正在运行:
6 n8 z" U) l3 R# d$ t4 y+ L# K* a
! a9 r- `0 Y' D, }% |root # ceph osd stat' f+ C5 B q: e5 Z2 ]- _* h
+ P! G/ I+ i9 `8 L" n8 h( u8 L或者, [$ A* w* b$ b. Z% B+ x' \
) U- S' O1 ]' }3 j& b" u# D( Groot # ceph osd dump
: ~1 N+ f. I: j* H1 e% S) V$ ~" W& y( P) _6 V6 R
还可以根据 OSD 在 CRUSH 地图中的位置查看 OSD。0 B% [4 x' [" x' [3 A
3 X& V0 z8 Z- c) croot # ceph osd tree
: z0 |# x: Y+ j" p6 `% |7 B% g8 b$ w" B; S' y
Ceph 将列显 CRUSH 树及主机、它的 OSD、OSD 是否已启动及其权重。- E$ N3 A* C- j1 [' B$ Y
% ~4 _% w% |9 U# id weight type name up/down reweight
% \9 ~ T; N1 x7 S% [! }9 |0 x
-1 3 pool default
* v' _7 A9 m$ g- W; ?% W7 c* Y* P' z: }* [6 L$ ~$ {0 q
-3 3 rack mainrack& C: t' r% B4 j; i1 `8 D* E. I
/ I' P% n. i+ ]' C7 k% S+ w
-2 3 host osd-host
8 B7 I2 E f; U; t9 ^; ?1 m# D* m/ T$ S+ ]1 O
0 1 osd.0 up 1
' }9 S! b' a1 P5 a; w9 u) d
: O; X+ _+ h/ m! G4 |1 1 osd.1 up 1/ g H& K- F7 Y
2 K% }$ j' o3 f8 a
2 1 osd.2 up 1, G# v- w2 g1 R( k( I u" q
2 A% q) q, Q1 _4 K* T! t8 D) L
4.6 检查填满的 OSD
' @% F& {. x, |0 N
- D8 l1 c; N, I/ d0 rCeph 可阻止您向填满的 OSD 写入数据,以防丢失数据。在正常运行的集群中,当集群接近其填满比例时,您会收到警告。mon osd full ratio 默认设为容量的 0.95 (95%),达到该比例后,集群会阻止客户端写入数据。mon osd nearfull ratio 默认设为容量的 0.85 (85%),达到该比例时,集群会生成运行状况警告。
3 `! o4 b6 Y- r8 j
4 O& D% s' A5 q' B可通过 ceph health 命令报告填满的 OSD 节点:# W5 V) }7 G9 U
1 V1 M# v* x3 H5 R) S, x
ceph health" g5 Y4 e) _! K, \: D- Q
; G, H& }& X! k! R- ?3 I; U
HEALTH_WARN 1 nearfull osds0 S2 {) Z4 p v+ d9 Z
+ B' C3 q( W# @& f+ B1 b `
osd.2 is near full at 85%
- T% g% _. S) |5 t3 \2 R* _1 q; a# P* @/ _. S# l
或者. \+ d [, ~; H$ |) ^3 y, k
6 E- o' Y8 n$ y; ]' \4 l
ceph health& ~3 s- O* H- }0 q; U
5 n& r$ I n% ?+ T7 P2 Z. c HEALTH_ERR 1 nearfull osds, 1 full osds
3 y+ A4 u9 \4 d3 S# ]% g+ c& s4 _( e0 L3 J% P
osd.2 is near full at 85%2 H+ [4 G/ Y$ H
9 f+ o |: x9 R& `' J osd.3 is full at 97%' c/ V$ }! e$ [# w2 e" A
/ I9 k& A3 f1 c0 k处理填满的集群的最佳方法是添加新的 OSD 节点,以让集群将数据重新分布到新的可用存储。) z/ ^; ~! {8 s0 O. _6 } z2 p
! e: w* E. {$ ~- i6 w) `6 x' C; W
如果 OSD 因填满而无法启动,您可以通过删除已满 OSD 中的一些归置组目录来删除一些数据。, V. H0 ]0 C; S* y1 v
0 K1 y) ]0 o" P2 Z- h1 M7 ^
1 r9 ^. E& x# @5 X8 Y2 i/ a
5 K$ {' N9 C$ I+ i' }$ Q提示:防止 OSD 填满9 s$ c4 R2 O, Y& Y- e
) @/ H3 D k* U/ _( v1 G! hOSD 变满(即用完 100% 的磁盘空间)之后,往往会迅速崩溃而不发出警告。管理 OSD 节点时需记住下面几点提示。
! m1 x* z" |5 h; N
1 v" I$ L% @9 I3 f9 W每个 OSD 的磁盘空间(通常挂载在 /var/lib/ceph/osd/osd-{1,2..} 下)需放置在专用的底层磁盘或分区上。
3 o [2 e5 H7 F检查 Ceph 配置文件,确保 Ceph 不会将其日志文件存储在专供 OSD 使用的磁盘/分区上。" p# G& @$ E6 _" ~/ `( _, z
确保没有其他进程写入专供 OSD 使用的磁盘/分区。
" z! L0 V$ t. c% n4.7 检查监视器状态 0 b( R9 |/ b# ]$ U4 Y
! e% ~+ d2 C) V! Q4 M) r
如果集群有多个监视器(这是很有可能的),则应在启动集群之后到读取和/或写入数据之前的期间检查监视器仲裁状态。有多个监视器在运行时,仲裁必须存在。您还应该定期检查监视器状态,确保它们正在运行。
7 @- D1 Q$ x/ K; m! N' l' [* m% n) @5 a. z2 N0 n3 j
要显示监视器地图,请执行以下命令:# R' }8 w: @5 D8 t( s
& c. l4 p3 A* b6 K1 [root # ceph mon stat3 X' } z7 k6 b/ G+ y; o- v
$ |3 P. J2 H& n B- \$ k* p
或者
- `/ ~% }7 u. d d% j6 ]: N9 E; X$ {
root # ceph mon dump
# ?- i" D: ^% S& u% r. m
# n$ [! D/ {6 }& {要检查监视器集群的仲裁状态,请执行以下命令:" L1 E. ~7 f0 x4 o+ y( r
+ k0 C* R+ A8 N7 f3 G" r: y& zroot # ceph quorum_status
: y3 v8 _# d* l0 [. `6 v6 w
0 F7 \* S1 C! b5 J- `Ceph 将返回仲裁状态。例如,由三个监视器组成的 Ceph 集群可能返回以下内容:
: n: p) q, ]7 Z6 D: f
% o6 {/ ^0 P' K{ "election_epoch": 10,7 L9 x0 w! l1 G$ J" \8 U& E# c
7 H& B9 g. t( Y0 ]% y6 x "quorum": [
S+ O5 U+ O! [8 f/ j" o* J; Q* q" e7 A0 Q# Z( {3 u8 t7 h( X
0,
* s2 `& R: b" T0 d# `: f* @5 P3 A$ i' E, D
1,
- I+ t4 V4 n6 _ `
, s* e+ p" [; Y k4 [ 2],# e) J' Z% _' W7 g. _& V
/ D5 I5 ^! ~! G/ r
"monmap": { "epoch": 1,5 y2 i2 I( _8 v1 J
4 U' Y$ {' z9 u3 @" r9 y! T "fsid": "444b489c-4f16-4b75-83f0-cb8097468898",
: C7 A- A d% _# i- Z5 u7 ~' p! Y7 U8 }. b
"modified": "2011-12-12 13:28:27.505520",! l. U: V* N ^, T2 y! P2 j7 l9 @
5 D8 p5 e' d/ X7 {. } "created": "2011-12-12 13:28:27.505520",/ C L" X' n2 M4 ^6 H- y
( M+ J4 r" \0 M
"mons": [" J. q6 g9 x+ }
4 Z& e6 B6 Z$ k! R: X; U' C5 s
{ "rank": 0,( i* n0 O. f9 ?- m1 _# u% n+ k
5 y" U. w/ j. n
"name": "a",/ ~- o( k1 t3 ?
, J7 p! Y) @: d; U4 r( e
"addr": "127.0.0.1:6789\/0"},
; r1 m0 h! X- j* i: e0 Z! r" Q
% }/ {; Q1 D9 G$ n8 \8 A { "rank": 1,
6 |! C! [$ D2 v% \8 D
. I1 _- z, R8 ]! y "name": "b",5 Y7 T0 d# T1 ]7 }- d, D9 P1 ^* `
3 u' O5 ] w& E( f5 k2 V$ h
"addr": "127.0.0.1:6790\/0"},2 `/ a4 l: }' M
1 W) u8 |+ R1 _ Y { "rank": 2,- `, R; u2 i2 I O) g3 p( i
/ u3 ?$ j$ c9 y: N
"name": "c",! t3 c. ?3 f, R3 r N
L7 Q$ O) _; U: u/ x0 ^$ g5 k+ f "addr": "127.0.0.1:6791\/0"}* W2 J1 b( Y) \& l9 ]% n- Q: r
# V3 _$ L% b, G' G. m" h
]
) P/ t/ R8 c) j+ j' z1 E& R- \# F* |1 x2 O2 i7 P
}
. b: }+ Q% V0 N5 d, e1 O M2 f% F, J4 _$ @& A
}
( m" h" L+ v' ]% o. c; \# K8 z% p$ @: [; a% o8 l! P+ m; h; H) ] y
4.8 检查归置组状态 : ?; ~/ y6 o/ g" ]$ u/ t
- f! J" G9 P8 n% e# I$ E8 M归置组会将对象映射到 OSD。监视归置组时,您希望它们处于 active 和 clean 状态。有关详细的讨论内容,请参见监视 OSD 和归置组。3 c( m/ v2 V8 N* d
4 `: D( [6 V8 P1 L) i4 `
4.9 使用管理套接字
& ^8 e' q& c. T9 N7 K
2 B9 r: }2 k" x3 d$ nCeph 管理套接字可让您通过套接字接口查询守护进程。默认情况下,Ceph 套接字驻留在 /var/run/ceph 下。要通过管理套接字访问守护进程,请登录运行守护进程的主机,并使用以下命令:
4 P9 t3 i9 M/ U% Q8 n z; N4 a2 [5 }: n2 B/ D
root # ceph --admin-daemon /var/run/ceph/socket-name
! r B* |* N8 G7 f ?4 W8 g- J0 Q- o/ T$ k
要查看可用的管理套接字命令,请执行以下命令:
0 E6 N* x4 ~$ o# u# z! R- a' p) |" w6 v" v* Q c
root # ceph --admin-daemon /var/run/ceph/socket-name help2 u3 s, N/ I* |2 y3 G
/ z+ g) T5 l C% i* ]3 D( C
管理套接字命令可让您在运行时显示和设置您的配置。有关详细信息,请参见在运行时查看配置。
/ {% k: r9 Q8 y- t h, i) t
& x$ A8 q0 a% @5 z另外,您也可以直接在运行时设置配置(管理套接字会绕过监视器,这与 ceph tell daemon-type.id injectargs 不同,后者依赖于监视器,但不需要您直接登录有问题的主机)。, g' H% l3 {! J& f+ l( b1 F
|
|