Настройка 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 |
5 Перенастройка системы под RAID1
Смонтируем /dev/md0 и /dev/md2 (swap /dev/md1 монтировать не нужно):
mkdir /mnt/md0
mkdir /mnt/md2mount /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. # # |
Далее — /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/md2cd /boot
cp -dpRx . /mnt/md06 Подготовка GRUB (часть 1)
Установим загрузчик GRUB на второй диск /dev/sdb:
grubВ GRUB shell выполните следующие команды (пример с выводом):
root (hd0,0)grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83setup (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, если дистрибутив использует его по умолчанию.
Мини-методология (шаги высокого уровня)
- Создать массивы mdadm с placeholder для живых разделов.
- Создать файловые системы и swap.
- Обновить mdadm.conf и initramfs.
- Смонтировать массивы и скопировать данные.
- Настроить fstab/mtab и конфигурацию GRUB.
- Установить 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 на оба диска и выполнена перезагрузка для проверки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента