Пишу по памяти, кое-что мог забыть.
Дано:
Шаги:
1. Инсталлируемся на первый HDD (/dev/sda), причем он должен иметь наименьший размер из двух доступных.
2. Создаем такие же разделы с такими же размерами на втором HDD:
3. Запускаем fdisk /dev/sdb и проставляем всем разделам тип FD (Linux RAID Auto)
4. Создаем на каждом разделе degraded md RAID1 (нумерацию удобно начинать с единицы, по номерам разделов на HDD):
и т.д.
NB: -b internal включает отслеживание использования блоков на массиве, т.е. при ресинхронизации массива будет синкаться не весь массив целиком, а только блоки с данными.
5. Создаем на каждом массиве нужную файловую систему:
и т.д.
NB: для достижения более высокой производительности можно использовать опцию mkfs.ext3 -E stride=, т.е. подогнать ФС под размер страйпа. stride=stripe/block-size. Т.е. в нашем случае это 64/4=16
См. http://wiki.centos.org/HowTos/Disk_Optimization
6. Судя по всему, swap тоже нужно создавать на raid-массиве:
7. Инсталлируем grub (нынешнее lilo тоже умеет загрузку с raid)
8. Создаем новый образ initrd:
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, rsync и т.д), не забыл пропустить /proc и /sys (но создав их в новом root). Пример с rsync:
Предполагается, что у нас на отдельные разделы вынесены /, /usr, /var. Применён ключ -x у rsync, чтобы он не выходил за границы одной файловой системы. Полезно, т.к. у нас могут быть примонтированы разные левые ресурсы куда-нибудь в /mnt, и ещё используются bind-mounts.
Для уменьшения downtime системы можно выполнить такой rsync два раза – на живой системе и потом перейдя в init 1
11. Делаем chroot /mnt/raid1/root
12. Правим /etc/fstab, изменяя все разделы /dev/sdaX на массивы /dev/mdX
13. Создаем в #/boot/grub/menu.lst## записи вида:
14. Инсталлируем grub.
15. Отмонтируем все и перегружается. Если все правильно, то вы должны загрузиться с md raid1 массивов, которые пока располагаются на втором HDD
16. Если все работает, то запускаем fdisk /dev/sda и проставляем всем разделам тип FD (Linux RAID Auto)
17. Далее делаем для каждого raid-массива:
и т.д.
18. После этого регулярно поглядываем в /proc/mdstat, нам нужно дождаться, когда ядро синхронизирует все массивы (при этом в /proc/mdstat исчезнут все упоминания о прогрессе синхронизации)
19. Перегружаемся и, если все хорошо, прописываем в /etc/mdadm.conf что-то вроде:
и т.д.
20. Включаем сервис mdadm
21. Пробуем отключить каждый HDD по очереди и загрузиться.
Это, похоже, уже не актуально:
p.s. В некоторых случаях устройства /dev/md* будут не доступны. В данном случае могут помочь:
и/или
FIXME
How to speed up raid1 resync ?
Just echo large numbers into both min and max resync speed proc entries:
/proc/sys/dev/raid/spped_limit_max and speed_limit_min
e.g. as root do:
echo 200000 > /proc/sys/dev/raid/speed_limit_max
echo 200000 > /proc/sys/dev/raid/speed_limit_min
And watch the speed fly up till it maxes out your hardware. (-:
The above will set both speeds to 200MiB/s which ought to be more than
your devices can do...