Введение
Современные операционные системы, такие как 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. Они позволяют гибко конфигурировать хранение данных, обеспечивая высокую производительность и надежность систем. Рассмотренные примеры помогут вам эффективно применять эти инструменты в своих проектах.