|
ceph L版已经发布很久了,官方说默认使用BlueStore作为OSD的存储后端,在Cephalocon APAC 2018上也是讨论的焦点之一。 提到BlueStore,不得不说一说Ceph的STORAGE DEVICES。 STORAGE DEVICESCeph守护进程将数据存储在磁盘上: 1
) {5 J I! E) E6 C* U$ Y# o; M2
: [% b- S G6 u, ]. J7 I; R0 J* y3+ g# T! g7 ~5 {# O
4. n# t; y0 J r
59 ~+ X4 O) E n4 F5 S6 E
6
; m0 U& e, C+ _' z | Ceph OSDs ( Object Storage Daemons ) ?; p" J: R& ^7 s% t. s
Client端的大多数数据写入Ceph后被存储的地方,一般而言,每个OSD都由单一存储设备支持,如传统硬盘(HDD)或固态硬盘(SSD)。
; V2 N9 N# N0 `: c% D/ Q4 l# |; E OSD还可以由多种设备组合,如存储数据的HDD和存储某些元数据的SSD(或SSD的分区)。+ e; B S( u H' h/ j( d
群集中OSD的数量通常取决于你要存储的数据量,还需要考虑每个存储设备的容量以及冗余级别和存储类型(replication或erasure coding)。
& L/ R: _$ n! @* \$ W/ Q. C1 jCeph Monitor
9 J: W. T$ @# @0 ]# ~4 { 管理关键群集状态,如cluster membership和authentication信息。对于较小的集群,需要几千兆字节(几个GB),然而对于较大的集群,monitor的数据库可以达到几十甚至几百千兆(几十个GB甚至几百个GB)。
" Z+ u' c8 }' W o | ( N5 Z$ x, Z1 L7 }/ H
OSD BACKENDSOSD可以通过两种方式管理存储的数据。从Luminous 12.2.z发行版开始,新的默认(推荐)后端是 BlueStore。在Luminous之前,默认(也是唯一的选择)是 FileStore。 BLUESTOREBlueStore是专门用于Ceph OSD管理磁盘上的数据的专用存储后端。在过去十年间,受到了FileStore管理OSD经验的启发.5 V% j3 \# b9 v+ J, W
BlueStore的主要功能包括: 1- D7 D4 E# e! n- \3 h1 T
2* }- t$ E% H/ L4 i |
3
6 L r' L: ]& L/ r4 W- H1 F40 A& V0 L, {' D3 o$ n& D" j
5
' K. N3 U! w, q& I1 l2 Z6
3 `/ @- w) [4 h8 t" X) ^76 Z8 n: l) c4 W7 g2 g( j
8% o3 @6 z, t1 j& U' W5 N% W1 {
9
0 M# p2 b p \+ K10( i) ?' \( r7 |8 u! d2 T: b
11! _9 K0 U; ?* c! w+ Q
12
; o/ v8 C8 y K; Z C9 w8 H( d% K13# }7 t7 W+ ^; ]# g
144 K1 j& T1 t/ I Q& \1 E0 t& C
15% d$ R2 L, V% w0 t! C$ i
16
: h0 v# m2 a' u! j9 r \8 ^0 C17+ b# p; B: L/ ]% N4 X2 b6 i; M9 s' w
18
4 X! I3 t, }" P3 c ~$ _4 L" R19+ Y' `# x; V+ V- `
| 直接管理存储设备 ( Direct management of storage devices )
/ q8 E( B6 L4 Z3 O! L( U# t BlueStore使用原始块设备或分区。这避免了任何可能限制性能或增加复杂性的抽象层(如像XFS这样的本地文件系统)。
6 j& s2 w" z( }2 q& a
! t. _, c- ]$ `9 ]1 k* t使用RocksDB进行元数据管理 ( Metadata management with RocksDB )" w4 J g: c/ x V6 o' d5 V+ c
为了管理内部元数据,我们嵌入了RocksDB的key/value数据库。例如在磁盘上,从object names到block locations的映射。2 x& \& j* j7 U
: r) \7 `0 s/ `; @: u, S% u
完整的数据和元数据校验 ( Full data and metadata checksumming )0 Y( M7 V9 N3 `7 a1 G
默认情况下,写入BlueStore的所有数据和元数据都受到一个或多个校验和的保护。没有数据或元数据在未经过验证的情况下,就从磁盘读取或返回给用户。
% S! [, f Z- E/ j e! {, U2 r' s2 y* h H R& P; R
内置压缩 ( Inline compression )
' k- `, r/ M. s+ u1 P+ f4 `, {" l 写入的数据在写入磁盘之前可以选择压缩。) V# `$ a3 v% E: O2 O/ f6 e6 U
) d. F. u" N; G( b6 p多设备元数据分层 ( Multi-device metadata tiering )
: g6 j- ~1 e H% r" K BlueStore允许将其内部journal(预写日志,write-ahead log)写入单独的高速设备(如SSD,NVMe或NVDIMM)以提高性能。/ ~( J0 j: ]3 r0 }1 j. Y
如果有大量更快速的存储可用,则内部元数据也可以存储在更快的设备上。
4 R, x% g3 D0 t" d4 }; r* X8 o5 f: a8 f0 M
高效的写时复制 ( Efficient copy-on-write )
7 r2 U: J+ C5 d4 ]. Z! g T RBD和CephFS快照依赖于copy-on-write clone机制,也在BlueStore中得到了有效的实现。这将为常规快照和erasure coded池提供高效的IO(依靠clone实现高效的two-phase commits)
: B, f( G7 ^# y, M6 x+ |
& ? Q& w7 H4 X |
# M2 K. T9 ^0 w `. l; k3 lFILESTOREFileStore是在Ceph中存储objects的传统方法。它依赖于标准文件系统(通常是XFS)和某个元数据的key/value数据库(传统上是LevelDB,现在是RocksDB)结合使用。, ?" g5 o% {$ P* F
FileStore经过良好测试并广泛用于生产,但由于其整体设计和对传统文件系统存储object数据的依赖性,因此存在许多性能缺陷。, |9 r' U4 o* J" F2 u0 K9 ~+ Q9 A* z
尽管FileStore通常能够在大多数与POSIX兼容的文件系统(包括btrfs和ext4)上运行,但我们只建议使用XFS。# a( t, [+ g; z) I" N
btrfs和ext4都有已知的bug和缺陷,使用它们可能会导致数据丢失。默认情况下,所有的Ceph提供的工具都将使用XFS。 在ceph L版代码结构改动比较大,增加了CEPH-MGR向外部监测和管理系统提供额外的监测接口,今天就用虚拟机搭建实验环境玩一玩。 环境信息18 [ s' u5 I' o' C' T1 q2 v
2
( ^$ X$ L9 p; g3
2 e5 `- c8 \8 H! u9 J; E47 Q( u1 k8 `, j) ]% q5 D
52 z% L& c: i D% q
6" C M& A4 p' d3 ~5 h2 \
76 E6 h! i* z/ Q9 ^
8
! a7 S( J9 c s4 ^7 B' l z+ r9
C5 c6 D, |! O, r10
4 N6 o, `% Z/ O3 \, x; B11( C: { M1 A9 K# }
12. D3 N1 D; ^" _7 E, s5 M7 ~: T) `
13
% d0 T7 C: A+ g# g% w14
D8 k: N5 @8 a# c; F; O( D6 [, Q15
+ K B3 {7 T. E: K$ T0 }7 _# f! U163 ]: v/ @6 T/ J6 F
17
) A( X; c7 Z& g6 d* Z18* `, G& c5 N0 C1 G' t( R/ `& c
| [root@cephL ~]# yum install -y redhat-lsb
7 ?6 X% o9 `) D2 V Z[root@cephL ~]# lsb_release -a
3 G3 \; G/ p9 Y3 M9 G* LLSB 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 q, _7 M% E0 w2 L4 l! C! z
Distributor ID: CentOS# D. E& ^6 s# f- i9 j$ w
Description: CentOS Linux release 7.4.1708 (Core)
# \/ q3 j9 w0 L* @6 \Release: 7.4.1708
" v" {% m* v/ X) P% G0 UCodename: Core
- i6 k" I" c8 [9 y& Z( q a. w: d' [& v! [5 a& J* y4 P4 M
[root@cephL ~]# lsblk, U0 V, u" |2 |5 L$ o# F
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
# J& O1 ]# r' R: b: k+ @. o! Fsda 8:0 0 40G 0 disk
: \$ |, N: q O) y" u0 Q `1 U├─sda1 8:1 0 1G 0 part /boot
) a% m6 C3 ^7 O└─sda2 8:2 0 39G 0 part, m9 o! r( W$ h$ e
├─centos-root 253:0 0 36G 0 lvm /4 _! L2 G. Z) S% h; u$ F* a/ F) k
└─centos-swap 253:1 0 3G 0 lvm [SWAP]* q5 S: w% P# g% U, j! z
sdb 8:16 0 30G 0 disk, l. H2 T! s; a& b" I8 N) P. x
sdc 8:32 0 30G 0 disk
1 a! M" n6 f. b" T9 E. h9 qsr0 11:0 1 1024M 0 rom
, ]8 @2 K: C0 j3 R9 v' w. p; g |
( s$ }; V( h3 u安装安装pip和ceph-deploy1
' `8 ?$ P3 R- ]0 \4 r2 |9 [28 d$ U% R; R8 n4 B
3+ M% v3 t, ~) r+ V) l& c+ e9 G" T& s
4
8 D% v+ }& K* Q, ~: I5. J4 C9 I8 P1 P
6) w1 R6 P4 a, m4 e9 {" A
7
- L2 f9 L5 J9 ~% ^7 ~ | [root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"7 N0 R0 b/ h7 b7 r- D; H
[root@cephL ~]# python get-pip.py
7 J7 `6 c$ c' Z9 v: _[root@cephL ~]# python -m pip install -U pip
o$ {/ g- W M[root@cephL ~]# pip install --upgrade setuptools6 P# I3 X D1 L& U6 N; m6 B
[root@cephL ~]# pip install ceph-deploy
' \* J0 N3 o% N9 ?8 @, Z$ `7 u[root@cephL ~]# ceph-deploy --version( s; F' s# j( e* \2 A+ Q
2.0.0. b2 x7 R9 {1 u2 Y5 v# @8 _
| ; c! n; U: W; X- A7 \: f
安装ceph软件包1# F' v& @1 e# z
24 j0 I; c* P! E% d& \* L: q" s/ k
| [root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy
* s9 [( M# t3 H; W5 }[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous. {0 T+ s8 }$ V
|
- C( T& q/ `) m ?# G开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring1' s/ z- z( f" K
| [root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24 --cluster-network 192.168.56.101/24 cephL1 o% _: ~" m+ G. m' \" R
| ! s+ p. ^, a+ _4 x2 D
部署MON1
2 i5 u; ]0 D$ U( H. v2 j/ s4 |2
1 l0 h- @- v* |1 c: k3
9 w) Q3 C6 g* l9 H | [root@cephL ceph-deploy]# ceph-deploy mon create-initial9 }' z; _2 B6 p! J& N7 K; V
[root@cephL ceph-deploy]# ceph-deploy mon create cephL
; A: ?# ]7 g! a; x2 |# yceph 1110 1 0 12:57 ? 00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph$ W6 J# D0 f' P+ R! c5 |
|
) [, m# |6 Y' T# M) _0 Q# m部署OSDbluestore方法 1" O, ^3 d7 W# \+ Y
2
0 ^5 E" _3 q/ i. [3
5 d: H2 O+ j" j7 K* O& Q4 W4
* j, x4 C' S' u0 m, f6 G, H' c/ u8 `56 j, k7 p0 _6 A l
| # 在创建osd时,L版默认是bluestore- U( L- Y) s3 O! n! k3 w
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL3 j E. T/ F C: \
ceph 1514 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph0 S4 A* t( P) M( _/ c
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL0 O, w& M: E. d, ]! K3 C
ceph 1518 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph \; n- P% U" {) E
|
$ F, Z( Z& F& b! U1 ^* _) `- A遇到问题 1+ E% l4 k v4 E& R% V) D
2
8 p3 v* G7 e6 F( A, U7 n' o3! w5 _! n4 J4 z- v9 }
4
5 S5 Q! p) r3 K( }% p5/ n" j' i h9 c* B+ M2 p1 h3 Z" L
6
1 {+ R6 C3 l$ r( o70 q' t8 K3 U: b4 ?, h- j" x
84 |8 [) `8 b. x% i0 Z) R
92 K. I# n- t6 h/ l: k
10* b- V3 l5 G' U
11
* c. M) h4 d0 e: L. z0 b12: a- q2 B0 N9 }3 K( y
13
, T: O2 f$ _. @ j4 V14
7 a8 n0 U$ o, e; h1 ?1 a, Y15" P! G2 V( _* k2 G4 R1 P2 A% a
16
# \- l- i& p9 \7 K! v, L. b( D178 Y3 Z Q$ n7 P$ z# D! h
183 }/ d4 d, L! ~+ W" h
19' {" J7 p4 B1 L4 H; r* k
20# @* h% @) A8 v9 b
21
% `: @) i& [$ P- c6 z3 }22" ], R4 e3 f! l$ q. l
23
7 n4 u4 k3 U O7 d7 A/ m4 z" P0 D2 y24) m: a! A! s4 u1 M
| [root@cephL ceph-deploy]# ceph -s& A6 {' m) U; B ]( E% r R* m
2018-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
1 l2 H/ n \$ Y0 p9 d2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
& I& U: z, Y8 G: N$ Z2 M$ K2018-04-10 12:00:19.660312 7fd1fe0ae700 0 librados: client.admin initialization error (2) No such file or directory \3 N( H4 H, C
[errno 2] error connecting to the cluster3 g9 R3 S9 X- J1 g
! J% P6 Q- K. D[root@cephL ceph-deploy]# chmod +r *
1 t" w8 T8 X( r: g2 c N[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/
8 Z, M0 X9 z3 k- [[root@cephL ceph-deploy]# ceph -s
5 K8 V% r' X. e1 s1 Z: A" r cluster:
2 a6 y' o1 N' p id: 765752b7-1f77-4d0d-bc18-936b8ad409fd' m0 C5 ~5 `7 v C" L# X- _* z
health: HEALTH_WARN
8 I+ A8 l# {- P9 b no active mgr; ^0 K( M; c1 J; h: \
( I* G0 v" j+ R' X& [, o( ^
services:
9 z& N' n% g+ [$ m0 d+ @ mon: 1 daemons, quorum cephL* Y/ l) |4 m5 V. C) y
mgr: no daemons active
: l6 S1 S& O6 e; N osd: 2 osds: 2 up, 2 in
1 x W4 Z4 a! z: o; s; y$ k
1 s% y5 q" g9 u8 M) _' R' ~& d data:
( t1 A) H' o: b( Z! z pools: 0 pools, 0 pgs' E5 M* w8 n; u6 n& ?! x) R3 n
objects: 0 objects, 0 bytes. A' Z' D4 i3 z: h
usage: 0 kB used, 0 kB / 0 kB avail- ^5 D2 r2 T S; l
pgs:) Z# |7 x/ k) W
|
K) M! U1 \/ p/ [% W3 }+ w. X4 g1 Yfilestore方法 11 h% l1 S! n$ v% G
2( o4 ^( M4 k2 @* D8 h3 d& j
3 ]/ V% f, x E! U" w# m; a0 A7 f! i
4/ J3 @3 I+ n }5 C. w6 z4 a4 R
5
: p; h& x* X1 o8 F0 E6
b+ J9 J0 g! j. G2 ]" G8 ~' q, ~$ c7
2 Q+ C# u. Z. y: `3 w) k8
: S" _- a0 l3 j5 T3 M l9
+ q! A o: r3 M/ O10
$ y' {4 g* j3 _. a; L6 w1 q11
' S( P+ u- Q/ ^8 e0 R$ c. f12
7 ~$ a; R. V# c) Z13
! z- S l" \9 e14! a1 h! x& U& C! H7 n
15
+ `3 |- [; N; f5 b- Q16& g0 Q/ L) C# u
17, M% U3 a6 V7 N5 j
18
4 r- R" C" g( }/ F19
- G* h0 w( T0 N" |7 G v20
7 [) [! c+ ~- S! F3 E210 R: U' J6 ?- g4 ?' ~, ~' \
22
; j' C/ ]9 t- Y2 w6 N23
: l+ ]; @3 l6 a6 E3 N$ C24
! f; R& M* Y, d- K) i$ H( C25
3 y2 v3 h, c; | @3 e5 p2 _26; D, T. L1 E; o4 K
27
$ h+ k- l' D- P9 i9 U28; c% h' R0 G' W0 U
29) L' |8 T0 ]; d
30' h$ |' `2 J/ E9 g5 J$ O
31
5 W( c& O0 M1 ], R# t; Q0 J Q/ H32
& r/ A8 G8 c& ^9 b( h3 Q2 k [6 i33
* M8 {$ [4 E0 I7 A6 L" y2 B D34. W6 p1 u% [8 }6 l. F
35
* [/ Z5 G) N2 w6 q0 ]: k7 m366 `" _4 H0 k% p3 p! X
37
# \: W) R6 s1 L7 i/ K38
$ p. h/ [6 n2 P; |" k39
1 s# y3 M$ m S2 D( x40
: l* c" u q, d( ?41
$ S( W* v* q. j3 g! A6 o5 U42
L: G' F) W2 ~! k. e. R' n43
* X1 q1 e; c3 j9 }& N- w; K) K. E7 {44
* r' E+ x( o- o: w# G5 ~4 f45
+ W+ W6 l+ ]- D; l+ `1 z46& r& D# s( J3 \
47
% T0 i3 D Z# Q) I! M0 @48/ J3 @0 j& G6 F% s+ p( L! G
494 m1 I8 D. ?3 N( d! y ~ k
50
5 }% P+ h* `( V* u) S2 G) @. ^% ^4 R51
- c/ q5 `( k! K! v& K7 K2 t- q52
4 ~3 M8 N' [$ [ e/ ?53
- ~! Z, B8 b' b' c54+ e! n& R* @. _. I1 C9 I! w
55: W& ^8 t2 e4 t. N& g% Z0 S
56
w" p& r. Y9 k9 C57
0 b) H& y) o2 j581 w4 I: I! K9 B: H+ `8 k* E
59; `& S6 o8 t& }9 I
60
0 S- A" F6 i+ P; i4 `61
# T* V3 G: g* v* y62
- d" M' z/ M2 g# E) q- _7 o63
9 N- v! f/ o, V8 g64
5 h- o* B# s; Z) k: Q0 M65
+ g7 l1 n! R0 m. {8 F$ p* G66" q' M4 f7 c" i; R
67
, [& @8 s2 r1 ]: c' F! w: r68
2 J- ?# v: ~7 \. X69
: x3 b8 z; P4 F% e- s f70
& f+ C S# n% a' I- |! X# J; ]71
$ @3 C! [. w* i6 F9 \72) F; j+ h5 f- s7 q+ O/ L
733 d$ X" f/ A; K6 ^7 P
740 G; ~2 W( y* A) |% x& h0 j6 P3 d
75
# a* G' o2 C! u* a$ g9 N0 `76
( `" E+ X, K, W. s$ o7 d77
+ A0 }) K) u, m2 R& J3 M78
( j% n- L/ q$ \- u) L, q79! f2 a: y4 |- o: Y9 G
80
& p9 o8 ] _) w. Z: k# D81
% {; w. i- u) U% y+ f+ N82* f: m$ D8 f* w2 X1 Z
830 ]8 V5 d, I1 l* `7 b" N' h
84$ k7 P8 S! l* w5 e5 f1 n
85- l! v, R) S/ c3 J$ f$ O p
86
+ O6 c/ {" t) _874 O5 o& h1 @, x* r% K
88
% x: K8 H* L& k0 O: _+ f0 v& s1 P895 s/ F* }" Y/ N ?
901 J9 \+ u- V" v
91( o3 `! W# t/ X( V, z8 H2 [
92% q. U8 H8 T0 I7 r* Z) U
93# I- Q& [1 l: l
94
9 I/ ^. s- U# @0 n95' v: Q. ~" ]) P# N+ e/ }
967 |3 c; V* O3 I
978 b5 k9 ]3 y' G' ~% ~$ w* y1 h, \
98
6 [3 A" R* a4 [- t ]% j5 k; P6 g996 f" b* K6 k8 y {# [
100! D" W+ E! ]2 V8 w
101
6 [6 @ A2 I x s1028 {5 V, o/ M1 g- i. \/ @/ C
1032 W/ y9 i: {1 E3 ~% }' P
104% O; Z B0 j& F
105& s& W U2 F4 E4 t
1067 L) F- h+ [# y8 N( I. b3 l4 m! S
107
0 c1 ^1 k5 p. b8 L8 b1 `. s* T108" ~$ S/ J8 ^7 r8 W) d \
109
( D& u/ c; s# F3 D110
2 P9 k) M# C% j' V2 l$ f111
8 o9 z. k8 K, Q$ P1 k112: Y9 C2 }0 `7 J; R9 n
1135 r- N# w' K" q
114# P" N, @. w5 T" b& D( @
115/ P* O/ Q/ P C. U/ [$ l
116
3 ]' l4 f# s5 F, J117
" [8 |: H& |# s+ G0 A118
" K. N+ W0 c- u. d7 ~119
" A6 S5 z% W) \120
8 m" {8 c" P; n3 `) ]) Y121
% A/ ~. }8 a# Y5 n122
, N% U; W0 U$ Z6 [5 u5 C/ f1235 a2 E8 s# s$ _$ f, \" H" ~
124
7 N7 ~1 | g" o9 N9 a( `! @9 g125
& o3 G, V" X! t6 n; t+ `! I1268 p5 t+ P; x6 J$ z. I
127
0 ?" I9 s/ J9 E/ A, ?6 s1285 x3 e5 x) [) [
129
: k+ m1 F0 X# o4 {130
1 B1 [0 n0 b1 d! a! N1314 n% G" F" ~) S/ b9 C% z
132. W( t$ a+ Y. ^* Q' _
133
1 B; u, M L5 X- i$ t& w! D" w6 u134
- H3 u' {$ N1 T5 c | # 如果是filestore则需要对data device和journal device先做GPT partition3 ~- }' ?! P0 m5 ^$ |; r, @% ~
--data DATA The OSD data logical volume (vg/lv) or absolute path to device5 \1 W- {1 S7 f4 d6 A6 M6 u; m
--journal JOURNAL Logical Volume (vg/lv) or path to GPT partition$ e$ k) Z6 V) T5 V
2 U& ~9 B) ^4 Q2 J[root@cephL ceph-deploy]# fdisk /dev/sdb
/ {+ ^2 [) x+ u2 x9 BWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
& N `) ~$ Q4 g* `. l2 \ a欢迎使用 fdisk (util-linux 2.23.2)。
$ f2 v" Z3 D- x) o( U更改将停留在内存中,直到您决定将更改写入磁盘。
' z) ]) Q6 j V使用写入命令前请三思。5 o {" d% F; Q8 Y6 P
命令(输入 m 获取帮助):g
7 G3 H# a9 W6 C% xBuilding a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)& b, N f6 }7 n
命令(输入 m 获取帮助):n
( q) w, d/ v3 p7 ~$ M3 f# k. A4 G {" u分区号 (1-128,默认 1):, W7 ^3 b9 E* v8 }
第一个扇区 (2048-62914526,默认 2048):
8 y- q" y* e8 R% uLast sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):! e9 X( v, s; g% ~
已创建分区 1
& O5 k; _) E& S" C# u; \& i4 G命令(输入 m 获取帮助):w K" p+ V9 N3 [# D5 D: R# ]. s' O
The partition table has been altered!% k! D6 M Z3 ?" t. h
Calling ioctl() to re-read partition table.
4 Y; m3 C) q3 B$ B正在同步磁盘。* l B3 {0 R$ s3 l; U* G3 X+ r
7 I6 s, W6 w! l[root@cephL ceph-deploy]# fdisk /dev/sdc
8 ^. F, ~' T" @) t8 ZWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
" D' b7 z0 k6 Q1 w9 I( ?7 c0 K欢迎使用 fdisk (util-linux 2.23.2)。
2 j7 Q) T+ d3 d/ C$ u- ?更改将停留在内存中,直到您决定将更改写入磁盘。3 m3 }4 @ D k4 ^
使用写入命令前请三思。
1 [) L& S9 |" a, I! Q* K命令(输入 m 获取帮助):g5 x7 \' x: T! _. I2 N
Building a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)
6 X& g% }0 e9 ~命令(输入 m 获取帮助):n4 @; O/ d8 }- y
分区号 (1-128,默认 1):
1 N. C) a! j! w; Q第一个扇区 (2048-62914526,默认 2048):
6 \" s, k6 Z( j4 B2 v( }( ~) `. JLast sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):
& d3 X6 k; G( j! s! O$ {已创建分区 1! z6 R7 ?) d- t9 u6 Z
命令(输入 m 获取帮助):w
4 K; Q, l8 N. s2 }The partition table has been altered!/ `# Y. m) N7 o( E* |
Calling ioctl() to re-read partition table.3 f/ X' ~+ l* z5 p5 V
正在同步磁盘。
. ]1 Z, S2 ]6 @6 B/ U9 _/ Z0 K/ R$ m! y( m3 @& `* T6 q5 n
[root@cephL ceph-deploy]# lsblk* i5 h* M) v6 r9 _9 [- f' }$ A
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT8 M3 M1 R# `( ~. F" o, p# z+ f$ s
sda 8:0 0 40G 0 disk 6 i! b, O: k w3 D! e0 H
├─sda1 8:1 0 1G 0 part /boot
9 d+ { L& ]( k0 R1 Z4 t└─sda2 8:2 0 39G 0 part 5 V7 z% u7 Q+ j/ G
├─centos-root 253:0 0 36G 0 lvm /& z6 l- y5 q& J, O( M9 c
└─centos-swap 253:1 0 3G 0 lvm [SWAP]. ], Q' c$ U$ h# Q' G
sdb 8:16 0 30G 0 disk
+ _1 G% X; K$ ^" }3 h) w2 r2 H7 K, L└─sdb1 8:17 0 30G 0 part
9 D! ~6 T; w; ?. Ysdc 8:32 0 30G 0 disk 0 r" u( p$ g" B( m% @- K& t Q
└─sdc1 8:33 0 30G 0 part
+ R9 f: y4 z/ x6 l3 ?, ^sr0 11:0 1 1024M 0 rom
( y" o8 b$ T2 }" n1 |7 B, v) S" L+ D3 }1 b
[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL
; o2 {2 d! }! L8 Q[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf* ~" M' N0 r% X& z8 ~
[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! m" H& w& x, J( i% s
[ceph_deploy.cli][INFO ] ceph-deploy options:
: o& ^$ v! B( f/ J) W/ G" X8 T3 |0 ?[ceph_deploy.cli][INFO ] verbose : False
Z( v$ b. s6 \; ^8 E( t1 M[ceph_deploy.cli][INFO ] bluestore : None/ F* D3 L" q+ Q# H3 M
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320># S9 D- K& P8 M" U1 D, x
[ceph_deploy.cli][INFO ] cluster : ceph3 P3 m2 W$ ~3 D' _# p2 i
[ceph_deploy.cli][INFO ] fs_type : xfs
7 `- Q' p( w5 N/ j; F4 G. v9 f[ceph_deploy.cli][INFO ] block_wal : None
' A# A$ J: G8 B$ i+ z- ~( m' M[ceph_deploy.cli][INFO ] default_release : False4 _$ i/ i9 r; |. z ?' F6 E
[ceph_deploy.cli][INFO ] username : None* ]& y3 S8 h0 H' R" J
[ceph_deploy.cli][INFO ] journal : /dev/sdc1/ @ `3 S* L1 ]5 n
[ceph_deploy.cli][INFO ] subcommand : create
1 _! u$ I' t! w2 B- t[ceph_deploy.cli][INFO ] host : cephL P. I! Q5 r& P$ J* q. L
[ceph_deploy.cli][INFO ] filestore : True
) w' K6 t! a2 ~/ ]7 B( x[ceph_deploy.cli][INFO ] func : <function osd at 0x225ae60>: v7 I" q" v: p. q
[ceph_deploy.cli][INFO ] ceph_conf : None
+ H/ [" \0 {% W& X& D4 c% \( `9 v[ceph_deploy.cli][INFO ] zap_disk : False9 L, U5 v3 d1 T4 K" r! a
[ceph_deploy.cli][INFO ] data : /dev/sdb1
5 S1 {$ F) B2 s- G4 Y[ceph_deploy.cli][INFO ] block_db : None
' ]% A/ `' m9 x Z: `4 f0 K& x( @[ceph_deploy.cli][INFO ] dmcrypt : False8 A4 F' s6 B& Q4 k+ q0 g
[ceph_deploy.cli][INFO ] overwrite_conf : False
# C, Q! b, ^* Y' l[ceph_deploy.cli][INFO ] dmcrypt_key_dir : /etc/ceph/dmcrypt-keys; i) r% j E. T$ q8 y! h
[ceph_deploy.cli][INFO ] quiet : False9 R" A4 M& f3 j0 n/ D D5 ?4 F
[ceph_deploy.cli][INFO ] debug : False
3 b/ B; [' w( p; q2 |, w% F[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb1+ L! d- K- j0 u5 J5 t
[cephL][DEBUG ] connected to host: cephL
" `/ G8 L0 x2 K$ X( y4 v$ u" c5 K7 h[cephL][DEBUG ] detect platform information from remote host) Z$ g P* n3 B
[cephL][DEBUG ] detect machine type
+ L5 m& h, e; [5 g! I[cephL][DEBUG ] find the location of an executable
" [* p: b2 @1 y7 z8 ^% i3 @[ceph_deploy.osd][INFO ] Distro info: CentOS Linux 7.4.1708 Core
0 q# i: T. g8 K9 n+ p6 D[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
7 m; U# v8 v; I[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
! x% v8 I, J- ^6 a U2 _[cephL][DEBUG ] find the location of an executable. @& f7 c" O. ^/ T0 d) l8 k( l+ I
[cephL][INFO ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1
! g2 J0 i# f1 N; l$ \* O2 {[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
% Z( F; t' p: |5 h0 n2 w# r- t[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
. h# V' p+ k. x+ {. B- R: U[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb1
. a1 Y- z# c) y8 h, c, m& {[cephL][DEBUG ] stdout: Physical volume "/dev/sdb1" successfully created.0 F) R! X! T5 P( k G
[cephL][DEBUG ] stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created
* R7 Y7 u9 ~& F0 \[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946! k% ]7 b8 y% Y- h* G
[cephL][DEBUG ] stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.- T0 A8 l/ L; j$ _9 G
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
6 `4 ]( v* w2 `* p2 ?. S[cephL][DEBUG ] Running command: mkfs -t xfs -f -i size=2048 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d311 d! }; Y( Z; n* D1 w' t
[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
3 H: R1 e& n. q9 M, a7 K% q5 U[cephL][DEBUG ] = sectsz=512 attr=2, projid32bit=1! d- j f, {2 d x8 D) s+ Z
[cephL][DEBUG ] = crc=1 finobt=0, sparse=0& Q5 I+ B7 r7 c7 B8 y3 C
[cephL][DEBUG ] data = bsize=4096 blocks=7863296, imaxpct=251 ?. T+ B0 d2 }8 @# ?
[cephL][DEBUG ] = sunit=0 swidth=0 blks* L8 h$ X* l. D* ~6 P9 T$ P
[cephL][DEBUG ] naming =version 2 bsize=4096 ascii-ci=0 ftype=1
: m, Q! _0 V0 O" ][cephL][DEBUG ] log =internal log bsize=4096 blocks=3839, version=2
$ m8 w0 D: L( p[cephL][DEBUG ] = sectsz=512 sunit=0 blks, lazy-count=1- d* ~' w; U6 ]& {4 e+ Z9 c+ g
[cephL][DEBUG ] realtime =none extsz=4096 blocks=0, rtextents=0
* R/ {4 M# o. V' w[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
) M3 @" U$ O0 ^+ O[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1* a, x/ x* k I3 @, A& M
[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
8 R: H+ N/ R! Q! M[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.monmap3 o4 M+ \& V( r f0 V1 i
[cephL][DEBUG ] stderr: got monmap epoch 1
, P. d( W6 E6 D. s' s9 n[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1; @* C5 j. \" l% v! j" `
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
2 S' Z- U+ q# O4 F5 I0 t; S[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
2 r- y1 }( N7 U, c- |2 j& H% E0 z[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
3 T1 e) E- R* E( [0 i[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic& I9 b' w, d6 [ |+ t5 o
[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic: k, F! R/ f/ Z( N. k1 m( E: M
[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory9 O2 x% I" z0 {, I: S
[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-7f7c8aa47121
5 U1 z; i. ~' Q( [( B" [7 O3 z% A9 l[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==
2 Z0 Y- Z$ ]0 o, D; ?" |0 W. ~! C" X[cephL][DEBUG ] stdout: creating /var/lib/ceph/osd/ceph-0/keyring
* Z0 a* W8 ?0 {; X* J C[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
* d, x! L" R/ V0 I2 z3 f5 U1 k[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
9 B2 S: T7 f( g[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1
8 r1 a" ? C0 h9 o[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
% d0 X( c7 ?/ B1 {[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1+ W9 I: G4 @, U" q
[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31
! o4 l) g3 B+ d+ k2 I[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.
: N) ~, N3 B- P. p( u7 U[cephL][DEBUG ] Running command: systemctl start ceph-osd@0
$ Z3 ?) M5 L2 {[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 03 p3 z+ Q& c1 w v& \
[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1* Q: h1 b# q/ u; E
[cephL][INFO ] checking OSD status...
$ d* Q5 |& T. Z* @( H/ p; y$ I[cephL][DEBUG ] find the location of an executable
9 [% ~- Y/ u( i+ g5 C2 A, O+ M) o# b[cephL][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
' `" P7 Y8 ?( O: T[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.1 P9 Y" k( H2 J+ z& [. ~
|
$ M& x) y; W0 r/ ^# g: ?) l$ H3 B移除OSD1
. F& E( S5 S& s21 M- n/ U9 {4 H* S# M4 C4 y
3. _# q- M7 o6 L% x
4
$ j8 Y8 t& l Z5. q, x; G, z: o$ I' n
65 U7 J- p* M/ F5 E' |& ?/ C$ H z
7
) R" e. e: ?* v, D3 L/ y80 ^! F H+ X( @$ g. @% e! }+ B
9" v( y2 M: V* |% A% L
10% g+ M/ n: E ~
11
' t- \# k! W0 T) l12' Q L% E1 N% Z9 u) b- Y- Q
| # 使OSD进入out状态
; S: b6 o+ @! c: d- n$ w' N[root@cephL ceph-deploy]# ceph osd out 0
* W& v. P' f# V* {, ^! smarked out osd.0.
$ w/ [, _; I# Y6 V' a1 i4 m# 观察数据迁移
9 U$ \, r3 F* u* u: U[root@cephL ceph-deploy]# ceph -w) Z& L' D! J( y% W$ Q, X3 K# H/ F
# 停止对应的OSD进程
) B2 n+ Q& A1 t Y" r% f. c' d3 q[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
8 p) M; g: o/ A4 g) @ W# 清除数据6 A3 }. v4 B, k3 Z) c
[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
}* l' j& z/ h6 ]/ N+ A& Jpurged osd.0
/ E5 f% F! c% c, P0 a! h# 在ceph.conf中移除osd配置
0 I4 E6 \- Z7 I[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf
3 v; O; ~+ f' l* |4 G- p |
, X b! E2 ]2 I5 B, o4 Z部署CEPH-MGR1
( D; x n7 Q" c W% Y- R" i2' @1 v$ K9 Z6 ]5 ^; F, r
3
% V) U6 p* _& J* B9 S0 R8 E$ G44 I: Y" D9 E$ s: w+ X" @9 e2 |
5
6 A' T- v! }3 o6 u, b1 a6
, [, }8 ~ j) n, p% {( Z7. D, r' o2 J4 w, c: O# P
8) a" S4 k, J7 [& i8 Z4 n* z. E' L+ ?
9
* p8 l$ U/ X, i3 i10
" f' K! b& c/ }' Q+ ?' H. Y9 F# U | install netstat tool' e! Q% e& |2 E: O6 R }
[root@cephL ~]# yum -y install net-tools( q' ]: ?$ d9 L+ i$ ^
3 ?, \0 s% a6 ]/ f! c[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR
, Q6 x; `3 |) }1 V2 R# ^1 e- T4 pceph 1111 1 0 12:57 ? 00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph) c; e4 T. T/ L9 z2 I$ b3 R
[root@cephL ceph-deploy]# ceph mgr module enable dashboard6 i9 D3 l# Y2 M$ |/ V4 f2 \- W! g- s
" E: Q8 d& T3 {- K
open 7000 port
: E1 x; w% Z$ S3 ^- f8 O* E[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
* a" `' N7 n; Y# E& p6 L" z7 N[root@cephL ceph-deploy]# sudo firewall-cmd --reload
+ w6 P# b/ |3 }& ` |
, K6 ~. L; Q- X. I9 r相关命令 19 `' u, k( Z4 Y* X4 U) V
2
& y# M2 @/ X4 ]" |+ L- @( D3 s3 o3
: q( a8 {1 w2 }3 D/ K8 r1 I | [root@cephL ceph-deploy]# ceph mgr module ls: T3 i, g& e- Z% `) \; k6 C
[root@cephL ceph-deploy]# ceph mgr services7 y, \7 N8 g) u9 c/ p# J) x; c
[root@cephL ceph-deploy]# ceph tell mgr help2 s/ K& x$ K5 `
|
: ], \: Y- R' G$ K0 [部署MDS并创建CEPH FS1$ _9 ~+ Q. y& _; P9 L0 b" s& {
2
: x$ _8 q- u) v8 A, A# L3 l8 D! G | [root@cephL ceph-deploy]# ceph-deploy mds create cephL" P2 G+ ?) A: t
ceph 2150 1 0 13:00 ? 00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph$ b' R7 A' S/ C5 R
| ' P5 y# l5 J u/ u/ M* j2 [
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。 配置这些pool时,可以考虑: 对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。 为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。 1
% M6 S! J2 I- C3 r; I9 s2
; I9 b- h# O/ I0 g3% u m# }6 O, _( [1 u
4
3 s/ q8 p0 I" C B5
+ J0 _4 P9 T' _3 b, s, N+ p | ceph osd pool create cephfs_data <pg_num>( _8 y/ S5 u0 R
ceph osd pool create cephfs_metadata <pg_num>" L6 \% C8 g: P8 o
例如:
$ n0 n, d5 b+ ~: b2 ~4 H0 ?1 \% b/ n[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32# a" X- Y! m: D# R1 |- Q
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32
( Q8 y8 f! n. |. i* F9 J: { |
9 A& s. m# I* m更改pool的副本数 1* |. \# C! q; u; f) b- Y5 B
2( L! v ^% f- F2 W9 K+ R5 u
3
3 u2 b. G9 T' s' l43 F" |' d1 d: x; }. w5 `
| ceph osd pool set {poolname} size {num-replicas}7 {5 C: D5 h0 T: Z# G
例如:
! l+ B( P4 y L2 ]8 `[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 16 H: E% o% a/ W: c2 i9 h
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1
# R* I8 }1 q" a1 _6 Y) Z7 A |
8 r. D/ C7 U. V: g/ W# e一旦创建了pool,就可以使用fs new命令启用文件系统: 15 v$ S; E! P1 R6 N* ?6 K) P: {
2
9 @* L E) [% F% B$ ], g3; I; w- \* V0 a7 d9 S
| ceph fs new <fs_name> <metadata> <data>' K/ K" k- A$ \3 O( o9 [) a8 j
例如: ~% {4 L7 b5 \) V F) e
ceph fs new cephFS cephfs_metadata cephfs_data
7 q( o. U4 X4 E9 _ F7 F% H0 r* C | - u& h! u" T5 F4 c) p" i0 s. B9 G
一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中: 1% V3 V3 {+ ~& u" }( c
24 I# m4 J+ E3 {' o8 m( c$ j9 e" U" V
| [root@cephL ceph-deploy]# ceph mds stat
1 l3 H. x2 |! g3 ]: s9 ]cephFS-1/1/1 up {0=cephL=up:active}( ~" }) O' T" s4 X y: A
|
0 `- u V, h u& a& B一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。 如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。 挂载CEPH FS ( File System ) 有两种方式: KERNEL DRIVER 要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如: 13 a, j( r+ N# ?* a+ L4 j
2
7 S5 `, x# }) c. f3+ B7 j% Z6 B- v0 @& [
4! ^0 B* n6 M# x. r
5
& M2 U4 C( L% d* j6. P. C! Z% S0 s) r( v: c- M
75 c/ ~5 c3 L5 l% \# i
| sudo mkdir /mnt/mycephfs
$ Q2 `9 W8 u3 [+ p. N+ [* A' \ isudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
2 T8 a4 s, `0 n+ k" ^例如:
+ \& y4 [6 X" ]3 Z, y( ?[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs# G- _& C6 M8 ?+ z3 P, U. U
mount error 22 = Invalid argument
. ^" z: \: L2 i/ {Ceph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。" N. N3 x; f+ C4 ^. h
如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。: B" p& O1 x% a# |- D
|
! A7 h K v. L+ ~- }( |6 F; H# Z如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。 11 u3 [1 A8 U1 z: e
| sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==" u/ W4 l; u& o5 {- w8 E" w
|
% c& H3 r1 ^4 O* c4 f上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如: 1
/ f; ~3 [, ?) I# U5 N" d3 _ | sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret" ^( j# ]1 H3 \8 i7 } m! x' c1 Y
| . v( l' c7 I, M' e! A
如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs 要卸载Ceph文件系统,可以使用umount命令。 例如: 1
$ k0 F0 M* m6 ^8 I- _2
: R2 \. ]/ ?9 O% t | sudo umount /mnt/mycephfs
# v3 z% ^! @' z% W提示:在执行此命令之前,请确保您不在挂载的目录中。
! c; a: |0 J/ r) M/ c | - t% _8 P# B; a0 v% I1 R+ t
FUSE 在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。 在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。 1
- }+ ?. b6 u! @* z9 ]! f2
/ p C" J6 ^8 `* z | sudo mkdir -p /etc/ceph$ I8 N6 [/ B& e5 ~7 g
sudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
. L* i# V6 I" i | 0 O, L/ b* Z+ w: l1 L& C
在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。 19 q! d, I, l3 c8 `$ a
| sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring2 r l+ V5 p9 m$ V
| 5 l' E6 g/ E; {8 t" o/ l0 K
确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。 要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如: 1
l2 o3 s% {' b( E% ?6 I2
5 P8 O/ G! j( v: B2 T; v | sudo mkdir /home/usernname/cephfs
3 N/ V5 `4 F( Ksudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs( @3 I$ L8 a% ?4 b1 y
|
, H+ }) w& j+ G# ~( C" \如果您拥有多个文件系统,请使用 –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! D8 \7 R) ~$ N* T9 G; A: x
| sudo systemctl start ceph-fuse@/mnt.service8 v+ U1 d" \9 _; W. ^
|
) u* r0 ~/ m* |. l持久化挂载点可通过以下方式进行设置: 1; B# { {0 h0 r! ?" m
| sudo systemctl enable ceph-fuse@/mnt.service
4 ~) ^% s( C) V+ _4 Y/ u* u6 Z2 b | 2 `* w- b! V# c3 O9 ]8 z. {
部署RGWCeph Object Gateway原来叫RADOS Gateway,它是构建在librados之上的对象存储接口,为应用程序提供了一个RESTful gateway,用户可以通过HTTP协议访问Ceph存储集群。 Ceph Object Storage支持两个接口: 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检索它。 1
% Z- l1 B3 I1 a$ b5 Y" Y | Note:Ceph Object Storage 不使用 Ceph Metadata Server
, Q; y8 m! Z, Y& m1 V5 P | # _4 T* H; E6 P0 v3 Z3 U
18 n* P' w6 x: {- D0 V
2* K+ s; l/ p: `8 }" l( S( Y1 ~
3
, u- s! p8 E' W% k0 \' Z4# K* C2 ~8 M" T9 T* v' K+ j
5
6 p r7 S4 o" q3 W: f4 e4 r/ t1 `6; t: r/ `. J3 e+ K. c M5 O& O% r
72 ]+ O+ y; |# M
8
+ p( {1 B$ P+ F' I* N9. U) R) D4 C5 ^5 [
102 q/ m3 M) E1 S% n! @# \
11
0 H' M- m0 Q% r2 z2 _! B9 n12
5 u% W; j H" L13
$ t% E* R% @. r0 i" @14# s: S9 D& V8 k P5 P1 Z" @' S
15& x4 x2 ^7 j7 `! p
16 q7 |( p* r8 k3 r o% j) n
17
# f7 T% k" n& R1 q4 b2 F1 z1 Y18
4 A/ ^5 Q3 [1 ~! D- I7 r" M195 b U4 a% _4 R+ R9 ^! N
202 g' q$ {% X0 H! ?6 D
21$ Q1 i0 ^( w v* b' t& k
22- H6 D. K; e+ q- Y4 Y
23
2 v( N" j1 F3 Z V5 D24
; T, L3 A" K, ]1 L- g6 p | # 必须部署MGR,才能部署RGW
2 ^% _2 p; w5 t# N: ~' K( l5 p" |+ A: K
[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW- N7 b7 Q' f( f( I# \* ~' U9 m
root 2799 1 0 13:13 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph
8 a8 I0 N" \; h3 T- ~. i: p* v) v6 ^1 q, c! M: I1 B
# 重启RGW9 G4 n$ j5 i w: N7 x( Z. Z
[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service
! `, X* ^4 K* I; x6 Y) F[root@cephL ~]# systemctl restart ceph-radosgw@rgw$ {& q0 w, n3 O8 t2 e/ h6 p. M6 ?
6 H+ y: v3 K# i- C' x# g3 E问题一,这难道是ceph-deploy 2.0.0的坑?$ F$ Z2 @) p$ |0 z
[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log" ^& @# ?8 X& I
2018-05-11 22:30:31.999421 7f537c31fe00 0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 3450
1 a: V) ] ^; E4 C2018-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* a1 m$ Q1 c" r2 [
2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
3 O" j0 l) i1 Y' P8 Q& N2018-05-11 22:30:32.021563 7f537c31fe00 0 librados: client.rgw initialization error (2) No such file or directory/ a: o: f' K* F& `$ T2 c
2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)
4 ?* ?" p% k* F2 v/ [0 J# i* Y' y
[root@cephL radosgw]# pwd7 @6 b/ ~% C+ |2 z% j; M( W: M
/var/lib/ceph/radosgw! t4 e* f& `2 r! W/ {( d7 @
[root@cephL radosgw]# ls- N; e" x$ h# k: s
ceph-rgw.RGW
' e4 x9 [6 w" M5 _& `[root@cephL radosgw]# mv ceph-rgw.RGW ceph-rgw
l C q$ s6 R6 P1 o' i4 [
) u' r! ?3 w. ~4 _* R, i
- M- d% d2 U; s, C- l | % H) P5 `5 ]# `$ K4 h: O4 m8 t
配置变动在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。 1; ~- |( Z4 O0 M* l) @% `5 C
22 L: U/ z1 ^8 D6 p
| # 允许删除pool,需要添加. X8 l; H) K0 ]2 s8 c$ ?
mon allow pool delete = true
9 U6 O; p7 @4 D3 X |
* P0 |' N) P/ j) B) o6 A |