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

Как настроить программный RAID1 на работающей системе LVM (Debian Lenny)

8 min read Linux/Storage Обновлено 23 Nov 2025
RAID1 на работающей LVM (Debian Lenny)
RAID1 на работающей LVM (Debian Lenny)

  • Пошагово: установите mdadm, скопируйте таблицу разделов на второй диск, отметьте разделы как RAID, создайте деградированные массивы на новом диске (для /boot — с metadata 0.90), перенесите данные (rsync для /boot, LVM pvmove для томов), добавьте старый диск в массивы, обновите mdadm.conf, initramfs и установите GRUB на оба диска. Эта инструкция даёт проверенную схему минимального простоя.

Important: перед началом сделайте полную резервную копию. Я не даю гарантий, что процедура подойдёт для вашей конфигурации — проверяйте команды и адаптируйте их к вашей системе.

О чём статья

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

Ключевые запросы (варианты намерения): настройка RAID1 LVM, создать mdadm RAID1 на работающей системе, миграция LVM на RAID, GRUB и RAID1, Debian Lenny RAID1.

Быстрый обзор процесса

  1. Установить mdadm и подготовить окружение.
  2. Скопировать таблицу разделов с работающего диска (/dev/sda) на пустой диск (/dev/sdb).
  3. Поставить тип разделов как Linux raid autodetect и обнулить старые суперблоки md.
  4. Создать деградированные массивы на /dev/sdb (md0 — для /boot с metadata 0.90; md1 — для LVM), смонтировать и скопировать /boot.
  5. Создать PV на /dev/md1, добавить в VG и выполнить pvmove, чтобы перенести данные с /dev/sda5 на /dev/md1.
  6. Удалить /dev/sda5 из VG, добавить /dev/sda5 в md1 и дождаться синхронизации; аналогично добавить /dev/sda1 в md0.
  7. Зафиксировать конфигурацию в /etc/mdadm/mdadm.conf (или /etc/mdadm.conf), обновить initramfs и установить GRUB на оба диска.

Ниже — подробные шаги, рекомендации, варианты и контрольный список.

1 Введение и текущая топология (пример)

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

  • /dev/sda1 — /boot (ext3)
  • /dev/sda2 — extended, внутри /dev/sda5 — LVM PV (VG debian), в VG — root и swap.

Желаемая итоговая схема:

  • /dev/md0 (из /dev/sda1 и /dev/sdb1) — /boot (ext3), RAID1
  • /dev/md1 (из /dev/sda5 и /dev/sdb5) — LVM PV (VG debian), RAID1

Пример вывода команд с текущей системы приведён для ориентира (df, fdisk, pvdisplay, vgdisplay, lvdisplay). В реальной системе значения будут другими — сверяйтесь со своими.

2 Установка mdadm и проверка модулей

Установите mdadm и initramfs-tools:

aptitude install initramfs-tools mdadm

Во время установки ответьте на запрос «MD arrays needed for the root file system:» значением «<– all» или эквивалентом (требуется, чтобы initramfs включал информацию о массивах).

Загрузите в память модули ядра, чтобы не перезагружаться сразу:

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

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

cat /proc/mdstat

Ожидаемый вывод будет содержать список Personalities и отсутствие используемых md-устройств.

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

Сначала скопируйте таблицу разделов с /dev/sda на /dev/sdb:

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

Это сделает /dev/sdb точной копией по разметке. После этого проверьте fdisk -l, чтобы убедиться, что расписание разделов одинаково.

Затем измените тип нужных разделов на Linux raid autodetect (hex fd):

fdisk /dev/sdb
# в интерактивном режиме: t -> номер раздела (1,5) -> fd -> w

Обязательно выполните fdisk -l ещё раз — теперь /dev/sdb1 и /dev/sdb5 должны иметь тип fd (Linux raid autodetect).

Наконец, очистите возможные старые суперблоки md на новых разделах:

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

Если устройство не было частью md-массива, mdadm сообщит, что это «Unrecognised md component device» — это нормально.

4 Стратегии миграции (краткое сравнение)

Ниже — два распространённых подхода. Выберите тот, который вам удобнее и понятнее.

  • Подход A (рекомендуемый для минимального простоя): создать деградированный RAID на новых разделах (sdb) — md0 и md1 — затем перенести данные на md1 (LVM) и /boot на md0; после этого добавить старые разделы (sda) в массивы и дождаться синхронизации.

  • Подход B (альтернатива через LVM): добавить /dev/sdb5 как PV в VG, выполнить pvmove чтобы перенести данные с /dev/sda5 на /dev/sdb5, затем удалить /dev/sda5 из VG и создать зеркалирование на уровне md поверх свободных /dev/sdX. Этот путь применим, но требует аккуратного порядка операций.

В этой инструкции подробно описан Подход A — он нагляднее и часто проще для восстановления в случае проблем.

5 Подход A — пошагово (рекомендуемый порядок)

Внимание: приведённые команды хорошо подходят для Debian Lenny с классическим GRUB; если у вас GRUB2 или другая конфигурация, команды установки загрузчика могут отличаться. Всегда проверяйте перед применением.

5.1 Создание деградированного md0 для /boot

Создайте RAID1 массив md0, используя только /dev/sdb1 — второй слот задаём как missing, чтобы не перезаписывать работающий /dev/sda1:

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

Зачем metadata=0.90: старые версии GRUB иногда не умели читать /boot на md-массиве, если метаданные размещались в начале устройства. metadata=0.90 размещает metadata в конце раздела и обычно совместима с GRUB («legacy»).

Форматируем /dev/md0 и копируем содержимое /boot:

mkfs.ext3 /dev/md0
mount /dev/md0 /mnt
rsync -aHAX --numeric-ids --delete /boot/ /mnt/
umount /mnt

Измените /etc/fstab: замените строку, где монтируется /boot с /dev/sda1 на /dev/md0 (рекомендуется использовать UUID — получите его через blkid и вставьте вместо устройства).

5.2 Создание деградированного md1 для LVM

Создайте RAID1 для LVM на /dev/sdb5 (второй компонент — missing):

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

Проверьте состояние массива командой cat /proc/mdstat.

Создайте на /dev/md1 физический том LVM:

pvcreate /dev/md1
vgextend debian /dev/md1

Теперь перенесите данные внутри LVM с /dev/sda5 на /dev/md1:

pvmove /dev/sda5 /dev/md1

После успешного pvmove удалите старую PV из VG:

vgreduce debian /dev/sda5

На этом этапе логические тома работают с PV /dev/md1. Убедитесь, что всё работает, проверьте lvdisplay и mount.

5.3 Добавление /dev/sda-частей в массивы и синхронизация

Теперь, когда /dev/sda5 свободен, добавьте его в md1 и дождитесь синхронизации:

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

Аналогично — добавьте /dev/sda1 в md0 (предварительно убедитесь, что /boot скопирован и fstab указывает на /dev/md0):

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

После завершения синхронизации у вас будут полностью зеркалированные md0 и md1.

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

Создайте/обновите файл конфигурации mdadm, чтобы initramfs и mdadm знали о массивах при загрузке:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# или, если файл /etc/mdadm.conf используется в вашей системе:
# mdadm --detail --scan >> /etc/mdadm.conf

Проверьте, что в конфиге нет дублирующих записей. Затем обновите initramfs:

update-initramfs -u

5.5 Установка GRUB на оба диска

Важно установить загрузчик на MBR обоих физических дисков, чтобы система могла загрузиться, если любой из дисков выйдет из строя.

Для классического GRUB (legacy):

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

Для GRUB2 команды похожи, но в Debian Lenny, как правило, используется legacy GRUB; убедитесь в версии перед установкой. После этого перезагрузите систему, чтобы проверить корректность загрузки с получившейся конфигурации.

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

  • Проверьте cat /proc/mdstat — оба массива должны быть в состоянии clean и show raid1 с двумя участниками.
  • Смонтируйте /boot и проверьте содержимое.
  • Попробуйте временно отключить один диск (например, пометить /dev/sda как failed и снять) и убедиться, что система продолжает работать и загружаться.
  • Проверьте pvdisplay/vgdisplay и lvdisplay для подтверждения, что LVM использует /dev/md1.

