Настройка /dev/sda и GRUB для RAID1
TL;DR
Коротко: поменяйте типы разделов на /dev/sda на «Linux raid autodetect», добавьте /dev/sda1–3 в соответствующие массивы mdadm, дождитесь синхронизации, обновите /etc/mdadm/mdadm.conf, затем скорректируйте конфигурацию GRUB, обновите initramfs и перезагрузите систему. Проверяйте состояние через df -h и /proc/mdstat.
Важное: изменения таблицы разделов применяются после перезагрузки — это ожидаемое поведение, если fdisk не смог перечитать таблицу (ошибка 16).
Подготовка /dev/sda — что вы должны увидеть сначала
Если всё сделано правильно, в выводе должно присутствовать /dev/md0 и /dev/md2:
df -hserver1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 4.4G 730M 3.4G 18% /
tmpfs 126M 0 126M 0% /lib/init/rw
udev 10M 68K 10M 1% /dev
tmpfs 126M 0 126M 0% /dev/shm
/dev/md0 137M 17M 114M 13% /boot
server1:~#А вывод /proc/mdstat должен примерно соответствовать этому состоянию (до добавления /dev/sda):
cat /proc/mdstatserver1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
4594496 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
497920 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
144448 blocks [2/1] [_U]
unused devices:
server1:~# Изменение типа разделов на /dev/sda
Нужно установить тип трёх разделов /dev/sda в fd (Linux raid autodetect). Для этого используйте fdisk:
fdisk /dev/sdaПример интерактивной сессии:
server1:~# fdisk /dev/sda
Command (m for help): <-- t
Partition number (1-4): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): <-- t
Partition number (1-4): <-- 2
Hex code (type L to list codes): <-- fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): <-- t
Partition number (1-4): <-- 3
Hex code (type L to list codes): <-- fd
Changed system type of partition 3 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:~#Примечание: сообщение об ошибке 16 (Device or resource busy) нормально, если разделы заняты; изменения вступят в силу после перезагрузки. См. раздел «Критерии приёмки» для контроля.
Добавление разделов /dev/sda в массивы RAID
Добавьте новые разделы в соответствующие массивы md:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3Проверьте прогресс синхронизации:
cat /proc/mdstatВы увидите процесс восстановления (recovery):
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
4594496 blocks [2/1] [_U]
[=====>...............] recovery = 29.7% (1367040/4594496) finish=0.6min speed=85440K/sec
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 blocks [2/2] [UU]
unused devices:
server1:~# Совет: запустите watch для непрерывного обновления статуса:
watch cat /proc/mdstatНажмите CTRL+C, чтобы выйти из watch.
Дождитесь окончания синхронизации — финальный статус будет выглядеть так:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
4594496 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 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Пример содержимого (пример автоматически сгенерированного файла):
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 |
Подготовка GRUB (шаг 2)
Осталось убедиться, что загрузчик сможет загрузиться с обоих дисков. Откройте /boot/grub/menu.lst и скорректируйте stanza ядра, чтобы была копия для hd0 и hd1.
vi /boot/grub/menu.lstПример: скопируйте первую секцию (hd1) и вставьте её ниже, заменив hd1 на hd0. Закомментируйте все остальные неподходящие заголовки, чтобы осталось примерно следующее:
[...]
## ## End Default Options ##
title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd1)
root (hd1,0)
kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro
initrd /initrd.img-2.6.18-4-486
savedefault
title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd0)
root (hd0,0)
kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro
initrd /initrd.img-2.6.18-4-486
savedefault
#title Debian GNU/Linux, kernel 2.6.18-4-486
#root (hd0,0)
#kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro
#initrd /initrd.img-2.6.18-4-486
#savedefault
#title Debian GNU/Linux, kernel 2.6.18-4-486 (single-user mode)
#root (hd0,0)
#kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro single
#initrd /initrd.img-2.6.18-4-486
#savedefault
### END DEBIAN AUTOMAGIC KERNELS LISTВ том же файле найдите строку kopt и убедитесь, что путь указывает на /dev/md2 (строка может быть закомментирована — не снимайте #):
[...]
# kopt=root=/dev/md2 ro
[...]Обновление ramdisk и перезагрузка
Обновите initramfs, чтобы загрузочное окружение знало о RAID:
update-initramfs -uЗатем перезагрузите систему:
rebootСистема должна корректно загрузиться с нового GRUB-конфига и с массивом RAID1.

