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

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

3 min read Системное администрирование Обновлено 17 Oct 2025
RAID1 — подготовка /dev/hda и GRUB
RAID1 — подготовка /dev/hda и GRUB

Контекст и цель

В этом руководстве показано, как подготовить диск /dev/hda и загрузчик GRUB на работающей системе с уже настроенным RAID1 на /dev/hdb, чтобы получить полное зеркалирование (mdadm RAID1) и возможность загрузки при отказе одного из дисков.

Проверка текущего состояния

Если всё прошло успешно, в выводе команды df -h вы должны увидеть /dev/md0 и /dev/md2:

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              4.4G  757M  3.4G  18% /  
/dev/md0              167M  9.0M  150M   6% /boot  
[root@server1 ~]#

Вывод /proc/mdstat должен выглядеть так:

cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hdb5[1]  
      417536 blocks [2/1] [_U]  
  
md0 : active raid1 hdb1[1]  
      176576 blocks [2/1] [_U]  
  
md2 : active raid1 hdb6[1]  
      4642688 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

1. Изменение типа разделов на /dev/hda

Необходимо изменить тип трёх разделов на /dev/hda на «Linux raid autodetect» (hex-код fd):

fdisk /dev/hda

Пример интерактивной сессии (сохраните вывод для отчётности при необходимости):

[root@server1 ~]# fdisk /dev/hda  
  
Command (m for help): <-- t  
Partition number (1-6): <-- 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-6): <-- 5  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 5 to fd (Linux raid autodetect)  
  
Command (m for help): <-- t  
Partition number (1-6): <-- 6  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 6 to fd (Linux raid autodetect)  
  
Command (m for help): <-- w  
The partition table has been altered!  
  
Calling ioctl() to re-read partition table.  
Syncing disks.  
[root@server1 ~]#

Важно: убедитесь, что вы изменяете правильный диск. Ошибка здесь приведёт к потере доступа к данным.

2. Добавление разделов в массивы mdadm

Добавьте соответствующие разделы /dev/hda в нужные массивы:

mdadm --add /dev/md0 /dev/hda1
mdadm --add /dev/md1 /dev/hda5
mdadm --add /dev/md2 /dev/hda6

Проверьте состояние синхронизации:

cat /proc/mdstat

Ожидаемый вывод во время синхронизации:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hda5[2] hdb5[1]  
      417536 blocks [2/1] [_U]  
        resync=DELAYED  
  
md0 : active raid1 hda1[0] hdb1[1]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hda6[2] hdb6[1]  
      4642688 blocks [2/1] [_U]  
      [======>..............]  recovery = 34.4% (1597504/4642688) finish=1.0min speed=50349K/sec  
  
unused devices:   
[root@server1 ~]#

Совет: чтобы наблюдать процесс в реальном времени, используйте:

watch cat /proc/mdstat

Для выхода из watch нажмите CTRL+C.

Дождитесь завершения синхронизации — итоговый вывод должен показать [UU] для всех массивов:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hda5[0] hdb5[1]  
      417536 blocks [2/2] [UU]  
  
md0 : active raid1 hda1[0] hdb1[1]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hda6[0] hdb6[1]  
      4642688 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

3. Обновление /etc/mdadm.conf

Скопируйте оригинальный конфиг и добавьте текущие массивы, сгенерированные mdadm:

cp -f /etc/mdadm.conf_orig /etc/mdadm.conf
mdadm --examine --scan >> /etc/mdadm.conf

/ect/mdadm.conf может выглядеть примерно так:

| # mdadm configuration file # # mdadm will function properly without the use of a configuration file, # but this file is useful for keeping track of arrays and member disks. # In general, a mdadm.conf file is created, and updated, after arrays # are created. This is the opposite behavior of /etc/raidtab which is # created prior to array construction. # # # the config file takes two types of lines: # # DEVICE lines specify a list of devices of where to look for # potential member disks # # ARRAY lines specify information about how to identify arrays so # so that they can be activated # # You can have more than one device line and use wild cards. The first # example includes SCSI the first partition of SCSI disks /dev/sdb, # /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second # line looks for array slices on IDE disks. # #DEVICE /dev/sd[bcdjkl]1 #DEVICE /dev/hda1 /dev/hdb1 # # If you mount devfs on /dev, then a suitable way to list all devices is: #DEVICE /dev/discs/*/* # # # # ARRAY lines specify an array to assemble and a method of identification. # Arrays can currently be identified by using a UUID, superblock minor number, # or a listing of devices. # # super-minor is usually the minor number of the metadevice # UUID is the Universally Unique Identifier for the array # Each can be obtained using # # mdadm -D # #ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 #ARRAY /dev/md1 super-minor=1 #ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1 # # ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor # will then move a spare between arrays in a spare-group if one array has a failed # drive but no spare #ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 #ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 # # When used in --follow (aka --monitor) mode, mdadm needs a # mail address and/or a program. This can be given with "mailaddr" # and "program" lines to that monitoring can be started using # mdadm --follow --scan & echo $! > /var/run/mdadm # If the lines are not found, mdadm will exit quietly #MAILADDR [email protected] #PROGRAM /usr/sbin/handle-mdadm-events ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6b4f013f:6fe18719:5904a9bd:70e9cee6 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=63194e2e:c656857a:3237a906:0616f49e ARRAY /dev/md2 level=raid1 num-devices=2 UUID=edec7105:62700dc0:643e9917:176563a7 |

