
Linux内核
默默努力的小熊
linux kernel存储技术
展开
-
linux内核函数之 blk_plug
linux内核函数之 blk_plug原创 2013-08-24 17:47:07 · 6126 阅读 · 1 评论 -
linux块设备加速缓存之bcache
很高兴地告诉大家,bcache已经加入linux3.10内核主线了,而最新出炉的RHEL7也带了bcache,这意味着bcache已经正式进入商用阶段。翻译 2014-01-04 11:17:08 · 14284 阅读 · 1 评论 -
linux之configfs简介和编程入门
转载请注原出处:http://blog.youkuaiyun.com/liumangxiong一、什么是configfs是一种基于ram的文件系统二、configfs有什么用处在用户空间配置内核对象三、configfs VS ioctlconfigfs可直接察看,通过用户态目录文件访问接口,适用于内核对象有众多复杂的配置。四、configs VS sysfsconfigfs可以原创 2013-09-29 10:39:02 · 11948 阅读 · 2 评论 -
linux内核源码阅读之facebook硬盘加速利器flashcache之初
这个星期偷着点闲看下flashcache,所谓知其然知其所以然,本着程序员追根抛底的职业素养,看看flashcache究竟是何等的三头六臂。一、flashcache是什么flashcache是一个linux内核模块,主要目的是用SSD加速块设备,相当于用SSD盘作为块设备的缓存。二、flashcache在内核的哪一层位于内核的dm层(device mapper),在块设备之上,在V原创 2013-09-13 14:45:32 · 6845 阅读 · 2 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之八
前面我们的分析中重点关注正常的数据流程,这一小节关注如果有异常,那么流程是怎么走完的呢?1)创建新任务时kcached_job申请不到2)读写命中时cache块为忙3)系统关机时处理,系统开机时处理,系统异常掉电后的处理首先来看第1种情况,申请kcached_job是在函数flashcache_lookup中,543/* 544 * dbn is the starting原创 2013-09-18 16:36:57 · 12318 阅读 · 9 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之七
这一节讲缓存的写回磁盘流程。这里隆重介绍一下两位幕后的英雄:1724/*1725 * Sync all dirty blocks. We pick off dirty blocks, sort them, merge them with1726 * any contigous blocks we can within the set and fire off the writes.1原创 2013-09-18 11:18:37 · 3375 阅读 · 1 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之六
其实到目前为止,如果对读流程已经能轻松地看懂了,那么写流程不需要太多脑细胞。我觉得再写下去没有太大的必要了,后面想想为了保持flashcache完整性,还是写出来吧。接着到写流程:1530static void1531flashcache_write(struct cache_c *dmc, struct bio *bio)1532{1533 int index;1534原创 2013-09-17 19:38:25 · 3050 阅读 · 1 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之四
这一小节介绍一下flashcache读写入口和读写的基础实现。首先,不管是模块还是程序,必须先找到入口,用户态代码会经常去先看main函数,内核看module_init,同样看IO流时候也要找到入口。flashcache作为一个dm_target,入口就是struct target_type 的map函数,对应的是flashcache_map函数:1581/*1582 * Decid原创 2013-09-17 10:09:05 · 3912 阅读 · 4 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之五
正常流程到flashcache_map的1623行或1625行,按顺序先看读流程:1221static void1222flashcache_read(struct cache_c *dmc, struct bio *bio)1223{1224 int index;1225 int res;1226 struct cacheblock *cacheblk;1227 int qu原创 2013-09-17 15:09:41 · 3285 阅读 · 0 评论 -
linux内核源码阅读之facebook硬盘加速利器flashcache之一
从来没有写过源码阅读,这种感觉越来越强烈,虽然劣于文笔,但还是下定决心认真写一回。源代码下载请参见上一篇flashcache之我见 http://blog.youkuaiyun.com/liumangxiong/article/details/11643473下面代码对应的是tag下面的1.0版本的。看内核模块源码,闭着眼睛打开flashcache_init函数,区区百来行代码何足惧也。原创 2013-09-14 14:54:19 · 7735 阅读 · 0 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之三
上一节讲到在刷缓存的时候会调用new_kcahed_job创建kcached_job,由此我们也可以看到cache数据块与磁盘数据的对应关系。上一篇:http://blog.youkuaiyun.com/liumangxiong/article/details/11726651现在继续从new_kcached_job函数中挖掘有用的信息。那就是cache块跟磁盘上扇区是怎么对应起来的?即329行的为什么要原创 2013-09-16 17:22:46 · 3817 阅读 · 1 评论 -
linux内核源码阅读之facebook硬盘加速flashcache之二
flashcache数据结构都在flashcache.h文件中,但在看数据结构之前,需要先过一遍flashcache是什么,要完成哪些功能?如果是自己设计这样一个系统的话,大概要怎么设计。前面讲过,flashcache主要用途还是在写缓存上,要写入磁盘的IO先写入速度较快的SSD盘,随后再由单独的线程将SSD盘中脏数据块同步到磁盘中。这样看来,SSD就是一个缓存,有缓存的基本特性如命中、脏、水原创 2013-09-16 12:06:48 · 6018 阅读 · 22 评论 -
linux内核之bcache简介
Linux最新支持SSD作为缓存设备翻译 2014-01-10 17:58:10 · 15870 阅读 · 1 评论