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″]