初涉Bcache(1)


Bcache基本使用

Bcache简介

Bcache是Linux内核块设备层cache,支持多块HDD使用同一块SSD作为缓存盘。它让SSD作为HDD的缓存成为了可能。由于SSD价格昂贵,存储空间小,而HDD价格低廉,存储空间大,因此采用SSD作为缓存,HDD作为数据存储盘,既解决了SSD容量太小,又解决了HDD运行速度太慢的问题。
注:Bcache是从Linux-3.10开始正式并入内核主线的,因此,要使用Bcache,需要将内核升级到3.10及以上版本才行。

Bcache缓存策略

Bcache支持三种缓存策略,分别是:writeback、writethrough、writearoud,默认使用writethrough。可以临时修改缓存策略,修改方式如下:
echo [writeback/writethrough/writearoud] > /sys/block/bcache0/bcache/cache_mode
通过此方法修改,重启后失效。
下面介绍一下每种策略:
(1) writeback 回写策略:回写策略默认是关闭的,如果开启此策略,则所有的数据将先写入缓存盘,然后等待系统将数据回写入后端数据盘中。
(2) writethrough 写通策略:默认的就是写通策略,此模式下,数据将会同时写入缓存盘和后端数据盘。
(3) writearoud :选择此策略,数据将直接写入后端磁盘。

Bcache源码

Bcache源码需要自己上网查找,源码分为两个部分,一部分为配置工具Bcache-tools,一部分为Bcache的内核模块代码。

Bcache.ko

Bcache.ko是Bcache的驱动模块,通过内核编译生成,加载后可以使用Bcache,具体编译过程,后续文章会有涉及。

Bcache-tools基本命令使用

擦除磁盘中的超级块信息:

[root@localhost ~]# wipefs -a /dev/sdc
/dev/sdc: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
[root@localhost ~]# 

创建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 ~]# 

查看Bcache磁盘:

[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 ~]# 

同时创建缓存盘和后端盘

[root@localhost ~]# make-bcache -B /dev/sdb -C /dev/sdc --wipe-bcache
UUID:           8e8da86d-7cda-4e06-b05b-dd7309c33cf6
Set UUID:       ff92c353-bfcf-4f51-b2b8-8eb7792d491e
version:        0
nbuckets:       20480
block_size:     1
bucket_size:        1024
nr_in_set:      1
nr_this_dev:        0
first_bucket:       1
UUID:           4df35dfa-00f7-4c27-9838-e6853cdfaf48
Set UUID:       ff92c353-bfcf-4f51-b2b8-8eb7792d491e
version:        1
block_size:     1
data_offset:        16
[root@localhost ~]# 
通过lsblk查看:
[root@localhost ~]# lsblk /dev/sdb /dev/sdc
NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb         8:16   0  10G  0 disk 
└─bcache3 253:3    0  10G  0 disk 
sdc         8:32   0  10G  0 disk 
└─bcache3 253:3    0  10G  0 disk 
[root@localhost ~]# 

这一条命令直接将缓存盘和后端盘关联,如果是单独调用还需要进行关联,后续文章会讲述如何关联。

结语

此篇文章主要讲述Bcache的基本概念,工具使用等,后续文章陆续针对Bcache配置,实战,测试等进行讲述,不足之处敬请见谅。

搜索

复制