flashcache2.0分析(3.0的算法已经改进)

1.   flashcache简介1.  1.1. 概念       flashcache使用SSD为磁盘提供缓存,大幅度提高随机读写速度。基于linux device mapper框架,具有良好的操作性和可扩展性。本文主要针对2.0版本,3.0算法改进并且支持多块硬盘共享一块ssd,有兴趣的可以阅读下代码。 1.2. 功能
摘要由CSDN通过智能技术生成

1.   flashcache简介

1.  

1.1. 概念

       flashcache使用SSD为磁盘提供缓存,大幅度提高随机读写速度。基于linux device mapper框架,具有良好的操作性和可扩展性。本文主要针对2.0版本,3.0算法改进并且支持多块硬盘共享一块ssd,有兴趣的可以阅读下代码。

 

1.2. 功能

       flashcache具有三种模式writeback、writethrough和writearoud。

Ø  writeback模式下,后端磁盘的写io先缓存到SSD中,适当的时机再写入后端存储中。读io首先从SSD中读取,如果已经缓存了数据,则直接读取返回,反之则从后端磁盘读取并将数据缓存到SSD中

Ø  writethrough模式下,写io将同时写入到SSD和后端磁盘中,读io从SSD中读取。

Ø  writearoud模式下,SSD被旁路,所有io操作都针对后端磁盘。

flashcache可以指定缓存或者不缓存特定的pid进程产生的io,flashcache具有white table和black table,某个进程的io数据是否缓存通过以下规则判断:

1.        pid位于white table,io数据缓存

2.        pid没有设置,tgid位于white table,io数据缓存;

3.        pid位于black table,io数据不缓存;

4.        pid没有设置,tgid位于black table,io数据不缓存。

flashcache支持顺序io过滤,超过指定大小的连续io将不会被缓存到SSD中,可以提高SSD的利用率,提高随机读写的效率。

 

1.2.1.    flashcache优劣势

模块化设计,不需要编译内核;基于dm框架,良好的扩展性与易用性;不损坏磁盘数据,对后端文件系统透明。

使用接口相对简单,可定制策略较少。

 

1.2.2.    适用场景

      

 

1.3. 系统结构

flashcache由用户态接口和内核模块组成,其结构如下图所示。

内核模块为dm的target驱动,完成SSD缓存的核心功能。用户态接口分为procfs、sysctl和ioctl接口,procfs提供一些flashcache设备的状态信息,sysctl接口提供用户设置flashcache的一些可调参数,ioctl接口实现设备的ioctl,主要提供黑白表的设置功能。

 

 

2.   flashcache使用

2.1.1.    系统依赖

linux系统下内核版本2.6.18和3.2版本之间的内核都支持,大于3.2的内核没有测试过,官方给出的稳定版本为2.6.32版本。

 

2.1.2.    编译

       如果之前没有编译过内核源代码,则下载相应内核的源代码依次运行

make menuconfig

make

make modules_install

make install

       如果在/boot下没有生成initrd开头的文件,则需要调用以下命令

mkinitramfs -o /boot/initrd.img-xxx(内核版本号) /lib/modules/xxx(内核版本号)

       下载flashcache源代码,进入源代码目录

make KERNEL_TREE=/xxx(编译好的内核源代码目录)

make install

       编译之后会生成一个flashcache.ko文件,并拷贝到系统/lib/modules对应目录,此时通过insmod或者modprobe加载flashcache即可。

2.2. 用户态工具

官方提供了4个接口,新增一个接口。

 

 

 

表3-1 flashcache接口

名称

功能

备注

flashcache_create

创建一个flashcache设备

 

flashcache_load

从一个ssd设备上加载原有的flashcache设备

 

flashcache_destroy

载一个ssd设备上擦出其上的flashcache设备的元数据

 

flashcache_remove

快速移除flashcache设备

 

flashcache_setioctl

flashcache设备的ioctl接口,主要用于设置黑白表

 

 

2.3. 接口说明

2.3.1.    flashcache_create

名称

flashcache_create

功能

创建一个flashcache设备

命令形式

flashcache_create [-v] [-p back|thru|around] [-b block size] [-m md block size] [-s cache size] [-a associativity] cachedev ssd_devname

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值