Device mapper
基本概念
- Device mapper是Linux内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略
基本原理及其构造
构造
整个device mapper机制由两部分组成--内核空间的device mapper驱动、用户空间的device mapper库以及它提供的dmsetup工具。
- 分为三层:
- Mapped Device:映射出的逻辑设备
- Mapping Table:映射规则表
- Target Device:底层的实际设备
- targets device
- zero v1.1.0
- mirror v1.13.2
- snapshot-merge v1.2.0
- snapshot-origin v1.8.1
- snapshot v1.11.1
- striped v1.5.1
- linear v1.2.1
- error v1.1.0
原理
- 它包含三个重要的对象概念,mapped device、映射表、target device。
- mapped device是对外提供操作的逻辑设备,它通过映射表与target device相互对应,target device是实实在在存在的物理设备,它们之间构成了一个树状结构
操作指令及其作用
dmsetup create device_name [-u uuid] [--notable] [table_file] /*创建设备*/ dmsetup remove device_name /*删除指定的设备*/ dmsetup remove_all /*删除所有的设备*/ dmsetup suspend device_name /*暂停指定的设备*/ dmsetup resume device_name /*唤醒指定的设备*/ dmsetup load device_name [table_file] /*上传指定的设备*/ dmsetup clear device_name /*清除映射表中不在活动的设备*/ dmsetup reload device_name [table_file] /* 为指定设备从磁盘中读取映射文件,重新构建映射关系 */ dmsetup rename device_name new_name /*重命名设备*/ dmsetup ls /*列出所有的设备*/ dmsetup info [device_name] /*列出设备的信息*/ dmsetup deps [device_name] /*列出设备的依赖*/ dmsetup status [device_name] /*列出设备状态*/ dmsetup table [device_name] /*列出设备的映射表*/ dmsetup wait device_name [event_nr] dmsetup mknodes [device_name] /*确保设备的节点正确*/ dmsetup targets /*列出已经上传的设备*/ dmsetup version /*显示设备版本号*/
实例说明
例1--映射表--线性结构
0 1024 linear /dev/sda 204 1024 512 linear /dev/sdb 766 1536 128 linear /dev/sdc 0
将逻辑设备0~1023扇区、1024~1535扇区以及1536~1663三个地址范围分别以线形映射的方式映射到/dev/sda设备第204号扇区、/dev/sdb设备第766号扇区和/dev/sdc设备的第0号扇区开始的区域
例2--映射表--striped
0 2048 striped 2 64 /dev/sda 1024 /dev/sdb 0
将逻辑设备从0号扇区开始的,长度为2048个扇区的段以条带的方式映射的到/dev/sda设备的第1024号扇区以及/dev/sdb设备的第0号扇区开始的区域。同时告诉内核这个条带类型的target driver存在2个条带设备与逻辑设备做映射,并且条带的大小是64个扇区,使得驱动可以该值来拆分跨设备的IO请求
例3--映射表--mirror
0 2048 striped 2 64 /dev/sda 1024 /dev/sdb 0
将逻辑设备从0号扇区开始的,长度为4711个扇区的段以镜像的方式映射到/dev/sda设备的第2048个扇区以及/dev/sdb设备的第1024号扇区开始的区域
创建设备--线性
dmsetup create disk 0 1024 linear /dev/loop0 0