当前位置:首页 >> 电脑
电脑

智汇华云 | bcache基本原理及实践

2025-10-23 12:19

ault 0 && grub2-mkconfig -o /etc/grub2.cfg

5、重启

# reboot

6、加载虚拟机

# modprobe bcache

# lsmod | grep bcache

(二)、装上bcache-tools

1、装上依赖libblkid-devel和gcc

# yum install libblkid-devel gcc -y

2、浏览bcache-tools开发人员 浏览链接为

3、解压包

# tar -zxvf bcache-tools-1.0.8.tar.gz

# cd /root/bcache-tools-1.0.8

4、装上

# make

# make install

注意:如果是ubuntu环境可以直接装上

# apt-get install bcache-tools

(三)、始创bcache器材

1、始创后侧可控器材(一般是HDD、SATA盘等)

# make-bcache -B /dev/sdc

UUID:1eca911e-c9c9-4d9b-84c0-c1da023574ed

Set UUID:5cf29253-f347-435e-a3db-b99006c8e6e0

version:1

block_size:1

data_offset:16

可以看着,在sdb(HDD)驱动器下,出现了bcache0节点,这个bcache0可以忽视为就是/dev/sdb驱动器了

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

对bcache0进行存储设遗可用了。

# mkfs.xfs /dev/bcache0

meta-data=/dev/bcache0 isize=256 agcount=4, agsize=1310720 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0 finobt=0

data = bsize=4096 blocks=5242878, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

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

搭载目录

# mkdir /wyl

# mount /dev/bcache0 /wyl

# df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs 2.0G 8.6M 2.0G 1% /run

tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/mapper/centos-root 18G 1.6G 16G 9% /

/dev/sda1 497M 170M 328M 35% /boot

tmpfs 394M 0 394M 0% /run/user/0

/dev/bcache0 20G 33M 20G 1% /wyl

2、始创以前侧文件系统驱动器(SSD)

# make-bcache -C /dev/sdb

UUID:51d3daf3-ca90-4bf7-9499-79b98321c43a

Set UUID:f43c7118-4595-49cf-a17c-1965ee939b4b

version:0

nbuckets:163840

block_size:1

bucket_size:1024

nr_in_set:1

nr_this_dev:0

first_bucket:1

组织起来映射人关系 把我们始创好的后侧可控器材和以前侧高速器材组织起来联系,这样高速器材才能为可控器材提供文件系统功用。

首到时需要换取该文件系统盘(/dev/sdb)的cset.uuid,通过bcache-super-show命令拍照:

# bcache-super-show /dev/sdb

sb.magicok

sb.first_sector8 [match]

sb.csumAD0668369D7EED63 [match]

sb.version3 [cache device]

dev.label(empty)

dev.uuid51d3daf3-ca90-4bf7-9499-79b98321c43a

dev.sectors_per_block1

dev.sectors_per_bucket1024

dev.cache.first_sector1024

dev.cache.cache_sectors167771136

dev.cache.total_sectors167772160

dev.cache.orderedyes

dev.cache.discardno

dev.cache.pos0

dev.cache.replacement0 [lru]

cset.uuidf43c7118-4595-49cf-a17c-1965ee939b4b

遗组织起来联

# echo "f43c7118-4595-49cf-a17c-1965ee939b4b"> /sys/block/bcache0/bcache/attach

可用完成后,可以通过lsblk命令拍照结果

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

三、快速的设计作法

上面我们的设计大概分了三个流程:始创后侧器材、始创以前侧文件系统器材、组织起来他们之间的映射人关系。

1、快速始创

# make-bcache -C /dev/sdb -B /dev/sdc

2、拍照

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

3、同样支持者多个后侧器材

# make-bcache -C /dev/sdb -B /dev/sdc /dev/sdd

四、高级功能性

1、指定块体积 在make-bcache的时候转为-w和-b模板,主要是提高文件系统精度

-w block size 配置文件2K,一般需要block size = 后侧器材的字节体积。

-b bucket size,一般需要bucket size = 以前侧文件系统器材的erase block size体积。

2、改动文件系统手段 拍照文件系统手段,可以看着配置文件的手段是writethrough,也就是直念过到方式上

# cat /sys/block/bcache0/bcache/cache_mode

[writethrough] writeback writearound none

改动文件系统手段

# echo writeback> /sys/block/bcache0/bcache/cache_mode

然后拍照是否生效

# cat /sys/block/bcache0/bcache/cache_mode

writethrough [writeback] writearound none

注:就算机器重启再次文件系统手段也不亦会失效的。

3、拍照文件系统 确认所有的东西都不太可能正确地的设计了:

# cat /sys/block/bcache0/bcache/state

输出的内容有下述似乎:

