前言

前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考

实践步骤

获取代码并安装

git clone https://github.com/ceph/ceph.git
cd ceph
git submodule update --init --recursive
./make-dist
rpm -bb ceph.spec

生成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 tree
ID 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

写入少量数据

[root@lab8106 ~]# rados -p rbd bench 10 write --no-cleanup

设置noout

[root@lab8106 ~]# ceph osd set noout
noout is set

停止OSD.0

[root@lab8106 ~]# systemctl stop ceph-osd@0
[root@lab8106 ~]# ceph osd down 0
osd.0 is already down.

将数据换个目录挂载,换个新盘挂载到原路径

[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

在配置文件/etc/ceph/ceph.conf中添加

enable_experimental_unrecoverable_data_corrupting_features = bluestore

如果需要指定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-0
total 20
lrwxrwxrwx 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

如果不增加这个就是以文件形式的存在

获取osd.0的fsid

[root@lab8106 ~]# cat /var/lib/ceph/osd/ceph-0.old/fsid
b2f73450-5c4a-45fb-9c24-8218a5803434

创建一个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

转移数据

[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

这个操作是将之前的filestore的数据转移到新的bluestore上了

启动OSD.0

[root@lab8106 osd]# systemctl restart ceph-osd@0

检查状态

[root@lab8106 osd]# ceph -s
2017-05-03 17:05:13.119492 7f20a501b700 -1 WARNING: the following dangerous and experimental features are enabled: bluestore
2017-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

成功转移

不同的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 block
lrwxrwxrwx 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

可以看到直接创建的时候的block是以链接的方式链接到一个分区的,而不改配置文件的转移的方式里面是一个文件的形式,根据需要进行选择

总结

转移工具的出现方便了以后从filestore到bluestore的转移,可以采取一个个osd的转移方式将整个集群进行转移,而免去了剔除osd,再添加的方式,减少了迁移量,可以一个个的离线进行操作

ceph的工具集越来越完整了

变更记录

Why Who When
创建 武汉-运维-磨渣 2017-05-03

Ceph OSD从filestore 转换到 bluestore的方法的更多相关文章

  1. Ceph osd故障恢复

    1  调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...

  2. Ceph osd启动报错osd init failed (36) File name too long

    在Ceph的osd节点上,启动osd进程失败,查看其日志/var/log/ceph/ceph-osd.{osd-index}.log日志,报错如下: 2017-02-14 16:26:13.55853 ...

  3. 怎样禁止Ceph OSD的自动挂载

    前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...

  4. 处理Ceph osd的journal的uuid问题

    前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏 ...

  5. ceph osd 自动挂载的N种情况

    直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...

  6. 分布式存储ceph——(5)ceph osd故障硬盘更换

    正常状态:

  7. ceph osd 批量删除

    ceph osd 批量删除,注意删除的是当前节点正在使用的osd,数据删除有风险,所以最后一步没有去format磁盘,给你留下一剂后悔药. #!/bin/bash osd_list=`mount|gr ...

  8. Ceph osd故障硬盘更换

    正常状态: 故障状态: 实施更换步骤: (1)关闭ceph集群数据迁移: osd硬盘故障,状态变为down.在经过mod osd down out interval 设定的时间间隔后,ceph将其标记 ...

  9. ceph osd tree的可视化

    前言 很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构 ...

随机推荐

  1. 【树形DP】JSOI BZOJ4472 salesman

    题目内容 vjudge链接 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇 之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收 益.这些 ...

  2. 【折半枚举+二分】POJ 3977 Subset

    题目内容 Vjudge链接 给你\(n\)个数,求出这\(n\)个数的一个非空子集,使子集中的数加和的绝对值最小,在此基础上子集中元素的个数应最小. 输入格式 输入含多组数据,每组数据有两行,第一行是 ...

  3. docker启动服务---------------redis

    1. docker拉取镜像 docker pull redis 2 建立配置目录和准备配置文件 mkdir -p /usr/local/docker-redis && cd /usr/ ...

  4. centOS7 查看防火墙状态 开放端口

    一.防火墙的开启.关闭.禁用命令 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:systemctl disable fire ...

  5. go mod 使用bee工具

    https://github.com/beego/bee/releases bee  windows https://github.com/beego/bee/releases/download/v1 ...

  6. laravel job 队列

    1.数据库建表 php artisan queue:table<span> </span>//队列任务表 php artisan queue:failed-table<s ...

  7. Hugo+Github 搭建个人博客(Windows环境下)

    目录 Hugo+Github 搭建个人博客(Windows环境下) 1.前言 2.Differences 2.1 https vs SSH 2.2 新建的github的仓库名必须为 用户名+githu ...

  8. CentOS 8 Yum安装ansible

    ansible的安装 直接yum安装ansible会报错,需要先安装epel源. ansible的安装来源于epel仓库,因此在安装前需确保安装了正确的epel源. yum install -y ep ...

  9. 如何对数据进行MD5加密

    前端进行加密 /** * jQuery MD5 hash algorithm function * * <code> * Calculate the md5 hash of a Strin ...

  10. Linux入门到放弃之六《磁盘和文件系统管理三》

    设置磁盘配额 对之前创建的逻辑卷设置磁盘配额,要求用户student对该逻辑卷 容量的软限制是:5G,硬限制是7G,文件个数软限制为:25个,硬限制为30个. (1)首先对/etc/fstab文件进行 ...