找回密码
 注册
查看: 1417|回复: 1

Centos 7.9 部署Ceph L版整理

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-12-8 15:36:38 | 显示全部楼层 |阅读模式
ceph L版已经发布很久了,官方说默认使用BlueStore作为OSD的存储后端,在Cephalocon APAC 2018上也是讨论的焦点之一。
提到BlueStore,不得不说一说Ceph的STORAGE DEVICES。
STORAGE DEVICES
Ceph守护进程将数据存储在磁盘上:
1
* @# C) \- c( U2
" x, ]. l1 f, L4 O6 _6 g3  `! e  l7 T; R5 j! g
48 o2 ~" j! |# @9 J( r& d' G$ @1 m
5
+ G. q$ w# _' o9 i3 ?6
. K$ a+ R- j6 p
Ceph OSDs ( Object Storage Daemons )* Q4 F6 y) C: T5 r, n
    Client端的大多数数据写入Ceph后被存储的地方,一般而言,每个OSD都由单一存储设备支持,如传统硬盘(HDD)或固态硬盘(SSD)。
! v6 P& |* n8 e    OSD还可以由多种设备组合,如存储数据的HDD和存储某些元数据的SSD(或SSD的分区)。
( L4 ~3 Q3 N& y/ p1 c8 y    群集中OSD的数量通常取决于你要存储的数据量,还需要考虑每个存储设备的容量以及冗余级别和存储类型(replication或erasure coding)。
+ }8 }. k% B) U% MCeph Monitor
/ `  W4 I2 t5 \5 M0 r6 i! m# R    管理关键群集状态,如cluster membership和authentication信息。对于较小的集群,需要几千兆字节(几个GB),然而对于较大的集群,monitor的数据库可以达到几十甚至几百千兆(几十个GB甚至几百个GB)。. B; T# l1 {8 z7 G% ~8 p1 |& S+ R0 H- F
/ V4 ^# m. a( I# \! _" b
OSD BACKENDS
OSD可以通过两种方式管理存储的数据。从Luminous 12.2.z发行版开始,新的默认(推荐)后端是 BlueStore。在Luminous之前,默认(也是唯一的选择)是 FileStore。
BLUESTORE
BlueStore是专门用于Ceph OSD管理磁盘上的数据的专用存储后端。在过去十年间,受到了FileStore管理OSD经验的启发.( b8 @( r1 }7 h6 T+ c
BlueStore的主要功能包括:
1
* a$ _: Q8 T6 R  K2' n: ?/ ~' Z. b) y& T& e
3
; K( F% g2 v$ F7 [, c/ l6 M4
: q; F1 G# G8 a1 \5 s) p7 |: K5+ X  s2 ~  M+ R3 l
67 v) E' {6 h& m
7- k% r' N) X- `2 l8 U5 l  N1 J8 V
8) x. M) Z& x9 c' K# }' W
98 K8 T" S/ {, e! x6 x  f
10
8 O, z8 v/ E9 _4 P1 T3 f, x- r11: A6 L0 N* M: \8 N( f; ~% {: Z
128 r9 b/ }) z0 a: ]' [! S; W
138 `) u, j3 S9 r0 Z) f, E) n2 F
147 V9 r; n/ }  g1 N
15
2 X) _7 j- \) n  r& o5 s, Q. i( Q163 u; U+ Q: h- k2 R$ Y6 g" C+ f7 Z" b
17
0 A. k0 r- n+ Z18- ]8 Z% d& l% q' F
19" I4 Q, _4 c9 Z2 C3 a0 v) o8 m
直接管理存储设备 ( Direct management of storage devices )
6 o% a4 |2 Y" c    BlueStore使用原始块设备或分区。这避免了任何可能限制性能或增加复杂性的抽象层(如像XFS这样的本地文件系统)。" r5 m& [9 y9 `1 o1 ^

