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

Как настроить программный RAID1 на работающей системе LVM (включая настройку GRUB2) (Debian Squeeze)

• 11 min read • Системное администрирование • Обновлено 22 Nov 2025
Настройка программного RAID1 на LVM с GRUB2
Настройка программного RAID1 на LVM с GRUB2

Кратко

В этом руководстве описан безопасный способ добавить программный RAID1 на уже работающую систему с LVM (Debian Squeeze) и настроить GRUB2 так, чтобы система могла загрузиться при выходе из строя любого диска. Приведён пошаговый план, проверки, резервные сценарии и чек-листы для администратора. Перед началом сделайте полную резервную копию важных данных.

Введение

Это руководство объясняет, как настроить программный RAID1 на уже работающей системе с LVM (Debian Squeeze). Загрузчик GRUB2 будет настроен так, чтобы система оставалась загружаемой при отказе любого из дисков (независимо от того, какой диск выйдет из строя).

Я не даю гарантии, что это идеально работает в вашей среде — тестируйте на небоевых системах и имейте резервные копии.

В этом документе:

  • Понятное объяснение, почему и когда стоит переводить LVM на RAID1.
  • Пошаговая инструкция с командной строкой для подготовки свободного второго диска (/dev/sdb).
  • Как создать RAID-устройства (/dev/md0 для /boot и /dev/md1 для LVM), не перезагружая систему.
  • Как обновить mdadm.conf, initramfs и GRUB2 и проверить загрузку.
  • Сценарии восстановления при отказе диска и чек-листы для разных ролей.

Важно: все команды выполняйте от root пользователя. Перед выполнением — полная резервная копия.

H1 — краткая цель статьи (единичный заголовок)

H2: Что даёт настройка RAID1 для LVM и GRUB2

RAID1 зеркалирует данные на два диска в реальном времени. Преимущества:

  • Устойчивость к отказу диска: если один диск выйдет из строя, система остаётся работоспособной.
  • Быстрое восстановление: заменив диск и дав зеркалу восстановиться, вы вернёте полную избыточность.
  • GRUB2 на обоих дисках обеспечивает возможность загрузки, даже если MBR/таблица разделов одного диска повреждена.

Коротко: RAID1 обеспечивает доступность, но не является заменой резервного копирования.

H2: Термины (1‑строчные определения)

  • RAID1: зеркалирование двух и более устройств; данные дублируются.
  • mdadm: утилита для управления программными RAID (Linux MD RAID).
  • LVM: логический менеджер томов — слой абстракции над физическими разделами.
  • GRUB2: загрузчик, используемый для старта Linux.
  • PV/VG/LV: физический том, группа томов и логический том в LVM.

H2: Исходная конфигурация (пример из источника)

В примере используется Debian Squeeze с двумя идентичными дисками:

  • /dev/sda — рабочий диск, содержит:
    • /dev/sda1 — раздел /boot (ext2)
    • /dev/sda5 — LVM PV, VG server1, содержит root и swap
  • /dev/sdb — свободен, будет использован для создания зеркала.

Пример вывода команд с сервера (для ориентира):

df -h

Примерный вывод:

root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G  720M  3.6G  17% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  104K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
/dev/sda1             228M   16M  201M   8% /boot
root@server1:~#
fdisk -l

(В исходном примере показан вывод fdisk -l, pvdisplay, vgdisplay, lvdisplay. Сохраните результаты этих команд — они пригодятся при диагностике.)

H2: Подготовка: установка mdadm и загрузка модулей

Утилита mdadm нужна для работы с программными RAID. Установим её (и initramfs-tools, если ещё не установлены):

apt-get install initramfs-tools mdadm

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

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

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

cat /proc/mdstat

Ожидаемый результат должен содержать [raid1] и т. п.:

root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: 
root@server1:~#

Важно: если в /proc/mdstat уже есть активные массивы, убедитесь, что их состояние нормальное.

H2: Шаг 1 — подготовка второго диска (/dev/sdb)

  1. Скопируйте таблицу разделов с /dev/sda на /dev/sdb, чтобы диски имели одинаковую схему:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
  1. Проверьте fdisk -l — у вас должны быть одинаковые разделы на /dev/sda и /dev/sdb.

  2. Измените тип разделов на /dev/sdb1 и /dev/sdb5 на “Linux raid autodetect” (тип fd):

