Гид по технологиям

Настройка программного RAID1 на работающей системе (Fedora 8)

7 min read Системное администрирование Обновлено 29 Oct 2025
Настройка программного RAID1 на Fedora 8
Настройка программного RAID1 на Fedora 8

Краткие определения

  • RAID1 — зеркалирование: все данные пишутся одновременно на оба диска; при выходе одного диска система остаётся работоспособной. Одношаговое описание: дублирование с повышенной отказоустойчивостью.
  • mdadm — утилита управления программными RAID (Linux software RAID).
  • GRUB — загрузчик; для отказоустойчивости его обычно устанавливают на оба диска.

Предупреждение

Эти инструкции изменяют таблицы разделов, создают RAID и перезаписывают загрузчики. Всегда делайте резервную копию важных данных перед началом. Я не даю гарантий, что процедура сработает на вашей конфигурации — используйте её осознанно.

1 Введение и цель

В примере используется Fedora 8 с двумя жёсткими дисками: /dev/sda (в работе) и пустым /dev/sdb одинакового размера. Текущая разметка на /dev/sda:

  • /dev/sda1: /boot, ext3
  • /dev/sda2: swap
  • /dev/sda3: / (root), ext3

Конечная цель:

  • /dev/md0 = /dev/sda1 + /dev/sdb1 → /boot (ext3)
  • /dev/md1 = /dev/sda2 + /dev/sdb2 → swap
  • /dev/md2 = /dev/sda3 + /dev/sdb3 → / (ext3)

Ниже приводится расширённая, адаптированная версия последовательных шагов.

2 Предварительные проверки

  • Убедитесь, что диски одинакового или совместимого размера.
  • Получите текущую разметку:
fdisk -l

(В оригинале вывод df -h и fdisk -l показан для примера.)

Важно: не перепутайте /dev/sda и /dev/sdb — ошибочный dd или запись таблицы разделов приведёт к потере данных.

3 Установка инструментов и загрузка модулей

Установите mdadm и mkinitrd, если они ещё не установлены:

yum install mkinitrd mdadm

Чтобы не перезагружать систему, загрузите модули ядра, которые понадобятся для работы с md:

modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Проверьте состояние md-ядра:

cat /proc/mdstat

Ожидаемый пример вывода показан в исходном руководстве; если устройства не перечислены, это нормально — пока массивов нет.

4 Подготовка /dev/sdb: копирование разметки и пометка как RAID

  1. Скопируйте таблицу разделов с /dev/sda на /dev/sdb:
sfdisk -d /dev/sda | sfdisk /dev/sdb

Это создаст на /dev/sdb такие же разделы, как на /dev/sda. После успешного выполнения проверьте результат:

fdisk -l
  1. На /dev/sdb измените тип разделов на “Linux raid autodetect” (hex-код fd) с помощью fdisk:
fdisk /dev/sdb

В интерактивном меню используйте команды t для каждого раздела и введите код fd, затем w для записи. В примере это было выполнено для /dev/sdb1, /dev/sdb2 и /dev/sdb3.

  1. На всякий случай очистите возможные суперблоки старых RAID:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3

Если на диске не было компонентов RAID, mdadm сообщит: “Unrecognised md component device” — это нормальное сообщение.

Important: Не выполняйте шаги ниже, если хотите остановиться — любое некорректное действие с таблицей разделов вредно.

5 Создание деградированных массивов на /dev/sdb и перенос данных

Идея: сначала создаём массивы RAID1, состоящие только из /dev/sdb и состояния “missing” — такие массивы называются деградированными. На них копируем данные с текущего /dev/sda, затем добавляем /dev/sda в массив как второй участник, и запустим восстановление (resync).

  1. Создайте раздел /boot как RAID1 (деградированный):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
  1. Форматируйте /dev/md0 и смонтируйте его временно:
mkfs.ext3 /dev/md0
mkdir -p /mnt/mdboot
mount /dev/md0 /mnt/mdboot
  1. Скопируйте содержимое /boot на новое зеркало:
cp -a /boot/* /mnt/mdboot/
sync

(Альтернатива: rsync -aHAX /boot/ /mnt/mdboot/ для более точного копирования атрибутов.)

  1. Для swap создайте RAID-массив и включите swap на md:
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb2 missing
mkswap /dev/md1
swapon /dev/md1
  1. Для корневого раздела (root) создайте массив, смонтируйте его и скопируйте файловую систему:
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdb3 missing
mkfs.ext3 /dev/md2
mkdir -p /mnt/mdroot
mount /dev/md2 /mnt/mdroot

Для копирования корня используйте один из следующих вариантов:

Вариант A (рекомендуется): rsync — сохраняет права, ссылки, спец-файлы:

rsync -aHAX --exclude='/proc/*' --exclude='/sys/*' --exclude='/dev/*' --exclude='/mnt/*' / /mnt/mdroot/

Вариант B: tar — надёжный перенос

cd /
( tar cpf - . --one-file-system --exclude=./proc --exclude=./sys --exclude=./dev --exclude=./mnt ) | (cd /mnt/mdroot && tar xpf - )

После копирования проверьте, что /mnt/mdroot содержит те же каталоги, что и /.

  1. Обновите /mnt/mdroot/etc/fstab: замените старые устройства (/dev/sda1, /dev/sda2, /dev/sda3) на /dev/md0, /dev/md1, /dev/md2 соответственно или — лучше — используйте UUID/имена устройств по /dev/mdX. Пример строк для /etc/fstab:
/dev/md2  /      ext3  defaults  1 1
/dev/md0  /boot  ext3  defaults  1 2
/dev/md1  swap   swap  defaults  0 0

Важно: правьте файл внутри /mnt/mdroot.

  1. Обновите /mnt/mdroot/etc/mdadm.conf: добавьте определения массивов, чтобы при загрузке initramfs мог собрать массивы. Сгенерируйте текущую конфигурацию и добавьте в файл:
mdadm --detail --scan >> /mnt/mdroot/etc/mdadm.conf

(Проверьте содержимое файла и при необходимости отредактируйте.)

6 Пересборка initramfs (initrd)

Чтобы загружать корень с md-устройств, нужно, чтобы initramfs содержал поддержку md. В Fedora 8 используйте mkinitrd, выполняя эту команду на работающей системе (или в chroot):

mkinitrd --with=raid1 /boot/initrd-$(uname -r)-md.img $(uname -r)

Примечание: синтаксис mkinitrd может различаться; если ваш mkinitrd не поддерживает ключ –with, используйте варианты вашей системы или создайте initrd через dracut (если доступно).

После создания нового initrd проверьте, что в /boot присутствуют нужные файлы, и что /mnt/mdboot (ваш /boot) содержит конфигурацию GRUB и kernel + initrd файлы.

7 Установка GRUB на оба диска и обновление загрузчика

Для отказоустойчивости нужно установить загрузчик GRUB в MBR обоих дисков — на /dev/sda и /dev/sdb.

  1. Установите GRUB на /dev/sdb (и на /dev/sda, если ещё не установлен на обоих):
# Пример запуска grub в интерактивном режиме
grub

# внутри grub>
root (hd0,0)
setup (hd0)
setup (hd1)
quit

Или используйте grub-install (если доступно):

grub-install /dev/sda
grub-install /dev/sdb
  1. Убедитесь, что /boot/grub/grub.conf (или /boot/grub/menu.lst) присутствует и указывает на правильные устройства (обычно root=/dev/md2). Пример строки ядра:
kernel /vmlinuz-<версия> root=/dev/md2 ro rhgb quiet
initrd /initrd-<версия>.img

Если вы использовали UUID или LABEL, обновите командную строку ядра соответствующим образом.

Important: Проверьте, что файл grub.conf, размещённый в /dev/md0 (смонтирован в /mnt/mdboot), содержит необходимые записи.

8 Добавление исходного диска /dev/sda в массивы и синхронизация

Когда данные успешно скопированы на md-устройства, можно добавить /dev/sdaN в массивы и запустить реконструкцию:

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3

Проверьте прогресс синхронизации:

watch -n 1 cat /proc/mdstat

Синхронизация может занять продолжительное время — зависит от объёма данных и скорости дисков.

9 Проверка загрузки с резервного диска (тест отказа)

  1. Чтобы проверить, что система загрузится при выходе одного из дисков, можно эмулировать отказ: отключите физически диск (или отключите его в BIOS/виртуальной машине) и попробуйте перезагрузиться.
  2. Если система загружается нормально, значит GRUB на оставшемся диске корректно настроен и массив собирается.
  3. После восстановления диска добавьте его обратно и дождитесь resync.

Notes: Тестирование следует проводить в безопасной среде — заранее подготовьте план отката.

10 Что делать при проблемах с загрузкой

  • Загрузитесь с LiveCD/Rescue и соберите массивы вручную:
mdadm --assemble --scan
mount /dev/md2 /mnt/sysroot
mount /dev/md0 /mnt/sysroot/boot
chroot /mnt/sysroot /bin/bash
  • В chroot пересоздайте initrd и переустановите GRUB на оба диска, как описано выше.

11 Когда этот подход не подходит (контрпримеры)

  • Несовместимость по размеру дисков: если второй диск существенно меньше — разметка не скопируется.
  • Специальные файловые системы или LVM: если корень использует LVM или шифрование, требуется отдельная адаптация (надо зеркалить PV/создать LVM на md или использовать LVM-RAID).
  • Сложные конфигурации загрузчика (EFI/GPT): Fedora 8 использует BIOS/GRUB legacy; для современных EFI-систем процедура другая.

12 Альтернативные подходы

  • Использовать LVM с зеркалированием (lvconvert –type raid1) на более новых дистрибутивах.
  • Аппаратный RAID контроллер — если доступен и требуется прозрачная зеркальность без участия ОС.
  • Создать новое зеркало на новой системе и переключиться на него полностью (миграция с помощью rsync и перенастройки).

13 Быстрый чеклист для администратора

  • Сделана полная резервная копия важных данных
  • Тестовая машина / окно обслуживания
  • Установлены mdadm и mkinitrd
  • Таблица разделов скопирована на /dev/sdb
  • Типы разделов на /dev/sdb установлены как fd
  • Созданы деградированные md-устройства на /dev/sdb
  • Скопирован /boot и корневые данные на md
  • Обновлён /etc/fstab и /etc/mdadm.conf (в новом корне)
  • Пересобран initrd с поддержкой md
  • GRUB установлен в MBR обоих дисков
  • /dev/sda добавлен в массивы, выполнен resync
  • Проведён тест отказа и восстановление

14 Критерии приёмки

  • Система успешно загружается с любого из дисков при отключении другого.
  • md-устройства в состоянии clean и синхронизованы (cat /proc/mdstat показывает [UU] для RAID1).
  • /etc/fstab и /etc/mdadm.conf корректно настроены и сохранены.
  • Initramfs содержит поддержку md и собирает массивы на ранней стадии загрузки.

15 Шпаргалка команд

  • Просмотр состояния: cat /proc/mdstat
  • Создать массив: mdadm –create /dev/mdX –level=1 –raid-devices=2 /dev/sdbN missing
  • Добавить диск: mdadm –add /dev/mdX /dev/sdaN
  • Очистить суперблок: mdadm –zero-superblock /dev/sdXN
  • Сохранить конфигурацию: mdadm –detail –scan >> /etc/mdadm.conf
  • Пересоздать initrd: mkinitrd [варианты]
  • Установить GRUB: grub-install /dev/sdX или через интерактивный grub

16 Короткая методология (5 шагов)

  1. Подготовить второй диск: скопировать таблицу и пометить разделы как RAID.
  2. Создать деградированные md-устройства на втором диске.
  3. Скопировать /boot и / на md-устройства.
  4. Пересобрать initrd и установить GRUB на оба диска.
  5. Добавить исходный диск в массивы и дождаться resync; протестировать отказ.

17 Рекомендации по безопасности и приватности

Содержимое /boot и корня остаётся доступно локально; при копировании не пересылайте данные на непроверенные внешние носители. Для зашифрованного root нужно адаптировать процедуру (зеркалирование LUKS/ключей требует осторожности).

18 Заключение

Переход существующей установки на программный RAID1 возможен без простоя, если аккуратно выполнить копирование таблицы разделов, создать деградированные md-массивы, перенести данные, пересобрать initramfs и установить GRUB на оба диска. Обязательно проведите тест отказа и убедитесь, что все конфиги сохранены.

Краткое руководство в 3 шага: подготовка диска → создание деградированных массивов и копирование → установка GRUB и добавление второго участника.

[root@server1 ~]# mdadm --zero-superblock /dev/sdb1
mdadm: Unrecognised md component device - /dev/sdb1
[root@server1 ~]#

(Пример вывода, иллюстрирующий, что отсутствие суперблока — нормально.)

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus: механизм и защита Android‑трояна
Кибербезопасность

Herodotus: механизм и защита Android‑трояна

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти