找回密码
 注册
查看: 1418|回复: 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
# s/ L! w1 K: ~6 }3 z' D" z$ W; V2- s) M) l! i( z/ A) Y  L4 z7 H
3' s8 \! ]' z+ C. G9 f6 _
4. v! v! v, z% s  K$ Q) E- ]  {
5
; y( }# ^. ?6 p6 ]# u! K( I5 B6# \& b0 E8 a" Y# i
Ceph OSDs ( Object Storage Daemons )0 v  a0 w2 q9 n
    Client端的大多数数据写入Ceph后被存储的地方,一般而言,每个OSD都由单一存储设备支持,如传统硬盘(HDD)或固态硬盘(SSD)。
+ S! K; o7 ~6 X* C: Y    OSD还可以由多种设备组合,如存储数据的HDD和存储某些元数据的SSD(或SSD的分区)。, d$ D/ [4 G9 u: ]. J( Y% r0 `& K
    群集中OSD的数量通常取决于你要存储的数据量,还需要考虑每个存储设备的容量以及冗余级别和存储类型(replication或erasure coding)。
/ F( j- |, l) q, ?) h  b0 T# OCeph Monitor
% S- l5 p% Q. F3 g& `* [    管理关键群集状态,如cluster membership和authentication信息。对于较小的集群,需要几千兆字节(几个GB),然而对于较大的集群,monitor的数据库可以达到几十甚至几百千兆(几十个GB甚至几百个GB)。
# l% F8 u9 C2 H1 ~" F1 X

  B2 f; H$ D; A# |4 {+ POSD BACKENDS
OSD可以通过两种方式管理存储的数据。从Luminous 12.2.z发行版开始,新的默认(推荐)后端是 BlueStore。在Luminous之前,默认(也是唯一的选择)是 FileStore。
BLUESTORE
BlueStore是专门用于Ceph OSD管理磁盘上的数据的专用存储后端。在过去十年间,受到了FileStore管理OSD经验的启发.
% Q/ X. P  J1 i! j2 WBlueStore的主要功能包括:
1/ d( N& h, x* D8 k& @
2% V, X- k6 L. i4 u" w
37 o1 \$ x3 N' x% q0 m
4
" v$ D0 ?9 G1 ~3 x5
0 Z  v7 }: L9 U; P$ w( m6
6 W8 y8 D! {7 F& [7) O- e; r4 d$ T& I9 j  l2 w
8
4 x. `) K* Q1 {* f8 k9
6 M8 j" V! x0 x' `" R: V10
  Z+ s2 v/ S, r+ |  i11
7 f. p. |& T* z$ e, Y12
+ D. {6 k7 q' A: {: o* C' X13* c) f: C0 O6 b4 S
143 _" n2 x/ C. e& `
155 b# z% M; l8 E- m6 M0 B: p
16& D) T! g) e2 H
17$ c5 v$ V( i* ~- G! M4 ^4 h
18, M8 o& m( @9 }$ e0 G
19  k# {( [- T6 f& b, K
直接管理存储设备 ( Direct management of storage devices )
' W1 n% ]- n2 S    BlueStore使用原始块设备或分区。这避免了任何可能限制性能或增加复杂性的抽象层(如像XFS这样的本地文件系统)。7 j0 z0 K1 u. @) E, r
" h" D- A% B) q# H$ J" b
使用RocksDB进行元数据管理 ( Metadata management with RocksDB )
/ p1 ^8 \: c7 k    为了管理内部元数据,我们嵌入了RocksDB的key/value数据库。例如在磁盘上,从object names到block locations的映射。1 ]7 _8 f4 c$ \% M* F6 B) h

  y; d8 x  d& d1 O, [完整的数据和元数据校验 ( Full data and metadata checksumming )
+ _) V( y  V: v: m: A- N" l    默认情况下,写入BlueStore的所有数据和元数据都受到一个或多个校验和的保护。没有数据或元数据在未经过验证的情况下,就从磁盘读取或返回给用户。
+ T+ \6 ~: X) p" f" }; ?/ E5 Y9 R( R! M7 g
内置压缩 ( Inline compression )
7 G* @4 {0 _, k+ ^3 O    写入的数据在写入磁盘之前可以选择压缩。  g0 ?- @) G- |, O' f5 \

9 R+ S' F7 c, r多设备元数据分层 ( Multi-device metadata tiering )5 ~2 [; T) L3 y7 H
    BlueStore允许将其内部journal(预写日志,write-ahead log)写入单独的高速设备(如SSD,NVMe或NVDIMM)以提高性能。
' F! B8 ^0 Z$ E6 b4 c    如果有大量更快速的存储可用,则内部元数据也可以存储在更快的设备上。2 H# W2 O* q. i  S* I7 f/ r

" T3 ?/ Q- f3 ?' s; K高效的写时复制 ( Efficient copy-on-write ): [- h! h" z6 s
    RBD和CephFS快照依赖于copy-on-write clone机制,也在BlueStore中得到了有效的实现。这将为常规快照和erasure coded池提供高效的IO(依靠clone实现高效的two-phase commits)
; b, E3 a: J! I1 D/ H+ A
3 O' N" S* K3 v4 m7 W% j

# u9 _4 x3 b: L0 ^* i: ~. WFILESTORE
FileStore是在Ceph中存储objects的传统方法。它依赖于标准文件系统(通常是XFS)和某个元数据的key/value数据库(传统上是LevelDB,现在是RocksDB)结合使用。
: F+ E6 o, i% ^$ b- J4 b- oFileStore经过良好测试并广泛用于生产,但由于其整体设计和对传统文件系统存储object数据的依赖性,因此存在许多性能缺陷。
2 B" \. F4 c! J. ~7 ?尽管FileStore通常能够在大多数与POSIX兼容的文件系统(包括btrfs和ext4)上运行,但我们只建议使用XFS。7 w* c2 o0 D4 a- U
btrfs和ext4都有已知的bug和缺陷,使用它们可能会导致数据丢失。默认情况下,所有的Ceph提供的工具都将使用XFS。
在ceph L版代码结构改动比较大,增加了CEPH-MGR向外部监测和管理系统提供额外的监测接口,今天就用虚拟机搭建实验环境玩一玩。
环境信息
1$ Q# S7 h- s# q8 V* z: K7 n8 Q6 {
28 ^$ i+ P0 }7 R
3
/ b  Z3 \8 `: G' u5 E/ F( @4
" {# L3 r1 t) @  ?) J# ^4 S5. W2 H- t+ }! _  P6 W; e5 G
6
4 |- L  y* Q# d# ^7
$ {3 S& h* j- }4 Z- l% r6 Q1 l83 |) H1 V" i$ I' ^; K' v6 [
9# v: S! W' J" r9 ~; A. l
10
" Q4 m% R' j9 |11
" K; e: O  D' J12
$ }9 @* s: ^, O1 J" [+ ?* U" j13
) I" e; B: t; x2 P1 g0 u+ J0 B14
; k' ~' \! x( c& Z5 ]" `: ]2 B, i5 B159 H! C0 {" }) d4 U! |
16: x" V8 _$ Z6 B( V3 R3 z) B) r
17
* A- K- I# w/ b6 _18
. j) y8 a7 n8 H, P, Z
[root@cephL ~]# yum install -y redhat-lsb
( p, ]) @# \% O; M[root@cephL ~]# lsb_release -a! e3 z3 J- |8 k8 X& F, ?% Y) S! 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
7 `6 [5 ~* M$ |# M' R. ~. {Distributor ID:        CentOS! |- F! o, {* X, k
Description:        CentOS Linux release 7.4.1708 (Core)4 p6 F$ s- W- V9 _* _" R, A
Release:        7.4.17085 h2 n# P" S% ?1 F) t% N6 w
Codename:        Core
4 M3 H( Y- w& J  D- T! v9 C0 Y5 _8 G# N; \, H
[root@cephL ~]# lsblk
; `- F$ J* }* B7 hNAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT3 \" W% O) a+ `# S
sda               8:0    0   40G  0 disk% I- K2 w8 Y0 H( A
├─sda1            8:1    0    1G  0 part /boot
6 q* L) F, k; {9 M└─sda2            8:2    0   39G  0 part& V* v3 s6 \! Q
  ├─centos-root 253:0    0   36G  0 lvm  /0 G8 _. p: Q4 X8 q
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
+ o7 r+ ?5 W) {sdb               8:16   0   30G  0 disk2 d/ A; ~1 n0 H, L) b9 C& S
sdc               8:32   0   30G  0 disk
! I! t  n! S( v* `9 Hsr0              11:0    1 1024M  0 rom$ N8 \. s8 L0 r

1 g0 Y. j+ {9 I8 c+ r, }; d安装安装pip和ceph-deploy
1* J5 r9 Y: t! }: b" {0 b) L7 y' ~3 O
2
# f1 w# z* l% J/ Q/ x* N7 F3: H. v5 _9 G) r( s) h' a
4
6 d: {& K+ R; D; u& m5
  a) F) X4 K# i+ U* G6
2 t" w$ ^5 {! ~% z( m. L; ?7
" F8 y( P* `4 D0 w' Q
[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
" l+ y- ^; B# g% D0 o5 P/ s[root@cephL ~]# python get-pip.py
* Q7 d4 ]8 o2 Y[root@cephL ~]# python -m pip install -U pip
1 E! Z: v: N% ~2 n9 x! W0 \[root@cephL ~]# pip install --upgrade setuptools
. u9 k3 y+ y5 k( E8 X[root@cephL ~]# pip install ceph-deploy2 R% ]; S. h6 V4 @. Q( w
[root@cephL ~]# ceph-deploy --version/ F) I' f5 Y+ L  g8 b- Z
2.0.0
4 m4 C7 A$ R# D" D+ L6 j7 ^: E

3 w2 R9 [+ j5 [- c$ B安装ceph软件包
1
: X, U2 q' \: G8 ?. a! ]- [  y2
) y( a/ y0 a: A$ m0 t  s2 g
[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy8 V: S& I- S' W, o4 B5 M8 f
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous% H4 D* s: {& Y. q

. u4 A8 D) S6 [* T! g1 D开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring
1% q* W6 n& U# N4 l7 Z2 q7 X
[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24  --cluster-network 192.168.56.101/24 cephL+ w* f7 Q+ W; V4 ]8 `

' Y; Y8 z7 e  V9 M9 u; o; ?3 }部署MON
1
9 k; B1 n# B, ^2
; @; c6 b3 B" M/ K8 z, t3
. d# p# Q: f- X2 T
[root@cephL ceph-deploy]# ceph-deploy mon create-initial9 R: E* m  N. f/ d# P- ?/ Z
[root@cephL ceph-deploy]# ceph-deploy mon create cephL
& q5 c8 o  [( kceph        1110       1  0 12:57 ?        00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
$ E( q- U; x- \3 j$ U# s$ [% w5 j+ h

! B4 {1 b! \4 U) ]9 |部署OSD
bluestore方法
1& F. N0 j) h) E! [& C2 }, O2 D
2
+ B( J& \# |  s0 y9 `3/ A  J) v! Q" F8 Y0 q
4
" N4 @* v( `% \$ g+ k4 l# r$ A; S' o5
2 i1 H. S! n7 o# @
# 在创建osd时,L版默认是bluestore
" l3 j/ q7 [$ |2 z4 i[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL& F+ c& P0 `2 c: w# j' R" e
ceph        1514       1  0 12:57 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
2 y  ]$ _8 D0 @3 v2 M$ Y[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL& t! Z& T4 M+ }3 h5 `
ceph        1518       1  0 12:57 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
2 P  ]" j3 f7 e+ B
* K- }8 {/ _8 w! B/ d& \
遇到问题
1
. l  l* Y! x6 }26 g" b! S( }' P* \; U% A
3
$ H3 ]8 R- o4 q9 e: W( r- e4
1 r: j5 J3 i7 I- T2 J% V9 Z. Y  U5/ K; c* q5 x, i% _* p
6
! f0 N, T$ h2 v7 E5 V) R+ a3 a2 F7
0 a- m' i; |  e8
! L+ i) B0 i0 \9
, A0 O/ |& }5 c7 T10
. K. G' b: t; c: A* @11
4 a$ P0 i! E& r12
5 T. f. b+ C3 m/ S138 C% D  U+ d: M4 o
140 y8 h' t& o0 `2 {
15/ d+ v5 u: Z6 A5 h( J1 Q* _7 N7 S
16
1 q! y5 D. N% z0 Y) H, @17- E% F  |, n( K6 f/ y/ _4 k: P
18- V# |1 K7 l& r% W% C% M
199 }2 O* F1 ^, B1 e  m2 ?  e
20
0 G" @* G" U' w( ^21
4 A5 j0 _, a, Q7 J7 [% ^22
9 u5 m' B3 O  {  _23
6 W. N0 c% x" x* O4 F24
7 Q% |: m. B% _. f
[root@cephL ceph-deploy]# ceph -s
. |) n0 h/ o+ y, W1 i8 ^; `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
7 J4 N/ W( L" i1 |; J  P2 ^2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication7 d3 B* s1 y$ b
2018-04-10 12:00:19.660312 7fd1fe0ae700  0 librados: client.admin initialization error (2) No such file or directory
' E! h) A6 n) l" n& n[errno 2] error connecting to the cluster
2 F. S6 R7 Y7 z# S* [4 u
3 n8 y9 [/ t% M, F  p( j3 q) m7 c[root@cephL ceph-deploy]# chmod +r *  \2 D4 d$ R8 j, c3 g, T8 E) P
[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/# c: G# P/ O( `  d
[root@cephL ceph-deploy]# ceph -s
* e/ \$ Z- y0 B5 T  cluster:
& A+ l: M3 g+ J    id:     765752b7-1f77-4d0d-bc18-936b8ad409fd/ l: ]( V0 P8 U8 J$ J- o& l
    health: HEALTH_WARN
( ?/ ~" I2 P! U0 S$ w            no active mgr% w: a, _, f6 F  p% s( y

# S0 A0 g3 o4 {( h$ F3 L$ ]+ N  services:+ k8 D; y( R- _' I) ?. f
    mon: 1 daemons, quorum cephL/ A+ E& q" m$ O  T. R
    mgr: no daemons active' I  @  q& P$ ~
    osd: 2 osds: 2 up, 2 in; z! s, l* l; i
8 x. n, z0 v3 x8 \7 a- S7 Z
  data:, ?, w5 p6 R/ L: f4 _6 x
    pools:   0 pools, 0 pgs1 k) X7 T+ d. n, F3 [2 ?
    objects: 0 objects, 0 bytes
% [* `  m* s3 y8 ]    usage:   0 kB used, 0 kB / 0 kB avail: q  V6 T! _" J6 X
    pgs:
4 c: ~( z4 y; D9 z; X3 J/ C
4 h7 q0 a  m% ]* P7 [
filestore方法
1
! g5 X8 \5 \# D% w& O) v0 \  H4 |2
' c' A- b; y, Y* y& t& _! d3 R+ _33 B( T6 M" i* `; H$ W6 d& B8 e
4! o* E; e2 \1 Y- r* X. A
5
$ e( @# I  x6 J' G/ P% n, \6  V$ K% C: V3 d- _
7
- K+ B- [  s* r; p& g8
% y+ k  S% l% X& i! `5 r' [93 f0 K8 g8 \. [0 R" N! D6 {
10, \8 Y* t% W' D, S
114 z; `* _* l, v6 E# x. \9 ^6 `2 f
12# T3 e# W; g$ @6 R  G5 l; d
13+ N! ^1 E4 T* O( Q* q8 V
14
3 Q( V9 l9 c* ]4 _15
# N3 M1 s+ r4 f% I, j4 C% m( A, l16; R% B1 H% l9 Q* G  D
17
  D( W  W  ~' P$ l; _+ R* `18- V5 h2 g) x! @
19
% M9 h9 m9 i# W! I& d20
" N! W. L4 [: b4 E( N21- z3 r+ `* H4 ^5 `* z
22
& @* |5 a( x1 e# e6 W23+ C& R/ k1 A# H
24
9 l: \6 m' n6 q' ~% g  A25; w$ M6 `6 c/ G6 K# H
26
3 u/ C2 @) Y3 L8 F27- d, ?* ^: Y5 u
28) Z( [  z" _* i6 F) C* S
29
# h4 k1 t8 B  E7 O  \9 H) F3 d30
+ M9 O& C* X3 F# c+ W5 t" d31
- d6 b+ z5 \( j# }0 b( o32
+ v  W% v9 \: l4 p5 K" n33" D+ b( b3 L( H7 A+ Z
34" P$ g* v$ _; Q9 H
35* [) R5 {" H/ ^
36) ]; C3 \' O; Z
37% v0 h  L. {: ?. ~4 b) x" i1 w
38+ ?" k3 o- C$ ]. M
39" R& y9 V, j/ z4 G# h
40
" o/ X4 Z* X. D9 A$ V+ |4 x1 m41% d3 j9 n- A8 u
42( f. ?% @% @& l' W3 g
43, }% c! z7 Y. e1 D, P& I* ^' i, i
44
) U& E2 y- X8 ]8 J/ u7 h* T0 N# A45
3 C' y/ L6 h# g9 v0 G6 g46
/ i% R6 y( _: b: K/ k0 `( R1 p47+ Q! }, e3 h1 O& Q# ]9 w
48
& R# p- h+ C% J& |1 k3 W49
1 _! N4 T; }* {7 ^50
4 E% b! M! A# F/ }; y! t51
  J  L% Y& }( Q( ~0 w. G; z+ N1 O52
; `$ i* J+ q8 @53! D5 y- ]$ i1 |8 |- m/ P
54
& H# E5 w( ^  r0 G55
& T7 c0 p2 f+ S, P; y56
% d* f5 u/ }: h; ~' E2 K57
2 z8 W" c5 I) q* a6 S& l- Y! e58
  E; A9 f3 r" P1 {5 q" l2 k59
& l9 W# N7 T7 }' I& z60
; j6 U8 x) S! q9 ^( x61
* a8 q/ l  C: a1 _" Q. R627 ^* v4 ^. e* Q" W& l
63* h! e7 O' {# o  h% V% e/ c& z
644 o3 B! U" P* C& i1 ?6 v
65
2 T6 M7 C, Y5 b66
+ `* ^6 a6 R  w6 Y+ A670 h9 E6 s1 G. o& j: P, h* @$ i
68' m4 m" K' s* M& ]- k# w
69
8 u. d) C* H& v70
% {0 K  X$ h! J$ V- V; ~71
; n! W. C& I4 y/ X72
  m# T; s7 k4 N4 _5 a( V73
3 X' u+ @7 ^. k' N1 B) Z74
* ?6 Q! G0 n! J# {756 m" n8 ]$ S# H' \
76' L+ a( A- ]; i" {/ ^) H6 `6 B
772 R4 _) o0 G) f2 b3 U# K% x
78+ ?& j3 @2 ?; n- `
79) R4 O# |9 ?6 N& F1 e5 o
80
  ^- ^- Y) c( N81
& R, s+ F' o& g# j3 f82
" c3 Z5 B: \+ V3 s; R83
" O2 X) f* y# H$ Z5 P: g84
- h. y2 {; f2 D" n85. C  S/ O5 m9 J! g6 c
86
7 N. F, b. ?; @3 h0 p87' w( s% A  X$ x. U4 e& x
88. P) s$ q/ H+ N7 [$ Z( K3 a5 B8 b
89
9 d  b+ Z0 M8 s4 o0 F" d2 F: e90) Y' Z4 Y' a; ?. K
91$ k/ P4 [6 r0 q1 E9 A
92
* H/ f* v7 Z; d2 o93% L3 P2 }  K' G/ l2 N0 u
947 r1 B$ W( s4 g$ s
95+ o1 C) j. u; z$ o6 ~( Y9 I. c
96
( p% ?- S3 Z4 K( B2 R97
0 H  P! o4 U9 N, g; B% b( t4 S3 I98; R9 q4 s9 l3 l: F
99
. t1 }4 F4 B. I' |1002 ~* g7 I3 c+ l$ y" n+ u: ~( I
101
1 F: z$ f7 v3 ^, o" \8 ~. J102
( o1 [6 ^3 E3 j$ g6 p103" k- z+ T$ N" B1 N1 P5 R$ w: H
104$ n0 g/ l+ Z- R5 _* {4 f
105
; Y" k3 J6 n3 B0 i: J1065 n8 r! V( E9 ?( A4 M5 A
107. b$ j& p2 X: l0 J( I
108
( ^4 p) F! L% Q8 e109* L1 |/ E9 a/ ]# k. A
110
5 G( M3 r! K+ a" A/ o111
' [- }) M5 ?9 {* }' w" d9 k& d112
- X8 ^0 h# E1 I+ G$ @. \$ K& I' p1131 R4 m9 l7 B3 k/ N9 A
114
- w; a: F1 y: h; ^$ B  j7 A0 n115/ B* d6 v% ^7 ~
116: D! o: E0 r" ?8 P) D7 k
1170 E+ L1 {2 F; k$ v
118
5 I- G" _/ X7 s/ A; b) x1 E, c119
8 b0 ?# d5 X7 r, h* g1207 c, x" x0 l( v8 B0 A7 ]
121% N. L2 l2 M" y! W: }* r5 }
122
' a* t9 ^- b+ X& a123+ [+ {2 e" k. I. K6 o' Y
124
, \+ G$ _9 {% C+ E125
1 Y, |; o. O8 T$ o) I" W126. `) B6 T& {0 j. W: l/ J
127
# ]! b; n$ q& R' A. n" D2 s  M0 Q0 N128
. l$ X8 N* Q: i' J& W1298 ^* y1 F: P8 b/ C8 G
130
, Z% \) u9 L, q( e' ?  c131
: Y" c$ g' W+ g8 P. X! q+ l1322 a  L; `, R' E2 _
133
7 J1 d0 d5 N. U( q134
( n* Y. o' b9 Q1 {! {# r
# 如果是filestore则需要对data device和journal device先做GPT partition* M- {: m/ ~, q; ~8 X
--data DATA           The OSD data logical volume (vg/lv) or absolute path to device
) ?0 b- v+ X& M4 h+ }--journal JOURNAL     Logical Volume (vg/lv) or path to GPT partition
9 r' p1 p& S& n4 o8 i% x- k" Y. ^2 P, N
[root@cephL ceph-deploy]# fdisk /dev/sdb
5 l  b7 t- k! Z- _1 H  }WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
; I0 |5 j; }  C5 ~; {" y5 F/ t欢迎使用 fdisk (util-linux 2.23.2)。
+ T: v0 [! j; ~/ H. ^更改将停留在内存中,直到您决定将更改写入磁盘。
% B' \; N3 e, N* l% {9 _" G) R( X. ^使用写入命令前请三思。- v0 o! o; |/ \" h  _
命令(输入 m 获取帮助):g
* m! W8 `# \7 I3 m# yBuilding a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)( x1 ?2 ]4 B, Q7 \% o
命令(输入 m 获取帮助):n
$ P: e3 ?7 j) c( U1 b* p9 x分区号 (1-128,默认 1):
, C; H8 }/ Y$ f, Q; ?% K第一个扇区 (2048-62914526,默认 2048):" N+ q+ k3 ^2 F) \
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):
3 l& c! |: c& ~; G已创建分区 1
5 C: `  Q( C( I+ a' T1 L6 m4 A4 }4 q命令(输入 m 获取帮助):w
/ h1 C3 U+ }" R$ H% }' O2 QThe partition table has been altered!
2 P8 u/ W* M) ]; dCalling ioctl() to re-read partition table.
' c0 w( a4 `$ i5 d: D$ x% ?正在同步磁盘。5 B+ ], i7 F& e8 z, _$ b7 D
$ M% q5 S5 G# z. t. v
[root@cephL ceph-deploy]# fdisk /dev/sdc0 [. g% _; Q4 @7 W  `" B
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
: T- \: U4 w8 X( }: _6 J欢迎使用 fdisk (util-linux 2.23.2)。/ p. G+ F6 S0 _6 q6 c
更改将停留在内存中,直到您决定将更改写入磁盘。
5 l; H+ P( q7 ^, T# v6 ]使用写入命令前请三思。
+ x6 L3 a4 B! ?8 U7 C( Z7 Q7 b/ u, S  r命令(输入 m 获取帮助):g
. l! s0 @0 \4 D7 iBuilding a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)0 w. j: J* d- I# g; X0 T* S
命令(输入 m 获取帮助):n
& ]2 R. |7 i6 I, @) A分区号 (1-128,默认 1):! J7 ~2 P( x0 ~4 D+ G
第一个扇区 (2048-62914526,默认 2048):) T# \9 T% ?. M
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):+ t1 E; O5 b9 Q- e
已创建分区 1" S1 F* k3 P1 m* \7 W& o1 L
命令(输入 m 获取帮助):w
' y& Z* h. w2 P! L4 ^1 M& k9 pThe partition table has been altered!9 q8 y4 S, Q5 h# q. ?3 A" E; l$ N
Calling ioctl() to re-read partition table.
6 r( j. w3 [, j* k9 \, \正在同步磁盘。
. C$ y* U& [1 a7 H1 ]% x/ x  P  I8 k9 E( L& a8 Q8 \& V
[root@cephL ceph-deploy]# lsblk5 D$ Z. C7 Q2 o0 a4 Z2 t* o
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
( ^  K, A8 u" ~sda               8:0    0   40G  0 disk 0 w0 ?; d8 ]; a+ c% B
├─sda1            8:1    0    1G  0 part /boot
$ t& |1 Y; h1 G└─sda2            8:2    0   39G  0 part
0 y3 ^- u; y* ~( h  ├─centos-root 253:0    0   36G  0 lvm  /7 o' ~/ P6 e/ V. P
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]' N5 a2 T+ m* {# I
sdb               8:16   0   30G  0 disk
/ I6 U, ^# @0 H* V8 g└─sdb1            8:17   0   30G  0 part
6 g* u1 y! S; t8 c; Usdc               8:32   0   30G  0 disk ( m1 Z. A. i3 j( F9 V
└─sdc1            8:33   0   30G  0 part $ g% k3 S( }5 l8 s# A. O. ]! s' e. w+ X
sr0              11:0    1 1024M  0 rom  
) q# Q' u5 C5 E( t+ o
1 R6 A/ F! i5 E6 g# V; `# D[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL, F. G: W2 R# O
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf5 }+ d. Y7 T( ^4 c
[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" S8 J% i+ B( E
[ceph_deploy.cli][INFO  ] ceph-deploy options:6 W8 ^: b! O" H9 \! Z) I
[ceph_deploy.cli][INFO  ]  verbose                       : False8 g+ g* J4 v+ R  D5 Z7 R( _
[ceph_deploy.cli][INFO  ]  bluestore                     : None
7 i+ L- O$ @6 @+ y; @[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>
+ U1 y) x, U" H[ceph_deploy.cli][INFO  ]  cluster                       : ceph  v7 j% `9 d$ ~, q5 H
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
3 R9 ?, X+ o7 m7 X& R1 P[ceph_deploy.cli][INFO  ]  block_wal                     : None+ @; c4 h' R1 m( d- r; L- s" X% J7 r
[ceph_deploy.cli][INFO  ]  default_release               : False
( {1 e. @7 f6 B& P: o[ceph_deploy.cli][INFO  ]  username                      : None* h% B- ^; i( P. ~4 `
[ceph_deploy.cli][INFO  ]  journal                       : /dev/sdc1& K. m9 f# C; W6 i. X6 w, J; i% r
[ceph_deploy.cli][INFO  ]  subcommand                    : create
; D% R; T+ m# p6 F+ t) G. ^9 c[ceph_deploy.cli][INFO  ]  host                          : cephL
, H- r0 B  o& L; X/ d- ]3 B[ceph_deploy.cli][INFO  ]  filestore                     : True
: ^# g. W1 d; G6 @4 _  |& d[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x225ae60>
$ [, M. J0 T* V[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
1 d$ K4 U. H$ C: N[ceph_deploy.cli][INFO  ]  zap_disk                      : False" B  ~6 H$ m; F, {* C6 W& d
[ceph_deploy.cli][INFO  ]  data                          : /dev/sdb1
- n0 Q9 E0 P; H5 w[ceph_deploy.cli][INFO  ]  block_db                      : None
$ z( R6 n, Q8 P4 b" G, \; P  S[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
7 D% w9 M% b; Q' [[ceph_deploy.cli][INFO  ]  overwrite_conf                : False+ u# @2 F7 F( Z- e; ?6 `
[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
  A4 ?" s3 R- J0 @& V, {. w% o[ceph_deploy.cli][INFO  ]  quiet                         : False( R6 D7 R# k% E! d9 E
[ceph_deploy.cli][INFO  ]  debug                         : False
7 X& b  O' `9 [% _! j. e[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb16 j3 K. L" m5 g, [
[cephL][DEBUG ] connected to host: cephL
: @$ B* c- F; y+ Y- H8 J[cephL][DEBUG ] detect platform information from remote host5 p; g7 a# H& \6 k1 O+ e# x- v
[cephL][DEBUG ] detect machine type* s4 u, v/ Z  \3 q& o4 L
[cephL][DEBUG ] find the location of an executable
5 L% \5 [7 C& I0 |2 a' D* o! ~2 G- o[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.4.1708 Core3 T. c- L2 E% y. {: q# T4 K
[ceph_deploy.osd][DEBUG ] Deploying osd to cephL! S; g$ X( G7 W7 Z7 Y
[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
5 O# w2 e& Y& j% f& J[cephL][DEBUG ] find the location of an executable
. c* {# ?0 _4 @, h1 ~4 S2 H7 N[cephL][INFO  ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1: A' s# {( Y* C
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
" G  K# U* u* \5 v: Z8 {[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
; |+ O+ ~. }" J[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb17 |/ l7 u2 ?/ p9 N& l
[cephL][DEBUG ]  stdout: Physical volume "/dev/sdb1" successfully created.
4 L/ |+ `7 E: }) |2 Z/ U[cephL][DEBUG ]  stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created; L  N" G. d2 q" e% D, R
[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946) t; X" y0 e/ M
[cephL][DEBUG ]  stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.+ {4 L+ j6 N! g0 Z+ T4 o5 Y
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
) F% F6 I8 x/ v% c4 f# 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-132880a10d316 x( Z; C5 o7 z1 k" V
[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# M: E/ {$ [! F7 T3 F
[cephL][DEBUG ]          =                       sectsz=512   attr=2, projid32bit=1% h' ^: C, M8 Y( }. \3 L% v
[cephL][DEBUG ]          =                       crc=1        finobt=0, sparse=0
- ^/ _0 T% h% n[cephL][DEBUG ] data     =                       bsize=4096   blocks=7863296, imaxpct=25
, A3 r7 a1 x% H5 U  o7 g, Q- n; }! L[cephL][DEBUG ]          =                       sunit=0      swidth=0 blks/ z+ b5 N1 Y$ y
[cephL][DEBUG ] naming   =version 2              bsize=4096   ascii-ci=0 ftype=1, v5 X* J: P1 f
[cephL][DEBUG ] log      =internal log           bsize=4096   blocks=3839, version=2) H; Q3 M; s! O; u
[cephL][DEBUG ]          =                       sectsz=512   sunit=0 blks, lazy-count=1( D7 Q5 E5 }3 \" p! E$ _, q
[cephL][DEBUG ] realtime =none                   extsz=4096   blocks=0, rtextents=0
0 X, n% F8 i3 E[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-04 }- V$ D- g% \  r
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
0 }3 F, ~9 ?- I, ^/ n$ o[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
3 A1 J& b' n9 _- ~. K[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
  S; @7 L8 |: J1 g) c. x2 g[cephL][DEBUG ]  stderr: got monmap epoch 16 `8 ~6 R, [: G1 ^
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
/ A4 ]  t6 Z7 z+ ~4 N* C/ t. n[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/) p& \& g  U0 ]. w4 R& {
[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 ceph2 U; \% o1 b" ~0 o( b) y
[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- F: {. n1 i* |5 y
[cephL][DEBUG ]  stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic6 L& k  S* T  [9 e5 i
[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic4 z  Y# {1 ^- L) B
[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory( a! i" J& x! Z
[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
1 J- v6 u" [0 k! `[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==
" b1 [# I9 v' Q: l[cephL][DEBUG ]  stdout: creating /var/lib/ceph/osd/ceph-0/keyring- L. _& w+ Z7 m8 l) V+ i8 l
[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
" M1 r' \. R% I+ K) E$ w7 G3 b2 o/ I! P5 s[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
+ N# o! ^- Y0 E  `+ j[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1; N7 G, }" j+ C
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
' E% C. T% P1 O" X3 w! x9 [4 _[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
9 Y& t- Y( ^) |" E. q2 o& @[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31
7 S/ P7 H; s1 [2 z9 d9 n" ^[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.
* z  J6 |. D& A& |  @7 f[cephL][DEBUG ] Running command: systemctl start ceph-osd@0  }+ e4 z% I8 O
[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 0
/ R1 g% f- M+ D3 U; n& z& X[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb13 y- Q. T1 A$ D7 _' w
[cephL][INFO  ] checking OSD status...
2 i6 K/ D3 t/ |[cephL][DEBUG ] find the location of an executable
+ B: c# x6 W) U8 Y. p: _- r[cephL][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
0 z5 z+ ?  F( i* l[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.
" i& V/ c8 D; H! R% G" O( m
$ {- ~: i# g6 x; r* H/ g
移除OSD
17 e- [% Q* Y" x& ]& c
2" d1 q! r# E" }. V: t- c  C
3
% X: e5 Q! n5 m* V8 M+ a$ h4
" O, g; G3 w! e  D5; E; ^& _9 {3 P. l4 H: C/ d, w
61 D7 r8 `  S* M
7
1 R& |; j4 L) s5 }; a; t8
& d& i& b# q9 \# P: z9
0 _6 R# j: y: u! [$ d  c. q" K+ \10
" t* F' B, A3 M* V- y% x* I0 q11
" Z) F+ H1 O( ~12/ h6 l+ T- o$ x" ]4 j% K; ^! w
# 使OSD进入out状态+ c4 v3 u4 |+ J) u
[root@cephL ceph-deploy]# ceph osd out 0
  \6 ~1 `! T( q1 l, Hmarked out osd.0.* m4 g) ^3 P3 S) U# r
# 观察数据迁移- I/ n6 r7 ]3 C5 ~- i/ \+ x
[root@cephL ceph-deploy]# ceph -w" q' D% C% V) g% S: E& Z
# 停止对应的OSD进程5 \/ v& _! o. {) h- o* d2 T: i& s) j
[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
( G, K& r: o9 y8 ?( C2 z0 K1 m# 清除数据; U1 G2 g2 x' {. {6 L0 a* Y
[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
, x$ w( {' S; e* s7 y6 k: xpurged osd.0
- E$ v7 e6 b. L# 在ceph.conf中移除osd配置( F, n1 C+ }& W4 Y- F9 i
[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf
' n; {' `: m7 W1 E1 \
9 p" C/ Q6 O( W8 s$ c. V% v
部署CEPH-MGR
1& J5 }  X0 n" i0 n4 ?' i) X, p
2
* |" t5 b! |9 k! N9 ^, p& ^39 @" \; Z1 j5 e3 e
4
3 S8 t$ V3 K! F4 O5
  {2 B% \( U7 Z+ K( }8 z6' j# n7 F  v$ O
7
* M3 }' R: x' V: X. A, Y- X8
8 F) S* |7 a# b" `9  {5 o, V  D  i
10
7 q# N( Y: r7 ~! n
install netstat tool
. W/ ?, }8 U* e1 _3 X[root@cephL ~]# yum -y install net-tools; n( v2 }$ M) u2 J
/ ^, C- [( O; C! X' i4 o
[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR8 u; e" q/ \7 A  O7 ^5 ]! S
ceph        1111       1  0 12:57 ?        00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph# C5 e& e$ r) u8 g
[root@cephL ceph-deploy]# ceph mgr module enable dashboard" x" l; Y4 n+ Z5 B6 t/ J7 k9 ]- }
5 O8 z7 z6 F$ e1 F
open 7000 port# e4 F# m# W5 Y' E1 Q- Z+ D% F& S3 B
[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent% X0 F" o4 W) q: p' m1 u; c3 K
[root@cephL ceph-deploy]# sudo firewall-cmd --reload
' Y0 `+ k2 A% i# h
2 w! Q8 X$ g0 F+ t, O+ M& z. h  q9 _
相关命令
1+ b: f8 O, ?7 p4 ^# j* z/ V
2
2 x. s; n- C4 u& u3 a3
3 }% s" o5 q1 c: w4 j+ o8 N
[root@cephL ceph-deploy]# ceph mgr module ls
* f1 ^: O2 Z- U3 x[root@cephL ceph-deploy]# ceph mgr services( x* E3 P% f! y, z4 S4 D$ r
[root@cephL ceph-deploy]# ceph tell mgr help
* M; Z) V" k  N  S7 @

& w! ~5 P) ]; V0 @部署MDS并创建CEPH FS
17 `( d3 C- S5 `: J
25 i( r! A, F2 S6 o
[root@cephL ceph-deploy]# ceph-deploy mds create cephL
  f3 o9 W/ A' @+ A" x6 }ceph        2150       1  0 13:00 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
3 s. [3 k+ W; B( M/ E2 v

7 U# l0 S' k1 c1 f5 _8 p
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。
配置这些pool时,可以考虑:
​ 对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。
​ 为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。
1; [( X( j$ ?& X
29 t# s; L/ ^, J, ?+ C
3
% g$ D+ G$ k$ E3 j; \4/ U3 m; l/ [: T* l9 U& n2 q
5, Y: _8 u/ q$ s  l
ceph osd pool create cephfs_data <pg_num>, X( p, n; k8 i3 Q
ceph osd pool create cephfs_metadata <pg_num>+ ~$ P7 |: m9 |; x6 b# G
例如:
" Y) ^+ _: v5 D[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32/ L! R, E, R9 I/ m6 ~% w8 l
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 325 J$ f6 D6 b) ~
8 {- \& \* `3 N- `# p$ @
更改pool的副本数
1
; j" K$ s, W! C" ~- @2: i; d! _* ~' _& D
3
" J  [- a/ z- C4 Q& s$ R6 l, D0 f4
& U, M: _1 [# k' m$ M5 w
ceph osd pool set {poolname} size {num-replicas}
3 g% e- {- w1 F4 R! ~! M4 c例如:
8 u# w5 \/ E$ d2 a$ ~[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1- Q0 n; d( \- c3 j; t0 s( @
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1' |% t* R7 `, y1 q) [& K
% `! p% K* j5 I/ Z
一旦创建了pool,就可以使用fs new命令启用文件系统:
19 N, B1 _% t8 f5 i/ H! R
2! V4 w- [6 E' r0 l: N( o. O
39 L0 v6 r3 D% `, K) B3 A
ceph fs new <fs_name> <metadata> <data>+ G: p, i+ [& t0 x1 d; @
例如:" |( q9 R. l6 q. w1 H! e$ x$ Z5 r
ceph fs new cephFS cephfs_metadata cephfs_data) W: J4 ?0 t9 k; v

! K3 C8 N  I7 S4 I
一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中:
1- F! e  J& P# ~! f) ]" y
29 O2 v8 C# R9 e4 U3 ~
[root@cephL ceph-deploy]# ceph mds stat
( m3 a9 A  e! B9 O' K, CcephFS-1/1/1 up  {0=cephL=up:active}& `' w; l; \* Q! ]5 [

0 \% f2 b' c9 C/ \. n6 {
一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。
如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。
挂载CEPH FS ( File System ) 有两种方式:
KERNEL DRIVER
要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如:
1
9 ^. h, {0 @  N! e2
  d# H6 M& `0 U! j& ^3
4 J9 x' `6 e+ b7 x6 q4
( l6 ~! V, ~' t8 h53 k& b, D* j( w9 X
6: u. h& K( Y, Y( [& _3 G
79 I0 }, N% M  J3 T1 E: J3 J* U% l
sudo mkdir /mnt/mycephfs
+ k! B7 b2 s1 qsudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
- o+ O8 \( {, N/ P) X# \' C例如:
3 y# w5 T$ c% N; ^( Q, P# D4 M[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs, m1 y( p3 |. a
mount error 22 = Invalid argument8 k; e8 p  a  t2 ^8 u4 n
Ceph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。
4 v# E8 }) M3 T4 c! C$ K, Y如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。+ v& @8 n/ N, f! E- \" b" `
3 j/ |8 V4 w+ M) y9 b5 C4 R) P
如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。
1
* y" ?$ [4 Q' m7 p: B0 ^! v$ f
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==) G5 T0 h, T6 j- f* n. k) ~0 O
" P5 U3 E9 Q6 ?2 D1 C1 G
上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如:
1
) t( _) q% W* {- W/ o
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret" g/ O9 w! s0 N; V% [# [
+ s& F0 |( n/ z, Q+ R& `8 l
如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs
要卸载Ceph文件系统,可以使用umount命令。 例如:
1! f. D8 \, b4 E
2
# `5 J1 u: `$ c' [( z2 k9 R6 c
sudo umount /mnt/mycephfs) J: d; M0 c: W, b# W
提示:在执行此命令之前,请确保您不在挂载的目录中。! e- m( G' Q: `0 A7 |( d9 {
  H1 p  q7 _4 Z) A5 d
FUSE
在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。
在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。
1! U; P4 Z% s7 J" h% q
2- }7 {/ z& S3 ]4 f- g6 |( ^9 a- r* f
sudo mkdir -p /etc/ceph- }9 O7 L( e) o$ D# T) i" v
sudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf& h4 ?6 j& w6 t5 o

1 J+ b3 ^# A: H- @/ _& v8 M
在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。
1/ ~* Y) p% Q/ N- e" ~/ g
sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring8 C/ x  \! M. b+ w

5 a5 P6 O7 P3 c  j
确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。
要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如:
1
7 g! {8 S6 x" A* b2
& t+ `" _2 K; I. x
sudo mkdir /home/usernname/cephfs
3 i1 H- j/ ^; n/ F) H7 @! isudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs: N! I! @" L3 P/ }

) x  K) O) m. W/ `8 y1 J+ ]
如果您拥有多个文件系统,请使用 –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& @7 X- _+ ]2 T
sudo systemctl start ceph-fuse@/mnt.service" |# x+ V1 ^" v$ U5 v% ~

2 [9 Q- F+ j3 C& p3 r; b  |! V
持久化挂载点可通过以下方式进行设置:
1
: a% ^$ y6 L9 n: k) I
sudo systemctl enable ceph-fuse@/mnt.service
* S" n3 ~1 b& ?; c3 U
- _+ Z! n, u. @, F; W" ~  |! @% ?
部署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中一些子集兼容的接口,提供对象存储功能。

    ; _, V* L* v0 V; I6 C/ u
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
. I% z8 v0 h0 n
Note:Ceph Object Storage 不使用 Ceph Metadata Server8 m" ^$ O% p, ~2 ?% w) [
) b5 z& G1 X. A7 h
1) n0 z  G8 V2 M% \9 x: A4 b: W
2
) P4 E) i, m4 |5 o: c3
, Z; J; I* o1 U; s8 \4
, n) r( \: c5 l5$ L' Y, |0 B3 c" E
6' H0 q  ]* N& o. ~& x* Y
7
% ~! p3 P' e% N6 A  p( w82 y# \( l9 ~) i5 d/ a
9( o) U9 ~6 y6 |  D& @
10
' n  l+ {$ M# e% m4 j, g( k4 c+ ^11
$ z. T% m7 t2 d* |4 s5 e12. O' o* S( U( l6 l# s; \& W8 k
13
3 _) p% h1 J1 ^' x* j6 B7 V14# Z1 L$ J* t- ^% Q1 E+ d
15
/ {( y1 y+ \! K+ M' }9 B  g1 J! K16' E: j9 i2 s9 ?0 p$ w  f
17  j3 p$ [2 Q* D' y! ^" R5 {1 Q; K8 k
18
0 v  d" e1 K' d" [1 R! M191 P8 P4 R+ {7 [* ]# v8 ~
201 J6 u/ \7 H7 b, D) c5 L7 U
213 z- P  A: r9 [
22
# s( V" V) a" W; F  r* T  V9 D235 d; I: y0 E) c' e+ f
24
9 h% q1 _2 _# `2 I# j% i
# 必须部署MGR,才能部署RGW
3 O8 [% K; ]- @$ E6 ]+ W% i% _
5 N+ h$ V# t2 F! n+ k[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW
6 ^+ _0 t8 Q7 Yroot        2799       1  0 13:13 ?        00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph1 T; Z) i4 F; m% a
; w: i* s* o3 c8 j4 L
# 重启RGW
- n9 ~0 B" ]! ~2 |! Z[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service0 z( Z! [; L: ?/ N0 H* E$ J5 D3 Q7 s
[root@cephL ~]# systemctl restart ceph-radosgw@rgw2 F9 ^. T4 M' z) P

" B8 o0 v' c& ~" {1 S7 Q2 W问题一,这难道是ceph-deploy 2.0.0的坑?: M  w7 s  ~2 b! \/ H* `- M; X; H
[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log
) `- b0 v+ ^8 e+ V3 u( P5 C, K' T4 j2018-05-11 22:30:31.999421 7f537c31fe00  0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 3450
) k6 M( Y2 h: R( A- J( b7 c& J2018-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# c$ Z7 Z0 T, I0 C
2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication, S1 b* {9 r6 k9 }
2018-05-11 22:30:32.021563 7f537c31fe00  0 librados: client.rgw initialization error (2) No such file or directory
% m: c$ g. [$ i8 y2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)2 A* D9 S6 r5 a0 z$ B0 a/ W/ b
# E7 v1 Y6 Z; D' m, @! K+ n
[root@cephL radosgw]# pwd
* k1 N  ?# ~& ^/ ?/var/lib/ceph/radosgw- ~6 b) N; X! l0 H/ r9 Y' \2 u7 e
[root@cephL radosgw]# ls. C8 k) l: g# h# M- s
ceph-rgw.RGW+ K, n! y' i$ c6 p
[root@cephL radosgw]# mv ceph-rgw.RGW  ceph-rgw
! t) |9 R# Y( n# {& e, f
! ~% ]9 H# _, k1 }1 d& ~! K
4 l* s" W& K4 y' T3 D1 h- P0 A
! h4 P! c7 x, u
配置变动
在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。
1
& g$ I+ x2 |/ ]3 m8 |" p  _2
" h* i- j2 g# C0 b9 ^( S
# 允许删除pool,需要添加: O7 u7 o; n& ^, x6 D
mon allow pool delete = true4 a/ u! ~* M" D4 t5 S( K
7 k  ]+ p- m, [$ U5 `9 c

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-8 15:42:50 | 显示全部楼层
实践步骤0 G$ }$ \" K7 k
获取代码并安装& n+ g5 \: }, B% f* G
git clone https://github.com/ceph/ceph.git1 R9 t* T& |: S- \( N
cd ceph
) g# z( J- d: _# ]git submodule update --init --recursive6 B  q1 ~3 e8 u
./make-dist
0 U+ k* \6 T" F6 x" d" `rpm -bb ceph.spec
% T$ I5 x5 v2 d$ V3 E4 f5 `0 i生成rpm安装包后进行安装,这个过程就不讲太多,根据各种文档安装上最新的版本即可,这个代码合进去时间并不久,大概是上个月才合进去的
- K- ^9 d. ^; V) z5 Z6 i& ?! W
配置集群
, J# f  V1 F; {" H首先配置一个filestore的集群,这个也是很简单的,我的环境配置一个单主机三个OSD的集群

$ k3 R: }. W) Y' d[root@lab8106 ceph]# ceph -s$ `/ v: c- W$ E8 p3 h
    cluster 3daaf51a-eeba-43a6-9f58-c26c5796f9281 {, t( w7 q. t8 V
     health HEALTH_WARN- B5 V6 T0 I7 m$ R) I, P' q
            mon.lab8106 low disk space7 ~6 K* X& J  I; K8 {
     monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0}4 H9 x8 X" J3 F1 V
            election epoch 4, quorum 0 lab8106% u$ K; q$ b$ d# N- k) k; M$ Z8 l
        mgr active: lab8106
5 A  R6 S1 u) s, R     osdmap e16: 3 osds: 3 up, 3 in
" B* L8 ?) ~1 i      pgmap v34: 64 pgs, 1 pools, 0 bytes data, 0 objects
; S8 E4 X3 L" Z3 k8 W8 U' [            323 MB used, 822 GB / 822 GB avail
9 H7 I& i: S% n( H4 f+ [! N1 J                  64 active+clean4 X  e2 m1 |1 x
[root@lab8106 ceph]# ceph osd tree
; }2 i! R1 _- AID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY 9 G" y1 ~; j/ D( H$ X1 H* K
-1 0.80338 root default                                       
' g5 ]8 h, O% p2 C+ J-2 0.80338     host lab8106                                   
! Y0 Y, I' F" K; J9 q 0 0.26779         osd.0         up  1.00000          1.00000
* A7 G) c. _5 l) Q/ F3 u2 r7 e 1 0.26779         osd.1         up  1.00000          1.00000 4 t! Y4 g$ o, e; _
2 0.26779         osd.2         up  1.00000          1.00000  D" J7 U; i% a+ K
写入少量数据- f3 [0 P$ e8 Y" t0 Y+ k5 o
[root@lab8106 ~]# rados -p rbd bench 10 write --no-cleanup
6 f+ j# t) I6 P% D) h' Z4 s" H0 }# U设置noout
1 h4 ?' I. I* s% }8 f[root@lab8106 ~]# ceph osd set noout
6 v, Z- L, {- U' X4 b7 A$ r. fnoout is set! e- Z  ^/ \# ^" {0 h. x
停止OSD.0
2 j! o1 _& M  Q$ ^8 W6 e[root@lab8106 ~]# systemctl stop ceph-osd@0
7 |" S, j( e; b: v/ U[root@lab8106 ~]# ceph osd down 0
' c3 J7 Z3 r2 ]: C1 Oosd.0 is already down.1 b% N+ J# Q$ |) I
将数据换个目录挂载,换个新盘挂载到原路径
" b: S# @9 S* {, G# x  u( `  j4 \
[root@lab8106 ~]# mkdir /var/lib/ceph/osd/ceph-0.old/
! H$ T5 i; o2 Z) s7 d* U6 D/ U8 d[root@lab8106 ~]# umount /var/lib/ceph/osd/ceph-0
2 S: T1 G( f$ S, e[root@lab8106 ~]# mount /dev/sdb1 /var/lib/ceph/osd/ceph-0.old/
4 h8 k) k6 P% `$ i& ][root@lab8106 ~]# mount /dev/sde1 /var/lib/ceph/osd/ceph-0/

5 o* w3 O) |1 w! u( N/ \/ V[root@lab8106 ~]# df -h|grep osd6 D9 q  Z; b. a! W! J2 n
/dev/sdc1       275G  833M  274G   1% /var/lib/ceph/osd/ceph-1  m( Z) S" n# [, e2 A+ a- P( U* S
/dev/sdd1       275G  833M  274G   1% /var/lib/ceph/osd/ceph-21 \6 f, ~$ Z/ V  E" u  S
/dev/sdb1       275G  759M  274G   1% /var/lib/ceph/osd/ceph-0.old
" f/ l. R3 y1 k) f5 o/ N/dev/sde1       280G   33M  280G   1% /var/lib/ceph/osd/ceph-0# t- k# Y8 G, i# J7 @
在配置文件/etc/ceph/ceph.conf中添加

0 }. e0 q; R$ W) B; {9 S) C% }enable_experimental_unrecoverable_data_corrupting_features = bluestore
9 h- K$ b$ s" Q# ?5 S$ o如果需要指定osd的block的路径需要写配置文件

2 K% W) m, I  c1 q! Q* I7 B在做 ceph-objectstore-tool --type bluestore --data-path --op mkfs 这个操作之前,在配置文件的全局里面添加上% ]) o# P7 K  A, \8 P7 o
bluestore_block_path = /dev/sde2* f* @0 g) E9 D& j% {$ v+ Z( a
然后再创建的时候就可以是链接到设备了,这个地方写全局变量,然后创建完了后就删除掉这项配置文件,写单独的配置文件的时候发现没读取成功,生成后应该是这样的
" w9 B( n( U* P3 w2 S: Y: [[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0
4 Y" i( o+ k2 f% jtotal 206 f) H$ I1 \6 \: m6 ^. m
lrwxrwxrwx 1 root root  9 May  3 17:40 block -> /dev/sde2
; u) c  C' ]5 @3 C' j3 |-rw-r--r-- 1 root root  2 May  3 17:40 bluefs! `3 {1 ]1 t. s: p+ A: g
-rw-r--r-- 1 root root 37 May  3 17:40 fsid& s- R* u: ~1 x' H. J
-rw-r--r-- 1 root root  8 May  3 17:40 kv_backend8 q* y+ d, H0 X7 o  V4 S+ s
-rw-r--r-- 1 root root  4 May  3 17:40 mkfs_done' A( M5 K4 X6 y0 p5 w2 _, {
-rw-r--r-- 1 root root 10 May  3 17:40 type; i6 [) N$ s0 `
如果不增加这个就是以文件形式的存在
. d" O' z; t! [! Y( x  t$ S
获取osd.0的fsid- C( V7 G- _% ^
[root@lab8106 ~]# cat /var/lib/ceph/osd/ceph-0.old/fsid $ L% w2 f; K3 O
b2f73450-5c4a-45fb-9c24-8218a5803434! g  K! N% x7 \) \+ f7 A
创建一个bluestore的osd.0* T2 x# K( k+ N. w7 }  n
[root@lab8106 ~]# ceph-objectstore-tool --type bluestore --data-path /var/lib/ceph/osd/ceph-0 --fsid b2f73450-5c4a-45fb-9c24-8218a5803434 --op mkfs
. m1 w8 f, E8 j6 \3 q转移数据: f% q3 d. U, P* }. Q0 E7 ^
[root@lab8106 ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0.old --target-data-path /var/lib/ceph/osd/ceph-0 --op dup, g  V: E& N  I0 Q
[root@lab8106 ~]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-06 M5 ?9 Y% H: w' H+ s
这个操作是将之前的filestore的数据转移到新的bluestore上了
: z2 n! F& |  @3 ~8 i/ W; ~; F
启动OSD.07 n. x' k! U% u: o7 J
[root@lab8106 osd]# systemctl restart ceph-osd@0
4 e7 Y& v! X* l# x# C. a4 W  W检查状态

( V, e5 q* y1 H% z8 e6 [/ y$ h[root@lab8106 osd]# ceph -s
0 K" a* K# P9 C' Z4 L9 A% a2017-05-03 17:05:13.119492 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore# z- Y0 x2 b* w, ]6 D6 |0 v
2017-05-03 17:05:13.150181 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore0 [! G/ Q3 `6 f: n- J2 z: }0 O- U3 E, H
    cluster 3daaf51a-eeba-43a6-9f58-c26c5796f928
- t; R) _! y2 ~1 k3 P2 U     health HEALTH_WARN
) y) ]& o2 [$ m& t            noout flag(s) set
* K% d# `  g3 Q0 H  |' X3 c1 @            mon.lab8106 low disk space
0 M+ V( ]4 q) I4 ]7 C     monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0}
* e! X  _  b, d0 k; |            election epoch 4, quorum 0 lab8106
! H' t+ y# j5 @4 ~9 A5 w        mgr active: lab8106
0 Q( L& p+ J% w( J. J     osdmap e25: 3 osds: 3 up, 3 in& u0 W% Q$ N3 I2 L; L& i  _4 O
            flags noout
7 K. Q& T& o, g, |8 W      pgmap v80: 64 pgs, 1 pools, 724 MB data, 182 objects
, M4 v& G1 `& Z7 g* F$ j2 W            3431 MB used, 555 GB / 558 GB avail
. ]6 y% |: V( N7 B/ o1 p                  64 active+clean
7 k- }% T0 r) C( r" G& _! W3 u成功转移

2 l2 q& T& K* U9 [- N" L不同的block方式
# ~8 l9 g1 g5 e: i7 F: n' }[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0/ -al|grep block0 h: v5 ^4 `+ H9 p7 K! {5 G4 ^
-rw-r--r--  1 ceph ceph 10737418240 May  3 17:32 block
$ O* c1 U  S* x- Y" F[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-4/ -al|grep block  k: {) z1 l/ x
lrwxrwxrwx  1 ceph ceph  58 May  3 17:16 block -> /dev/disk/by-partuuid/846e93a2-0f6d-47d4-8a90-85ab3cf4ec4e
* l7 m  g3 z5 x9 c& [3 K) z-rw-r--r--  1 ceph ceph  37 May  3 17:16 block_uuid# n, t) F/ L% R0 s; Y. a5 ~" {
可以看到直接创建的时候的block是以链接的方式链接到一个分区的,而不改配置文件的转移的方式里面是一个文件的形式,根据需要进行选择

. D/ w1 D: f8 ]总结
& o8 A  M% M' A# S4 [8 B7 ]3 r转移 工具 的出现方便了以后从filestore到bluestore的转移,可以采取一个个osd的转移方式将整个集群进行转移,而免去了剔除osd,再添加的方式,减少了迁移量,可以一个个的离线进行操作
: O4 p+ ]4 C, I" Y  e% e# u, D
ceph的工具集越来越完整了( G2 ^* O/ g) I* S/ D) `
# h) L' }1 U5 K6 u
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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