linux中,mapper全稱“Device mapper”,是一種從邏輯設備到物理設備的映射機制;在該機制下,用戶能很方便的根據自己的需要實現對存儲資源的管理;它包含三個重要概念:mapped device、target device等。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
1、linux中的mapper是什么
mapper全稱“Device mapper”,是Linux2.6內核中提供的一種從邏輯設備到物理設備的映射機制,在該機制下,用戶能夠很方便的根據自己的需要實現對存儲資源的管理。
當前比較流行的 Linux 下的邏輯卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等都是基于該機制實現的。
Device mapper本質功能就是根據映射關系和target driver描述的IO處理規則,將IO請求從邏輯設備mapped device轉發相應的target device上。
Device mapper在內核中作為一個塊設備驅動被注冊的,它包含三個重要的對象概念,mapped device、映射表、target device。
Device mapper在用戶空間相對簡單,主要包括device mapper庫和dmsetup工具。
Device mapper庫就是對ioctl、用戶空間創建刪除device mapper邏輯設備所需必要操作的封裝,
dmsetup是一個提供給用戶直接可用的創建刪除device mapper設備的命令行工具。
功能:
可以將多個物理設備合成為一個邏輯設備,可以做普通的合并,或者實現類似raid0的條帶化,還可以用來屏蔽硬盤中的壞道扇區,還可做lvm快照來備份數據庫,或者通過零設備文件來模擬非常大的設備,用于測試功能。?
Device mapper 是lvm 和 multipating 的底層技術。
2.安裝包:
device-mapper device-mapper-multipath
3.工作原理:
通過mapping table來創建邏輯設備(物理設備和邏輯設備每個扇區之間的對應關系)。表內容包括:
邏輯設備的起始扇區:
通常是0 邏輯設備的扇區數量 類型(linear線性,連續組合;striped條帶化;error屏蔽壞道;snapshot快照;zero零設備)
4.磁盤扇區的計算:
1扇區=512字節b 1kb=1024b 扇區大小kb=扇區數512/1024 比如10G的磁盤,扇區數為:
10000000kb=扇區數512/1024=20000000個扇區
#blockdev?--getsize?/dev/sda6?查看設備扇區數量 #echo?“0?‘blockdev?--getsize?/dev/sda6’?linear?/dev/sda6?0”?|?dmsetup?create?mydevice
通過table創建邏輯設備 0表示這個邏輯設備從0扇區開始,有208782個扇區,linear表示連續的,/dev/sda6 0 表示從/dev/sda6的第0個扇區開始做邏輯設備。當一個設備用剩余空間做邏輯設備時候,扇區就不是從0開始了。 以下寫入開機腳本后重啟才會生效
5.linear類型設備 特性:
把多個物理分區的扇區連續起來組合成一個邏輯設備。 0 20000 linear /dev/sda1 0 20000 60000 linear /dev/sdb1 0 注:
邏輯設備從0到扇區取自sda1從0扇區開始取20000扇區,邏輯設備從20000扇區開始,從sdb1的0扇區開始取60000個扇區,該邏輯設備80000個扇區。 實現命令
#echo?“0?20000?linear?/dev/sda1?0n20000?60000?linear?/dev/sdb1?0”?|?dmsetup?create?mydevice
6.stripe條帶化:
通過chunksize 輪流寫入磁盤 0 1024 striped 2 256 /dev/sda1 0 /dev/sdb1 0 注:
邏輯設備從0扇區開始到1024扇區,類型為striped ,2個設備, chunksize 256kb 從/dev/sda1和/dev/sdb1 的0 扇區開始 各取512扇區(注意扇區數必須是chunksize的倍數) 命令實現
#echo?“0?1024?striped?2?256?/dev/sda1?0?/dev/sdb1?0”?|?dmsetup?create?mydevice
7.error:
通過合成邏輯設備去除錯誤扇區 0 80 linear /dev/sda1 0 80 100 error 181 200 linear /dev/sdb1 0 命令實現
#echo?“0?80?linear?/dev/sda1?0n80?100?errorn181?200?linear?/dev/sdb1?0”?|?dmsetup?create?mydevice
8.snapshot邏輯卷快照 特性:
創建快照后,出現3個設備(原設備,快照設備,cow設備) 如果數據沒有改變,讀取數據從原設備讀取,寫入變化的數據存儲到cow區域中,快照設備保存原設備的數據。
#echo?―0?1000?snapshot?/dev/sda1?/dev/vg0/realdev?P?16?‖?|?dmsetup?create?mydevice從0扇區到1000扇區為/dev/sda1創建快照,名字為realdev,P表示下次啟動仍然生效,16為chunksize
9.zero零設備特性:
類似/dev/zero,但是他是個塊設備,不能寫東西,一般用來測試用,創建大的文件系統進行測試。比如測試創建10T大小的設備用ext3來格式化
#export?HUGESIZE=$[100?*?(2**40)/512]?100T的扇區數量?2**40為2的40次方 #echo?"0?$HUGESIZE?zero"?|?dmsetup?create?zerodev?生成的文件在/dev/mapper/zerodev?ext3每個分區最大支持2TB
10.多路徑功能特性:
多路徑功能,用來提供線路冗余,監控每條鏈路,當鏈路失敗時自動切換鏈路,而且自動恢復運行,防止單點故障。生成的設備名 /dev/dm-X 類型:
當兩路徑優先級相等:
負載均衡 當兩路徑優先級不等: 冗余
multipath列出多路徑設備,后臺需要開啟multipathd服務,優先級大小為0-1024 實驗步驟:
存儲端配置雙網卡,配置/dev/sda6為iscsi設備 服務器端安裝device-mapper-multipath包,連接iscsi設備
#vi?/etc/multipath.conf?注釋掉?blacklist?{?devnode?"*"?不同廠商的配置是不一樣的?}?取消注釋?default{?udev_dir?..?..?path_grouping_policy?failover(根據失效域來判斷執行策略)?} #systemctl?enable?multipathd? #systemctl?restart?multipathd?之后生成的設備位置在/dev/mpath/下,可制作文件系統,掛載 #multipath?–ll?查詢設備狀態
11.FC存儲:
存儲端建立raid設備,raid建立與HBA卡WWN號的映射關系(連接哪個HBA卡則使用哪塊磁盤設備) WWN為HBA卡的授權名稱,用來區分一個或一組網絡連接,表示網絡上的一個連接
相關推薦:《Linux視頻教程》