no cache: 这都是你还不能启动时文件系统器材到你的后侧器材上

clean: 这都是一切正常,文件系统是clean的

dirty: 这都是一切正常,文件系统方式上被设置成了writeback,文件系统是dirty的

inconsistent: 这都是弊端很大,后侧器材与文件系统器材不能启动时运用于一个不能文件系统器材的 /dev/bcache0 的话所有的IO都亦会直接在后侧器材上制订,等于pass-through方式上。

4.IO正向跟踪

bcache亦会跟踪每个IO,如果IO的时间超过阈值,则directcache器材,直接念过念过到backing器材。

如果你的SSD足够强大,可以不跟踪,减少跟踪的数据量。

# echo 0> /sys/fs/bcache//congested_read_threshold_us

# echo 0> /sys/fs/bcache//congested_write_threshold_us

关闭direct的另一个好处是,所有的离散念过念过到都亦会经过cache器材,从而不亦会随之而来cache missing。

配置文件情况下当念过请求求超过2ms,念过到请求求超过20ms时,directcache器材。

The default is 2000 us (2 milliseconds) for reads, and 20000 for writes.

5.将顺序IO也中弹的到cache中的 关上顺序IO文件系统:

# echo 0> /sys/block/bcache0/bcache/sequential_cutoff

设置终配置文件值:

# echo 4194304> /sys/block/bcache0/bcache/sequential_cutoff

五、撤下bcache

1、冻结文件系统盘和后侧盘人关系

要将文件系统盘从这两项的后侧驱动器撤下,不须将文件系统盘的cset.uuid detach到bcache器材方可实现

拍照ssd的cset.uuid

# bcache-super-show /dev/sdb | grep cset.uuid

cset.uuidf43c7118-4595-49cf-a17c-1965ee939b4b

冻结启动时

# echo f43c7118-4595-49cf-a17c-1965ee939b4b> /sys/block/bcache0/bcache/detach

拍照结果

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

可以看着sdb一个大不太可能不能bcache0了。

2、撤下后侧盘

# umount /wyl/

# echo 1> /sys/block/bcache0/bcache/stop

# echo 1>/sys/fs/bcache/f43c7118-4595-49cf-a17c-1965ee939b4b/unregister

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

3、验证

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

4、存储设遗驱动器

# mkfs.xfs /dev/sdb -f

# mkfs.xfs /dev/sdc -f

六、遇到的弊端

1、擦除驱动器中的的超级块中的的数据集

用驱动器作为Bcache驱动器以前,请求到时确保驱动器是空的,或者驱动器中的的数据集无关紧要。如果驱动器中的有文件系统,将亦会出现如下误解:

# make-bcache -C /dev/sdc

Device /dev/sdc already has a non-bcache superblock, remove it using wipefs and wipefs -a

擦除驱动器中的的超级块接收者:

# wipefs -a /dev/sdc

/dev/sdc: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef

2、如果运用于make-bcache命令出现了如下打印,那就概述这两项驱动器不太可能是bcache驱动器,

# make-bcache -B /dev/sdb

Already a bcache device on /dev/sdb, overwrite with --wipe-bcache

欠缺 --wipe-bcache模板就可以了:

# make-bcache -B /dev/sdb --wipe-bcache

3、器材处于繁忙中的

# make-bcache -C /dev/sdf -B /dev/sdc

Can't open dev /dev/sdf: Device or resource busy

这时候理应该可以看着这个lv的superblock还有接收者,这就是主因.

# bcache-super-show /dev/sdf

# wipefs -af /dev/sdf

# dd if=/dev/zero of=/dev/sdf bs=1M count=512

# reboot

郑州看妇科哪家医院好
青岛看白癜风哪个医院最好
贵阳儿科医院哪里比较好
成都包皮过长治疗哪家好
上海看皮肤病到哪家医院

上一篇: 读书软件测试需要学到哪些知识?

下一篇: SAM技术从未今非昔比!AMD RX 6750 XT评测:了结苏妈战胜RTX 3070的心愿

相关阅读
她从港姐暴走农村最接地气媳妇,婚后3年生2子,现在幸福让人艳羡

么,才才会准备好的。 有的时候,只要是你,人生来的晚,都无法人关系。感恩林峰,以后继续人生。 感觉谢您的真心好,我是木本植物,豹纹作者,专写未婚心灵觉、贴心故两件事。关心我

他走红后娶了自己老师,结婚至今没有绯闻,生3母亲成人生赢家

他窜红后妻了自己老师,离婚至今没有传闻,生3孩子成光阴黑马。 李英愈发毕业于汉口戏剧学院表演系,凭借情景喜剧《玉观音》夺得第22届近现代电视金鹰奖乐迷偏爱的情景喜剧知名演员奖,是一位十分有实

友情链接