fdisk /dev/sdb
# внутри fdisk: t, 1, fd  ; t, 5, fd  ; w
  1. Убедитесь, что изменения применились:
fdisk -l
  1. Очистите возможные старые RAID-суперблоки (если они есть):
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5

Если предыдущих метаданных не было, mdadm сообщит «Unrecognised md component device…» — это нормально.

H2: Шаг 2 — создать зеркальный раздел /boot на свободном диске и перенести туда данные

Подход: сначала создать зеркало только на /dev/sdb (degraded array с missing), смонтировать массив, скопировать данные /boot в новое зеркало, затем добавить /dev/sda1 в массив и дать ему синхронизироваться. Такой подход минимизирует риск повреждения работающего раздела /dev/sda1.

  1. Создаём массив /dev/md0 для /boot (degraded — только /dev/sdb1):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing

Примечание: если у вас старая версия mdadm и вы хотите совместимость с initramfs/GRUB, можно указывать –metadata=0.90. Современные версии работают с метаданными по умолчанию.

  1. Создаём файловую систему ext2 (как было на /dev/sda1):
mkfs.ext2 /dev/md0
  1. Монтируем новый /boot и копируем содержимое старого:
mkdir /mnt/newboot
mount /dev/md0 /mnt/newboot
cp -ax /boot/. /mnt/newboot/

Опция -a сохраняет права и атрибуты; -x избегает перескока на другие файловые системы.

  1. Измените /etc/fstab, чтобы /dev/md0 (лучше — по UUID) монтировался как /boot. Получите UUID:

lkid /dev/md0

Отредактируйте /etc/fstab, заменив /dev/sda1 на UUID для /dev/md0.

  1. Смонтируйте новую точку /boot:
umount /mnt/newboot
mount /boot

Или перезагрузите, если вы предпочитаете.

  1. Проверьте, что в /boot находятся ожидаемые файлы (vmlinuz, initrd.img, grub и т.д.).

  2. Теперь можно добавить /dev/sda1 в массив /dev/md0 (это запустит синхронизацию):

mdadm --add /dev/md0 /dev/sda1

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

watch -n1 cat /proc/mdstat

H2: Шаг 3 — создать RAID для LVM (перенос PV в зеркало) — безопасный метод

Цель: не разрушать существующий LVM на /dev/sda5, а создать зеркало на /dev/sdb5, подключить его к VG и выполнить pvmove, затем добавить /dev/sda5 в RAID и дать массиву завершить синхронизацию.

  1. Создаём массив /dev/md1 (degraded) только с /dev/sdb5:
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb5 missing
  1. Создаём на /dev/md1 PV LVM:
pvcreate /dev/md1
  1. Добавляем новый PV в существующую группу сервер1:
vgextend server1 /dev/md1
  1. Переносим все данные (extents) с /dev/sda5 на /dev/md1:
pvmove /dev/sda5 /dev/md1

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

  1. Как только pvmove завершится, удалим старый PV /dev/sda5 из VG:
vgreduce server1 /dev/sda5
  1. Теперь можно освободить /dev/sda5 и добавить его в md1, чтобы завершить зеркало:
mdadm --add /dev/md1 /dev/sda5

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

watch -n1 cat /proc/mdstat

После успешной синхронизации у вас будет полностью зеркальная LVM: /dev/md1 как PV в VG server1, с LV root и swap уже перенесёнными.

H2: Шаг 4 — обновить конфигурацию mdadm и initramfs

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

(Если запись уже есть — проверьте, чтобы не было дубликатов.)

  1. Обновите initramfs, чтобы он включал mdadm и RAID-массивы:
update-initramfs -u

На системах с несколькими версиями ядра можно выполнить update-initramfs -u -k all.

  1. Проверьте, что /etc/fstab использует правильные устройства (например, UUID /dev/md0 для /boot) и что LVM монтируется корректно.

H2: Шаг 5 — установить GRUB2 на оба диска

Чтобы обеспечить загрузку даже при отказе одного диска, установите GRUB2 в MBR обоих дисков (/dev/sda и /dev/sdb):

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

После этого загрузочный код GRUB будет записан в оба диска, и при потере одного из них система всё ещё сможет загрузиться с другого.

H2: Проверка и тестирование

  1. Проверьте состояние md-устройств:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
  1. Проверьте, что LVs активны и смонтированы:
lvdisplay
mount | grep /dev/mapper
  1. Проверьте, что /boot загружается с md0 (проверьте содержимое /boot и что /etc/fstab указывает на /dev/md0).

  2. Симуляция отказа: аккуратно отключите (или демонтируйте) на тестовом хосте второй диск, убедитесь, что система продолжает работать и загружается после перезагрузки (на тестовой машине). Всегда имейте образ восстановления.

H2: Восстановление и замена диска

Если диск вышел из строя и вы заменили его новым:

  1. Разбейте новый диск, воспроизведите таблицу разделов (sfdisk с /dev/sda или используйте parted).
sfdisk -d /dev/sdb | sfdisk /dev/sdc  # пример: копирование схемы на новый диск /dev/sdc
  1. Пометьте разделы как raid (тип fd) и очистите суперблоки на новых разделах.
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdc5
  1. Добавьте новые разделы в соответствующие массивы:
mdadm --add /dev/md0 /dev/sdc1
mdadm --add /dev/md1 /dev/sdc5
  1. Подождите завершения синхронизации (cat /proc/mdstat).

  2. При необходимости установите GRUB на новый диск:

grub-install /dev/sdc
  1. Обновите /etc/mdadm/mdadm.conf и initramfs, если требуется.

H2: Частые ошибки и когда это не сработает

  • Недостаточно свободного места на втором диске. Диски должны быть не меньше по размеру.
  • Различные размеры секторов или отличия в разметке могут привести к проблемам; всегда проверяйте совместимость.
  • Сложная цепочка LVM из нескольких PV/VG с распределением по разным дискам требует внимательного планирования и тестирования pvmove.
  • Если /boot был установлен в нестандартном месте или использует CIFS/NFS, этот метод неприменим.
  • Если initramfs не был обновлён, система может не загрузиться в RAID-режиме.

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

  1. Аппаратный RAID: аппаратный контроллер обеспечивает зеркалирование на уровне контроллера. Плюсы: часто выше производительность, загрузчик ставится на аппаратный RAID. Минусы: привязка к марке контроллера и более сложный перенос дисков между машинами.

  2. Полное восстановление: создать образ системы и восстановить его на двух дисках, затем настроить RAID. Подходит для критичных систем, когда риск небольшой и можно проводить простои.

  3. Использовать LVM-RAID (lvm2 raid features) — в новых версиях LVM есть собственный механизм RAID, но на Debian Squeeze он может отсутствовать или быть ограничен.

H2: Ментальные модели и эвристики при принятии решения

  • Разница между доступностью и резервным копированием: RAID1 даёт доступность, но не защищает от удаления файлов/ошибок администратора.
  • Поэтапный подход: создавайте зеркало на пустом диске, переносите данные по частям, не перестраивайте все одновременно.
  • Тестируйте на стендах: никогда не проводите такую миграцию впервые на боевой системе без теста.

H2: Роль‑ориентированные чек-листы

Системный администратор (до операции):

  • Сделать полную резервную копию и проверить восстановление.
  • Убедиться, что есть физический доступ к серверу или консоль KVM/IPMI.
  • Проверить, что второй диск работает и по размеру не меньше первого.
  • Зафиксировать текущее состояние: выводы fdisk, pvdisplay, vgdisplay, lvdisplay.

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

  • Выполнять команды шаг за шагом, фиксируя логи.
  • Следить за cat /proc/mdstat и pvmove.

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

  • Обновить mdadm.conf, initramfs, установить GRUB на оба диска.
  • Провести тестовую перезагрузку на стенде.

Менеджер/владелец сервиса:

  • Утвердить окно обслуживания и планы отката.
  • Быть в курсе уровня риска и сроков восстановления.

H2: Критерии приёмки

  • /boot смонтирован с /dev/md0 и содержит корректные образы ядра и initramfs.
  • LVM VG работает поверх /dev/md1, LV root и swap доступны и монтируются.
  • mdadm показывает состояние “active” для всех массивов и синхронизация завершена.
  • GRUB установлен на обоих дисках; тест загрузки с каждого диска пройден (в тестовой среде).
  • /etc/mdadm/mdadm.conf содержит актуальную конфигурацию массивов.

