Устройство сопоставления устройств — это платформа , предоставляемая ядром Linux для сопоставления физических блочных устройств с виртуальными блочными устройствами более высокого уровня . Он составляет основу диспетчера логических томов (LVM), программных RAID и шифрования дисков dm-crypt , а также предлагает дополнительные функции, такие как снимки файловой системы . [1]
Сопоставитель устройств работает путем передачи данных из виртуального блочного устройства, которое предоставляется самим сопоставителем устройств, в другое блочное устройство. Данные также могут быть изменены при переходе, что выполняется, например, в случае сопоставителя устройств, обеспечивающего шифрование диска или моделирование ненадежного поведения оборудования.
В этой статье основное внимание уделяется реализации устройства сопоставления устройств в ядре Linux, но функциональность устройства сопоставления также доступна как в NetBSD , так и в DragonFly BSD . [2] [3]
Применение
Приложения (такие как LVM2 и Enterprise Volume Management System (EVMS)), которым необходимо создавать новые подключенные устройства, взаимодействуют с устройством сопоставления устройств через libdevmapper.soобщую библиотеку , которая, в свою очередь, выдает ioctls узлу /dev/mapper/controlустройства . [4] Конфигурацию устройства сопоставления устройств также можно проверить и настроить в интерактивном режиме —или из сценариев оболочки —с помощью dmsetup(8)утилиты. [5] [6]
Исходный код обоих этих двух компонентов пользовательского пространства поддерживается вместе с исходным кодом LVM2. [7]
Функции
Позиция устройства сопоставления устройств находится на различных уровнях стека хранилища ядра Linux . [8]
Функции, предоставляемые сопоставителем устройств, включают линейные, чередующиеся и ошибочные сопоставления, а также цели шифрования и многопутевого шифрования. Например, два диска можно объединить в один логический том с помощью пары линейных сопоставлений, по одному для каждого диска. Другой пример: crypt target шифрует данные, проходящие через указанное устройство, с помощью Crypto API ядра Linux . [1]
По состоянию на 2014 год [обновлять]доступны следующие цели сопоставления: [1] [5]
snapshot и snapshot-origin – используются для создания снимков LVM как часть базовой схемы копирования при записи.
полосатый — распределяет данные по физическим устройствам, используя количество полос и размер фрагмента чередования в качестве параметров.
тонкий — позволяет создавать устройства большего размера, чем базовое физическое устройство, физическое пространство выделяется только при записи на него.
ноль – эквивалент /dev/zero, все чтения возвращают блоки нулей, а записи отбрасываются
Приложения
Функции ядра Linux и проекты, построенные на основе устройства сопоставления устройств, включают следующее:
cryptsetup — утилита для удобной настройки шифрования диска на основе dm-crypt
dm-crypt / LUKS — цель сопоставления, обеспечивающая шифрование тома.
dm-integrity — цель сопоставления, обеспечивающая целостность данных либо с использованием контрольной суммы, либо с помощью криптографической проверки, [10] [11] также используется с LUKS [12]
dm-log-writes — цель сопоставления, которая использует два устройства, проходит через первое устройство и регистрирует операции записи, выполненные с ней на втором устройстве [13]
dm-verity — проверяет блоки данных, содержащиеся в файловой системе, на соответствие списку криптографических хеш-значений, разработанному в рамках проекта ChromiumOS [14]
dmraid(8) – обеспечивает доступ к «поддельным» конфигурациям RAID через устройство сопоставления устройств.
DM Multipath — обеспечивает аварийное переключение ввода-вывода и балансировку нагрузки блочных устройств в ядре Linux.
Docker — использует устройство сопоставления устройств для создания хранилища копирования при записи для программных контейнеров.
^ abc «Администрирование диспетчера логических томов, Приложение A. Устройство сопоставления устройств». Красная Шапка . Проверено 29 сентября 2013 г.
^ «Руководство по интерфейсам ядра NetBSD: dm (4)» . netbsd.gw.com . 30 августа 2008 г. Архивировано из оригинала 19 июля 2014 г. Проверено 25 января 2015 г.
^ «Страницы онлайн-руководства DragonFly: dm (4)» . www.dragonflybsd.org . 28 июля 2010 г. Проверено 6 июня 2014 г.