|
|
6 Pool操作[color=var(--theme-color)]#6.0 pool 说明(1) pool 是 ceph 存储数据时的逻辑分区,它起到 namespace 的作用。其他分布式存储系统,比如 Mogilefs、Couchbase、Swift 都有 pool5 g5 s* x5 I. R c9 i
的概念,只是叫法不同。每个 pool 包含一定数量的 PG,PG 里的对象被映射到不同的OSD上,因此 pool 是分布到整个集群的。除了隔离数据,我们, Z- v5 Q4 s2 }4 q9 z Z
也可以分别对不同的 POOL 设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等。! Z2 c; a0 I, c* u9 }
$ u3 ]2 g8 l5 A2 M! A
(2) pg_num 和 pgp_num% R8 W4 Q) E/ V/ e: {
1) 创建 pool 操作: ceph osd create pool ${pool-name} ${pg_num} ${pgp_num}* l3 o) F* `0 L8 C4 c% t( }$ C
2) 这里强制选择 pg_num 和 pgp_num,因为 ceph 集群不能自动计算 pg 数量。
7 ]& P- y* f5 ?, U% m- h9 D3) 官方建议的 pg 使用数量7 F1 F/ d& u: ~% p$ I4 u
小于 5 个 osd 设置 pg_num 为 128) t- k0 `' t/ ~, ]& {& }4 M* b
5 到 10 个 osd 设置 pg_num 为 512
$ _: V* A4 C2 L% w7 B7 [10 到 50 个 osd 设置 pg_num 为 1024
$ v' f6 f5 E- @. c8 n如果超过 50 个 osd 你需要自己明白权衡点,并且能自行计算 pg_num 的数量,pg_num 通用计算方法如下:. z, q5 ]. }) p; _3 W' ]
(OSDs * 100)
$ G7 X4 h4 X/ i3 P/ oTotal PGs = ------------
6 }& Z$ A7 g! J pool size4 m1 D O& V( s5 j! p3 e0 K
' f. l$ \% Y/ g6 J7 G' ]
例如: 60 个 osd,3 个副本
3 z. K. o- C5 W2 Q5 m3 c8 X# E7 O(60 * 100) E; x/ z# E2 o4 i
----------- = 2000
: O7 ]: a0 m A7 }9 F9 y# c! Z 3
" U8 n% Q. ?$ C* N- g+ i) U
& U% e {& S1 X G: \2^11 > 2000 < 2^10,所以 60 个 osd,副本数为 3 时,pg_num 设置为 2048,pgp_num 默认和 pg_num 保持一致。6.1 列出存储池[root@ceph-deploy ~]# ceph osd lspools# j( Z8 `. Q% z% e+ {
1 device_health_metrics
3 n9 x7 |, W* p: J( B0 `2 cephfs_data
0 `2 f$ z" g& f |- s1 F3 cephfs_metadata6.2 创建存储池(1) 命令格式
" E8 f+ ^9 U% l) m' ^# ceph osd pool create {pool-name} {pg-num} [{pgp-num}]
! B( z' w0 I- O( C
% V* Q8 _, p4 Y W4 N(2) 命令举例
, g& Q" o1 J% L7 S0 K[root@ceph-deploy ~]# ceph osd pool create rbd-pool 64 64
" B& p1 p: h) f e }# ~# b7 f) [[root@ceph-deploy ~]# ceph osd lspools5 e1 v! N1 g/ O; C2 g4 O p
1 device_health_metrics
" _! S8 m6 e6 ]0 j; f: S1 k) u2 cephfs_data
, W' S2 w2 @# S+ Q* L' M3 cephfs_metadata# n9 ]8 S4 P6 R/ K6 J
4 rbd-pool6.3 设置存储池配额(1) 命令格式
5 t4 |7 L) c9 t# ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]2 Z2 w& ? e6 G( Z+ D/ D
% ?/ [/ T+ F! s5 L6 b(2) 命令举例
1 p; p$ }, L3 I& ]2 ^" @[root@ceph-deploy ~]# ceph osd pool set-quota rbd-pool max_objects 10000
. l/ z1 c- c0 ?7 M[root@ceph-deploy ~]# ceph osd dump | grep rbd-pool8 _1 a1 w1 L: ?$ Z B* @
pool 4 'rbd-pool' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 64 pgp_num 648 X1 N% D% z: p" e& w4 J' F; d
autoscale_mode on last_change 378 flags hashpspool max_objects 10000 stripe_width 06.4 删除存储池(1) 命令格式
$ F3 x! c% } m4 u& S# ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]) u* f) a$ o0 I9 ^# g, z3 x
4 P, L/ ^. C5 w6 U; F
(2) 命令举例: c1 d- j7 M1 |7 ~
[root@ceph-deploy ~]# ceph osd pool delete rbd-pool rbd-pool --yes-i-really-really-mean-it0 ` U6 _0 G, Y; R+ p1 e: p
( u' ~" l$ n# F! `% @5 \9 m
报错:8 J% ?2 U7 ]/ P6 Q I$ {- Z
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before5 d: z: N) x W, G* e* z* U, j
you can destroy a pool' d( P/ M ^! D4 H5 Y( w0 N7 ^8 |
解决办法:
7 W. S; K1 M1 _1) 在 ceph-deploy 节点修改 ceph.conf 配置文件
2 M4 Z& e- {+ T, R6 H* h8 p[root@ceph-deploy ~]# cd /root/my-cluster/3 `9 ^& T0 Y' V) v$ D1 p
[root@ceph-deploy my-cluster]# cat >> ceph.conf << EOF4 e' N. R5 B# j/ h9 n$ u
[mon]
# R/ `! z8 E; j2 \9 E6 R" y) v3 Wmon_allow_pool_delete = true5 i2 g$ {+ \ \' G3 Y# ]& B- E
EOF
1 a+ y- c: d S6 G- [: h( V. X0 {' ~+ R
2) 推送修改的 ceph.conf 文件到所有节点(覆盖旧的/etc/ceph/ceph.conf). k P! F: g4 q* V& o ~+ S4 b# Y
[root@ceph-deploy my-cluster]# ceph-deploy --overwrite-conf config push ceph-deploy ceph-node01 ceph-node02 \
* c. u+ ^' U0 R- f4 Gceph-node031 I( P* {! H0 _, A: _+ T
0 F" _4 N4 e7 h- L3) 在安装 ceph-mon 服务的节点上重启 ceph-mon 服务
# H: |' \+ x' J" {0 h# 在ceph-node01、ceph-node02、ceph-node03节点上操作
. y. [# f- ^' z- \2 o$ n7 o0 i# systemctl restart ceph-mon.target
; U+ B5 q$ E, S0 U2 F# w. O2 O# W6 T( W0 C' w3 O
4) 查看 ceph-mon 状态
" a% ~+ Q/ }+ q- k- u9 P5 @7 H |" p[root@ceph-deploy my-cluster]# ceph mon stat
) H! b Z: |1 {$ `, p+ {e1: 3 mons at {- Y' ]+ C, p! n( ?
ceph-node01=[v2:172.16.1.31:3300/0,v1:172.16.1.31:6789/0],/ n. x" f) ]/ n8 X. @& v
ceph-node02=[v2:172.16.1.32:3300/0,v1:172.16.1.32:6789/0],
. A: L2 m* s. u6 t0 W+ Jceph-node03=[v2:172.16.1.33:3300/0,v1:172.16.1.33:6789/0]
& i6 x$ G2 x3 E% }9 g}, election epoch 34, leader 0 ceph-node01, quorum 0,1,2 ceph-node01,ceph-node02,ceph-node030 T* s2 E" ~2 Q0 H. |
$ \; V. ]* }5 z9 @6 E& K, |5) 删除指定存储池成功$ b M6 R/ b& U6 z4 X
[root@ceph-deploy my-cluster]# ceph osd pool delete rbd-pool rbd-pool --yes-i-really-really-mean-it
+ L8 W& d0 u, C4 \% `pool 'rbd-pool' removed6.5 重命名存储池(1) 命令格式) N! c' O; b+ J! r% H" X+ s
# ceph osd pool rename {current-pool-name} {new-pool-name}
* f" I; z5 ~3 ]( d0 ? _5 h, O; y: a: r3 r+ u: D" m
(2) 命令举例
3 a. \7 K d! v% W2 t+ Y[root@ceph-deploy ~]# ceph osd pool rename cephfs_data cephfs_data_lc, ~9 ~& V, Z( F: f# P) u- M
[root@ceph-deploy ~]# ceph osd pool rename cephfs_metadata cephfs_metadata_lc
& K9 @) e& z: J/ L0 H* c. s[root@ceph-deploy ~]# ceph osd lspools
* r- Q* K7 Z; p) b4 o) h/ {1 device_health_metrics+ F7 L! q& W7 P# _( v- d9 ]5 J
2 cephfs_data_lc
" R4 N1 X6 o: P3 |& Q4 O R7 ~3 cephfs_metadata_lc5 n1 q5 N i4 G! {
[root@ceph-deploy ~]# ceph fs ls5 `" ?& ~2 `! ~4 P* s
name: cephfs, metadata pool: cephfs_metadata_lc, data pools: [cephfs_data_lc ]6.6 查看存储池统计信息# 显示整个集群的所有磁盘利用率信息,包含池信息
$ B; X: | h) e: a0 T* S* ][root@ceph-deploy ~]# ceph df9 }0 A3 p' L; y9 _
--- RAW STORAGE ---
$ n5 u5 i, i, y+ SCLASS SIZE AVAIL USED RAW USED %RAW USED- v3 G& C/ \+ W
hdd 120 GiB 110 GiB 3.8 GiB 9.8 GiB 8.18
7 q% p# |8 C _" F1 q3 R0 yTOTAL 120 GiB 110 GiB 3.8 GiB 9.8 GiB 8.18
/ M& ]) o r& |5 H" u, J
0 ]7 F+ S- i" E( q' f--- POOLS ---
: B' i2 L" L/ }% L! l" Q8 FPOOL ID PGS STORED OBJECTS USED %USED MAX AVAIL# \/ |$ l2 O Z C# F/ \
device_health_metrics 1 1 0 B 0 0 B 0 34 GiB
0 E6 [( g9 o% n6 Hcephfs_data_lc 2 64 1.2 GiB 302 3.5 GiB 3.30 34 GiB: C5 ^+ U1 E, Z" G2 h# Q
cephfs_metadata_lc 3 16 263 KiB 23 2.3 MiB 0 34 GiB" z# L/ l2 M n9 A4 I
7 N, k# T9 x9 ^; J0 e0 M/ Q8 t4 y
# 显示池的利用率统计信息: v! v/ U- X& d6 V. _
[root@ceph-deploy ~]# rados df图示:[color=var(--theme-color)] 6.7 给存储池做快照(1) 命令格式% N$ {2 Q) z& @
# ceph osd pool mksnap {pool-name} {snap-name}
/ |0 J+ K2 e% k ~( j+ k z3 y1 H+ @0 m; t8 {6 J
(2) 命令举例$ C5 @- I3 m$ ]
[root@ceph-deploy ~]# ceph osd pool mksnap cephfs_data_lc cephfs_data_lc_snap
7 D: k6 @7 |0 @; n# g4 A[root@ceph-deploy ~]# ceph osd dump | grep cephfs_data_lc& y) A1 q' U/ p7 t* t$ E
[root@ceph-deploy ~]# rados lssnap -p cephfs_data_lc& ^+ C* e9 Q( {1 ~
1cephfs_data_lc_snap2021.12.22 14:01:15
) y7 K) i' ^. G2 t+ |* W8 d6 H1 snaps6.8 删除存储池的快照(1) 命令格式
/ d! d! O" W5 v- B# ceph osd pool rmsnap {pool-name} {snap-name}- f7 a2 x" C/ q6 D
( t1 w. {$ R, a2 Z& P% R# ]5 ~
(2) 命令举例* Z( y" Z5 l1 d4 r% t6 e! h" c" @
[root@ceph-deploy ~]# ceph osd pool rmsnap cephfs_data_lc cephfs_data_lc_snap
# M# M, R- j% nremoved pool cephfs_data_lc snap cephfs_data_lc_snap0 q7 i V" q+ f0 W
[root@ceph-deploy ~]# rados lssnap -p cephfs_data_lc3 \2 Y r$ O) X' N( c# \
0 snaps6.9 获取存储池选项值(1) 命令格式. d3 [2 _! W, z0 K/ H
# ceph osd pool get {pool-name} {key}" K6 Z- `9 ]8 L! p" j
) @( _, ?( @, A! S4 ?. z: l
(2) 命令举例
( C G4 q+ C% R& l t6 a2 R8 g# 查看可以使用的 key
! R6 Z: s: E& k! w* D% G$ j; T# `[root@ceph-deploy ~]# ceph osd pool get cephfs_data_lc ?
' c" D$ D( g+ s! V3 A# 查看存储池的副本数
3 p! ^6 y1 v8 l ?+ _[root@ceph-deploy ~]# ceph osd pool get cephfs_data_lc size! _4 Z q8 j7 Y* q9 J* x; c& k3 J' z
size: 3" b9 n" B+ x4 t: p8 d
[root@ceph-deploy ~]# ceph osd dump | grep 'replicated size'6.10 调整存储池选项值(1) 命令格式
! P: ]/ t Z) h) @ _# ceph osd pool set {pool-name} {key} {value}
4 n4 s; `! l9 U* n2 ]& {, [7 tsize # 设置存储池中的对象副本数,详情参见设置对象副本数,仅适用于副本存储池。
( v* ^" ?& B8 _* U! |5 Y( Mmin_size # 设置 I/O 需要的最小副本数,详情参见设置对象副本数,仅适用于副本存储池。$ x4 ~0 y2 h4 R) N' \
pg_num # 计算数据分布时的有效 PG 数,只能大于当前 PG 数。
. y6 r+ j: M# Bpgp_num # 计算数据分布时使用的有效 PGP 数量,小于等于存储池的 PG 数。
( r# n2 C% ^& w) t) qhashpspool # 给指定存储池设置/取消 HASHPSPOOL 标志。" [/ J( M- j) K ^. l! [
target_max_bytes # 达到 max_bytes 阀值时会触发 Ceph 冲洗或驱逐对象。
, W6 }; Z7 ^( Ztarget_max_objects # 达到 max_objects 阀值时会触发 Ceph 冲洗或驱逐对象。- o/ F( ]; |! w$ C, @7 d3 w
scrub_min_interval # 在负载低时,洗刷存储池的最小间隔秒数,如果是 0,就按照配置文件里的 osd_scrub_min_interval 。1 | O$ c2 R' h' `* t
scrub_max_interval # 不管集群负载如何,都要洗刷存储池的最大间隔秒数,如果是 0,就按照配置文件里的 osd_scrub_max_interval 。3 [( q9 }. N3 ]: Q
deep_scrub_interval # "深度"洗刷存储池的间隔秒数,如果是 0,就按照配置文件里的 osd_deep_scrub_interval 。
+ ]6 D. ?1 n4 ~ H; v8 x& W& N! Y9 O2 i* i" N) k9 D
(2) 命令举例(更改存储池的副本数)
$ N8 J2 z2 o1 ~* E1 j, G6 u, |7 p# 更改前存储池实际最大可用容量
4 r4 [, J: D) C# M3 G' ^! g, g[root@ceph-deploy ~]# ceph df
4 w! j3 P' I7 {# x/ p- j4 v) V--- RAW STORAGE ---" j; j7 a2 ~ L' L) Z7 k. @
CLASS SIZE AVAIL USED RAW USED %RAW USED$ j |" K/ f5 B( t, ]* T
hdd 120 GiB 110 GiB 3.8 GiB 9.8 GiB 8.18% z# n& r4 g, C0 k
TOTAL 120 GiB 110 GiB 3.8 GiB 9.8 GiB 8.18! N: _, t, q0 r0 N, w6 [9 s
7 Y( l2 f0 l/ @3 k7 U
--- POOLS ---, v* V+ {3 [& V, N( Z
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL2 x: d) A, c7 ?
device_health_metrics 1 1 0 B 0 0 B 0 34 GiB
9 H" d9 I N, o3 i4 Ccephfs_data_lc 2 64 1.2 GiB 302 3.5 GiB 3.30 34 GiB
5 ~( r/ s4 G: f5 _cephfs_metadata_lc 3 16 263 KiB 23 2.3 MiB 0 34 GiB$ ?# p) E! J9 u% D, F
8 m" I9 `# Q; i- T# O# 更改存储池的副本数由 3 变为 2! `6 _# i6 v" g2 o! `4 `
[root@ceph-deploy ~]# ceph osd pool get cephfs_data_lc size
+ b# t# K# w1 W7 ?( M/ J& b6 \size: 3
P# C2 E' X! g2 u8 s: _* ]8 P[root@ceph-deploy ~]# ceph osd pool set cephfs_data_lc size 2# P- P G! f# z) g
set pool 2 size to 28 ^/ y5 O6 n) F4 O V, U: }
[root@ceph-deploy ~]# ceph osd pool get cephfs_data_lc size
) [7 ?5 K; g" q8 q F: _% vsize: 24 a# _5 @& ^- \8 V4 V4 y |: x
! w+ v0 ^8 v! C/ { U5 M z# 更改后存储池实际最大可用容量4 u3 q' r3 ]* V x' N' {. R g% C
[root@ceph-deploy ~]# ceph df5 F r$ G/ u! H5 m- D/ o# n1 h
--- RAW STORAGE ---: r! t+ u; |( s) X7 K
CLASS SIZE AVAIL USED RAW USED %RAW USED' i3 w l. M# P( [" f* u' f
hdd 120 GiB 111 GiB 2.6 GiB 8.6 GiB 7.207 J: G# @) Q; C- C2 Q, ~6 ~
TOTAL 120 GiB 111 GiB 2.6 GiB 8.6 GiB 7.20
! K' _5 E/ S! `
" E) J) p: X# L6 ?9 Z--- POOLS ---( N, _! a3 `, m2 X
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL/ Z. p+ B9 u8 i( e1 n( W
device_health_metrics 1 1 0 B 0 0 B 0 35 GiB
& W7 \1 _4 f! o( Z5 F3 bcephfs_data_lc 2 64 1.2 GiB 302 2.3 GiB 2.21 52 GiB- s4 L9 j2 j- W7 D, M. \7 |2 s' X
cephfs_metadata_lc 3 16 263 KiB 23 2.3 MiB 0 35 GiB
1 n; R \# Y8 O4 Y5 X: P: T; \* L2 e# j7 A+ A' e9 U- }- c
注:
6 u: }) q8 y& y( R: h, jcephfs_data_lc 存储池的实际可用容量由 34GiB(总容量 120GiB 减去集群占用容量后除以 3 副本数) 变为 52GiB(总容量 120GiB 减去集) _; H$ g9 `4 h' g
群占用容量后除以 2 副本数),自己手动计算的结果和 ceph 集群计算的结果相差不多。多个存储池对 ceph 集群存储容量是共享的。6.11 pool快照的使用(1) 将测试文件导入至存储池中,并指定一个新的 object 名字
0 G- I$ `, r0 i! f- U* o5 d# 格式
9 R! y* K: a* L" f2 c* g/ G# rados -p {pool-name} put {object-name} {file-name}
4 H6 [) F& I1 j6 Z4 w1 X; E2 j[root@ceph-deploy ~]# rados -p cephfs_data_lc put testobject /etc/hosts) G4 G8 }9 [: _) x6 ?- ~
, W. Y$ c0 }) t
(2) 查看 pool 中的 object 文件
& S+ Y* H( X6 v2 v" A! p% H7 e }[root@ceph-deploy ~]# rados -p cephfs_data_lc ls | grep 'testobject' r! f$ \8 l% B
testobject: g3 g$ Y5 @1 X2 C6 m
: @( \* h& T. c7 @. J0 T$ N8 j5 [(3) 创建 pool 快照
5 V7 K u: ~! y; Z% F+ [[root@ceph-deploy ~]# ceph osd pool mksnap cephfs_data_lc cephfs_data_lc_snap
; j V# Q4 F- e6 y4 o2 R# Jcreated pool cephfs_data_lc snap cephfs_data_lc_snap
( Z$ n% i! x; `7 U1 q) y0 u0 X$ o2 C* z' v( I+ C" p, u% Z
(4) 查看 pool 快照 _ P% t4 W8 v; g
[root@ceph-deploy ~]# rados lssnap -p cephfs_data_lc
, G' M8 N# e9 s: a7 W: X3cephfs_data_lc_snap2021.12.22 15:57:05+ W/ d/ z7 k8 E" H6 i
1 snaps
: A) O9 T2 h5 }2 X! L4 b. v* ~# r. n o5 e
(5) 删除 object 对象; r R4 y" h, n- j0 K5 T
[root@ceph-deploy ~]# rados -p cephfs_data_lc rm testobject. P6 a9 K7 R( s5 Q% x A
, f- N' w; K2 E/ g2 l
(6) 再次查看 pool 下的对象$ j! }- Z) \$ l* e. n
[root@ceph-deploy ~]# rados -p cephfs_data_lc ls | grep 'testobject'0 \5 _5 z5 r) Y5 M
testobject
! Y, \4 y2 b% w% y
' W3 o3 M0 X' n" ~3 G1 g4 K y[root@ceph-deploy ~]# rados -p cephfs_data_lc rm testobject; I9 ], M$ ^& y' d
error removing cephfs_data_lc>testobject: (2) No such file or directory
: `0 Y: L* J& j% C& ~8 ]6 B% h9 i# w( i `: V
注:) I! a' o) ^) j# ^ y. f+ Z7 A) O
根据上面输出可以看出,虽然确实已经删除对象文件,但是这个池中还是有这个 object 文件存在,实际上已经不再占存储空间
u1 z, ?7 @% K4 w* L! d8 m f" U; X' F了,相当于是一个缓存的输出,主要原因是被打了快照的对象文件在快照被删除之前被删除了,即使后面快照被删除后还会存在。
0 p0 |6 s1 R/ T4 d, {
; _6 Q* J8 L D1 k3 v(7) 指定 pool 快照中的对象文件进行回滚- S# r$ l* b; E: `6 g( u
[root@ceph-deploy ~]# rados rollback -p cephfs_data_lc testobject cephfs_data_lc_snap
5 \+ m( }2 e7 M4 o z7 Rrolled back pool cephfs_data_lc to snapshot cephfs_data_lc_snap
* H& T$ i* ^3 y+ b! K6 A& k8 a9 ?2 h& Z8 q
[root@ceph-deploy ~]# rados -p cephfs_data_lc ls | grep 'testobject'
' v; v/ t. |7 \! ]1 Wtestobject
/ P4 w& T9 p' p- d
+ F; W8 M# Q2 [+ i注:
0 ^6 V6 {, J( a1 z" r5 F根据 ls 输出显示看不出什么,所以我们来再删除测试一下5 `, B/ Q5 L. _& j4 N
5 A& s( B& z. L) ?(8) 删除 object 测试
- [5 H; y, t2 Q6 K( N& T[root@ceph-deploy ~]# rados -p cephfs_data_lc rm testobject- j5 X* O: Y; A6 q9 D1 m5 C
[root@ceph-deploy ~]#
6 L% i; F9 u. e3 J3 o4 p0 x* x
+ M# ?6 I2 Y, s9 o, a7 ^* M注:( F7 q! z! K' ~8 g0 e6 U |$ k
可见已经可以正常删除,即代表文件通过快照已恢复,代表快照回滚恢复功能正常,到这里快照测试也就结束了
6 v; T+ W P; U- H8 D& k
9 j7 H( H8 F+ S9 G8 r, ^(9) 删除快照( {) }0 N! [" t/ q6 E
[root@ceph-deploy ~]# ceph osd pool rmsnap cephfs_data_lc cephfs_data_lc_snap
/ D# v, z/ y3 s7 ^removed pool cephfs_data_lc snap cephfs_data_lc_snap7 [0 g% F" y/ x* c( m8 @" Y6 z
- J9 L+ M# M' A
[root@ceph-deploy ~]# rados lssnap -p cephfs_data_lc3 H" @/ e& L7 q I# ?6 n/ G& x
0 snaps* w6 k ^: S/ J1 f+ ~% s1 |
. k7 B6 Y0 x4 u a6 t7 T[root@ceph-deploy ~]# rados -p cephfs_data_lc ls | grep 'testobject'
! S1 @2 O! o" a$ I1 @5 g, |3 i: Stestobject
7 F B& A1 o: h! M0 J# |# }
$ ?# h9 j, W3 y7 X1 y, G[root@ceph-deploy ~]# rados -p cephfs_data_lc rm testobject$ P# u; `; O& m# ~* l2 a, x* l7 g3 J
error removing cephfs_data_lc>testobject: (2) No such file or directory
1 c. ^8 Z/ T: Q4 E1 O7 X) Z( c" D. H1 s) F1 D
(10) 结论
; M0 }. j3 Q% k" N5 t4 i8 h1) Pool 池的快照相对来说是有局限性的,没办法直接恢复快照里边全部 object 对象文件,只能一个个来恢复,这样的设计效果可能是因为如
3 C8 K2 [" R E% J5 x) |果 pool 池直接整体恢复,会导致整个 ceph 集群数据混乱,毕竟集群中数据是分布式存放的。# g7 H8 i3 F: A! e
2) ceph 支持对整个 pool 创建快照,作用于这个 pool 的所有对象。
% B2 o. T/ a& Q* p- J3) ceph 有两种 pool 模式
$ T3 j& ]& ], s3 K- k" X+ ePool Snapshot,创建一个新的pool时,默认也是这种模式。
/ u5 \9 V' ^# w3 p( l+ USelf Managed Snapsoht,用户管理的 snapshot,这个用户指的是 librbd,也就是说如果在 pool 中创建了 rbd 实例就自动转化为这种模式。
: a8 a# f" C3 l, M/ Y注意: 这两种模式是相互排斥,只能使用其中一个,因此,如果 pool 中曾经创建了 rbd 对象(即使当前删除了所有的image实例)就不能再对这个& d, n7 V7 K' h, }5 h/ M8 `5 ~
pool 做快照了,反之,如果对一个 pool 做了快照,就不能创建 rbd image 了。7 用户管理[color=var(--theme-color)]#Ceph 把数据以对象的形式存于各存储池中。Ceph 用户必须具有访问存储池的权限才能够读写数据。另外,Ceph 用户必须具有执行权限才能够使用 Ceph 的管理命令。 7.1 查看用户信息1 查看所有用户信息
5 `! ]5 |: q, f[root@ceph-deploy ~]# ceph auth list1 n( V, ^& }% S) q0 _
3 \9 N1 ^( w j3 J$ e( L9 e0 V9 M
2 获取所有用户的key与权限相关信息
1 v/ ~" W9 @3 G[root@ceph-deploy ~]# ceph auth get client.admin
' s; ]9 x$ j8 N7 ?7 y% Oexported keyring for client.admin
% o- j, E8 X/ ?4 h8 s/ @! Y[client.admin]
# s" v) D4 D( m Z3 M$ m7 e ckey = AQArL5JhBEiAKRAAymBtomUPKP6M/BSI17oXyg==- s2 i1 G# k% j* y$ E
caps mds = "allow *"1 O( d3 X% b( b; f! `
caps mgr = "allow *"
1 I/ ]. k: N. I( h [caps mon = "allow *"
2 b9 Q$ ?( U# J5 H9 F* V; Ccaps osd = "allow *"
* B3 E& z6 y& _9 m
" \5 ~) m- S& T3 如果只需要某个用户的key信息,可以使用pring-key子命令
: e0 B7 c5 r) k4 X3 Q: f[root@ceph-deploy ~]# ceph auth print-key client.admin( U' g F! A( Q& x
AQArL5JhBEiAKRAAymBtomUPKP6M/BSI17oXyg==7.2 添加用户# ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'6 E3 c! A* a1 P
# ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'
" I, {6 S' y, V) ]* O# ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring- i! ?8 X: V. E2 R* E5 q% A
# ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key7.3 修改用户权限# ceph auth caps client.john mon 'allow r' osd 'allow rw pool=liverpool'6 l4 j8 F D x' d# d/ a( N( p
# ceph auth caps client.paul mon 'allow rw' osd 'allow rwx pool=liverpool'! _3 R: @4 y6 n* p+ N) w
# ceph auth caps client.brian-manager mon 'allow *' osd 'allow *'
- |- d7 A. D* z5 A% v7 W# ceph auth caps client.ringo mon ' ' osd ' '7.4 删除用户# ceph auth del {TYPE}.{ID}
- }6 [, c9 v* w/ t( T说明: 其中,{TYPE} 是 client,osd,mon 或 mds 的其中一种。{ID} 是用户的名字或守护进程的 ID。
6 r9 _/ }' q' ^$ P |
|