디바이스 매퍼

Device mapper

디바이스 매퍼는 물리 블록 디바이스를 상위 레벨의 가상 블록 디바이스에 매핑하기 위해 Linux 커널에서 제공하는 프레임워크입니다.논리볼륨매니저(LVM), 소프트웨어 RAIDdm-crypt 디스크 암호화의 기반이 되며 파일 시스템 [1]스냅샷 등의 추가 기능을 제공합니다.

디바이스 매퍼는 디바이스 매퍼 자체에 의해 제공되는 가상 블록 디바이스에서 다른 블록 디바이스로 데이터를 전달함으로써 작동합니다.데이터를 이행 중에 변경할 수도 있습니다.예를 들어 디스크 암호화 또는 신뢰할 수 없는 하드웨어 동작 시뮬레이션을 제공하는 디바이스 매퍼의 경우 데이터를 변경할 수 있습니다.

이 문서에서는 Linux 커널에서의 디바이스 매퍼 구현에 초점을 맞추고 있지만 디바이스 매퍼 기능은 NetBSD와 DragonFly BSD에서도 [2][3]사용할 수 있습니다.

사용.

새로운 매핑 디바이스를 작성해야 하는 애플리케이션(LVM2엔터프라이즈 볼륨 관리 시스템(EVMS) 등)은libdevmapper.so 공유 라이브러리는 ioctls를 발행합니다./dev/mapper/control 디바이스 [4]노드디바이스 매퍼의 설정은 유틸리티를 [5][6]사용하여 대화식으로(또는 셸 스크립트를 사용하여) 확인할 수도 있습니다.

이 두 개의 사용자 공간 구성 요소 모두 LVM2 [7]소스와 함께 소스 코드를 유지합니다.

특징들

Linux 커널 스토리지 [8]스택의 다양한 계층 내에서 디바이스 매퍼 대상의 위치입니다.

디바이스 매퍼에 의해 제공되는 기능에는 리니어, 스트라이프 및 에러 매핑과 암호 및 멀티패스 타깃이 포함됩니다.예를 들어, 두 개의 디스크를 디스크마다 하나씩 한 쌍의 선형 매핑을 사용하여 하나의 논리 볼륨에 연결할 수 있습니다.또 다른 예로, crypt 대상은 Linux 커널의 Crypto [1]API를 사용하여 지정된 장치를 통과하는 데이터를 암호화합니다.

2014년 현재 다음과 같은 매핑 대상을 사용할 [1][5]수 있습니다.

  • 캐시 – 솔리드 스테이트 드라이브(SSD)를 하드 디스크 드라이브(HDD)의 캐시로 사용하여 하이브리드 볼륨을 생성할 수 있습니다.
  • clone: 전송이 완료되기 전에 사용을 허용합니다.
  • crypt – Linux 커널의 Crypto API를 사용하여 데이터 암호화를 제공합니다.
  • 지연 – 다양한 디바이스에 대한 읽기 및/또는 쓰기 지연(테스트에 사용
  • area – 선형 타깃과 유사한 방식으로 동작하며 사용자가 정의한 시간[9] 내에 쓴 블록을 추적합니다.
  • 오류 – 매핑된 모든 블록의 I/O 오류를 시뮬레이션합니다(테스트에 사용).
  • flakey – 정기적으로 신뢰할 수 없는 동작 시뮬레이션(테스트에 사용)
  • 선형 – 연속된 블록 범위를 다른 블록 장치에 매핑합니다.
  • mirror – 미러링된 논리 디바이스를 매핑하면서 데이터의 용장성을 실현합니다.
  • multipath : 경로 그룹을 사용하여 여러 경로 디바이스 매핑을 지원합니다.
  • raid – Linux 커널의 소프트웨어 RAID 드라이버(md)에 대한 인터페이스를 제공합니다.
  • 스냅숏스냅숏 오리진– LVM 스냅숏 작성에 사용됩니다.기존의 카피 온 라이트 방식의 일부입니다.
  • striped – 스트라이프 수와 스트라이핑 청크 크기를 파라미터로 하여 물리 디바이스 간에 데이터를 스트라이핑합니다.
  • Thin – 기반이 되는 물리 디바이스보다 큰 디바이스를 작성할 수 있습니다.물리 공간은 쓰기 시에만 할당됩니다.
  • 제로: 등가/dev/zero, 모든 읽기가 0의 블록을 반환하고 쓰기가 폐기됩니다.

응용 프로그램

디바이스 매퍼 위에 구축된 Linux 커널 기능 및 프로젝트는 다음과 같습니다.

  • cryptsetup – dm-module 기반의 디스크 암호화를 쉽게 셋업하기 위해 사용하는 유틸리티
  • dm-crypt/LUKS – 볼륨 암호화를 제공하는 매핑 타깃
  • dm-cache하이브리드 볼륨을 생성할 수 있는 매핑 타깃
  • dm-integrity – 체크섬 또는 암호화 [10][11]검증을 사용하여 데이터 무결성을 제공하는 매핑 타깃.LUKS에서도[12] 사용됩니다.
  • dm-log-writes: 2개의 디바이스를 사용하는 매핑타깃, 첫 번째 디바이스를 통과하여 두 번째[13] 디바이스에서 실행된 쓰기 조작을 기록합니다.
  • dm-verity – Cromium OS[14] 프로젝트의 일부로 개발된 암호화 해시 값 목록과 비교하여 파일 시스템에 포함된 데이터 블록을 검증합니다.
  • dmraid(8) – 디바이스 매퍼를 통해 "가짜" RAID 구성에 액세스 가능
  • DM 멀티패스– Linux 커널 내 블록 디바이스의 I/O 페일오버 및 로드밸런싱을 제공합니다.
  • 도커 – 디바이스 매퍼를 사용하여 소프트웨어 컨테이너용 Copy-on-Write 스토리지 생성
  • DRBD(분산 리플리케이트 블록 디바이스)
  • EVMS(사용되지 않음)
  • kpartx(8) – 디바이스 맵 작성 및 삭제 시 핫플러그에서 호출되는 유틸리티
  • LVM2Linux 커널용 논리 볼륨 매니저
  • Linux 버전의 TrueCrypt
  • VDO - 가상 데이터 최적화 도구

레퍼런스

  1. ^ a b c "Logical Volume Manager Administration, Appendix A. The Device Mapper". Red Hat. Retrieved 2013-09-29.
  2. ^ "NetBSD Kernel Interfaces Manual: dm(4)". netbsd.gw.com. 2008-08-30. Retrieved 2015-01-25.
  3. ^ "DragonFly On-Line Manual Pages: dm(4)". dragonflybsd.org. 2010-07-28. Retrieved 2014-06-06.
  4. ^ "libdevmapper.h". sourceware.org. Retrieved 2013-09-29.
  5. ^ a b "dmsetup(8) - Linux man page". man.cx. Retrieved 2013-10-22.
  6. ^ "Logical Volume Manager Administration". Appendix A.2. The dmsetup Command. Red Hat. Retrieved 2013-09-29.
  7. ^ "Device-mapper Resource Page". sourceware.org. Retrieved 2013-09-29.
  8. ^ Werner Fischer; Georg Schönberger (2015-06-01). "Linux Storage Stack Diagram". Thomas-Krenn.AG. Retrieved 2015-06-08.
  9. ^ "6. Block layer". Linux kernel 3.15. kernelnewbies.org. 2014-06-08. Retrieved 2014-06-15.
  10. ^ "dm-integrity". cryptosetup project. 2018-04-30. Retrieved 2018-05-08.
  11. ^ "dm-integrity target". kernel.org. 2017-05-13. Retrieved 2018-05-08.
  12. ^ "cryptsetup - manage plain dm-crypt and LUKS encrypted volumes". 2018-01-01. Retrieved 2018-05-08.
  13. ^ "Linux kernel documentation: Documentation/device-mapper/log-writes.txt". kernel.org. 2015-05-29. Retrieved 2015-10-13.
  14. ^ Jonathan Corbet (2011-09-19). "dm-verity". LWN.net. Retrieved 2015-10-13.

외부 링크