Device mapper (dm) — подсистема (модуль) ядра Linux, позволяющая создавать виртуальные блочные устройства (ВБУ). При обращении к таким устройствам выполняется ряд действий, в число которых обычно входит чтение/запись данных с других блочных устройств (БУ). Подсистема используется для реализации менеджера логических томов LVM, программного RAID, системы шифрования дисков dm-crypt. Одной из возможностей подсистемы является создание снимков файловой системы[1].

Возможности dm также предоставляются одноимённой подсистемой ядра ОС DragonFly BSD[2]. На этой странице описана реализация dm для ядра Linux.

Описание

[править | править код]

Приложения (такие как lvm, EVMS, mdadm), работающие в пространстве пользователя, взаимодействуют с dm с помощью библиотеки libdevmapper.so. Библиотека использует системный вызов ioctl() для обращения к файлу устройства /dev/mapper/control[3]. При обращении к этому устройству ядро вызывает подсистему dm. Подсистема dm работает в пространстве ядра, создаёт, изменяет и удаляет виртуальные блочные устройства (ВБУ) по запросам приложений. Утилита dmsetup позволяет управлять dm вручную из терминала или сценариев shell[4][5]. Библиотека libdevmapper.so и команда dmsetup поддерживаются силами проекта LVM[6].

Клиентские приложения используют системные вызовы read()/write() (через библиотеки или напрямую) для чтения/записи данных с ВБУ. При этом ядро вызывает подсистему dm. Подсистема dm определяет тип ВБУ и выбирает соответствующие действия.

Типы виртуальных блочных устройств[1][4]:

Применения

[править | править код]

Возможности device mapper используются в следующих проектах:

Примечания

[править | править код]
  1. 1 2 Администрирование LVM. Приложение A. Device mapper. Red Hat. Дата обращения: 29 сентября 2013. Архивировано 2 октября 2013 года.
  2. dm(4). DragonFly on-line manual pages. dragonflybsd.org (28 июля 2010). Дата обращения: 6 июня 2014. Архивировано 23 апреля 2015 года.
  3. libdevmapper.h. sourceware.org. Дата обращения: 29 сентября 2013. (недоступная ссылка)
  4. 1 2 dmsetup(8) - Linux man page. man.cx. Дата обращения: 22 октября 2013. Архивировано 4 марта 2016 года.
  5. Администрирование LVM. Приложение A.2. Команда dmsetup. Red Hat. Дата обращения: 29 сентября 2013. Архивировано 2 октября 2013 года.
  6. Device-mapper resource page. sourceware.org. Дата обращения: 29 сентября 2013. Архивировано 7 октября 2013 года.
  7. Petros Koutoupis. Advanced hard drive caching techniques. Журнал «Linux journal» (25 ноября 2013). Дата обращения: 2 декабря 2013. Архивировано 2 декабря 2013 года.
  8. dm-cache: dynamic block-level storage caching. Florida international university. Дата обращения: 24 июля 2014. Архивировано из оригинала 18 июля 2014 года.
  9. Dulcardo Arteaga; Douglas Otstott; Ming Zhao.: Dynamic block-level cache management for cloud computing systems (pdf). Florida international university. Дата обращения: 2 декабря 2013. Архивировано из оригинала 3 декабря 2013 года.
  10. 6. Block layer. Linux kernel 3.15. kernelnewbies.org (8 июня 2014). Дата обращения: 15 июня 2014. Архивировано 11 июня 2018 года.

Ссылки

[править | править код]