获取代码并安装git clone https://github.com/ceph/ceph.gitcd cephgit submodule update --init --recursive./make-distrpm -bb ceph.spec0 T* P% I5 ~% }7 B
, G+ M' [, C' n: ?9 h生成rpm安装包后进行安装,这个过程就不讲太多,根据各种文档安装上最新的版本即可,这个代码合进去时间并不久,大概是上个月才合进去的 配置集群首先配置一个filestore的集群,这个也是很简单的,我的环境配置一个单主机三个OSD的集群 [root@lab8106 ceph]# ceph -s cluster 3daaf51a-eeba-43a6-9f58-c26c5796f928 health HEALTH_WARN mon.lab8106 low disk space monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0} election epoch 4, quorum 0 lab8106 mgr active: lab8106 osdmap e16: 3 osds: 3 up, 3 in pgmap v34: 64 pgs, 1 pools, 0 bytes data, 0 objects 323 MB used, 822 GB / 822 GB avail 64 active+clean[root@lab8106 ceph]# ceph osd treeID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.80338 root default -2 0.80338 host lab8106 0 0.26779 osd.0 up 1.00000 1.00000 1 0.26779 osd.1 up 1.00000 1.00000 2 0.26779 osd.2 up 1.00000 1.00000
, l/ M( D0 X$ ^' e. Y# \
$ V1 D/ l4 Z) V- B5 ^- v# d0 H写入少量数据[root@lab8106 ~]# rados -p rbd bench 10 write --no-cleanup
8 t+ M6 J1 @! ?& q; m
/ K) W1 r+ T# Q3 ?0 j, M T9 z设置noout[root@lab8106 ~]# ceph osd set nooutnoout is set2 A* ?0 r+ p( m
/ @- b: x- X# W% C: b9 F停止OSD.0[root@lab8106 ~]# systemctl stop ceph-osd@0[root@lab8106 ~]# ceph osd down 0osd.0 is already down.
6 ?. V4 D" h, |: s9 B5 p" X" q8 P3 B) [9 I3 ~; N* z
将数据换个目录挂载,换个新盘挂载到原路径 [root@lab8106 ~]# mkdir /var/lib/ceph/osd/ceph-0.old/[root@lab8106 ~]# umount /var/lib/ceph/osd/ceph-0[root@lab8106 ~]# mount /dev/sdb1 /var/lib/ceph/osd/ceph-0.old/[root@lab8106 ~]# mount /dev/sde1 /var/lib/ceph/osd/ceph-0/[root@lab8106 ~]# df -h|grep osd/dev/sdc1 275G 833M 274G 1% /var/lib/ceph/osd/ceph-1/dev/sdd1 275G 833M 274G 1% /var/lib/ceph/osd/ceph-2/dev/sdb1 275G 759M 274G 1% /var/lib/ceph/osd/ceph-0.old/dev/sde1 280G 33M 280G 1% /var/lib/ceph/osd/ceph-0
. Q& `) l6 B+ @' L$ y/ K# I) H* W& @9 c. p. s, F# A# X% l) X( k" w( z
在配置文件/etc/ceph/ceph.conf中添加 enable_experimental_unrecoverable_data_corrupting_features = bluestore
: U& f( |; Y* c0 ` b' j6 ^5 {4 a, m3 _9 }; W$ D
如果需要指定osd的block的路径需要写配置文件 在做 ceph-objectstore-tool --type bluestore --data-path --op mkfs 这个操作之前,在配置文件的全局里面添加上 bluestore_block_path = /dev/sde2 然后再创建的时候就可以是链接到设备了,这个地方写全局变量,然后创建完了后就删除掉这项配置文件,写单独的配置文件的时候发现没读取成功,生成后应该是这样的 [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0total 20lrwxrwxrwx 1 root root 9 May 3 17:40 block -> /dev/sde2-rw-r--r-- 1 root root 2 May 3 17:40 bluefs-rw-r--r-- 1 root root 37 May 3 17:40 fsid-rw-r--r-- 1 root root 8 May 3 17:40 kv_backend-rw-r--r-- 1 root root 4 May 3 17:40 mkfs_done-rw-r--r-- 1 root root 10 May 3 17:40 type
( H) M9 K+ u( C3 w. z6 ~5 A8 ^ _$ x% O2 m# t, o4 D* g- M
如果不增加这个就是以文件形式的存在 获取osd.0的fsid[root@lab8106 ~]# cat /var/lib/ceph/osd/ceph-0.old/fsid b2f73450-5c4a-45fb-9c24-8218a5803434
. b6 W8 M' z$ l# ]- y
3 G/ T: ~9 x( y# E; b0 \4 t创建一个bluestore的osd.0[root@lab8106 ~]# ceph-objectstore-tool --type bluestore --data-path /var/lib/ceph/osd/ceph-0 --fsid b2f73450-5c4a-45fb-9c24-8218a5803434 --op mkfs: `: P% k( z% h- p
1 V* x6 @, Q7 f5 d/ F转移数据[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[root@lab8106 ~]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
8 _" D$ P8 B) Q& t+ L8 | s' l2 |( ?/ g6 g; L" b7 C" {- e
这个操作是将之前的filestore的数据转移到新的bluestore上了 启动OSD.0[root@lab8106 osd]# systemctl restart ceph-osd@0, O) R4 H4 y6 h9 i% n
/ ^' A6 e+ Z: M: Q% P+ E2 Z
检查状态 [root@lab8106 osd]# ceph -s2017-05-03 17:05:13.119492 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore2017-05-03 17:05:13.150181 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore cluster 3daaf51a-eeba-43a6-9f58-c26c5796f928 health HEALTH_WARN noout flag(s) set mon.lab8106 low disk space monmap e2: 1 mons at {lab8106=192.168.8.106:6789/0} election epoch 4, quorum 0 lab8106 mgr active: lab8106 osdmap e25: 3 osds: 3 up, 3 in flags noout pgmap v80: 64 pgs, 1 pools, 724 MB data, 182 objects 3431 MB used, 555 GB / 558 GB avail 64 active+clean
4 _' O c( d% J4 d. d
3 G, U2 W% @5 D, _$ o成功转移 不同的block方式[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0/ -al|grep block-rw-r--r-- 1 ceph ceph 10737418240 May 3 17:32 block[root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-4/ -al|grep blocklrwxrwxrwx 1 ceph ceph 58 May 3 17:16 block -> /dev/disk/by-partuuid/846e93a2-0f6d-47d4-8a90-85ab3cf4ec4e-rw-r--r-- 1 ceph ceph 37 May 3 17:16 block_uuid& m" q# S c& A" w
8 N J/ N$ G5 W$ f; t1 w9 I
可以看到直接创建的时候的block是以链接的方式链接到一个分区的,而不改配置文件的转移的方式里面是一个文件的形式,根据需要进行选择
2 U$ V4 d/ |: G# i# Q( I3 m% t& k转移 工具 的出现方便了以后从filestore到bluestore的转移,可以采取一个个osd的转移方式将整个集群进行转移,而免去了剔除osd,再添加的方式,减少了迁移量,可以一个个的离线进行操作 ceph的工具集越来越完整了
7 y( `2 u) d, O% U$ m* D) g! W
0 M8 A$ N$ L3 c6 R" Y. _/ Z- l5 T# Q7 h) B K
# n, M% H7 X( r3 }: l8 i0 R' L3 t7 |4 b
|