Критерии приёмки
- df -h показывает /dev/md0 и /dev/md2, как смонтированные разделы (/boot и /).
- cat /proc/mdstat показывает для всех mdX статус [UU] (оба диска в массиве).
- /etc/mdadm/mdadm.conf содержит строки ARRAY для всех mdX.
- GRUB содержит идентичные stanza для hd0 и hd1 и kopt указывает на /dev/md2.
- Система проходит полную перезагрузку и загружается без ошибок.
Контрольный чек‑лист (роль: системный администратор)
- Сделан бэкап /etc/mdadm/mdadm.conf и /boot/grub/menu.lst
- Проверено текущее состояние md (cat /proc/mdstat)
- Изменены типы разделов на /dev/sda на fd
- Добавлены /dev/sda1–3 в mdadm
- Дождались полной синхронизации массивов
- Обновлён /etc/mdadm/mdadm.conf
- Обновлён /boot/grub/menu.lst (hd0/hd1)
- Выполнен update-initramfs -u
- Перезагрузка и проверка
Когда это может не сработать (контр‑пример)
- Если второй диск физически повреждён или отсутствует, добавление /dev/sdaX не будет работать; сначала устраните аппаратную проблему.
- Если на разделе /dev/sda уже есть активная файловая система, команды mdadm –add могут не сработать — предварительно проверьте содержимое разделов.
- Если у вас нестандартный загрузчик (например, GRUB2 с другой конфигурацией), инструкции для /boot/grub/menu.lst не применимы — адаптируйте под вашу версию GRUB.
Альтернативные подходы
- Использовать GRUB2 и его конфигурацию (grub.cfg / update-grub) вместо редактирования старого menu.lst.
- Настроить автоматическую установку загрузчика на оба диска (grub-install /dev/sda и /dev/sdb) для дополнительной устойчивости.
- Виртуальная машина: сделать снимок (snapshot) перед изменениями.
Быстрая методология (mini‑SOP)
- Сделать резервную копию конфигураций.
- Изменить типы разделов на /dev/sda через fdisk.
- Добавить разделы в mdadm и наблюдать за /proc/mdstat.
- Обновить mdadm.conf и GRUB.
- Обновить initramfs и перезагрузить.
- Проверить критерии приёмки.
Простая схема принятия решения
flowchart TD
A[Готовность системы?] -->|Да| B{Есть ли резервные копии?}
A -->|Нет| Z[Создать бэкап]
B -->|Да| C[Изменить типы разделов fd]
B -->|Нет| Z
C --> D[Добавить /dev/sda1-3 в mdadm]
D --> E{Синхронизация прошла успешно?}
E -->|Да| F[Обновить mdadm.conf и GRUB]
E -->|Нет| Y[Проверить логи и состояние дисков]
F --> G[update-initramfs -u и reboot]
G --> H[Проверить загрузку и /proc/mdstat]Короткий словарь (1‑строчка)
- mdadm — инструмент для управления программными RAID‑массивами в Linux; fd — утилита работы с таблицей разделов; initramfs — начальный образ файловой системы для загрузки.
Итог
Вы изменили типы разделов на /dev/sda, добавили их в RAID1, дождались полной синхронизации, обновили конфигурацию mdadm, подготовили GRUB для загрузки с обоих дисков, обновили initramfs и успешно перезагрузили систему. Проверяйте статусы с помощью df -h и cat /proc/mdstat, а также держите копии конфигурационных файлов перед изменениями.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента