当前位置: 首页 > 图文教程 > 网络编程 > PHP > Linux系统内核中的Device Mapper机制 (1)(5)
PHP 中的 Linux系统内核中的Device Mapper机制 (1)(5)
Device mapper的用户空间部分对开发者要实现自己的存储管理工具来说是可选的,事实上,很多我们常见的逻辑卷管理器,比如LVM2、dmraid等工具都利用device mapper的提供的device mapper用户空间库,根据自己的管理需求建立独立的一套管理工具,而并没有使用它提供的dmsetup工具,甚至IBM的开源项目企业级的逻辑卷管理系统-EVMS,在实现中都没有采用device mapper的用户空间库,完全根据内核中的ioctl定义实现了一套自己的函数库。
Target Driver
Device mapper提供了一个统一的架构,通过target driver 插件的方式允许用户根据实际的需要指定自己的IO处理规则,因此target driver充分体现了device mapper的灵活性。在上文中我们已经不止一次的提到过target driver,也描述过target driver的功能,在这里我们结合最简单的linear target driver具体介绍target driver的实现。
Target driver主要定义对IO请求的处理规则,在device mapper中对target driver的操作已定义好了统一的接口,在实现中该接口由我们上文提到的target_type结构中定义,它定义了以下target driver的方法:
1、 构建target device 的方法;
2、 删除target device 的方法;
3、 Target的映射IO请求的方法;
4、 Target结束IO请求的方法;
5、 暂停target device读写的方法;
6、 恢复target device读写的访问;
7、 获取当前target device状态的访问;
8、 Target 处理用户消息的方法;
用户可以根据具体需求选择性地实现上述方法,但一般最少要实现前3种方法,否则在device mapper下不能够正常的工作。linear target driver就只实现了前3种方法和方法7,它完成逻辑地址空间到物理地址空间的线性映射,可以将多个物理设备以线性连接的方式组成一个逻辑设备,就如图4中描述的那样,通过linear target driver将/dev/sda、/dev/sdb、/dev/sdc的三段连续空间组成了一个大的逻辑块设备。Linear target的实现很简单,它的创建和删除方法主要完成申请和释放描述linear target device所用结构的内存资源;IO映射处理方法的实现更是简单,如下代码所示:
评论 (0) All