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

Как настроить программный RAID1 на работающей LVM‑системе (включая конфигурацию GRUB) (Fedora 8)

6 min read Системное администрирование Обновлено 29 Oct 2025
RAID1 на LVM (Fedora 8) — настройка и GRUB
RAID1 на LVM (Fedora 8) — настройка и GRUB

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

О чём эта инструкция

Цель: добавить зеркалирование (RAID1) к уже существующей LVM‑системе без переустановки. Пример использует Fedora 8 и два одинаковых по размеру диска: /dev/sda (в работе) и /dev/sdb (пустой). В результате должны появиться:

  • /dev/md0: зеркальный раздел для /boot (из /dev/sda1 и /dev/sdb1), формат ext3;
  • /dev/md1: зеркальный LVM‑физический том (из /dev/sda2 и /dev/sdb2), в который вписана существующая группа VolGroup00.

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

  • RAID1 — зеркалирование данных между двумя и более дисками; при выходе одного диск остаётся доступным.
  • LVM — логический менеджер томов; позволяет изменять размеры томов и управлять логическими разделами.
  • mdadm — утилита для управления программными RAID на Linux.

Компоненты и требования

  • Два диска одинакового (или совместимого по объёму) размера: /dev/sda (активный), /dev/sdb (пустой).
  • root‑доступ.
  • Установленные пакеты: mdadm, mkinitrd (в примере используется yum).
  • Резервная копия критичных данных.

Сценарий из примера (исходное состояние)

Ниже приведены выводы команд, соответствующие начальной конфигурации системы в примере.

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/mapper/VolGroup00-LogVol00  
                      4.1G  2.0G  2.0G  51% /  
/dev/sda1             190M   13M  168M   7% /boot  
tmpfs                 151M     0  151M   0% /dev/shm  
[root@server1 ~]#
fdisk -l
[root@server1 ~]# fdisk -l  
  
Disk /dev/sda: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x0008b885  
  
   Device Boot      Start         End      Blocks   Id  System  
/dev/sda1   *           1          25      200781   83  Linux  
/dev/sda2             26         652     5036377+  8e  Linux LVM  
  
Disk /dev/sdb: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/sdb doesn't contain a valid partition table  
  
Disk /dev/dm-0: 4462 MB, 4462739456 bytes  
255 heads, 63 sectors/track, 542 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/dm-0 doesn't contain a valid partition table  
  
Disk /dev/dm-1: 637 MB, 637534208 bytes  
255 heads, 63 sectors/track, 77 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x30307800  
  
Disk /dev/dm-1 doesn't contain a valid partition table  
[root@server1 ~]#

Выводы LVM:

