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

Настройка программного RAID1 на работающей системе LVM (включая конфигурацию GRUB) (Debian Etch)

• 11 min read • DevOps • Обновлено 23 Nov 2025
Программный RAID1 на LVM: руководство для Debian
Программный RAID1 на LVM: руководство для Debian

Кратко: пошагово создаём зеркальные RAID1-разделы на втором жёстком диске, копируем на них данные с текущих разделов, собираем md-устройства и устанавливаем загрузчик GRUB на оба диска, чтобы система загружалась при отказе любого диска. Важно сделать полную резервную копию перед началом и тестировать процесс на ненужной машине, если возможно.

Введение

Эта инструкция объясняет, как настроить программный RAID1 на уже работающей системе с LVM (на примере Debian Etch). Цель — получить зеркальные /boot и LVM-разделы, а также настроить GRUB так, чтобы сервер загружался, если один из дисков выйдет из строя. Команды и подходы применимы и к более новым версиям Debian с незначительными изменениями.

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

  • RAID1: зеркалирование — одинаковые данные на двух или более дисках.
  • LVM: менеджер логических томов — абстрагирует физические диски в логические тома.
  • mdadm: утилита управления программными RAID (md — multiple devices).
  • GRUB: загрузчик, необходимый для старта ОС.

Важное: перед любыми операциями выполните полноценную резервную копию всех важных данных. Ошибка при работе с разделами, LVM или RAID может привести к потере данных.

Основная идея и последовательность действий

  1. Установить mdadm и необходимые инструменты initramfs.
  2. Подготовить второй диск (/dev/sdb): скопировать таблицу разделов, изменить тип разделов на raid autodetect, очистить возможные подписи RAID.
  3. Создать RAID-устройства (md) в режиме degraded или только на втором диске, скопировать содержимое с /dev/sda на /dev/sdb (для /boot — rsync/ dd /cpio; для LVM — pvcreate/ pvmove/ dd в зависимости от ситуации).
  4. Добавить /dev/sda в RAID-массивы и дождаться синхронизации.
  5. Обновить initramfs и установить GRUB на оба диска.
  6. Протестировать загрузку, отключая диски по очереди.

Примечание о разных подходах

  • Подход «создать массив и затем скопировать данные» подходит для /boot. Для LVM можно использовать pvmove, если есть свободное место, или добавлять физические тома в volume group и мигрировать данные, затем уменьшить и создать RAID на физических разделах.
  • В этой инструкции описан подход, при котором второй диск подготавливается, на нём создаются RAID-партиции, данные туда копируются, после чего создаётся полноценный RAID1.

Important: если вы не уверены в каждом шаге, остановитесь и спросите эксперта.

1 Предварительное примечание и исходное состояние

В примере используется Debian Etch и два одинаковых по размеру диска: /dev/sda (рабочий) и /dev/sdb (пустой).

Исходная разметка /dev/sda:

  • /dev/sda1: /boot, ext3
  • /dev/sda2: extended
  • /dev/sda5: LVM (VG debian) — содержит root (/) и swap_1

Желаемый результат:

  • /dev/md0 (из /dev/sda1 и /dev/sdb1): /boot, ext3
  • /dev/md1 (из /dev/sda5 и /dev/sdb5): LVM (VG debian) — содержит / и swap_1

Приведённые далее выводы команд описывают исходное состояние системы (df -h, fdisk -l, pvdisplay, vgdisplay, lvdisplay). Эти данные используются как пример и не обязаны совпадать с вашей системой.

Выводы команд из примера оставлены без изменений и должны рассматриваться как образец.

2 Установка mdadm и загрузочных инструментов

Установите mdadm и initramfs-tools (пакет может называться initramfs-tools или initramfs-tools-bin в более новых дистрибутивах):

apt-get install initramfs-tools mdadm

Во время установки вас спросят:

MD arrays needed for the root filesystem: <– all

Это указывает initramfs генерировать поддержку md-устройств для корневой файловой системы.

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

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

Проверьте доступные личности md:

cat /proc/mdstat

Ожидаемый вывод примерно такой:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: 

Если какие-то модули отсутствуют, убедитесь, что установлен пакет mdadm и что ядро поддерживает программные RAID.

3 Подготовка /dev/sdb (копирование таблицы разделов и настройка типов)

