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

Настройка /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
Автор
Редакция

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

Просмотреть и удалить диагностические данные Windows 10
Конфиденциальность

Просмотреть и удалить диагностические данные Windows 10

Автоматическое копирование файлов в Windows 11
Windows

Автоматическое копирование файлов в Windows 11

Оффлайн‑обновление Ubuntu через USB
Linux

Оффлайн‑обновление Ubuntu через USB

Добавить место в фото Google Photos на Android
Фото

Добавить место в фото Google Photos на Android

Как включить субтитры на Shudder
How-to

Как включить субтитры на Shudder

Как защитить смартфон и финансовые данные
Кибербезопасность

Как защитить смартфон и финансовые данные