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

Установка GRUB и добавление /dev/sda в RAID1 на LVM

• 6 min read • DevOps • Обновлено 23 Nov 2025
GRUB и /dev/sda в RAID1 на LVM
GRUB и /dev/sda в RAID1 на LVM

Подготовка GRUB

Далее нужно установить загрузчик GRUB на второй жёсткий диск /dev/sdb. В оригинальной процедуре это выполняется из оболочки grub:

grub

В оболочке GRUB вводим следующие команды (сохраняйте точные команды и вывод — они важны для отладки):

root (hd0,0)

Вывод может выглядеть так:

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

Затем выполняем установку на первый BIOS-диск (hd0):

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)"...  15 sectors are embedded.  
succeeded  
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded  
Done.  
  
grub>

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

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)"...  15 sectors are embedded.  
succeeded  
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded  
Done.  
  
grub>

После установки в оболочке GRUB вводим:

quit

Теперь возвращаемся в обычную оболочку и перезагружаем систему, чтобы проверить успешность загрузки с RAID-массивов:

reboot

Важно: если машина — виртуальная или использует UEFI, процедура установки GRUB будет отличаться. Для UEFI требуется устанавливать grub-efi и работать с EFI-разделами (ESP). Эта инструкция применима для классических BIOS/legacy систем и для GRUB в версиях, где используется такой синтаксис.

Подготовка /dev/sda

Если всё прошло успешно, после перезагрузки вы должны увидеть /dev/md0 в выводе df -h:

df -h

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

server1:~# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/mapper/debian-root  
4.5G  709M  3.6G  17% /  
tmpfs                 126M     0  126M   0% /lib/init/rw  
udev                   10M   68K   10M   1% /dev  
tmpfs                 126M     0  126M   0% /dev/shm  
/dev/md0              236M   18M  206M   9% /boot  
server1:~#

Вывод команды cat /proc/mdstat должен показывать массивы RAID:

cat /proc/mdstat

Пример:

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 sda5[0] sdb5[1]  
4988032 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
248896 blocks [2/1] [_U]  
  
unused devices:   
server1:~#

Также ожидается, что LVM увидит физический том на /dev/md1 и покажет соответствующие VG/LV. Примеры вывода pvdisplay, vgdisplay и lvdisplay приведены ниже и должны соответствовать вашему окружению:

pvdisplay
server1:~# pvdisplay  
--- Physical volume ---  
PV Name               /dev/md1  
VG Name               debian  
PV Size               4.75 GB / not usable 0  
Allocatable           yes (but full)  
PE Size (KByte)       4096  
Total PE              1217  
Free PE               0  
Allocated PE          1217  
PV UUID               YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp  
  
server1:~#
vgdisplay
server1:~# vgdisplay  
--- Volume group ---  
VG Name               debian  
System ID  
Format                lvm2  
Metadata Areas        1  
Metadata Sequence No  9  
VG Access             read/write  
VG Status             resizable  
MAX LV                0  
Cur LV                2  
Open LV               2  
Max PV                0  
Cur PV                1  
Act PV                1  
VG Size               4.75 GB  
PE Size               4.00 MB  
Total PE              1217  
Alloc PE / Size       1217 / 4.75 GB  
Free  PE / Size       0 / 0  
VG UUID               j5BV1u-mQSa-Q0KW-PH4n-VHab-DB92-LyxFIU  
  
server1:~#
lvdisplay
server1:~# lvdisplay  
--- Logical volume ---  
LV Name                /dev/debian/root  
VG Name                debian  
LV UUID                BTAfBf-auQQ-wWC5-daFC-3qIe-gJU3-2j0UiG  
LV Write Access        read/write  
LV Status              available  
# open                 1  
LV Size                4.50 GB  
Current LE             1151  
Segments               1  
Allocation             inherit  
Read ahead sectors     0  
Block device           253:0  
  
