Установка 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 приведены ниже и должны соответствовать вашему окружению:
pvdisplayserver1:~# 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:~#vgdisplayserver1:~# 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:~#lvdisplayserver1:~# 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.
Типичные проблемы и отладка
Система не загружается после установки GRUB на второй диск:
- Проверьте правильность указания root (hdX,Y) и наличие /grub/menu.lst или /boot/grub.
- Убедитесь, что загрузочные секторы были записаны (проверка вывода setup).
- Для UEFI используйте соответствующую установку grub-efi и ESP-раздел.
Re-reading the partition table failed with error 16: Device or resource busy:
- Это обычное предупреждение при изменении таблицы разделов на работающем диске. Новая таблица вступит в силу после перезагрузки.
- Если требуется немедленное применение без перезагрузки, используйте partprobe или отключите и снова подключите устройство (опасно на production).
RAID показывает состояние [U] или [U] (один диск отсутствует или деградировал):
- Проверьте журнал dmesg и /var/log/syslog на предмет ошибок диска.
- Используйте mdadm –detail /dev/md0 для получения детальной информации.
- Если диск неисправен — замените его и выполните mdadm –add.
После добавления /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 деградировал и система не загружается)
- Попытаться загрузиться с LiveCD/Rescue и проверить mdadm –assemble –scan.
- Если assemble не удаётся — проверить mdadm –examine на дисках, найти последний корректный superblock.
- При наличии корректного суперблока — mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1 (включая опцию –force в крайних случаях).
- Если /boot повреждён, восстановите GRUB с Live-системы: mount нужных разделов, chroot и grub-install на оба диска.
- После восстановления — проверка файловой целостности и при необходимости восстановление из бэкапа.
Краткая методология (шаги одной строкой)
- Установить GRUB на оба диска.
- Проверить, что /dev/md0 существует и /boot смонтирован.
- Изменить тип раздела /dev/sda1 на fd.
- Добавить /dev/sda1 в /dev/md0.
- Обновить /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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента