前言

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

实践步骤

获取代码并安装

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. web自动化测试总结

    web自动化: 1.测试用例(操作步骤,熟读需求文档,web项目先用手工研究,前置条件,预期结果) 接口自动化测试中数据功能最适合作为数据驱动,数据放在excel中需要操作excel 为什么web自动 ...

  2. 带权二分图最大匹配KM算法

    二分图的判定 如果一个图是连通的,可以用如下的染色法判定是否二分图: 我们把X部的结点颜色设为0,Y部的颜色设为1. 从某个未染色的结点u开始,做BFS或者DFS .把u染为0,枚举u的儿子v.如果v ...

  3. Ubuntu搜狗输入法安装

    一.下载sogoupinyin_2.2.0.0108_amd64.deb 二.拷贝到服务器并安装 sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb 三.设置搜 ...

  4. javascript 数字 字母 互转

    var alphabet= String.fromCharCode(64 + parseInt(填写数字); 单个字符转数字: 'a'.charCodeAt(0) 结果: 97 数字转字母: Stri ...

  5. Ⅱ Finite Markov Decision Processes

    Dictum:  Is the true wisdom fortitude ambition. -- Napoleon 马尔可夫决策过程(Markov Decision Processes, MDPs ...

  6. drf (学习第三部)

    目录 视图 视图额基类 视图类扩展 GenericAPIView的视图子类 视图集ViewSet 路由Routers 视图 Django REST framework 提供的视图的主要作用: 控制序列 ...

  7. Spark执行失败时的一个错误分析

    错误分析 堆栈信息中有一个错误信息:Job aborted due to stage failure: Task 1 in stage 2.0 failed 4 times, most recent ...

  8. 干货分享:一键网络重装系统 - 魔改版(适用于Linux / Windows)

      简介 一键网络重装系统 - 魔改版,它可以通过Internet重新安装Linux和Windows以及常见的操作系统.例如:Linux(CentOS,Debian,Ubuntu.etc..),Win ...

  9. Luogu P5072 [Ynoi2015]盼君勿忘

    题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(m\) 次询问,第 \(i\) 次询问需要求出 \([l_i,r_i]\) 内所有子序列去重之后的和,对 \(p_i\) 取模. \(\t ...

  10. MYSQL连接时错误码2059解决办法

     一.问题原因: 如上图的报错提示可知,报错原因是caching_sha2_password不能加载. 这是因为8.0之后mysql更改了密码的加密规则,而目前已有的客户端连接软件还不支持Mysql8 ...