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

Настройка /dev/sda и GRUB для программного RAID1 на Fedora 8

4 min read Системное администрирование Обновлено 01 Oct 2025
Подготовка /dev/sda и GRUB для RAID1 на Fedora 8
Подготовка /dev/sda и GRUB для RAID1 на Fedora 8

Кратко: поменяйте типы разделов на /dev/sda на “Linux raid autodetect”, добавьте их в массивы mdadm, дождитесь синхронизации, обновите /etc/mdadm.conf и исправьте записи GRUB, чтобы система могла загрузиться с любого диска. В конце перестройте initrd и перезагрузитесь.

Введение

Этот шаг описывает, как подготовить второй диск /dev/sda для зеркалирования уже работающих RAID-массивов (/dev/md0, /dev/md1, /dev/md2) и как обновить конфигурацию загрузчика GRUB, чтобы система могла загружаться с любого из дисков. Предполагается, что у вас уже есть активные массивы на /dev/sdb и что вы выполняете действия под root.

Коротко: “Linux raid autodetect” — тип раздела, отмечающий раздел как часть md-RAID. mdadm — утилита управления программным RAID в Linux.

Подготовка /dev/sda

После успешного создания массивов вы должны увидеть /dev/md0 и /dev/md2 в выводе команды df -h:

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              4.4G  2.4G  1.8G  58% /  
/dev/md0               99M   15M   80M  16% /boot  
tmpfs                 185M     0  185M   0% /dev/shm  
[root@server1 ~]#

Вывод cat /proc/mdstat должен выглядеть примерно так:

cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1]  
      104320 blocks [2/1] [_U]  
  
md1 : active raid1 sdb2[1]  
      513984 blocks [2/1] [_U]  
  
md2 : active raid1 sdb3[1]  
      4618560 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Теперь измените типы трёх разделов на /dev/sda на “Linux raid autodetect”. Запустите fdisk для /dev/sda:

fdisk /dev/sda

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

[root@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!

Выход fdisk покажет применение изменений и перечитывание таблицы разделов:

Calling ioctl() to re-read partition table.  
Syncing disks.  
[root@server1 ~]#

После этого добавьте новые разделы /dev/sda1, /dev/sda2 и /dev/sda3 в соответствующие RAID-массивы:

mdadm --add /dev/md0 /dev/sda1  
mdadm --add /dev/md1 /dev/sda2  
mdadm --add /dev/md2 /dev/sda3

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

cat /proc/mdstat

Вы должны увидеть, что массивы синхронизируются, например:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0] sdb1[1]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[2] sdb3[1]  
      4618560 blocks [2/1] [_U]  
      [=====>...............]  recovery = 29.9% (1384256/4618560) finish=2.3min speed=22626K/sec  
  
unused devices:   
[root@server1 ~]#

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

watch cat /proc/mdstat

Чтобы выйти из watch, нажмите CTRL+C.

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

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0] sdb1[1]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[0] sdb3[1]  
      4618560 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

После завершения синхронизации обновите файл /etc/mdadm.conf, чтобы он содержал актуальные UUID массивов:

mdadm --examine --scan > /etc/mdadm.conf

Пример содержимого /etc/mdadm.conf (вывод cat /etc/mdadm.conf):

| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49 |

Важно: проверьте, что в /etc/mdadm.conf перечислены все актуальные массивы. Без этого initrd может не собрать драйверы правильно при загрузке.

Подготовка GRUB (часть 2)

Оставалось настроить GRUB так, чтобы система могла загрузиться с любого из дисков (sda или sdb). Откройте /boot/grub/menu.lst (или grub.conf) в текстовом редакторе:

vi /boot/grub/menu.lst

В вашей текущей конфигурации записи указывают root (hd1,0), то есть на /dev/sdb. Скопируйте первую секцию kernel/initrd и замените hd1 на hd0 в копии. Закомментируйте остальные записи ядра, чтобы остались только две одинаковые секции: одна с hd1, вторая с hd0. Пример результата:

| # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img #title Fedora (2.6.23.1-42.fc8) # root (hd0,0) # kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet # initrd /initrd-2.6.23.1-42.fc8.img |

После редактирования обновите initrd для текущего ядра и сохраните оригинал:

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

Затем перезагрузите систему:

reboot

