사용자 공간 부분
기기 매퍼는 주로 기기 매퍼 라이브러리와 dmsetup 도구를 포함하여 사용자 공간에서 비교적 간단합니다. 장치 매퍼 라이브러리는 ioctl 및 사용자 공간이 장치 매퍼 논리 장치를 생성 및 삭제하는 데 필요한 필수 작업을 캡슐화한 것입니다. dmsetup은 사용자에게 장치 매퍼 장치를 생성 및 삭제하기 위해 직접 사용할 수 있는 명령줄 도구를 제공하는 명령줄 도구입니다. 기능과 프로세스가 비교적 간단하기 때문에 이 기사에서는 자세한 내용을 소개하지 않습니다.
1. 매핑된 각 장치와 관련된 대상 장치를 검색합니다. >
2. 구성 정보를 기반으로 매핑 테이블을 생성합니다. 3. 사용자 공간에서 생성된 매핑 테이블을 커널에 전달하고, 매핑된 장치에 해당하는 dm_table 구조를 커널에서 빌드하도록 합니다. ; 4. 향후 재구성을 위해 현재 매핑 정보를 저장합니다. 아래에서는 주로 예제를 통해 dmsetup의 사용을 설명하고 장치 매퍼의 매핑 메커니즘에 대해 자세히 설명합니다. 사용자 공간에서 가장 중요한 작업은 매핑 테이블을 구축하고 저장하는 것입니다. 다음은 매핑 테이블의 몇 가지 예입니다.1) 0 1024 linear /dev/sda 204 1024 512 linear /dev/sdb 766 1536 128 linear /dev/sdc 0 2) 0 2048 striped 2 64 /dev/sda 1024 /dev/sdb 0 3) 0 4711 mirror core 2 64 nosync 2 /dev/sda 2048 /dev/sdb 1024예제 1에서는 논리 장치 섹터 0~1023, 1024~1535 및 3개입니다. 주소 범위 1536~1663은 /dev/sda 장치의 섹터 번호 204, /dev/sdb 장치의 섹터 번호 766 및 /dev/sdc 장치의 섹터 번호 0에 각각 선형 매핑 방식으로 매핑됩니다. . 영역. 예 2에서는 섹터 0에서 시작하고 길이가 2048 섹터인 논리 장치의 세그먼트가 스트라이프 방식으로 /dev/sda 장치의 섹터 1024 및 /dev에 매핑됩니다. sdb 장치의 섹터 0부터 시작합니다. 동시에 이 스트라이프 유형의 대상 드라이버에는 논리 장치에 매핑된 두 개의 스트라이프 장치가 있고 스트라이프 크기는 64 섹터임을 커널에 알려 드라이버가 이 값을 사용하여 장치 간에 IO 요청을 분할할 수 있도록 합니다. . 예제 3에서는 섹터 0부터 시작하는 논리 장치의 4711 섹터 세그먼트가 미러링 방식으로 /dev/sda 장치의 2048번째 섹터와 /dev/sdb에 매핑됩니다. 장치의 섹터 1024. 매핑 테이블이 결정된 후 논리 장치 생성 및 삭제 작업은 비교적 간단하며 다음 dmsetup 명령을 통해 완료할 수 있습니다.
dmsetup create 设备名 映射表文件 /* 根据指定的映射表创建一个逻辑设备 */ dmsetup reload 设备名 映射表文件 /* 为指定设备从磁盘中读取映射文件,重新构建映射关系 */ dmsetup remove 设备名 /* 删除指定的逻辑设备 */