Flashcache

源码安装:
unzip flashcache-master.zip
cd flashcache-master
make
make install

rpm来源:http://rpm.pbone.net/
rpm安装:rpm -ivh kmod-flashcache-0.0-3.el6.elrepo.x86_64.rpm
       rpm -ivh flashcache-utils-0.0-4.1.el6.elrepo.x86_64.rpm
deb来源:alien将rpm包转换为deb包
alien --scripts kmod-flashcache-0.0-3.el6.elrepo.x86_64.rpm
alien --scripts flashcache-utils-0.0-4.1.el6.elrepo.x86_64.rpm
deb安装:dpkg -i kmod-flashcache_0.0-4_amd64.deb
       dpkg -i flashcache-utils_0.0-5.1_amd64.deb

1.简介
Flashcache 是为Linux操作系统开发的块设备回写缓存内核模块,使用了Device Mapper的方式实现,本文档可指导你快速掌握Flashcache管理工作。
2. 系统需求
Flashcache 在Linux 2.6.18 和 2.6.20 内核上编译并测试通过。如果需要在更新的内核上使用,请发送邮件给作者寻求帮助,但作者声明不会支持比2.6.18旧的内核版本

3.缓存持久性
 Writethru 和writearound 没有持久性,在断电或重启后,缓存数据会丢失,writeback具有持久性,在断电或重启后,缓存数据不会丢失。?

4. Cache创建与加载工具
这部分有三个工具: flashcache_create, flashcache_load
和flashcache_destroy.
这些工具实际上内部调用dmsetup命令,包装了一个比较简单的界面来处理创建、加载和销毁flashcache
卷的工作。希望能帮助大部分用户来避免使用到较复杂的dmsetup指令。

4.1 flashcache_create

功能:创建一个新的flashcache卷。命令语法:

flashcache_create -p back|around|thru [-s cache size] [-b block size] cachedevname ssd_devname disk_devname

-p:缓存模式 writeback,writethrough,writearound三种。

-s:缓存大小,可选项,如果未指定则整个SSD设备被用于缓存,默认的计数单位是扇区(sectors),但是可以接受k/m/g单位。

-b:指定块大小,可选项,默认为4KB,必须为2的指数。默认单位为扇区。也可以用K作为单位,一般选4KB。

-f:强制创建,不进行检查。

举例:

flashcache_create -p back -s 1g -b 4k cachedev /dev/sdc /dev/sdb

创建一个1GB回写的缓存卷,名称为“cachedev”,目标磁盘是磁盘 /dev/sdb(SAS盘或SATA盘),缓存盘是/dev/sdc(SSD盘),快大小为4KB。

flashcache_create -p thru -s 2097152 -b 8 cachedev /dev/sdc /dev/sdb

创建一个2097152扇区(1G)的通写缓存卷,块大小为8KB。其他同上面。

4.2 flashcache_load

功能:加载一个已经存在的flashcache卷,命令语法:

flashcache_load cachedevname ssd_devname disk_devname

举例:

flashcache_load cachedev /dev/sdc /dev/sdb

加载一个已经存在writeback 缓存的 /dev/sdc设备。

一般是为了重启后可继续使用。

4.3 flashcache_destroy

功能:销毁一个存在的flashcache卷,所有的数据将被丢失。

语法:flashcache_destroy ssd_devname

举例:flashcache_destroy /dev/sdc

销毁卷/dev/sdc

5 删除 flashcache 卷

需要使用 dmsetup remove 命令来删除一个 flashcache 卷。

对于writeback模式,默认的remove行为是将“脏”的cache数据写到磁盘上,一直到所有的数据写到磁盘,该命令才会返回成功。磁盘清理的过程被报告给控制台。另外机器reboot同样会触发将Cache里的脏数据同步到磁盘的动作。

对于writethrough和writearound模式的缓存,磁盘删除或者重启,卷都会被删除。

举例:dmsetup remove cachedev

删除的flashcache 卷的名称为cachedev,删除之前会清理掉所有的块。

6 Cache统计信息

可以使用 “dmsetup status”命令来查询cache的统计信息。
“dmsetup table”命令可以dumps出来achce相关的统计信息。
举例:

dmsetup status cachedev

dmsetup table cachedev

另外proc文件系统中也有相应的状态和错误的统计报告:

flashcache 卷的错误信息报告在

/proc/flashcache/<cache name>/flashcache_errors 里

flashcache 卷的统计信息报告在

/proc/flashcache/<cache name>/flashcache_stats 里

7.缓存块大小选择

缓存块大小的选择对于好的缓存利用率和性能来说很关键。
4KB的缓存块可用于绝大多数的工作量或文件系统来说

8.缓存元数据块大小的选择

元数据块的选择只适用于回写缓存模式,对于writethrough和writearound模式存储没有缓存元数据。

在flashcache版本1中,元数据块的大小被确定为1个扇区,即512B。在flashcache版本2中取消了这个限制。在版本2中,可以自己设定更大的flashcache元数据块大小。在第2版本中的缓存向后兼容,对于这些情况,512B的元数据块将继续使用。

flashcache_create –m选项可以用于配置元数据块的大小,默认为4KB。理想的元数据块大小是4KB(默认)或者8KB。选择元数据块的大小有以下规则:

1)         元数据块的大小必须是2的指数

2)         元数据快的大小不能比SSD盘配置的扇区尺寸小

3)         一个单一的元数据块不能有2个数据缓存设置。

选择比512B元数据块大的数据的优势:

1)         允许SSD被设置更大的扇区。例如,一些SSD允许选择4KB扇区,往往有更好的性能选择。

2)         允许flashache做更好的元数据更新, 有可能减少元数据的更新,写SSD变小,减少写入放大和更高的SSD寿命。

9、使用 dmsetup命令创建和加载flashcache卷

很少有人需要使用dmsetup原生命令去创建和加载flashcache卷。本节包含的内容如下:

dmsetup create device_name table_file

device_name 被创建或加载的flashcache设备名

table_file 其他缓存格式,如果被省略,则从标准输入读取。

table_file格式:

0 <disk dev sz in sectors> flashcache <disk dev> <ssd
dev> <cache mode> <flashcache cmd> <blksize in
sectors> [size of cache in sectors] [cache set size]

cache 模式:1: Write Back 2: Write Through 3: Write Around

flashcache 命令: 1: load existing cache (加载已存在的缓存)

2: create cache (创建新的缓存)

3: force create cache (overwriting existing cache):(强制创建缓存)

扇区块大小的选择: 4KB(8扇区,每页)是最佳选择对应大多数应用。

扇区缓存大小的选择:2的指数被

缓存尺寸设置:默认512

10、缓存控制:

Flashcache能被设置成两种模式:Cache Everything or Cache Nothing,默认的是Cache Everything。

这两种模式有一个黑名单和一个白名单。

11、安全注意事项

对应Flashcache,有可能被一个恶意的用户进程破坏只读文件的数据。在未来的Flashcache版本中。将解决这个问题(采用额外的数据复制)

没有记录恶意程序是如何破坏数据的机制

您可以通过设置Flashcache卷中的文件的适当权限去解决这样的问题。

12、调整XFS使Flashcache性能更好

flashcache-master.zip  
 (165.319 KB)
   李, 纲彬, 2014-07-02 10:22

flashcache-utils-0.0-4.1.el6.elrepo.x86_64.rpm  
 (28.516 KB)
   李, 纲彬, 2014-08-07 16:43

kmod-flashcache-0.0-3.el6.elrepo.x86_64.rpm  
 (60.699 KB)
   李, 纲彬, 2014-08-07 16:43

flashcache-utils_0.0-5.1_amd64.deb  
 (29.836 KB)
   李, 纲彬, 2014-08-07 16:46

kmod-flashcache_0.0-4_amd64.deb  
 (60.586 KB)
   李, 纲彬, 2014-08-07 16:46

新建文件

时间: 2024-10-14 10:13:41

Flashcache的相关文章

Large Writes in Exadata FlashCache

在 Exadata存储管理软件12.2.1.1.0中,flashcache开始支持复杂排序和大量的hash join产生的临时数据写入flashcache中,而不是直接写入SAS磁盘的tempfile中,以便后续从flashcache中读取这些临时数据,这种flashcache的增强,会使得一些特殊的SQL语句性能提升四倍以上(注意:这个特性必须基于writeback模式的flashcache). 实际上,不仅仅是hash join的临时数据可以写入flashcache中,大的写入操作都支持写入

FlashCache初体验

注意: 测试用的是CentOS6.5 内核版本2.6.32-431.el6.x86_64 ? 步骤: 上传CentOS6.5做本地yum源,安装以下包. yum install gcc yum install *kernel* yum install perl 将flashcache master打包下载至测试机上,可以从doc中找到更多说明. https://github.com/facebookarchive/flashcache 解压执行以下两个步骤. make make install

Flashcache初次体验

一.简介 Flashcache 是为Linux操作系统开发的块设备回写缓存内核模块,使用了Device Mapper的方式实现,具体用途就是通过flashcache模块用ssd加速sas盘的读写性能,提供sas盘的IOPS,此模块由Facebook开源,源代码地址:https://github.com/facebook/flashcache 二.环境说明 1.内核版本要求(官方载录) Flashcache to later Linux releases. We now have built  F

新存储结构(thin lvm)下flashcache效率测试

flashcache有两种安装方式: 1.普通的编译安装,目前似乎不支持3.x内核 2.动态内核模块编译(DMKS),这种方式相对简单,而且支持3.x高版本内核.   普通编译安装 1.首先安装必要的工具: 编译flashcache的时候需要内核头文件,这里要注意的是: 如果直接使用 yum install kernel-devel 安装的话,可能会导致 内核版本 和 内核头文件 版本不一致,在编译flashcache的时候就会出错.比如,centos6.3初装后内核版本是2.6.32-279.

flashcache中内存与磁盘,磁盘与磁盘的io

flashcache中跟磁盘相关的读写分为以下两类: 1)磁盘跟内存的交互 2)磁盘跟磁盘之前的交互 比如说读不命中时就是直接从磁盘读,属于第1种情况,那读命中呢?也是属于第1种情况,不过这时候是从SSD读.磁盘跟磁盘之间交互是用于写脏数据,将SSD中脏cache块拷贝到磁盘上去.现在介绍下两种情况使用的接口函数,这样后面在看读写流程时看到这两个函数就十分亲切了,并且清楚地知道数据是从哪里流向哪里. 对于情况1,主要是两个函数dm_io_async_bvec和flashcache_dm_io_a

flashcache 一键安装

最近要用flashcache, 但是发现目前网上帖子介绍的两种安装方式不方便: 1. 通过源码编译,还得和kernel源码一起编译 2. 通过yum,必须联网 所以把安装flashcache的rpm包单独拿出来,加了个简单的脚本,只要有这个压缩包,无需联网和编译即可安装flashcache. 压缩包见附件. 使用示例: -bash-4.1# tar xzvf install_flashcache.tar.gz install_flashcache/ install_flashcache/inst

centos6.4安装flashcache

FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用.为什么是用于加速MySqL呢,这个就涉及到数据库的专业知识了,传统磁盘的随机写随机读效率都相当低下,需要进行机械化的寻道读取,尽管很多学术论文对数据库优化中都曾经在这些方面大做文章.那么SSD的存在似乎很好的解决了随机读写的问题,因为SSD是固态存储器,即不存在机械寻道和磁化问题,而是通过电位标注01,随机读写效率

flashcache的实现与用法

工作需要,看了些flashcache的内容,记录如下: 实现 flashcache,是facebook技术团队开发的新开源项目,主要目的是用SSD硬盘来缓存数据以加速MySQL的一个内核模块.可以看到,它最初是用来做数据库加速,但同时,它也被作为通用的缓存模块而设计,能够用于任何搭建在块设备上的应用程序. 工作原理.基于Device Mapper,它将快速的SSD硬盘和普通的硬盘映射成一个 带缓存的逻辑块设备,作为用户操作的接口.用户直接对这个逻辑设备执行读写操作,而不直接对底层的SSD或者普通

flashcache之hash_block

dmc->size表示flashcache中block的数目,而在flashcache_ctr中: dmc->assoc_shift = ffs(dmc->assoc) - 1; 因为dmc->assoc表示一个set中块的数目,那么dmc->assoc_shift则表示dmc->assoc二进制形式中0的个数.这样可以使用位运算加快除法速度.也就是说: num_cache_sets = dmc->size >> dmc->assoc_shift