新钛云服已为您服务1048天

大咖专栏
什么是Bcache?

Bcache缓存模式
“writeback”:
最高性能的缓存模式。 写入设备的数据首先写入ssd,然后异步复制到后端设备,在SSD上复制结束时,写入就被视为完成。为了安全起见,此处的机制始终确保在将数据完全写入后端设备(脏页)之前,不认为任何数据是安全的,因此,如果在SSD上仍存在数据时断电,则在下次启动时,数据将被推回支撑设备。这是使bcache能够和软件Linux Raid与具有BBU的硬件Raid设备一样安全。
“writethrough”:
安全缓存模式。 写入设备的数据将同时复制到ssd和HDD上,在HDD写入结束时,写入才被视为完成。因此,这往往比“writeback”更为安全,但缺乏一些性能。
“writearound”:
只读缓存模式。 写入设备的数据直接进入HDD,而根本不写入SSD,因此不会对写有任何性能提升。第一次读取此数据时,将从HDD中读取该数据。这样做的好处是有更多空间用于缓存读取,并减少了SSD的磨损。
“none” :
停用缓存功能(但/dev/bcache设备仍然可用)
sudo cat sys/block/bcache0/bcache/cache_mode
writethrough [writeback] writearound none复制
sudo su - -c 'echo writethrough > sys/block/bcache0/bcache/cache_mode'
sudo cat sys/block/bcache0/bcache/cache_mode
[writethrough] writeback writearound none复制
使用Bcache
Bcache是从Linux-3.10开始正式并入内核主线的,因此,要使用Bcache,需要将内核升级到3.10及以上版本才行。(本文使用ubuntu 20.04) 固态硬盘 普通hdd硬盘
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install bcache-tools复制
系统将位于/dev/sda hdd硬盘(称为后端设备)将为/dev/sdb ssd(称为缓存设备)将为/dev/sdc。
sudo dd if=/dev/zero if=/dev/sdb bs=512 count=8
sudo dd if=/dev/zero if=/dev/sdc bs=512 count=8
wipefs -a dev/sdb
wipefs -a dev/sdc复制
make-bcache -C dev/sdc -B dev/sdb 复制
make-bcache -C dev/sdc -B dev/sdb --discard --writeback 复制
-C用于您的缓存设备(ssd) -B用于您的后端设备(hdd) --discard用于在ssd上使用TRIM,默认情况下未激活。 --writeback使用缓存模式写回,默认情况下它设置为直写。
fstrim
提供此功能,它可以为写入新数据而准备驱动器,并延长驱动器的使用寿命。由于在我使用的 Linux 发行版上 SSD 的 trim 不是自动的,所以必须去调度该操作,否则 SSD 的性能会随着时间的推移而降低。
ls dev/bcache*
/dev/bcache0复制
sudo mkfs.ext4 dev/bcache0 复制
sudo mkdir media/bcache
sudo mount dev/bcache0 media/bcache复制
sudo su - -c “/dev/bcache0 media/bcache ext4 rw 0 0 >> etc/fstab” 复制
blkid dev/bcacheX 复制
一些简单的性能测试
将基础镜像复制n份,并同时启动n个vm,直到它们都关闭电源。 同时启动n个虚拟机,直到它们全部断电。
kvm -m 512 -nographics -drive if=virtio,file=${BASE}${BASE_IMAGE} -net nic -net user -k fr --kernel $BASE/vmlinuz --initrd $BASE/initrd --append "root=/dev/vda1 nomodeset" 复制
HDD only:
SSD only:
Bcache writearound模式:
Bcache writethrough模式:
Bcache writeback模式:
恢复先前配置的bcache设备
sudo modprobe bcache 复制
sudo su - -c ‘echo bcache >> etc/modules’ 复制
sudo bcache-super-show -f dev/sdb
sudo bcache-super-show -f dev/sdc复制
sudo su - - c ‘echo /dev/sdb > /sys/fs/bcache/register’
sudo su - - c ‘echo /dev/sdc > /sys/fs/bcache/register’复制
sudo mount /dev/bcacheX /media/bcache 复制
删除bcache
Backup:
Umount:
sudo umount -v /dev/bcache0 复制
Stopping the bcache:
sudo su - -c "echo 1 >/sys/fs/bcache/......../unregister"
sudo su - -c "echo 1 >/sys/block/bcache0/bcache/stop"
sudo wipefs -a /dev/sdX_caching
sudo wipefs -a /dev/sdY_backing复制
ceph 中的Bcache
SSD和HDD不支持热插拔 从缓存池中卸载HDD时,需要等待所有脏数据被刷新,这需要很长时间 当硬盘损坏时,无法删除SSD中相应的脏数据,从而浪费空间 系统重启后无法恢复精简闪存卷
当上层中的大量随机写入IO充满了缓存空间时,您必须等待所有脏数据被刷新,然后才能继续为写入IO提供缓存 当GC线程运行时,它将导致业务IO的波动 Bcache元数据缓存会占用大量内存。当系统内存不足时,无法缓存大量的元数据。需要从SSD读取它并影响性能
为每个SSD创建一个缓存池,将相同数量的HDD附加到每个缓存池 从每个缓存池创建一个精简闪存卷,以将每个OSD的OMAP目录分离到其中 日记可以独立放置到SSD中,也可以从缓冲池中创建多个精简卷来写入日记
每月第1周首篇 大咖专栏
新钛云服布道师 祝祥
· 资深云计算架构师
· OpenStack官方特邀讲师
· 上万台云主机和几十PB分布式存储的
建设管理经验

点👇分享

戳👇在看
文章转载自新钛云服,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
2529次阅读
2025-04-09 15:33:27
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1181次阅读
2025-04-27 16:53:22
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
853次阅读
2025-04-10 15:35:48
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
674次阅读
2025-04-30 15:24:06
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
583次阅读
2025-04-11 09:38:42
天津市政府数据库框采结果公布,7家数据库产品入选!
通讯员
569次阅读
2025-04-10 12:32:35
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
544次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
484次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
463次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
457次阅读
2025-04-30 12:17:50