Linux系统中的Device Mapper学习
在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学习的更多相关文章
- Linux 内核中的 Device Mapper 机制
本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...
- [转] Linux 内核中的 Device Mapper 机制
本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...
- 学习Linux系统中命令的简单方法
如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中“一切皆文件”概念虽然说是没有错,是对的.但是 ...
- 用户管理 之 Linux 系统中的超级权限的控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
- 在Linux系统中修改IP地址
在Linux系统中,通过编辑网络配置文件,设置系统IP地址,当然要在root权限下执行,具体步骤如下: 1.切换路径到/etc/sysconfig/network-scripts [root@Comp ...
- 在 Linux 系统中安装Load Generator ,并在windows 调用方法
在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...
- Linux系统中存储设备的两种表示方法
转:https://blog.csdn.net/holybin/article/details/38637381 一.对于IDE接口的硬盘的两种表示方法: 1.IDE接口硬盘,对于整块硬盘的两种表示方 ...
- 【Linux】Linux系统中的权限详解
我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...
- 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问
在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...
随机推荐
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- URL安全的Base64编码
Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...
- ABP文档 - Javascript Api - AJAX
本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...
- Android 获取meta-data中的数据
在 Android 的 Mainfest 清单文件中,Application,Activity,Recriver,Service 的节点中都有这个的存在.很多时候我们可以通过 meta-data 来配 ...
- HTML5 sessionStorage会话存储
sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.本篇主要介绍 sessionStorage(会话存储) ...
- WebApi - 路由
这段时间的博客打算和大家一起分享下webapi的使用和心得,主要原因是群里面有朋友说希望能有这方面的文章分享,随便自己也再回顾下:后面将会和大家分不同篇章来分享交流心得,希望各位多多扫码支持和点赞,谢 ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
- 【开发软件】 在Mac下配置php开发环境:Apache+php+MySql
本文地址 原文地址 本文提纲: 1. 启动Apache 2. 运行PHP 3. 配置Mysql 4. 使用PHPMyAdmin 5. 附录 有问题请先 看最后的附录 摘要: 系统OS X ...
- AspNetPager分页控件样式的使用
分页是Web应用程序中最常用到的功能之一,AspNetPager 简单实用,应用到项目后台中,棒极了! 自定义样式: <style type="text/css"> ...
- 关于Genymotion下载比较慢的解决办法
Genymotion号称Android模拟器中运行最快的,但是服务器在国外,Android镜像下载起来那个速度就不想说了. Add new device后下载速度太慢了,容易失败 先登录,然后add, ...