Цель: чтобы оба диска имели одинаковую разметку. Для этого можно клонировать таблицу разделов с /dev/sda на /dev/sdb:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Примечание: если sdb ранее не содержал таблицы или имел GPT, sfdisk может предупредить. Убедитесь, что вы клонируете именно правильный источник (/dev/sda). Также можно применять dd для копирования первой области, но sfdisk более безопасен для таблицы разделов MBR.

После клонирования проверьте разметку:

fdisk -l

Далее измените тип нужных разделов на “Linux raid autodetect” (код fd). Для этого используйте fdisk:

fdisk /dev/sdb

Далее: команда t → номер раздела (например, 1) → код fd → повторить для 5 → w (записать и выйти).

Проверьте снова:

fdisk -l

Ожидается, что /dev/sdb1 и /dev/sdb5 будут иметь тип fd (Linux raid autodetect).

Чтобы убрать возможные старые подписи RAID на разделах /dev/sdb:

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5

Если разделы не были частью массива, mdadm сообщит об этом, и это безопасно.

Important: не выполняйте операции записи на разделы, содержащие данные, если вы не уверены в их назначении.

4 Создание RAID для /boot и синхронизация /boot

Подход 1: создать массив degraded (с отсутствующим устройством) и скопировать содержимое с работающего раздела на второй член массива, затем добавить первый диск.

Создаём массив для /boot в режиме degraded (содержащий только /dev/sdb1, второй член будет добавлен позже):

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing

Параметр missing говорит mdadm, что второй диск будет добавлен позднее. Опция –assume-clean не рекомендуема без полного понимания последствий; её использование могло бы избежать синхронизации, но рискует потерей данных.

Отформатируйте /dev/md0 как ext3 (или используемую вами файловую систему):

mkfs.ext3 /dev/md0

Затем смонтируйте временно массив и скопируйте содержимое /boot в /dev/md0:

mount /dev/md0 /mnt
rsync -aHAX --delete /boot/ /mnt/

rsync сохраняет права, ссылки и метаданные. Важно слеши: /boot/ → /mnt/.

После копирования проверьте, что файлы присутствуют на /mnt.

Далее обновите /etc/fstab: замените строку со старым /dev/sda1 на /dev/md0 (лучше указывать UUID; можно получить через blkid). Пример:

# заменить /dev/sda1 на /dev/md0
/dev/md0    /boot    ext3    defaults    0    2

Смонтируйте /boot из нового массива для проверки:

umount /mnt
mount /boot

Если всё работает и /boot смонтирован с /dev/md0, можно добавить /dev/sda1 в массив и дождаться синхронизации:

mdadm --add /dev/md0 /dev/sda1
watch cat /proc/mdstat

Дождитесь окончания синхронизации (может занять время).

Important: не удаляйте /dev/sda1 и не форматируйте его до завершения синхронизации и проверки работоспособности.

5 Подготовка LVM на RAID (/dev/sda5 → /dev/md1)

Работа с LVM требует осторожности: если VG использует только /dev/sda5 как PV, прямое преобразование в md может приводить к недоступности LVs. Несколько подходов:

A) Лучший, если доступно место: создать новый PV на /dev/sdb5, добавить его в VG и выполнить pvmove для миграции данных, затем удалить старый PV и создать RAID на физических разделах.

B) Если нет возможности pvmove (VG заполнен), можно создать md1 в degraded режиме, скопировать побайтно PV или создать новый PV и восстановить/пересоздать LV, но это рискованно.

В примере ниже используется подход A — добавление /dev/sdb5 как PV и выполнение pvmove.

Создать PV на /dev/sdb5 и добавить в VG:

pvcreate /dev/sdb5
vgextend debian /dev/sdb5

Проверьте свободное место в VG:

vgdisplay debian

Если в VG появилось свободное место, выполните миграцию данных с /dev/sda5 на /dev/sdb5:

pvmove /dev/sda5 /dev/sdb5

После успешного pvmove можно удалить PV /dev/sda5 из VG:

vgreduce debian /dev/sda5
pvremove /dev/sda5

Теперь /dev/sda5 свободен — на нём можно создать RAID-устройство вместе с /dev/sdb5. Если вы полностью переместили данные на /dev/sdb5, вы можете создать массив с двумя членами: сначала создать md1 на /dev/sdb5 в режиме degraded, затем добавить /dev/sda5.

Создаём массив md1 (degraded, потому что /dev/sda5 временно пустой):

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb5 missing

Создаём PV на /dev/md1 и добавляем в VG, затем перемещаем данные с PV на md1 (если ещё не перенесены):

pvcreate /dev/md1
vgextend debian /dev/md1
pvmove /dev/sdb5 /dev/md1   # если необходимо переместить данные

Если данные уже на md1, то можно удалить /dev/sdb5 из VG и добавить /dev/sda5 затем запустить синхронизацию массива.

После того как PV на md1 содержит данные LVM, добавьте /dev/sda5 в массив:

mdadm --add /dev/md1 /dev/sda5
watch cat /proc/mdstat

Дождитесь завершения синхронизации.

Примечание: порядок и команды зависят от вашей конкретной топологии LVM. Если у вас единственный PV в VG, pvmove требует свободного PV для перемещения. В некоторых сценариях может потребоваться временный внешний диск для хранения данных на время миграции.

6 Сохранение конфигурации mdadm

После создания массивов зафиксируйте конфигурацию в /etc/mdadm/mdadm.conf (в старых системах — /etc/mdadm.conf) и обновите initramfs:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u

Проверьте файл /etc/mdadm/mdadm.conf и при необходимости отредактируйте уникальные идентификаторы (UUID).

7 Обновление и установка GRUB на оба диска

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

  1. Примонтируйте все необходимые файловые системы (если вы меняли /boot):
mount -o remount,rw /
mount /boot
  1. Обновите /boot/grub/menu.lst или /boot/grub/grub.cfg (в зависимости от версии GRUB) через update-grub или аналог:
update-grub
  1. Установите GRUB на /dev/sda и на /dev/sdb:

Для GRUB (legacy) можно выполнить:

grub-install /dev/sda
grub-install /dev/sdb

Если используете GRUB2:

grub-install --recheck /dev/sda
grub-install --recheck /dev/sdb
  1. После установки перегенерируйте initramfs ещё раз (если необходимо):
update-initramfs -u

Important: на системах с BIOS загрузчик должен быть установлен в MBR каждого диска. На системах с UEFI подход отличается (EFI-разделы + копирование/настройка загрузчика на оба диска). Для UEFI убедитесь, что EFI-разделы дублируются и что bootloader установлен правильно.

8 Тестирование и проверка

  1. Проверьте состояние массивов:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
  1. Проверьте, что /boot и LV — доступны и содержат ожидаемые файлы.

  2. Протестируйте загрузку в контролируемой среде: отключите кабель питания /dev/sda и попробуйте загрузиться. Затем повторите с /dev/sdb.

Если система успешно загружается в обоих случаях, настройка корректна.

9 Тонкости и распространённые проблемы

  • Инициирование массивов без синхронизации (с –assume-clean) может привести к несогласованности данных. Используйте только при полном понимании ситуации.
  • Если используете RAID1 для /boot, рекомендуется метаданные mdadm версии 0.90/1.0 (metadata 0.90) для совместимости с GRUB legacy; mdadm по умолчанию может использовать новую версию метаданных (1.x). На современных системах GRUB2 поддерживает загрузку с mdadm с метаданными 1.0+. Проверьте поддержку вашей версии GRUB.
  • Для систем с GPT и BIOS-boot может потребоваться специальный BIOS boot раздел.
  • На серверах с аппаратным RAID контроллером поведение и команды отличаются: не смешивайте программный mdadm с аппаратными RAID-массивами.

10 Контрпримеры — когда этот метод не подойдёт

  • Если у вас недостаточно свободного места в LVM для pvmove, и нет внешнего диска для временного переноса данных.
  • Если вы используете зашифрованный корень без поддержки множества вариантов в initramfs, потребуется специальная конфигурация initramfs для md и шифрования.
  • Если диски имеют разные размеры и вы рассчитываете на полный зеркальный RAID, размер массива будет ограничен размером меньшего диска.

11 Восстановление и аварийный план (Runbook)

Если что-то пошло не так и система не загружается:

  1. Загрузитесь с liveCD/резервного носителя с поддержкой LVM и mdadm.
  2. Подключите диски в том же порядке и активируйте массивы:
