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開始了。以下寫入開機腳本後重新啟動才會生效
把多個實體分割區的磁區連續起來組合成一個邏輯設備。 0 20000 linear /dev/sda1 0 20000 60000 linear /dev/sdb1 0 註:邏輯裝置從0到磁區取自sda1從0磁區開始取20000磁區,邏輯裝置從20000磁區開始,從0磁區開始取20000磁區,邏輯裝置從20000區sdb1的0區開始取60000個磁區,該邏輯設備80000個磁區。實作指令
#echo “0 20000 linear /dev/sda1 0\n20000 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 mydevice7.error: 透過合成邏輯裝置去除錯誤磁區0 80 linear /dev/sda1 0 80 100 error 181 200 linear /dev/sdb1 0 指令實作
#echo “0 80 linear /dev/sda1 0\n80 100 error\n181 200 linear /dev/sdb1 0” | dmsetup create mydevice8.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视频教程》
以上是linux中的mapper是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!