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中的存量替代方案的主要内容,如果未能解决你的问题,请参考以下文章