mdadm --assemble --scan
vgscan --mknodes
vgchange -ay
  1. Проверьте LVs и монтируйте корневую FS для диагностики:
mount /dev/debian/root /mnt
mount /dev/md0 /mnt/boot
chroot /mnt /bin/bash
  1. Внутри chroot выполните update-grub и grub-install на необходимые устройства, затем exit и перезагрузка.

Если массив не собирается из-за отсутствия метаданных, воспользуйтесь mdadm –examine для диагностики и mdadm –assemble –force при крайней необходимости, но это рискованно.

12 Набор проверок перед завершением

  • /etc/fstab указывает на /dev/md0 для /boot и правильно заданы UUID.
  • /proc/mdstat показывает clean состояния md устройств.
  • mdadm –detail подтверждает RAID1 с 2 активными устройствами.
  • GRUB установлен на оба диска и конфигурация содержит нужные пункты загрузки.

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

  • Выполните полную резервную копию перед операциями с разделами и LVM.
  • Тестируйте процедуру сначала в тестовой среде.
  • Храните отдельный загрузочный носитель (LiveCD/USB) для восстановления.

14 Чек-лист ролей (администратор / оператор)

Администратор (планирование):

  • Сделал полную резервную копию.
  • Проверил совместимость GRUB и метаданных md.
  • Подготовил временный носитель для восстановления.

Оператор (выполнение):

  • Установил mdadm и модули ядра.
  • Копировал таблицу разделов и изменил типы на fd.
  • Создал md-устройства и скопировал /boot.
  • Выполнил vgextend/pvmove/создание md для LVM.
  • Установил GRUB на оба диска.
  • Провёл тестовые перезагрузки с отключением дисков.

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

  • Система загружается при отключении любого из двух дисков.
  • /boot находится на /dev/md0 и смонтирован.
  • LVM видит тома и все сервисы работают штатно.
  • mdadm конфигурация сохранена в /etc/mdadm/mdadm.conf и initramfs обновлён.

16 Дополнительные советы и лучшие практики

  • Рассмотрите использование UUID в /etc/fstab вместо /dev/md0, чтобы избежать проблемы с порядком устройств.
  • Для серверов в продакшене используйте мониторинг состояния RAID (mdadm –monitor) и уведомления по почте.
  • Документируйте конфигурацию и процедуру восстановления для команды.

17 Частые вопросы и ответы

Q: Нужно ли использовать metadata=1.0 для /boot?
A: На старых системах GRUB legacy лучше работает с metadata 0.90/1.0; на современных системах GRUB2 поддерживает и новые версии метаданных. Проверяйте совместимость вашей версии GRUB.

Q: Можно ли выполнить всё без перезагрузки?
A: Большинство операций можно делать на работающей системе, но финальное тестирование загрузки потребует перезагрузки.

Q: Что делать, если mdadm не распознаёт устройства при старте?
A: Убедитесь, что /etc/mdadm/mdadm.conf содержит правильные строки mdadm –detail –scan и что initramfs обновлён.

18 Риск-матрица (основные риски и смягчение)

  • Риск: потеря данных при ошибочном форматировании.
    Смягчение: полная резервная копия, тестирование на небоевом сервере.

  • Риск: несовместимость GRUB и метаданных.
    Смягчение: проверить версию GRUB, использовать поддерживаемую версию metadata.

  • Риск: отсутствие свободного места для pvmove.
    Смягчение: использовать временный диск или переносить данные по частям.

19 Итог

Настройка программного RAID1 на уже работающей системе с LVM требует аккуратного планирования, резервного копирования и понимания LVM и mdadm. Процесс включает подготовку второго диска, создание md-устройств (в degraded режиме при необходимости), копирование данных, миграцию LVM и установку GRUB на оба диска. Тестирование загрузки после каждой значимой операции — обязательная практика.

Summary

  • Создайте резервную копию.
  • Подготовьте второй диск: скопируйте таблицу разделов и установите тип fd.
  • Создайте md-устройства и синхронизируйте /boot и LVM.
  • Установите GRUB на оба диска и протестируйте загрузку.

Примечание: приведённая инструкция описывает общий рабочий процесс; конкретные команды и параметры могут отличаться в зависимости от версии Debian, GRUB и конфигурации LVM. При сомнениях обратитесь к официальной документации mdadm, LVM и GRUB.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро