|
|
安装pip和ceph-deploy0 S8 H! P. m+ |/ k2 X E
[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"' d* M& ]; U5 y2 V3 V1 q
[root@cephL ~]# python get-pip.py
) q1 z% T! H4 J( B! D: H4 ][root@cephL ~]# python -m pip install -U pip
% ? q/ i8 w& n, |/ b6 L" A[root@cephL ~]# pip install --upgrade setuptools! ~: j2 ~) w0 n" g
[root@cephL ~]# pip install ceph-deploy, C9 b! c/ c6 q* o
[root@cephL ~]# ceph-deploy --version
8 V \: g+ I [ v$ V# f2.0.0
% s; [- X( u( I3 }; {安装ceph软件包- z: M u' f: F8 e) y2 `
[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy: Z4 K6 t9 |/ E- |. e5 X
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous- Z9 l- T3 s- j# w, P! S) E
开始部署一个新的集群,然后为它写一个CLUSTER.conf和keyring' x* {. n! L+ ~- Q
[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24 --cluster-network 192.168.56.101/24 cephL
. s% Z/ V ^+ ~' x9 w. ]部署MON5 S2 A5 G* |# G7 u8 ]
[root@cephL ceph-deploy]# ceph-deploy mon create-initial
8 m; L: n! a! _[root@cephL ceph-deploy]# ceph-deploy mon create cephL
1 W) v* W9 j( P7 ~; b9 H \# n9 Kceph 1110 1 0 12:57 ? 00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
5 M' [( H7 s% S1 @1 W$ E* a部署OSD' y# L/ u Q; S) S) @
bluestore方法
( C r' s+ y5 q3 g
4 f0 ?- B2 y$ |9 v9 U# 在创建osd时,L版默认是bluestore
0 q. O3 A, H/ d" i[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL
8 }' i: m. d* @& ^. \* Y: q! aceph 1514 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
: j2 |' }) Y3 f+ N: ~) H# y1 E[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL; L. y, u( ^& ]' x! D$ k
ceph 1518 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph2 ^' h" N3 n% _3 j
遇到问题0 x* g! J# J0 W' p+ T* M9 z
& t ]( ?% |5 j2 s
[root@cephL ceph-deploy]# ceph -s; p @" n- C* p3 k$ J% v
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
' D5 b% v7 ^2 M# T! j; ?, }2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication7 W9 q; r+ R' ~( w" O& I0 F; H; ]
2018-04-10 12:00:19.660312 7fd1fe0ae700 0 librados: client.admin initialization error (2) No such file or directory
! W: u# p( c: Q0 m9 P( W0 T$ \" v[errno 2] error connecting to the cluster
/ O( Y7 X9 ~+ J' T& j; v' | z: b7 l; l9 g2 Q
[root@cephL ceph-deploy]# chmod +r *4 ?8 o" K1 s# M- Y1 h5 B
[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/
; R2 ^9 t8 [1 A/ n4 W: Q[root@cephL ceph-deploy]# ceph -s0 {0 U* |3 |4 c- P: r Q0 F
cluster:. g. q0 a& P1 n0 O/ T
id: 765752b7-1f77-4d0d-bc18-936b8ad409fd& u5 d/ ^- C9 j% j1 o9 _
health: HEALTH_WARN
9 ~/ } u: [. _" L- R+ [- W. @ no active mgr
" Q2 o3 ?" z4 G5 m: s. ~) t( y: }( _- \" X6 S0 A
services:
$ |3 v( r( Q, t: z mon: 1 daemons, quorum cephL, W' b: C" @0 g8 `7 k |* k6 j
mgr: no daemons active9 O- U- Z+ C3 N. R- T
osd: 2 osds: 2 up, 2 in
' p8 z& N- P! }- i# e# J" q1 W+ u, n# t$ ^* c, \6 y2 i7 I
data:* E M! g/ j" |$ g$ @4 ?+ A G
pools: 0 pools, 0 pgs
& a% G6 a8 `% X9 d1 k* x objects: 0 objects, 0 bytes
! H( }$ b/ T# z; p: F; f' Z9 C, x usage: 0 kB used, 0 kB / 0 kB avail, B1 h9 N3 P8 w% |% V: V/ x6 r
pgs:
0 M# S( u+ s7 [7 ]) q* Pfilestore方法
& i1 x6 h d! _) I$ O5 n+ u7 N
/ B. m4 D6 o8 W& z# 如果是filestore则需要对data device和journal device先做GPT partition
7 {9 e& P9 R. u/ a! J0 k! u0 L--data DATA The OSD data logical volume (vg/lv) or absolute path to device
4 u& X: F9 @3 t, _3 p, B0 P--journal JOURNAL Logical Volume (vg/lv) or path to GPT partition
7 A6 C4 v5 J7 F" n+ e' H" I, f% p$ o: h' m: H% G
[root@cephL ceph-deploy]# fdisk /dev/sdb
7 y. G2 i3 H5 G* h# x B+ O- r8 F. }WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
: u* c$ g, \2 E2 {4 [! F4 d! F欢迎使用 fdisk (util-linux 2.23.2)。 B! H1 ^5 v N6 d q
更改将停留在内存中,直到您决定将更改写入磁盘。
7 l! O9 w0 c7 p- {, t9 ~使用写入命令前请三思。4 C8 z9 i6 z+ r9 T. b7 B& _- M
命令(输入 m 获取帮助):g, A' r, h5 L- Y8 {3 @
Building a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)# ]3 D2 ~1 |+ B
命令(输入 m 获取帮助):n
4 ^) r4 I- C) l# c" Y分区号 (1-128,默认 1):# T/ z! u+ M/ P. C
第一个扇区 (2048-62914526,默认 2048):8 D5 }1 N( x! T
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):
1 U" h# D' A' r3 u( t: `已创建分区 1
! a5 n. t9 R! E- [, ~7 f$ Z$ C命令(输入 m 获取帮助):w7 b$ p5 P4 s1 f
The partition table has been altered!+ X2 J3 S' h9 \4 J5 b! |
Calling ioctl() to re-read partition table.
3 f, m- F2 x' ~; H' \# F6 F" ?正在同步磁盘。
" Q, V$ w& E) o9 k
7 {$ n3 G/ L8 G1 s2 v[root@cephL ceph-deploy]# fdisk /dev/sdc1 u# o( m6 \9 X1 {2 [/ v9 |+ A
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
; \7 j4 R* f, c% b欢迎使用 fdisk (util-linux 2.23.2)。
4 R4 A1 d/ X i更改将停留在内存中,直到您决定将更改写入磁盘。
/ B5 R/ Q5 n. [- S使用写入命令前请三思。) {5 y' K& i/ Z# `; y/ L) u
命令(输入 m 获取帮助):g
4 e4 P1 u& k1 z- HBuilding a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)8 W/ i! D; Z* b$ _! W8 I% D& D9 @, O9 L
命令(输入 m 获取帮助):n$ I! f; U/ d! M6 @2 F# B
分区号 (1-128,默认 1):
$ \& m# A% e y5 e, z第一个扇区 (2048-62914526,默认 2048):$ h$ X7 P1 I: c* q
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默认 62914526):) F5 \5 V- ^9 Y
已创建分区 1
5 X# T& q. e% [ B" ~' B v命令(输入 m 获取帮助):w" R9 m; ]0 e/ G; Z
The partition table has been altered!- ^; D1 ?. \* i4 V/ t
Calling ioctl() to re-read partition table.
8 {4 {+ y# J2 f3 g7 t0 q正在同步磁盘。. p( c, W1 q8 Z l# i* l
3 D. r5 ?& e% y+ U( }
[root@cephL ceph-deploy]# lsblk
3 e5 Z% ?! e, S$ m8 L% rNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
, M) g5 [; e8 \% Zsda 8:0 0 40G 0 disk . H6 m9 U) @5 p I
├─sda1 8:1 0 1G 0 part /boot
- y6 Y+ s: K* ?3 N$ J└─sda2 8:2 0 39G 0 part 8 ]- r. o+ Z4 L4 S& Y; t
├─centos-root 253:0 0 36G 0 lvm /: M# e) f2 Z! J/ }9 a
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
7 u, R. d' v7 x% X9 U/ d$ tsdb 8:16 0 30G 0 disk * z6 |3 F! P9 t, V
└─sdb1 8:17 0 30G 0 part
+ e1 ^" M1 r" N% Z* c9 k/ O2 H$ f& K" Bsdc 8:32 0 30G 0 disk
5 \0 g* E+ h$ r$ \' Q└─sdc1 8:33 0 30G 0 part 3 o% }. S) x& R% Z: H2 E
sr0 11:0 1 1024M 0 rom
' G! ?+ R1 ^' d' }, K$ t- E$ X! H3 v, x7 ?: H0 w4 z' K
[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL
5 X1 z l) {5 V5 m, o& D[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf$ u F' y& h0 v$ D
[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- I8 w1 Z! s+ ^! e
[ceph_deploy.cli][INFO ] ceph-deploy options:
+ L W1 [3 [6 i; u, u7 F[ceph_deploy.cli][INFO ] verbose : False- [9 k' w; A1 H* g7 J: I
[ceph_deploy.cli][INFO ] bluestore : None6 a% n2 b- q$ \. A
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>: S9 t3 D$ A# ?/ k
[ceph_deploy.cli][INFO ] cluster : ceph
+ @1 f8 r) s# ?, G2 B8 Y[ceph_deploy.cli][INFO ] fs_type : xfs. c) f- S/ o: b: m
[ceph_deploy.cli][INFO ] block_wal : None) B) W4 ?/ N8 }& A
[ceph_deploy.cli][INFO ] default_release : False% V) l& G0 }( z% F# }
[ceph_deploy.cli][INFO ] username : None
$ L. y' a1 M4 U5 z% }[ceph_deploy.cli][INFO ] journal : /dev/sdc1
" ^5 S: ]* B9 S. N( K. i9 |[ceph_deploy.cli][INFO ] subcommand : create
1 E+ m$ |6 l! D[ceph_deploy.cli][INFO ] host : cephL
" w: G# }7 D- _[ceph_deploy.cli][INFO ] filestore : True
5 D0 p, f0 |% @9 c3 w[ceph_deploy.cli][INFO ] func : <function osd at 0x225ae60>4 m- b f! z M' K1 ^
[ceph_deploy.cli][INFO ] ceph_conf : None/ v7 k8 h& g# d5 `/ X' l
[ceph_deploy.cli][INFO ] zap_disk : False
6 O0 ^) o T/ M# ?& j+ X[ceph_deploy.cli][INFO ] data : /dev/sdb1
2 _: p" O# N" r5 b[ceph_deploy.cli][INFO ] block_db : None6 A' j, l% M+ U+ W2 l
[ceph_deploy.cli][INFO ] dmcrypt : False1 M$ N$ L G& R
[ceph_deploy.cli][INFO ] overwrite_conf : False \3 o1 a. Y3 a, n
[ceph_deploy.cli][INFO ] dmcrypt_key_dir : /etc/ceph/dmcrypt-keys
, }" K% H: a" b2 J[ceph_deploy.cli][INFO ] quiet : False9 ^" ?- F+ k1 [# {
[ceph_deploy.cli][INFO ] debug : False2 [) R1 o! o ?; w4 M+ w' z4 ^
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb15 g8 q2 F4 f4 t" X8 {1 s
[cephL][DEBUG ] connected to host: cephL 8 r, M5 S# t' F2 u% v0 Y
[cephL][DEBUG ] detect platform information from remote host
6 v9 K9 V4 v- |8 `/ R: i2 g$ ~[cephL][DEBUG ] detect machine type8 A& C; u$ \1 b8 S' y- h4 T5 d
[cephL][DEBUG ] find the location of an executable6 q' Z; x$ W/ l1 V) j2 I" F6 c$ a
[ceph_deploy.osd][INFO ] Distro info: CentOS Linux 7.4.1708 Core
& }* Y2 ^( G2 _6 @[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
: r! @* R4 l, w H' M, y c4 C[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf2 P9 m7 S; r- q; `/ |5 ~
[cephL][DEBUG ] find the location of an executable
; w4 p( c8 h; Y1 \[cephL][INFO ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1
9 D8 J' m0 A+ @# `9 N[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key; n; ?& b. i# w0 o, [8 A6 z
[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-132880a10d313 D8 N2 L3 N4 R
[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb11 b4 h0 A! c; S9 h
[cephL][DEBUG ] stdout: Physical volume "/dev/sdb1" successfully created.
1 K: z3 z3 _. [4 n( N" Y* O$ Z7 @/ d[cephL][DEBUG ] stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created/ q8 V6 z, U/ e5 s' ?9 B | ~, `) H
[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946
' L5 \: ]3 E! R8 p7 w0 g6 k[cephL][DEBUG ] stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.: }0 |- |( q: n6 J
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key% X2 J+ ?* e9 G4 ~: F( f
[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( S s" `: g: R, Z- P
[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
( } z& k, G# Z' n[cephL][DEBUG ] = sectsz=512 attr=2, projid32bit=1* m( S h% \" w; Q$ g2 |
[cephL][DEBUG ] = crc=1 finobt=0, sparse=0
! N" G7 b. K$ k& \! v/ v! |[cephL][DEBUG ] data = bsize=4096 blocks=7863296, imaxpct=257 X9 v9 K7 X) f9 c/ d, [8 L n, g
[cephL][DEBUG ] = sunit=0 swidth=0 blks3 c, k. {( N7 a: T u7 r
[cephL][DEBUG ] naming =version 2 bsize=4096 ascii-ci=0 ftype=1
4 X& F/ L$ ^8 d. A' _0 }0 z0 Z[cephL][DEBUG ] log =internal log bsize=4096 blocks=3839, version=2
+ ^: O) t# T# V& ]3 j- e[cephL][DEBUG ] = sectsz=512 sunit=0 blks, lazy-count=1
5 e8 i6 G; N' D. _- j x[cephL][DEBUG ] realtime =none extsz=4096 blocks=0, rtextents=0
3 b: v* ^; }; a' m @3 U[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
5 ?+ s8 ^0 D: S) M& ?[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
; T9 _# L" }) r5 B9 @& g4 o[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal7 ]0 y1 `# v2 E: e5 W, @* i* l
[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* R9 i* R) w1 l$ Z( w3 u
[cephL][DEBUG ] stderr: got monmap epoch 1
& \2 `6 c9 z K6 Z# `9 j7 v[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc19 K7 w8 `# G4 ~) t
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
; I7 g* I3 @8 X4 ]; ^& B2 f4 G/ 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
2 @# u$ m0 V2 `& @+ ^; l9 J[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?) journal9 i- u. p- j; x! y6 ?4 g! b, k
[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic* l: [, i, d* c3 o% A/ f
[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic2 ~5 u: M1 O2 V, G" A j
[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory: e3 C# N+ s4 ]) o
[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$ C1 p! p# a$ P
[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==9 y, }4 `- I" h4 n
[cephL][DEBUG ] stdout: creating /var/lib/ceph/osd/ceph-0/keyring
' W$ V x% H0 @* R1 Z6 E: l[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)6 O4 a- Z( \$ |8 N4 L) I! B
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
3 _& Y; {/ q" q) [[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1* S% h% k2 T! Y& A+ k; @1 f
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal( j- g. ~ C: r/ C3 R4 `
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
) }; H1 c! S; s! o% _1 o[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31* w5 R$ a+ T' _9 @( y) F
[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.
# {* W N" u0 u8 _5 i[cephL][DEBUG ] Running command: systemctl start ceph-osd@0
4 k% [& E2 v# T6 _[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 0) B. E$ x. v, K" C+ |/ ?, }
[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1
" q% ?/ [; n4 c! S5 J[cephL][INFO ] checking OSD status...! ?& l& S! @. ?3 v7 G1 i! r" r
[cephL][DEBUG ] find the location of an executable
8 O4 U2 f$ V h' s4 j$ h3 s1 f" U$ r[cephL][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
" O8 U- r' S) U s! I$ H( o$ f[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.
9 j1 }6 d; n5 R5 i* H/ `' O; e9 ]移除OSD; T! g6 B* v+ c' X* s( E3 A, i: x- u) c
# 使OSD进入out状态
2 y9 n' Y# @! u, p$ j[root@cephL ceph-deploy]# ceph osd out 0( F6 [* |0 j7 k0 H& A7 L
marked out osd.0.
7 F* A) c4 t- V: A4 R, q# 观察数据迁移
9 ^9 z f1 b, g! Z# o[root@cephL ceph-deploy]# ceph -w
, p4 [) g0 Z0 D5 D; V( j. q% S# 停止对应的OSD进程
/ M2 O' N( H# `- ]% |" c: V[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
: O9 h/ N, X* f6 Q; s# 清除数据
( n; \$ R j( P5 z/ ^[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
' c/ X' M+ Y+ K* L8 M; F& ?$ d3 B- h5 ppurged osd.0
K- z8 z; t. D8 ?8 l, z# 在ceph.conf中移除osd配置
) G0 D- Z. x3 L M; E[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf 3 r1 V3 }, @( y+ t1 r$ d
部署CEPH-MGR
. r% a6 g& U) h- Binstall netstat tool; i3 O I5 e; z2 W7 |. t* n2 u
[root@cephL ~]# yum -y install net-tools
2 D2 ]$ z7 `' c7 ?( p/ w3 _% Q% ]! B% T2 ?' ]4 X
[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR1 Q; m1 Y$ l/ U& H- x2 N
ceph 1111 1 0 12:57 ? 00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph
6 q+ o# ^" t! d/ `0 E2 y. p[root@cephL ceph-deploy]# ceph mgr module enable dashboard
9 d4 W, Z+ X/ n) K7 M9 z% s' c! X' K" u+ C8 x% ]/ M
open 7000 port5 M) p4 {! \* |6 P) U
[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
. t7 y+ s( M- O& S[root@cephL ceph-deploy]# sudo firewall-cmd --reload& I, L" w* Q5 B/ a% B. l" ]* i$ S
相关命令
7 S7 J0 x% E& p# [% S
3 B5 q: p" ` r[root@cephL ceph-deploy]# ceph mgr module ls
! ?: {2 t D7 q* q4 p[root@cephL ceph-deploy]# ceph mgr services
# G* _. C- a7 q* r! m[root@cephL ceph-deploy]# ceph tell mgr help' {2 b( E0 z. ^
部署MDS并创建CEPH FS
+ z' S8 }6 z2 i8 _7 o[图片上传失败...(image-7d8937-1599396610118)] a: M. s- \+ h1 e
# g+ J M7 M( v) q4 S[root@cephL ceph-deploy]# ceph-deploy mds create cephL
8 r) b* f; f) x3 M! S2 k7 Pceph 2150 1 0 13:00 ? 00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph" G; C8 o) H, J6 W7 I
Ceph文件系统至少需要两个RADOS pool,一个用于存储数据,一个用于存储元数据。7 i0 s" u! G& K8 `
/ y! M- u% E) U; M" [2 [3 R$ B
配置这些pool时,可以考虑:2 A! |! r! N) c0 u
+ R- G, p0 @, \5 F+ B
对元数据pool使用更多的replication数量,因为该pool中的任何数据丢失都可能导致整个文件系统无法访问。1 U; |, y- d1 E( M6 K n1 p
* s& V$ l8 c# e, d 为元数据pool使用SSD等较低延迟的存储设备,因为这将直接影响客户端上文件系统操作的延迟。
1 j4 I) J8 {3 [1 k9 C; ?9 E4 b: }& s3 D; T
ceph osd pool create cephfs_data <pg_num>- k2 o$ d6 J. m: ?: [0 s" @% ^' V
ceph osd pool create cephfs_metadata <pg_num>! I% f. y8 M+ A; W% n
例如:
/ J% L; B( V5 Y, x[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 320 Z3 O) K3 T0 j
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32 L( ]8 S) {0 }% A
更改pool的副本数7 o, x6 ]/ W& g+ C) U, {
9 e3 s( _ A7 y! I! Y& c- E
ceph osd pool set {poolname} size {num-replicas}
. a+ m X6 k: H, Y2 i例如:1 ^5 }& @7 D( N
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 17 H) _7 y6 a- R5 z8 L. b
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1$ Z' Z- H' O% ^3 P) t* l
一旦创建了pool,就可以使用fs new命令启用文件系统:6 r0 Q7 n# m8 i% s: s; ]* ]
& f1 b) K: C2 g6 y
ceph fs new <fs_name> <metadata> <data>
7 `1 ?2 e" ?1 u5 b" B+ A例如:* D) m9 s* _8 a6 [4 R: r" g
ceph fs new cephFS cephfs_metadata cephfs_data2 J! f! W% a' X1 b8 s! ~0 ^
一旦创建了文件系统,您的MDS将能够进入active状态。例如,在single MDS system中:2 H- H- u e9 r5 C* E
0 I! K2 u) [( j7 W[root@cephL ceph-deploy]# ceph mds stat
! x8 u+ J* T9 N; I/ f/ w) EcephFS-1/1/1 up {0=cephL=up:active}
9 o+ r% Q0 y8 }一旦创建了文件系统并且MDS处于active状态,你就可以挂载文件系统了。如果您创建了多个文件系统,在挂载文件系统时,选择使用哪一个。
4 O% ^' B. M8 A
; X' h# K* f% l7 M- ~: c如果创建了多个文件系统,并且client在挂载时没有指定挂载哪个文件系统,你可以使用ceph fs set-default命令来设置client默认看到的文件系统。
" [% I/ N5 b/ ^( G7 V" f h1 r) c# k/ f& {: W2 W+ g- j
挂载CEPH FS ( File System ) 有两种方式:
1 m+ C( h! M- R+ a; q0 G! s! O. E5 K
$ ~: Z; H% [/ m; S+ LKERNEL DRIVER( e* K# f$ d& i- \& F' s
. U) a2 O5 N, T( x: q. c要挂载Ceph文件系统,您可以在知道monitor主机IP地址的情况下使用mount命令,或使用mount.ceph utility将monitor主机名解析为IP地址。例如:4 G+ A0 R, e' [" n1 e. _! C
* d0 D: }& _, R9 w7 ]sudo mkdir /mnt/mycephfs
; }' c& G; A1 S! p* Ysudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
( V: K& i- z5 k' }& o! ~例如:1 {- U2 F3 \9 m
[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs; I0 x( Y8 v- o9 ]8 w* e+ v% t
mount error 22 = Invalid argument
. |2 m: q% `5 B5 b6 y# JCeph 10.x (Jewel)版本开始,如果使用kernel方式(无论是krbd还是cephFS)官方推荐至少使用4.x的kernel。
/ ^7 G' J; t6 ]5 {. F如果无法升级linux kernel,那么映射rbd请使用librbd方式,cephFS请使用fuse方式。$ |& r- U! c# u* o! s
如果挂载Ceph文件系统时开启了cephx authentication,您必须指定user和secret。
* J( z0 y2 ~+ h- I& }9 ?+ i4 T3 H. G# P- [; N5 n7 R/ Y9 a
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
( D3 \4 W" U( [上述用法在Bash history中留下了secret。更安全的方法是从文件中读取secret。 例如:* A" D- g* }9 Q
( _. C. I3 a" |0 `. w1 Nsudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
1 L Q' b1 y* b如果您有多个文件系统,请使用mds_namespace选项指定要挂载的文件系统,例如-o mds_namespace=myfs7 P4 B% G! t( q" P
4 u7 u& Y$ ~% z$ i" H, T& [
要卸载Ceph文件系统,可以使用umount命令。 例如:& w3 s+ p0 P/ q7 S" `1 j x
6 f1 M" S9 j& V. w* }( w. f G
sudo umount /mnt/mycephfs
9 W& z K: O8 u( Z5 v6 Y+ |3 R提示:在执行此命令之前,请确保您不在挂载的目录中。7 S% ^2 c4 k/ @$ p) V: C0 Q" m
FUSE
6 ^9 @0 w( }# {. L# C6 K8 `
/ K$ J1 D" L& S: a! B在用户空间(FUSE)中挂载Ceph文件系统之前,请确保客户端主机具有Ceph配置文件的副本以及Ceph元数据服务器的CAPS keyring。
- P3 a5 T, a$ [! [3 W( A. T8 u7 H5 ]1 `6 S2 P3 n3 P8 j* q
在您的客户端主机上,将Ceph配置文件从monitor主机复制到/etc/ceph目录。
6 @' j8 O; Z f. u' u
+ n: F( r' |" i) p# f& _sudo mkdir -p /etc/ceph
7 X; _4 f2 [- Y: {3 Tsudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
9 }* `$ _( }* h在您的客户端主机上,将monitor主机的Ceph keyring复制到/etc/ceph目录。1 R0 a- I$ z. h, q+ w) {
2 t' p0 [. U2 U+ m. @! ]# u9 S
sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring& \, }1 @% ]% z1 |9 u9 \: j
确保Ceph配置文件和keyring在您的客户端机器上设置了适当的权限(例如,chmod 644)。
* O1 r( B/ V- z) P% u
! v* P0 a9 p* H# L要将Ceph文件系统挂在为FUSE,可以使用ceph-fuse命令。 例如:
) B2 E$ w: W: j0 m, ~' @% C, b
( P6 q6 L# f/ ^$ J9 g' ~sudo mkdir /home/usernname/cephfs& e3 M, i/ L( z! t* `
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs2 A# R" i! f1 H8 H( c* t8 i3 N
如果您拥有多个文件系统,请使用 --client_mds_namespace 命令行参数指定要挂载哪一个文件系统,或者向ceph.conf中添加client_mds_namespace设置。
9 ?2 K. r4 l5 ?+ |
! i) ~( ]" b- p" F, I要自动挂载ceph-fuse,您可以在system fstab中添加一个条目。此外还可以使用ceph-fuse@.service和ceph-fuse.target systemd units。通常这些unit文件为ceph-fuse描述默认的dependencies和推荐的execution context。例如使用ceph-fuse挂载到/mnt:
7 h2 j: \2 n, B9 W. H( A. u( w4 e4 Z
' z& b# V7 c; ~7 l. ksudo systemctl start ceph-fuse@/mnt.service
2 x2 O+ f3 ?, V" k持久化挂载点可通过以下方式进行设置:1 b" e: ? W3 S8 U7 N
" o: j D- V0 Esudo systemctl enable ceph-fuse@/mnt.service
$ o0 ?9 `" R" [3 I部署RGW( O8 T! L- u6 B) o
[图片上传失败...(image-ea6ad1-1599396610118)]3 N; O5 \) f2 O3 T' h v2 G1 c( u! h
' k8 V- t8 P; _3 [. F! p4 w9 Q
Ceph Object Gateway原来叫RADOS Gateway,它是构建在librados之上的对象存储接口,为应用程序提供了一个RESTful gateway,用户可以通过HTTP协议访问Ceph存储集群。0 u4 o7 r' w5 b% n* n" d
' L# m9 F% z5 J! a4 y# i7 u/ VCeph Object Storage支持两个接口:
" L8 L# R/ V2 q3 C1 K- N3 v2 ^% @: I, `; G0 E9 F, d
S3-compatible:与Amazon S3 RESTful API中一些子集兼容的接口,提供对象存储功能。
. c2 m3 l8 U. G2 B8 L, V/ \, n% l& Y7 k& f9 V" {
Swift-compatible:与OpenStack Swift API中一些子集兼容的接口,提供对象存储功能。) f3 G( h0 E7 _- \4 V& s
: x, z+ c; T9 ~' Z$ o9 d: kCeph 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检索它。
3 A) H/ `; J _) O9 Z5 p% Q7 T3 a: m% `+ s% H; C* [- m
Note:Ceph Object Storage 不使用 Ceph Metadata Server
! A: ?) n9 A4 ?, ?, H3 Z# 必须部署MGR,才能部署RGW: h2 n& ]0 ^$ X% G w4 f" k- @
% m! `6 T& A- G- v: w
[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW
% [1 v" [$ v$ o, ^$ D. N5 troot 2799 1 0 13:13 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph
5 {8 d: T( m( W9 ]( M' l$ t
. n" t/ O' o, r9 G& R8 Y! F% h# 重启RGW
. `/ h6 U# V r) B[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service% P. N8 N. L) B
[root@cephL ~]# systemctl restart ceph-radosgw@rgw
8 h; ]2 w2 K3 H6 \5 ]/ b& M+ e& a1 ~
问题一,这难道是ceph-deploy 2.0.0的坑?
0 V+ {0 [6 \' H7 s+ C' t/ \2 K9 p: R[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log% ^2 a! Y( N4 [3 d/ B F) ?7 g) O
2018-05-11 22:30:31.999421 7f537c31fe00 0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 34501 K' D6 P6 @: y7 p: ^
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! h; E; w+ f0 q4 f
2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication9 \- ^3 q% g8 ^, e* S |
2018-05-11 22:30:32.021563 7f537c31fe00 0 librados: client.rgw initialization error (2) No such file or directory
e$ d6 z$ @8 N. J5 U/ F& K2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)" M* k! {) ]) D
3 [* H3 j6 o9 [7 B4 k3 B; s
[root@cephL radosgw]# pwd
1 l( c. u! R; Y6 h/ M% L/var/lib/ceph/radosgw
+ r5 \; K2 W4 }2 `# [ l[root@cephL radosgw]# ls
! U; F2 u; [) ^ceph-rgw.RGW
$ \1 i3 F/ W. G9 T, X4 \6 d[root@cephL radosgw]# mv ceph-rgw.RGW ceph-rgw 0 A, w5 `$ ^* @. n# {+ x
/ R; k% \+ f' x7 f
; y1 K$ K; ^( W' Z" u配置变动
7 @3 k& r- [: h0 p& D+ F在L版中,删除pool的操作做了强制限制。需要在/etc/ceph/ceph.conf中加入相关参数才允许删除pool。& l; M$ |3 P& p: q; @
' k4 F1 _! ]1 [/ P# 允许删除pool,需要添加6 R. j" k5 c7 A9 U- @1 i& x
mon allow pool delete = true
1 ?# Y" B" i0 A8 |
% i' I& f. E7 z; S6 w, r$ W6 }4 x
* N3 I* F" `. `9 l! P7 p: j' \- K$ o |
|