--- Logical volume ---  
LV Name                /dev/debian/swap_1  
VG Name                debian  
LV UUID                Q3IVee-DhoD-Nd07-v9mR-CmsN-HAt8-1bDcP4  
LV Write Access        read/write  
LV Status              available  
# open                 2  
LV Size                264.00 MB  
Current LE             66  
Segments               1  
Allocation             inherit  
Read ahead sectors     0  
Block device           253:1  
  
server1:~#

Теперь нужно изменить тип раздела /dev/sda1 на Linux raid autodetect (код fd). Это делается через fdisk:

fdisk /dev/sda

Интерактивная сессия может выглядеть так (символы в угловых скобках — это ввод пользователя):

server1:~# fdisk /dev/sda  
  
Command (m for help): <- t  
Partition number (1-5): <- 1  
Hex code (type L to list codes): <- fd  
Changed system type of partition 1 to fd (Linux raid autodetect)  
  
Command (m for help): <- w  
The partition table has been altered!  
  
Calling ioctl() to re-read partition table.  
  
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.  
The kernel still uses the old table.  
The new table will be used at the next reboot.  
Syncing disks.  
server1:~#

После изменения типа раздела добавляем /dev/sda1 в RAID-массив /dev/md0:

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

И снова проверяем состояние mdstat:

cat /proc/mdstat

Ожидаемый результат после добавления:

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 sda5[0] sdb5[1]  
4988032 blocks [2/2] [UU]  
  
md0 : active raid1 sda1[0] sdb1[1]  
248896 blocks [2/2] [UU]  
  
unused devices:   
server1:~#

Далее обновляем /etc/mdadm/mdadm.conf, чтобы конфигурация соответствовала текущему состоянию массивов:

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

В файле /etc/mdadm/mdadm.conf вы увидите описание массивов, похожее на следующее (включая автоматическую запись ARRAY):

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, 18 Mar 2008 19:28:19 +0100  
# by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $  
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6fe4b95e:4ce1dcef:01b5209e:be9ff10a  
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa4ab7bb:df7ddb72:01b5209e:be9ff10a

После всех изменений перезагрузите систему ещё раз:

reboot

Если после перезагрузки система загружается без ошибок — задача выполнена: вы настроили программный RAID1 поверх LVM и установили GRUB на оба диска.

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

  • После перезагрузки /boot доступен и смонтирован с md0 (проверка df -h).
  • /proc/mdstat показывает все ожидаемые устройства как [UU] (оба диска в рабмассиве).
  • LVM отображает PV на /dev/md1 и показывает VG/LV без ошибок.
  • /etc/mdadm/mdadm.conf содержит актуальные ARRAY записи для /dev/md0 и /dev/md1.

Чек-лист для администратора

  • Сделать бэкап важных данных перед началом.
  • Убедиться, что загрузочная запись установлена на обоих дисках (GRUB).
  • Проверить состояние RAID до и после добавления диска (cat /proc/mdstat).
  • Обновить /etc/mdadm/mdadm.conf и перезагрузиться.
  • Проверить вывод pvdisplay/vgdisplay/lvdisplay.

Типичные проблемы и отладка

  1. Система не загружается после установки GRUB на второй диск:

    • Проверьте правильность указания root (hdX,Y) и наличие /grub/menu.lst или /boot/grub.
    • Убедитесь, что загрузочные секторы были записаны (проверка вывода setup).
    • Для UEFI используйте соответствующую установку grub-efi и ESP-раздел.
  2. Re-reading the partition table failed with error 16: Device or resource busy:

    • Это обычное предупреждение при изменении таблицы разделов на работающем диске. Новая таблица вступит в силу после перезагрузки.
    • Если требуется немедленное применение без перезагрузки, используйте partprobe или отключите и снова подключите устройство (опасно на production).
  3. RAID показывает состояние [U] или [U] (один диск отсутствует или деградировал):

    • Проверьте журнал dmesg и /var/log/syslog на предмет ошибок диска.
    • Используйте mdadm –detail /dev/md0 для получения детальной информации.
    • Если диск неисправен — замените его и выполните mdadm –add.
  4. После добавления /dev/sda1 массив не перестраивается автоматически:

    • Убедитесь, что раздел действительно имеет тип fd и что mdadm видит суперблоки.
    • Запустите mdadm –examine /dev/sda1 для диагностики.
    • Возможно, нужно вручную запустить перестроение: mdadm –grow –raid-devices=2 /dev/md0 –add /dev/sda1.

