Ceph OSD从filestore 转换到 bluestore的方法
前言
前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考
实践步骤
获取代码并安装
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的方法的更多相关文章
- Ceph osd故障恢复
1 调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...
- 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 ...
- 怎样禁止Ceph OSD的自动挂载
前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...
- 处理Ceph osd的journal的uuid问题
前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏 ...
- ceph osd 自动挂载的N种情况
直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...
- 分布式存储ceph——(5)ceph osd故障硬盘更换
正常状态:
- ceph osd 批量删除
ceph osd 批量删除,注意删除的是当前节点正在使用的osd,数据删除有风险,所以最后一步没有去format磁盘,给你留下一剂后悔药. #!/bin/bash osd_list=`mount|gr ...
- Ceph osd故障硬盘更换
正常状态: 故障状态: 实施更换步骤: (1)关闭ceph集群数据迁移: osd硬盘故障,状态变为down.在经过mod osd down out interval 设定的时间间隔后,ceph将其标记 ...
- ceph osd tree的可视化
前言 很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构 ...
随机推荐
- 理解Go协程与并发(转)
理解Go协程与并发 协程 Go语言里创建一个协程很简单,使用go关键字就可以让一个普通方法协程化: Copy package main import ( "fmt" " ...
- selenium 设置代理ip
from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("--prox ...
- Archery安装教程
一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos ...
- tamcat7.0(安装文件下载)
安装包:http://files.cnblogs.com/files/chenghu/apache-tomcat-7.0.27.rar http://files.cnblogs.com/files/c ...
- Linux运维学习第五周记
休惊岁岁年年貌 且对朝朝暮暮人 细雨晴时一百六 画船鼍鼓莫违民 雨生百谷,春雨贵如油 第五周学记 这周主要学习了九三级磁盘.存储相关知识和Linux文件系统以及计算机网络的内容 磁盘和文件系统 磁盘结 ...
- 原生JS实现动态折线图
原生JS实现动态折线图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- 503. 下一个更大元素 II
503. 下一个更大元素 II 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大 ...
- jsp 记录1 bs/cs
1.jsp = html + js + css + jsp语法 + Java片段: 2.jsp是基于Java语言的,具有跨平台性: 3.jsp编译后的class文件会常驻内存中,运行速度快,对服务器的 ...
- 阿里云ecs,rds,redis优惠套餐
阿里云ECS优惠套餐 阿里云RDS优惠套餐 阿里云REDIS优惠套餐 阿里云REDIS集群版 阿里云短信资源包
- 如何实现一个FormData
一.前言 最近项目中遇到一个问题,我们需要在cocos项目里去上传音频文件,而cocos原生环境和平时我们开发所在的浏览器环境和Node环境有很多差异,而cocos环境只提供了基础类,没有提供Form ...