Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/admin/CreateMdRAID1onLiveSystem ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/admin/CreateMdRAID1onLiveSystem за 2006-09-12 21:18:19..

Создание загрузочного программного RAID1 с помощью средств ядра 2.6 на работающей системе

Пишу по памяти, кое-что мог забыть.


Дано:
* Два HDD
* Необходимость создания md RAID1
* Инсталлятор, который не умеет создавать и ставиться на md RAID (текущий от Compact-а, к примеру)
* Ядро 2.6 и Sisyphus


Шаги:
1. Инсталлируемся на первый HDD (/dev/sda), причем он должен иметь наименьший размер из двух доступных
2. Создаем такие же разделы с такими же размерами на втором HDD:
sfdisk -d /dev/sda | sfdisk /dev/sdb
3. Запускаем fdisk /dev/sdb и проставляем всем разделам тип FD (Linux RAID Auto)
4. Создаем на каждом разделе degraded md RAID1 (нумерацию удобно начинать с единицы, по номерам разделов на HDD):
mdadm -Cv /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb1
и т.д.
5. Создаем на каждом массиве нужную файловую систему:
mkfs.ext3 /dev/md1
и т.д.
6. Судя по всему, swap тоже нужно создавать на raid-массиве:
mkswap /dev/mdX
7. Инсталлируем grub (т.к. lilo невозможно завести в таком режиме сейчас)
8. Создаем новый образ initrd:
mkinitrd --with-raid --with raid1 /boot/initrd-`uname -r`-raid1.img `uname -r`
9. Монтируем новый root (который /dev/mdX) куда-нибудь в /mnt/raid1/root, создаем в нем нужные каталоги из нашего текущего корня, далее в них монтируем новые разделы, если такие есть (то бишь, создаем /mnt/raid1/root/var, к нему монтируем какой-нибудь /dev/md6, уже после этого создаем /mnt/raid1/root/var/log и к нему уже монтируем какой-нибудь /dev/md7)
10. Копируем все файлы с текущего HDD на новый (способов много, cp -ax, cpio и т.д), не забыл пропустить /proc и /sys (но создав их в новом root)
11. Делаем chroot /mnt/raid1/root
12. Правим /etc/fstab, изменяя все разделы /dev/sdaX на массивы /dev/mdX
13. Создаем в /boot/grub/menu.lst записи вида:


# Boot automatically after 3 secs.
timeout 3


# By default, boot the first entry.
default 2614-vs26-smp-raid1 (hd0,0)


title 2614-vs26-smp-raid1 (hd0,0)
root (hd0,0)
kernel (hd0,0)/vmlinuz-2.6.14-vs26-smp-alt5 root=/dev/md2 vga=normal
initrd (hd0,0)/initrd-2.6.14-vs26-smp-alt5-raid1.img


title 2614-vs26-smp-raid1 (hd1,0)
root (hd1,0)
kernel (hd1,0)/vmlinuz-2.6.14-vs26-smp-alt5 root=/dev/md2 vga=normal
initrd (hd1,0)/initrd-2.6.14-vs26-smp-alt5-raid1.img


14. Запускаем grub, он долго думает, потом выкидывает нас в свой shell
15. Пишем такие команды (при условии, что у вас /dev/sda и /dev/sdb):
grub>device (hd0) /dev/sda
grub>root (hd0,0) # (0 – это тот раздел, где у вас /boot, обычно /dev/sdX1, в grub-е просто нумерация с 0)
grub>setup (hd0)


grub>device (hd0) /dev/sdb
grub>root (hd0,0)
grub>setup (hd0)


16. Отмонтируем все и перегружается. Если все правильно, то вы должны загрузиться с md raid1 массивов, которые пока располагаются на втором HDD
17. Если все работает, то запускаем fdisk /dev/sda и проставляем всем разделам тип FD (Linux RAID Auto)
18. Далее делаем для каждого raid-массива:
mdadm /dev/md1 --add /dev/sda1
и т.д.
19. После этого регулярно поглядываем в /proc/mdstat, нам нужно дождаться, когда ядро синхронизирует все массивы (при этом в /proc/mdstat исчезнут все упоминания о прогрессе синхронизации)
20. Перегружаемся и, если все хорошо, прописываем в /etc/mdadm.conf что-то вроде:


MAILADDR root
PROGRAM /usr/sbin/mdadm-syslog-events
DEVICE partitions
ARRAY /dev/md1 devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md2 devices=/dev/sda2,/dev/sdb2


и т.д.


21. Включаем сервис mdadm
22. Пробуем отключить каждый HDD по очереди и загрузиться.


p.s. В некоторых случаях устройства /dev/md* будут не доступны. В данном случае могут помочь:
* service udevd stop
и/или
* /lib/mkinitd/busybox raidautorun /dev/mdX


 
Файлов нет. [Показать файлы/форму]
Много комментариев (2). [Показать комментарии/форму]