Введение

Современные операционные системы, такие как Linux, предлагают широкий спектр инструментов для управления устройствами хранения данных. Один из таких инструментов – утилита dmsetup, предназначенная для управления виртуальными устройствами, создаваемыми через Device Mapper – фреймворком ядра Linux, позволяющим формировать виртуальные блочные устройства на базе существующих. Этот механизм полезен при создании логических томов, RAID-массивов, шифровании данных и решении иных задач.

В данной статье рассматриваются способы применения утилиты dmsetup для управления виртуальными устройствами, а также использование утилиты mdadm для создания и администрирования программных RAID-массивов в среде Linux.

Утилита dmsetup

Основные команды dmsetup

Утилита dmsetup предлагает набор команд для управления виртуальными устройствами. Рассмотрим ключевые из них.

  1. 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 соответственно).

  2. 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 активно, содержит один целевой сегмент и другие важные параметры.

  3. 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. Рассмотрим процесс создания такого устройства:

  1. Создайте зашифрованный контейнер на устройстве /dev/sdb1:

    $ cryptsetup luksFormat /dev/sdb1
    
  2. Откройте зашифрованный контейнер и создайте виртуальное устройство:

    $ cryptsetup open /dev/sdb1 my_encrypted_device
    
  3. Используйте dmsetup для управления новым устройством:

    $ dmsetup info my_encrypted_device
    
  4. По завершении работы закройте устройство:

    $ cryptsetup close my_encrypted_device
    

Утилита mdadm для создания и управления RAID-массивами

Введение в RAID

RAID (Redundant Array of Independent Disks) – это технология объединения нескольких физических дисков в единый логический массив для улучшения производительности и/или надежности. В Linux для создания и управления RAID-массивами используется утилита mdadm.

Основные команды mdadm
  1. Создание 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.

  2. Просмотр информации о RAID-массиве
    Чтобы получить подробные сведения о массиве, используется команда mdadm --detail:

    $ mdadm --detail /dev/md0
    

    Эта команда покажет уровень массива, текущее состояние, задействованные устройства и прочую важную информацию.

  3. Добавление устройства в RAID-массив
    Если в массиве есть свободные слоты, можно добавить новое устройство командой mdadm --add:

    $ mdadm /dev/md0 --add /dev/sdd1
    

    В данном случае добавляется устройство /dev/sdd1 в массив /dev/md0.

  4. Удаление устройства из RAID-массива
    Для удаления устройства из массива используется команда mdadm --remove:

    $ mdadm /dev/md0 --remove /dev/sdb1
    

    Таким образом, устройство /dev/sdb1 исключается из состава массива /dev/md0.

  5. Остановка RAID-массива
    Когда массив больше не нужен, его можно остановить командой mdadm --stop:

    $ mdadm --stop /dev/md0
    

    Это приведет к освобождению ресурсов, связанных с массивом /dev/md0.

Пример создания RAID 5

Рассмотрим пример создания RAID 5, обеспечивающего повышенную производительность и отказоустойчивость благодаря чередованию блоков данных и хранению контрольной суммы (четности):

  1. Создадим RAID 5 из трёх устройств:

    $ mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
    
  2. Проверим статус массива:

    $ mdadm --detail /dev/md0
    
  3. Создадим файловую систему на массиве:

    $ mkfs.ext4 /dev/md0
    
  4. Смонтируем массив:

    $ mount /dev/md0 /mnt/raid
    

    Теперь RAID-массив доступен для использования.

Заключение

Утилиты dmsetup и mdadm представляют собой средства для управления виртуальными устройствами и RAID-массивами в Linux. Они позволяют гибко конфигурировать хранение данных, обеспечивая высокую производительность и надежность систем. Рассмотренные примеры помогут вам эффективно применять эти инструменты в своих проектах.

От root

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *