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

Миграция системы на RAID1 и подготовка GRUB2

• 6 min read • Linux • Обновлено 22 Nov 2025
Миграция на RAID1 и настройка GRUB2
Миграция на RAID1 и настройка GRUB2

Ключевые варианты запроса

  • миграция на RAID1
  • настройка RAID1 mdadm
  • GRUB2 и программный RAID
  • установка grub-install на оба диска
  • копирование / и /boot на /dev/mdX

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 сейчас нельзя добавить (система загружена с них), поэтому в командах используется placeholder 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

При выполнении каждой команды вы можете увидеть сообщение с предупреждением о метаданных в начале устройства; просто подтвердите (нажмите y) и продолжите. Пример вывода:

root@server1:~# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device.  If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? <-- y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
root@server1:~#

Проверьте статус массивов командой:

cat /proc/mdstat

Вы должны увидеть три деградированных массива; в статусе [U] или [U] означает, что массив деградирован (отсутствует диск), а [UU] — массив в порядке. Пример вывода:

root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1]
4241396 blocks super 1.2 [2/1] [_U]

md1 : active raid1 sdb2[1]
499700 blocks super 1.2 [2/1] [_U]

md0 : active raid1 sdb1[1]
498676 blocks super 1.2 [2/1] [_U]

unused devices: 
root@server1:~#

Далее создаём файловые системы: ext4 на /dev/md0 и /dev/md2, а /dev/md1 — как swap:

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

Важно: не меняйте типы файловых систем без понимания требований вашей системы — пример предназначен для Debian-подобных дистрибутивов.

Обновляем конфигурацию mdadm

Сохраните оригинал и добавьте текущие массивы в конфигурацию:

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

Просмотрите файл:

cat /etc/mdadm/mdadm.conf

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

| # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This file was auto-generated on Tue, 24 May 2011 14:09:09 +0200 # by mkconf 3.1.4-1+8efb9d1 ARRAY /dev/md/0 metadata=1.2 UUID=b40c3165:17089af7:5d5ee79b:8783491b name=server1.example.com:0 ARRAY /dev/md/1 metadata=1.2 UUID=62e4a606:878092a0:212209c5:c91b8fef name=server1.example.com:1 ARRAY /dev/md/2 metadata=1.2 UUID=94e51099:d8475c57:4ff1c60f:9488a09a name=server1.example.com:2 |

(Этот блок — пример содержимого; реальные UUID и таймстемпы будут отличаться.)


5 Подготовка системы к использованию RAID1

Смонтируем только файловые системы (swap монтировать не нужно):

mkdir /mnt/md0
mkdir /mnt/md2

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

Проверьте вывод mount — вы должны увидеть /dev/md0 и /dev/md2 в списке:

mount

Пример вывода (сокращённый):

root@server1:~# mount
/dev/sda3 on / type ext4 (rw,errors=remount-ro)
...
/dev/sda1 on /boot type ext4 (rw)
/dev/md0 on /mnt/md0 type ext4 (rw)
/dev/md2 on /mnt/md2 type ext4 (rw)
root@server1:~#

Редактируем /etc/fstab

Откройте /etc/fstab и закомментируйте старые UUID для /, /boot и swap; добавьте строки с устройствами /dev/md2 для /, /dev/md0 для /boot и /dev/md1 для swap.

vi /etc/fstab

Пример ожидаемого содержимого:

| # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # proc /proc proc defaults 0 0 # / was on /dev/sda3 during installation #UUID=e4e38871-0115-477d-94f9-34b079d26248 / ext4 errors=remount-ro 0 1 /dev/md2 / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation #UUID=7e2fb013-073e-4312-a669-f34b35069bfb /boot ext4 defaults 0 2 /dev/md0 /boot ext4 defaults 0 2 # swap was on /dev/sda2 during installation #UUID=1a5951f8-d0ab-4e0e-b42a-871f81b6fd82 none swap sw 0 0 /dev/md1 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |

Примечание: использование /dev/mdX вместо UUID упрощает загрузку при переходе на RAID1, так как GRUB будет ссылаться на md-устройство.

Обновление /etc/mtab

Замените упоминания /dev/sda1 и /dev/sda3 на /dev/md0 и /dev/md2 в /etc/mtab, чтобы текущая таблица монтирования отражала новые устройства:

vi /etc/mtab

Например:

| /dev/md2 / ext4 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 ... /dev/md0 /boot ext4 rw 0 0 /dev/md0 /mnt/md0 ext4 rw 0 0 /dev/md2 /mnt/md2 ext4 rw 0 0 |


Настройка GRUB2 для загрузки с RAID1

Создайте кастомный скрипт для GRUB, чтобы добавить stanza, указывающую на RAID /boot и корень системы.

cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
vi /etc/grub.d/09_swraid1_setup

Содержимое примера (не изменяйте строки с версиями ядра без проверки):

| #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os { insmod raid insmod mdraid insmod part_msdos insmod ext2 set root='(md/0)' echo 'Loading Linux 2.6.32-5-amd64 ...' linux /vmlinuz-2.6.32-5-amd64 root=/dev/md2 ro quiet echo 'Loading initial ramdisk ...' initrd /initrd.img-2.6.32-5-amd64 } |

Убедитесь, что в stanza указана корректная версия ядра (linux и initrd) — её можно узнать командой:

uname -r