H2: Шаблон проверок (acceptance checklist)

  • Выполнена резервная копия
  • Таблица разделов скопирована на /dev/sdb
  • Типы разделов на /dev/sdb помечены как fd
  • md0 создан на /dev/sdb1, /boot скопирован, /etc/fstab обновлён
  • md1 создан на /dev/sdb5, pvcreate + vgextend + pvmove выполнены
  • vgreduce /dev/sda5 выполнен, /dev/sda5 добавлен в md1
  • mdadm.conf обновлён и initramfs пересоздан
  • GRUB установлен на /dev/sda и /dev/sdb
  • Симуляция отказа диска в тестовой среде успешно пройдена

H2: Чек‑лист восстановления в боевой ситуации (runbook кратко)

  1. Определить вышедший диск (dmesg, smartctl, mdadm –detail).
  2. Если диск полностью умер — извлечь, установить новый.
  3. Восстановить таблицу разделов и пометить тип fd.
  4. mdadm –add новый раздел в соответствующий массив.
  5. Проверить синхронизацию в /proc/mdstat.
  6. При необходимости выполнить grub-install на новом диске.

H2: Чек‑лист безопасности и приватности (замечания для локальной среды)

  • Локальные регуляции (например GDPR) не зависят от зеркалирования; RAID не заменяет политик резервного копирования и удаления персональных данных.
  • При переносе данных на новый диск убедитесь, что не копируете конфиденциальные ключи в ненадежное место.

H2: Команды‑шпаргалка (cheat sheet)

  • Установить утилиты: apt-get install initramfs-tools mdadm
  • Скопировать таблицу: sfdisk -d /dev/sda | sfdisk –force /dev/sdb
  • Пометить разделы raid: fdisk /dev/sdb (t → fd)
  • Очистить суперблок: mdadm –zero-superblock /dev/sdb1
  • Создать degraded md для /boot: mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 missing
  • Создать FS: mkfs.ext2 /dev/md0
  • Скопировать /boot: cp -ax /boot/. /mnt/newboot/
  • Добавить sda1: mdadm –add /dev/md0 /dev/sda1
  • Создать md для LVM: mdadm –create /dev/md1 –level=1 –raid-devices=2 /dev/sdb5 missing
  • Создать PV и добавить в VG: pvcreate /dev/md1; vgextend server1 /dev/md1
  • Перенос данных: pvmove /dev/sda5 /dev/md1
  • Убрать старый PV: vgreduce server1 /dev/sda5
  • Добавить sda5 в md: mdadm –add /dev/md1 /dev/sda5
  • Обновить mdadm.conf: mdadm –detail –scan >> /etc/mdadm/mdadm.conf
  • Обновить initramfs: update-initramfs -u
  • Установить GRUB: grub-install /dev/sda; grub-install /dev/sdb; update-grub

H2: Мелкие советы и примечания

  • Всегда контролируйте процесс pvmove и синхронизацию RAID. Эти операции «дороги» по I/O — планируйте окна обслуживания.
  • При создании md-устройств можно указывать –assume-clean, но это опасно: используйте только если точно понимаете последствия.
  • Если вы используете LVM snapshot-ы или активные резервные потоки — учтите их при переносе томов.

H2: Альтернативы и когда лучше отложить миграцию

  • Если система критична и нет окна для тестирования — лучше сначала настроить зеркалирование на стенде.
  • Если диски сильно различаются по характеристикам (смартфон-сервер? старый и новый), дождитесь одинаковых дисков.

H2: Заключение

Добавление RAID1 в работающую систему LVM возможно и практично при соблюдении пошаговой методики: создать degraded массивы на пустом диске, перенести данные на зеркало, расширить VG и выполнить pvmove, а затем добавить исходные разделы в массивы. Не забывайте обновить конфигурации (mdadm.conf, initramfs) и установить GRUB на оба диска. Тестируйте процедуру на небоевых серверах и имейте резервные копии.

Важно

  • Не полагайтесь только на RAID для защиты данных — RAID повышает доступность, но не устраняет ошибки пользователя или вредоносные изменения.
  • Перед началом убедитесь, что у вас текущая резервная копия.

Резюме

  • Создавать зеркала лучше поэтапно: сначала /boot, затем LVM PV через md + pvcreate + vgextend + pvmove.
  • Обновите mdadm.conf и initramfs, установите GRUB на оба диска.
  • Тестируйте отказ диска в контролируемой среде.

Источники знаний и дальнейшее чтение

  • man mdadm
  • man lvm
  • документация Debian по mdadm и initramfs
Поделиться: 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 быстро