Русская Википедия:Device mapper
Device mapper (Шаблон:Lang-en2) — подсистема (модуль) ядра 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]:
- linear; запросы на чтение и запись к ВБУ перенаправляются к другому БУ; за одним ВБУ может скрываться одно или более БУ;
- striped; при записи данные делятся на фрагменты; каждый фрагмент записывается на отдельное БУ; при чтении фрагменты считываются с нескольких БУ и объединяются;
- mirror; «зеркало» (копия) БУ; при записи данные сохраняются одновременно на два или более БУ; при чтении данные считываются с главного БУ;
- snapshot-origin; первый «снимок» БУ; запросы на чтение и запись обслуживаются также, как для ВБУ типа linear;
- snapshot; второй и последующие «снимки» БУ; при записи данные сохраняются на БУ, созданное специально для хранения изменений; при чтении проверяется наличие изменений; если изменений нет, данные читаются из предыдущего «снимка»; если изменения имеются, данные считываются с БУ, хранящего изменения;
- error; при чтении и записи всегда сообщается о ошибке; ВБУ такого типа используются для тестирования устойчивости ПО к сбоям дисковой подсистемы;
- delay; аналог ВБУ типа linear, но чтение и запись выполняются с задержкой; ВБУ такого типа используются для тестирования;
- flakey; аналог ВБУ типа linear, но операции чтения и записи периодически завершаются с ошибкой; ВБУ такого типа используются для тестирования;
- zero; аналог устройства /dev/zero; при чтении возвращаются нулевые байты; при записи ничего не происходит;
- multipath; при чтении и записи взаимодействие с одним и тем же БУ осуществляется посредством нескольких контроллеров по очереди; при поломке одного из контроллеров, используются оставшиеся контроллеры;
- crypt; шифрование «на лету»; при записи данные шифруются, а при чтении расшифровываются с помощью crypto API ядра Linux;
- cache; временное хранение данных одного БУ на другом (например, SSD может выступать в роли кеша HDD[7]; локальное БУ может хранить данные, полученные с монтированного по сети БУ[8][9]);
- era[10]; аналог ВБУ типа linear, но с отслеживанием блоков, читаемых и записываемых в указанное время;
- raid; запросы к этому ВБУ перенаправляются модулю md ядра Linux, реализующему программный RAID.
Применения
Возможности device mapper используются в следующих проектах:
- LVM — менеджер логических томов;
- en:dm-crypt — компонент ядра Linux для шифрования разделов;
- en:dm-cache — компонент ядра Linux для кеширования данных;
- dm-verity — компонент Chrome OS для проверки целостности файловой системы;
- dmraid — симулятор RAID;
- dm multipath — компонент ядра Linux для обеспечения отказоустойчивости и распределения нагрузки на БУ;
- TrueCrypt (версия для ОС Linux) — система для шифрования разделов;
- DRBD — сетевое блочное устройство;
- kpartx — утилита, вызываемая hotplug, для создания и удаления таблиц разделов БУ;
- EVMS (deprecated);
- en:cryptoloop (deprecated);
- Docker — программа для виртуализации процессов на уровне ОС; dm используется при запуске контейнеров для создания БУ copy-on-write.
Примечания
Ссылки
- Device mapper на сайте Red Hat Шаблон:Ref-en
- Шаблон:Cite web Статья описывает применение разных типов виртуальных блочных устройств Шаблон:Ref-en
- DmRaid — инструмент для симуляции программного RAIDШаблон:Ref-en
- Multipath support in the device mapper, 2005 - Статья LWN о поддержке multipath подсистемой device mapper Шаблон:Ref-en