Быстрые команды диагностики (cheat sheet)

  • Просмотр состояния RAID: cat /proc/mdstat
  • Подробно по массиву: mdadm –detail /dev/md0
  • Найти суперблоки: mdadm –examine –scan
  • Добавить диск в массив: mdadm –add /dev/md0 /dev/sda1
  • Обновить конфиг: mdadm –examine –scan >> /etc/mdadm/mdadm.conf

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

  • Аппаратный RAID: если у вас контроллер с батарейным кэшем и мониторингом, аппаратный RAID упростит загрузку и может давать лучшую производительность и надёжность.
  • ZFS: вместо mdadm+LVM использовать ZFS как пул с зеркалированием и встроенным управлением дисками (требует иного подхода к управлению томами и загрузке).
  • LVM mirror: можно создать зеркалирование на уровне LVM, но это сложнее для загрузочного /boot и менее предпочтительно по сравнению с mdadm для /boot.

Когда этот метод не подходит

  • Если система использует UEFI и ожидается загрузка через EFI — используйте grub-efi и ESP, а не классический GRUB в MBR.
  • Если требуется горячая замена дисков без прерывания работы в условиях, где контроллер поддерживает аппаратный RAID — аппаратный RAID может быть предпочтительнее.

Инцидентный план (если RAID деградировал и система не загружается)

  1. Попытаться загрузиться с LiveCD/Rescue и проверить mdadm –assemble –scan.
  2. Если assemble не удаётся — проверить mdadm –examine на дисках, найти последний корректный superblock.
  3. При наличии корректного суперблока — mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1 (включая опцию –force в крайних случаях).
  4. Если /boot повреждён, восстановите GRUB с Live-системы: mount нужных разделов, chroot и grub-install на оба диска.
  5. После восстановления — проверка файловой целостности и при необходимости восстановление из бэкапа.

Краткая методология (шаги одной строкой)

  1. Установить GRUB на оба диска.
  2. Проверить, что /dev/md0 существует и /boot смонтирован.
  3. Изменить тип раздела /dev/sda1 на fd.
  4. Добавить /dev/sda1 в /dev/md0.
  5. Обновить /etc/mdadm/mdadm.conf и перезагрузиться.

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

  • mdadm — утилита для управления программными RAID-массивами Linux.
  • md0, md1 — устройства программного RAID (массивы).
  • LVM — Logical Volume Manager, уровень абстракции для томов поверх физических устройств.
  • PV/VG/LV — физический том / группа томов / логический том (LVM).

Безопасность и рекомендации

  • Всегда делайте бэкап перед изменением разделов и RAID-конфигурации.
  • Ограничьте доступ к /etc/mdadm/mdadm.conf и следите за уведомлениями MAILADDR в конфиге mdadm.
  • Тестируйте процедуру восстановления на тестовом стенде, прежде чем применять на production.

Краткое резюме

Вы установили GRUB на оба диска, убедились, что md0 и md1 корректно собраны, изменили тип раздела на /dev/sda и добавили его в массив md0. Обновили /etc/mdadm/mdadm.conf и перезагрузили систему. Проверяйте состояние mdstat и LVM после каждой критической операции.

Важно: для систем с UEFI или специфическими аппаратными конфигурациями используйте соответствующие инструменты (grub-efi, контроллеры RAID) — описанный способ ориентирован на классический BIOS и программный mdadm RAID1.

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