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

来源:互联网 发布:银行家算法代码 编辑:程序博客网 时间:2024/05/29 18:33
这个星期偷着点闲看下flashcache,所谓知其然知其所以然,本着程序员追根抛底的职业素养,看看flashcache究竟是何等的三头六臂。
一、flashcache是什么
flashcache是一个linux内核模块,主要目的是用SSD加速块设备,相当于用SSD盘作为块设备的缓存。
二、flashcache在内核的哪一层
位于内核的dm层(device mapper),在块设备之上,在VFS之下。
三、flashcache适用于哪些场景
最初是作为数据库InnoDB的缓存,适用于大多数块设备为瓶颈的系统中。
四、flashcache可以作为软RAID的缓存吗
如果RAID下面的磁盘是HDD,那么可以。如果已经是SSD盘的RAID,那就多此一举了吧。
五、flashcache工作原理是什么
就是在块设备之上建立一个逻辑层,这个逻辑层缓存了读写数据,在命中的情况下,读可以立即返回不用发送到磁盘上。
同样,写也不用等待写到磁盘上,而直接返回并由后台慢慢把数据刷回。
六、flashcache可以同时用做读缓存和写缓存吗
是的。但是个人认为其优势在于写缓存,因为写SSD比写HDD等块设备还是快了不少。
如果是读的话,不命中照样得去HDD取,那命中不就快了很多吗?
理想总是丰满的,现实总是残酷的。在实际应用中,例如上面是VFS层,VFS层已有自己的缓存,对读没有明显提高。
七、那哪里可以下载到最新的版本
https://github.com/facebook/flashcache.git/  用svn也可以下载
八、如何搭建环境
如果你已经下载代码,查看flashcache-sa-guide.txt文件吧,里面有详细的说明。
我这边暂且就当个剧透吧,说个基本。
第一,当然是编译,编译完成生成一个内核文件flashcache.ko 和三个用户态程序flashcache_create,flashcache_destroy,flashcache_load。ko文件用于在内核,放入/lib/module/version/kernel/driver/内核模块相应目录,然后depmod -a;;modprobe加载该模块。也可以添加开机加载模块脚本/etc/modules-load.d/实现。
第二,用flashcache_create创建块设备对应的缓存设备,具体参见flashcache-sa-guide.txt。
第三,创建好flashcache设备之后就可以使用该设备了。这时候就可以比较一下有flaschcache与没有之间有差别了。
九、如果你觉得还不够过瘾,那么就深入源代码看看究竟
其实源代码非常少,也不难。看看1.0版本的Makefile,内核态的也就4个文件,flashcache_conf.c flashcache_main.c flashcache_subr.c flashcache_ioctl.c,当然还有头文件,头文件的魅力是无穷的,因为写linux内核的哥们总是喜欢把最精华的设计和数据结构放在头文件里,flashcache也是继承了这一光荣传统。只要把flashcache.h中数据结构看懂,就已经入门三分之一了,把把头文件中状态宏看懂就知道读写流程的状态机了,接着再看源代码,带着这些宏观的概念再去看源代码,基本上就是游山玩水般惬意了。
下面几篇文章开始讲源码。
linux内核源码阅读之facebook硬盘加速利器flashcache之一
http://blog.csdn.net/liumangxiong/article/details/11681787
linux内核源码阅读之facebook硬盘加速利器flashcache之二
http://blog.csdn.net/liumangxiong/article/details/11726651
linux内核源码阅读之facebook硬盘加速利器flashcache之三
http://blog.csdn.net/liumangxiong/article/details/11741755
linux内核源码阅读之facebook硬盘加速利器flashcache之四
http://blog.csdn.net/liumangxiong/article/details/11761227
linux内核源码阅读之facebook硬盘加速利器flashcache之五
http://blog.csdn.net/liumangxiong/article/details/11772473
linux内核源码阅读之facebook硬盘加速利器flashcache之六
http://blog.csdn.net/liumangxiong/article/details/11784923
linux内核源码阅读之facebook硬盘加速利器flashcache之七
http://blog.csdn.net/liumangxiong/article/details/11800947
linux内核源码阅读之facebook硬盘加速利器flashcache之八
http://blog.csdn.net/liumangxiong/article/details/11813899

原创粉丝点击