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

Настройка RAID1 и загрузчика GRUB на Debian

• 4 min read • Системное администрирование • Обновлено 23 Nov 2025
Настройка RAID1 и GRUB на Debian
Настройка RAID1 и GRUB на Debian

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

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

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

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

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

Отредактируем /etc/mdadm/mdadm.conf — в нём ещё нет информации о новых массивах. Сохраним оригинал и добавим вывод mdadm –examine –scan в конец конфигурации:

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

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

cat /etc/mdadm/mdadm.conf

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

| # 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 Mon, 17 Aug 2009 16:38:27 +0200 # by mkconf $Id$ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=757afd26:543267ab:325ecf68:79913751 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=1e5f2139:0806d523:325ecf68:79913751 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=bc2dffb8:047b4ed5:325ecf68:79913751 |

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

Пример вывода, где видно оба массива:

server1:~# mount  
/dev/sda3 on / type ext3 (rw,errors=remount-ro)  
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)  
proc on /proc type proc (rw,noexec,nosuid,nodev)  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
udev on /dev type tmpfs (rw,mode=0755)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)  
/dev/sda1 on /boot type ext3 (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
/dev/md2 on /mnt/md2 type ext3 (rw)  
server1:~#

Отредактируем /etc/fstab: замените /dev/sda1 → /dev/md0, /dev/sda2 → /dev/md1, /dev/sda3 → /dev/md2, чтобы файл выглядел так:

vi /etc/fstab

| # /etc/fstab: static file system information. # # proc /proc proc defaults 0 0 /dev/md2 / ext3 errors=remount-ro 0 1 /dev/md0 /boot ext3 defaults 0 2 /dev/md1 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |

Далее — /etc/mtab: замените /dev/sda1 → /dev/md0 и /dev/sda3 → /dev/md2:

vi /etc/mtab

| /dev/md2 / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0 |

Настройка GRUB

Откроем /boot/grub/menu.lst и добавим строку fallback 1 сразу после default 0:

vi /boot/grub/menu.lst

| [...] default 0 fallback 1 [...] |

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

В том же файле внизу найдите секции с kernel-образами. Скопируйте первую секцию и вставьте её перед первой существующей. Вставленной записи замените root=/dev/sda3 → root=/dev/md2 и root (hd0,0) → root (hd1,0):

| [...] ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd1,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/md2 ro quiet initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/sda3 ro quiet initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/sda3 ro single initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-1-686 root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/sda3 ro quiet initrd /initrd.img-2.6.26-1-686 title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/sda3 ro single initrd /initrd.img-2.6.26-1-686 ### END DEBIAN AUTOMAGIC KERNELS LIST |

root (hd1,0) указывает на /dev/sdb, который уже участвует в RAID. После перезагрузки система попытается загрузиться с RAID-массивов; при сбое будет использован /dev/sda (fallback 1).

Обновим initramfs, чтобы он учитывал новые массивы:

update-initramfs -u

Скопируем данные с /dev/sda1 и /dev/sda3 в /dev/md0 и /dev/md2 (смонтированы в /mnt/md0 и /mnt/md2):

cp -dpRx / /mnt/md2
cd /boot  
cp -dpRx . /mnt/md0

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

Установим загрузчик GRUB на второй диск /dev/sdb:

grub

В GRUB shell выполните следующие команды (пример с выводом):

root (hd0,0)
grub> root (hd0,0)  
 Filesystem type is ext2fs, partition type 0x83
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)"...  17 sectors are embedded.  
succeeded  
 Running "install /grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded  
Done.  
  
grub>

Затем повторите для (hd1,0) и установите на (hd1):

root (hd1,0)
grub> root (hd1,0)  
 Filesystem type is ext2fs, partition type 0xfd  
  
grub>
setup (hd1)
grub> setup (hd1)  
 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 (hd1)"...  17 sectors are embedded.  
succeeded  
 Running "install /grub/stage1 (hd1) (hd1)1+17 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded  
Done.  
  
grub>

Завершите сессии:

quit

Вернитесь в обычную оболочку и перезагрузите систему:

reboot

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


Полезные советы и дополнительные материалы

Важно

  • Всегда делайте резервную копию важных данных перед операциями с разделами и загрузчиком.
  • Выполняйте команды от root или через sudo.
  • Проверьте, что у вас есть физический доступ к серверу или консоль KVM на случай проблем с загрузкой.

Когда этот подход не сработает

  • Если у вас нет второго физического диска, то RAID1 невозможен.
  • Если BIOS/UEFI не поддерживает загрузку с выбранного диска, GRUB может не загрузиться.
  • Если таблица разделов несовместима (например, GPT без поддержки), команды установки GRUB требуют других параметров.

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

  • Использовать LVM поверх RAID для гибкого управления логическими томами.
  • Использовать программный RAID другого уровня (RAID5, RAID10) в зависимости от требований к производительности и надёжности.
  • Применять загрузчик GRUB 2 (grub-install) вместо классического GRUB, если дистрибутив использует его по умолчанию.

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

  1. Создать массивы mdadm с placeholder для живых разделов.
  2. Создать файловые системы и swap.
  3. Обновить mdadm.conf и initramfs.
  4. Смонтировать массивы и скопировать данные.
  5. Настроить fstab/mtab и конфигурацию GRUB.
  6. Установить GRUB на оба диска и перезагрузиться.

Контрольный список по ролям

  • Администратор: создать массивы, обновить конфигурации, копировать данные.
  • Оператор: проверить вывод команд, следить за синхронизацией RAID.
  • Инженер по безопасности: проверить права на /etc/mdadm/mdadm.conf и /boot, убедиться в отсутствии несанкционированного доступа.

Модель принятия решения (flowchart)

flowchart TD
  A[Начало] --> B{Есть второй диск?}
  B -- Да --> C{Поддерживает ли BIOS загрузку с диска B?}
  B -- Нет --> Z[Использовать другой подход]
  C -- Да --> D[Создать RAID1 с missing]
  C -- Нет --> Z
  D --> E[Создать FS и swap]
  E --> F[Обновить mdadm.conf и initramfs]
  F --> G[Скопировать данные на md]
  G --> H[Установить GRUB на оба диска]
  H --> I[Перезагрузить и проверить]
  I --> J[Готово]

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

  • Система успешно загружается с RAID-массива (/dev/md2 как корневой).
  • /boot доступен на /dev/md0 и корректно примонтирован.
  • swap активирован на /dev/md1.
  • В /etc/mdadm/mdadm.conf перечислены массивы и UUID.

Резюме

  • Создано три RAID1-массива, подготовлены файловые системы.
  • Обновлены mdadm.conf, initramfs, fstab, mtab и конфигурация GRUB.
  • Установлен GRUB на оба диска и выполнена перезагрузка для проверки.
Поделиться: 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 быстро