|
|
Ceph-disk手动添加OSD使用方法2 a- }2 h- C+ v4 N
尝试了多种方式,并在网上搜了一下ceph-disk prepare的执行流程,总是有些意想不到的结果,让我很是迷茫,加上生产环境中,ceph的添加方式不是ceph-deploy工具执行的,只能考虑复现这种问题,最终通过下面的方式成功完成了osd创建,而且创建后的osd和原本使用ceph-deploy推出的集群状态保持了一致。而且这种方式创建出来的osd不再像之前的文档那样,需要添加fstab进行osd分区的挂载,而是通过systemd自动管理挂载。
' Y. V# j7 ?6 h* L `- t q
& H% i& a" y/ I( ^1 v$ O( d, o8 k1、准备磁盘$ h; w. F9 E2 @
[root@ceph-1 ~]# sgdisk -Z -o -g /dev/vdb
4 o7 j W, Y, F8 W% qGPT data structures destroyed! You may now partition the disk using fdisk or
& n$ A, i# l+ K8 |2 \& G0 c; s9 Mother utilities.9 i, }" g. T- ~3 k8 w: G8 O- l
The operation has completed successfully.5 @& k1 ] H2 D1 s1 J( s# l
2、对磁盘进行分区+ J9 c6 D# g( F0 N6 z
[root@ceph-1 ~]# sgdisk -n 2:0:+5120M -c 2:"ceph journal" -t 2:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sde
% e. b; a- p% O) w) I: W* T: W6 eThe operation has completed successfully.' ~( [) Q0 q) N- \5 T# S
[root@ceph-1 ~]# sgdisk -n 1:0:0 -c 1:"ceph data" -t 1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d /dev/sde
8 q0 R! Q2 ?$ I" v! k6 i: LThe operation has completed successfully.) \- Y0 W( n* J- _( J. ]& ~
其中-t指定的是分区类型,在ceph中两种类型分区的type code:) s" `. v: ?2 x+ o% W! g
TYPE+ E8 e0 P% r7 y {
TYPE CODE
/ {& @5 Q: K ]' l+ BJournal
# _) s2 @' V e8 ?9 i45b0969e-9b03-4f30-b4c6-b4b80ceff106: v6 r5 A) w w
osd
2 w" U5 d4 {( Z2 g" Z4fbd7e29-9d25-41b8-afd0-062c0ceff05d
7 k. Y3 g' B# X* _3 K+ nCeph通过uuid来区分对应的分区是osd还是journal,然后再决定数据存放在哪里。& U# l# r3 F- s: ~5 o) v& w$ V
3、格式化osd分区1 y# J! a7 K6 Q0 V% _0 S* L
[root@ceph-1 ~]# mkfs.xfs -f -i size=2048 /dev/sde1, O( `6 x2 n$ z' P
4、创建osd
; ?: p5 M8 f9 ^, a) ][root@ceph-1 ~]# ceph osd create: _6 D% M4 i* V9 g4 {
11% y" {2 U+ f7 h2 k
5、创建osd数据目录7 j# s( v3 c L6 W; o
[root@ceph-1 ~]# mkdir /var/lib/ceph/osd/ceph-11 u0 F7 Y4 b5 u
6、挂载分区到osd的数据目录9 Y2 H, i2 [6 o2 @- ?- K# s$ b
[root@ceph-1 ~]# mount /dev/sde1 /var/lib/ceph/osd/ceph-11// Q3 { F* n8 G1 S. p2 G
7、初始化osd数据目录: O. g! X/ {% X( B' z# s! I
[root@ceph-1 ~]# ceph-osd -i 11 --mkfs --mkkey
! x$ |/ S6 Q/ k3 C: l$ S' b: x' ^8、指定journal分区
4 Y3 Q; e" f: |2 K' C删除自动生成的journal文件
4 w- U6 ]. H: X5 z[root@ceph-1 ~]# rm -rf /var/lib/ceph/osd/ceph-11/journal ( D1 q6 |0 g, c; H! `$ F6 |
查看要用作journal分区的sde2对应的uuid- Y3 ^! H y: D- U1 N
[root@ceph-1 ~]# ll /dev/disk/by-partuuid/ | grep sde2
# ^/ K) r3 g- u0 G" F2 C( ^lrwxrwxrwx 1 root root 10 Aug 31 11:58 adc17c4e-4aa8-44dd-8351-f9a1f8895455 -> ../../sde2$ S3 d: z8 F, {$ b4 K+ Z
把sde2的uuid创建软链为journal a) h7 u2 K6 N" b r9 d
[root@ceph-1 ~]# ln -s /dev/disk/by-partuuid/adc17c4e-4aa8-44dd-8351-f9a1f8895455 /var/lib/ceph/osd/ceph-11/journal; I/ [- d& k3 Y, B( p
在osd数据目录下写入journal分区的uuid
* w/ K& J& o# [! C1 F[root@ceph-1 ~]# echo adc17c4e-4aa8-44dd-8351-f9a1f8895455 > /var/lib/ceph/osd/ceph-11/journal_uuid5 t( d3 i& {0 S
创建journal, C. j5 ~# ~5 c' e* h
[root@ceph-1 ~]# ceph-osd -i 11 --mkjournal, F+ ?/ U7 W- t- g( s
9、注册osd的认证秘钥
2 p% E4 H% G* d7 W6 z; Y9 o: L* d[root@ceph-1 ~]# ceph auth add osd.11 mon 'allow profile osd' mgr 'allow profile osd' osd 'allow *' -i /var/lib/ceph/osd/ceph-11/keyring
3 O' L) k6 `% T$ D9 R- A$ `10、把osd添加到crush map
( F: e* c. N& ~% w6 F& S. a[root@ceph-1 ~]# ceph osd crush add osd.11 0.01459 host=node3, A) C1 y" K/ o) R& r' I+ f& x" s. j% ?
这里的权重建议跟原本的osd权重保持一致,可以通过ceph osd tree查看之前添加的osd的权重值6 I5 X" G4 B* q6 N& u
11、修改数据目录权限
; x" J. S- |2 [$ }, C. I[root@ceph-1 ~]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-11
+ U8 |2 }2 ^' {12、激活osd! M: [6 d2 a k" U5 J
[root@ceph-1 ~]# ceph-disk activate --mark-init systemd --mount /dev/sde1
/ h; n% P4 S7 ?5 c0 N7 A ^- T激活完成后osd会自动启动,此时可以使用ceph osd tree查看osd的状态
. O n3 G, @, j1 d* X9 m) X% Q
" R/ r' u( Q% K" ~# P2 g) b7 { |
|