Введение
Современные операционные системы, такие как Linux, предлагают широкий спектр инструментов для управления устройствами хранения данных. Один из таких инструментов – утилита dmsetup, предназначенная для управления виртуальными устройствами, создаваемыми через Device Mapper – фреймворком ядра Linux, позволяющим формировать виртуальные блочные устройства на базе существующих. Этот механизм полезен при создании логических томов, RAID-массивов, шифровании данных и решении иных задач.
В данной статье рассматриваются способы применения утилиты dmsetup для управления виртуальными устройствами, а также использование утилиты mdadm для создания и администрирования программных RAID-массивов в среде Linux.
Утилита dmsetup
Основные команды dmsetup
Утилита dmsetup предлагает набор команд для управления виртуальными устройствами. Рассмотрим ключевые из них.
- 
dmsetup ls
 Команда выводит список всех активных виртуальных устройств, созданных с помощью Device Mapper.Пример:$ dmsetup ls vg0-lv_root (253:0) vg0-lv_swap (253:1)Здесь показаны два устройства: vg0-lv_rootиvg0-lv_swap, каждое со своим уникальным идентификатором (253:0и253:1соответственно).
- 
dmsetup info
 Эта команда предоставляет детальную информацию об указанном виртуальном устройстве. Можно задать формат вывода для скриптов с помощью ключа-c.Пример:$ dmsetup info vg0-lv_root Name: vg0-lv_root State: ACTIVE Read Ahead: 256 Tables present: LIVE Open count: 1 Event number: 0 Major, minor: 253, 0 Number of targets: 1 UUID: LVM-4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4eИз вывода видно, что устройство vg0-lv_rootактивно, содержит один целевой сегмент и другие важные параметры.
- 
dmsetup remove
 Данная команда удаляет указанное виртуальное устройство. Полезна, когда устройство больше не нужно или требует изменения конфигурации.Пример:$ dmsetup remove vg0-lv_swapПосле выполнения команды устройство vg0-lv_swapбудет удалено.
Создание виртуальных устройств с помощью dmsetup
Для создания новых виртуальных устройств применяется команда dmsetup create. Она принимает имя устройства и таблицу, определяющую структуру устройства.
Пример создания простого линейного устройства:
$ echo "0 1024 linear /dev/sdb1 0" | dmsetup create my_device
Это создаст устройство my_device, использующее первые 1024 сектора устройства /dev/sdb1.
Управление таблицами устройств
Device Mapper использует таблицы для определения структуры виртуальных устройств. Каждая строка таблицы описывает сегмент устройства, представляющий собой непрерывную область, отображаемую на физические устройства или другие виртуальные ресурсы.
Пример таблицы для линейного устройства:
0 1024 linear /dev/sdb1 0
Эта таблица указывает, что первые 1024 сектора виртуального устройства будут соответствовать первым 1024 секторам физического устройства /dev/sdb1.
Пример создания зашифрованного устройства
Device Mapper поддерживает создание зашифрованных устройств с использованием модуля dm-crypt. Рассмотрим процесс создания такого устройства:
- 
Создайте зашифрованный контейнер на устройстве /dev/sdb1:$ cryptsetup luksFormat /dev/sdb1
- 
Откройте зашифрованный контейнер и создайте виртуальное устройство: $ cryptsetup open /dev/sdb1 my_encrypted_device
- 
Используйте dmsetupдля управления новым устройством:$ dmsetup info my_encrypted_device
- 
По завершении работы закройте устройство: $ cryptsetup close my_encrypted_device
Утилита mdadm для создания и управления RAID-массивами
Введение в RAID
RAID (Redundant Array of Independent Disks) – это технология объединения нескольких физических дисков в единый логический массив для улучшения производительности и/или надежности. В Linux для создания и управления RAID-массивами используется утилита mdadm.
Основные команды mdadm
- 
Создание RAID-массива 
 Для создания RAID-массива используется командаmdadm --create. Например, чтобы создать RAID 1 (зеркалирование) из двух дисков:$ mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1Здесь создается массив /dev/md0уровня 1 с использованием двух устройств:/dev/sdb1и/dev/sdc1.
- 
Просмотр информации о RAID-массиве 
 Чтобы получить подробные сведения о массиве, используется командаmdadm --detail:$ mdadm --detail /dev/md0Эта команда покажет уровень массива, текущее состояние, задействованные устройства и прочую важную информацию. 
- 
Добавление устройства в RAID-массив 
 Если в массиве есть свободные слоты, можно добавить новое устройство командойmdadm --add:$ mdadm /dev/md0 --add /dev/sdd1В данном случае добавляется устройство /dev/sdd1в массив/dev/md0.
- 
Удаление устройства из RAID-массива 
 Для удаления устройства из массива используется командаmdadm --remove:$ mdadm /dev/md0 --remove /dev/sdb1Таким образом, устройство /dev/sdb1исключается из состава массива/dev/md0.
- 
Остановка RAID-массива 
 Когда массив больше не нужен, его можно остановить командойmdadm --stop:$ mdadm --stop /dev/md0Это приведет к освобождению ресурсов, связанных с массивом /dev/md0.
Пример создания RAID 5
Рассмотрим пример создания RAID 5, обеспечивающего повышенную производительность и отказоустойчивость благодаря чередованию блоков данных и хранению контрольной суммы (четности):
- 
Создадим RAID 5 из трёх устройств: $ mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
- 
Проверим статус массива: $ mdadm --detail /dev/md0
- 
Создадим файловую систему на массиве: $ mkfs.ext4 /dev/md0
- 
Смонтируем массив: $ mount /dev/md0 /mnt/raidТеперь RAID-массив доступен для использования. 
Заключение
Утилиты dmsetup и mdadm представляют собой средства для управления виртуальными устройствами и RAID-массивами в Linux. Они позволяют гибко конфигурировать хранение данных, обеспечивая высокую производительность и надежность систем. Рассмотренные примеры помогут вам эффективно применять эти инструменты в своих проектах.
