Русская Википедия: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.

Примечания

Шаблон:Примечания

Ссылки