% h5 W+ H" t4 L; Y9 s2 `使用RocksDB进行元数据管理 ( Metadata management with RocksDB )
& \/ N3 ]; c2 x' f" O/ z    为了管理内部元数据,我们嵌入了RocksDB的key/value数据库。例如在磁盘上,从object names到block locations的映射。
6 p: _) o* ]6 J" w' f1 c4 ^4 [, \0 n# i* Z& ~
完整的数据和元数据校验 ( Full data and metadata checksumming )
$ o+ t% z* k0 W' `0 T    默认情况下,写入BlueStore的所有数据和元数据都受到一个或多个校验和的保护。没有数据或元数据在未经过验证的情况下,就从磁盘读取或返回给用户。
  |8 a+ ?- t( a" v3 J! t0 v% ?* n! M  Q3 Q) w" s
内置压缩 ( Inline compression )( a% F8 Q# J& z0 B
    写入的数据在写入磁盘之前可以选择压缩。
; F3 i2 {, U" P0 V" o7 E! s3 n( ~: E& c  U1 i$ Y
多设备元数据分层 ( Multi-device metadata tiering )
3 V4 |- G$ M$ b5 x) I" _    BlueStore允许将其内部journal(预写日志,write-ahead log)写入单独的高速设备(如SSD,NVMe或NVDIMM)以提高性能。
  q$ ~, z8 t! G+ C  g    如果有大量更快速的存储可用,则内部元数据也可以存储在更快的设备上。% Z5 ^9 g3 S" A8 Y$ j; f" E0 H
9 ~( `7 {5 ?$ n) ~' [  }& K( a2 ~
高效的写时复制 ( Efficient copy-on-write )/ R2 {9 c- C, O# o) i5 }8 x4 j" H4 M
    RBD和CephFS快照依赖于copy-on-write clone机制,也在BlueStore中得到了有效的实现。这将为常规快照和erasure coded池提供高效的IO(依靠clone实现高效的two-phase commits)
; I" S4 p+ z+ L
) }+ r# }$ h: v# O; n; ?
$ a) P! P) \' u8 ?8 ]# h+ s
FILESTORE
FileStore是在Ceph中存储objects的传统方法。它依赖于标准文件系统(通常是XFS)和某个元数据的key/value数据库(传统上是LevelDB,现在是RocksDB)结合使用。
' T% A) z! n" V+ Q+ oFileStore经过良好测试并广泛用于生产,但由于其整体设计和对传统文件系统存储object数据的依赖性,因此存在许多性能缺陷。
1 b: b& e% j  z尽管FileStore通常能够在大多数与POSIX兼容的文件系统(包括btrfs和ext4)上运行,但我们只建议使用XFS。
7 z& A! I$ f& ~# Ubtrfs和ext4都有已知的bug和缺陷,使用它们可能会导致数据丢失。默认情况下,所有的Ceph提供的工具都将使用XFS。
在ceph L版代码结构改动比较大,增加了CEPH-MGR向外部监测和管理系统提供额外的监测接口,今天就用虚拟机搭建实验环境玩一玩。
环境信息
1
( y$ H; k. Y+ N9 @+ a2
# |9 ]# p8 D2 N; f: t3
9 n0 K4 l2 o/ C* k* ^" B4! k" ~; ^1 |* t4 q1 d* d6 f
5
) e: R( I2 X2 v8 Z5 ~; z63 [9 h6 n8 y" f5 I- X6 M6 B: y
77 \. P; G. _( T7 g0 n4 ^2 U
8
# H0 k0 c* }& X4 R9
! }2 b3 J; k0 d, T8 @10
$ o, |4 y, L7 C2 p' q11! R0 \$ [& x7 F/ l3 C, J) L5 y
12
2 S( A( R4 R& f2 W13" Z" a( G3 ~+ u$ z8 X0 D
14
0 H* y# x. X/ ^! _0 K15
+ `6 G6 g5 K$ O5 t% S16; x+ U4 E+ W+ F# r6 c
17( h( S4 q- n2 d6 i# p; x
18
$ u) v& W) L( H# j; S8 ?% \
[root@cephL ~]# yum install -y redhat-lsb$ o' E* z- c, ]+ V4 O! U6 w! M8 x
[root@cephL ~]# lsb_release -a, M4 e* F* R  n+ Z. C
LSB Version:        :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch+ R5 l: |, b$ e' e$ |
Distributor ID:        CentOS7 P7 r, M! d/ n; z
Description:        CentOS Linux release 7.4.1708 (Core)
" p6 f9 w+ }0 A% _; ]Release:        7.4.1708# F3 u" Y, ^  g% D/ C5 a" Y
Codename:        Core
  ]+ I. N% X" F5 n8 @4 g9 p' o$ \- C# A1 d4 {4 I; P
[root@cephL ~]# lsblk) w& F  ]. g  f" M, s( g! G& R$ l
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT' W% a% d6 J' M# v" [$ d, a' R$ t
sda               8:0    0   40G  0 disk1 R- ^( ?% O* `0 E3 a+ j2 c8 e
├─sda1            8:1    0    1G  0 part /boot2 g+ O! Z- [5 _+ F, W" K
└─sda2            8:2    0   39G  0 part; w; Q3 j5 p7 r  t; |( ?. |
  ├─centos-root 253:0    0   36G  0 lvm  // Q4 r' |8 n7 T" S2 U  w
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
5 x9 `, F3 i9 c# H8 u% n( Vsdb               8:16   0   30G  0 disk; b+ T0 t0 R9 I" ]* e
sdc               8:32   0   30G  0 disk% a7 G7 W0 h" T. j
sr0              11:0    1 1024M  0 rom7 L6 [7 i3 g, Z9 T1 S- ^, }
8 ?4 ]! p6 g) b% y" K
安装安装pip和ceph-deploy
1
+ o# x, A: V( C0 B2+ p! |4 ]7 q% U& {8 A) l) r
3
) q- w+ V4 w5 x' C' A5 y. k5 J4
' R& B( Y4 }/ E/ i+ |+ O50 q) \+ ]4 G: M& v+ o. G
6
4 O7 P8 g8 K+ B& U2 k7
* E3 D1 \2 {& O3 m4 s* E1 ^
[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
. T) l# H# w. V6 Y[root@cephL ~]# python get-pip.py
$ v9 m- s% r/ {: F7 x2 ]( X9 M[root@cephL ~]# python -m pip install -U pip3 S/ U4 Z% K# J  `
[root@cephL ~]# pip install --upgrade setuptools3 A- }4 d7 x# P4 H
[root@cephL ~]# pip install ceph-deploy
0 g& T0 P! W$ h$ }[root@cephL ~]# ceph-deploy --version( t' B1 k: M$ p. _1 |, k* O
2.0.0
" s" S, G8 j  U. j: y

2 ~. b, j0 C/ }4 p9 S安装ceph软件包
1
- ]. e% p  F: @2% t5 F( g2 J) g1 v, G* a
[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy; M( {! B( l4 u3 z
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous
  n" g" ^, {1 j: g7 P/ s

+ |- l/ v2 {* a8 W3 H: f开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring
1
1 k- o( A  `7 J" D
[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24  --cluster-network 192.168.56.101/24 cephL! Q7 k6 D  A5 x$ S* R% \

; g  S, N& C6 l* k部署MON
1
5 L! _" a4 z* c28 g/ [1 z0 o) V$ i
31 H* Q/ Z( v5 E! k
[root@cephL ceph-deploy]# ceph-deploy mon create-initial
1 q0 p5 |7 X- q# W7 T[root@cephL ceph-deploy]# ceph-deploy mon create cephL
! ^% e* q3 S2 }1 j1 G4 C) Jceph        1110       1  0 12:57 ?        00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph  A) `9 i- F$ W  N/ m9 Y
# _9 t- Y4 r% ^: F4 t3 f
部署OSD
bluestore方法
19 Q2 @# @' ^4 A! B3 J
2
, H! U& |9 f( T9 V! k: `% z3. [' b" [5 |2 d! b+ [, Y+ s
4
  O9 l1 k% a) E! X- [$ E5
% T  Y1 B- t/ l8 v
# 在创建osd时,L版默认是bluestore
) f! s) i9 F, _  Z0 e( w# Z- V. |[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL
+ E8 }. {: e( W" [7 e6 Oceph        1514       1  0 12:57 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
" k5 [% V9 a) r- n, v[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL5 C' @2 S7 V: h; d  z$ b2 t
ceph        1518       1  0 12:57 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
1 Q, _# \4 q( O; d/ j

( ]3 J( S8 g' P
遇到问题
12 D; h' V+ j8 u
2% G; i* T+ g6 [- b( s) x" B+ H
37 {* U4 A5 p- h+ C& y1 g% A2 e7 W
4
% V) }. \/ ]$ Y5 U6 S0 Y5
3 p3 @" }8 p7 d+ `* m: S6
& ^0 y# [4 h" I$ M! O. r" h* l  Y7
0 F2 `+ R# K$ ]0 C) N8
# w3 K5 z2 v/ n0 ]  b; S3 {- U  V9
/ f% O* Y: D9 l- ^6 @* i- _10% i9 t' m# f! v! ~
11
8 C( ^0 d4 K$ h' x4 }# V; J129 }1 d9 X' |% w2 v% k
13
9 W- ~, D# Z8 y3 E1 P- r' ^' N14
3 N. A7 x" _! ]0 a15
8 H4 o2 E* t- J; x, D7 q16
; Q5 c4 w. D( ^, n7 b  M+ ^' o17
- E3 t6 c" Z4 W18
% A: }' A& ?( Y" v; |4 N19
) K$ T. k6 ]4 I/ E8 m4 W) R20
7 w$ s! ^: i+ y; x0 o214 e" p9 C% V$ P2 q9 y' h  d6 }
22
3 K/ a) |7 O1 ?$ j/ J% ~23
$ R+ Z+ m0 Z/ @7 o: r0 U; U24) ?) y2 L% f+ T! F8 ?3 U4 a
[root@cephL ceph-deploy]# ceph -s
4 T* |% ~1 w8 q/ f2018-04-10 12:00:19.660298 7fd1fe0ae700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
3 C4 ^; D1 A8 y- c! P; C2 Q2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication7 ^% t2 h9 i& A0 n" o/ a
2018-04-10 12:00:19.660312 7fd1fe0ae700  0 librados: client.admin initialization error (2) No such file or directory+ Q5 G9 [% x$ s! O0 ^5 }
[errno 2] error connecting to the cluster8 z; X5 I5 x  y

7 Y1 }! W( S7 s- \% y[root@cephL ceph-deploy]# chmod +r */ P0 ?6 r+ D7 A: L9 \: n/ u, H* M+ ~6 _
[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/
) p$ J: E& g1 Z9 a[root@cephL ceph-deploy]# ceph -s
) k  {, U/ a1 E+ \9 l  cluster:1 `* z% ?9 E$ a3 H$ J
    id:     765752b7-1f77-4d0d-bc18-936b8ad409fd
' p$ A) u4 j8 e2 p7 @    health: HEALTH_WARN
' ^( B: ^2 c% |9 N" k            no active mgr/ _6 [4 t) F+ _) F8 u( b7 A* o1 W
# q3 r& \, B5 t! V/ n6 N! E4 K( z: y
  services:
( }0 ?/ L2 w1 Y" X    mon: 1 daemons, quorum cephL
2 @: B4 X7 N. \  ]/ K    mgr: no daemons active/ g% T+ ~" b: F& O
    osd: 2 osds: 2 up, 2 in
4 [- t4 Q0 H6 y8 T# ]' T) B9 r' v. v
/ }8 R1 \, s) s1 A6 L# c  data:0 p  t  w+ y8 s6 y" M
    pools:   0 pools, 0 pgs
" {3 h4 C( E8 Z$ \+ E$ p2 ]" s    objects: 0 objects, 0 bytes
, J5 v+ _& d0 b3 V) Q; z    usage:   0 kB used, 0 kB / 0 kB avail1 r$ D" T; |5 a: a1 p
    pgs:
% Z# ^/ c# z) f& [) s

( N( A, o* W1 [" j$ Y8 W) x5 u; M0 @
filestore方法
1
5 [& Y) s0 A" J  H22 s2 B6 F7 n, o- m. v
3
7 d' @# W; W" L. Q+ {5 X( J7 n4) `: u! ^6 h- B" i0 T3 f
5  w' X2 A9 `& ?2 a  S0 o; s4 U( b( X
6
1 S# `5 @1 D' }3 y2 R0 ~7
* t# s7 D% n  [6 J8 a( r3 B/ }8# `0 A; `4 g1 h3 J3 h" O
9
: r9 e% ?  ~! o. a4 }10) ]1 O. s- S( N4 y
116 y* s4 R" P3 \3 t4 n; F* J/ y1 ?
12
& Q# D1 d- n# D" B9 x132 V1 f" r3 W) @, V
14
, a$ F" {/ Z2 d! I5 l# B151 z, X$ f1 W" p; L
16
' T. i# T/ X/ C5 Z5 U+ ^4 X2 D2 g17
" W& _+ Q* _6 s180 y* p  b, V0 K: _1 b) W
194 T# o9 s7 Q$ N  S
20
0 I, N3 T. v+ f9 F5 Z218 w* T$ W/ `2 E# `& |
22
, _. u* R, o# `23" d* W) W3 L' G% i
24, S* N& m9 {  x) D1 Y3 K
25
, ~$ U9 b( P* g- T26
. o& y, J1 h7 {! ]3 S27
9 g" o" p% i- R0 e. c5 m28+ f% Y! a: L. G( v: Y' a. W( x
29
' ^& e& {' L3 U: o30
( Q9 `% @+ ?# _- x- `+ L* B% i$ f31# y6 m) o! r' b8 d
32
/ [# _! {' A8 T/ h, ?33% J' E7 x9 A- `: P
34
* G' J, p3 B. R  y: J5 A35
5 k3 z3 I6 {; l4 b6 R5 h! G36' ?% J+ O- @! \) Q8 V+ X: y
37. [3 V9 u  P, x2 {# n
38
; V& T. U; n# p$ D1 u4 a; J394 ]* P  Z* s: Q% \/ Q# }  K$ j
40
/ f. C# a: J1 G1 z' \" S41
" U+ b  V( k! Z2 z9 W5 S42+ ~$ w; C8 ^5 W
43" w* c$ m; S% U8 N- F; _3 ^# ~% {
44
5 W1 o" i5 H3 M- m) g7 g1 @' R45
, ^# R! j7 L: H0 s/ n46+ x( L, z! e- y. E, b
47, V3 P- I# H, C. ^% r
48  S% J9 v7 C. q/ o
49: }/ N. W% l2 d( e; x, ^0 E+ r
50
4 h: K& [7 m! D: `$ }, y; Y51- i( h% t& [) v5 o5 t+ b
52$ a, T' O; h5 y1 r' j! l
53
4 f) }# i3 M! E54
; t) o. e' v6 j" a/ R! W) Y' ?" x55
4 w; q6 ~) p5 |8 O" S566 d* I4 O! l- `) ]" i
57* w+ M3 |. E' J+ O
58
& Q1 d+ }# [/ r8 N6 C, C. V1 T59
, y6 X2 W2 P2 W; S/ g# M4 k60
0 _$ G; D) v# q3 ?& y; `# M9 n) j61
: r) _% [  X# A; [! Z  k8 b! S, h62
5 @$ B7 X! h7 |( F63! r6 K3 y4 W7 X) d
644 T8 A$ R9 n4 s1 G& b' h
65/ t8 P' o" q: F" ~
66% j7 D( W1 r4 g6 J0 d* U
67
  o8 l1 d2 |1 f% A6 {68
- y$ Y9 c9 Y2 @3 F  |69
" a% q9 s: M4 \' g  N1 F/ {703 g( Y1 c3 u# S/ n
719 {) y) K; s' W3 T
72
, i7 T" t; c; d# L: F+ `- H6 C* J73
# O3 T6 Z  n; ~5 l+ A  d4 Z$ m. s744 |; E( P+ B0 f' c4 k% V0 e- i- }
75
! d7 _7 W( c0 z76! n* @+ v* G, E  U' s& |0 D
77& n/ N* d6 T% g  u# s
78
$ S+ ?1 o/ s/ r( D5 Y- n79
3 W& D2 F  K: ~# b6 ?: ?1 N80' C" r& p  S7 `& {/ p( b/ r0 f
81
( o9 h9 s( ~2 J826 [9 j+ F4 q0 G- k& f& Y
83; c; ?8 Z- R9 @
84. L1 v; W' W( h+ J
85
, V' t; t7 J5 _+ M% `86
, D( s$ y$ f$ W. ]87/ }+ ]& {4 L7 _7 B
88
; b+ C6 C! J6 `89
& I4 ^( _( ?: S" E7 c905 X- o6 r+ {7 B, M8 @1 o
919 ~5 c. V6 l. P5 W6 `
92
- K2 N% X7 h: s: |- ?/ w$ d93, E; ]" @* f9 A; G: L& o# ^) U7 z
947 I- t" T1 a2 R/ e! I" _6 f# a
95
" c; [3 u4 B+ L' N/ ]; K% B961 y: g! R5 P. ]0 l8 C, v% U
97
% @& C- B/ M/ k' Y! W9 L98
9 q2 E+ t! p9 A99
; M+ l# Z" [8 m7 X* n100, P# I; a2 U) o
101# }1 |$ P& D6 G: y: E
102
, b5 v- ]9 M' @103' ?6 Z8 c& `! Y" B# S; k8 h5 j
104
1 I9 ?- F( j0 S, e; ]3 p105
! l; K+ \6 @% V8 o4 b; `106
( G% b, j! ^  ]) e107
2 y5 V* Y5 B9 R+ j1 j) ?1088 {* w$ U# {: a
109
  W8 y% l3 V$ l9 v110  k+ o7 h& P0 J* w( T& r( r, `5 j
111
: ~4 _; @! ?# A* W8 w, {5 S8 v- W112
' W+ ]& F  ~& e/ G8 i9 n& n; t" t1131 K1 t: H7 y6 h8 u
1142 Z. X9 D; s6 F* S
115* K; }1 v, s7 |& \. R' o: \* q
116
8 T2 z3 ]; y* o( n117
) x  X+ x4 }" v0 V0 M$ ^8 Z( u1186 V# }$ M: c0 Y1 Y
119, P+ i# [- i, b3 g1 @
120
$ V; N$ ]8 a/ ?. {: N: s121
8 s1 k: k0 M: Q9 V/ S122
# U! c, Y3 ?: i  b1237 b3 d4 X: y" n% d. L# [6 P5 ~3 S! ^
1243 I/ H$ S$ b" b0 X$ L5 Y" L8 A) [
125
7 j7 x8 e5 l6 A+ O3 C7 _6 S6 p126: m, m% W' r, ~- t) X2 U" P
1272 W- O( o; f( _$ ]* ~0 ]$ |% R
128  }- O0 K9 r5 H# k" k( ^! Z; W
129
8 p( {- b1 g2 U  W% \130
" M' ^3 a8 J* u$ ]- ~% p131
& p2 x* J3 Z0 B& V; \% u1 {132
  {& t# l0 o' Z0 K: o133
: P3 [# D8 f3 A+ B134' I* I# E4 `# ~9 m2 }$ C
# 如果是filestore则需要对data device和journal device先做GPT partition
: Y* N  \/ ?* s7 j--data DATA           The OSD data logical volume (vg/lv) or absolute path to device1 a& _" X1 ~/ A0 I4 [
--journal JOURNAL     Logical Volume (vg/lv) or path to GPT partition
! I8 w5 a% K% a1 S- I9 s* v9 `- O
6 q( g: y2 U2 A6 q) I[root@cephL ceph-deploy]# fdisk /dev/sdb* y, f3 P" s9 x0 j% G- n' O( {
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
( a# G8 a( Z, W) C6 D5 W欢迎使用 fdisk (util-linux 2.23.2)。7 h* v% ?4 N" @( u& U& r0 h
更改将停留在内存中,直到您决定将更改写入磁盘。
! @$ x* z# A4 p. K2 s使用写入命令前请三思。* ~; W8 X" r6 D8 }* V$ l; \
命令(输入 m 获取帮助):g, C; D  ~/ B6 P% D
Building a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)
* q! w2 ^" a; E$ Y4 x; S7 b9 L命令(输入 m 获取帮助):n
* i9 v* R1 Y% \% b分区号 (1-128,默认 1):9 l/ g  u& t2 ]! ~% R) t9 @9 o# h
第一个扇区 (2048-62914526,默认 2048):3 U- V: y) Y0 \1 J. V
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):. ]# }/ c' E) `& r  U) Z
已创建分区 1
6 t* q) f0 v% k  S命令(输入 m 获取帮助):w" F1 ?% d) d: }& d2 \) p/ ?
The partition table has been altered!
: z# u- r* X; `. f6 wCalling ioctl() to re-read partition table.
- D. E+ Q9 Y/ A正在同步磁盘。
( I6 @4 Y  D* Z) d8 U6 r
0 E/ X! ?3 C5 }; N! S% k# B) q[root@cephL ceph-deploy]# fdisk /dev/sdc
) p- R) {- K7 p: U. wWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.& Z! t3 Y, h- q: z9 {
欢迎使用 fdisk (util-linux 2.23.2)。+ T; e1 B1 o  D* |' _3 l$ s' b
更改将停留在内存中,直到您决定将更改写入磁盘。
* @' `5 C; f$ b% m- d! }5 ~使用写入命令前请三思。; T) s8 @6 B9 C% C
命令(输入 m 获取帮助):g9 U. f- ]* i, e8 z0 |
Building a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)$ ]5 B' k* q3 q% E) R
命令(输入 m 获取帮助):n
4 o; Y, M1 _# n7 f' G分区号 (1-128,默认 1):
4 C' q% N  u1 H! ]" R' n7 I4 M第一个扇区 (2048-62914526,默认 2048):
& G5 j/ A% i. h. F- z' ILast sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):
7 q7 R( ?% D  m8 Y7 e' L% R1 }已创建分区 1
& f8 Q% j/ }( V5 Q* k7 n7 o命令(输入 m 获取帮助):w
$ h# k6 S# }$ B7 q& t& aThe partition table has been altered!: O) p4 A/ e0 H; p0 A
Calling ioctl() to re-read partition table.
6 n% b3 u5 r! Y正在同步磁盘。0 ?  d, A* G+ y2 X% L- A! ^7 L
$ K( ?& U2 f: H) m
[root@cephL ceph-deploy]# lsblk$ W) R3 V* ~7 k2 L0 U
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
8 |9 ~: }. [. ]+ p8 U1 y% W4 u2 qsda               8:0    0   40G  0 disk
/ B! U  T; l! V6 \" C; o+ N% \* \8 ?├─sda1            8:1    0    1G  0 part /boot0 P6 E5 E: S# p& I( J% V+ Z7 d, Y# V
└─sda2            8:2    0   39G  0 part
! |$ f( j- H: \" H. q. X; d  ├─centos-root 253:0    0   36G  0 lvm  /  `: V; ]$ S% s8 O8 q/ j7 ^4 o
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]0 D% a' Y; h0 V' n2 S$ K9 T
sdb               8:16   0   30G  0 disk " S% A8 L1 d! }3 m, L/ D
└─sdb1            8:17   0   30G  0 part - F. l- Q$ N8 j* W  O) w8 U+ c
sdc               8:32   0   30G  0 disk # B1 n/ d4 f$ v; n
└─sdc1            8:33   0   30G  0 part 3 ^( h% t. L0 @( O2 X1 }
sr0              11:0    1 1024M  0 rom  
7 _2 W. I8 m8 G. y' W, X  D, F7 w
( K1 T$ W% a& m, O/ Z[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL) w2 B; `! `% u7 h" v
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
' P4 A/ _4 E0 N: d6 l& X4 i1 x8 S[ceph_deploy.cli][INFO  ] Invoked (2.0.0): /usr/bin/ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL$ H" ~  K) M# Q' G2 I% q( h% g0 u
[ceph_deploy.cli][INFO  ] ceph-deploy options:: B" l6 V& |+ D, L! l/ L
[ceph_deploy.cli][INFO  ]  verbose                       : False
1 s7 R+ i+ J) t; ~[ceph_deploy.cli][INFO  ]  bluestore                     : None- D' g: K6 I% U2 i& u+ R; h7 x6 q9 I$ g
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>6 F" u! E6 r% m0 [$ V: T) H
[ceph_deploy.cli][INFO  ]  cluster                       : ceph. V! C2 [3 h( j* V
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs  Z1 O1 D3 d0 p' c) o: |( C
[ceph_deploy.cli][INFO  ]  block_wal                     : None) V% {7 ~3 J& ?! O9 u$ l, y; i0 @
[ceph_deploy.cli][INFO  ]  default_release               : False
& X3 \- q+ I' Z9 n4 j6 g8 H3 \7 p( V[ceph_deploy.cli][INFO  ]  username                      : None
/ Q2 b2 ]. [2 e8 k5 ?2 t5 N[ceph_deploy.cli][INFO  ]  journal                       : /dev/sdc1
& i- ^" {" l: _$ B[ceph_deploy.cli][INFO  ]  subcommand                    : create
% P0 H% e- }/ @: Z3 L[ceph_deploy.cli][INFO  ]  host                          : cephL
& h9 T. H( S9 G6 P[ceph_deploy.cli][INFO  ]  filestore                     : True
& ?. o) x0 w! D) f( q- r8 g[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x225ae60>" L' h+ j+ z6 ]: ~6 s
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None: V+ y" I3 c7 c* T
[ceph_deploy.cli][INFO  ]  zap_disk                      : False" V( o% g6 S8 [# ~. @
[ceph_deploy.cli][INFO  ]  data                          : /dev/sdb1
5 n" z6 y" Y4 e2 H[ceph_deploy.cli][INFO  ]  block_db                      : None
* f2 z: V) d4 e" Y) X[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
' \* `# x- H. C4 S. Y[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
$ Q8 U/ k) @& c$ F( U[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
& h/ @! i8 \/ m- m[ceph_deploy.cli][INFO  ]  quiet                         : False6 i8 I! j' Y4 [( e5 B8 \/ |+ k
[ceph_deploy.cli][INFO  ]  debug                         : False
( v& b% Q. k" j' Y[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb1
( R1 T( v3 C- q! P3 [# m" v" |[cephL][DEBUG ] connected to host: cephL : a+ k/ \' m4 x8 q9 ]1 O7 F
[cephL][DEBUG ] detect platform information from remote host
- A5 |/ B: G+ m[cephL][DEBUG ] detect machine type6 K# r. v0 _2 M* H. t/ m
[cephL][DEBUG ] find the location of an executable
: \1 {3 t/ m: H3 j) F' X2 V[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.4.1708 Core
) S  G9 ?4 }+ x2 i. X[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
6 u# N5 N& [: V% B[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
8 m# h7 G8 V, V* [[cephL][DEBUG ] find the location of an executable
" ]& l8 S$ F) K$ {. ]6 X[cephL][INFO  ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc12 F: f; n, \. [
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
9 A2 h% M+ }. g3 F& o( V( P[cephL][DEBUG ] Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 8b7be4a6-b563-434e-b030-132880a10d31
* Q3 u3 Q# G! u* h; i2 U[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb1
$ P: O4 k# X8 Z* T[cephL][DEBUG ]  stdout: Physical volume "/dev/sdb1" successfully created.
6 t7 \; R4 d: A5 t, a+ r7 b4 h[cephL][DEBUG ]  stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created1 }( o: v3 F, H7 N1 }" V2 }5 z6 C
[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946
# b. n+ w9 ^2 U. }  {! ?[cephL][DEBUG ]  stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.
" A7 ~+ n1 f* a1 n6 _. r3 C% T[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
1 M% X" S. ?0 T, B: A% L! J[cephL][DEBUG ] Running command: mkfs -t xfs -f -i size=2048 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d310 y/ e* C% s/ X) X6 @
[cephL][DEBUG ]  stdout: meta-data=/dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31 isize=2048   agcount=4, agsize=1965824 blks
: ^) }8 _# d4 ]: y0 i0 V# D2 E) }[cephL][DEBUG ]          =                       sectsz=512   attr=2, projid32bit=1( g& \* u1 C7 `
[cephL][DEBUG ]          =                       crc=1        finobt=0, sparse=0! D/ E& G; l6 k9 h1 f! Q
[cephL][DEBUG ] data     =                       bsize=4096   blocks=7863296, imaxpct=25
7 k# o5 X* O) p  I$ N[cephL][DEBUG ]          =                       sunit=0      swidth=0 blks
# r& c- ~7 P  q, S, G[cephL][DEBUG ] naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
% k$ a, X0 Y7 A1 \( R( m[cephL][DEBUG ] log      =internal log           bsize=4096   blocks=3839, version=2( o0 U/ C& U# I& }
[cephL][DEBUG ]          =                       sectsz=512   sunit=0 blks, lazy-count=1
. ?! U' @2 u" r" t[cephL][DEBUG ] realtime =none                   extsz=4096   blocks=0, rtextents=0
6 T  N+ z8 g3 k# c* n' p+ a[cephL][DEBUG ] Running command: mount -t xfs -o rw,noatime,inode64 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31 /var/lib/ceph/osd/ceph-0, ?8 y+ t7 K. e( f6 P" z
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1" r) J+ b8 d. m1 I' J5 L& Z
[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal0 b+ t  o+ X' h
[cephL][DEBUG ] Running command: ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-0/activate.monmap
: J' o2 T9 Z$ x3 f$ y[cephL][DEBUG ]  stderr: got monmap epoch 1
: p8 a+ n9 @8 ?[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
2 P7 g0 f( O  Y6 U: L6 }4 e5 r[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
# o' H& u0 T6 v[cephL][DEBUG ] Running command: ceph-osd --cluster ceph --osd-objectstore filestore --mkfs -i 0 --monmap /var/lib/ceph/osd/ceph-0/activate.monmap --osd-data /var/lib/ceph/osd/ceph-0/ --osd-journal /var/lib/ceph/osd/ceph-0/journal --osd-uuid 8b7be4a6-b563-434e-b030-132880a10d31 --setuser ceph --setgroup ceph
* A* v+ E9 h: O6 y7 k2 m[cephL][DEBUG ]  stderr: 2018-05-07 23:01:34.834993 7f315e466d00 -1 journal check: ondisk fsid 00000000-0000-0000-0000-000000000000 doesn't match expected 8b7be4a6-b563-434e-b030-132880a10d31, invalid (someone else's?) journal# a4 g: ^% n: U6 p* m# T# ^8 b
[cephL][DEBUG ]  stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic- \: q* ]% s8 G- z0 R! y
[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
" ~5 |% c( L" Q* P[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory
3 h/ a' m" L2 u0 N[cephL][DEBUG ]  stderr: 2018-05-07 23:01:34.916284 7f315e466d00 -1 created object store /var/lib/ceph/osd/ceph-0/ for osd.0 fsid 39f3b85e-ee3c-4d8d-93c2-7f7c8aa471215 Q. `' B7 T( H
[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==
# e0 Z+ M# Y* h; y[cephL][DEBUG ]  stdout: creating /var/lib/ceph/osd/ceph-0/keyring) j6 x) y- g6 h9 Y
[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
+ T+ Z+ F# p/ }7 Z) B[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
0 d% O/ `: K: L( ?1 c[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1* W$ m- B( C- o, ~2 q
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal. u. j8 Z. F# A! b1 U" |/ j9 x" J& s
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
! O0 t* E* g7 W9 X) _1 L# J. `+ g; N, L[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31
" x8 I5 x$ w- ~/ S/ J[cephL][DEBUG ]  stderr: Created symlink from /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31.service to /usr/lib/systemd/system/ceph-volume@.service.! G6 @7 Y6 V: O% O. i" |2 x
[cephL][DEBUG ] Running command: systemctl start ceph-osd@0: \; K8 z" |, w! D3 d
[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 0
7 f5 R# D/ q5 s[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1, }+ ?7 n7 E% d" _8 A+ Z! l- @3 @
[cephL][INFO  ] checking OSD status...
1 O" S2 b) q$ R5 g- B[cephL][DEBUG ] find the location of an executable" [; j8 `' G7 N, a7 \& l
[cephL][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
7 Q  [8 q- k0 d[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.0 B# B5 G! f! L$ e0 k; _
% u- f) [+ w9 V  o& Z
移除OSD
1; p- i/ {- h4 [  L+ B& S# ?$ ~
2
" |1 V! J' T& P$ B8 \+ k& y3
$ Q$ H  Y4 ?( A/ {% a0 t: B# u43 Y2 d7 b9 v9 m
5" l7 I7 k+ E# _0 t) z/ V- m
6: K4 t3 O5 b) c
7
8 R* z, m+ u- U  C% c8
2 b& v7 y2 f8 q3 P4 P9
) q2 |* [0 X  ^10
  M& o/ Z9 P) e118 y) s  i, D, y; {1 B/ i
12
. e+ V, R' P6 j( J  L  s
# 使OSD进入out状态; D8 w1 Z& q  l8 G( F
[root@cephL ceph-deploy]# ceph osd out 0
  M1 m4 h# W% |% j/ Q5 vmarked out osd.0.# B  e7 B6 R, X, E
# 观察数据迁移. D  n3 }  J1 ^( c; P! {
[root@cephL ceph-deploy]# ceph -w1 Z9 a# k; o% k: ^0 u: I
# 停止对应的OSD进程* F0 O" b1 f( K
[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
" A3 i+ M8 \4 P; t5 x# 清除数据! W5 ]) S2 [; V0 M/ x$ b  t
[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
4 A) m) J' e' kpurged osd.0
3 ^2 w. |1 m# z$ O% U, d5 f& j- a# 在ceph.conf中移除osd配置
  T7 x6 j/ l2 L5 ?9 f2 R) r[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf
% _8 Z. p: j7 e& I; b. k2 h2 F

2 i4 |6 E+ d4 l* C3 W+ T. m& C部署CEPH-MGR
1
  t) D) ]0 Y: t5 B2
  p; a0 V: y4 u" p+ R' ^  ~3
  {+ i2 e8 P( P& D4
; n+ O8 y- d6 U3 C5 ?4 S9 s* S56 r% P; w! U* K* `+ T- G4 p
6
5 p% W2 b! [: e; m5 _  P. B7
$ w. u' m. X0 V, |" A8+ E( y7 s7 h: |! y+ Q' L8 G
9- V0 c) C1 w& a* _* x
10$ }, R7 \, O% a# Y3 F+ y3 c
install netstat tool; m& x4 {( s% i6 @: I# V, U# b
[root@cephL ~]# yum -y install net-tools
) I! r8 ]' q5 E. m- b. |: {6 Z; I2 I# e; H, \' U% `
[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR
, u+ X4 I. t4 H7 p) z! U0 jceph        1111       1  0 12:57 ?        00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph2 e5 s" ]5 ?7 U/ @  N+ r" A
[root@cephL ceph-deploy]# ceph mgr module enable dashboard8 o) u0 \* e) s

( h: h" ^2 z9 Sopen 7000 port
. X. J: K9 m4 j( f2 ?[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent& H( }7 d; C5 L: {
[root@cephL ceph-deploy]# sudo firewall-cmd --reload
: x+ ]' `# @% Y/ x' H8 Q' p2 A

/ M9 I7 R  }* V# z# n4 g5 l
相关命令
1
* O% w6 D/ J9 I, `# x. d2
- s6 p, e) C: C) R6 E3* N7 b$ D: `' ~5 c5 D
[root@cephL ceph-deploy]# ceph mgr module ls& P% G6 Q) z! P  P3 A" b
[root@cephL ceph-deploy]# ceph mgr services% @9 Q( l" w8 D  r+ Z, i/ ]
[root@cephL ceph-deploy]# ceph tell mgr help0 A& t6 s- A: i; N+ B; q" U+ n
- h- @2 `( L3 }, b$ n+ S! T- L
部署MDS并创建CEPH FS
1
3 f4 J! [7 v+ {: n6 C0 w8 r2
, d3 f. U; Q& m+ ]! Y8 G9 U
[root@cephL ceph-deploy]# ceph-deploy mds create cephL- Z# h6 J9 y  `4 W) h
ceph        2150       1  0 13:00 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph$ `  L6 ^" c" |- ?' ]
* ]: d& T! k4 K: d- U8 ^) b- q% `
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。
配置这些pool时,可以考虑:
​ 对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。
​ 为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。
1  ^2 b( V# K, {6 i3 X+ Z1 Y6 [
2. d! G1 F* g& s
3
3 a( o5 X6 |1 b2 x6 b4
4 K7 U. |$ }5 `3 |" J+ i( b56 {" U2 {' Q& W0 Y; G  `" Z0 i
ceph osd pool create cephfs_data <pg_num>, X. d/ B- P6 x  k) D) U# a" K
ceph osd pool create cephfs_metadata <pg_num>- [) x/ G6 L( z, Z0 g# Q" {9 S) m  u
例如:/ L1 W9 L) o9 i0 p% ]7 w5 G+ E" M
[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32- S9 A) }$ w) h6 d% Y1 e. |7 }
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32
1 ^+ c) Y# x' D5 l
* l3 u0 h3 V. O: h
更改pool的副本数
1
5 t0 F6 y( A, b8 h5 X2
6 x& i4 \7 ^7 g/ w) t) v37 H6 X  i$ l$ P% I6 @, |
4
4 ~9 Q% b: U1 U! U
ceph osd pool set {poolname} size {num-replicas}
# p6 C4 t, Q6 `% s  F例如:  B  g& ]) \  ?2 E8 f% h& r3 m
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1+ s" ^$ {% g$ K; U+ ?7 K0 f$ e' ^
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1
& ?  m9 R( b1 v- \  O& V
7 }% e4 [# J. B) z! v" I
一旦创建了pool,就可以使用fs new命令启用文件系统:
15 P/ K4 d! E$ C
2
* x$ e- b" g: I1 S* b" U2 g35 [0 C1 ~% k" w) g3 \. y( t
ceph fs new <fs_name> <metadata> <data>
# J. T/ Q% d2 Z例如:* h! T# x( o- U: m0 T
ceph fs new cephFS cephfs_metadata cephfs_data
. b; u1 C9 n) d* D" ^

4 S0 p, ~4 K1 E- n5 d$ y, X5 }
一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中:
1; i# L( r  H& S+ `4 @  q
2- p3 @5 [' E* W& ~) Y4 r8 k$ O. Q% J7 V
[root@cephL ceph-deploy]# ceph mds stat, i) J4 J3 c1 ]1 e" l) O1 Q
cephFS-1/1/1 up  {0=cephL=up:active}
/ f; m$ j4 I8 U0 g+ y

' l5 t" A2 b, f+ N+ c# K* n
一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。
如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。
挂载CEPH FS ( File System ) 有两种方式:
KERNEL DRIVER
要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如:
1! q) K8 z) h6 q7 B, ^9 Q
24 D2 Q# m% f3 T4 R1 V$ D( o( X
3
' d5 E1 z' Q6 k# ?4 y! l, B4  Y3 X7 R3 B# h1 I% D
5
9 D. K) N, ~, x7 {: v/ ~/ n0 p6( \7 D& t5 ~( i  l1 m* [$ `0 K
7
5 D1 ^* n: s, x
sudo mkdir /mnt/mycephfs4 T9 b5 p% D. v- l" F/ ]
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs1 `3 |6 M1 M& t( k2 f& F, P& W
例如:
* B' ]9 f( t5 f; Q[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs# s( ]: H' [* N: Q
mount error 22 = Invalid argument
( C$ O8 _0 o$ B% h$ zCeph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。
9 g2 z9 p' O7 |+ Y- [; i4 T2 p! i! T如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。
: ~* P( C8 t* z6 ^
# x% p/ b8 e1 b4 r
如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。
1
7 ?) ]+ V6 m* ?" f. X2 X8 a
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==" Y8 S% ]1 r! ]- `& j% w8 o

0 @8 f; L1 l% N7 k
上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如:
1, m3 y1 j1 z% d" B6 R/ N
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret$ L- _+ t/ t& k( o, s; A1 [
. ?4 t4 s3 j6 e# `! ~
如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs
要卸载Ceph文件系统,可以使用umount命令。 例如:
1
/ V1 S5 I' Y, m6 C2
; {) a( E  N/ s% ^' L+ d
sudo umount /mnt/mycephfs" H2 k/ D" V' S) r8 H, X
提示:在执行此命令之前,请确保您不在挂载的目录中。
/ Z- W" Q- Y2 O1 u* q+ T
9 t6 A0 _  H; m4 {
FUSE
在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。
在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。
15 _1 b, k: J% M* k& ?4 @3 Q+ U
2
; [4 R* _1 w' r" r; ?' N
sudo mkdir -p /etc/ceph7 P" s% X. m' ^- e
sudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
' u3 S3 [# Q/ o* f1 b8 h6 P1 X
) ^9 R7 f2 V% {$ ?# b' |
在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。
1/ W1 s0 K3 o* M  e; e
sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring
; @8 z- x6 W9 w6 Y$ Y. b) X5 e

; ]/ g) N( A4 b! C
确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。
要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如:
15 b0 Q4 c# A. W( d/ ^; y* T$ [
2+ y, i7 O% i; ]: i4 D, d
sudo mkdir /home/usernname/cephfs% x9 Q+ C; j: A+ V( L1 K5 E4 k
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs% A( l# o" }! y) d$ v5 o- [
7 `5 M1 `7 U* _
如果您拥有多个文件系统,请使用 –client_mds_namespace 命令行参数指定要挂载哪一个文件系统,或者向ceph.conf中添加client_mds_namespace设置。
要自动挂载ceph-fuse,您可以在system fstab中添加一个条目。此外还可以使用ceph-fuse@.service和ceph-fuse.target systemd units。通常这些unit文件为ceph-fuse描述默认的dependencies和推荐的execution context。例如使用ceph-fuse挂载到/mnt:
1* Y; b1 d: o& z1 M6 o
sudo systemctl start ceph-fuse@/mnt.service' q" w: X  v- _% k# L( D

1 {* k9 {" x/ T1 t3 w1 N+ _
持久化挂载点可通过以下方式进行设置:
1% Y1 K- Z& C$ `
sudo systemctl enable ceph-fuse@/mnt.service* b& j# i3 c: ]+ v8 E) J/ D

! F) e% E4 Q0 N: M- O8 U  [" s1 o: J4 G部署RGW
Ceph Object Gateway原来叫RADOS Gateway,它是构建在librados之上的对象存储接口,为应用程序提供了一个RESTful gateway,用户可以通过HTTP协议访问Ceph存储集群。
Ceph Object Storage支持两个接口:
  • S3-compatible:与Amazon S3 RESTful API中一些子集兼容的接口,提供对象存储功能。
  • Swift-compatible:与OpenStack Swift API中一些子集兼容的接口,提供对象存储功能。

      T. g# K$ P( b/ w
Ceph Object Storage使用Ceph Object Gateway daemon (radosgw),它是一个HTTP server,用于与Ceph存储集群进行交互。由于它提供了与OpenStack Swift和Amazon S3兼容的接口,因此Ceph Object Gateway具有自己的用户管理。Ceph Object Gateway可以将数据存储在与Ceph Filesystem和Ceph Block Device相同的Ceph存储集群中。但是我相信在生产环境中不会这么做,如果数据量大的话会影响Ceph Filesystem和Ceph Block Device的性能,个人一般会独立出一个Ceph Object Gateway集群。S3和Swift API共享一个通用的namespace,因此您可以使用一个API编写数据并使用另一个API检索它。
10 e, k5 D3 X* Z: U
Note:Ceph Object Storage 不使用 Ceph Metadata Server& q" e4 M: |* x/ I6 G  w
& l- ?/ I5 I) q. E! f
1# C* I$ }! Z% g2 |) ]# W* D8 Y
2: t& f- }$ W' _" d( n- C
37 a7 n7 p6 r1 l) J5 ^
4
  i: [7 z2 p1 c% B7 P6 B50 X% a  `" K) O' G4 W: q# t2 I
6; V2 d  \" k! D# ]
7$ g; A0 o4 T2 S6 A. o5 ^
8
+ ]  Z1 Q4 y% b6 {9
8 h* Y+ _) J5 M10
4 p. }; K6 m5 b1 }" T11
, i8 ?, l! d6 V12
3 ?* _3 J4 g# m% q% G% b13
, Z+ A- a' h/ J: n6 N14
0 J) b, g9 q( p: n15+ N% Z& ^/ c; o! e8 D1 c& B* [
16- R5 d3 D, p/ Z2 Z& V
176 s4 \7 {, c" ~; b3 I  _7 j  `
18
: D; e  M- c% n6 M+ O19
* r+ ?8 }4 X3 ^5 T/ G5 V20
( ?" q6 o2 Z5 b# A9 l0 ]: ^8 I21/ w9 i+ I" o  h5 h5 r
228 W5 R3 d3 _: V% ]/ g
23
1 b& R& V9 Q/ G, [/ ]24
1 {8 o% n1 z0 E0 A  T5 S- M" i& ]
# 必须部署MGR,才能部署RGW: k! B% f- T3 I3 d8 u' H* O, |
- R4 ?% n# y7 V* O0 t
[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW! @, f. u5 X2 u$ }' o% h
root        2799       1  0 13:13 ?        00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph. e+ B' b5 W( _7 a' |; O
1 Y5 H# M  k4 D2 E1 Q3 e& h0 B4 L
# 重启RGW
7 ^6 C4 e1 k" R[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service; a" w" @) ?8 o& Z
[root@cephL ~]# systemctl restart ceph-radosgw@rgw9 u/ W! K; n6 {% Y  T

: Q9 `; k% ]* b" V  V5 V问题一,这难道是ceph-deploy 2.0.0的坑?3 A) |% N3 B$ j& A& q! a
[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log5 Q' P' \9 x" `0 F6 X
2018-05-11 22:30:31.999421 7f537c31fe00  0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 3450
0 p, G, e/ k: M( B2 n8 ^! Z2018-05-11 22:30:32.021546 7f537c31fe00 -1 auth: unable to find a keyring on /var/lib/ceph/radosgw/ceph-rgw/keyring: (2) No such file or directory
: e, N, S9 T' g- Y" I( L2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication5 I& _% s' E/ f# u1 y5 k
2018-05-11 22:30:32.021563 7f537c31fe00  0 librados: client.rgw initialization error (2) No such file or directory% f7 q4 y' s2 s5 @# O3 n6 {
2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)
. ]1 u8 G/ x! p% O# }) e/ I4 P5 H6 e8 Z- h0 N1 `) j
[root@cephL radosgw]# pwd- b. a3 M$ E. e+ `# @: T$ q$ w  ^6 a
/var/lib/ceph/radosgw
, Z6 z7 |8 t, m. E) m# u) S  i[root@cephL radosgw]# ls
9 r9 m' g. o% v8 P0 a% dceph-rgw.RGW
$ M8 C0 @# l4 G( ?2 _% R[root@cephL radosgw]# mv ceph-rgw.RGW  ceph-rgw
6 a( p3 c  ^! i) o  r
* ]1 h7 l3 ^! }5 X6 u/ J/ K* P$ Y4 l
. y& r' q! Z' \, j- q
配置变动
在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。
1
( A! D9 o9 n+ e( b; e3 H3 s29 v, q# ^0 N8 M. d9 ]) E# B. s
# 允许删除pool,需要添加
$ Z  Z7 }3 k# dmon allow pool delete = true
( t9 O; h" ^, E- D( J( A

- w2 j6 m' t& U0 C& J: _

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-8 15:42:50 | 显示全部楼层
实践步骤2 P% O( R1 ~( Q7 f8 y4 L0 D/ Q
获取代码并安装
+ B! p- k" j  c( o* Fgit clone https://github.com/ceph/ceph.git
9 z& j2 ?( ?9 M5 jcd ceph
& a& T# h5 {. t4 G8 ?; igit submodule update --init --recursive
5 C/ }9 c! ]8 i" c6 e- W) L" |./make-dist; v9 o: g/ b- t: R! e
rpm -bb ceph.spec: \/ H2 T/ ^2 ?" f+ W$ t  W
生成rpm安装包后进行安装,这个过程就不讲太多,根据各种文档安装上最新的版本即可,这个代码合进去时间并不久,大概是上个月才合进去的
9 d$ B% n; a4 J
配置集群3 h% f  z8 r% U9 l" O% h. B  E; n
首先配置一个filestore的集群,这个也是很简单的,我的环境配置一个单主机三个OSD的集群

8 t) n1 G# D7 H" d: c- g5 i7 V% ][root@lab8106 ceph]# ceph -s- p. U% X$ D! @
    cluster 3daaf51a-eeba-43a6-9f58-c26c5796f928
" a5 r+ S  V( H* c1 t. ]" H. I2 D* }     health HEALTH_WARN7 q7 H; \7 U; V' P
            mon.lab8106 low disk space) y1 h8 Q9 S2 ]# L$ s+ D' q* Z
     monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0}9 j$ _# `6 C% T( W# r
            election epoch 4, quorum 0 lab8106! ^9 E8 {1 F: O
        mgr active: lab8106
4 s7 Q6 s1 k. o% }8 D' x& q     osdmap e16: 3 osds: 3 up, 3 in; `9 s2 W2 M9 C8 @. K6 m# S
      pgmap v34: 64 pgs, 1 pools, 0 bytes data, 0 objects2 p( m4 i  s5 q% Q$ t- l# _
            323 MB used, 822 GB / 822 GB avail
' i! `/ _# ]+ X) t1 F                  64 active+clean5 ~9 j6 S7 o, l% k0 z; G) M
[root@lab8106 ceph]# ceph osd tree& M) S! t+ L! \8 c
ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY + m6 I; I* f- i# y: |
-1 0.80338 root default                                       
, m( E# j1 U  |, G; }2 m  |6 C-2 0.80338     host lab8106                                   $ N& q3 N! @) b. h) M# q
0 0.26779         osd.0         up  1.00000          1.00000
& Z. v: p, ^8 ?0 ~! v 1 0.26779         osd.1         up  1.00000          1.00000 * g: N/ g- l! |/ t, v- E, T* N7 b
2 0.26779         osd.2         up  1.00000          1.00000
$ d4 w' K5 q- s6 C写入少量数据
& r  a& q0 ^* ?$ s+ `5 N[root@lab8106 ~]# rados -p rbd bench 10 write --no-cleanup, i( H0 z( @- ^  ?
设置noout+ C/ I5 k9 J" c( N1 k8 N0 @
[root@lab8106 ~]# ceph osd set noout, y; x( `3 ]3 a# i# a9 w
noout is set
; j: P/ K6 G% p$ u3 W* M1 F3 [停止OSD.01 K$ b" X. k3 z. [3 a
[root@lab8106 ~]# systemctl stop ceph-osd@0" t3 _* H- q- D7 o. p3 o
[root@lab8106 ~]# ceph osd down 0) W; m; n. O- h: `" b% ^( G: O+ ?
osd.0 is already down.
8 {8 h3 R2 D' c2 H) G2 G3 S将数据换个目录挂载,换个新盘挂载到原路径

7 J& h: N7 h$ G/ P[root@lab8106 ~]# mkdir /var/lib/ceph/osd/ceph-0.old/6 B6 {- d% o3 J/ i' L
[root@lab8106 ~]# umount /var/lib/ceph/osd/ceph-0* f5 z1 J7 T, x, X
[root@lab8106 ~]# mount /dev/sdb1 /var/lib/ceph/osd/ceph-0.old/
' V7 n2 @3 Q8 @/ O* j6 k' u9 a[root@lab8106 ~]# mount /dev/sde1 /var/lib/ceph/osd/ceph-0/
2 b- n  m. V! g- `5 m6 n* q* E
[root@lab8106 ~]# df -h|grep osd
; L0 z* h  {6 p# X7 e1 Y2 g' q/dev/sdc1       275G  833M  274G   1% /var/lib/ceph/osd/ceph-1
  O1 k4 h4 m; w6 y$ k/dev/sdd1       275G  833M  274G   1% /var/lib/ceph/osd/ceph-2
9 E; Y% |, g# ~$ q' k/ n! }$ f/dev/sdb1       275G  759M  274G   1% /var/lib/ceph/osd/ceph-0.old
5 m# O) X. H6 i8 F/dev/sde1       280G   33M  280G   1% /var/lib/ceph/osd/ceph-0
2 a( s+ M+ E3 g) u) m. J, K在配置文件/etc/ceph/ceph.conf中添加

- U' F# s! l/ c' N9 `8 ?; a8 s+ Menable_experimental_unrecoverable_data_corrupting_features = bluestore$ y. G1 T0 M4 ^6 z# _9 B/ Y. ?
如果需要指定osd的block的路径需要写配置文件
* u0 {- D1 h& v2 `& j/ {
在做 ceph-objectstore-tool --type bluestore --data-path --op mkfs 这个操作之前,在配置文件的全局里面添加上
+ s8 h8 M0 ~6 \( Mbluestore_block_path = /dev/sde2# t; r# y+ l! \: q4 c( f
然后再创建的时候就可以是链接到设备了,这个地方写全局变量,然后创建完了后就删除掉这项配置文件,写单独的配置文件的时候发现没读取成功,生成后应该是这样的! Z% `5 q9 Z; _2 ~
[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0
: k& g1 D8 X' N: C7 j4 \0 t! |; ntotal 20
& N( d  S! c! wlrwxrwxrwx 1 root root  9 May  3 17:40 block -> /dev/sde2; Y: ~+ |8 A8 e
-rw-r--r-- 1 root root  2 May  3 17:40 bluefs
3 x! m( D. }2 k5 ]$ W1 m, T- y1 {-rw-r--r-- 1 root root 37 May  3 17:40 fsid
2 @# E, G4 e, U& p1 t2 m* A-rw-r--r-- 1 root root  8 May  3 17:40 kv_backend  r! b+ S' C5 p% Y: |0 J  I; f
-rw-r--r-- 1 root root  4 May  3 17:40 mkfs_done
3 D. ?# C% H! x) F-rw-r--r-- 1 root root 10 May  3 17:40 type
+ K# @& k8 {, d9 s) p. T- D+ R如果不增加这个就是以文件形式的存在

: h5 ]1 ]4 k5 E; b/ ^; r& O获取osd.0的fsid4 \4 i( W; d4 T, x
[root@lab8106 ~]# cat /var/lib/ceph/osd/ceph-0.old/fsid
; i& _, Y, q2 T! [: Yb2f73450-5c4a-45fb-9c24-8218a5803434& R: N) b9 z: G! [
创建一个bluestore的osd.0
& u3 u% Y2 a' J& ?. W, B[root@lab8106 ~]# ceph-objectstore-tool --type bluestore --data-path /var/lib/ceph/osd/ceph-0 --fsid b2f73450-5c4a-45fb-9c24-8218a5803434 --op mkfs
' M9 b# d- C! L6 j* ?转移数据# L$ J' b) t9 @9 g2 v1 A
[root@lab8106 ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0.old --target-data-path /var/lib/ceph/osd/ceph-0 --op dup6 c- b5 `; D+ N# Y. L; @$ _& m9 Q
[root@lab8106 ~]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-05 x9 k' t" K& R. i1 D
这个操作是将之前的filestore的数据转移到新的bluestore上了

/ c5 k* [9 X7 }  {启动OSD.06 O( a7 ~3 o7 w5 h" x
[root@lab8106 osd]# systemctl restart ceph-osd@0! ^# G( b. h$ U5 ]4 q
检查状态

  d' L/ i, Z& O7 d0 P) s4 T[root@lab8106 osd]# ceph -s
, S1 X5 o, e8 C/ J2017-05-03 17:05:13.119492 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore
$ B  p" s: T, n* I2 ]# p2017-05-03 17:05:13.150181 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore
" H* e: w* t1 N% R2 ]    cluster 3daaf51a-eeba-43a6-9f58-c26c5796f9281 N8 L: t0 y  `  A9 D
     health HEALTH_WARN) f/ f  V: _, q. A' }4 S4 L: h
            noout flag(s) set  y4 X* I7 D2 @
            mon.lab8106 low disk space! A, e2 H+ [/ Y7 J0 Q3 }8 c7 j
     monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0}
2 K9 a% H, m# B1 A2 s1 f; l            election epoch 4, quorum 0 lab8106% m4 V' ~/ A: U
        mgr active: lab8106 0 _" ]4 `( `, c3 @
     osdmap e25: 3 osds: 3 up, 3 in6 b& K" E3 z) N5 i7 e
            flags noout2 R5 F) n- K: z8 D1 d6 G9 h* B
      pgmap v80: 64 pgs, 1 pools, 724 MB data, 182 objects9 M2 w" i5 R( R9 q, J
            3431 MB used, 555 GB / 558 GB avail
& B4 h/ B7 m# h$ {                  64 active+clean
/ V- p; t+ Y3 p5 V* e4 d! b* L成功转移

) v# [: B6 D  {. D% a不同的block方式
4 L9 ]% s( d8 h4 o4 B3 K7 h[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0/ -al|grep block
1 T4 ~9 x/ B! i+ H-rw-r--r--  1 ceph ceph 10737418240 May  3 17:32 block
9 b1 I! _. ^% y5 {' C, T3 D  @- ][root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-4/ -al|grep block
+ w1 r+ k7 N: g( P2 A0 l; mlrwxrwxrwx  1 ceph ceph  58 May  3 17:16 block -> /dev/disk/by-partuuid/846e93a2-0f6d-47d4-8a90-85ab3cf4ec4e! w( }& o7 j* ?" i; E( L
-rw-r--r--  1 ceph ceph  37 May  3 17:16 block_uuid
% _- D- R1 n4 m: ~可以看到直接创建的时候的block是以链接的方式链接到一个分区的,而不改配置文件的转移的方式里面是一个文件的形式,根据需要进行选择
6 M9 N; U9 n% I8 X
总结# P0 X3 W  T' l& o
转移 工具 的出现方便了以后从filestore到bluestore的转移,可以采取一个个osd的转移方式将整个集群进行转移,而免去了剔除osd,再添加的方式,减少了迁移量,可以一个个的离线进行操作
. }# x- j0 _  ]
ceph的工具集越来越完整了
7 w7 R: b! I' S& \. v6 W4 A2 @7 Y' U* R9 o5 V3 t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:03 , Processed in 0.017295 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表