|
|
安装pip和ceph-deploy
; ^4 `3 X9 R, y. @[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
# D" n7 n0 v2 z, q3 M* o[root@cephL ~]# python get-pip.py
9 e8 h2 L# s2 Q0 o' L, j[root@cephL ~]# python -m pip install -U pip
4 h$ O7 ]6 O0 G/ A[root@cephL ~]# pip install --upgrade setuptools* L! Q- E* U0 n
[root@cephL ~]# pip install ceph-deploy% t/ n) ]4 m7 I! V
[root@cephL ~]# ceph-deploy --version& k! x* i7 m1 e2 V0 Q1 y7 _
2.0.09 _( f* M. T+ }" p4 c! k( z, \
安装ceph软件包. \9 s1 u* N. K% V3 {& h8 w6 s! K* K
[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy: T; V1 J" H/ P5 w4 k
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous
1 O* ?2 L& ~- F' ~. T) S开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring
4 u: y3 b5 c" z+ j# Q& R3 U[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24 --cluster-network 192.168.56.101/24 cephL
0 C2 `- p; k3 [部署MON; X- w2 F! {/ K- p& {8 J3 H
[root@cephL ceph-deploy]# ceph-deploy mon create-initial
. {* J/ ~. B; g# P[root@cephL ceph-deploy]# ceph-deploy mon create cephL8 Z% e7 A' y/ W) j; E$ \' C
ceph 1110 1 0 12:57 ? 00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
/ a1 _9 F- f! F( G部署OSD5 h9 k- V7 v# Y. T
bluestore方法
3 {: s/ ]& U, n8 \0 x0 v! E8 b3 G0 s4 ]: O# L* q" N: p$ K
# 在创建osd时,L版默认是bluestore) w1 |6 F3 u- c r m, I" |/ m
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL
$ {+ y/ k6 [# o! r* Q% vceph 1514 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph3 E& t6 ^% \) B4 r5 _1 y
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL
7 B0 H. ~/ S5 O4 g/ p! jceph 1518 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph! Z$ c6 b' i: k+ e
遇到问题
: y- T5 [( H7 E9 H) E
; W1 T2 r9 x# T[root@cephL ceph-deploy]# ceph -s
- U- w8 u& B" 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
$ d% v: p: H* N3 x2 Q1 F2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication( P5 l* E1 e5 w! b
2018-04-10 12:00:19.660312 7fd1fe0ae700 0 librados: client.admin initialization error (2) No such file or directory' R1 Q; t) L( ^$ E5 B0 E
[errno 2] error connecting to the cluster* e$ R4 i/ {/ z+ e( Z$ a7 h
# @" m' Z7 { \1 p r, A; v2 x[root@cephL ceph-deploy]# chmod +r *9 L4 h+ f3 U$ g: |' D
[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/- J6 ?2 J1 d% j" {: z4 C
[root@cephL ceph-deploy]# ceph -s# M4 v U9 n9 ]
cluster:
3 N; A/ l/ q6 S; y r id: 765752b7-1f77-4d0d-bc18-936b8ad409fd
0 W4 f2 d2 O# z; e4 V4 G; J) ]* P9 X health: HEALTH_WARN
1 {, }7 f$ c- H; B no active mgr
& C1 y. i$ _1 D2 Y! w: B/ Z$ @- l, ?0 |: t+ j' @ k9 o; ?
services:
" T) F( y2 B7 V mon: 1 daemons, quorum cephL- o }' [8 l: t" h$ M
mgr: no daemons active
U# A6 j. T% n; ]7 h7 ]* F3 | osd: 2 osds: 2 up, 2 in
3 t: V% P9 m' r& ?: y# i, C7 {) A9 D- p2 g" ?3 ^: B3 j
data:
8 A7 S6 C9 Z3 ~$ z. p pools: 0 pools, 0 pgs# N- T8 q- b( \* C5 d
objects: 0 objects, 0 bytes( N: J+ `9 Q2 f" Z }% R
usage: 0 kB used, 0 kB / 0 kB avail
3 D: D8 E2 _5 M- L( D1 u pgs:& t9 ^* I I0 w5 p
filestore方法# p$ c6 M9 y o$ A% `
7 N5 T" G- u* s2 s+ x1 V4 @+ o( C' i# 如果是filestore则需要对data device和journal device先做GPT partition
7 V r( K% @4 ?, }3 w--data DATA The OSD data logical volume (vg/lv) or absolute path to device3 ?8 Y9 T8 D) J
--journal JOURNAL Logical Volume (vg/lv) or path to GPT partition- N& e* G8 E- T( X1 d
1 o# F+ i8 h0 _4 I/ d t[root@cephL ceph-deploy]# fdisk /dev/sdb
7 ~9 ~, g' x: YWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.5 p) ^8 S) U1 q N0 h) `
欢迎使用 fdisk (util-linux 2.23.2)。
# R$ x! ?6 x7 s& a更改将停留在内存中,直到您决定将更改写入磁盘。+ m5 l) V2 x; j$ L& o3 d: }* X+ q
使用写入命令前请三思。
1 \; I4 T& g& Q- E0 E命令(输入 m 获取帮助):g
- x* o. b1 S2 ^, L! IBuilding a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)
- {; t& t: g) Q/ N命令(输入 m 获取帮助):n( d& S! d( p; V0 |% K# w7 h
分区号 (1-128,默认 1):
6 s8 L+ j& ]; a+ j$ Z1 m第一个扇区 (2048-62914526,默认 2048):0 |, G, k0 J# w7 _ V4 V9 b! m
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):
( z; i. |2 H2 N: u/ G/ J- K已创建分区 19 z, u' ~2 e7 ~
命令(输入 m 获取帮助):w) c$ c! f4 q; u) X
The partition table has been altered!6 E: A$ j t+ \! J' ~0 W
Calling ioctl() to re-read partition table.
4 Q) @, m9 G5 p. j2 W正在同步磁盘。; r7 i! A/ o8 \% c
% F) m6 H8 l4 z9 Q& \3 \
[root@cephL ceph-deploy]# fdisk /dev/sdc+ M. G% E8 |) J1 t1 z& q
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.! Y% u# b2 ]3 K# I5 Q, P$ h5 r
欢迎使用 fdisk (util-linux 2.23.2)。
9 D+ _4 X. o) u5 X" K. h: |; G8 _' j更改将停留在内存中,直到您决定将更改写入磁盘。6 f& O6 Z; Q0 ]0 m3 b
使用写入命令前请三思。
4 _; a% P% j7 n/ g- U命令(输入 m 获取帮助):g
% t( L( i& x) h8 Y! `( dBuilding a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED): }7 r R% I ]
命令(输入 m 获取帮助):n3 G' v7 O' S9 U# Y0 U1 w& b9 V
分区号 (1-128,默认 1):: T. k6 I$ Q. x$ i; @
第一个扇区 (2048-62914526,默认 2048):
4 o; l# B' p' Y# |6 SLast sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):7 z4 l$ W) I, A2 Q, w! z( h8 r
已创建分区 18 s9 [2 s$ F5 T: \8 j, A8 F
命令(输入 m 获取帮助):w
7 o! H+ K9 T! C, ?# [The partition table has been altered!
! k4 A7 U2 E1 w0 F3 O8 k. u) hCalling ioctl() to re-read partition table.
# k" h: [" p `, h8 |& X正在同步磁盘。; ?; m' u+ S# K+ M) ~. \7 j
( p* v, F+ z7 Y; `+ Q( P7 _9 P
[root@cephL ceph-deploy]# lsblk
8 ^$ X: C5 e( Y- D( XNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
% D$ H* _/ ~) E3 i* O; jsda 8:0 0 40G 0 disk
6 s& O, K3 @ U0 |- m├─sda1 8:1 0 1G 0 part /boot4 o7 h1 R$ W9 L8 A1 G" P7 b
└─sda2 8:2 0 39G 0 part
9 t1 N7 r6 x- o g ├─centos-root 253:0 0 36G 0 lvm /
1 ^- I; G: {& K1 c └─centos-swap 253:1 0 3G 0 lvm [SWAP]
/ I' G/ ~! l r2 T0 O esdb 8:16 0 30G 0 disk 1 h# z: U. K1 ~" {8 v8 T$ @& H; u; U0 t
└─sdb1 8:17 0 30G 0 part
9 e1 C0 z* @7 p7 y- d) qsdc 8:32 0 30G 0 disk
9 q4 j% }7 b- t4 W5 [. J( S/ o. ~└─sdc1 8:33 0 30G 0 part
8 F& m; n7 t1 S( ?sr0 11:0 1 1024M 0 rom
d3 S8 P* F7 ^# f* V$ x9 _6 v- [; ]9 i8 V7 k& Q5 H
[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL5 K. g( }* k* H# V4 X
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
( \- G6 }+ ?- k( h' E[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
3 z8 z1 k1 r0 g( \- v# P) n2 p[ceph_deploy.cli][INFO ] ceph-deploy options:- d% _, j1 _4 U! U' \
[ceph_deploy.cli][INFO ] verbose : False0 |; ^, ?- X1 o( O8 f6 K
[ceph_deploy.cli][INFO ] bluestore : None. x& d! F6 D0 D6 g
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>9 O6 |$ [, T3 ?
[ceph_deploy.cli][INFO ] cluster : ceph6 J+ R( V( V# R/ ~. F* @0 f2 k
[ceph_deploy.cli][INFO ] fs_type : xfs
. c1 C/ A5 @9 {% Q[ceph_deploy.cli][INFO ] block_wal : None
5 Y5 }1 r* a' [+ l1 Q[ceph_deploy.cli][INFO ] default_release : False& W8 v6 }# U- m2 R ~( b) e) p- c. @
[ceph_deploy.cli][INFO ] username : None @" n$ P3 z9 O, O
[ceph_deploy.cli][INFO ] journal : /dev/sdc1
% J, Q) g8 k6 R" U* Q8 g+ ~ K[ceph_deploy.cli][INFO ] subcommand : create% f F3 V7 A& V# o( i, m3 B
[ceph_deploy.cli][INFO ] host : cephL) ~( _7 `8 W" A- q$ y& i- M' @7 y4 v
[ceph_deploy.cli][INFO ] filestore : True7 ?8 G* p+ `% j* q3 H
[ceph_deploy.cli][INFO ] func : <function osd at 0x225ae60>
/ c. L4 t% c; ?6 |6 I[ceph_deploy.cli][INFO ] ceph_conf : None8 D9 I' a8 c# E) \% y
[ceph_deploy.cli][INFO ] zap_disk : False
$ |. B4 V+ y+ Y2 D6 g# Y; U: A[ceph_deploy.cli][INFO ] data : /dev/sdb1
- F! |' j8 N' a& [( l+ V[ceph_deploy.cli][INFO ] block_db : None- H" P0 y/ t4 R, p- C9 M e
[ceph_deploy.cli][INFO ] dmcrypt : False4 N8 o" u- u* ?7 A d/ m2 D
[ceph_deploy.cli][INFO ] overwrite_conf : False
9 [" t! H2 q5 M( i[ceph_deploy.cli][INFO ] dmcrypt_key_dir : /etc/ceph/dmcrypt-keys
; B7 m& _/ G' V0 m) _9 k[ceph_deploy.cli][INFO ] quiet : False. I- I; B$ s B
[ceph_deploy.cli][INFO ] debug : False& L! U. D0 E Z! \- I4 n
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb1; |# z7 `9 q: Q9 d' @; T9 L
[cephL][DEBUG ] connected to host: cephL
& U& D0 z4 r, _3 }[cephL][DEBUG ] detect platform information from remote host: L+ ?. u B6 B F" ]
[cephL][DEBUG ] detect machine type/ E; g B" j) z! h
[cephL][DEBUG ] find the location of an executable
3 D" r) {9 u4 n+ S* G; z- D[ceph_deploy.osd][INFO ] Distro info: CentOS Linux 7.4.1708 Core
& A/ {+ G4 X" R& j) {: D4 {[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
' p1 }9 y+ h5 d/ B5 {* a% _, f' }[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
* ]* P: C0 I5 G k& v1 T" Y7 S8 b[cephL][DEBUG ] find the location of an executable# l. ]" _2 P( ]* ^$ Q! l
[cephL][INFO ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1
1 l) j9 C C) V q* b8 n _[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key/ \0 e$ l3 z; s K$ d
[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
. N2 c2 `- B( x- U9 t- I7 C) U[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb11 \0 {5 s; F9 H& b2 Q& Q5 F
[cephL][DEBUG ] stdout: Physical volume "/dev/sdb1" successfully created.
4 i2 ?, |: u$ g$ m- b+ w[cephL][DEBUG ] stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created
# J3 k" t! d2 R {0 o( D: t9 ]( \[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946
7 Q9 G' Y: |: p- g3 I& C+ t4 v[cephL][DEBUG ] stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.
; q0 \1 _# d: |6 J/ n[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
" X- }+ M( ]1 U. O3 G" P[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
& _9 Q% q" ~5 `" f. k7 E" F[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# R( ?6 ]/ v s- g
[cephL][DEBUG ] = sectsz=512 attr=2, projid32bit=1
: z }+ {* R( l2 x' x% ^$ x[cephL][DEBUG ] = crc=1 finobt=0, sparse=0 d/ S) Q- r$ C e; ~' C
[cephL][DEBUG ] data = bsize=4096 blocks=7863296, imaxpct=259 d2 a- o4 ~, K9 [* @9 L1 k
[cephL][DEBUG ] = sunit=0 swidth=0 blks
3 z& E; G* A& f4 h[cephL][DEBUG ] naming =version 2 bsize=4096 ascii-ci=0 ftype=1
5 f. v" D1 j$ V6 [5 W5 S[cephL][DEBUG ] log =internal log bsize=4096 blocks=3839, version=2
( {' ^6 }2 B+ ^9 v( n[cephL][DEBUG ] = sectsz=512 sunit=0 blks, lazy-count=14 S4 c8 ]# B% B5 K- \6 [
[cephL][DEBUG ] realtime =none extsz=4096 blocks=0, rtextents=07 B0 G' j0 ?6 ?4 Y4 G# V# m
[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, G& u+ }4 P7 ^$ u
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
& F( d5 s* B$ \. m2 i* O[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
4 [& H9 y# f! u/ 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.monmap
9 ~! A2 Z) q. \! a/ t' z[cephL][DEBUG ] stderr: got monmap epoch 1
6 q0 z m0 i; V9 H[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1& h; q3 N$ ?' _" l
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
. f0 b, ^9 H" x# |- m1 P[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: |0 [* p" ]) B/ t3 m5 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?) journal5 v% r" }$ p$ W' G
[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
+ F h: v5 I; J7 \& o[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
/ v8 B* X$ {7 E, F1 V: o[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory: o! ^+ e; L8 w5 X
[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% G' {5 c$ f8 J# L l$ p! v$ A) W, k
[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==
( Z: g d1 J: u. e/ X[cephL][DEBUG ] stdout: creating /var/lib/ceph/osd/ceph-0/keyring
0 {& @- j6 D$ b) X[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
+ Q$ s/ r* a: D: R" y$ T[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring9 E1 [/ c" _# v0 G( u
[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb16 p8 }/ j+ U2 s. s) ^
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal, M1 {' C: v2 g1 f- M( _2 [: j
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1# t. h3 I* K6 j. K) U& C9 C
[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d312 A$ E3 j8 A; A L# ]# ]2 x) [$ k
[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.- u7 E) b9 V* S+ N' h& S
[cephL][DEBUG ] Running command: systemctl start ceph-osd@0& B6 k% t. A( O8 U
[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 0/ [4 W) L1 n$ O6 o5 q( W- {0 f9 B
[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1
2 Q% M) Y' F/ U! R1 b" L6 O[cephL][INFO ] checking OSD status...
2 h; n0 O/ s7 o3 R: [/ p[cephL][DEBUG ] find the location of an executable
5 s( c- A$ T9 e; z[cephL][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json2 X2 W' ?8 d+ ?
[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.+ V- ~! j* t. i) G6 M% w
移除OSD; Q6 @$ W6 A' H( C% l
# 使OSD进入out状态: `+ [9 P9 W$ _7 u
[root@cephL ceph-deploy]# ceph osd out 0
. z) `' K2 o, R, V& q5 smarked out osd.0.; R: f9 [- w' m3 d6 r
# 观察数据迁移* h- L5 R3 x k$ ]2 g
[root@cephL ceph-deploy]# ceph -w
+ }, G$ L9 V, |# \3 }) t2 n8 r/ M# 停止对应的OSD进程: D0 t- s& O/ }1 Y9 u$ ?& k
[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@03 |" {7 D1 A8 H' O) f0 s
# 清除数据- j/ u# K8 g2 }/ j! X
[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it2 b2 P& g. n+ \! H
purged osd.0
5 e% Q- o, \9 L( \5 `& k# 在ceph.conf中移除osd配置# C" d* t' [: F+ K! z
[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf + p2 m, V1 h- [1 p' W5 H% C/ U
部署CEPH-MGR6 i3 F" x4 ^- C8 Y, a+ x0 h
install netstat tool
9 @1 N' o" |* Z) R5 E7 P[root@cephL ~]# yum -y install net-tools: N4 D# f7 E$ t: d; K
) |5 e. P6 P5 N0 {[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR
& d+ n2 e% |$ ~5 q3 K# Wceph 1111 1 0 12:57 ? 00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph
5 {: ]6 ^; F( d, Y. Z* G[root@cephL ceph-deploy]# ceph mgr module enable dashboard2 \# o" @) E" l; F/ P4 E8 [4 K
5 H+ }5 V! E+ H/ X: C- U8 J/ yopen 7000 port& D# B; l- o2 d5 }
[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent0 X& ^0 Z* k- l
[root@cephL ceph-deploy]# sudo firewall-cmd --reload
! S) j3 l, g4 M相关命令
' @" ^1 q+ T1 d& v, ~
# Y S' D2 ~: p[root@cephL ceph-deploy]# ceph mgr module ls' ~9 M, S, r* p; w/ P
[root@cephL ceph-deploy]# ceph mgr services4 A3 n2 Q) h, ]- q/ y; ~
[root@cephL ceph-deploy]# ceph tell mgr help) b6 ]; G' z# v$ l
部署MDS并创建CEPH FS
/ M) c x/ |& F3 G+ Z& O2 R x[图片上传失败...(image-7d8937-1599396610118)]+ F! U' h+ W8 i1 K4 x
. A! f6 ?/ k x% X6 i0 y" I+ Z[root@cephL ceph-deploy]# ceph-deploy mds create cephL3 V+ v7 v5 s$ c: i
ceph 2150 1 0 13:00 ? 00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph; r% m- M6 E! |6 x! ?% z$ a2 j
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。
# K% _+ R) C2 b/ z
. n) |" V" j3 J配置这些pool时,可以考虑:- J, V$ ~9 {9 \) i }' K, {6 n
M& l: P7 r$ S" V4 \ 对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。
5 v8 s6 \. R" z$ v7 i
5 s8 l7 O7 X G2 L 为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。 m" }& q$ ~/ S0 j4 e" Y& R, j2 c
2 y8 z1 i! D% X( ^* o3 t
ceph osd pool create cephfs_data <pg_num>
! l5 {: @7 W0 N+ Wceph osd pool create cephfs_metadata <pg_num>
3 m* s4 [# W% U, S, D$ `+ s% d. y8 V例如:
% Z4 }, H7 k, R; z- T8 O7 l4 p3 Y[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32" x3 r4 S3 a; l" O# A9 ]( Z
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32
6 ~! l7 g% s+ _1 V+ x& f9 f# Q更改pool的副本数
4 e ^5 c+ E: a. c) g: r3 x/ Z
* x4 b4 P" X0 i9 wceph osd pool set {poolname} size {num-replicas}
& B& a& M$ O+ [6 E6 C+ h7 Q$ }例如:. r4 _: q5 p. P6 a
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1
$ V# K( ?: t6 y2 `4 k3 M8 ^( W[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1+ L6 {0 _) G' T1 O
一旦创建了pool,就可以使用fs new命令启用文件系统:
+ ^ j8 G4 t- g& M& \3 B
7 f4 }7 |" I9 z5 ?" e4 r0 S( ^. Gceph fs new <fs_name> <metadata> <data>
* b9 w$ p2 u1 {5 @/ a* [例如:
* I$ a3 V3 w( vceph fs new cephFS cephfs_metadata cephfs_data
8 r' n$ M( ~0 I& i一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中:
6 T8 ]$ S/ v0 h. I( k( B) s1 H/ Q
, ]4 v9 ?7 P. k- h* O+ v[root@cephL ceph-deploy]# ceph mds stat. y9 V/ N4 S; L. a" r! B" F0 G
cephFS-1/1/1 up {0=cephL=up:active} g* g5 _# L9 V3 C
一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。! y+ {1 ? |8 A& A. F0 {
6 B d, T& P3 G5 w& L如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。
& n+ u" N( g; {6 G9 |0 E+ a
1 W- G7 x; ~1 s" y7 z9 ?' K: ~, R挂载CEPH FS ( File System ) 有两种方式:! b0 E. U9 i+ Y$ H/ M, o
; b. E1 J K' }6 k2 mKERNEL DRIVER8 R* z. D3 _ M4 ?& U! ?
( L1 s# I3 {2 a! n# [; b: E要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如:8 |9 N G+ h4 M+ f
* _! s6 K, O$ Y4 Q) y0 i9 ]. u1 H% W
sudo mkdir /mnt/mycephfs ~* Z' p+ g% N L; f: u4 p; w$ |
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs: t/ X. X0 P( I$ | F7 m/ j
例如:8 n* O- ? C( e: F2 r; w% v# k
[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs
* A- M6 `* z0 [mount error 22 = Invalid argument
4 N' s I4 `8 e9 q1 l3 t6 cCeph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。
5 q8 l1 _# y4 d" O, Z' x" o如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。
- n( f P! h# i1 l1 B+ K# @如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。
2 f% ^9 u0 B& e$ \8 Z( L8 L! o2 ]* i! A! Y# P# S$ {
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
6 B6 c f9 G9 I6 r. i# o上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如:
* K: a" l# O) z7 Z; l$ g2 ^5 U) `+ m' L. i
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret3 ]# O/ S- e, ]: c+ L5 X
如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs
8 A! _% b0 C9 U* q
% e% l/ a, n4 w2 P8 G2 K' e, x要卸载Ceph文件系统,可以使用umount命令。 例如:1 A( @! V* D$ c/ Y0 h
5 V5 r4 M4 ^- a. c$ O
sudo umount /mnt/mycephfs3 p' _6 j( l) b; l
提示:在执行此命令之前,请确保您不在挂载的目录中。- ?. M* ~- P/ s1 o8 I
FUSE
4 j+ L6 I+ Z% k+ c6 x
$ b, R$ _+ y$ ~; r9 Q. t* A' p$ a在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。
" Q1 U" C; s- a' m
1 s! h5 i' V' K% P在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。
5 n# e8 \) ? s. U! Y$ n8 F" n8 B0 Z m; d( ?
sudo mkdir -p /etc/ceph
! z u/ U1 {: A$ J8 gsudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf/ j B7 q7 Y; v5 m- r9 ]8 ~
在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。& H1 ]" @ w, B9 x% f
0 ~& {% Q6 I2 T! x; `* Msudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring
3 B6 s) P' T. c$ U$ C' A确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。
7 e/ ~ p2 D$ ?: [; f% E, l. @, {9 _& Y b# w* C: I. {
要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如:
9 R! {2 f* S+ |, ?6 x Y# p' \# u- e
4 L7 l/ |6 {* W6 C! U' e: m. ?sudo mkdir /home/usernname/cephfs
* D$ ]* u* A/ z( B* {) ksudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
1 X# Z2 U$ K- Q, ?3 k( C如果您拥有多个文件系统,请使用 --client_mds_namespace 命令行参数指定要挂载哪一个文件系统,或者向ceph.conf中添加client_mds_namespace设置。7 c4 c& ?/ V. J$ @
4 ^9 Q& {# w$ s, u2 v
要自动挂载ceph-fuse,您可以在system fstab中添加一个条目。此外还可以使用ceph-fuse@.service和ceph-fuse.target systemd units。通常这些unit文件为ceph-fuse描述默认的dependencies和推荐的execution context。例如使用ceph-fuse挂载到/mnt:: Z3 _ r4 I1 b. d) P" `
: J* U9 ~! B" v5 C) s, Vsudo systemctl start ceph-fuse@/mnt.service- @ K* n( x/ J* P5 ^% M1 p5 r
持久化挂载点可通过以下方式进行设置:8 q9 X+ } d2 L& p! n! z1 P1 N
6 m* e6 x2 s/ }+ ~* `+ m
sudo systemctl enable ceph-fuse@/mnt.service
5 ` x {; U+ u( Q# W& f5 R9 L部署RGW
: C1 @) x: z: s, d. r7 @& y, r[图片上传失败...(image-ea6ad1-1599396610118)] e$ W0 c" @" Z1 C0 l9 `. D7 m
2 o4 J& s& ^; }5 P z6 J
Ceph Object Gateway原来叫RADOS Gateway,它是构建在librados之上的对象存储接口,为应用程序提供了一个RESTful gateway,用户可以通过HTTP协议访问Ceph存储集群。
9 T9 V' J( _/ H s% z
5 a4 n; @) k" K6 pCeph Object Storage支持两个接口:& t; e2 O1 `8 {) a
2 u7 W+ B8 e8 |3 W/ H0 v- }' }S3-compatible:与Amazon S3 RESTful API中一些子集兼容的接口,提供对象存储功能。7 n$ O3 u; m% `6 a' s F
! T/ P8 E9 p8 R* x
Swift-compatible:与OpenStack Swift API中一些子集兼容的接口,提供对象存储功能。
! h% f6 V4 |9 [ X
1 G+ T8 c2 l8 q$ a ^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检索它。
. V+ M) D, D& L. v' P/ W+ a2 `6 b9 K: H1 B) d, a2 r9 _
Note:Ceph Object Storage 不使用 Ceph Metadata Server% T% ?9 h3 A1 O1 V/ i6 e& g7 s
# 必须部署MGR,才能部署RGW$ H, S: B7 u i
5 u9 n+ D! N' T4 B: J3 U2 }
[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW
% e# R! t0 \8 L0 }# wroot 2799 1 0 13:13 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph/ C3 Z1 `: w- u- y. k6 Z
" }' U* Z9 s% [0 d+ s# 重启RGW
) _2 h N# ^9 b) F$ Z: ^0 |9 E: a; K[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service
% ]$ U9 ~* j, O1 Z5 E+ f% k[root@cephL ~]# systemctl restart ceph-radosgw@rgw; m& y/ N0 i% w0 N) i/ I
' \' L7 r) |+ H3 D' @4 b" E) a
问题一,这难道是ceph-deploy 2.0.0的坑?8 z) s" U. t, u- S; j! [
[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log
- K* x' l2 n3 }, n6 i+ W3 |2018-05-11 22:30:31.999421 7f537c31fe00 0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 34502 v6 W. A9 a- }1 P6 t2 Z3 n9 R3 Y
2018-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
7 |) R& j- k c- h& _2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
7 B/ @5 f( k$ h! n. L8 g2018-05-11 22:30:32.021563 7f537c31fe00 0 librados: client.rgw initialization error (2) No such file or directory
9 x0 q1 l! \/ ~* C5 d M( U0 m1 ?2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)7 }8 C8 [, I' ]. [; O. X9 w' H6 J
/ B+ ~7 P% l7 E4 d$ L[root@cephL radosgw]# pwd
: X# y# Q: \6 [9 p/ X9 ~% D; x/var/lib/ceph/radosgw
4 y$ U, K& I5 A% i% U2 ][root@cephL radosgw]# ls# T) @! C! Y f7 J. i
ceph-rgw.RGW
( L1 g6 `/ D2 b x9 v7 n. p& c[root@cephL radosgw]# mv ceph-rgw.RGW ceph-rgw
% u% ~( G; i1 ~, {+ _/ s9 H z* e9 K7 Y5 |! e; B- A
: W# y5 u- e9 e9 f# a配置变动
1 v) ~( Y1 j/ Q: T5 I在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。0 o2 f9 d) t9 X
7 x4 [& ~8 k# @" r) E/ _4 I# 允许删除pool,需要添加
. y* v( q- ]' v: ]4 `& \mon allow pool delete = true9 ~6 ?/ q7 S0 Y- m. Q. U6 l
, B7 H, N& `( R0 _1 [* B1 S
1 M. V) O3 c* h1 W8 B, @$ \6 s/ D
|
|