Подготовка /dev/sda и GRUB2 для RAID1 на Debian Squeeze
TL;DR
Кратко: проверьте, что /dev/md0 и /dev/md2 доступны, смените типы разделов на /dev/sda на “Linux raid autodetect”, добавьте их в массивы mdadm, дождитесь завершения синхронизации, обновите /etc/mdadm/mdadm.conf, удалите устаревший скрипт GRUB и установите загрузчик на оба диска. В статье есть чек‑листы, команды для проверки и раздел с распространёнными проблемами.
7 Подготовка /dev/sda
Если всё прошло верно, в выводе команды df -h вы увидите /dev/md0 и /dev/md2:
df -hroot@server1:~#\u00a0df\u00a0-h
Filesystem\u00a0\u00a0\u00a0\u00a0\u000Size\u00a0\u00a0Used\u00a0Avail\u00a0Use%\u00a0Mounted\u00a0on
/dev/md2\u00a0\u00a0\u00a04.0G\u00a0\u00a0714M\u00a0\u00a03.1G\u00a019%\u00a0/
tmpfs\u00a0\u00a0\u00a0\u00a0249M\u00a0\u00a0\u00a00\u00a0\u00a0249M\u00a0\u00a0\u00a00%\u00a0/lib/init/rw
udev\u00a0\u00a0\u00a0\u00a0244M\u00a0\u00a0\u00a0132K\u00a0\u00a0244M\u00a0\u00a01%\u00a0/dev
tmpfs\u00a0\u00a0\u00a0\u00a0249M\u00a0\u00a0\u00a00\u00a0\u00a0249M\u00a0\u00a0\u00a00%\u00a0/dev/shm
/dev/md0\u00a0\u00a0\u00a0\u00a0472M\u00a0\u00a0\u0025M\u00a0\u00a0423M\u00a06%\u00a0/boot
root@server1:~#
Вывод команды cat /proc/mdstat должен показывать текущее состояние массивов:
cat /proc/mdstat
root@server1:~#\u00a0cat\u00a0/proc/mdstat
Personalities\u00a0:\u00a0[raid1]
md2\u00a0:\u00a0active\u00a0raid1\u00a0sdb3[1]
4241396\u00a0blocks\u00a0super\u00a01.2\u00a0[2/1]\u00a0[_U]
md1\u00a0:\u00a0active\u00a0(auto-read-only)\u00a0raid1\u00a0sdb2[1]
499700\u00a0blocks\u00a0super\u00a01.2\u00a0[2/1]\u00a0[_U]
md0\u00a0:\u00a0active\u00a0raid1\u00a0sdb1[1]
498676\u00a0blocks\u00a0super\u00a01.2\u00a0[2/1]\u00a0[_U]
unused\u00a0devices:\u00a0
root@server1:~# Теперь нужно изменить тип трёх разделов на /dev/sda на Linux raid autodetect. Запустите:
fdisk /dev/sdaПример интерактивной сессии fdisk (сохраните изменения командой w):
root@server1:~#\u00a0fdisk\u00a0/dev/sda
WARNING:\u00a0DOS-compatible\u00a0mode\u00a0is\u00a0deprecated.\u00a0It's\u00a0strongly\u00a0recommended\u00a0to
switch\u00a0off\u00a0the\u00a0mode\u00a0(command\u00a0'c')\u00a0and\u00a0change\u00a0display\u00a0units\u00a0to
sectors\u00a0(command\u00a0'u').
Command\u00a0(m\u00a0for\u00a0help): <--\u00a0t
Partition\u00a0number\u00a0(1-4): <--\u00a01
Hex\u00a0code\u00a0(type\u00a0L\u00a0to\u00a0list\u00a0codes): <--\u00a0fd
Changed\u00a0system\u00a0type\u00a0of\u00a0partition\u00a01\u00a0to\u00a0fd\u00a0(Linux\u00a0raid\u00a0autodetect)
Command\u00a0(m\u00a0for\u00a0help): <--\u00a0t
Partition\u00a0number\u00a0(1-4): <--\u00a02
Hex\u00a0code\u00a0(type\u00a0L\u00a0to\u00a0list\u00a0codes): <--\u00a0fd
Changed\u00a0system\u00a0type\u00a0of\u00a0partition\u00a02\u00a0to\u00a0fd\u00a0(Linux\u00a0raid\u00a0autodetect)
Command\u00a0(m\u00a0for\u00a0help): <--\u00a0t
Partition\u00a0number\u00a0(1-4): <--\u00a03
Hex\u00a0code\u00a0(type\u00a0L\u00a0to\u00a0list\u00a0codes): <--\u00a0fd
Changed\u00a0system\u00a0type\u00a0of\u00a0partition\u00a03\u00a0to\u00a0fd\u00a0(Linux\u00a0raid\u00a0autodetect)
Command\u00a0(m\u00a0for\u00a0help): <--\u00a0w
The\u00a0partition\u00a0table\u00a0has\u00a0been\u00a0altered!
Calling\u00a0ioctl()\u00a0to\u00a0re-read\u00a0partition\u00a0table.
Syncing\u00a0disks.
root@server1:~#После этого добавьте новые разделы в соответствующие RAID‑массивы:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3Проверка состояния синхронизации:
cat /proc/mdstatПример, где идёт восстановление:
root@server1:~#\u00a0cat\u00a0/proc/mdstat
Personalities\u00a0:\u00a0[raid1]
md2\u00a0:\u00a0active\u00a0raid1\u00a0sda3[2]\u00a0sdb3[1]
4241396\u00a0blocks\u00a0super\u00a01.2\u00a0[2/1]\u00a0[_U]
[==========>..........]\u00a0\u00a0recovery\u00a0=\u00a054.6%\u00a0(2319808/4241396)\u00a0finish=0.7min\u00a0speed=45058K/sec
md1\u00a0:\u00a0active\u00a0raid1\u00a0sda2[2]\u00a0sdb2[1]
499700\u00a0blocks\u00a0super\u00a01.2\u00a0[2/2]\u00a0[UU]
md0\u00a0:\u00a0active\u00a0raid1\u00a0sda1[2]\u00a0sdb1[1]
498676\u00a0blocks\u00a0super\u00a01.2\u00a0[2/2]\u00a0[UU]
unused\u00a0devices:\u00a0
root@server1:~# Совет: запустите watch cat /proc/mdstat для непрерывного обновления. Чтобы выйти, нажмите CTRL+C.
Дождитесь завершения синхронизации — в конце статус mdN должен показывать [UU] для каждого RAID1:
root@server1:~#\u00a0cat\u00a0/proc/mdstat
Personalities\u00a0:\u00a0[raid1]
md2\u00a0:\u00a0active\u00a0raid1\u00a0sda3[2]\u00a0sdb3[1]
4241396\u00a0blocks\u00a0super\u00a01.2\u00a0[2/2]\u00a0[UU]
md1\u00a0:\u00a0active\u00a0raid1\u00a0sda2[2]\u00a0sdb2[1]
499700\u00a0blocks\u00a0super\u00a01.2\u00a0[2/2]\u00a0[UU]
md0\u00a0:\u00a0active\u00a0raid1\u00a0sda1[2]\u00a0sdb1[1]
498676\u00a0blocks\u00a0super\u00a01.2\u00a0[2/2]\u00a0[UU]
unused\u00a0devices:\u00a0
root@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. Пример:
# 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 8 Подготовка GRUB2
Удалите устаревший скрипт /etc/grub.d/09_swraid1_setup (он больше не нужен при корректно собранном grub.cfg):
rm -f /etc/grub.d/09_swraid1_setupОбновите конфигурацию GRUB и initramfs:
update-grub
update-initramfs -uПроверьте /boot/grub/grub.cfg: в секциях ### BEGIN /etc/grub.d/10_linux ### записи menuentry должны ссылаться на /dev/md0 вместо (hd0) или (hd1). После этого установите GRUB на оба диска, чтобы система могла загрузиться и при потере одного из дисков:
grub-install /dev/sda
grub-install /dev/sdbПерезагрузите сервер:
rebootСистема должна загрузиться нормально.
Важно: убедитесь, что вы устанавливаете загрузчик в запись MBR (для BIOS) на обоих дисках. На системах с UEFI процедура отличается — используйте grub-efi и ESP.
Контрольные команды и наблюдение
- df -h — проверить подключённые файловые системы
- cat /proc/mdstat — текущее состояние RAID и прогресс синхронизации
- mdadm –detail /dev/mdX — подробная информация по массиву
- mdadm –examine /dev/sdXY — посмотреть суперблок на разделе
- watch cat /proc/mdstat — следить за прогрессом в реальном времени
Распространённые проблемы и способы решения
- Синхронизация не стартует или массив остаётся в состоянии [_U]:
- Проверьте, что вы добавили правильный раздел: mdadm –examine /dev/sda3
- Если суперблоки конфликтуют, рассмотрите mdadm –zero-superblock /dev/sdXn перед повторным добавлением.
- Используйте mdadm –add –force /dev/mdX /dev/sdXn лишь при явной необходимости.
- grub-install завершился с ошибкой:
- Для BIOS: попробуйте grub-install –recheck /dev/sda
- Если вы находитесь в chroot (например, от live‑CD), убедитесь, что /proc, /sys и /dev смонтированы в chroot и что /boot присутствует.
- Для UEFI: установите grub-efi и убедитесь, что размер и содержимое ESP корректны; используйте efibootmgr для управления записями.
- После перезагрузки система не поднимается с RAID:
- Загрузитесь с живого носителя, соберите массивы: mdadm –assemble –scan
- Проверьте /etc/mdadm/mdadm.conf и /boot/grub/grub.cfg, обновите initramfs: update-initramfs -u
- Переустановите GRUB на оба диска.
Когда это не подойдёт
- На системах с UEFI (GPT) используется другой набор команд и ESP; grub-install для UEFI отличается.
- Если корневая система использует LVM поверх RAID, дополнительные шаги требуются (активация томов LVM перед монтированием).
- NVMe‑диски имеют именование /dev/nvme0n1p1 — учитывайте это при работе с разделами.
Альтернативные подходы
- Аппаратный RAID контроллер — удерживает RAID вне ОС, но лишает гибкости mdadm и переносимости.
- Использовать файловые инструменты резервного копирования и зеркалирование на уровне файлов (rsync) вместо RAID1 — полезно при разных требованиях к отказоустойчивости.
- ZFS/RAIDZ как альтернатива: предоставляет контроль целостности, снимки и другие возможности, но требует иной модели управления.
Краткая методология (минимум шагов)
- Подтвердите работу текущих md‑устройств (cat /proc/mdstat).
- Измените типы разделов на втором диске (fdisk /dev/sda -> type fd).
- Добавьте разделы в массивы (mdadm –add).
- Дождитесь синхронизации (watch cat /proc/mdstat).
- Обновите mdadm.conf и initramfs.
- Установите GRUB на оба диска.
- Перезагрузите и проверьте загрузку с обоих дисков по очереди при необходимости.
Чек-лист для ролей
Системный администратор:
- Проверить конфигурацию /etc/mdadm/mdadm.conf.
- Убедиться в наличии backup конфигов и копий важных данных перед изменениями.
- Установить GRUB на оба диска и проверить загрузку.
Оператор/инженер смены:
- Наблюдать за синхронизацией mdstat.
- Документировать время и скорость ресинхронизации.
- Проверить состояние массивов после перезагрузки.
Диаграмма принятия решения при проблемах с загрузкой
flowchart TD
A[Сервер не загружается] --> B{Доступен ли rescue/boot media?}
B -- Нет --> Z[Свяжитесь с поддержкой/физическим доступом]
B -- Да --> C[Загрузиться в rescue]
C --> D[mdadm --assemble --scan]
D --> E{MD устройства активны?}
E -- Нет --> F[Проверить суперблоки и логи]
E -- Да --> G[Переустановить GRUB на оба диска]
G --> H[Обновить initramfs]
H --> I[Перезагрузить и проверить]Глоссарий (1 строка)
- mdadm — утилита для управления ПО RAID в Linux.
- RAID1 — зеркалирование данных между дисками для отказоустойчивости.
- /proc/mdstat — виртуальный файл с текущим статусом md‑массивов.
- mdadm.conf — конфигурационный файл с описанием массивов для автоподключения.
- grub-install — команда установки загрузчика GRUB на устройство.
Итог
- После добавления разделов /dev/sdaN в массивы дождитесь завершения синхронизации и обновите mdadm.conf.
- Удалите /etc/grub.d/09_swraid1_setup, обновите grub и установите его на оба диска.
- Проверьте загрузку и имейте план восстановления для UEFI или сложных конфигураций (LVM, ZFS и т.д.).
Примечание: выполняйте операции с разделами и установкой загрузчика с учётом особенностей вашей системы (BIOS/UEFI, GPT/MBR, LVM/ZFS).
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента