前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下块设备缓存Bcache设置

Linux下块设备缓存Bcache设置

作者头像
happy123.me
发布2021-04-25 10:54:54
4.9K0
发布2021-04-25 10:54:54
举报
文章被收录于专栏:乐享123乐享123

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,缓存策略可动态修改。

  • writeback 回写策略:回写策略默认是关闭的,如果开启此策略,则所有的数据将先写入缓存盘,然后等待系统将数据回写入后端数据盘中。
  • writethrough 写通策略:默认的就是写通策略,此模式下,数据将会同时写入缓存盘和后端数据盘。
  • writearoud :选择此策略,数据将直接写入后端磁盘。

Write-misses写缺失(写入的数据不在缓存中)有两种处理方式:

代码语言:javascript
复制
* Write allocate方式将写入位置读入缓存,然后采用write-hit(缓存命中写入)操作。写缺失操作与读缺失操作类似。

* No-write allocate方式并不将写入位置读入缓存,而是直接将数据写入存储。这种方式下,只有读操作会被缓存。

无论是Write-through还是Write-back都可以使用写缺失的两种方式之一。只是通常Write-back采用Write allocate方式,而Write-through采用No-write allocate方式;因为多次写入同一缓存时,Write allocate配合Write-back可以提升性能;而对于Write-through则没有帮助。

安装

1 2

sudo apt-get update sudo apt-get install bcache-tools

操作

假设我们的HDD设备为/dev/sdb, SSD设备为/dev/sdc,我们需要用SSD加速HDD

擦除磁盘中的超级块信息

1 2

# wipefs -a /dev/sdb # wipefs -a /dev/sdc

创建后端磁盘(HDD)

1

make-bcache -B /dev/sdb

创建缓存盘(SSD)

1

make-bcache -C /dev/sdc -b1M --writeback

添加缓存盘

要为bcache后端磁盘添加缓存盘,在创建缓存盘成功之后,首先需要获取该缓存盘的cset.uuid

1 2 3 4

# ls /sys/fs/bcache/ 5d9e80f1-e4b7-48f5-ace2-f2f391877ea7 # bash -c 'echo 5d9e80f1-e4b7-48f5-ace2-f2f391877ea7 > /sys/block/bcache0/bcache/attach'

注意,写入UUID必须以root身份才能执行,在zsh里面sudo可能会出现权限不够的问题,所以直接用bash -c来做

看一下块设备结构

1 2 3 4 5 6 7 8

# lsblk sdb 8:16 0 1000G 0 disk └─bcache0 251:0 0 1000G 0 disk sdc 8:32 0 300G 0 disk └─bcache0 251:0 0 1000G 0 disk ls /sys/block/sdb/bcache/dev/slaves

查看缓存模式

1 2 3

# cat /sys/block/bcache0/bcache/cache_mode [writethrough] writeback writearound none

更改缓存模式

1 2 3 4

# echo writeback > /sys/block/bcache0/bcache/cache_mode # cat /sys/block/bcache0/bcache/cache_mode writethrough [writeback] writearound none

查看缓存数据量

1 2 3

# cat /sys/block/bcache0/bcache/dirty_data 4.1G

格式化、挂载

1 2

# mkfs.ext4 /dev/bcache0 # mount /dev/bcache0 /opt

开机自动挂载

1

echo "/dev/bcache0 /opt ext4 rw 0 0" >> /etc/fstab

测试性能

1

# fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

停用Bcache

卸载

1

umount /dev/bcache0

注销缓存盘

1

echo 1 >/sys/fs/bcache/5d9e80f1-e4b7-48f5-ace2-f2f391877ea7/unregister

停用后端磁盘

1

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

操作完成后,通过lsblk命令查看结果

1

# lsblk /dev/sdb

停用之后,后端磁盘的数据是不会丢的,只不过加速功能没有了;当然,注销缓存盘的时候,缓存盘不能有数据读写操作

参考

https://wiki.ubuntu.com/ServerTeam/Bcache

https://askubuntu.com/questions/523817/how-to-setup-bcache

https://markrepo.github.io/maintenance/2018/09/10/bcache/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Bcache简介
  • Bcache缓存策略
  • 安装
  • 操作
    • 擦除磁盘中的超级块信息
      • 创建后端磁盘(HDD)
        • 创建缓存盘(SSD)
          • 添加缓存盘
            • 看一下块设备结构
              • 查看缓存模式
                • 更改缓存模式
                  • 查看缓存数据量
                    • 格式化、挂载
                      • 开机自动挂载
                        • 测试性能
                        • 停用Bcache
                          • 卸载
                            • 注销缓存盘
                              • 停用后端磁盘
                                • 操作完成后,通过lsblk命令查看结果
                                • 参考
                                相关产品与服务
                                对象存储
                                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档