Flashcache系统管理员手册

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。

flashcache的更多相关文章

  1. centos6.4安装flashcache

    FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用.为什么是用于加速 ...

  2. linux内核源码阅读之facebook硬盘加速flashcache之六

    其实到目前为止,如果对读流程已经能轻松地看懂了,那么写流程不需要太多脑细胞.我觉得再写下去没有太大的必要了,后面想想为了保持flashcache完整性,还是写出来吧.接着到写流程: 1530stati ...

  3. linux内核源码阅读之facebook硬盘加速flashcache之五

    正常流程到flashcache_map的1623行或1625行,按顺序先看读流程: 1221static void 1222flashcache_read(struct cache_c *dmc, s ...

  4. linux内核源码阅读之facebook硬盘加速flashcache之八

    前面我们的分析中重点关注正常的数据流程,这一小节关注如果有异常,那么流程是怎么走完的呢? 1)创建新任务时kcached_job申请不到 2)读写命中时cache块为忙 3)系统关机时处理,系统开机时 ...

  5. linux内核源码阅读之facebook硬盘加速flashcache之四

    这一小节介绍一下flashcache读写入口和读写的基础实现. 首先,不管是模块还是程序,必须先找到入口,用户态代码会经常去先看main函数,内核看module_init,同样看IO流时候也要找到入口 ...

  6. linux内核源码阅读之facebook硬盘加速flashcache之二

    flashcache数据结构都在flashcache.h文件中,但在看数据结构之前,需要先过一遍flashcache是什么,要完成哪些功能?如果是自己设计这样一个系统的话,大概要怎么设计. 前面讲过, ...

  7. linux内核源码阅读之facebook硬盘加速利器flashcache

    从来没有写过源码阅读,这种感觉越来越强烈,虽然劣于文笔,但还是下定决心认真写一回. 源代码下载请参见上一篇flashcache之我见 http://blog.csdn.net/liumangxiong ...

  8. linux内核源码阅读之facebook硬盘加速flashcache之三

    上一节讲到在刷缓存的时候会调用new_kcahed_job创建kcached_job,由此我们也可以看到cache数据块与磁盘数据的对应关系.上一篇:http://blog.csdn.net/lium ...

  9. flashcache中应用device mapper机制

    Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备. DM以块设备的形式注册到Linux内核中,凡是挂载(或者说“映射” ...

随机推荐

  1. .net使用mvc模式开发web应用 模型与视图间的数据处理

    http://www.cnblogs.com/JeffreyZhao/archive/2009/02/27/mvc-use-strong-type-everywhere.html#3427764 本文 ...

  2. FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误

    前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误. 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很 ...

  3. VS2013开发 windows服务 挂到服务器上执行

    这是百度经验的链接,本人主要参考的他.http://jingyan.baidu.com/article/cd4c2979e9330d756f6e6070.html 1 创建windows服务项目 2 ...

  4. php的cookie和session相同主域名共享

    如何使用chrome查看cookie和session详见另一篇文章,点这里 首先说cookie, $cookieDomain = '.elf.com'; setcookie('elf', 'im el ...

  5. SGA(System Global Area)

    系统激活时在内存内规划的一个固定的区域,用于存储每位使用者所需存取的数据和必备的系统信息.这个区域成为系统全局区. 数据块缓存区:存放读取数据文件的数据块副本,或者曾经处理过的数据.有效减少读取数据时 ...

  6. SVN系统的几个术语

    SVN系统的几个术语 User:用户,可以远程连接到SVN服务器的权限实体. User Group:用户组,用于管理一组权限相同的用户. Repository:版本库,在服务器端保存着的项目中所有的文 ...

  7. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。

    现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); req.Us ...

  8. webrtc进阶-信令篇-之三:信令、stun、turn、ice

    webRTC支持点对点通讯,但是webRTC仍然需要服务端:  . 协调通讯过程中客户端之间需要交换元数据,    如一个客户端找到另一个客户端以及通知另一个客户端开始通讯.  . 需要处理NAT(网 ...

  9. C# 基础(7)--线程

    进程与线程 一个程序就是一个进程,进程包含线程,多个线程之间可以“并发”执行(确切的说是不停地切换),CPU是跟线程打交道的. 线程是程序的一个执行流,每个线程都有之间专有的寄存器(栈指针.程序计数器 ...

  10. ArcGIS Server 10 Java 版的Rest服务手动配置方法

    Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...