本文共 672 字,大约阅读时间需要 2 分钟。
最近在做文件系统和linux块设备相关的工作,需要对文件系统和底层块设备之间的关系和交互有比较深入的了解。笔者参考的书籍有敖青云所著的《存储技术原理分析-基于Linux2.6内核原代码》,同时参考的还有Jonathan Corbet、Alessandro Rubini和Greg Kroah-Hartman 一起著作的linux设备经典书籍《Linux设备驱动Edition 3 》、陈学松写的《深入Linux设备驱动内核机制》.对比了一下,还是敖青云写的很存储结合更紧密一些。整体上《存储技术原理分析-基于Linux2.6内核原代码》中对块设备的层次划分很清晰,完整地总结了通用块层、IO调度层和物理块设备层之间的关联。下面是他对块设备驱动的层次划分:
但是对于它对块设备驱动的层次划分,个人认为上面的图不是特别精确。比如,根据Linux Storage Stack Diagrm 中的描述,md和device mapper设备驱动应该在I/O scheduler之上:
因为ioscheduler要实现scatter read/gather write, 就必须基于存储盘片或者RAID的物理特性,根据上层逻辑块设备或者device mapper发过来的逻辑IO请求,把它翻译转换成对应存储设备上的IO请求。因此这个层次的device mapper 需要在IO schedulre 层之上。
本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1920614 ,如需转载请自行联系原作者