http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html
这个页面讲了点原理,可以看一下。
dmsetup命令
显示当前的device mapper的信息
dmsetup ls
dmsetup info
dmsetup status
显示设备的依赖关系
dmsetup deps
sda4_crypt: 1 dependencies : (8, 4)
vg_richard-lv_home: 1 dependencies : (253, 0)
vg_richard-lv_swap: 1 dependencies : (253, 0)
vg_richard-lv_root: 1 dependencies : (253, 0)
再看一下/dev下面的文件
brw-rw---- 1 root disk 8, 4 2012-09-03 09:16 sda4
brw-rw---- 1 root disk 253, 0 2012-09-03 09:16 dm-0
brw-rw---- 1 root disk 253, 1 2012-09-03 09:16 dm-1
brw-rw---- 1 root disk 253, 2 2012-09-03 09:16 dm-2
brw-rw---- 1 root disk 253, 3 2012-09-03 09:16 dm-3
那就是sda4_crypt依赖于sda4
vg_ricard-lv_home依赖于dm-0
显示table信息
dmsetup table
创建一个linear设备
dmsetup create dm-name dm-table
dm-name是要创建的设备名字。 如果成功将会在/dev/mapper/目录下 生成这个名字的文件
dm-table是保存了这个map device的 mapping table。
简单的dm-table一个例子是:
起始扇区 扇区个数 线性映射 目标设备 目标设备上的起始扇区
0 1025 linear /dev/sdb2 0
1025 1025 linear /dev/sdc2 0
某个block的sector大小,可以用 blockdev --getsize /dev/sdb2来得到。
如果是刚分区的盘,需要用partprobe来更新一下。
查看linear设备的写入顺序
将新生成的设备创建文件系统,mount到某个目录。
cd到这个目录下,运行
dd if=/dev/zero of=test
这个命令将一直运行到写满磁盘。
在运行之前可以运行
watch -n 1 iostat /dev/sdb2 /dev/sdc2
来观察磁盘的读写情况。
可以发现 写入的过程是,先写入到/dev/sdb2,再写入到/dev/sdc2.
这个过程是和linear的概念一致的。