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

Переезд системы на RAID1 и подготовка загрузчика GRUB

4 min read Системное администрирование Обновлено 28 Sep 2025
Переезд на RAID1 и установка GRUB
Переезд на RAID1 и установка GRUB

4 Создание RAID-массивов

Сначала создаём RAID-массивы /dev/md0, /dev/md1 и /dev/md2. В текущем сценарии /dev/sdb1 добавляется в /dev/md0, /dev/sdb2 в /dev/md1, /dev/sdb3 в /dev/md2. Разделы /dev/sda1, /dev/sda2 и /dev/sda3 не могут быть добавлены в эти массивы прямо сейчас (система загружена с них), поэтому в командах используется плейсхолдер missing:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1  
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2  
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3

Проверим состояние массивов:

cat /proc/mdstat

Вы должны увидеть три degraded RAID-массива ([U] или [U] — массив деградирован, [UU] — массив в порядке):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md2 : active raid1 sdb3[1]  
      4618560 blocks [2/1] [_U]  
  
md1 : active raid1 sdb2[1]  
      513984 blocks [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
      104320 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Создание файловых систем и конфигурация mdadm

Создаём файловые системы на RAID-массивах: ext3 на /dev/md0 и /dev/md2, swap на /dev/md1:

mkfs.ext3 /dev/md0  
mkswap /dev/md1  
mkfs.ext3 /dev/md2

Сканируем массивы и сохраняем информацию в /etc/mdadm.conf:

mdadm --examine --scan > /etc/mdadm.conf

Проверим содержимое файла:

cat /etc/mdadm.conf

В файле вы должны увидеть сведения о трёх (пока что деградированных) массивах:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49

5 Подготовка системы к RAID1

Подмонтируем массивы /dev/md0 и /dev/md2 (swap-массив /dev/md1 монтировать не требуется):

mkdir /mnt/md0  
mkdir /mnt/md2
mount /dev/md0 /mnt/md0  
mount /dev/md2 /mnt/md2

Проверим список монтированных точек:

mount

Ожидаемый вывод (включены /dev/md0 и /dev/md2):

[root@server1 ~]# mount  
/dev/sda3 on / type ext3 (rw)  
proc on /proc type proc (rw)  
sysfs on /sys type sysfs (rw)  
devpts on /dev/pts type devpts (rw,gid=5,mode=620)  
/dev/sda1 on /boot type ext3 (rw)  
tmpfs on /dev/shm type tmpfs (rw)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
/dev/md2 on /mnt/md2 type ext3 (rw)  
[root@server1 ~]#

Теперь обновим /etc/fstab — заменим LABEL=/boot на /dev/md0, LABEL=SWAP-sda2 на /dev/md1 и LABEL=/ на /dev/md2, чтобы файл выглядел примерно так:

vi /etc/fstab
/dev/md2                 /                       ext3    defaults        1 1
/dev/md0             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/md1         swap                    swap    defaults        0 0

Также в /etc/mtab замените LABEL=/boot и LABEL=/ на соответствующие /dev/md0 и /dev/md2:

vi /etc/mtab
/dev/md2 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

Обновление GRUB — добавление fallback

Откроем конфигурацию GRUB и установим fallback=1 сразу после default=0:

vi /boot/grub/menu.lst
[...]
default=0
fallback=1
[...]

Это означает: если первый (индекс 0) образ не загрузится, будет использован образ из fallback (индекс 1).

Далее в том же файле найдите блоки с описаниями образов ядра. Скопируйте первый блок и вставьте его перед существующим, затем замените root=LABEL=/ на root=/dev/md2 и root (hd0,0) на root (hd1,0):

[...]
title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

Полный пример файла может выглядеть так:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
fallback=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

Замечание: root (hd1,0) указывает на /dev/sdb — диск, который уже входит в наши RAID-массивы.

Замена initrd и копирование данных

Обновим ramdisk для текущего ядра и затем скопируем данные с /dev/sda1 и /dev/sda3 в /dev/md0 и /dev/md2 (они смонтированы в /mnt/md0 и /mnt/md2):

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig  
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Копируем корневую файловую систему на /mnt/md2:

cp -dpRx / /mnt/md2

Копируем содержимое /boot на /mnt/md0:

cd /boot  
cp -dpRx . /mnt/md0

6 Подготовка GRUB (часть 1)

Теперь устанавливаем загрузчик GRUB на второй жёсткий диск /dev/sdb:

grub

В оболочке GRUB выполняем следующие команды:

root (hd0,0)

Пример вывода:

grub> root (hd0,0)  
 Filesystem type is ext2fs, partition type 0x83  

grub>

Устанавливаем GRUB в MBR диска:

setup (hd0)

Пример вывода:

grub> setup (hd0)  
 Checking if "/boot/grub/stage1" exists... no  
 Checking if "/grub/stage1" exists... yes  
 Checking if "/grub/stage2" exists... yes  
 Checking if "/grub/e2fs_stage1_5" exists... yes  
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.  
succeeded  
 Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded  
Done.  
  
grub>

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

root (hd1,0)

setup (hd1)

quit

На нормальной оболочке перезагружаем систему и ожидаем загрузки с RAID-массивов (или обратного перехода на fallback):

reboot

Контрольный список перед перезагрузкой

  • Убедиться, что /dev/md0 и /dev/md2 смонтированы и содержат корректные данные.
  • Проверить /etc/fstab и /etc/mtab на корректные устройства (/dev/md2, /dev/md0, /dev/md1).
  • Сохранить оригинальные initrd (mv сделал это) и конфигурации grub/menu.lst.
  • Удостовериться, что /etc/mdadm.conf содержит строки ARRAY для всех трёх md-устройств.
  • Проверить доступность второго диска и корректность разделов (fdisk -l).
  • Сделать резервную копию /boot и / файловой системы на внешний носитель при возможности.

План действий при ошибке загрузки (инцидентный откат)

  1. Если система не загружается с RAID: выберите в меню GRUB пункт с fallback (kernel с root=LABEL=/) и загрузитесь с него.
  2. Если GRUB не отображается или загрузка невозможна, загрузитесь с LiveCD/Rescue и смонтируйте /dev/sda1 и /dev/sda3 для диагностики.
  3. В среде восстановления проверьте /etc/fstab и /boot/grub/menu.lst — откатите изменения, если нужно.
  4. При необходимости восстановите оригинальные initrd: переименуйте /boot/initrd-.img_orig обратно.
  5. Если проблема в RAID — проверьте mdadm –examine и /proc/mdstat, восстановите недостающие члены массива.
  6. При критических проблемах — восстановите данные из резервной копии.

Решение — дерево принятия (Mermaid)

graph TD
  A[Перезагрузка после установки] --> B{Загрузился из /dev/md2?}
  B -- Да --> C[Проверить систему и синхронизировать массивы]
  B -- Нет --> D{Загрузился ли fallback 'LABEL=/'?}
  D -- Да --> E[Откатить или исправить конфигурации, проверить initrd]
  D -- Нет --> F[Загрузиться с RescueCD, проверить /boot, mdadm и GRUB]

Риски и меры смягчения

РискВероятностьВлияниеМеры смягчения
Неправильный /etc/fstab — система не загрузитсяСредняяВысокоеПровести dry-run и сохранить резервную копию /etc/fstab
Ошибка при установке GRUB — загрузка со старого дискаНизкаяСреднееУстановить GRUB на оба диска; проверить после установки
Потеря данных при копированииНизкаяВысокоеСделать полные бэкапы перед копированием
Деградация массива после добавления дискаСредняяСреднееМониторить /proc/mdstat и mdadm –detail

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

  • Система загружается с /dev/md2 и показывает корневую FS на md-устройстве.
  • /boot монтируется с /dev/md0.
  • swap активирован на /dev/md1.
  • mdadm.conf содержит все три ARRAY-строки с UUID.
  • GRUB установлен на обоих дисках, fallback работает.

Краткий словарь

  • mdadm — утилита для управления Linux RAID-массивами.
  • RAID1 — зеркалирование: один диск копирует другой для отказоустойчивости.
  • initrd — начальный RAM-диск, используется ядром на этапе загрузки.

Короткое объявление (для рассылки / change-log)

Подготовлен перенос загрузки и корневой файловой системы на RAID1. Созданы массивы /dev/md0 (boot), /dev/md1 (swap) и /dev/md2 (root), обновлены /etc/fstab, /etc/mdadm.conf и конфигурация GRUB. Загрузчик установлен на оба диска; настроен fallback. Рекомендуется проверить систему после перезагрузки и убедиться в синхронизации RAID.


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

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

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

Ошибка 0xc00000e9 — как исправить в Windows
Windows

Ошибка 0xc00000e9 — как исправить в Windows

Как объединить видео в VLC — пошаговое руководство
Видео

Как объединить видео в VLC — пошаговое руководство

Print Spooler не запущен — как восстановить печать
Windows

Print Spooler не запущен — как восстановить печать

Скрыть активность в Friends на Instagram
Конфиденциальность

Скрыть активность в Friends на Instagram

Переезд на RAID1 и установка GRUB
Системное администрирование

Переезд на RAID1 и установка GRUB

Установить Windows 11 25H2 — Release Preview
Windows

Установить Windows 11 25H2 — Release Preview