Ceph OSD从filestore 转换到 bluestore的方法
Ceph OSD从filestore 转换到 bluestore的方法
zphj1987前言
前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考
实践步骤
获取代码并安装
1 | git clone https://github.com/ceph/ceph.git |
生成rpm安装包后进行安装,这个过程就不讲太多,根据各种文档安装上最新的版本即可,这个代码合进去时间并不久,大概是上个月才合进去的
配置集群
首先配置一个filestore的集群,这个也是很简单的,我的环境配置一个单主机三个OSD的集群
1 | [root@lab8106 ceph]# ceph -s |
写入少量数据
1 | [root@lab8106 ~]# rados -p rbd bench 10 write --no-cleanup |
设置noout
1 | [root@lab8106 ~]# ceph osd set noout |
停止OSD.0
1 | [root@lab8106 ~]# systemctl stop ceph-osd@0 |
将数据换个目录挂载,换个新盘挂载到原路径
1 | [root@lab8106 ~]# mkdir /var/lib/ceph/osd/ceph-0.old/ |
在配置文件/etc/ceph/ceph.conf中添加
1 | enable_experimental_unrecoverable_data_corrupting_features = bluestore |
如果需要指定osd的block的路径需要写配置文件
在做ceph-objectstore-tool --type bluestore --data-path --op mkfs
这个操作之前,在配置文件的全局里面添加上
bluestore_block_path = /dev/sde2
然后再创建的时候就可以是链接到设备了,这个地方写全局变量,然后创建完了后就删除掉这项配置文件,写单独的配置文件的时候发现没读取成功,生成后应该是这样的
1 | [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0 |
如果不增加这个就是以文件形式的存在
获取osd.0的fsid
1 | [root@lab8106 ~]# cat /var/lib/ceph/osd/ceph-0.old/fsid |
创建一个bluestore的osd.0
1 | [root@lab8106 ~]# ceph-objectstore-tool --type bluestore --data-path /var/lib/ceph/osd/ceph-0 --fsid b2f73450-5c4a-45fb-9c24-8218a5803434 --op mkfs |
转移数据
1 | [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 |
这个操作是将之前的filestore的数据转移到新的bluestore上了
启动OSD.0
1 | [root@lab8106 osd]# systemctl restart ceph-osd@0 |
检查状态
1 | [root@lab8106 osd]# ceph -s |
成功转移
不同的block方式
1 | [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0/ -al|grep block |
可以看到直接创建的时候的block是以链接的方式链接到一个分区的,而不改配置文件的转移的方式里面是一个文件的形式,根据需要进行选择
总结
转移工具的出现方便了以后从filestore到bluestore的转移,可以采取一个个osd的转移方式将整个集群进行转移,而免去了剔除osd,再添加的方式,减少了迁移量,可以一个个的离线进行操作
ceph的工具集越来越完整了
变更记录
Why | Who | When |
---|---|---|
创建 | 武汉-运维-磨渣 | 2017-05-03 |
评论
匿名评论隐私政策