bcache在ceph中的存量替代方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bcache在ceph中的存量替代方案相关的知识,希望对你有一定的参考价值。

参考技术A 当想将ceph集群中现有osd存量体替换成bcache架构时,直接停掉osd然后初始化bcache设备会报错:

因为bcache初始化时会刷superblock,而此时superblock被lv设备占据:

进一步发现lv的superblock长度为1M而bcache的只有8k,利用这一特点直接删除lv替换为bcache,同时指定bcache的data-offset为1M就可以保持原有osd上的数据不被损坏(特别是开头的4k数据中记录的osd的label信息影响这osd的启动),然后将osd挂载目录中的block替换为新的bcache设备即可。具体过程:

制作lv 初始化bcache的cache设备

vgcreate vg-sdc /dev/sdc

lvcreate -L 8G -n lv-sdd vg-sdc

make-bcache -C /dev/vg-sdc/lv-sdd

停掉对应osd并删除原有osd对应lvm的dm

systemctl stop ceph-osd@6

dmsetup remove ceph--71e8f6b2--3072--4a58--9d0f--54ae5d87e31b-osd--block--f391145b--a038--47e9--bd62--b5024d6854a0

刷新sata盘的签名

wipefs -a  /dev/sdd

初始化bcache后端盘(注意数据位置的偏移为2048个扇区,这对应了lv的data-offset)

make-bcache --data-offset 2048 -B /dev/sdd

连接bcache的cache设备和后端设备

bcache-super-show /dev/vg-sdc/lv-sdd| grep cset| awk 'print $2'

echo 587a1fb9-4d67-405d-a932-9bb315d49797 > /sys/block/bcache0/bcache/attach

删除/var/lib/ceph/osd/ceph-num/目录下的block软连接,并新增软连接:

ln -s /dev/bcache0 /var/lib/ceph/osd/ceph-num/block

并为之赋权

chown -h ceph:ceph /var/lib/ceph/osd/ceph-num/block

chown -R ceph:ceph /dev/bcache0

启动osd即可(此时数据直接恢复  不发生再平衡的过程,启动ceph osd deep-scrub osd.num未发现降级对象)

systemctl start ceph-osd@6

以上是关于bcache在ceph中的存量替代方案的主要内容,如果未能解决你的问题,请参考以下文章

linux bcache

关于bcache的一些事情

关于bcache的一些事情

自定义配置编译linux内核

搭建squid反向代理

把bitmap转成文件存入APP项目目录