前言

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

实践步骤

获取代码并安装

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. 理解Go协程与并发(转)

    理解Go协程与并发   协程 Go语言里创建一个协程很简单,使用go关键字就可以让一个普通方法协程化: Copy package main import ( "fmt" " ...

  2. selenium 设置代理ip

    from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("--prox ...

  3. Archery安装教程

    一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos ...

  4. tamcat7.0(安装文件下载)

    安装包:http://files.cnblogs.com/files/chenghu/apache-tomcat-7.0.27.rar http://files.cnblogs.com/files/c ...

  5. Linux运维学习第五周记

    休惊岁岁年年貌 且对朝朝暮暮人 细雨晴时一百六 画船鼍鼓莫违民 雨生百谷,春雨贵如油 第五周学记 这周主要学习了九三级磁盘.存储相关知识和Linux文件系统以及计算机网络的内容 磁盘和文件系统 磁盘结 ...

  6. 原生JS实现动态折线图

    原生JS实现动态折线图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  7. 503. 下一个更大元素 II

    503. 下一个更大元素 II 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大 ...

  8. jsp 记录1 bs/cs

    1.jsp = html + js + css + jsp语法 + Java片段: 2.jsp是基于Java语言的,具有跨平台性: 3.jsp编译后的class文件会常驻内存中,运行速度快,对服务器的 ...

  9. 阿里云ecs,rds,redis优惠套餐

    阿里云ECS优惠套餐 阿里云RDS优惠套餐 阿里云REDIS优惠套餐 阿里云REDIS集群版 阿里云短信资源包

  10. 如何实现一个FormData

    一.前言 最近项目中遇到一个问题,我们需要在cocos项目里去上传音频文件,而cocos原生环境和平时我们开发所在的浏览器环境和Node环境有很多差异,而cocos环境只提供了基础类,没有提供Form ...