在linux系统中你使用一些命令时(例如nmon、iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. 其实dm是Device Mapper的缩写,Device Mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等都是基于该机制实现的。关于Device Mapper的理论知识,最全的资料莫过于IBM的Linux 内核中的 Device Mapper 机制这篇文章。

理论知识只是对那些达到一定高度和深度,想深入钻研的人研究的, 下面我们还是来看看简单操作中遇到的一些疑问和问题,例如上图所示,dm-0、dm-1、dm-xx各自与那些磁盘映射呢?各自又代表的啥意义呢?首先我们来看看dm-0,dm-1,dm-2这个三个文件设备

[root@mylnx01 ~]# ls /dev/dm*

/dev/dm-0  /dev/dm-1  /dev/dm-2

[root@mylnx01 ~]# ll /dev/dm*

brw-rw---- 1 root root 253, 0 Dec  7 16:45 /dev/dm-0

brw-rw---- 1 root root 253, 1 Dec  7 16:45 /dev/dm-1

brw-rw---- 1 root root 253, 2 Dec  7 16:45 /dev/dm-2

[root@mylnx01 ~]# 

或者你使用fdisk -l 命令也能看到

[root@mylnx01 ~]# fdisk -l

 

Disk /dev/sda: 85.8 GB, 85899345920 bytes

255 heads, 63 sectors/track, 10443 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        6788    54420187+  8e  Linux LVM

/dev/sda3            6789       10443    29358787+  83  Linux

 

.....................................................................

.....................................................................

 

Disk /dev/dm-0: 107.2 GB, 107206410240 bytes

255 heads, 63 sectors/track, 13033 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-0 doesn't contain a valid partition table

 

Disk /dev/dm-1: 12.8 GB, 12884901888 bytes

255 heads, 63 sectors/track, 1566 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-1 doesn't contain a valid partition table

 

Disk /dev/dm-2: 30.0 GB, 30031216640 bytes

255 heads, 63 sectors/track, 3651 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-2 doesn't contain a valid partition table

虽然/dev/下面没有所谓的dm-3、dm-4...., 一般你用nmon、iostat 之类的命令就能看到,其实他也可以查看这些dm对应的那些设备,一般都位于 /dev/mapper下面。

[root@mylnx01 VolGroup01]# ls -l /dev/mapper

total 0

crw------- 1 root root  10, 62 Dec  7 16:45 control

brw-rw---- 1 root disk 253,  0 Dec  7 16:45 VolGroup00-LogVol00

brw-rw---- 1 root disk 253,  2 Dec  7 16:45 VolGroup00-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  1 Dec  7 16:45 VolGroup00-LogVol01

brw-rw---- 1 root disk 253, 11 Dec  7 16:45 VolGroup01-LogVol00

brw-rw---- 1 root disk 253, 12 Dec  7 16:45 VolGroup01-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  9 Dec  7 16:45 VolGroup02-LogVol00

brw-rw---- 1 root disk 253, 10 Dec  7 16:45 VolGroup02-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  7 Dec  7 16:45 VolGroup03-LogVol00

brw-rw---- 1 root disk 253,  8 Dec  7 16:45 VolGroup03-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  5 Dec  7 16:45 VolGroup04-LogVol00

brw-rw---- 1 root disk 253,  6 Dec  7 16:45 VolGroup04-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  3 Dec  7 16:45 VolGroup05-LogVol00

brw-rw---- 1 root disk 253,  4 Dec  7 16:45 VolGroup05-LogVol00--PS--user--snapshot

 

[root@mylnx01 ~]# ls /dev/VolGroup*

/dev/VolGroup00:

LogVol00  LogVol00-PS-user-snapshot  LogVol01

 

/dev/VolGroup01:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup02:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup03:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup04:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup05:

LogVol00  LogVol00-PS-user-snapshot

[root@mylnx01 ~]# 

 

[root@mylnx01 ~]# cd /dev/VolGroup01

[root@mylnx01 VolGroup01]# ll

total 0

lrwxrwxrwx 1 root root 31 Dec  7 16:45 LogVol00 -> /dev/mapper/VolGroup01-LogVol00

lrwxrwxrwx 1 root root 51 Dec  7 16:45 LogVol00-PS-user-snapshot -> /dev/mapper/VolGroup01-LogVol00--PS--user--snapshot

[root@mylnx01 VolGroup01]# 

其实我们可以使用命令dmsetup ls查看dm-0、dm-1、dm-x对应的设备,其中dm后面的数字对应(253, xx)后面的数字。如下所示

[root@mylnx01 ~]# dmsetup ls 

VolGroup03-LogVol00--PS--user--snapshot (253, 8)

VolGroup00-LogVol00--PS--user--snapshot (253, 2)

VolGroup05-LogVol00     (253, 3)

VolGroup04-LogVol00     (253, 5)

VolGroup05-LogVol00--PS--user--snapshot (253, 4)

VolGroup03-LogVol00     (253, 7)

VolGroup02-LogVol00--PS--user--snapshot (253, 10)

VolGroup02-LogVol00     (253, 9)

VolGroup01-LogVol00     (253, 11)

VolGroup00-LogVol01     (253, 1)

VolGroup04-LogVol00--PS--user--snapshot (253, 6)

VolGroup00-LogVol00     (253, 0)

VolGroup01-LogVol00--PS--user--snapshot (253, 12)

[root@mylnx01 ~]#

253后面的数字就对应dm后面的数字,如果你要查看具体的信息就使用命令 dmsetup info 就能看到下面详细信息。

[root@mylnx01 ~]# more /etc/fstab 

/dev/VolGroup00/LogVol00 /                      ext3    defaults        1 1

/dev/VolGroup01/LogVol00 /u01                   ext3    defaults        1 1

/dev/VolGroup02/LogVol00 /u02                   ext3    defaults        1 1

/dev/VolGroup03/LogVol00 /u03                   ext3    defaults        1 1

/dev/VolGroup04/LogVol00 /u04                   ext3    defaults        1 1

/dev/VolGroup05/LogVol00 /u05                   ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

有了上面信息我们就能知道dm-0、dm-1、dm-2分别对应下面的一些设备

dm-0 对应LVM的 VolGroup00-LogVol00 对应根目录/

dm-1 对应LVM的 VolGroup00-LogVol01 对应swap

dm-2 对应LMV的 VolGroup00-LogVol00--PS--user--snapshot

.........................................................

 

参考资料:

 

http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html

Linux系统中的Device Mapper学习的更多相关文章

  1. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  2. [转] Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  3. 学习Linux系统中命令的简单方法

    如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中“一切皆文件”概念虽然说是没有错,是对的.但是 ...

  4. 用户管理 之 Linux 系统中的超级权限的控制

    在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...

  5. 在Linux系统中修改IP地址

    在Linux系统中,通过编辑网络配置文件,设置系统IP地址,当然要在root权限下执行,具体步骤如下: 1.切换路径到/etc/sysconfig/network-scripts [root@Comp ...

  6. 在 Linux 系统中安装Load Generator ,并在windows 调用方法

    在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...

  7. Linux系统中存储设备的两种表示方法

    转:https://blog.csdn.net/holybin/article/details/38637381 一.对于IDE接口的硬盘的两种表示方法: 1.IDE接口硬盘,对于整块硬盘的两种表示方 ...

  8. 【Linux】Linux系统中的权限详解

    我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...

  9. 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问

    在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...

随机推荐

  1. 【流量劫持】躲避 HSTS 的 HTTPS 劫持

    前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...

  2. 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. 比Mysqli操作数据库更简便的方式 。PDO

    下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...

  4. 通过三次优化,我将gif加载优化了16.9%

    WeTest 导读 现在app越来越炫,动不动就搞点动画,复杂的动画用原生实现起来挺复杂,如是就搞起gif播放动画的形式,节省开发成本.   背 景 设计同学准备给一个png序列,开发读取png序列, ...

  5. 总结30个CSS3选择器

    或许大家平时总是在用的选择器都是:#id  .class  以及标签选择器.可是这些还远远不够,为了在开发中更加得心应手,本文总结了30个CSS3选择器,希望对大家有所帮助. 1 *:通用选择器 ;; ...

  6. JQuery的基础和应用

    <参考文档>   1.什么是?    DOM的作用:提供了一种动态的操作HTML元素的方法.    jQuery是一个优秀的js库.用来操作HTML元素的工具.    jQuery和DOM ...

  7. 【转】 FineBI:自助式BI工具打造业务分析的“快与准”

    如今的企业经营方式,业务对于数据分析有极大的需求,但却苦于没有数据以及工具的有效支持,业务分析仍就依赖于IT报表制作.而IT方不断地按业务需求去调研.确认业务逻辑,然后取数做报表,其中还要忍受业务的需 ...

  8. 利用PowerShell复制SQLServer账户的所有权限

    问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...

  9. CentOS 7 修改主机名

    今天在阿里云上买了一个centos7的服务器,连接上以后,发现一个很长很长的主机名,看着让人很是不爽,就想着怎样将其改成一个有个性的名字. 这里我想说的是,在centos7 版本的linux系统上和c ...

  10. CentOS下Zabbix安装部署及汉化

    搭建环境:Centos6.5_x86_64,Zabbix2.4.5,epel 源 服务端: 1.安装开发软件包yum -y groupinstall "Development Tools&q ...