7 Тонкости и часто встречающиеся проблемы

  • GRUB не видит /boot на md-массиве: используйте metadata 0.90 для md0 или установите GRUB на оба диска и убедитесь, что initramfs содержит информацию о массивах.
  • Ошибка при pvmove: убедитесь, что на md1 достаточно места для размещения всех данных с /dev/sda5.
  • Если система использует RAID на аппаратном уровне или нестандартную версию GRUB, схема может отличаться.
  • Если в процессе вы получаете «device busy» — убедитесь, что раздел не смонтирован и нет открытых дескрипторов.

Important: операции с разделами и массивами несут риск потери данных. Всегда имейте полную резервную копию и, по возможности, тестируйте процедуру на аналогичной тестовой машине.

8 Альтернативы

  • Аппаратный RAID (HBА/RAID-контроллер) — перенос ответственности на контроллер; полезно, если требуется аппаратное ускорение и поддержка на уровне контроллера.
  • Зеркалирование на уровне LVM (mirror LV) — LVM умеет зеркалировать логические тома, но это другой рабочий процесс, с отличиями в управлении и восстановлении.
  • Использовать rsync/backup + clean install с RAID — иногда проще и безопаснее развернуть систему заново на RAID и вернуть данные из бэкапа.

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

  • Оба массива /dev/md0 и /dev/md1 находятся в состоянии clean и имеют 2/2 участников.
  • /boot монтируется с /dev/md0 и содержит корректный набор файлов ядра и initramfs.
  • LVM использует /dev/md1 как PV, а все LV доступны и смонтированы.
  • GRUB установлен на MBR обоих дисков и система успешно загружается при отключении одного из них.

10 Контрольный список (роль-ориентированный)

Администратор перед началом:

  • Сделана полная резервная копия / и /boot
  • Наличие свободного физического диска /dev/sdb равного по размеру
  • Доступ к консоли и к live-режиму на случай отката

Во время миграции:

  • Установлен mdadm
  • Таблица разделов скопирована и типы разделов выставлены в fd
  • Очистка superblock выполнена
  • Созданы деградированные md0(md1) на sdb
  • /boot скопирован; fstab обновлён
  • PV создан на /dev/md1; pvmove выполнен
  • Старые разделы добавлены в массивы; синхронизация завершена
  • mdadm.conf обновлён; initramfs пересобран
  • GRUB установлен на оба диска

После миграции:

  • Тест загрузки при отключённом диске
  • Мониторинг состояния md и уведомления настроены

11 Короткий глоссарий (одной строкой)

  • mdadm — утилита для управления программными RAID-массивами Linux; LVM — логический менеджер томов; pv, vg, lv — физический том, группа томов и логический том в LVM; initramfs — образ initrd для ранней загрузки.

Итог

Перенос работающей LVM-системы на программный RAID1 возможен без длительного простоя, если придерживаться аккуратной последовательности: подготовить второй диск, создать деградированные массивы, перенести LVM-данные и /boot, добавить старые разделы в массивы, зафиксировать конфигурацию и установить GRUB на оба диска. Всегда имейте резервную копию и тестируйте процедуру на стенде.

Notes: если ваша система использует GRUB2 или другие версии ОС, адаптируйте команды установки загрузчика и при необходимости консультируйтесь с документацией вашей версии GRUB.

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

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

Как цитировать текст на Reddit — веб и мобильный
Социальные сети

Как цитировать текст на Reddit — веб и мобильный

Тёмный режим на Kindle — как включить
Гаджеты

Тёмный режим на Kindle — как включить

Steam Achievement Manager — как скачать и использовать
Gaming

Steam Achievement Manager — как скачать и использовать

Сохраняйте посты в Facebook — читать позже
Социальные сети

Сохраняйте посты в Facebook — читать позже

Настройка домашней страницы в Bluesky
Руководство

Настройка домашней страницы в Bluesky

Безопасная работа из дома — руководство
Безопасность

Безопасная работа из дома — руководство