|
|
将存储池与应用关联 U* P# j) u% J4 N0 G
在使用存储池之前,需要将它们与应用关联。将与 CephFS 搭配使用或由对象网关自动创建的存储池会自动关联。需要使用 rbd 工具初始化要与 RBD 搭配使用的存储池。/ q6 M" D2 W+ s% D: R6 s$ b0 b+ l
) q8 m7 t0 n! i. d2 o$ Y7 N
1
! {3 p: c1 f% X- H3 [9 Y( T) { root # ceph osd pool application enable pool_name application_name( D6 Y1 d7 Y. L
2 v( _9 z3 L! p2 N
一个存储池可以与多个应用关联,每个应用都可具有自己的元数据。可使用以下命令显示给定存储池的应用元数据:
* A+ E! V# ] b# r3 h. m1 ^( `8 @' F: E
1* q5 H5 T5 a' z/ g0 L& L4 P) w
root # ceph osd pool application get pool_name/ m( a, ?& z% D& H, q$ d0 f3 I3 N) D( I
/ j8 C$ [& x0 `
操作存储池 C6 c! L3 D: F" M' R) X1 c# y
了解如何列出、创建和删除存储池,以及如何显示存储池统计数字或管理存储池快照。
& M" u+ _ Z* u列出存储池
9 O8 Q: s4 H) [9 m y. q要列出集群的存储池,请执行以下命令:9 J+ Q* N y; y
/ C* F2 c) L! ?* T root # ceph osd lspools
8 x1 ]$ L+ a# t6 u) B! v0 rbd,
- E, R8 F0 b1 X$ Y9 s1 photo_collection, 0 h8 V$ l5 [) v( z
2 foo_pool,
" O- T5 W6 K# X" ]4 b% k" c
- S- q5 u i1 Q: Z2 b8 K创建存储池# a, ~- T1 n: o: L2 R3 X
要创建副本存储池,请执行以下命令:
6 v6 s' p, r. Q0 @4 }* g
2 g o, c, M7 E b6 y1, c1 l! |3 i2 a! @
root # ceph osd pool create pool_name pg_num pgp_num replicated crush_ruleset_name expected_num_objects
6 ?6 }% N& ?( J+ w( Z0 y4 S4 V; S3 i
要创建纠删码池,请执行以下命令:
) V" q( X, _' |/ h8 m: k2 i b6 w( x: B
1$ t, q2 ^+ V! z& b+ ~! F
root # ceph osd pool create pool_name pg_num pgp_num erasure erasure_code_profile crush_ruleset_name expected_num_objects! \) _ \8 `+ V$ y9 x3 O# @
; c+ a0 P7 f ~3 S, ppool_name
( u$ J; L! j2 d, x; D& q存储池的名称,必须唯一。必须指定此选项。
, F0 {: H1 A; F1 ?, _1 q% u) @pg_num
& w: ~$ a! e7 d# l, i& X存储池的归置组总数。必须指定此选项。默认值是 8。
8 _6 T7 g) @1 F, p lpgp_num6 U7 S/ I1 V) M2 E
用于归置数据的归置组总数。此数量应该与归置组总数相等,归置组拆分情况除外。必须指定此选项。默认值是 8。3 h- [( E, j3 G# x1 I
pgp_type
5 K) {: `' l1 V4 `1 g. x4 \存储池类型,可以是 replicated(用于保留对象的多个副本,以便从失败的 OSD 恢复)或 erasure(用于获得某种通用 RAID5 功能)。副本池需要的原始存储较多,但可实现所有 Ceph 操作。纠删码池需要的原始存储较少,但只实现一部分可用的操作。默认值是“replicated”。
7 l! F5 }! J' l3 v& [; `* Vcrush_ruleset_name
4 J" D* o- s7 R4 @+ P ?3 R* I; L& i& y此存储池的 crush 规则组的名称。如果所指定的规则组不存在,则创建副本池的操作将会失败,并显示 -ENOENT。但副本池将使用指定的名称创建新的纠删规则组。对于纠删码池,默认值是“erasure-code”。对于副本池,将选取 Ceph 配置变量 osd_osd_pool_default_crush_replicated_ruleset。 n* F4 P& G3 W0 ~3 `% s8 ~
erasure_code_profile=profile5 J o$ Z- f2 a" r
仅适用于纠删码池。使用纠删码配置。该配置必须是 osd erasure-code-profile set 所定义的现有配置。
4 p6 [' v: c5 texpected_num_objects* p5 j2 R5 ]1 N& g2 p1 ]
此存储池的预期对象数。如果设置此值,PG 文件夹拆分发生于存储池创建时。这可避免因运行时文件夹拆分导致的延迟影响。
4 J5 R6 c+ N5 K# Q+ @# A设置存储池配额
J5 U+ M' |( t您可以设置存储池配额,限定每个存储池的最大字节数和/或最大对象数。" F7 R7 |/ U# V( |0 i+ V# U
- S4 J4 M- V$ I6 J- @. A1; R- p! l: H6 O- j! O
root # ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes
: A# u$ [1 {* O3 r8 U( y- _1 v+ R
& e2 z" _6 x2 U& `删除存储池
( t1 W u$ k( d% f存储池中可能包含重要数据。删除存储池会导致存储池中的所有数据消失,且无法恢复。
% f) l7 W. e$ C. E不小心删除存储池十分危险,因此 Ceph 实施了两个机制来防止删除存储池。要删除存储池,必须先禁用这两个机制。3 J2 g$ O* A" S1 D* |
第一个机制是 NODELETE 标志。每个存储池都有这个标志,其默认值是“false”。要确定某个存储池的此标志值,请运行以下命令:6 T, c5 @0 Q0 B( g0 c3 |1 l
% j3 N7 A" _7 H$ Y- ~1/ T: m% F5 f+ w" t# W9 H" b2 i
root # ceph osd pool get pool_name nodelete
, V* K; s0 Q2 q7 q' U
h7 {7 @) O2 B9 w7 y( W如果命令输出 nodelete: true,则只有在使用以下命令更改该标志后,才能删除存储池:
! r. d) T* n9 B$ O& I
8 p: m3 l3 j- C2 I$ }1
1 q4 R. K l2 M! k1 i5 E# b. S/ C ceph osd pool set pool_name nodelete false3 G/ j% `" o; @. D2 B1 O$ e( x
( O8 Y& l/ D* f+ z2 n! `7 C第二个机制是集群范围的配置参数 mon allow pool delete,其默认值为“false”。这表示默认不能删除存储池。# t- n) }9 j- b: w2 N5 u) |
若要规避此安全设置删除存储池,可以临时将 mon allow pool delete 设置为“true”,删除存储池,然后将该参数恢复为“false”:. P& M9 u+ F4 C$ p+ d
# V- x- Z; g& C1 w0 b' p
1* z4 }8 I3 B' P3 V3 p) ^3 l
2
$ V6 [, o4 d a' [; z2 V3
$ S% j, h# {1 c48 `" m H- ~" ^: V' A
5
1 X) D3 F! H2 }3 B: L0 w root # ceph tell mon.* injectargs --mon-allow-pool-delete=true \) \/ E0 C! o0 k f" \! Z5 c! Q
root # ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
$ z+ i0 q' L2 mroot # ceph tell mon.* injectargs --mon-allow-pool-delete=false
2 h3 z2 x1 L* I: q3 Z
1 e; ~( a- A) f& i2 Q. ]injectargs 命令会显示以下讯息:; ?5 {5 B4 a H. N- o9 U! e
1 ?; F0 e/ k2 b" f3 q! G W U2 P16 x* b, x* q: s! ~: J- a3 ~6 h$ [
injectargs:mon_allow_pool_delete = 'true' (not observed, change may require restart)+ m9 h; @% E, `/ ?0 M) Z
) H6 K5 y4 p: E% j( z重命名存储池" H1 D6 c9 X- _, q0 W" R: C
要重命名存储池,请执行以下命令:3 w' N6 n! S, x/ i6 M0 s
; q v, s/ r1 d0 ~' K# w% P" V. b
1
/ L/ }* R7 B' W root # ceph osd pool rename current-pool-name new-pool-name
& B3 J. i K' P, n2 u+ b
% x) P" C0 J* c) |如果重命名了存储池,且为经过身份验证的用户使用了按存储池功能,则必须用新的存储池名称更新用户的功能。
. x( d8 T6 e' W. H1 _- c4 t6 k# l, ?显示存储池统计数字: l, H1 z5 l, J- [
要显示存储池的用量统计数字,请执行以下命令:/ ?( [- \5 z* S: S( A
2 k2 M3 Z' a* P. v7 k V( n6 }
root # rados df, g* }8 a! g4 N* n
pool name category KB objects lones degraded unfound rd rd KB wr wr KB
9 J, T. n9 z( I/ O* Acold-storage - 228 1 0 0 0 0 0 1 228: v1 X o/ Y/ D5 @
data - 1 4 0 0 0 0 0 4 4$ y% D, Q: q! |' f$ n6 l
hot-storage - 1 2 0 0 0 15 10 5 231
+ w6 J8 O4 X2 fmetadata - 0 0 0 0 0 0 0 0 0
1 g$ y* K7 N# ?/ } spool1 - 0 0 0 0 0 0 0 0 0
! n# J: v- R" G4 o- Irbd - 0 0 0 0 0 0 0 0 0; D( A0 j0 m; c
total used 266268 7
4 h1 p) i0 M, Y4 Stotal avail 27966296
! U* n* O* n. u& f' Ptotal space 28232564
7 N& W0 t; K3 N6 ^: a) q( p9 g- O- v D, a7 r: H. b: j0 t S& e
设置存储池的值! \6 x% o* W) L9 T1 ?
要设置存储池的值,请执行以下命令:
9 p* |- n9 v2 G1 ^) F7 N: a' D6 ]! Q4 A: R' W2 S
1- |7 \3 X( N, z4 i2 z8 w
root # ceph osd pool set pool-name key value
' Z" S' p7 q+ O9 u. y8 {2 V1 _# ~# f- M8 L
: y* F( L2 b# B/ i
: v% k3 Z+ n5 H% j" a0 D7 _size
. {+ a1 }2 c3 P4 }5 d9 T. F( g设置存储池中对象的副本数。
0 K; s4 l7 n! R( H" q* U# c/ H/ E* `min_size
; M7 R5 X+ E$ y( s- |7 n7 Q) K设置 I/O 所需的最小副本数。# x' A8 e" ?8 i l3 W M% A
crash_replay_interval* e' R% H" s' q R
允许客户端重放已确认但未提交的请求的秒数。: B7 D$ S% |- w9 V
pg_num
9 m7 A8 K9 G. e ]4 x/ i存储池的归置组数。/ k0 c% |2 a4 q" H. n
pgp_num. |) ]9 W3 W& E2 L0 }! I* @
计算数据归置时要使用的归置组的有效数量。- m8 c: D$ m; t& t" Q4 t5 J
crush_ruleset V7 y, V# L' m3 @; N0 E
用于在集群中映射对象归置的规则组。
1 e7 Q! D' J9 v9 v; ^hashpspool. B2 K% b; r" K/ D
为给定存储池设置 (1) 或取消设置 (0) HASHPSPOOL 标志。启用此标志会更改算法,以采用更佳的方式将 PG 分配到 OSD 之间。对之前 HASHPSPOOL 标志设为 0 的存储池启用此标志后,集群会开始回填,以使所有 PG 都可再次正确归置。请注意,这可能会在集群上产生相当高的 I/O 负载,因此对高负载生产集群必须进行妥善规划。
( ~" W( v3 K) A: Rnodelete
2 k0 j7 a# w7 z. [8 c3 o防止删除存储池。! v% l% L1 p9 R2 w U; G
nopgchange; u. c2 H/ Z3 R
防止更改存储池的 pg_num 和 pgp_num。7 G% r9 s- P, n
nosizechange( @* E M5 v* X, i& G7 J
防止更改存储池的大小。
3 @+ W) k) C" [9 [9 p7 L- M/ Owrite_fadvise_dontneed; |( N! ?8 ~3 O7 {# e7 J- b
对给定存储池设置/取消设置 WRITE_FADVISE_DONTNEED 标志。$ T( \; J: l2 H
noscrub、nodeep-scrub i: E9 s, ~, H3 y% o) k. N- K
禁用(深层)整理 (scrub) 特定存储池的数据以解决临时高 I/O 负载问题。6 E8 v0 \+ c. R1 U9 n
hit_set_type
5 j. S% c. ]: f( k! U/ R2 _' l/ |对快速缓存池启用命中集跟踪。请参见布隆过滤器以了解更多信息。此选项可用的值如下:bloom、explicit_hash、explicit_object。默认值是 bloom,其他值仅用于测试。
7 U! w4 d$ v9 M$ R) mhit_set_count2 D8 R" z) j e; ~" Z" W
要为快速缓存池存储的命中集数。该数值越高,ceph-osd 守护进程耗用的 RAM 越多。默认值是 0。- X5 G" p3 a6 }" _0 ~0 S- [
hit_set_period( x Z: T6 o) J# k' G* ?% u" A9 B3 a9 N
快速缓存池的命中集期间的时长(以秒为单位)。该数值越高,ceph-osd 守护进程耗用的 RAM 越多。
: ^! p9 H) L O+ [& h+ chit_set_fpp$ C9 ~$ j/ ^7 r4 e( H( G6 S
布隆命中集类型的误报率。请参见布隆过滤器以了解更多信息。有效范围是 0.0 - 1.0,默认值是 0.05
% B0 b6 Z8 V3 I0 L6 Fuse_gmt_hitset1 m& z- Y Z# T/ B0 M, s! p9 v) D. V
为快速缓存分层创建命中集时,强制 OSD 使用 GMT(格林威治标准时间)时戳。这可确保在不同时区中的节点返回相同的结果。默认值是 1。不应该更改此值。5 T2 C; J: G. l, t7 O
cache_target_dirty_ratio5 Q6 X( M5 |/ _& A
在快速缓存分层代理将已修改(脏)对象清理到后备存储池之前,包含此类对象的快速缓存池百分比。默认值是 .4; u5 A9 [) D' `1 Z
cache_target_dirty_high_ratio
& r: \7 ?' @7 N在快速缓存分层代理将已修改(脏)对象清理到速度更快的后备存储池之前,包含此类对象的快速缓存池百分比。默认值是 .6。
1 q7 j5 o8 }2 a' Z7 ]; _( Lcache_target_full_ratio
8 g' ~8 _$ @6 j在快速缓存分层代理将未修改(干净)对象从快速缓存池逐出之前,包含此类对象的快速缓存池百分比。默认值是 .86 X- p( s) u) T5 e, m
target_max_bytes2 S! K; O1 _! v/ G/ V( t/ ]
触发 max_bytes 阈值后,Ceph 将会开始清理或逐出对象。
1 M1 g, O3 W9 A9 y" U0 S8 D9 }target_max_objects
0 g4 ?/ J1 J2 I: \- Y: Y' _触发 max_objects 阈值时,Ceph 将开始清理或逐出对象。
; {1 H% s4 I; e( B9 Chit_set_grade_decay_rate# Z7 C$ g- m: l. _9 I
两次连续的 hit_set 之间的温度降低率。默认值是 20。
7 c" l* n: L4 ~7 z. @hit_set_search_last_n
4 W8 u9 \. ]; y* |计算温度时在 hit_set 中对出现的项最多计 N 次。默认值是 1。/ P; \% `+ _! Y# j) c5 \! p; ^8 \
cache_min_flush_age6 A, Z$ z, M& Q2 b# b% ]6 M, `9 A4 g
在快速缓存分层代理将对象从快速缓存池清理到存储池之前的时间(秒)。
. w% p' \ u W3 ~0 m* s- h( Acache_min_evict_age } O' g* W' G P4 R Z
在快速缓存分层代理将对象从快速缓存池中逐出之前的时间(秒)。/ ~; t0 w! o* q" W7 Y
fast_read
0 L' a9 E' O! c1 [# M+ c如果对纠删码池启用此标志,则读取请求会向所有分片发出子读取命令,并一直等到接收到足够解码的分片,才会为客户端提供服务。对于 jerasure 和 isa 纠删插件,前 K 个副本返回时,就会使用从这些副本解码的数据立即处理客户端的请求。这有助于获得一些资源以提高性能。目前,此标志仅支持用于纠删码池。默认值是 0。
2 a) `* O5 H& h0 u' d- a2 j0 n: Escrub_min_interval! |) Q0 u2 C# Y' B( ]- i* N
集群负载低时整理 (scrub) 存储池的最小间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_scrub_min_interval 值。
' d6 x* ~* O6 |+ oscrub_max_interval
1 i$ z& y6 s+ }6 P不论集群负载如何都整理 (scrub) 存储池的最大间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_scrub_max_interval 值。
$ u& s2 w8 R r& K/ O1 c- Adeep_scrub_interval
, A+ F0 e" k, y, N' u深层整理 (scrub) 存储池的间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_deep_scrub 值。
0 T: A9 z- }3 D" l1 Q0 c h
6 l, U- m7 N& G! F2 a获取存储池的值! Q; }8 n6 g0 R& t5 p2 U
要获取存储池中的值,请执行以下命令:
( @% e2 E9 I5 w0 e+ B
- j: g v7 b5 m W( t) A1
7 X: [( L; ?- b" m$ f root # ceph osd pool get pool-name key; o5 p( t" \% `2 r* s, K
5 Z$ b9 H6 d% D7 ]) W7 e( v
% K4 J; Z, \& b8 ^; ~' z pg_num
7 d& D& ]8 A# N. w6 s+ s/ L存储池的归置组数。
, s8 ~3 ?% S( a7 I8 F& _' [" l' |3 [pgp_num
+ u2 x) e% }6 Y Y2 V3 m. P计算数据归置时要使用的归置组的有效数量。有效范围小于或等于 pg_num。
6 B, i: H+ B" G/ M: k6 ^' e. ~$ [7 h+ T! c0 e# R6 ?* v, Z, |
设置对象副本数4 O: x" M5 y) @- m& I' ~. _
要设置副本存储池上的对象副本数,请执行以下命令:& w3 _* N) Z; `# t3 e+ {' ]
) E. X) h+ \! a1 k# C% w
+ c7 K( B* F! D" Droot # ceph osd pool set poolname size num-replicas1 Z) u" f) N$ I7 u: F! s7 f K8 s: E
num-replicas 包括对象本身。例如,如果您想用对象和对象的两个副本组成对象的三个实例,请指定 3。
# G2 x9 b( I/ A% @/ a9 [' P1 Y: `6 b0 ?& w0 h' z$ g
获取对象副本数1 z% R! ~, v1 |
要获取对象副本数,请执行以下命令:
& E* r" B7 N) g8 K
2 @# z; Y& J: s8 w! C1( d% y. d4 d5 r& E n& r |" T7 j
root # ceph osd dump | grep 'replicated size'
3 q; P: V% O q# Z, N% Z& O. f: t$ n/ R8 K/ { _
7.2.11 增加归置组数
: K$ [8 Q; E$ o3 S& L创建新存储池时,需指定存储池的归置组数(请参见第 7.2.2 节 “创建存储池”)。将更多 OSD 添加至集群后,出于性能和数据持久性原因,通常还需要增加归置组数。对于每个归置组,OSD 和监视器节点始终都需要用到内存、网络和 CPU,在恢复期间需求量甚至更大。因此,最大限度地减少归置组数可节省相当大的资源量。8 w$ Q0 f8 O% V% [
& L% D; O }8 x$ W. }1 C" S! \5 ~0 E6 P9 O4 y9 z7 H
root # ceph osd pool set rbd pg_num 4096
9 i s0 y/ N/ d% d6 r9 w+ W3 m0 H' K
添加存储池
) y8 s$ N+ D; e$ A在您首次部署集群之后,Ceph 会使用默认存储池来存储数据。之后,您可以使用以下命令创建新的存储池:9 T- l: _ Z3 [
' a6 V. E2 [- K6 d' z! q" `
1
; A S6 R9 q5 H- W$ F root # ceph osd pool create
9 V4 J1 L4 Q' }: X& e8 H! `
( v- O) |6 x3 D1 c* d存储池迁移- ]2 Y( d/ x" V3 p( g3 A( h$ T
迁移存储池的方法有多种。建议使用快速缓存层,因为该方法是透明的,能够减少集群停机时间并避免复制所有存储池的数据。
- N$ z5 C, Y9 Y9 v; X: ]0 b& X- \7.3.1 使用快速缓存层迁移, i' _+ F' s j! [# N2 h3 }% Q
该方法的原理十分简单,只需将需要迁移的存储池按相反的顺序加入快速缓存层中即可。有关快速缓存层的详细信息,请参见第 10 章 “快速缓存分层”。例如,要将名为“testpool”的副本池迁移到纠删码池,请执行以下步骤:
1 X X4 M* _: {. f2 S" V创建一个名为“newpool”的新纠删码池:
6 _5 y3 o7 ^* }: F8 D9 y
4 b! ]7 J8 ?0 ?7 P8 k1
4 \1 {5 g7 m/ ?& o. o; l J root@localhost > ceph osd pool create newpool 4096 4096 erasure default
: t% t2 V" N( o4 a( g) {- ^ U9 o7 E& P
您现在有两个池,即装满数据的原始副本池“testpool”和新的空纠删码池“newpool”:( d5 a$ F) X* j# F# }) B, O; v7 n
设置快速缓存层,并将副本池“testpool”配置为快速缓存池:
( v' q, f' N) Q4 \
" I8 j9 J" C& u1 o* z root@localhost > ceph osd tier add newpool testpool --force-nonempty5 w6 M& X6 \: e% @: k- P8 a4 |
root@localhost > ceph osd cache-mode testpool forward$ @7 h- f/ D* U
. S. Y0 i- a, \ P; i1 S强制快速缓存池将所有对象移到新池中:
h7 @: m: h7 M; i8 W [% F
4 K2 H; P) G7 I! V* Z1
/ ^* R) x" M5 s3 X! e root@localhost> rados -p testpool cache-flush-evict-all& s$ m* ?8 L3 \' `5 E- k; C
, n5 O' W' }* `2 F数据清理
0 |- _9 Y% S# u$ p1 l! H% q将所有客户端切换到新池。您需要指定一个覆盖层,以便在旧池中搜索对象,直到所有数据都已清理到新的纠删码池。! z5 I5 e6 u; |
6 d& P& U2 v8 c% H: U/ z2 |2 x16 z, F$ Z2 V$ p
root@localhost > ceph osd tier set-overlay newpool testpool
`/ O* J% a* |$ ^( n5 S3 I0 Q, ^5 N2 v7 m, w
有了覆盖层,所有操作都会转到旧的副本池“testpool”:! H1 s! @# i% p) }' i. u" X
设置覆盖层
' T& v1 p8 L( L& I0 S! l6 X$ ]现在,您可以将所有客户端都切换为访问新池中的对象。所有数据都迁移到纠删码池“newpool”后,删除覆盖层和旧超速缓冲池“testpool”:
) c% b2 q' L* ]$ p7 R0 s
j7 p" K. Q6 C' I% |7 i3 x: n5 G1
1 G6 z; G3 R# J( ~. X2" x* e# |7 h. G4 k
root@localhost > ceph osd tier remove-overlay newpool" Y7 Q6 G/ ^/ A( X7 y& T
root@localhost > ceph osd tier remove newpool testpool4 s% [# D* f9 O5 c) h
' d4 S% P! b4 B1 n7 l1 s0 D
存储池快照0 Q/ i1 p2 R p+ H( D. C
存储池快照是整个 Ceph 存储池的状态快照。通过存储池快照,可以保留存储池状态的历史。创建存储池快照可能需要大量存储空间,具体取决于存储池的大小。在创建存储池快照之前,始终需要检查相关存储是否有足够的磁盘空间。
& L" r: r* U3 h# j8 A; J; {, Y创建存储池快照
# P& D+ J$ _1 a3 k. v" w0 C+ }要创建存储池快照,请执行以下命令:
4 t# ^8 i3 i0 v+ O O
k6 ^5 @# R# s# T& p8 F root # ceph osd pool mksnap pool-name snap-name, C: Y' M* R3 r V# | j
例如:5 w4 J6 K- Q4 \( _
root # ceph osd pool mksnap pool1 snapshot1
; \% Q6 ?" L0 G. y' `1 g3 j/ V+ hcreated pool pool1 snap snapshot1+ ~3 B5 y6 {9 A5 R4 h
' J$ x& J5 ~# @; N4 i, \1 f- Y) a
删除存储池快照
$ ?/ u1 Q' E1 h% J1 m3 g要删除存储池快照,请执行以下命令:
: a. \2 p3 z' L
" m: Z8 F W- z1
% j+ r. h) j7 V1 L5 \" B root # ceph osd pool rmsnap pool-name snap-name/ Y' g5 _0 I5 a" J R* C
0 w# t+ Z" c/ j* ^$ S
|
|