Система должна корректно загрузиться с нового загрузочного конфига. Если загрузка заканчивается ошибкой, загрузитесь с rescue-режима и проверьте /etc/mdadm.conf, наличие модулей raid в initrd и правильность записей root (hd0/hd1) в menu.lst.

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

  • В выводе df -h видны /dev/md0 и /dev/md2.
  • В /proc/mdstat все массивы показывают статус [UU] после синхронизации.
  • /etc/mdadm.conf содержит все актуальные ARRAY записи с UUID.
  • GRUB содержит две записи ядра: одну с root (hd1,0) и одну с root (hd0,0).
  • Система успешно загружается после перезагрузки без вмешательства.

Чеклист администратора (шаги)

  1. Подключитесь как root.
  2. Проверить текущие массивы: cat /proc/mdstat и df -h.
  3. fdisk /dev/sda — поменять тип разделов 1,2,3 на fd.
  4. mdadm –add для sda1, sda2, sda3.
  5. watch cat /proc/mdstat — дождаться [UU] для всех массивов.
  6. mdadm –examine –scan > /etc/mdadm.conf.
  7. Отредактировать /boot/grub/menu.lst: добавить копию записи с hd0; закомментировать лишние строки.
  8. mv/initrd, mkinitrd, reboot.
  9. Проверить загрузку и логи (dmesg, /var/log/messages).

Частые ошибки и способы их устранения

  • Неправильный тип раздела: проверьте fdisk -l /dev/sda и убедитесь, что код fd применён.
  • mdadm не видит устройство: проверьте, не заблокирован ли диск, и что в /proc/partitions видно sda1..sda3.
  • initrd не содержит md-модулей: пересоздайте initrd и проверьте список модулей внутри (chroot + lsinitrd или распаковать образ).
  • GRUB указывает только на один диск: всегда держите запись с обоими hd0 и hd1.

Быстрый сценарий отката (если загрузка не удалась)

  1. Загрузитесь с LiveCD или rescue-режима.
  2. Смонтируйте /boot и / (если нужны) и проверьте /etc/mdadm.conf.
  3. Восстановите оригинальный initrd из /boot/initrd-uname -r.img_orig2.
  4. Верните старый menu.lst из резервной копии.
  5. Перезагрузитесь.

Модель принятия решения (Mermaid)

flowchart TD
  A[Начать: проверка массивов] --> B{mdstat показывает [UU]?}
  B -- Да --> C[Обновить /etc/mdadm.conf]
  B -- Нет --> D[Добавить разделы на sda и ждать синхронизации]
  D --> B
  C --> E[Обновить GRUB: добавить запись для hd0]
  E --> F[Пересоздать initrd]
  F --> G[Перезагрузить и проверить загрузку]
  G --> H{Успешно загрузился?}
  H -- Да --> I[Готово]
  H -- Нет --> J[Откат: восстановить initrd и menu.lst]

Итог

Вы успешно подготовили /dev/sda для зеркалирования уже существующих md-массивов и настроили GRUB так, чтобы система могла загружаться с любого из дисков. После перезагрузки убедитесь, что все массивы активны и что /etc/mdadm.conf содержит правильные UUID.

Полезные команды для быстрого доступа:

  • Просмотр статуса RAID: cat /proc/mdstat
  • Добавление устройства в массив: mdadm –add /dev/mdX /dev/sdY
  • Сканирование массива: mdadm –examine –scan
  • Пересоздание initrd: mkinitrd /boot/initrd-uname -r.img uname -r

Важно: всегда держите резервную копию /boot/menu.lst (или grub.conf) и initrd перед изменениями.

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

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

Как ускорить Safari на Mac
Mac

Как ускорить Safari на Mac

Умное зеркало за цену смартфона — сборка и детали
Гаджеты

Умное зеркало за цену смартфона — сборка и детали

Защита от атак через вредоносную рекламу
Кибербезопасность

Защита от атак через вредоносную рекламу

Как использовать DISM для восстановления Windows 11
Windows

Как использовать DISM для восстановления Windows 11

Исправить 0x800f0905 при удалении KB5063878
Windows 11

Исправить 0x800f0905 при удалении KB5063878

Включить защиту от вымогателей в Windows 11
Безопасность

Включить защиту от вымогателей в Windows 11