你知道linux内核中的device mapper?.doc
《你知道linux内核中的device mapper?.doc》由会员分享,可在线阅读,更多相关《你知道linux内核中的device mapper?.doc(4页珍藏版)》请在三一文库上搜索。
1、你知道linux内核中的device mapper?关于device mapper在内核中的架构信息在参考文档1,2中有很好的解释,在这里就不过多介绍,以下将详细的根据device mapper的代码解释device mapper机制。一、 LVM简介LVM2是Linux 下的逻辑卷管理器,它可以对磁盘进行分区等。但是我们这里用LVM主要是利用用户空间的device mapper 库以及它提供的 dmsetup 工具。LVM的下载地址为:http:/git.fedorahosted/git/lvm2.git。下载后在tools文件夹下会看到dmsetup.c文件,该文件即为dmsetup工具的
2、源码。LVM2的安装方法为:1. 执行脚本 ./configure2. make device-mapper3. make install这时ls -l /sbin/dmsetup 发现该命令已经是最近编译的。二、DM支持RAID45DM默认支持linear、mirror、striped、snapshot、multipath等target driver,并不支持raid45。但是在2.6内核的几个特定版本中有提供支持raid45的补丁:http:/people.redhat/heinzm/sw/dm/dm-raid45/举例kernel-2.6.30-rc3来说。下载好内核后,需将内核名字更改
3、为linux-2.6.30-rc3。然后将下载的补丁放在跟刚下载的内核同目录下,执行命令patch -bp0 fn(cmd, argc-, argv+, NULL, mulTIple_devices) 即执行_create函数3. _create-dm_task_create-dm_check_version-_check_version-dm_task_create-dm_task_run-_do_dm_ioctl-ioctl(DM_VERSION)-dm_task_run-_create_and_load_v4-dm_task_create-dm_task_run-_do_dm_ioctl
4、-ioctl(DM_DEV_CREATE)-dm_task_create-dm_task_run-_do_dm_ioctl-ioctl(DM_TABLE_LOAD)-dmt-type=DM_DEVICE_RESUME-dm_task_run-_do_dm_ioctl-ioctl(DM_DEV_SUSPEND)-case DM_DEVICE_RESUME-add_dev_node由上可知,_create主要执行4个ioctl操作,DM_VERSION、DM_DEV_CREATE、DM_TABLE_LOAD和DM_DEV_SUSPEND(DM_DEVICE_RESUME)。四个ioctl分别对应内
5、核四个命令。在下面会分别介绍这四个命令。dm_task_create根据ioctl要执行的命令创建一个dm_task结构体。dm_task_run根据dmt-type的编号执行ioctl命令,具体编号对应_cmd_data_v4中相应的命令。总之感觉用户空间的代码风格很乱,dm_task_create可能再次调用到dm_task_create和dm_task_run,dm_task_run中又有可能调用dm_task_create和dm_task_run。而且DM_DEVICE_RESUME这个命令不是通过dm_task_create创建,是直接赋值得到的。层次弄的太乱,一点都不清晰。3. 内
6、核空间执行过程:用户空间ioctl后,内核空间对应执行dm-ioctl.c中的dm_ctl_ioctl-ctl_ioctl命令。至于为什么这个ioctl对应的是dm-ioctl.c中的dm_ctl_ioctl而不是dm.c中的dm_blk_ioctl,而且dm_blk_ioctl什么时候被调用的我还不是很清楚。ctl_ioctl执行方法:ctl_ioctl-fn = lookup_ioctl()返回相应函数的函数指针-copy_params()获得函数参数-fn(param, input_param_size)执行相应函数。其中用户空间的命令主要有三个,根据lookup_ioctl函数可知主要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 你知道linux内核中的device mapper? 知道 linux 内核 中的 device mapper
链接地址:https://www.31doc.com/p-3381743.html