В данной статье рассматриваются основные операции с программными 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.