Что такое mdadm и как им пользоваться

mdadm
mdadm — это система работы с программными RAID-массивами. Она используется достаточно широко, и при этом достаточно проста в использовании. Ранее я писал об LVM, и теперь логично будет рассмотреть именно mdadm, как родственную систему управления дисковым пространством.

RAID-массивы. Что это и какие они бывают.

Аббревиатура RAID расшифровывается как Redundant Array of Independent Disks (избыточный массив независимых дисков), однако, когда эта аббревиатура появилась, она означала немного другое: Redundant Array of Inexpensive Disks (избыточный массив недорогих дисков). Недорогие диски обычно менее надежны, как вы понимаете, и поэтому одним из способов увеличить надежность дисковой подсистемы стало объединение нескольких не очень надежных дисков в массивы, что должно было повысить их надежность. Но затем диски стали дешеветь, и первый вариант аббревиатуры превратился во второй, который используется по настоящее время.

Существует несколько спецификаций RAID-массивов:

RAID 0 — Дисковый массив с чередованием. Высокая скорость, но не обеспечивается отказоустойчивость.

RAID 1 — Дисковый массив с зеркалированием. Каждый диск представляет собой полную копию другого.

RAID 2 — Массивы, использующие четность для обеспечения целостности, точно такую же, как и в оперативной памяти типа ECC. Минимальное количество дисков, при котором возможно создание такого типа массива равно 7, при этом чем больше дисков используется в массиве, тем меньше процент дискового пространства, используемого как полезный объем.

RAID 3 — Массив, в котором один из дисков используется для хранения блоков четности, а остальные — для хранения данных. Данные при этом разбиваются на части меньше размера сектора, например, на байты.

RAID 4 — Массив, похожий на RAID 3, но данные при этом разбиваются на блоки, что ускоряет расчет контрольных сумм.

RAID 5 — Массив, в котором блоки данных и контрольные суммы записываются на все диски циклично. Поэтому RAID 5 не требует выделенного диска для хранения информации для восстановления. Минимальное количество дисков при использовании RAID 5 равно всего трем, при этом для хранения информации для восстановления берется объем, равный объему одного диска.

RAID 6 — Массив, аналогичный RAID 5, но при этом для хранения контрольных сумм берется объем двух дисков и контрольные суммы рассчитываются двумя разными способами. Минимум для создания RAID 6 — четыре диска.

RAID 10 — Массив RAID 1, составленный не из одиночных дисков, а из массивов RAID 0.

RAID 50, RAID 60 — аналогично RAID 10, но уже не RAID 1, а RAID 5 или RAID 6 из массивов RAID 0.

Управление программными массивами при помощи mdadm.

У утилиты mdadm есть несколько режимов работы:

—create — Создание нового массива из неиспользуемых устройств
—assemble — Сборка ранее созданного массива
—build — Создание или сборка массива без метаданных
—manage — Изменить существующий архив
—grow — Изменить размер активного массива
—incremental — Добавить устройство в массив или удалить устройство из массива
—monitor — Мониторить один или более массивов на предмет изменений
—misc — Отчет по устройствам или модификация различных устройств, связанных с массивами.
mdadm <устройство> — Короткий вариант для mdadm —manage

Создание массива при помощи mdadm.

Самое первое, что необходимо сделать для начала работы с массивами — создать массив.

mdadm --create /dev/md0 --level=<тип-массива> --raid-devices=<количество-устройств> <список-устройств>

Типы массивов, которые можно использовать: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container. Как вы видите, для одного типа может быть несколько обозначений.

Пример:

# mdadm --create /dev/md0 --level=raid0 --raid-devices=2 /dev/sdb /dev/sdc
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Массив создан, можно с ним работать. Давайте создадим на нем файловую систему, например.

mkfs.ext4 /dev/md0

И смонтируем ее в директорию /data, например.

mkdir /data
mount /dev/md0 /data

Теперь можно посмотреть информацию о файловой системе:

# df -h | grep md0
/dev/md0 16G 172M 15G 2% /data

Получение информации о дисках.

Получить информацию о дисках можно при помощи следующих команд:

# mdadm --examine /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : a362e9ac:b60ac045:ca4cbeb2:a16eb716
           Name : debian:0  (local to host debian)
  Creation Time : Sun Apr 13 08:32:46 2014
     Raid Level : raid0
   Raid Devices : 2

 Avail Dev Size : 16777200 (8.00 GiB 8.59 GB)
    Data Offset : 16 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f93ba93f:ed36b340:a96a17e2:44b69ee3

    Update Time : Sun Apr 13 08:32:46 2014
       Checksum : ec8febc4 - correct
         Events : 0

     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing)

или

# mdadm --query /dev/sdb
/dev/sdb: is not an md array
/dev/sdb: device 0 in 2 device unknown raid0 array.  Use mdadm --examine for more detail.

Изменение массива (добавление дисков).

Во время работы может потребоваться расширение массива и вот как это можно сделать:

# mdadm --grow /dev/md0 --add /dev/sdd -n3
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/sdd
mdadm: Need to backup 3072K of critical section..
mdadm: Cannot start reshape for /dev/md0

Диск добавлен и, как вы видите, уровень массива изменился на RAID 4. Теперь можно посмотреть информацию о диске:

# mdadm --examine /dev/sdd
/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x2
     Array UUID : a362e9ac:b60ac045:ca4cbeb2:a16eb716
           Name : debian:0  (local to host debian)
  Creation Time : Sun Apr 13 08:32:46 2014
     Raid Level : raid4
   Raid Devices : 3

 Avail Dev Size : 16776192 (8.00 GiB 8.59 GB)
     Array Size : 16776192 (16.00 GiB 17.18 GB)
    Data Offset : 1024 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
          State : clean
    Device UUID : 8b73f246:3f2bb1a8:4f913387:678ac7cb

    Update Time : Sun Apr 13 09:26:19 2014
       Checksum : e9e11ad4 - correct
         Events : 7

     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAA ('A' == active, '.' == missing)

Удаление массива

Удалить массив можно так: сначала остановить сам массив, а затем очистить суперблоки на дисках.

Останавливаем массив:

# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

И очищаем суперблоки:

# mdadm --zero-superblock /dev/sd[bc]

Как видите, это, как и многие другие вещи в Linux’е, не так страшно, как может показаться.

[wysija_form id=»2″]