zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【SpringBoot学习笔记】无法解析parent POM——1.5.3.RELEASE
    【WPF学习日记——[DevExpress]】GridControl 行中使用按钮
    【Web学习日记】——C#引用WebService,从配置文件改变引用地址
    【Web学习日记】——在IIS上发布一个WebService
    【WPF学习日记】——Window的DataContext绑定ViewModel
    使用kubectl管理k8s集群
    使用Kubeadm创建k8s集群之节点部署
    使用Kubeadm创建k8s集群之部署规划
    kubernetes运维
    linux常用命令大全
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575426.html
Copyright © 2011-2022 走看看