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

Настройка /dev/sda и GRUB для RAID1

• 4 min read • Системное администрирование • Обновлено 23 Nov 2025
Настройка /dev/sda и GRUB для RAID1
Настройка /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 -h
server1:~# 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/mdstat
server1:~# 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 # instruct the monitoring daemon where to send mail alerts MAILADDR root # This file was auto-generated on Mon, 26 Nov 2007 21:22:04 +0100 # by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=72d23d35:35d103e3:2b3d68b9:a903a704 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a50c4299:9e19f9e4:2b3d68b9:a903a704 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=99fee3a5:ae381162:2b3d68b9:a903a704 |

Подготовка 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.

Анимация процесса синхронизации RAID

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

  • 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)

  1. Сделать резервную копию конфигураций.
  2. Изменить типы разделов на /dev/sda через fdisk.
  3. Добавить разделы в mdadm и наблюдать за /proc/mdstat.
  4. Обновить mdadm.conf и GRUB.
  5. Обновить initramfs и перезагрузить.
  6. Проверить критерии приёмки.

Простая схема принятия решения

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, а также держите копии конфигурационных файлов перед изменениями.

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