bcache在ceph中的存量替代方案

當想將ceph集群中現(xiàn)有osd存量體替換成bcache架構(gòu)時,直接停掉osd然后初始化bcache設(shè)備會報錯:


busy報錯

因為bcache初始化時會刷superblock,而此時superblock被lv設(shè)備占據(jù):


lv設(shè)備

進一步發(fā)現(xiàn)lv的superblock長度為1M而bcache的只有8k,利用這一特點直接刪除lv替換為bcache,同時指定bcache的data-offset為1M就可以保持原有osd上的數(shù)據(jù)不被損壞(特別是開頭的4k數(shù)據(jù)中記錄的osd的label信息影響這osd的啟動),然后將osd掛載目錄中的block替換為新的bcache設(shè)備即可。具體過程:

制作lv 初始化bcache的cache設(shè)備

vgcreate vg-sdc /dev/sdc

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

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

停掉對應(yīng)osd并刪除原有osd對應(yīng)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后端盤(注意數(shù)據(jù)位置的偏移為2048個扇區(qū),這對應(yīng)了lv的data-offset)

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

連接bcache的cache設(shè)備和后端設(shè)備

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

并為之賦權(quán)

chown?-h?ceph:ceph?/var/lib/ceph/osd/ceph-{num}/block

chown?-R?ceph:ceph?/dev/bcache0

啟動osd即可(此時數(shù)據(jù)直接恢復(fù)? 不發(fā)生再平衡的過程,啟動ceph osd deep-scrub osd.{num}未發(fā)現(xiàn)降級對象)

systemctl start ceph-osd@6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容