|
|
楼主 |
发表于 2022-7-22 08:35:49
|
显示全部楼层
root # ceph pg deep-scrub pgid
" T8 ~& C% R9 g9 c0 z9 C, E& q3 {1 a2 Z. y. k9 x
! ^7 @3 {, x& w0 _! D4 R/ H, Y
8 s0 `( z- w- Q4 }& Q
提示
7 e9 K9 u/ ^, Q/ c
3 n/ F! r+ `9 g8 `8 I. n7 U如果之前为您的配置或密钥环指定了非默认位置,则此时可以指定它们的位置:
9 f" c+ C! K V8 E/ ~( N. |8 P- m e9 ?
root # ceph -c /path/to/conf -k /path/to/keyring health& ]& Y* R3 }+ Q6 p' N3 U- y
" F$ z# S5 D; \# D4.2 监视集群
& S Z: ` [( c4 A+ N; W1 P+ M9 O/ h6 [2 L3 Z( T8 @* B+ j) v
可以使用 ceph -s 了解集群的即时状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可在某工作负载正在运行时列显以下内容:
4 o3 g; j8 V4 m; w6 n% J& d3 u8 ?9 T# g* |7 z0 O
cluster:
' J8 T* E' b* f* S
& {; S! q* x+ t id: 6586341d-4565-3755-a4fd-b50f51bee2486 L# h1 v1 N' P3 L4 `$ J
" D% C3 O+ K$ i; } health: HEALTH_OK5 a Q9 M3 V7 V/ ?
" I6 h6 ?, w2 @& ]. U4 q
" y4 ^0 H; S% p4 m
0 @- q) W u! a: Aservices:* p0 v9 L! m% E o' {* B
9 W0 [* f8 P4 a8 j9 h' U* }+ }' n mon: 3 daemons, quorum blueshark1,blueshark2,blueshark3
& Q5 ]. d% R3 V
3 k& w8 y% {; I5 `) R mgr: blueshark3(active), standbys: blueshark2, blueshark10 B. |* B2 v$ a# ]. t1 ]
$ ^# Q b# s. l# n" \
osd: 15 osds: 15 up, 15 in
+ T# g& G% d. o5 b9 x5 K3 K, B! @' {' X) C* V$ j: X
( c( O' S6 H) g, [
+ B, {" \5 v: w
data:
* A. Y( L$ Y6 s& A' S
) G2 @7 b( B9 p$ I9 g pools: 8 pools, 340 pgs6 L+ S7 A. k1 B3 ~+ L
% i# \. C V3 P& o+ E objects: 537 objects, 1985 MB
7 p% J$ X. G5 R3 s v) |/ A' i. t9 ^+ F( }6 I3 R9 T8 u
usage: 23881 MB used, 5571 GB / 5595 GB avail% T, O7 t3 B6 i6 K* B
4 ~2 k" ]7 x' a) \ H7 O+ ?2 m4 t pgs: 340 active+clean
/ K) h& h# U: x9 X
1 [( w; r' c2 x0 r , @2 O, [* S2 P8 E! C: h
+ J. l; m5 ]0 F" f* u
io:
8 r! X: _. u& e( o: h+ f: ?' g& t( m0 h# v2 ?) H' w/ t6 v
client: 100 MB/s rd, 26256 op/s rd, 0 op/s wr A) F6 ?0 p6 O8 d' T- ~) @; W
0 y2 {! B" d9 H1 Q( k9 P* U# c
输出内容提供了以下信息:
# X. {; G' ]$ T3 o& ~& N2 J4 ~9 W7 N+ e1 O
集群 ID
/ m1 q, k3 b+ f& z i6 ^- a集群运行状况
' C; j: i5 P1 ]' [监视器地图版本号和监视器仲裁的状态
5 O& ?$ S1 F( s1 h1 N/ e2 n) [OSD 地图版本号和 OSD 的状态
+ ?- }9 c7 c: L; e; e. N4 Y1 @$ U归置组地图版本
* y O4 R% }$ [: d- B: c5 m归置组和存储池数量1 M; x1 X6 e, d1 X8 n( ~
所存储数据理论上的数量和所存储对象的数量;以及
9 T/ W/ g1 n7 ~; g! @' t/ {) s所存储数据的总量。
8 |, ^" i0 z* t3 V* S9 N
8 a6 J- s, Z. |% a( ?9 p+ Q: o a; j2 n+ e9 Q
提示:Ceph 计算数据用量的方式! ?* \: W7 T8 ]. Z! ?' P
1 F8 p- Z; F. ]1 v0 N
used 值反映实际使用的原始存储量。xxx GB / xxx GB 值表示集群的可用容量(两者中较小的数字),以及集群的整体存储容量。理论数量反映在复制、克隆所存储数据或创建其快照前这些数据的大小。因此,实际存储的数据量通常会超出理论上的存储量,因为 Ceph 会创建数据的副本,可能还会将存储容量用于克隆和创建快照。3 y7 F" T) O( V4 i1 R
% _" m6 W* R3 R6 }
显示即时状态信息的其他命令如下:
0 `. ~8 m' c& m" z2 s9 s4 m6 I+ u, k6 B
ceph pg stat
4 L7 W4 S1 \, S. r5 R) cceph osd pool stats
' ?9 R' u. r4 K k: N' q+ ^ceph df8 K! j: L, L5 y' ?
ceph df detail
/ f* d+ ^' m; y* T) X$ y0 R要获得实时更新的信息,请将以上任何命令(包括 ceph -s)放置在等待循环中,例如:% y& n, o# V* u+ s' O8 D6 r
9 {; Z1 o3 N% b+ \2 M9 {+ N
root # while true ; do ceph -s ; sleep 10 ; done. J J" h% I5 N* T$ J
" D7 b( D W. e8 ]8 x如果您看累了,请按 Ctrl–C。
% j2 T# o; O, y+ ^- r/ \$ [0 { @1 J! U' C" j2 b/ X. a2 [
4.3 检查集群的用量统计数字
! s- `/ O+ I# q8 A
% G* n% z. X2 j9 [要检查集群的数据用量和在各存储池中的数据分布,可以使用 df 选项。它类似于 Linux df。执行以下命令: G& u" o& w0 b/ S* s" J" U% P
0 a- t- A+ r3 Lroot # ceph df7 j& c+ s! W G1 t6 \5 w& V
2 U' a% J5 L0 `" {- _$ fGLOBAL:; ^5 K6 a6 W, a3 l; {6 t
3 l% C+ q4 ]/ Y! L
SIZE AVAIL RAW USED %RAW USED e/ @# ^- Q6 j# N
3 \2 p7 D$ L. R* o0 m5 c8 W: V
55886G 55826G 61731M 0.119 P0 B8 d. n- d# O! \
+ G8 ~* } L/ r; M3 ^/ Z# cPOOLS:% `) m5 z) q+ i2 U; m4 Y% G8 l, J
2 h& Q/ h2 i* P1 T& k6 X
NAME ID USED %USED MAX AVAIL OBJECTS
, z" f, w: T2 Q7 |+ l; j
' |/ ~: l8 M7 c M1 W0 u( d1 z testpool 1 0 0 17676G 0
0 p$ S3 W) u5 J, C+ T+ d0 b6 ^) B+ Q/ p. j' n8 f: w
ecpool 2 4077M 0.01 35352G 2102. V9 a) }5 ]1 |" Y7 ?2 V. x% _$ j
/ y1 H6 f# ^3 N3 n
test1 3 0 0 17676G 0
1 O+ X5 F$ ~3 @5 q- W0 l( w
- h% i" \* e/ i6 N rbd 4 16 0 17676G 3- A, Z, B$ a4 v% p( x4 h
/ \2 ~ w5 N5 i9 X2 j
rbd1 5 16 0 17676G 3
0 ]! z! |/ j" f8 n% G4 [
+ z" u7 i8 [% ?1 Z% w' w/ g8 Y( z ecpool1 6 5708M 0.02 35352G 2871
1 V) j2 _1 s) H1 z2 a+ m4 p2 r+ P7 H2 ^( e
输出内容的 GLOBAL 段落提供集群用于数据的存储量概览。3 e1 b9 u3 d5 `. g
( e+ \; `3 M) Q9 F
SIZE:集群的整体存储容量。
, {2 ^" C z5 GAVAIL:集群中可以使用的可用空间容量。: m+ S' r$ o1 Q$ Z; v- }
RAW USED:已用的原始存储量。
, C) Y& L, {2 @' `2 q' Z% RAW USED:已用的原始存储量百分比。将此数字与 full ratio 和 near full ratio 搭配使用,可确保您不会用完集群的容量。有关其他详细信息,请参见存储容量。
6 L1 N c: D; z1 @' o/ k6 c% g9 r% p% y O% U9 t! ~
" J$ J& C% L; Q" @2 e注意:集群填充程度1 u7 C6 H/ \5 ~4 j! C* J
) G/ ~4 `7 G5 v* i1 Q原始存储填充程度达到 70% - 80%,表示需要向集群添加新的存储。较高的用量可能导致单个 OSD 填满,集群处于不良运行状况。
6 ]% @0 P: U4 s6 V
+ {" l9 R2 e5 c6 }( i U/ X1 w使用命令 ceph osd df tree 可列出所有 OSD 的填充程度。) R t9 E. J$ ~4 S! {
& n% `- k" Q, Y输出内容的 POOLS 段落提供了存储池列表和每个存储池的理论用量。此段落的输出不反映副本、克隆数据或快照。例如,如果您存储含 1MB 数据的对象,理论用量将是 1MB,但是根据副本、克隆数据或快照数量,实际用量可能是 2MB 或更多。
) a% O% `; |# W# l* J1 M+ w* A/ ^/ t! f, J9 _2 }5 m) g7 d! z/ E% I
NAME:存储池的名称。$ S9 N, I3 n7 x2 I! f) R" C; A
ID:存储池 ID。
?+ [/ R- \7 m: k& }/ B: pUSED:以千字节 (KB) 为单位的理论已存储数据量,如果该数字附加了 M,则以兆字节为单位,如果附加了 G,则以千兆字节为单位。! w0 P X, M3 |4 d) W$ J! r; V" ]
%USED:每个存储池的理论已用存储百分比。
. z- Z8 F+ B2 O# u) a* u- m+ rMAX AVAIL:给定存储池中的最大可用空间。4 Q& c, K" L0 w( Z0 C! b
OBJECTS:每个存储池的理论已存储对象数。' S/ U( w1 D% t+ N" U3 X0 r
" s) i1 |/ ^6 m* X
5 e" Q6 Q& C: n7 C6 }2 y. _+ ~注意
) x# ^8 q, v3 A9 ?' g" e8 s b+ _! f# x' z& Y4 Y& S9 G( F: b
POOLS 段落中的数字是理论上的。它们不包括副本、快照或克隆数量。因此,USED 和 %USED 数量之和不会加总到输出内容 %GLOBAL 段落中的 RAW USED 和 %RAW USED 数量中。
# I' n# J8 g6 T
8 x I. i% _7 x. Q: ?: x4.4 检查集群的状态
: N8 Y2 [. x6 [3 T+ ?! }& q* R( U
j' `& t& S; A; W0 \要检查集群的状态,请执行以下命令:4 x0 O) X' X+ h4 _: W
% H" T% a$ b+ n$ B& W1 ?0 P. croot # ceph status& C- @% |3 n* g7 U4 g+ ~$ x
$ y2 a5 `% Q; q$ Y或者
: n" h! K7 Q z. W1 _* \' J/ T3 ~1 U8 Y1 l! w$ i% A N. ~7 W7 v
root # ceph -s
1 q6 g$ m+ R: _5 o5 y a8 [% w) B1 v; a
在交互模式下,键入 status,然后按 Enter。
. j5 ^1 T3 L/ T8 q& q$ I0 j; Q& n& O( K+ D- U+ W5 L
ceph> status& u$ W; t* ]5 S
, D7 H# @3 z. p/ n, l2 iCeph 将列显集群状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可能会列显以下内容:
4 @8 r0 J, J) A+ ^1 W9 |& Z' I6 n' t
cluster b370a29d-9287-4ca3-ab57-3d824f65e339/ `( { ]4 E% k( j
$ I# q! @( h7 }3 I k! v
health HEALTH_OK
+ h: @+ s/ M7 d) ]& n, ]5 l" e/ O& {, S4 s; r2 A4 E/ v" [1 Q
monmap e1: 1 mons at {ceph1=10.0.0.8:6789/0}, election epoch 2, quorum 0 ceph1
' z6 m/ n6 [, s8 Y, ^; \+ K
, y! y+ f: v% f; s8 B$ e. M3 Z osdmap e63: 2 osds: 2 up, 2 in
% @/ b4 {. r, ~* [4 O5 B6 R" W
- a/ s o5 o- }3 v Y2 X2 d pgmap v41332: 952 pgs, 20 pools, 17130 MB data, 2199 objects
6 B6 d0 l8 Z, r9 R: v( X' B! u% `4 \5 b
115 GB used, 167 GB / 297 GB avail
4 f) @! H) R- j, a# W& O
4 ^# D. V+ n) z3 g% b, _. i. P 1 active+clean+scrubbing+deep H* C+ R2 {' d' i; N
' k' {8 U e5 R9 X
951 active+clean; J1 `* x' i7 X4 W& f% Z
" R2 w% @- S4 w6 u, r2 l
4.5 检查 OSD 状态 : Q. f4 d) O0 S& T. M4 w: a
- v9 @; E1 H6 _/ y
可通过执行以下命令来检查 OSD,以确保它们已启动且正在运行:
, L8 g/ _9 O% ^9 i6 r
3 J; M2 Z0 a+ e2 f6 }1 vroot # ceph osd stat
/ y1 O9 K% Y0 Z) c
# T+ i' K) f5 U6 n' g3 F- [+ F% @' R- ?( e或者9 ]) R( a% Q0 `' G9 i: ~
. }; ?" L4 w3 E) n; L# _+ J! Mroot # ceph osd dump0 u) E0 w1 G {" Q
' a+ F' p9 v) n
还可以根据 OSD 在 CRUSH 地图中的位置查看 OSD。
; e! i6 s6 s |7 R) d3 c( Q) r
* \( _# ]+ f4 s4 L3 j- jroot # ceph osd tree
7 R" t* Q3 m6 d
3 L7 K& y- }+ j' N! F0 ECeph 将列显 CRUSH 树及主机、它的 OSD、OSD 是否已启动及其权重。- l) y& q, N0 y: I. B4 x
8 n+ ]& u& N. c% F4 z# _2 P2 h) I
# id weight type name up/down reweight
' L1 o5 ?/ K8 P6 I1 ]+ i3 g( p3 _* o7 O x) {# b
-1 3 pool default
9 [' c, R- q" r# Q" Z, e; f' Y8 v# y' o2 A! s. N9 { u' c
-3 3 rack mainrack
2 `4 E0 k" t/ E4 c
$ V' W! g. }/ P. |1 I-2 3 host osd-host- h: |/ w& Z, D1 A$ s- O' y3 r
3 }0 p; C @& K- U2 X; Y P6 z
0 1 osd.0 up 1
4 A5 V& Y' ^; `0 C7 d" n) h5 _2 q% y* l# ^) a8 L
1 1 osd.1 up 1: B, m0 y) U/ J: i3 d8 ]' P4 j
. l. O' |6 c( o5 p. {2 1 osd.2 up 1* S# |% {! Z @* r9 Q' d
9 C& }: Y$ f# B1 m' X( s+ C4.6 检查填满的 OSD - G" N6 i9 }) \ s! t: ^9 z
! w i8 r; @2 @& N3 x1 d0 @% R
Ceph 可阻止您向填满的 OSD 写入数据,以防丢失数据。在正常运行的集群中,当集群接近其填满比例时,您会收到警告。mon osd full ratio 默认设为容量的 0.95 (95%),达到该比例后,集群会阻止客户端写入数据。mon osd nearfull ratio 默认设为容量的 0.85 (85%),达到该比例时,集群会生成运行状况警告。
7 q2 ?, H3 ]" l9 c+ L+ Z/ G8 X& [4 `: N* G. l8 y
可通过 ceph health 命令报告填满的 OSD 节点:
8 v; k4 L5 m m
0 m' L `2 G v: p3 zceph health
" e+ z: F" E) |: T) ~2 r8 t9 B
: m" x2 U3 h2 G* E* X3 G HEALTH_WARN 1 nearfull osds
# s p# z$ D/ w* Q4 J
; E' b$ V3 L2 X- I osd.2 is near full at 85%5 f9 t0 C O, @* t. B. g! _4 {* O
) h1 h6 k8 W* d
或者
4 L3 I& C% J2 {5 M, q) Z; p% i* K' a1 F1 r3 B7 _9 C8 b
ceph health7 U( z( Q( T$ ~: B6 }4 R& e
0 i2 [: y: b: W9 _/ Q" b$ I3 L6 O HEALTH_ERR 1 nearfull osds, 1 full osds
9 c8 N* n) S3 M1 ]! ^
! y, u( O5 ^6 D8 `2 R# Q' @ osd.2 is near full at 85%
* F# ^- Z/ B& c7 S6 x& @' L! Y1 l" ^+ I5 ^) @
osd.3 is full at 97%
7 C: b7 B& Y: o& v1 d7 d7 d: W; \* F K- J* _' c
处理填满的集群的最佳方法是添加新的 OSD 节点,以让集群将数据重新分布到新的可用存储。
% A: C) x8 Y0 h0 n# X
2 ?% w7 `$ o4 l0 W0 E如果 OSD 因填满而无法启动,您可以通过删除已满 OSD 中的一些归置组目录来删除一些数据。6 Z, W8 T2 {( H) o
9 _3 k$ g$ y, A% h8 h( g9 f
2 ?9 l% B4 A8 I, d) k. R k0 N4 j$ T& N7 g' g6 G7 i) X
提示:防止 OSD 填满! V; e" B; |2 ]
3 v/ k5 S; l0 ^3 \3 L/ \- |OSD 变满(即用完 100% 的磁盘空间)之后,往往会迅速崩溃而不发出警告。管理 OSD 节点时需记住下面几点提示。
8 l* O" V! X1 J5 x0 o
% D- y3 f3 H( z+ v Z7 _( O. c8 Q每个 OSD 的磁盘空间(通常挂载在 /var/lib/ceph/osd/osd-{1,2..} 下)需放置在专用的底层磁盘或分区上。
c6 X) n7 C. i7 j- L& @; G4 n1 \检查 Ceph 配置文件,确保 Ceph 不会将其日志文件存储在专供 OSD 使用的磁盘/分区上。
3 j3 H7 k' i% H+ ]# K8 p确保没有其他进程写入专供 OSD 使用的磁盘/分区。1 e# l( z+ c6 R# T3 U
4.7 检查监视器状态 $ `' h5 I7 X, p- q/ W! }. R
! q' k, I; c* E7 a* c. I如果集群有多个监视器(这是很有可能的),则应在启动集群之后到读取和/或写入数据之前的期间检查监视器仲裁状态。有多个监视器在运行时,仲裁必须存在。您还应该定期检查监视器状态,确保它们正在运行。
_" i( Y& s$ K& {1 r8 W2 `$ Q& s0 g0 x; |
要显示监视器地图,请执行以下命令:
" c8 g* Y9 O4 J' x; d6 B- V/ E$ T* ]2 b
2 P8 o' R/ v$ i! f# \root # ceph mon stat8 y8 d7 T" x6 l' }
; E& y3 B" s' j% `" ?) [# V或者
6 q# L2 o5 n. F0 x6 i3 N' U
. X$ U/ Y" E# m- d! ]root # ceph mon dump
8 {" L$ @5 w* ~. ]2 J( W8 t" u/ K5 u# j4 q) ^4 E
要检查监视器集群的仲裁状态,请执行以下命令:
/ n$ O- g7 z9 P6 D+ W
6 j8 k6 V, j. M" V( b6 oroot # ceph quorum_status9 i( D! E$ b% F
& O9 E/ g) E( G# b7 u2 a" B6 q, C
Ceph 将返回仲裁状态。例如,由三个监视器组成的 Ceph 集群可能返回以下内容:5 O+ t( W. X# E) R( `- s8 _
5 z7 m! N" O5 E* N{ "election_epoch": 10,
$ K& [, d& o& F+ E0 {/ q4 v7 P5 R6 T2 i+ W* V2 l2 J% M
"quorum": [0 w T$ [+ W+ z/ W" n J3 g
! g M& k5 T0 L
0,
$ A, ?5 a3 z/ J9 D; C8 m# n
# l5 |5 t3 {. Z" z0 @7 b 1,
6 \$ n3 V, C3 N( Z
- B' B! {- G- G6 M 2],
( ^ ]3 x, j$ b6 z- S" C3 ?: q0 u2 n3 j* H' p; u2 X: P. Q, l. E+ G
"monmap": { "epoch": 1,- u* p0 n: S' r4 M
% s1 _! m7 T! m: I& g0 x' u
"fsid": "444b489c-4f16-4b75-83f0-cb8097468898",
) j4 g( k4 r% @5 l
- p; a5 H1 b6 Z9 o) l% J1 L "modified": "2011-12-12 13:28:27.505520",; \, B$ Z% m* i6 x' Y
7 R) T. R; O0 X" M, b
"created": "2011-12-12 13:28:27.505520",6 k2 c9 p9 ?. ^
4 |! ?7 r' m# N: u" V "mons": [0 J) K/ O* G9 I0 _4 a
% g& t; x a1 {! R( [4 S { "rank": 0,
" f, y% a5 x: v" @ f( ?4 E$ m, @
"name": "a",8 d: C4 g6 Z" l$ h5 ?; l
; n. R1 Y1 z: Y& j" { "addr": "127.0.0.1:6789\/0"},/ N9 i9 T, o5 ~& l
- z t2 c2 z3 ~- q0 Z
{ "rank": 1,
% n- u; r/ a' U: P$ t
- i2 h) c- a8 F J2 I" C "name": "b",
3 K4 a- \. x3 p6 O$ U0 T2 A# I3 J8 Z2 O; e. ]) C" l6 z
"addr": "127.0.0.1:6790\/0"}, }, B. N6 n4 f7 a0 i, S
0 ]6 g0 l+ N- T! Z9 r6 C! x" _* @8 H
{ "rank": 2,5 {1 t2 E# K% d1 H
) ]/ W4 }3 Q6 ]# s& B4 j! x# E$ N2 X
"name": "c",
7 \& l5 \1 n8 e$ B" F" G
; z' E# h# U2 x( u "addr": "127.0.0.1:6791\/0"}
/ N9 ]# g8 l# q W$ b; f3 a2 d
, J5 j8 U7 U x+ E9 h7 P" o ]+ L, t& |3 `, n9 T3 T3 s0 x
" Y, W8 n. M5 n$ v9 X; D
}
5 |. j- m& S2 V1 E7 [: b# D: v d+ g. U0 B/ e/ _+ H( W
}
) ~+ E1 W4 s1 H) o' \: I" C8 Q0 F* [! S' y" p
4.8 检查归置组状态 2 F! N& @' ^7 j" h' h( R
3 [1 D) N! D/ {$ q) e" {( D7 L归置组会将对象映射到 OSD。监视归置组时,您希望它们处于 active 和 clean 状态。有关详细的讨论内容,请参见监视 OSD 和归置组。& G" s/ a: S9 ]- ?* O! r( G
" Y) i+ h: t/ Z0 H
4.9 使用管理套接字
' x/ U$ U9 }4 k$ `( L0 S' A
( h7 j: A; [; O3 uCeph 管理套接字可让您通过套接字接口查询守护进程。默认情况下,Ceph 套接字驻留在 /var/run/ceph 下。要通过管理套接字访问守护进程,请登录运行守护进程的主机,并使用以下命令:$ b, X0 Y. g! @3 b3 i# t& h: s
' X+ r8 P1 l5 r: [8 t
root # ceph --admin-daemon /var/run/ceph/socket-name) ^) C5 E8 i% C: g
[1 ]( b* j2 i9 \+ L. o* D要查看可用的管理套接字命令,请执行以下命令:
3 F' b* J' L; J: s& `8 u
% k. H4 z: F Z' K$ b" rroot # ceph --admin-daemon /var/run/ceph/socket-name help
6 o4 ~: p+ j& F' U6 E3 p$ p" X% U/ w {$ O B0 e
管理套接字命令可让您在运行时显示和设置您的配置。有关详细信息,请参见在运行时查看配置。& F0 e( }" h' h0 `9 w9 J
. p$ ]# y; p, |0 ^* g7 i
另外,您也可以直接在运行时设置配置(管理套接字会绕过监视器,这与 ceph tell daemon-type.id injectargs 不同,后者依赖于监视器,但不需要您直接登录有问题的主机)。; s& `8 G" i0 P' q) Y$ W
|
|