linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]

转载请注明出处:http://blog.csdn.net/liumangxiong

bcache是linux内核块层cache。它使用类似SSD来作为HDD硬盘的cache,从而起到加速作用。

HDD硬盘便宜并且空间更大,SSD速度快但更贵。如果能两者兼得,岂不快哉?bcache能做到。

bcache使用SSD作为其他块设备cache。类似ZFS的L2Arc,但bcache还增加了写回策略,并且是与文件系统无关的。bcache被设计成只需要最小的代价,无需配置就能在所有环境中工作。默认状态下bcache不缓存顺序IO,只缓存随机读写。bcache适用于桌面、服务器,高级存储阵列,甚至是嵌入式环境。

设计bcache目标是让被缓存设备与SSD一样快(包括缓存命中、缓存不命中、透写和回写)。现在还未达到初衷,特别是顺序写。同时测试结果表明离目标很接近,甚至有些情况下表现更好,例如随机写。

bcache是数据安全的。对于写回策略缓存来说,可靠性是非常重要的,出错就意味着丢失数据。bcache是用电池备份阵列控制器的替代选择,同时也要求bcache在异常掉电时也是数据安全的。对于写而言,必须在所有数据写到可靠介质之后才能向上层返回写成功,在异常掉电情况下,写不能是部分完成的。大量工作已经投入到这部分数据安全的工作中。

bcache性能设计目标是等同于SSD。最大程度上去最小化写放大,并避免随机写。bcache将随机写转换为顺序写,首先写到SSD,然后回写缓存使用SSD缓存大量的写,最后将写有序写到磁盘或者阵列上。对于RAID6阵列,随机写性能很差,还要花费不菲的价格购买带有电池保护的阵列控制器。现在有了bcache,你就可以直接使用linux自带的优秀软RAID,甚至可以在更廉价的硬件上获取更高的随机写性能。

特性

1、一个缓存设备可以作为多个设备的缓存,并且可以在设备运行时动态添加和删除缓存。

2、异常关机恢复,只有当写到磁盘后缓存才会确认写完成。

3、正确处理写阻塞和刷缓存

4、支持writethrough,

writeback和writearound

5、检测并避开顺序IO(可配置关闭该选项)

6、当检测到SSD延迟超过配置边界值,减少到SSD流量(当一个SSD作为多个磁盘缓存时使用)

7、缓存不命中时预读(默认关闭)

8、高性能的writeback实现:脏数据都是排序后再回写。如果设置了writeback水位线,PD控制器会根据脏数据比例来平滑处理到后台writeback流量。

9、使用高效率了B+树,bcache随机读可以达到1M IOPS

10、稳定,已经有产品应用

性能

7/25/12 随机测试

在我的测试机上,我将SSD盘划分为两个相同大小的分区,一个分区用于测试SSD裸盘,另一个作为硬盘缓存。

bcache配置修改:cache_mode设置为writeback,writeback_percent设置为40。(如果writeback_percent不为0,bcache使用PD控制器根据缓存的脏数据块来平滑处理下发到磁盘的流量)。同时还关闭了拥塞阀值,因为当SSD延迟达到极限时,如果bcache切换到writethroug

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值