|
|
安装pip和ceph-deploy
8 s, K/ [ [+ R9 i, A8 X/ I9 i[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"* g t! i3 o* [. A! H O
[root@cephL ~]# python get-pip.py
5 S$ f9 \; ~( T; i8 O[root@cephL ~]# python -m pip install -U pip& b' d3 c& b, t' P6 y+ S. z( i
[root@cephL ~]# pip install --upgrade setuptools8 d$ W: k* b9 Q# M& g: ^% R% p) O
[root@cephL ~]# pip install ceph-deploy
9 d* {3 P/ m- f8 ]) v" |5 \* M) n[root@cephL ~]# ceph-deploy --version: v- d4 d5 t2 }- D% O
2.0.0
$ w1 y: t$ u. \+ g# K" i安装ceph软件包
* s! w# q5 i I; ]( A[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy W: [! B3 |) Q- ~8 l
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous
. d9 K2 u, {* n4 M' C9 A. A/ T7 d开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring
+ m9 n- e7 E9 ]/ @$ y6 S! i0 e[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24 --cluster-network 192.168.56.101/24 cephL
) C9 u! F6 A) V6 A6 ^部署MON
5 \% ^' A7 m$ N[root@cephL ceph-deploy]# ceph-deploy mon create-initial
* _& t5 m1 ^/ n( k z9 J[root@cephL ceph-deploy]# ceph-deploy mon create cephL
. d6 N4 z' }4 C# S; pceph 1110 1 0 12:57 ? 00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
Q& y2 C5 X3 M3 S7 f部署OSD+ o& l8 |) N! j6 Q( i6 h7 _
bluestore方法! {3 y# [$ f. }4 B
7 S- ~! p* A- G% B& I+ ~2 Y# M
# 在创建osd时,L版默认是bluestore- S& ]1 x# X$ q; a4 d }6 m" t
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL
: {5 t& p4 q7 k: [ceph 1514 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph8 i, @; s9 w# |2 n( X. C/ f
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL7 v7 @; f' ~ N7 u3 x9 ]2 v
ceph 1518 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
: {2 G; h, G$ Q' ?遇到问题/ S J% w* L/ Z! d- R
) R, C( l3 E& o6 `[root@cephL ceph-deploy]# ceph -s
: h7 A7 u L4 t. U2018-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, V- o+ W( E5 h
2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
+ d! s4 L8 D) y3 }2018-04-10 12:00:19.660312 7fd1fe0ae700 0 librados: client.admin initialization error (2) No such file or directory4 f# j5 T) o! R# G( l5 K
[errno 2] error connecting to the cluster
5 f: j f! }+ a1 ~' T9 i+ h- F# K+ o6 I# N! e; y# A4 o6 y
[root@cephL ceph-deploy]# chmod +r *
$ }7 z( r6 E8 b+ E$ i[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/5 s6 \3 H! F- v) K @( R: `+ [3 R
[root@cephL ceph-deploy]# ceph -s
: A9 C3 E/ T; K. A3 [ cluster:& j( d0 r9 x1 h/ J+ k' ]8 u" k
id: 765752b7-1f77-4d0d-bc18-936b8ad409fd
9 z3 e0 N# _9 [7 B" ^8 ^8 j health: HEALTH_WARN
: u2 ~8 q- P( O: W4 U/ S no active mgr
/ ]9 y# a, p: }* @& {, k; y! l8 `% d
: M: E8 a) `6 {% i7 I5 T( _- L5 } services:- I/ i3 W( i7 b$ c& q+ ~
mon: 1 daemons, quorum cephL
C1 F; d/ ?8 B w, _" g' k mgr: no daemons active7 F' o' a3 [ X/ F( q, L
osd: 2 osds: 2 up, 2 in: b/ T( R0 O0 ?% }9 L
& [! B/ e3 p( g8 q Z- W$ r
data:& O7 ?- C' |) K/ m
pools: 0 pools, 0 pgs, C6 m8 |' \5 @3 P
objects: 0 objects, 0 bytes
0 Y0 ^" ?0 G9 i6 E4 t, f usage: 0 kB used, 0 kB / 0 kB avail
4 _2 z+ v& h) a pgs:! X8 r9 \$ J& V2 `
filestore方法
) M: A' E+ O# c% h- H" ?8 ?
' d8 ~2 T+ m# E% W1 K* p# 如果是filestore则需要对data device和journal device先做GPT partition
3 }& D' @, @! X _2 J0 ~--data DATA The OSD data logical volume (vg/lv) or absolute path to device
+ ^' a5 C' w }$ z" C I- y--journal JOURNAL Logical Volume (vg/lv) or path to GPT partition+ T5 X+ j' `$ T) q, }/ a
3 d/ X& ]2 o* n. S8 _4 x[root@cephL ceph-deploy]# fdisk /dev/sdb
% c4 R& e6 T5 Q; Y# k, \* }WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.1 J+ ~+ z4 A9 j( }: R
欢迎使用 fdisk (util-linux 2.23.2)。1 ~% z2 q' r2 h
更改将停留在内存中,直到您决定将更改写入磁盘。
& F5 { R3 W; h# g' k' m使用写入命令前请三思。6 c3 p7 y* t& G0 K+ V
命令(输入 m 获取帮助):g8 m% b/ X' }( ^( T0 p5 \, W
Building a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)
7 f$ _& S3 Q' ^# q( m# y9 g* r2 z' E命令(输入 m 获取帮助):n9 [9 h. V+ F# G3 }# B
分区号 (1-128,默认 1):
) p/ ^4 \: s' S) ~第一个扇区 (2048-62914526,默认 2048):4 T1 W# P* K: p
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):2 T/ g$ i% M# I! R: y: ]/ U
已创建分区 1
/ u- e: ~ H ?$ M命令(输入 m 获取帮助):w( H2 ?! n# J( _7 V' f0 S
The partition table has been altered!5 F, S+ i) C1 x, d8 `
Calling ioctl() to re-read partition table.4 j" J9 {, H. X; K f2 K. d
正在同步磁盘。
+ K8 q3 H3 A" n0 e" e5 }8 _
* M; P0 A, A8 p" x9 ]% v[root@cephL ceph-deploy]# fdisk /dev/sdc( `, X% `8 D* r j& |3 Q; G
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
! o- m* j! H, U& D' N+ y" w欢迎使用 fdisk (util-linux 2.23.2)。0 L+ S$ p/ s* P( [ v
更改将停留在内存中,直到您决定将更改写入磁盘。9 n8 x4 c% _2 D$ d# C9 C g' b! Y1 ~$ |( g
使用写入命令前请三思。( B0 J4 |# d- B" h1 ]
命令(输入 m 获取帮助):g" u' @5 a; N1 t' u4 b! \
Building a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)3 w) B: I' M! q4 i) L$ J
命令(输入 m 获取帮助):n
" }, c) e8 G5 K* O4 u$ W/ h9 p分区号 (1-128,默认 1):7 U% D& p# U1 n3 |5 y
第一个扇区 (2048-62914526,默认 2048):& {! }$ j( m8 Q% w
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):5 e' l+ V6 j, @
已创建分区 1
/ z5 J% g. b) r& ^) p命令(输入 m 获取帮助):w
3 Y" U7 Y1 j3 h. t" o5 gThe partition table has been altered!
& ]* n' i0 A4 [$ rCalling ioctl() to re-read partition table.
4 T: g* G* w$ D3 M正在同步磁盘。
5 a! u: ], d5 c2 i2 D# ]$ L
/ L, g5 S0 m$ o1 a$ p* l[root@cephL ceph-deploy]# lsblk
2 k; ?& n2 F7 C! K0 G/ r7 g% HNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
: S/ F% d* @3 f* W# K+ D! c& Hsda 8:0 0 40G 0 disk
6 J' w1 |# c8 z9 b, l6 L├─sda1 8:1 0 1G 0 part /boot
+ _0 f8 s. M' q9 u; C4 q4 Y└─sda2 8:2 0 39G 0 part ) Q" _9 p( m0 J9 ^* k" z/ _3 l, ~* j
├─centos-root 253:0 0 36G 0 lvm /
) o' w0 p) k7 S& g └─centos-swap 253:1 0 3G 0 lvm [SWAP]" t0 [% [' ?0 e( t3 C" Z3 O7 b
sdb 8:16 0 30G 0 disk 0 _) {7 @) n! @, D' j
└─sdb1 8:17 0 30G 0 part ; y+ M8 y5 r9 B0 a% a) ~1 [
sdc 8:32 0 30G 0 disk
9 P7 P6 s2 q- X, T└─sdc1 8:33 0 30G 0 part a% g3 i' t, f2 O
sr0 11:0 1 1024M 0 rom U9 F: ?, [2 i
1 C7 x3 ~2 T' C1 R) ~[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL @% r4 E6 f$ m- ?
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
3 @9 q, e" p* A& `. O: e% f[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
% q6 u" s: [0 n[ceph_deploy.cli][INFO ] ceph-deploy options:8 C: F" _' ]( Z) B! c4 x6 c
[ceph_deploy.cli][INFO ] verbose : False
2 }1 r4 u% g8 n' g[ceph_deploy.cli][INFO ] bluestore : None( G0 h$ P( s. p; r2 J1 v
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>& }$ ?4 y; ]1 b& Y. @
[ceph_deploy.cli][INFO ] cluster : ceph8 j" t; p; P' F& n+ u* y
[ceph_deploy.cli][INFO ] fs_type : xfs! h1 @* u" R6 ]2 g; X1 q
[ceph_deploy.cli][INFO ] block_wal : None
0 E' K, Z* O! V5 T4 o6 ]/ H- \" [[ceph_deploy.cli][INFO ] default_release : False7 A0 T4 E" o$ m$ r( V @
[ceph_deploy.cli][INFO ] username : None
& a: d, X$ p1 J& w* C4 Z6 g& ~% n[ceph_deploy.cli][INFO ] journal : /dev/sdc17 @8 d) i; O* ]! U4 P8 r
[ceph_deploy.cli][INFO ] subcommand : create: ?$ i# I) U* E5 X
[ceph_deploy.cli][INFO ] host : cephL
" ?8 Q2 Q0 b8 B- l; F! R[ceph_deploy.cli][INFO ] filestore : True0 S8 C( }; J$ n4 c; v* q
[ceph_deploy.cli][INFO ] func : <function osd at 0x225ae60>( H. S2 ^. M7 o! s
[ceph_deploy.cli][INFO ] ceph_conf : None! j- n* y; a, ?# |0 ]4 b
[ceph_deploy.cli][INFO ] zap_disk : False
& y2 @1 y- i4 Y3 N[ceph_deploy.cli][INFO ] data : /dev/sdb1- O+ s( ^ ~+ M; S( B! D4 A2 e$ O
[ceph_deploy.cli][INFO ] block_db : None
. Q* l9 ?3 \2 f6 Q5 _, z0 D[ceph_deploy.cli][INFO ] dmcrypt : False
S' _5 t" P1 m+ M[ceph_deploy.cli][INFO ] overwrite_conf : False( d O) S+ s5 a; A# X, m5 a, r
[ceph_deploy.cli][INFO ] dmcrypt_key_dir : /etc/ceph/dmcrypt-keys7 Q7 E. \8 `- A3 X* D8 L! E0 N% s
[ceph_deploy.cli][INFO ] quiet : False
' W1 [) m1 c' n. G' |" e. _[ceph_deploy.cli][INFO ] debug : False$ q7 E, P8 I/ Q9 B- t
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb1
3 s& S- t! \/ I, S' z% ~[cephL][DEBUG ] connected to host: cephL
% D* O# k; |, w8 S1 ~9 E) B[cephL][DEBUG ] detect platform information from remote host) P: o- R) X5 P- O
[cephL][DEBUG ] detect machine type. N8 [, E, V3 g2 O; c; y/ W% t4 X
[cephL][DEBUG ] find the location of an executable; q$ M9 ]2 \5 z/ i
[ceph_deploy.osd][INFO ] Distro info: CentOS Linux 7.4.1708 Core) D0 n* M4 Y6 m+ P G3 v# M! S
[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
* h7 b- A" k, r7 U& {" D0 t[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf; U4 D P [, S
[cephL][DEBUG ] find the location of an executable
# m7 T5 W8 F9 Y5 p+ N[cephL][INFO ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1& v4 f5 Q7 g5 B/ E3 F! l
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
( X, u0 }8 t; G% f5 q) C- ^[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
; y$ Q& I9 }9 s8 t6 B6 o9 E! M8 G2 [[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb1
6 r8 [( G) s( O) J[cephL][DEBUG ] stdout: Physical volume "/dev/sdb1" successfully created.
& s. f7 h! w, R) H( s[cephL][DEBUG ] stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created! @3 ?" x: z2 l" ^0 o. a6 D
[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f9466 k# d( Q( v2 o( [( q+ b: X4 H, M
[cephL][DEBUG ] stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.
( W8 ^& u7 q/ ]9 \- ][cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key# P0 y+ M6 [8 H2 [
[cephL][DEBUG ] Running command: mkfs -t xfs -f -i size=2048 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31
4 v8 _! x! Z( s. W( }& S. c[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% F8 J8 Q. k- \0 @( r0 a, r
[cephL][DEBUG ] = sectsz=512 attr=2, projid32bit=1
; J/ @: d, N$ g8 Q D[cephL][DEBUG ] = crc=1 finobt=0, sparse=0
: O6 |; ]# E) X: c[cephL][DEBUG ] data = bsize=4096 blocks=7863296, imaxpct=251 H' h3 Z$ Z1 i" }8 D
[cephL][DEBUG ] = sunit=0 swidth=0 blks- T& x r4 [; ~
[cephL][DEBUG ] naming =version 2 bsize=4096 ascii-ci=0 ftype=1
1 t$ ]" i, z, F1 \6 f[cephL][DEBUG ] log =internal log bsize=4096 blocks=3839, version=29 ^) s* Y, o) O, q. I3 f+ o7 ]
[cephL][DEBUG ] = sectsz=512 sunit=0 blks, lazy-count=12 U8 D: k. @- J9 a' V6 S3 q5 p5 I: h
[cephL][DEBUG ] realtime =none extsz=4096 blocks=0, rtextents=0
, L( F; N7 |% k2 ?4 `' ~[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
0 J2 a' c# \$ x/ p[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1" J4 t( K, D+ Z6 E* `2 Y' T, d
[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal. S' K( X- v) _# b
[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.monmap4 b# ~9 y6 _0 \/ \9 v- k9 g1 [ M/ o
[cephL][DEBUG ] stderr: got monmap epoch 1
3 M7 N( ~/ E( m# d[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
) Q) g$ F1 ~& y @[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/2 y! D8 e. v% l: }
[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
3 o9 x% O$ a3 k" ~1 e0 V[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
7 F' _4 p* H! b5 j v[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
9 D' V! J; @% O( n, C' [' O[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic* n0 [. s1 O; A- p U
[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory; }9 d4 a* `4 _! @0 h) f; 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. f- v6 {; q0 c
[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==3 ~1 L' {! c# l. w' M
[cephL][DEBUG ] stdout: creating /var/lib/ceph/osd/ceph-0/keyring
# I" |1 a: e$ z, P6 @[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
D( J: T: b; d% b3 ^[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
% Q. c2 c# J, K# E# I[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1& G1 X4 e2 X9 m$ v2 ]4 Z
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal9 P5 G+ g3 w( V6 D& c
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
: p) X' w; t: E$ V$ V[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31
2 e; e0 d! s4 @$ p[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. d4 _: o: `$ {- f+ H5 ?
[cephL][DEBUG ] Running command: systemctl start ceph-osd@0
! ]/ _1 A( E+ Z ?% g7 n[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 08 _" _3 m# t# z% Q) @
[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1
0 R' b8 \# g n/ J* Z[cephL][INFO ] checking OSD status...* J. o/ v' R3 @+ h$ \9 k' _
[cephL][DEBUG ] find the location of an executable" U' J+ p, D( M3 W! \3 u
[cephL][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
f- X. d6 Z4 U+ d1 |/ N8 q[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.
# N2 L( _( t6 g: B移除OSD- z0 m/ T. C; x: L( K' k. a0 q
# 使OSD进入out状态
3 g5 P* |. {/ s. q* a9 X+ Q7 ]+ q[root@cephL ceph-deploy]# ceph osd out 0
) O, ]# b4 q, j, w* J: K( y" bmarked out osd.0.7 ~, O9 ^0 M, [) X
# 观察数据迁移3 H8 s1 ^+ C+ d$ E2 J# W
[root@cephL ceph-deploy]# ceph -w
/ s9 [) C. C9 h; T& ]# 停止对应的OSD进程
2 C8 j! s8 Y8 D9 Q6 }$ c[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
1 A4 I9 _; ]8 i) w$ _) X/ ~# 清除数据
" C1 K# H+ P7 c5 N, O3 O! Q7 s8 j. u[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
7 t4 L. V7 S' u$ P# Epurged osd.0
, b: |+ g H4 |: Q6 G2 d# 在ceph.conf中移除osd配置 |9 f( Q* o; H0 `& {0 d0 N% |: @# q
[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf : N, g3 @/ z/ O0 }$ G! Q, I
部署CEPH-MGR
0 }" c% s8 l5 x3 Ninstall netstat tool
2 Z* Y2 Z8 E* [% j. {$ m1 i[root@cephL ~]# yum -y install net-tools- \9 z3 m$ j: [, v G: h7 |
6 d5 J5 i( P& S( e7 k1 E
[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR
6 m! U. _% n! o' R5 i4 }, fceph 1111 1 0 12:57 ? 00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph
5 Q; J$ u2 [+ r* P) M[root@cephL ceph-deploy]# ceph mgr module enable dashboard
( R- C# X6 ^6 L1 ?1 j) j6 X8 q" A' Q8 q
open 7000 port# w9 i0 e6 `* ?4 p q' `1 S- U4 Z; I
[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
1 q) [! o; b, i[root@cephL ceph-deploy]# sudo firewall-cmd --reload
+ A1 O0 ]% N( q2 \" j. T相关命令& T# ~1 G4 U9 ?+ e# _
- g* Q7 C0 R. Y: d0 j4 h, X+ u
[root@cephL ceph-deploy]# ceph mgr module ls
3 d$ K3 ~8 ]( _0 S" }[root@cephL ceph-deploy]# ceph mgr services! ~& ]/ d$ j: v: {' ?* l
[root@cephL ceph-deploy]# ceph tell mgr help
) Y0 e+ p0 e; _' I/ l% G, z部署MDS并创建CEPH FS
/ M5 @7 Q8 R: d( h5 B0 ~0 i: P[图片上传失败...(image-7d8937-1599396610118)]
' f4 s& p. ^' X
- K2 ?$ W. c; m0 v; p$ z, w7 R$ \2 f" Q[root@cephL ceph-deploy]# ceph-deploy mds create cephL' d. e! ~2 ~- K0 X+ [7 i8 z
ceph 2150 1 0 13:00 ? 00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph$ M6 K" Y) B1 I+ l9 Y
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。
% y2 w) P, }9 m# V2 V) c+ a. [
$ L6 _1 ]5 m$ ^# Z配置这些pool时,可以考虑:
: Z. J' Y5 g, ^7 H+ D
/ a4 | J6 w9 c* d* ~) N 对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。, s: r& X: h( W" B% T. i# l/ K1 _
; Z- g# V6 ~+ ~, T9 T q
为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。
1 S) @, \/ J# Y, [ Q2 ]! }- ^, u0 a; C9 j5 C/ ]
ceph osd pool create cephfs_data <pg_num>
# N" A+ t: z% H* Bceph osd pool create cephfs_metadata <pg_num>- a s; e0 K& k( u
例如:
' |' g) L# C, A* |8 ?1 S[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32/ q0 W1 `# W! Y
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32
, c# k9 @ C* z! L2 f, ^7 A更改pool的副本数
& @, s5 Y; O$ o. Z' c
v6 ?4 j) {% Yceph osd pool set {poolname} size {num-replicas}2 Y) A% W( t: \; s
例如:
& B* m, L, e5 e) E+ k# W% M: P[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1& ?' m% J( ?" Y' f
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1: W8 m4 m3 v* F6 i( v a, ^
一旦创建了pool,就可以使用fs new命令启用文件系统:
4 S) `. K; [8 g
8 D/ T: s! l% C1 h1 x B9 j8 g2 xceph fs new <fs_name> <metadata> <data>' o& L* h. r8 G% O
例如:
) t8 d% U6 x. O) M6 M& v1 _ceph fs new cephFS cephfs_metadata cephfs_data
/ i$ Q; L! l/ D5 F/ Q% x4 m5 i0 v, @一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中:2 B% F% t; L. g4 e
9 c8 M" \- a0 N
[root@cephL ceph-deploy]# ceph mds stat
( L" Y1 A$ K* ZcephFS-1/1/1 up {0=cephL=up:active}
- s, v4 s( | I一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。3 ~; X) w6 y8 O& S: c1 ?# ~
# T: o( E: J: ~ l5 m如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。2 i P' W+ x7 H4 s0 N4 P
, n+ Q0 ~0 I% m
挂载CEPH FS ( File System ) 有两种方式:' }' d2 j1 s/ O* r" j
; R9 w& R0 l% j( pKERNEL DRIVER
8 x) e/ N$ T; T) V2 X# k* X
) L2 W5 u1 D) b! h要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如:9 Z6 i( H3 U/ A' p. s8 g. e0 n
/ g( I1 h: s/ r8 z2 \ R3 [
sudo mkdir /mnt/mycephfs
?2 O: s" k. }0 G$ N8 s# E. O/ Msudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs' Z4 L6 |( v1 t* u
例如:
" P+ s- `2 S; e9 V* |[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs5 {' n u5 ]4 N' o. M" A3 u3 T
mount error 22 = Invalid argument6 \2 L) J) H. a3 W& s3 B% `
Ceph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。
) I A& `6 w! e如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。
3 ^) }! Z7 R- ]* \# G/ ?如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。 F) ^; a6 ?4 d# w; s s- I
$ j: E1 p0 a: R1 Q4 r. I% }0 s3 K
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
/ _5 {& r( X! F) B6 _! T0 x$ f上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如:
; q+ K9 R1 c4 e# P
& y4 b- p$ B' h) D' `' Qsudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret6 i( K8 _' }7 a- |
如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs
v- o: g6 D) w, M4 E
1 X. M+ Z% P% T+ ^) F+ G要卸载Ceph文件系统,可以使用umount命令。 例如:5 a# k; U: }& C. @( ~% p& M5 Q
1 B4 o; x+ ?, [$ B: ]5 ~( x# csudo umount /mnt/mycephfs! c: X3 _! Z& @1 U8 |
提示:在执行此命令之前,请确保您不在挂载的目录中。
* `" ?/ a% c% v2 M! tFUSE
- d4 L) @- Z. A
) `5 d& D1 J. ]- [在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。
( J' i$ r# \8 i
& E3 B# k3 A, n% n* L7 ^7 c在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。
" ~9 ]* ]8 T0 A5 V* d4 O/ `+ X, n1 o# o) i" z% `1 l1 l
sudo mkdir -p /etc/ceph
9 E" D. H6 H& q6 u$ Gsudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
) b E# h3 V" E0 U5 \在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。, @" o+ C. B- J3 [5 h2 F7 a4 k
2 W* A \3 b) k* O- j
sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring
$ e0 n' o0 }6 Z o: c' t: w& E5 @确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。
; H9 d: C3 ~" _) x& ~4 N7 Z4 o# B$ `+ M* A9 X2 K5 B4 J2 b. E* @9 U: B
要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如:! B& w: b7 [1 u8 u8 n
. \9 O8 \$ D' ~ f( Q; ^
sudo mkdir /home/usernname/cephfs
/ X v4 J; Q2 t. zsudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs" s, L$ \2 J* a7 t8 O
如果您拥有多个文件系统,请使用 --client_mds_namespace 命令行参数指定要挂载哪一个文件系统,或者向ceph.conf中添加client_mds_namespace设置。
; Z! c# {, ?$ B6 }- j, {* W, E; p' R/ N, D. x0 D
要自动挂载ceph-fuse,您可以在system fstab中添加一个条目。此外还可以使用ceph-fuse@.service和ceph-fuse.target systemd units。通常这些unit文件为ceph-fuse描述默认的dependencies和推荐的execution context。例如使用ceph-fuse挂载到/mnt:: _: g5 N; t2 T' c) G* ^
' {8 Z1 q4 P" N Y0 c, u3 x5 vsudo systemctl start ceph-fuse@/mnt.service
d1 W x% s% s* B& T2 ^持久化挂载点可通过以下方式进行设置:
4 j# ^! @! P5 o/ j( `, j/ W4 |* H% {, x
sudo systemctl enable ceph-fuse@/mnt.service
: s. N8 y5 B L- ~- R, y6 u部署RGW
8 L- I9 z" x# [& u* n6 k; u" A; t[图片上传失败...(image-ea6ad1-1599396610118)] y: B+ e* Y+ E( ^, }" u
/ X& ?1 O( y. q* q; Y7 S
Ceph Object Gateway原来叫RADOS Gateway,它是构建在librados之上的对象存储接口,为应用程序提供了一个RESTful gateway,用户可以通过HTTP协议访问Ceph存储集群。9 R$ L7 w% R% O5 V0 F, u6 t! c
1 i) e" a) H0 H
Ceph Object Storage支持两个接口:
4 |: y8 I! N9 _- ~3 W' F
, Y% c6 \' K( O' @S3-compatible:与Amazon S3 RESTful API中一些子集兼容的接口,提供对象存储功能。" |) O! L% S# K2 O
2 H, e, z* Z" g6 ]Swift-compatible:与OpenStack Swift API中一些子集兼容的接口,提供对象存储功能。
' ?" d6 ]* @2 x/ @ L3 d1 T' [+ U, _6 H z9 x
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检索它。
" q% M: t$ P! x1 D i* j6 T0 i4 t, w0 J. R3 y6 y& o. Q. Z) H
Note:Ceph Object Storage 不使用 Ceph Metadata Server* i3 u( t& H6 b4 u) b
# 必须部署MGR,才能部署RGW( R) C3 g9 B6 D2 A# @6 f
5 y: Q) S% N) M[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW0 P6 L3 |! w4 b [4 g: U+ H
root 2799 1 0 13:13 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph% z" c' b- X3 U3 |! I
% M1 C5 p) x& c, y
# 重启RGW
( _( w7 B' b8 N% h' W9 O/ I6 Q0 c1 w( R[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service
+ O4 }8 A6 G0 O& k$ |[root@cephL ~]# systemctl restart ceph-radosgw@rgw
. [$ N4 D# J3 y8 j% w% D% d! h$ E5 U! @3 {" n, G8 X
问题一,这难道是ceph-deploy 2.0.0的坑?
; Q, h0 H7 h6 f: d' I[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log
6 P$ X2 k0 B( f& J5 O2018-05-11 22:30:31.999421 7f537c31fe00 0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 3450
* [9 J) ?' P5 w8 h2018-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 directory3 j! w( G2 F* ^4 R5 M! @
2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication! ?! _0 o4 x# _; S- N$ _
2018-05-11 22:30:32.021563 7f537c31fe00 0 librados: client.rgw initialization error (2) No such file or directory: t+ C$ [/ z6 E! v( P' ?
2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)! T3 Y; w: i# e& P/ a e" b1 \
5 Y6 |+ U/ E8 f0 k" G7 ]0 n[root@cephL radosgw]# pwd% |7 i- H# y/ ]
/var/lib/ceph/radosgw$ K% w* M3 w u2 b
[root@cephL radosgw]# ls2 e8 ~$ K+ R+ L" u/ ]: Q1 I+ {
ceph-rgw.RGW
: x& ]( w; X7 j2 X: v3 y[root@cephL radosgw]# mv ceph-rgw.RGW ceph-rgw
: C: u9 N) ^8 R! b ~
2 P% e9 C& L% [: I9 u. v) @
% W! w0 H2 t- V9 ^配置变动
' Z# e4 @/ l, W在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。
& [ M, S- t1 z* w1 z$ B: w, E) B1 l% Z% z) e
# 允许删除pool,需要添加
) W2 u- V `5 X2 Y. i5 `0 |mon allow pool delete = true
: O" ]! I! n. Q, {# ]. U" u/ O: G3 y7 A$ q# v
) U' i+ _" p0 Z$ B4 ^$ U4 c; H |
|