pvdisplay
[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda2  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.34 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0  
  
[root@server1 ~]#
vgdisplay
[root@server1 ~]# vgdisplay  
  --- Volume group ---  
  VG Name               VolGroup00  
  Format                lvm2  
  Metadata Areas        1  
  Metadata Sequence No  3  
  VG Access             read/write  
  VG Status             resizable  
  Cur LV                2  
  Open LV               2  
  Cur PV                1  
  Act PV                1  
  VG Size               4.78 GB  
  PE Size               32.00 MB  
  Total PE              153  
  Alloc PE / Size       152 / 4.75 GB  
  Free  PE / Size       1 / 32.00 MB  
  VG UUID               jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1  
  
[root@server1 ~]#
lvdisplay
[root@server1 ~]# lvdisplay  
  --- Logical volume ---  
  LV Name                /dev/VolGroup00/LogVol00  
  VG Name                VolGroup00  
  LV UUID                yt5b4f-m2XC-F3aP-032r-ulAT-Re5P-lmh6hy  
  LV Write Access        read/write  
  LV Status              available  
  # open                 1  
  LV Size                4.16 GB  
  Current LE             133  
  Segments               1  
  Allocation             inherit  
  Block device           253:0  
  
  --- Logical volume ---  
  LV Name                /dev/VolGroup00/LogVol01  
  VG Name                VolGroup00  
  LV UUID                VrPqpP-40ym-55Gs-ShVm-Hlzs-Jzot-oYnonY  
  LV Write Access        read/write  
  LV Status              available  
  # open                 1  
  LV Size                608.00 MB  
  Current LE             19  
  Segments               1  
  Allocation             inherit  
  Block device           253:1  
  
[root@server1 ~]#

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

Установим mdadm и mkinitrd. В Fedora 8 используется yum:

yum install mkinitrd mdadm

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

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

Проверим текущие поддерживаемые личности md:

cat /proc/mdstat

Ожидаемый вывод (пример):

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

2. Подготовка /dev/sdb — копирование таблицы разделов

Чтобы диски имели одинаковую разметку, скопируем таблицу разделов со /dev/sda на /dev/sdb:

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

Примерный вывод при успешной записи разметки:

[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb  
Checking that no-one is using this disk right now ...  
OK  
  
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track  
  
sfdisk: ERROR: sector 0 does not have an msdos signature  
 /dev/sdb: unrecognized partition table type  
Old situation:  
No partitions found  
New situation:  
Units = sectors of 512 bytes, counting from 0  
  
   Device Boot    Start       End   #sectors  Id  System  
/dev/sdb1   *        63    401624     401562  83  Linux  
/dev/sdb2        401625  10474379   10072755  8e  Linux LVM  
/dev/sdb3             0         -         0   0  Empty  
/dev/sdb4             0         -         0   0  Empty  
Successfully wrote the new partition table  
  
Re-reading the partition table ...  
  
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)  
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1  
(See fdisk(8).)  
[root@server1 ~]#

После этого в выводе fdisk -l оба диска должны выглядеть одинаково.

3. Изменение типа разделов на Linux raid autodetect

На /dev/sdb нужно изменить тип разделов с 83/8e на fd (Linux raid autodetect). Откроем fdisk и сменим коды:

fdisk /dev/sdb

В интерактивной сессии выберите t → номер раздела → код fd (введите L для списка кода). Затем w для записи.

Пример (сокращённый фрагмент сессии):

Command (m for help): <- t  
Partition number (1-4): <- 1  
Hex code (type L to list codes): <- fd  
Changed system type of partition 1 to fd (Linux raid autodetect)  
  
Command (m for help): <- t  
Partition number (1-4): <- 2  
Hex code (type L to list codes): <- fd  
Changed system type of partition 2 to fd (Linux raid autodetect)  
  
Command (m for help): <- w  
The partition table has been altered!  
  
Calling ioctl() to re‑read partition table.  
Syncing disks.  
[root@server1 ~]#

После этого fdisk -l покажет для /dev/sdb1 и /dev/sdb2 тип fd — Linux raid autodetect.

4. Очистка возможных старых суперблоков md

Перед созданием массивов убедитесь, что на /dev/sdb нет остатков старых md‑метаданных:

mdadm --zero-superblock /dev/sdb1  
mdadm --zero-superblock /dev/sdb2

Если на разделе не было метаданных md, mdadm вернёт сообщение об «Unrecognised md component device», что нормально.

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

5. Общая последовательность действий (мини‑методология)

  1. Резервное копирование всех критичных данных.
  2. Установка mdadm и загрузка модулей.
  3. Клонирование таблицы разделов со «старого» диска на новый.
  4. Изменение типа разделов на fd (raid autodetect).
  5. Очистка md‑суперблоков.
  6. Создание массивов md для /boot и LVM‑физического тома.
  7. Копирование содержимого /boot (если создаёте новый md0).
  8. Добавление оригинальных разделов в массивы по одному и перестройка.
  9. Установка GRUB на оба диска и обновление initramfs (mkinitrd).
  10. Тестирование отказоустойчивости (извлечь один диск и загрузиться).

6. Примеры команд (что обычно делают дальше)

Ниже приведены типовые команды, которые в других инструкциях применяют для завершения миграции в RAID1. Они служат как примеры; подставьте свои устройства и пути.

  • Создать RAID1 для /boot (если хотите зеркалить /boot):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
  • Создать RAID1 для LVM (физический том):
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
  • Если вы создаёте md1 и хотите использовать его как PV для LVM, нужно выполнить pvcreate на /dev/md1 и затем восстановить VG/ЛВ из резервной копии метаданных LVM или переместить данные. Этот момент требует внимания — корректные шаги зависят от того, действуете ли вы на работающей системе и хотите ли переместить текущий PV.

  • Установка GRUB на оба диска (пример):

grub-install /dev/sda
grub-install /dev/sdb
  • Обновление initramfs / начального ramdisk (если требуется):
mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`

Важно: точные параметры grub-install и mkinitrd зависят от версии GRUB и от структуры /boot в вашей системе. На Fedora 8 команды выше — типовой пример.

7. Критерии приёмки

  • /dev/md0 и /dev/md1 созданы и отображаются в /proc/mdstat.
  • /boot корректно читается с /dev/md0; система загружается с любого из дисков при отключении второго.
  • LVM‑группа существует и все логические тома смонтированы после смены на md1 (при использовании md1 как PV).
  • GRUB установлен на MBR обоих дисков (проверьте grub-install и содержимое /boot/grub/grub.conf).
  • Выполнен успешный тест: отключённый второй диск — система загружается и работает.

8. Чек‑лист для ролей

Администратор (подготовка):

  • Сделать резервную копию /boot, LVM метаданных и критичных данных.
  • Проверить наличие свободного диска одинакового размера.
  • Убедиться, что установлены mdadm и mkinitrd.

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

  • Скопировать таблицу разделов sfdisk.
  • Изменить тип разделов на fd.
  • Очистить суперблоки mdadm.
  • Создать массивы md и следить за перестроением.
  • Установить GRUB на оба диска и обновить initramfs.

Тестировщик (проверка):

  • Перезагрузить и загрузиться с основного диска.
  • Отключить/симулировать отказ одного диска и загрузиться с оставшегося.
  • Проверить целостность данных и доступность LVM томов.

9. Когда подход не работает / ограничения (контрпримеры)

  • Неодинаковый размер дисков. Если второй диск меньше, чем первый, зеркалирование полного PV не получится.
  • Если исходная система использует особую схему загрузки (UEFI/GPT вместо MBR в старой Fedora), команды grub-install и sfdisk потребуют других параметров.
  • Если LVM использовал несколько PV, простая замена одного PV на md1 может быть сложной и потребовать миграции данных между PV.

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

  • Использовать аппаратный контроллер RAID — выключает необходимость mdadm, но привязывает конфигурацию к контроллеру.
  • Создать RAID1 только для / (без LVM) — упрощает загрузчик, но требует переразбивки.
  • Миграция на LVM‑зеркалирование (lvm mirror) вместо mdadm — LVM поддерживает собственное зеркало, но у него другие нюансы восстановления.

11. Советы и эвристики

  • Всегда проверяйте /proc/mdstat и вывод mdadm –detail при создании/восстановлении массива.
  • При создании массива md для /boot сначала создайте md0, отформатируйте и скопируйте данные /boot, затем установите GRUB на оба диска.
  • Для минимизации риска разделы должны иметь выровненные границы и совпадать по типу.

12. Резюме

Эта инструкция показывает ключевые шаги для перевода работающей LVM‑системы в режим зеркалирования с помощью mdadm: установка утилит, копирование таблицы разделов, изменение типов на Linux raid, очистка старых md‑суперблоков и подготовка к созданию RAID‑массивов. Завершающие шаги включают создание md‑массивов, перенос/подключение LVM к md1 и установку GRUB на оба диска. Тестирование отказоустойчивости — обязательный финальный шаг.

Краткие рекомендации: протестируйте процедуру на ненужной машине или в контролируемом окружении до применения в проде. Если вы не уверены в шагах с LVM, сначала отработайте создание md0 (для /boot), а уже затем переходите к LVM‑части.


Фактбокс — ключевые числа из примера:

  • Размер LV root: ~4.16 GB.
  • Размер swap LV: ~608 MB.
  • Количество PE в VG: 153.

Примечание: команды и последовательность могут требовать адаптации под вашу точную версию ядра, GRUB и утилит. Выполняйте операции под рутом и имейте резервные копии.

Поделиться: 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 — как найти