初涉Bcache(2)


话接上回,本篇介绍如何将后端磁盘与缓存磁盘关联,后端磁盘与缓存磁盘解除关联,正常流程销毁后端磁盘与缓存磁盘,非正常流程销毁后端磁盘与缓存磁盘产生的特殊情况。

关联后端磁盘与缓存磁盘

回顾上回:

创建Bcache后端磁盘

[root@localhost ~]# make-bcache -B /dev/sdb
UUID:           774756de-38e1-42dd-9fcc-5c363db7b319
Set UUID:       2edf6ef1-652d-4bb3-b5b3-663725a70ccd
version:        1
block_size:     1
data_offset:        16
[root@localhost ~]# 
通过lsblk查看:
[root@localhost ~]# lsblk /dev/sdb
NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb         8:16   0  10G  0 disk 
└─bcache0 253:1    0  10G  0 disk 
[root@localhost ~]#

创建Bcache缓存磁盘

[root@localhost ~]# make-bcache -C /dev/sdc
UUID:           8c36cd15-5ada-4cfe-a6c4-dd7ce96e30be
Set UUID:       b506d850-19c5-4260-945e-108764632bee
version:        0
nbuckets:       20480
block_size:     1
bucket_size:        1024
nr_in_set:      1
nr_this_dev:        0
first_bucket:       1
[root@localhost ~]#

后端磁盘与缓存磁盘关联

[root@localhost ~]# echo "b506d850-19c5-4260-945e-108764632bee" >/sys/block/bcache0/bcache/attach
[root@localhost ~]# 

将缓存磁盘的set uuid写入attach。
关联之后通过命令查看,发现两个磁盘下面都出现了bcache0:

[root@localhost ~]# lsblk /dev/sdb /dev/sdc
NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb         8:16   0  10G  0 disk 
└─bcache0 253:1    0  10G  0 disk /mnt
sdc         8:32   0  10G  0 disk 
└─bcache0 253:1    0  10G  0 disk /mnt
[root@localhost ~]# 

并且使用bcache-super-show查看两块磁盘的set uuid,全部变为了缓存磁盘的uuid,此时两个set uuid相同,后面可以依据set uuid来判断两块磁盘是否为一组,来进行重新关联,后续文章会详细讲解重新关联部分。

bcache0使用

进行完关联后,使用如下命令进行格式化:

[root@AutoCloud zone]# mkfs.xfs -f /dev/bcache0
meta-data=/dev/bcache0           isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524286, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@AutoCloud zone]#

-f参数意思为强制格式化,首次格式化可以不加。
之后可以挂载使用,命令如下:

[root@AutoCloud sdc1]# mount /dev/bcache0 test/
[root@AutoCloud sdc1]#

后端磁盘与缓存盘解除关联

解除关联之前要注意将bcache0卸载,使用如下命令:

[root@AutoCloud sdc1]# umount /dev/bcache0 
[root@AutoCloud sdc1]#

删除缓存磁盘

[root@localhost ~]# echo "b506d850-19c5-4260-945e-108764632bee" > /sys/block/bcache0/bcache/detach
[root@localhost ~]# 

删除缓存磁盘后,使用lsblk查看缓存磁盘下的bcache0消失,说明删除成功。
删除成功之后,缓存磁盘的set uuid保留,后端磁盘的set uuid变为00000000-0000-0000-0000-000000000000。

注销缓存磁盘

[root@localhost ~]# echo 1 > /sys/fs/bcache/b506d850-19c5-4260-945e-108764632bee/unregister 
[root@localhost ~]# 

通过ls查看/sys/fs/bcache/b506d850-19c5-4260-945e-108764632bee,如果该目录不存在,则表示注销成功。注销后缓存磁盘的set uuid保留。

停用后端磁盘

[root@localhost ~]# echo 1 > /sys/block/bcache0/bcache/stop
[root@localhost ~]# 

通过lsblk可以看到后端磁盘下已经没有bcache0,则停用成功。

正常销毁bcache0步骤

第一步:使用umount将bcache0卸载
第二步:删除缓存磁盘
第三步:注销缓存磁盘
第四步:停用后端磁盘
第五步:格式化使用过的磁盘

经过上述五步,则销毁bcache0成功。若出现Device or resource busy,则说明销毁有步骤没有成功。
销毁后若要重新使用可能会报错,根据报错进行处理。后续会有文章单独讲解一些异常情况。

非正常销毁bcache0步骤

非正常销毁即是没有按照上述步骤进行销毁,中途可能出现一些莫名的异常,严重的会导致机器重启。后续会有文章单独讲解一些异常情况。

结语

感谢大家花费耐心看完此篇文章,相信大家应该是有所收获的。

搜索

复制