在linux系統中你使用一些命令時(例如nmon、iostat 如下截圖所示),有可能會看到一些名字為dm-xx的設備,那麼這些設備到底是什麼設備呢,跟磁碟有什麼關係呢?以前不瞭解的時候,我也很納悶. 其實dm是Device Mapper的縮寫,Device Mapper 是 Linux 2.6 內... ...
在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