Как настроить программный 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.
Быстрый обзор процесса
- Установить mdadm и подготовить окружение.
- Скопировать таблицу разделов с работающего диска (/dev/sda) на пустой диск (/dev/sdb).
- Поставить тип разделов как Linux raid autodetect и обнулить старые суперблоки md.
- Создать деградированные массивы на /dev/sdb (md0 — для /boot с metadata 0.90; md1 — для LVM), смонтировать и скопировать /boot.
- Создать PV на /dev/md1, добавить в VG и выполнить pvmove, чтобы перенести данные с /dev/sda5 на /dev/md1.
- Удалить /dev/sda5 из VG, добавить /dev/sda5 в md1 и дождаться синхронизации; аналогично добавить /dev/sda1 в md0.
- Зафиксировать конфигурацию в /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 -u5.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.
Похожие материалы
Как цитировать текст на Reddit — веб и мобильный
Тёмный режим на Kindle — как включить
Steam Achievement Manager — как скачать и использовать
Сохраняйте посты в Facebook — читать позже
Настройка домашней страницы в Bluesky