Linux에서 매퍼의 전체 이름은 "장치 매퍼"입니다. 이는 이 메커니즘에 따라 논리적 장치에서 물리적 장치로의 매핑 메커니즘입니다. 여기에는 세 가지 중요한 개념이 포함되어 있습니다. 매핑된 장치, 대상 장치 등
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
1. Linux에서 매퍼란 무엇입니까?
mapper의 전체 이름은 "Device mapper"입니다. 이는 Linux 2.6 커널에서 제공되는 논리적 장치에서 물리적 장치로의 매핑 메커니즘입니다. 필요에 따라 스토리지 리소스를 쉽게 관리할 수 있습니다.
LVM2(Linux Volume Manager 2 버전), EVMS(Enterprise Volume Management System), dmraid(Device Mapper Raid Tool) 등과 같이 현재 Linux에서 널리 사용되는 논리 볼륨 관리자는 모두 이 메커니즘을 기반으로 구현됩니다.
장치 매퍼의 필수 기능은 대상 드라이버가 설명하는 매핑 관계 및 IO 처리 규칙을 기반으로 논리적 장치 매핑된 장치의 IO 요청을 해당 대상 장치로 전달하는 것입니다.
장치 매퍼는 블록 장치 드라이버로 커널에 등록되어 있으며 매핑된 장치, 매핑 테이블 및 대상 장치라는 세 가지 중요한 개체 개념을 포함합니다.
장치 매퍼는 주로 장치 매퍼 라이브러리 및 dmsetup 도구를 포함하여 사용자 공간에서 상대적으로 간단합니다.
장치 매퍼 라이브러리는 ioctl 및 사용자 공간이 장치 매퍼 논리 장치를 생성 및 삭제하는 데 필요한 필수 작업을 캡슐화한 것입니다.
dmsetup은 사용자에게 장치 매퍼 장치를 직접 생성 및 삭제할 수 있는 기능을 제공하는 명령줄 도구입니다.
기능:
여러 물리적 장치를 하나의 논리적 장치로 결합할 수 있으며, 이는 일반 병합 또는 raid0과 같은 스트라이핑에 사용할 수 있습니다. 또한 하드 디스크의 불량 섹터를 보호하는 데에도 사용할 수 있습니다. 데이터베이스를 구축하거나 기능 테스트를 위해 장치 파일이 없는 매우 큰 장치를 시뮬레이션합니다.
장치 매퍼는 lvm 및 다중화의 기본 기술입니다.
2. 설치 패키지:
device-mapper
device-mapper-multipath
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 0\n20000 60000 linear /dev/sdb1 0” | dmsetup create mydevice
6.stripe条带化:
通过chunksize
3. 매핑을 통해. 논리적 장치(물리적 장치와 논리적 장치의 각 섹터 간의 대응)를 생성하기 위한 테이블입니다. 테이블의 내용은 다음과 같습니다. 논리 장치의 시작 섹터: 일반적으로 0 논리 장치의 섹터 번호 유형(선형
선형, 연속 조합; 스트라이핑
스트라이프; < code>error 불량 섹터 보호; snapshot
zero device)
4 디스크 섹터 계산:
1 섹터 = 512바이트 b 1kb = 1024b 섹터 크기 kb = 섹터 수 512/1024 예를 들어 10G 디스크의 경우 섹터 수는 다음과 같습니다. 10000000kb = 섹터 수 512/1024 = 20000000 섹터
#echo “0 1024 striped 2 256 /dev/sda1 0 /dev/sdb1 0” | dmsetup create mydevice
5를 작성한 후 다시 시작한 후에만 적용됩니다. 선형 유형 장치 기능:
여러 물리적 파티션의 섹터를 논리적 장치로 지속적으로 결합합니다. 0 20000 선형 /dev/sda1 0 20000 60000 선형 /dev/sdb1 0 참고:논리 장치는 0에서 sda1의 섹터, 섹터 0에서 20000 섹터로 가져오고 논리 장치는 섹터 20000에서 시작하고 sdb1에서 시작합니다. 섹터 0, 60,000 섹터가 사용되고 논리 장치에는 80,000 섹터가 있습니다.
#echo “0 80 linear /dev/sda1 0\n80 100 error\n181 200 linear /dev/sdb1 0” | dmsetup create mydevice
6.스트라이프 스트라이핑 명령 구현:
🎜chunksize
를 통해 차례로 디스크에 쓰기 0 1024 스트라이프 2 256 /dev/sda1 0 /dev/sdb1 0 참고: 🎜Logic The 장치는 섹터 0부터 섹터 1024까지 시작하고 유형은 스트라이프이며 장치 2개, 청크 크기는 256kb입니다. /dev/sda1 및 /dev/sdb1의 섹터 0에서 시작하여 각각 512개의 섹터를 사용합니다(섹터 수는 청크 크기여야 합니다). ) 명령 구현🎜#echo ―0 1000 snapshot /dev/sda1 /dev/vg0/realdev P 16 ‖ | dmsetup create mydevice从0扇区到1000扇区为/dev/sda1创建快照,名字为realdev,P表示下次启动仍然生效,16为chunksize
#export HUGESIZE=$[100 * (2**40)/512] 100T的扇区数量 2**40为2的40次方 #echo "0 $HUGESIZE zero" | dmsetup create zerodev 生成的文件在/dev/mapper/zerodev ext3每个分区最大支持2TB
#vi /etc/multipath.conf 注释掉 blacklist { devnode "*" 不同厂商的配置是不一样的 } 取消注释 default{ udev_dir .. .. path_grouping_policy failover(根据失效域来判断执行策略) } #systemctl enable multipathd #systemctl restart multipathd 之后生成的设备位置在/dev/mpath/下,可制作文件系统,挂载 #multipath –ll 查询设备状态
多路径功能,用来提供线路冗余,监控每条链路,当链路失败时自动切换链路,而且自动恢复运行,防止单点故障。生成的设备名 /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视频教程》
위 내용은 리눅스에서 매퍼란 무엇인가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!