Device mapper

The device mapper is a framework provided by the Linux kernel for mapping physical block devices onto higher-level virtual block devices. It forms the foundation of LVM2, software RAIDs and dm-crypt disk encryption, and offers additional features such as file system snapshots.[1]

Device mapper works by passing data from a virtual block device, which is provided by the device mapper itself, to another block device. Data can be also modified in transition, which is performed, for example, in the case of device mapper providing disk encryption or simulation of unreliable hardware behavior.

This article focuses on the device mapper implementation in Linux kernel, but the device mapper functionality is also available in both NetBSD and DragonFly BSD.[2][3]

Usage

Applications (like LVM2 and EVMS) that need to create new mapped devices talk to the device mapper via the libdevmapper.so shared library, which in turn issues ioctls to the /dev/mapper/control device node.[4] Configuration of the device mapper can be also examined and configured interactivelyor from shell scriptsby using the dmsetup(8) utility.[5][6]

Both of these two userspace components have their source code maintained alongside the LVM2 source.[7]

Features

The position of the device mapper targets within various layers of the Linux kernel's storage stack.[8]

Functions provided by the device mapper include linear, striped and error mappings, as well as crypt and multipath targets. For example, two disks may be concatenated into one logical volume with a pair of linear mappings, one for each disk. As another example, crypt target encrypts the data passing through the specified device, by using the Linux kernel's Crypto API.[1]

The following mapping targets are available:[1][5]

Applications

The following Linux kernel features and projects are built on top of the device mapper:

References

  1. 1 2 3 "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. 1 2 "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. "Linux kernel documentation: Documentation/device-mapper/log-writes.txt". kernel.org. 2015-05-29. Retrieved 2015-10-13.
  11. Jonathan Corbet (2011-09-19). "dm-verity". LWN.net. Retrieved 2015-10-13.
This article is issued from Wikipedia - version of the 11/18/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.