Ключевая строка — set root=’(md/0)’ — она указывает GRUB искать /boot на RAID-массиве /dev/md0. Это важно: если один из физических дисков выйдет из строя, GRUB всё ещё сможет загрузиться с другого.

Поскольку при миграции вы не используете UUID в параметрах загрузки, откройте /etc/default/grub и отключите передачу root=UUID:

vi /etc/default/grub

Найдите и раскомментируйте:

GRUB_DISABLE_LINUX_UUID=true

Затем запишите конфигурацию GRUB:

update-grub

И обновите initramfs, чтобы он включал поддержку md и нужные модули:

update-initramfs -u

Копирование данных и установка загрузчика

Скопируйте содержимое текущего корня и /boot на новые md-устройства (смонтированные в /mnt/md2 и /mnt/md0):

cp -dpRx / /mnt/md2

cd /boot
cp -dpRx . /mnt/md0

Флаги cp: -d сохраняет символьные ссылки, -p сохраняет атрибуты, -R рекурсивно, -x не выходит за пределы текущей файловой системы.

6 Подготовка GRUB2 (шаг 1): установка на оба диска

Установите GRUB2 в MBR/EFI (в зависимости от вашей системы) обоих дисков, чтобы при выходе из строя одного диска система могла загрузиться с другого:

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

После этого перезагрузите систему и проверьте, что она загружается с RAID-массивов:

reboot

Важно: перед перезагрузкой убедитесь, что все шаги выполнены и что в /boot присутствуют файлы vmlinuz и initrd для используемого ядра.


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

  • Сделана резервная копия важных данных вне серверного диска.
  • Созданы md-массивы и созданы файловые системы.
  • /etc/mdadm/mdadm.conf обновлён и содержит записи ARRAY.
  • /etc/fstab заменён UUID на /dev/mdX для /, /boot и swap.
  • /etc/mtab обновлён (или перезагружён и проверен после монтирования).
  • /etc/grub.d/09_swraid1_setup проверен — корректный root=’(md/0)’ и версии ядра.
  • GRUB_DISABLE_LINUX_UUID=true включён в /etc/default/grub.
  • Выполнен update-grub и update-initramfs -u.
  • Копирование / и /boot завершено (cp -dpRx завершился без ошибок).
  • grub-install выполнен для обоих дисков.

Что может пойти не так — типичные проблемы и решения

  • Проблема: система не загружается после перезагрузки.

    • Проверить: правильно ли прописан set root=’(md/0)’ и существуют ли /vmlinuz- и initrd.img- в /boot (на /dev/md0).
    • Решение: загрузитесь с live-образа или rescue-консоли, смонтируйте /dev/md0 и /dev/md2 и проверьте файлы; переустановите grub-install на оба диска.
  • Проблема: массивы не собираются при старте.

    • Проверить: наличие записей ARRAY в /etc/mdadm/mdadm.conf; корректность mdadm –examine –scan вывода.
    • Решение: обновите initramfs; в initramfs должны быть модули md и конфигурация mdadm.
  • Проблема: GRUB не видит md/0 как устройство для загрузки.

    • Проверить: поддерживает ли версия GRUB модуль mdraid/raid; убедитесь, что в конфиге используются insmod raid и insmod mdraid.
    • Решение: собрать initramfs с поддержкой md, обновить пакеты grub и mdadm при необходимости.

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

  • Система успешно загружается после перезагрузки с отключением одного из дисков.
  • В /proc/mdstat массивы показывают статус [U_] или [_U] при симуляции отказа и затем [UU] при наличии двух дисков.
  • /boot и / корневой раздел монтируются с /dev/md0 и /dev/md2 соответственно.
  • При старте службы mdadm обнаруживает и собирает массивы автоматически.

Мини-методология (шаги высокого уровня)

  1. Подготовка: резервные копии и план отката.
  2. Создание md-массивов с placeholder missing для текущих дисков.
  3. Форматирование md-устройств и монтирование во временные точки.
  4. Обновление mdadm.conf и fstab, правка mtab.
  5. Подготовка GRUB (кастомный скрипт) и отключение UUID-параметра.
  6. Обновление initramfs, копирование данных и установка GRUB на оба диска.
  7. Тестирование и валидация.

Роли и задачи (краткий чеклист)

  • Системный администратор:
    • Создаёт и форматирует md-массивы, редактирует fstab и mdadm.conf, выполняет update-grub и update-initramfs.
  • Операционный инженер (On-call):
    • Тестирует восстановление при отказе диска; выполняет тесты загрузки и мониторинга mdarray.
  • Руководитель по безопасности:
    • Подтверждает, что доступ к конфигурационным файлам ограничен и выполнены политики резервного копирования.

Короткая галерея крайних случаев

  • Если у вас UEFI + GPT, grub-install должен устанавливать загрузчик в EFI System Partition (ESP) на обоих дисках; работа с EFI требует дополнительных шагов по синхронизации ESP на обоих дисках.
  • Если /boot слишком велик для встроенного в GRUB чтения (редкий случай), рассмотрите отдельный небольшой /boot без LVM/ шифрования.

Глоссарий (1 строка)

  • mdadm — утилита управления программными RAID-массивами в Linux; GRUB2 — загрузчик второй версии, поддерживает модули для md-устройств.

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

Конец статьи.

Поделиться: 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 быстро