Device mapper

Device mapper

  基本概念

  • Device mapper是Linux内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略

  基本原理及其构造

    构造

整个device mapper机制由两部分组成--内核空间的device mapper驱动、用户空间的device mapper库以及它提供的dmsetup工具。

  • 分为三层:
    1. Mapped Device:映射出的逻辑设备
    2. Mapping Table:映射规则表
    3. 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

   相关链接

  • devmapper
  • DeviceMapperBasics
  • dmsetup

你可能感兴趣的:(存储,qemu,虚拟化,linux内核)