Настройка /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).
- Система успешно загружается после перезагрузки без вмешательства.
Чеклист администратора (шаги)
- Подключитесь как root.
- Проверить текущие массивы: cat /proc/mdstat и df -h.
- fdisk /dev/sda — поменять тип разделов 1,2,3 на fd.
- mdadm –add для sda1, sda2, sda3.
- watch cat /proc/mdstat — дождаться [UU] для всех массивов.
- mdadm –examine –scan > /etc/mdadm.conf.
- Отредактировать /boot/grub/menu.lst: добавить копию записи с hd0; закомментировать лишние строки.
- mv/initrd, mkinitrd, reboot.
- Проверить загрузку и логи (dmesg, /var/log/messages).
Частые ошибки и способы их устранения
- Неправильный тип раздела: проверьте fdisk -l /dev/sda и убедитесь, что код fd применён.
- mdadm не видит устройство: проверьте, не заблокирован ли диск, и что в /proc/partitions видно sda1..sda3.
- initrd не содержит md-модулей: пересоздайте initrd и проверьте список модулей внутри (chroot + lsinitrd или распаковать образ).
- GRUB указывает только на один диск: всегда держите запись с обоими hd0 и hd1.
Быстрый сценарий отката (если загрузка не удалась)
- Загрузитесь с LiveCD или rescue-режима.
- Смонтируйте /boot и / (если нужны) и проверьте /etc/mdadm.conf.
- Восстановите оригинальный initrd из /boot/initrd-
uname -r
.img_orig2. - Верните старый menu.lst из резервной копии.
- Перезагрузитесь.
Модель принятия решения (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
.imguname -r
Важно: всегда держите резервную копию /boot/menu.lst (или grub.conf) и initrd перед изменениями.
Похожие материалы

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

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

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

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

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