|
ceph L版已经发布很久了,官方说默认使用BlueStore作为OSD的存储后端,在Cephalocon APAC 2018上也是讨论的焦点之一。 提到BlueStore,不得不说一说Ceph的STORAGE DEVICES。 STORAGE DEVICESCeph守护进程将数据存储在磁盘上: 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 BACKENDSOSD可以通过两种方式管理存储的数据。从Luminous 12.2.z发行版开始,新的默认(推荐)后端是 BlueStore。在Luminous之前,默认(也是唯一的选择)是 FileStore。 BLUESTOREBlueStore是专门用于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
FILESTOREFileStore是在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-deploy1
+ 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和keyring1
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部署MON1
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
部署OSDbluestore方法 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
移除OSD1; 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-MGR1
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 FS1
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部署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检索它。 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: _ |