|
|
楼主 |
发表于 2022-7-22 08:35:49
|
显示全部楼层
root # ceph pg deep-scrub pgid
5 l6 x ]8 U5 V( Z P5 x4 O: {) X
3 l1 T; S/ h" C' F& g- W& L1 X; }
% j' r' \: y c0 ?1 N/ i' w0 N, G, x! K
提示! v: F: ]1 o9 ~4 o4 |: t+ n
! h: Y- e; V. k2 W; x如果之前为您的配置或密钥环指定了非默认位置,则此时可以指定它们的位置:
' B& ]6 k8 t8 q! B$ }) N9 s! c
n; P# J4 H9 V2 K% xroot # ceph -c /path/to/conf -k /path/to/keyring health
, X n5 B x' h% L b0 `: }+ O
C$ v' e4 P+ G0 B# e4.2 监视集群
; } b j p9 n, C
+ \" |* ^# p8 U8 l4 d可以使用 ceph -s 了解集群的即时状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可在某工作负载正在运行时列显以下内容:
+ x% S' `4 [' V* [
7 c% H" w s* X, ?% ^cluster:) N4 j2 I, |4 m
* c: Y7 D5 g/ o. m8 H' ?4 [
id: 6586341d-4565-3755-a4fd-b50f51bee2484 X$ [6 x" |: K z
( o- Y" i* Q( \" B# j
health: HEALTH_OK
2 K. R* A* }* S5 z8 }% I/ R
( Q6 Z% ]+ |2 b( @- ]+ D4 o; z/ T ) K& [* ]/ ?% J7 R6 g( X3 F
' v& f. W) K W1 n8 k; c
services:
3 D6 o; x5 J& H
0 f0 N; d* P" c- s" X, g mon: 3 daemons, quorum blueshark1,blueshark2,blueshark3
$ J2 C4 a! W0 t T! A+ h B& f( A9 Z9 l, E3 j6 R. e3 I# `0 z
mgr: blueshark3(active), standbys: blueshark2, blueshark1/ z/ ?+ w- U) a8 y( ]# Q3 A( p( B" ~
! i8 T5 Y8 d9 g/ V l osd: 15 osds: 15 up, 15 in$ N; D9 ~( ]$ J; x. G0 B
8 D2 Y" k- b8 d" } # y; M: }$ b. b( q+ A: V
, @" r" h6 F: [- P3 Y9 S& |& U
data:
9 W. p5 U! V/ E5 [; Z" u0 o7 Z7 M6 _+ y7 p N
pools: 8 pools, 340 pgs
: D: `: m. n) I d% E4 l" b' y; S5 @' H, k3 j$ z8 U: W
objects: 537 objects, 1985 MB
4 `( B5 X/ n3 H# Z; h
7 Q; Y. e. w. a% L+ m7 D7 f usage: 23881 MB used, 5571 GB / 5595 GB avail K; E6 E7 O3 ]% H: S! a( E7 p% H) s
* @% p0 ?0 o3 ~# m2 {
pgs: 340 active+clean
4 L; A9 E5 B8 |6 O# p1 {! h" M. y. j& b* s/ S9 N( i7 e0 S3 L
5 ^- x' v! S* Y: s& Y k6 y! B( s& ]( B6 \4 G/ k1 a8 q- X
io:
+ @# n4 R) m" D, I6 N
5 O; l' t' Y+ N' H. Z client: 100 MB/s rd, 26256 op/s rd, 0 op/s wr
+ O% k4 C8 P6 ^" g2 G+ U
6 L6 T3 F4 b' u4 N输出内容提供了以下信息:" W; t$ a5 }4 H2 g* R; A& Z5 M
/ {7 i& o# S0 x9 V1 _
集群 ID
1 [0 H$ r# L: b/ |; N集群运行状况
. F* G" b5 F( L监视器地图版本号和监视器仲裁的状态
% z* i% {! I, V0 x+ MOSD 地图版本号和 OSD 的状态
6 e; W! w! C* d, Z2 ]- S* X归置组地图版本& K9 N, ?. S3 J, M) E! w7 [8 B" Z
归置组和存储池数量: e7 F$ E( U4 ~7 l9 ^
所存储数据理论上的数量和所存储对象的数量;以及
( _9 i0 z. _7 x) _+ c" f! s1 h" c2 N所存储数据的总量。; H, n, i; C0 ?3 w
. l! E6 J7 E0 h( | b4 g, O! [
* c7 W- V/ t$ P( @1 b( G提示:Ceph 计算数据用量的方式
k8 n0 r8 d& w( j6 x) ]7 v) a! U$ R. O0 T
used 值反映实际使用的原始存储量。xxx GB / xxx GB 值表示集群的可用容量(两者中较小的数字),以及集群的整体存储容量。理论数量反映在复制、克隆所存储数据或创建其快照前这些数据的大小。因此,实际存储的数据量通常会超出理论上的存储量,因为 Ceph 会创建数据的副本,可能还会将存储容量用于克隆和创建快照。
8 w' J& a% N/ D4 j% s) A, K$ t8 i2 j) U' G/ P. n* T6 B
显示即时状态信息的其他命令如下:
|. n" \1 R8 c2 Y
9 g, U# D; \; x4 hceph pg stat, {* ]9 M# D9 e9 x* l# a) v% g
ceph osd pool stats5 Z: i7 E6 h8 v8 U, I; j5 k
ceph df3 Y/ U7 e( F* y) K! c' C; D' H/ Z( F9 _& U
ceph df detail( L" r8 _3 v( h @) T; ]% F
要获得实时更新的信息,请将以上任何命令(包括 ceph -s)放置在等待循环中,例如:
* v) Y, Z+ ~# z2 O8 T- I! m. n! E+ y% L
root # while true ; do ceph -s ; sleep 10 ; done
/ Y0 }8 q. j2 w) Z. K5 ~% K Q0 s; C0 k
( n: F4 d: f, l) e2 O如果您看累了,请按 Ctrl–C。
9 r* }# ^0 ?: V2 G' q7 G7 k! P, s
4.3 检查集群的用量统计数字
+ G! f, E5 J: }2 Q9 k0 d* n& A' k" X R: ^! Z5 J1 m
要检查集群的数据用量和在各存储池中的数据分布,可以使用 df 选项。它类似于 Linux df。执行以下命令:7 D2 {2 o8 B v7 V' y! X
+ X. \6 s5 X: R6 d
root # ceph df7 T. A6 b1 s) R" u
4 h; u' b# h; v7 Q0 O2 s
GLOBAL:
+ d5 E0 g \8 ?9 [8 z+ o
% J) B, X' a5 ^! g$ p SIZE AVAIL RAW USED %RAW USED8 a3 j5 A$ U4 D
% L: X" x+ _# ?$ o& B, V2 M a 55886G 55826G 61731M 0.11! {4 u, k9 P: D9 ~# u
# U0 j2 G) g# _& J b q; \% pPOOLS:
( w8 {& c6 Q4 l+ |. I( L$ Z& C1 S# o( I1 u
NAME ID USED %USED MAX AVAIL OBJECTS
- } g9 f% [, G6 V" v0 {
# N2 l. D3 C% X7 p testpool 1 0 0 17676G 0- A W' s8 k6 X5 r
9 i B0 z( x: c' t; X0 h$ O ecpool 2 4077M 0.01 35352G 21025 x. W7 k' E0 H
5 L3 N7 p1 h5 s& ]* F test1 3 0 0 17676G 0
: h7 u, K" `0 j8 U# E: d: h; W0 T2 g+ d. ^4 _+ x
rbd 4 16 0 17676G 3; e" E( `" @+ T0 f. L' _* H: k0 U
% ^; S( m7 N# L" s1 L0 r: V rbd1 5 16 0 17676G 3% Y8 h' h* M* O+ T6 S* J
9 K; T7 E& F; T5 Y+ P N
ecpool1 6 5708M 0.02 35352G 2871) e1 ^( z, J* f3 B
: Z3 U- M) [" i' T! X) |9 l输出内容的 GLOBAL 段落提供集群用于数据的存储量概览。( A$ \' Q6 q% O
2 {! b. g! @( K t( V8 |
SIZE:集群的整体存储容量。
$ M# D( c4 |/ |' J9 q. b* ~. H: yAVAIL:集群中可以使用的可用空间容量。4 M1 z) T* C2 W7 C; u
RAW USED:已用的原始存储量。
# Q1 x& [- ?6 S0 }1 n% RAW USED:已用的原始存储量百分比。将此数字与 full ratio 和 near full ratio 搭配使用,可确保您不会用完集群的容量。有关其他详细信息,请参见存储容量。$ Z3 A# d! @! y
1 x5 c* Y( _( q' ?: w ]- G0 J- D; ]2 d" [7 A
注意:集群填充程度
$ N- x/ g, j+ {% @* J+ y+ W; ~0 `5 N% s
原始存储填充程度达到 70% - 80%,表示需要向集群添加新的存储。较高的用量可能导致单个 OSD 填满,集群处于不良运行状况。
- @+ _8 f3 X3 \( F6 M
- L5 |; A0 s5 w* ^/ I使用命令 ceph osd df tree 可列出所有 OSD 的填充程度。
: [8 w( ]) T* t7 s' p. {" [# W" H3 b( g/ s( @8 a
输出内容的 POOLS 段落提供了存储池列表和每个存储池的理论用量。此段落的输出不反映副本、克隆数据或快照。例如,如果您存储含 1MB 数据的对象,理论用量将是 1MB,但是根据副本、克隆数据或快照数量,实际用量可能是 2MB 或更多。
0 G; c; E6 ~5 u5 X" A( r& L5 P% p, B6 e6 r
NAME:存储池的名称。
: ]# X* O. A2 M9 gID:存储池 ID。. i) g7 Q" w5 q3 N8 {: J
USED:以千字节 (KB) 为单位的理论已存储数据量,如果该数字附加了 M,则以兆字节为单位,如果附加了 G,则以千兆字节为单位。/ g, A7 {$ U- R1 ^
%USED:每个存储池的理论已用存储百分比。" m* B8 f( Z' s- _; h' W8 T
MAX AVAIL:给定存储池中的最大可用空间。 q9 m& h0 k( K0 A
OBJECTS:每个存储池的理论已存储对象数。' q7 `5 L: X8 i) Z
1 ~' R5 U9 U$ v% u# o. w/ [. i6 p+ Z6 l& H' f- f! l4 V5 `. D4 [
注意# K* ?: {$ O ]" K8 S4 z0 y
! q& F% }7 v; P7 i
POOLS 段落中的数字是理论上的。它们不包括副本、快照或克隆数量。因此,USED 和 %USED 数量之和不会加总到输出内容 %GLOBAL 段落中的 RAW USED 和 %RAW USED 数量中。, H3 P4 T1 [" V8 S5 _
& b2 M/ \& u; ~( E6 y/ C" E- X! o
4.4 检查集群的状态 8 K' m1 g& G1 T
+ f7 k- N( ~7 a
要检查集群的状态,请执行以下命令:
' N0 k3 F) G6 M1 w. S g" \% L0 G& i4 \2 n) [
root # ceph status5 Q0 G. _2 f; J4 C3 i" Z
7 V _: o6 k: |3 T! h或者
; Q6 }% m" T. Z! a- h
6 k! D- m; s9 w4 N# }6 a- ~' k) vroot # ceph -s. ]& c' ~" K: C0 n; d9 {1 U
8 ?0 s" u% w) R6 A
在交互模式下,键入 status,然后按 Enter。
- j7 m/ j0 \: e$ C& L# U
1 M. Q. Y2 ^7 eceph> status# Q" ~& p/ |' L- F
; p# q+ h9 r+ RCeph 将列显集群状态。例如,由一个监视器和两个 OSD 组成的微型 Ceph 集群可能会列显以下内容:
$ Q/ ^+ Q# K5 E' ` c
. I( G. ^) o2 S2 y$ ?cluster b370a29d-9287-4ca3-ab57-3d824f65e3398 P4 s w4 B! N5 a# G# r
$ @: x5 J7 ]$ D/ l- g. ]
health HEALTH_OK
' Z0 D( {6 q, a0 c. T2 S, j i# R$ { A# C* Z
monmap e1: 1 mons at {ceph1=10.0.0.8:6789/0}, election epoch 2, quorum 0 ceph18 q" G# T5 K' r& n$ |7 R- J% F$ K
" u+ u; |* O( `; a
osdmap e63: 2 osds: 2 up, 2 in
( e* P) v1 k. z
+ S* r4 ~3 D( ^& l% u, l pgmap v41332: 952 pgs, 20 pools, 17130 MB data, 2199 objects6 o% X; ~6 J1 |( I, ?+ e" }
$ ?+ p! J: c: {0 N: a( i4 ?
115 GB used, 167 GB / 297 GB avail
! K% I# ~5 l- R; |
) N& v9 P6 Z# u9 Q% b 1 active+clean+scrubbing+deep
' l- {/ K7 u% A# t$ `
/ A0 W" }; U7 b8 G( M! Q 951 active+clean3 }0 s! U2 H7 ]% I7 G. _
( g# s) z$ k1 K- B* e
4.5 检查 OSD 状态
) V& P6 B$ P) Y9 W3 R
& M( z0 ^; N9 {& M- o可通过执行以下命令来检查 OSD,以确保它们已启动且正在运行:
# c7 @, |1 V$ Y( T- X/ T% i
8 W: {8 C! R) `8 w, qroot # ceph osd stat
b4 O: H& A J- O1 K" e2 g* A) K/ s7 N4 ?9 G, a
或者* B; ^% F v. b: m" I
$ H* g s, Q, e' k) l8 L+ C* }
root # ceph osd dump
0 {4 P, e, L- |' A& B9 P" D2 W5 u" E( U
还可以根据 OSD 在 CRUSH 地图中的位置查看 OSD。
, \, [" p+ T9 \
! h+ P6 T* e8 q* Q# C1 {: u! mroot # ceph osd tree
) d& D4 f% }5 n' l0 R0 [5 X! ^& E
& U. ~1 p1 s* B/ @% x6 Q8 RCeph 将列显 CRUSH 树及主机、它的 OSD、OSD 是否已启动及其权重。* S8 l" C4 C3 F
1 T" P9 d2 U3 {, L! E# id weight type name up/down reweight8 N1 X/ D9 W8 a" j$ N& r9 Y( @
9 x. K( p3 j! o
-1 3 pool default8 r) G' J' ~8 y& F4 A: n
/ v% c, Z- ]+ m-3 3 rack mainrack
6 M3 r. I! j- S! x
h1 ~$ ?2 V7 m& Q1 j6 s9 A-2 3 host osd-host' P8 N( P9 F2 T: R+ k) z( k
# E1 F3 g# t Z0 n8 T( a7 I" G
0 1 osd.0 up 1
, K! C8 }' d O; ]8 p3 T) w I/ j% R. i) p: P& f' T
1 1 osd.1 up 1
5 @4 x% J3 T4 c5 b3 {7 w; n/ U# R; F" a3 Y; V3 c% k
2 1 osd.2 up 1
8 v5 Y9 H3 c% p9 g; a5 Y! |+ k6 s2 u X% u3 H) [
4.6 检查填满的 OSD
/ T P! R' L5 \: \$ ~" G% Y8 K; }4 ?* w; M& L
Ceph 可阻止您向填满的 OSD 写入数据,以防丢失数据。在正常运行的集群中,当集群接近其填满比例时,您会收到警告。mon osd full ratio 默认设为容量的 0.95 (95%),达到该比例后,集群会阻止客户端写入数据。mon osd nearfull ratio 默认设为容量的 0.85 (85%),达到该比例时,集群会生成运行状况警告。
1 b" L" Y# c9 c8 g# p1 K, A4 r
5 _6 m' L6 H- @: m. X4 E4 Y' H可通过 ceph health 命令报告填满的 OSD 节点:
; e4 p' ~ g% v# K$ S5 l' c& v* E9 a( |8 W3 _# w# \5 \
ceph health9 t+ o- h( t& S, ^
) Y7 @% P y0 j# Z* ]2 }, J HEALTH_WARN 1 nearfull osds& E: q3 C/ I: C) r, q$ Q: Q. C/ K
( L$ C+ U# j* C& g: ]' T; i osd.2 is near full at 85%
( q% G8 L8 u! |9 p
& U9 Z0 ~( W% L" A# Y Y或者5 N) J3 S; E, U) d
/ z& }# W) l6 M- q$ U
ceph health* n, `" m6 ]) ?1 t p
" Y s. @1 B# G& V HEALTH_ERR 1 nearfull osds, 1 full osds/ F: b, L2 v4 |1 ]* d
' Z/ z, g z9 y; @4 T- O+ c
osd.2 is near full at 85%0 Z2 P s' e7 [
+ c3 k _1 R. E osd.3 is full at 97%2 @4 f5 H7 ^0 U3 J0 [9 I8 p# {4 o9 \
; i* T! y, R; M4 t7 k+ z处理填满的集群的最佳方法是添加新的 OSD 节点,以让集群将数据重新分布到新的可用存储。
( \3 n' y8 s D/ l: N. h/ t
7 }) ~ k) A0 S# o2 T如果 OSD 因填满而无法启动,您可以通过删除已满 OSD 中的一些归置组目录来删除一些数据。
' R$ o# X4 K( c a- |5 ^" S" t2 n- F1 a4 X
9 ~$ w* g" A: t. k6 ?; q3 } H) Z4 M, M: D
提示:防止 OSD 填满
5 Y/ k# r0 I9 a$ p" E+ R" D& q/ t m" d( ~1 g5 ]) x2 S
OSD 变满(即用完 100% 的磁盘空间)之后,往往会迅速崩溃而不发出警告。管理 OSD 节点时需记住下面几点提示。
: w( z" v2 B+ M, f# k, s2 d$ {# j b/ f* |$ o8 {
每个 OSD 的磁盘空间(通常挂载在 /var/lib/ceph/osd/osd-{1,2..} 下)需放置在专用的底层磁盘或分区上。0 y+ y& T1 W- S; f! p7 j& J0 T8 E$ W
检查 Ceph 配置文件,确保 Ceph 不会将其日志文件存储在专供 OSD 使用的磁盘/分区上。
1 ~; Y4 f/ m; o3 z, s5 o确保没有其他进程写入专供 OSD 使用的磁盘/分区。
5 Z1 g' U. e6 ?/ a! v: y( c, g& j4.7 检查监视器状态
! Z- a# J" I' X' X6 d2 v+ o# Q- Q1 F z- ?: X
如果集群有多个监视器(这是很有可能的),则应在启动集群之后到读取和/或写入数据之前的期间检查监视器仲裁状态。有多个监视器在运行时,仲裁必须存在。您还应该定期检查监视器状态,确保它们正在运行。( U8 Y a: \; m2 h3 [4 ?! h
) ~5 G3 z( h$ l; J8 J要显示监视器地图,请执行以下命令:
2 y4 U3 x- Y. z* k) c6 R- Q0 m9 W( ?; a! S+ u+ c* j$ |& A! p- S
root # ceph mon stat# f' s0 ]2 u7 D9 e: Z3 l- T
: I' @! R/ S/ L或者6 k- m6 {, s. i3 A- i& p
. x8 }, }: e5 W, {7 ?0 ^root # ceph mon dump. a, H8 b: S3 {8 s% N C; s
1 U/ N7 I6 Y8 P% F9 z要检查监视器集群的仲裁状态,请执行以下命令:
( D, ]) N K* v1 ^, Y% [- u
) J0 \9 l- W% q; m" F$ y; H, Yroot # ceph quorum_status
2 [9 r, C# b( t8 V9 x0 Q2 a( p o
) G. q6 z1 G. N- O+ B6 E* |1 xCeph 将返回仲裁状态。例如,由三个监视器组成的 Ceph 集群可能返回以下内容:
! G- T- t; `: g1 v5 Z6 C, M5 n; h3 K/ G
$ q( X; T7 {! O* J) A- |0 H{ "election_epoch": 10,: b, ^( Y! n+ D
# C/ `) _) x) Y; c2 U "quorum": [& P& L1 {$ H8 }3 i6 K5 l
1 |1 v0 J- `4 d5 A
0,2 D( [( l( [) _/ q, N. Y
$ z9 d5 _2 F- ^( n( K! c 1,: ~4 L( w) T8 n8 Y8 T/ r
" M. k: J( ]8 K1 z; \
2],
* }& E, y* d9 t. l4 h7 l8 N$ E% Y: r. e- \6 B( \$ S
"monmap": { "epoch": 1,1 ^) W( G- c6 g1 A; @, b
4 S' q9 d' B# O- v
"fsid": "444b489c-4f16-4b75-83f0-cb8097468898",# F/ s k# n5 w' H! C
t) W2 w/ s6 C. H/ J6 |; T
"modified": "2011-12-12 13:28:27.505520",
- B4 N) q* g/ d/ Y/ H, j% q" m) j' {3 R; R: e8 [
"created": "2011-12-12 13:28:27.505520",; z+ G! J7 c5 l1 w4 ]; m: E
0 W! J3 C. D+ ]# v: |
"mons": [" T0 M& J5 Z6 Y: }, Y0 x @ d& u
/ ^, h! ^; F5 M1 {; J
{ "rank": 0,- l( s) j2 h; T8 \: Q' @8 p: M! s2 d
- X3 R- G& t% Q6 `/ j3 U( D "name": "a",
6 d) [, N+ {8 h5 ^; d* j& n- j5 Z- ?" l) }
"addr": "127.0.0.1:6789\/0"}," h" Q# Y; q) @" }/ ?$ o" W G+ z3 [
8 M5 s, T) W. k' V- W+ u { "rank": 1,
4 F/ m9 I- ?) Z" |# {7 B3 t& I# V5 }+ Z3 b$ w# C( O
"name": "b",
R; S0 \6 M# S6 M7 k
" [4 [& c, B9 \ "addr": "127.0.0.1:6790\/0"},
! R2 j! o* P( X/ N& D( M1 ~$ t2 D4 t- g6 Y+ T4 W- d/ p
{ "rank": 2,! _' H7 a# n* F* ?9 F1 F% E9 K" u
- R& p8 t0 @4 X( j' f "name": "c",
6 X( D7 r6 k* m0 @: F, q9 a) k$ [
. J* {5 x7 C h& T3 Y# X) x "addr": "127.0.0.1:6791\/0"}# W; {$ m* t) X8 H6 q3 X5 U
2 s3 N( K! A6 N [9 v; q( w
]# M: l2 i1 q3 Z1 b
7 X% w1 F4 v- W, k" a
}" V9 s Q- d! i% v$ W
& e% u8 K; Q0 \5 B: |/ x7 F}
) z/ n: |& y, }
- a0 U. V) H* [* U& R4.8 检查归置组状态 1 V8 U Z+ e% a8 s" U
! s5 L* X$ a' E% Q* n4 h! A
归置组会将对象映射到 OSD。监视归置组时,您希望它们处于 active 和 clean 状态。有关详细的讨论内容,请参见监视 OSD 和归置组。
2 X* d& t3 T% l
- N: b- `3 [* h1 ]7 s w! L4.9 使用管理套接字
, b( j& Y. O- r) y0 ^/ T' h2 H6 e7 {2 g9 l K" ~+ @' j
Ceph 管理套接字可让您通过套接字接口查询守护进程。默认情况下,Ceph 套接字驻留在 /var/run/ceph 下。要通过管理套接字访问守护进程,请登录运行守护进程的主机,并使用以下命令:
9 D% o0 s3 e. T. E3 J2 P8 c. x
1 |: G. s1 }: R2 g9 Z+ B5 t2 q2 Oroot # ceph --admin-daemon /var/run/ceph/socket-name
( j) y5 }9 x- G5 _4 Y; S3 A' j1 Q# O9 e2 k, ^4 M; G; f V
要查看可用的管理套接字命令,请执行以下命令:
5 @& J, `8 o6 P5 Z3 Z$ V5 p0 x9 t0 W& ~4 {; [( G
root # ceph --admin-daemon /var/run/ceph/socket-name help" o q1 v& W3 q) q+ J& ]$ j
3 e7 k4 ]9 d0 _# ?: K管理套接字命令可让您在运行时显示和设置您的配置。有关详细信息,请参见在运行时查看配置。1 U8 o# w1 {9 H" D& a) g$ E2 Y$ n
+ P9 `1 @6 j( ~( B1 n6 v% }: |8 I
另外,您也可以直接在运行时设置配置(管理套接字会绕过监视器,这与 ceph tell daemon-type.id injectargs 不同,后者依赖于监视器,但不需要您直接登录有问题的主机)。
9 \6 P! i4 |' n Z# m7 w |
|