Программные RAID-массивы в Linux

В данной статье рассматриваются основные операции с программными RAID-массивами для хранения данных в Линуксе с помощью утилиты mdadm.

Создание и сборка массива

Весь этот процесс состоит из нескольких этапов:

  • делаем разметку двух дисков sdb и sdc одинакового объёма, задаём тип разделов Linux RAID
  • собираем зеркало из разделов
  • форматируем массивы
  • монтируем и проверяем работу
  • подключаем в автозагрузку — прописываем в /etc/fstab

В первую очередь необходимо установить mdadm.

В Gentoo:

# emerge sys-fs/mdadm

В CentOS Stream:

# yum install mdadm

В Debian:

# apt install mdadm

В Ubuntu Server 20.10 уже есть, здесь ничего дополнительно устанавливать не нужно.

Теперь переходим к разметке диска sdb:

# cfdisk /dev/sdb

Зададим таблицу разделов GPT, создаём 2 раздела sdb1 и sdb2 и тип этих разделов Linux RAID

Теперь копируем структуру диска sdb на диск sdc утилитой sfdisk:

# sfdisk -d /dev/sdb | sfdisk /dev/sdc

Проверяем:

# fdisk -l /dev/sdb
# fdisk -l /dev/sdc

Затем создаём массивы md1 и md2 с первым и вторым разделами каждого диска соответственно:

# mdadm --create --verbose /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1
# mdadm --create --verbose /dev/md2 -l 1 -n 2 /dev/sdb2 /dev/sdc2
  • l — уровень RAID (для зеркала нам нужен RAID 1, соответственно наше значение будет 1)
  • n — количество дисков (так как у нас 2 диска, значит наше значение будет 2)

Теперь необходимо подождать, когда закончится синхронизация. Промониторить это можно командой

# cat /proc/mdstat

После окончания синхронизации запишем конфиг массивов.

Для Gentoo и CentOS:

# mdadm --detail --scan > /etc/mdadm.conf

а для Debian и Ubuntu Server:

# mdadm --detail --scan > /etc/mdadm/mdadm.conf

После этого отформатируем созданные массивы в ext4:

# mkfs.ext4 /dev/md1
# mkfs.ext4 /dev/md2

Теперь создадим каталоги /mnt/data, /mnt/data/part1 и /mnt/data/part2

# mkdir /mnt/data /mnt/data/part{1,2}

примонтируем массивы: /dev/md1 — в /mnt/data/part1, а /dev/md2 -в /mnt/data/part2

# mount /dev/md1 /mnt/data/part1
# mount /dev/md2 /mnt/data/part2

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

# mdadm --detail /dev/md1
# mdadm --detail /dev/md2

Размонтировать массивы можно командой:

# umount /mnt/data/part{1,2}

Для того, чтобы массивы автоматически монтировались при загрузке системы, пропишем их в файл /etc/fstab:

# nano /etc/fstab
/dev/md1 /mnt/data/part1 ext4 noatime 1 0
/dev/md2 /mnt/data/part2 ext4 noatime 1 0

Замена диска в массиве

# mdadm /dev/md1 --fail /dev/sdc1
# mdadm /dev/md1 --remove /dev/sdc1
# mdadm /dev/md1 --add /dev/sdd1

Сборка существующих ранее созданных массивов

# mdadm --assemble /dev/md1 /dev/sdb1 /dev/sdc1
# mdadm --assemble /dev/md2 /dev/sdb2 /dev/sdc2

Разбор массива

Внимание! Данные действия могут привести к полной или частичной потере данных, поэтому рекомендуется сначала скопировать их в другое место.

В первую очередь необходимо размонтировать массивы

# umount /mnt/data/part{1,2}

Затем убрать записи с /etc/fstab

/dev/md1 /mnt/data/part1 ext4 noatime 1 0
/dev/md2 /mnt/data/part2 ext4 noatime 1 0

Потом остановить работающие массивы

# mdadm --stop /dev/md1
# mdadm --stop /dev/md2

Чтобы система не смогла автоматически собрать массивы снова, необходимо обнулить суперблоки каждого диска массивов:

# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdc1
# mdadm --zero-superblock /dev/sdb2
# mdadm --zero-superblock /dev/sdc2

а также стереть подписи и метаданные с дисков:

# wipefs --all --force /dev/sdb
# wipefs --all --force /dev/sdc

И ещё нужно убрать или закомментировать ссылки в mdadm.conf.

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

Ваш адрес email не будет опубликован.