Applications (like LVM2 and Enterprise Volume Management System (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 interactively—or from shell scripts—by using the dmsetup(8) utility.56
Both of these two userspace components have their source code maintained alongside the LVM2 source.7
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.8
As of 2014[update], the following mapping targets are available:910
Linux kernel features and projects built on top of the device mapper include the following:
"Logical Volume Manager Administration, Appendix A. The Device Mapper". Red Hat. Retrieved 2013-09-29. https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/device_mapper.html ↩
"NetBSD Kernel Interfaces Manual: dm(4)". netbsd.gw.com. 2008-08-30. Archived from the original on 2014-07-19. Retrieved 2015-01-25. https://web.archive.org/web/20140719152701/http://netbsd.gw.com/cgi-bin/man-cgi?dm+4+NetBSD-current ↩
"DragonFly On-Line Manual Pages: dm(4)". dragonflybsd.org. 2010-07-28. Retrieved 2014-06-06. http://leaf.dragonflybsd.org/cgi/web-man?command=dm§ion=4 ↩
"libdevmapper.h". sourceware.org. Retrieved 2013-09-29.[permanent dead link] http://www.sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/LVM2/libdm/libdevmapper.h?content-type=text/plain&cvsroot=lvm2 ↩
"dmsetup(8) - Linux man page". man.cx. Retrieved 2013-10-22. http://man.cx/?page=dmsetup%288%29 ↩
"Logical Volume Manager Administration". Appendix A.2. The dmsetup Command. Red Hat. Retrieved 2013-09-29. https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/dmsetup.html ↩
"Device-mapper Resource Page". sourceware.org. Retrieved 2013-09-29. http://www.sourceware.org/dm/ ↩
"6. Block layer". Linux kernel 3.15. kernelnewbies.org. 2014-06-08. Retrieved 2014-06-15. http://kernelnewbies.org/Linux_3.15#head-33ab227d4984f4be9fa92f9163e403744e2a8f66 ↩
"dm-integrity". cryptosetup project. 2018-04-30. Retrieved 2018-05-08. https://gitlab.com/cryptsetup/cryptsetup/wikis/DMIntegrity ↩
"dm-integrity target". kernel.org. 2017-05-13. Retrieved 2018-05-08. https://www.kernel.org/doc/Documentation/device-mapper/dm-integrity.txt ↩
"cryptsetup - manage plain dm-crypt and LUKS encrypted volumes". 2018-01-01. Retrieved 2018-05-08. https://man.cx/?page=cryptsetup(8) ↩
"Linux kernel documentation: Documentation/device-mapper/log-writes.txt". kernel.org. 2015-05-29. Retrieved 2015-10-13. https://www.kernel.org/doc/Documentation/device-mapper/log-writes.txt ↩
Jonathan Corbet (2011-09-19). "dm-verity". LWN.net. Retrieved 2015-10-13. https://lwn.net/Articles/459420/ ↩