RH4365devicemapper和多路径.docx
《RH4365devicemapper和多路径.docx》由会员分享,可在线阅读,更多相关《RH4365devicemapper和多路径.docx(16页珍藏版)》请在冰豆网上搜索。
![RH4365devicemapper和多路径.docx](https://file1.bdocx.com/fileroot1/2023-1/22/65089976-9b0a-42aa-9ca1-30a9bc79bf31/65089976-9b0a-42aa-9ca1-30a9bc79bf311.gif)
RH4365devicemapper和多路径
DeviceMapper
1.用于生成一个逻辑设备到物理设备的映射平台
2.支持将多个存储设备组合成一个虚拟设备
3.使用DeviceMapper的应用程序:
LVM2
Multipathing
4.管理mapper设备:
create,remove
5.利用mappingtables生成设备文件
6.可在线调整
7.通过block设备生成DM设备
8.支持堆积(如:
raid10)
9.DM模块是可动态加载的模块:
(device-mapper.rpm安装包后会自动加载该模块)
DM-multipath的功能:
1.故障的切换和恢复
2.IO流量的负载均衡
3.磁盘的虚拟化
DMTable
1.通过DMtable来生成逻辑设备
2.描述了物理设备到逻辑设备的每一个扇区映射的关系
3.DMTable的行格式
1.逻辑设备的起始扇区
2.逻辑设备的扇区数(size)
3.创建逻辑设备的类型
4.创建逻辑设备的参数
mappingtable实例:
1.01024linear/dev/sda2041024512linear/dev/sdb7661536128linear/dev/sdc0
#将逻辑设备0~1023扇区、1024~1535扇区以及1536~1663三个地址围分别以线形映射的方式映射到/dev/sda设备第204号扇区、/dev/sdb设备第766号扇区和/dev/sdc设备的第0号扇区开始的区域
2.02048striped264/dev/sda1024/dev/sdb0
#将逻辑设备从0号扇区开始的,长度为2048个扇区的段以条带的方式映射的到/dev/sda设备的第1024号扇区以及/dev/sdb设备的第0号扇区开始的区域。
同时告诉核这个条带类型的targetdriver存在2个条带设备与逻辑设备做映射,并且条带的大小是64个扇区,使得驱动可以该值来拆分跨设备的IO请求。
3.04711mirrorcore264nosync2/dev/sda2048/dev/sdb1024
#将逻辑设备从0号扇区开始的,长度为4711个扇区的段以镜像的方式映射到/dev/sda设备的第2048个扇区以及/dev/sdb设备的第1024号扇区开始的区域。
dmsetup
1.dmsetup用于创建、管理、查询DM设备的工具
2.支持stdin获取参数来创建Mappingtable信息#建议利用stdin方式使用dmsetup创建mappingtable信息
e.g.#dmsetupcreatemydevicemap_table
3.实例:
将/dev/sda和/dev/sdb两个设备以线性的方式组成逻辑设备/dev/mapper/combined
[rootnode1~]#vimcreatemapdev.sh
#!
/bin/bash
size1=$(blockdev--getsize$1)
size2=$(blockdev--getsize$2)
echo-e"0$size1linear$10\n$size1$size2linear$20"|dmsetupcreatecombined
[rootnode1~]#./createmapdev.sh/dev/sda/dev/sdb
[rootnode1~]#ls-ls/dev/mapper/combined
0brw-rw----1rootdisk252,210-2811:
36/dev/mapper/combined
#blockdev--getsize/dev/sda计算/dev/sda的所有扇区数
[rootnode1home]#mkfs-text3/dev/mapper/combined
[rootnode1home]#mount/dev/mapper/combined/mnt
[rootnode1home]#df-h/mnt
文件系统 容量 已用可用已用%挂载点
/dev/mapper/combined 19G 173M 18G 1%/mnt
MappingTargets
1.linear:
线性,连续写入
2.striped:
条带化,分段写入,raid0
3.error:
定义“out-of-bounds"屏蔽区域,坏道等
4.snapshot:
-copy-on-writedevice:
COW写实复制设备
5.snapshot-origin-device:
起始卷
6.zero:
零设备,可模拟大容量设备
7.multipath:
多路径,多条路由到设备
MappingTarget-linare
1.dm-linare驱动
2.将多个物理设备组成一个连续的逻辑设备
3.参数:
物理设备路径
offset:
偏移量
4.实例
020000linear/dev/sda0
2000060000linear /dev/sdb0
#将设备/dev/sda从0扇区开始的20000个扇区作为线性逻辑设备的从0开始的20000个扇区
#将设备/dev/sdb从0扇区开始的60000个扇区作为线性逻辑设备的从20000开始的60000个扇区
#线性逻辑设备的总大小为80000个扇区(1扇区=512byte)
[rootnode1~]#echo-e"020000linear/dev/sda0\n2000060000linear/dev/sdb0"|dmsetupcreatecombined
[rootnode1~]#ls/dev/mapper/combined
/dev/mapper/combined
[rootnode1~]#mkfs-text3/dev/mapper/combined
[rootnode1~]#mount/dev/mapper/combined/mnt
[rootnode1~]#df-h/mnt
文件系统 容量 已用可用已用%挂载点
/dev/mapper/combined 38M 4.5M 32M 13%/mnt #combined大小:
80000*512/1024/1024=39M
MappingTarget-striped
1.dm-stripedriver
2.通过多个指定设备轮询分段写入的方式组建逻辑设备
3.参数:
参与条带化的物理设备数量
chunksize
设备路径
offset:
偏移量
4.实例
01024striped2256/dev/sda0/dev/sdb0
#01024:
新建逻辑设备从0扇区开始1024个扇区,扇区数必须是chunksize的倍数。
#striped2:
条带化,设备数量为2
#256:
chunksize
#/dev/sda0/dev/sdb0:
从两物理设备的第0个扇区开始
注:
所有操作必须写入到开启脚本,否则重启失效。
MappingTarget-error
1.I/O设备中出现访问错误,如坏道
2.在逻辑设备中定义该错误部分为error避免访问该部分。
3.实例
0 80linear/dev/sda0
80 100error
200linear/dev/sdb0
#从第80扇区开始100个扇区为error区,该区将不会被访问,其坏道应该在/dev/sda上。
MappingTarget-snapshot-origin
1.dm-snapshotdriver
2.dmmapping源卷
3.所有未改变的数据将直接读取源卷
4.与snapshot连接在一起工作
5.写数据时,修改的源卷数据会保存在snapshot的COW(copyonwrite写实复制)设备上。
6.Example:
0 1000snapshot-origin/dev/sda
#将/dev/sda创建成源卷设备即逻辑卷设备
MappingTarget-snapshot
1.dm-snapshotdriver
2.与snapshot-origin连接在一起工作
3.snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data),并不会有数据的物理拷贝
4.写操作时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里即COW中。
5.读操作时,直接定向到原始卷上
6.创建snapshot时会创建三个设备snap、cow、real
7.Example:
01000snapshot/dev/sda1/dev/vg0/realdevP16
#/devsda1:
源设备
#0 10000:
从0开始1000个扇区
#/dev/vg0/realdev用于做/dev/sda1的快照
#P:
下次启动该设备持续有效,N:
重启无效
LVM2Snapshots
1.LVM2快照时会使用四个DM-Device
-real:
源卷设备,即真实设备
snapshot-origin:
拷贝原始卷里数据的元数据(meta-data)
snapshot:
TheCOWdevice改变的数据
:
包含-real和COW的最终被修改后的设备
2.Example:
[rootnode1lvm]#lvcreate-L512M-nlv00vg01
[rootnode1lvm]#lvcreate-L100M-nlvsnap--snapshot/dev/vg01/lv00
[rootnode1lvm]#ll/dev/mapper/|grepvg01
brw-rw----1rootdisk252, 211-0214:
14vg01-lv00
brw-rw----1rootdisk252, 411-0214:
15vg01-lv00-real
brw-rw----1rootdisk252, 311-0214:
15vg01-lvsnap
brw-rw----1rootdisk252, 511-0214:
15vg01-lvsnap-cow
[rootnode1lvm]#dmsetuptable|grepvg01|sort
vg01-lv00:
01048576snapshot-origin252:
4
vg01-lv00-real:
01048576linear8:
0384
vg01-lvsnap:
01048576snapshot252:
4252:
5P8
vg01-lvsnap-cow:
0106496linear8:
01048960
[rootnode1lvm]#dmsetupls--tree
vg01-lvsnap(252:
3)
├─vg01-lvsnap-cow(252:
5)
│ └─(8:
0)
└─vg01-lv00-real(252:
4)
└─(8:
0)
vg01-lv00(252:
2)
└─vg01-lv00-real(252:
4)
└─(8:
0)
LVM-snapshot实例:
[rootnode1/]#lvcreate-L512M-nlv00vg01
Logicalvolume"lv00"created
[rootnode1/]#mkfs-text3/dev/mapper/vg01-lv00
[rootnode1/]#mount/dev/mapper/vg01-lv00/mnt/lvm
[rootnode1/]#cp-a/etc//mnt/lvm/
[rootnode1lvm]#ddif=/dev/zeroof=testbs=1Mcount=100M
[rootnode1lvm]#lvcreate-L50M-s-nlvsnap/dev/vg01/lv00
Roundingupsizetofullphysicalextent52.00MB
Logicalvolume"lvsnap"created
[rootnode1mnt]#lvdisplay/dev/vg01/lvsnap
---Logicalvolume---
LVName /dev/vg01/lvsnap
VGName vg01
LVUUID 6ZgZDl-tASI-f7pD-m96h-OpUl-ANJe-gotSe0
LVWriteAccess read/write
LVsnapshotstatus activedestinationfor/dev/vg01/lv00
LVStatus available
#open 1
LVSize 512.00MB
CurrentLE 128
COW-tablesize 52.00MB
COW-tableLE 13
Allocatedtosnapshot 0.05%
Snapshotchunksize 4.00KB
Segments 1
Allocation inherit
Readaheadsectors auto
-currentlysetto 256
Blockdevice 252:
3
[rootnode1lvm]#mount/dev/vg01/lvsnap/mnt/snap/
[rootnode1lvm]#ls/dev/mapper/
vg01-lv00 vg01-lv00-real vg01-lvsnap vg01-lvsnap-cow
[rootnode1mnt]#df-h
文件系统 容量 已用可用已用%挂载点
/dev/mapper/VolGroup00-LogVol00
37G 2.7G 33G 8%/
/dev/vda1 99M 15M 79M 16%/boot
tmpfs 252M 0 252M 0%/dev/shm
/dev/mapper/vg01-lv00 496M 195M 276M 42%/mnt/lvm
/dev/mapper/vg01-lvsnap 496M 195M 276M 42%/mnt/snap#显示snap和原数据一样
[rootnode1lvm]#ddif=/dev/zeroof=/mnt/lvm/test1bs=1Mcount=10
[rootnode1mnt]#lvdisplay/dev/vg01/lvsnap
---Logicalvolume---
LVName /dev/vg01/lvsnap
VGName vg01
LVUUID 6ZgZDl-tASI-f7pD-m96h-OpUl-ANJe-gotSe0
LVWriteAccess read/write
LVsnapshotstatus activedestinationfor/dev/vg01/lv00
LVStatus available
#open 1
LVSize 512.00MB
CurrentLE 128
COW-tablesize 52.00MB
COW-tableLE 13
Allocatedtosnapshot 19.69% #使用率增加了
Snapshotchunksize 4.00KB
Segments 1
Allocation inherit
Readaheadsectors auto
-currentlysetto 256
Blockdevice 252:
3
[rootnode1lvm]#ls/mnt/lvm
etc lost+found test test1
[rootnode1lvm]#ls/mnt/snap/
etc lost+found test
[rootnode1mnt]#df-h
文件系统 容量 已用可用已用%挂载点
/dev/mapper/VolGroup00-LogVol00
37G 2.7G 33G 8%/
/dev/vda1 99M 15M 79M 16%/boot
tmpfs 252M 0 252M 0%/dev/shm
/dev/mapper/vg01-lv00 496M 205M 266M 44%/mnt/lvm
/dev/mapper/vg01-lvsnap496M 195M 276M 42%/mnt/snap #快照未改变,改变的数据到cow中了,即创建snapshot时创建的50M空间里
#snapshot的大小并不需要和原始卷一样大,其大小仅仅只需要考虑两个方面:
从shapshot创建到释放这段时间,估计块的改变量有多大;数据更新的频率。
一旦snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot立刻被释放,从而无法使用,从而导致这个snapshot无效。
所以,非常重要的一点,一定要在snapshot的生命周期里,做完你需要做得事情。
当然,如果你的snapshot大小和原始卷一样大,甚至还要大,那它的寿命就是“与天齐寿”了
MappingTaget-zero
1.dm-zerodriver
2.同/dev/zero一样,但是一个block设备
3.用于创建虚拟大容量设备,多用于测试。
4.无法往其写入数据,其中无真实数据,读时返还zero数据。
5.Example:
[rootnode1lvm]#exportHugsize=$[100*(2**40)/512]
[rootnode1lvm]#echo$Hugsize
214748364800
[rootnode1lvm]#echo"0$Hugsizezero"|dmsetupcreatezerodev
[rootnode1lvm]#fdisk-l/dev/mapper/zerodev
Disk/dev/mapper/zerodev:
109951.1GB,109951162777600bytes
255heads,63sectors/track,13367467cylinders
Units=cylindersof16065*512=8225280bytes
DeviceMapperMultipath
1.提供冗余:
一条或多条路径连接到相同物理存储设备
2.监控每条路径并自动切换故障路径
3.自动恢复并传递应用程序
4.dm-multipath创建的设备名(e.g.:
/dev/dm-2)
5.dm-multipath支持GFS文件系统
6.dm-multipath是线路冗余,不是磁盘冗余
dmmultipathcomponents
1.Multipathprioritygroups多路径优先级:
优先级不一样则冗余优,先级高的工作,低的备份
优先级一样则提供负载均衡,同时工作
2.dm-multipathkernelmodule核模块
3.multipath命令:
查询和配置多路径设备
4.multipathddaemon:
监控多路径进程或附件
5.kpartx:
创建dm设备
MultipathPriorityGroups
1.到存储设备的路径可以定义优先级组
2.优先级组围:
0-1024
3.默认只有一个优先级组在工作
4.active/active路径属于相同的优先级组,负载均衡模式(默认状态)
5.active/passive路径属于不同的优先级组,优先级组高的工作,优先级组低备份
MappingTarget-multipath
1.dm-multipathdriver
2.参数:
优先级组的分段
3.第一个优先级组的参数
3.1.优先级组对应的I/O
3.2.优先级组对应的路径数量
3.3.列出路径的优先级
SetupMultipathingFcStorage
1.安装device-mapper-multipathRPM包
2.配置/etc/multipath.conf
3.modprobedm_multipath
4.modprobedm-round-robin
5.chkconfigmultipathdon
6.multipathdstart
7.multipath-l
MultipathConfiguration
/etc/multipath.confSections:
1.defaults-multipathtoolsd