Linux系統中的Device Mapper學習

来源:http://www.cnblogs.com/kerrycode/archive/2016/12/16/6187148.html
-Advertisement-
Play Games

在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 機制這篇文章。

clip_image001

 

理論知識只是對那些達到一定高度和深度,想深入鑽研的人研究的, 下麵我們還是來看看簡單操作中遇到的一些疑問和問題,例如上圖所示,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 ~]#

clip_image002

253後面的數字就對應dm後面的數字,如果你要查看具體的信息就使用命令 dmsetup info 就能看到下麵詳細信息。

clip_image003

[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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.XML:可擴展標記語言。 可擴展標記語言是一種很像超文本標記語言的標記語言。 它的設計宗旨是傳輸數據,而不是顯示數據。 它的標記沒有被預定義。需要自行定義標簽。 它被設計為具有自我描述性。 是W3C的推薦標準。 2.Android解析XML的三種方式 (1).SAX解析 http://www.c ...
  • 示例代碼 ///////////////////////////OC.h////////////////////////// //// UIView+FreeBorder.h// BHBFreeBorder//// Created by bihongbo on 15/12/30.// Copyrig ...
  • 本文是自己工作上的筆記總結,適合的可以直接拿去用,不適合的,適當修改即可! iptbales預設ACCEPT策略,也稱通策略,這種情況下可以做攔截策略,還有種叫堵策略,然後開放通的規則。(我偏向堵策略,自己需要開放什麼在開,以下例子也是在此基礎上的) iptables 一些參數名稱: 四表五鏈:fi ...
  • 閑扯: 實習了將近半年一直在做硬體以及底層的驅動,最近要找工作了發現了對linux普遍要求很高,而且工作崗位也非常多,所以最近一些時間在時不時地接觸linux。 正文:(我一時興起開始寫博客,準備不充分,圖片都沒有保存) 首先就是上網查找一下現成的教程,下麵的網址就是一個很好的教程 http://w ...
  • Hi,大家好!我是CrazyCatJack。今天給大家講解Linux根文件系統的init進程和busybox的配置及編譯。 先簡單介紹一下,作為一個嵌入式系統,要想在硬體上正常使用的話。它的軟體組成大概有這三部分:1)bootloader 2)嵌入式系統kernel 3)根文件系統 。這其實非常好理 ...
  • 本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 前幾天給一個客戶做遠程項目實施,客戶那邊的伺服器是Windows OS的,我們這邊的業務運行需要linux OS,所以就在Windows OS下安裝VMWare。 但是在配置VM的IP地址... ...
  • vim有許多命令,網上搜有一堆貼子、文章列舉出各種功能的命令。 對於“=”、“d”、“y”,我在無意中發現了它們所具有的相同的一些用法,先舉以下三個例子: 其中,n為行號。註意行號後面接的是大寫字母“G”。而“nG”恰好是游標移動到第n行的命令。 對於“=”,“=nG”的意思就是從當前行到第n行之間 ...
  • 使用windows 版本的charles來做代理,發現服務端返回的response會出現中文亂碼的情況, 查看軟體設置,遺憾的是並沒有關於編碼的選項。 好在charles windows版本安裝目錄下有一個Charles.ini的配置文件,可以通過修改本文件來解決這個問題。 具體解決方法: 在Cha ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...