Ceph创建bcache时提示sdx device busy的解决方法
问题现象描述
在配置了bcache的Ceph环境,重新安装操作搭建环境,有时会在配置bcache操作中提示“make-bcache --wipe-bcache -B /dev/sdx -C /dev/nvmexx”,具体信息截图如下:
关键过程、根本原因分析
磁盘残留bcache分区信息被系统加载,可以通过lsblk命令进行查看。
结论、解决方案及效果
通过以下步骤进行磁盘恢复。
- 在sdb目录下bcache文件夹下进行detach和stop操作。
echo 1 >/sys/block/sdb/bcache/detach echo 1 >/sys/block/sdb/bcache/stop
- 对sdb磁盘进行dd写操作。
dd if=/dev/zero of=/dev/sdb count=2048 bs=1M
- 在/sys/fs/bcache/目录下对残留bcache做unregister操作。
cd /sys/fs/bcache/31040c7b-55f2-4170-bf77-d2e8b958e31a/ echo 1 > unregister
找到对应的bcache,执行unregister操作。
- 重新启动服务器。
脚本操作参考如下:
- 对系统下sda..sdh硬盘进行detach,stop操作,dd写操作。
for i in {0..7} do temp=`expr $i % 8 + 97` diskID=$(printf \\x`printf %x ${temp}`) echo 1 >/sys/block/sd${diskID}/bcache/detach echo 1 >/sys/block/sd${diskID}/bcache/stop dd if=/dev/zero of=/dev/sd${diskID} count=2048 bs=1M done
- 对ceph1-4节点/sys/fs/bcache/目录进行unregister操作。
#!/bin/bash for n in {1..4} do echo "ceph$n" f=$(ssh ceph$n "ls /sys/fs/bcache/") for i in $f do ssh ceph$n "echo 1 > /sys/fs/bcache/$i/unregister" done done