4. Настройка GRUB (завершение)

Отредактируйте /boot/grub/menu.lst: в нём есть stanza с загрузкой с /dev/hdb (hd1,0). Скопируйте первую (рабочую) запись, вставьте её ниже и замените hd1 на hd0, чтобы GRUB мог загружаться с обоих дисков. Закомментируйте остальные строки, если они конфликтуют.

vi /boot/grub/menu.lst

Пример нужной конфигурации:

| timeout 10 color black/cyan yellow/cyan default 0 fallback 1 title linux kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd1,0)/initrd.img title linux kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd0,0)/initrd.img #title linux #kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6 resume=/dev/hda5 #initrd (hd0,0)/initrd.img #title failsafe #kernel (hd0,0)/vmlinuz BOOT_IMAGE=failsafe root=/dev/hda6 failsafe #initrd (hd0,0)/initrd.img |

После этого обновите ramdisk и перезагрузитесь:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
reboot

Система должна загрузиться нормально с зеркала RAID1.

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

  • Все массивы md (md0, md1, md2) показывают [UU] в /proc/mdstat.
  • /etc/mdadm.conf содержит строки ARRAY для всех массивов.
  • GRUB содержит рабочие записи для загрузки с hd0 и hd1.
  • При отключении одного диска система корректно загружается с другого.

Чеклист оператора

  • Сделать резервную копию важных данных перед началом.
  • Убедиться, что /dev/hdb уже является зеркалом и работает.
  • Изменить типы разделов на /dev/hda (fd).
  • Добавить разделы в mdadm через –add.
  • Дождаться синхронизации (watch cat /proc/mdstat).
  • Обновить /etc/mdadm.conf командой mdadm –examine –scan.
  • Обновить /boot/grub/menu.lst для загрузки с обоих дисков.
  • Пересобрать initrd и перезагрузить систему.

Частые проблемы и когда это не сработает

  • Неправильный выбор диска (ошибка в /dev/hda vs /dev/hdb) приведёт к повреждению данных — внимательно проверяйте устройства.
  • Если метаданные RAID отсутствуют или повреждены, mdadm может не корректно собрать массив — используйте mdadm –examine для диагностики.
  • При аппаратных ограничениях загрузчик может не видеть второй диск; в этом случае проверяйте BIOS/UEFI и порядок загрузки.

Шпаргалка команд

  • Проверка дисков и массивов: cat /proc/mdstat; mdadm -D /dev/md0
  • Добавление: mdadm –add /dev/mdX /dev/sdY
  • Сканирование для mdadm.conf: mdadm –examine –scan >> /etc/mdadm.conf
  • Наблюдение за синхронизацией: watch cat /proc/mdstat

Итог

Вы добавили разделы /dev/hda в существующие RAID1-массивы, дождались синхронизации, обновили конфигурацию mdadm и настроили GRUB для загрузки с зеркала. После перезагрузки система должна корректно загружаться даже при выходе из строя одного из дисков.

Важно: всегда делайте резервные копии и проверяйте, что у вас есть доступ к консоли/физическому серийному порту на случай проблем с загрузкой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

ONLYOFFICE: установка через Docker
Инструкции

ONLYOFFICE: установка через Docker

Куда сохранять приложения Microsoft Store
Windows

Куда сохранять приложения Microsoft Store

Добавить Facebook Chat в Сообщения на Mac
Руководство

Добавить Facebook Chat в Сообщения на Mac

Исправить DNS_PROBE_FINISHED_BAD_CONFIG быстро
Сеть

Исправить DNS_PROBE_FINISHED_BAD_CONFIG быстро

Как стримить Netflix в Discord — полный гайд
Руководство

Как стримить Netflix в Discord — полный гайд

Отключить уведомления Get Office в Windows 10
Windows

Отключить уведомления Get Office в Windows 10