Переезд с одиночного диска на программный raid1 с увеличением ёмкости.

Оказывается, это совсем нетрудно.
1) Вставляется новый большой диск, размечается как надо (для простоты объяснения буду делать 3 партиции):
/dev/sdb1 - /boot (100M)
/dev/sdb2 - swap (2xRAM)>
/dev/sdb3 - / (всё остальное)
2) Создаются массивы:
mdadm --create --level=1 --raid-devices=2 /dev/md0 missing /dev/sdb1
mdadm --create --level=1 --raid-devices=2 /dev/md1 missing /dev/sdb2
mdadm --create --level=1 --raid-devices=2 /dev/md2 missing /dev/sdb3
3) Создаются FS:
mkfs.$FS /dev/md0
mkswap /dev/md1
mkfs.$FS /dev/md2
4) Монтируются вновь созданные FS:
mkdir /mnt/boot;mount /dev/md0 /mnt/boot
mkdir /mnt/root;mount /dev/md2 /mnt/root
5) Копируются данные (я использую rsync, очень и очень удобная утилита):
rsync -arx --delete / /mnt/root/
rsync -arx --delete /boot/ /mnt/boot/
6) делается chroot в скопированную систему (предварительно подмонтировав необходимое):
mount -o bind /dev /mnt/root/dev
mount -t proc none /mnt/root/proc
mount -t sysfs none /mnt/root/sys
chroot /mnt/root
mount /dev/md0 /boot
7) правится grub.conf примерно на следующее:
default=0 # по-умолчанию грузимся с 1-го диска
fallback=1 # если не получается, грузимся со второго
title Linux
        root (hd0,0)
        kernel /vmlinuz root=/dev/md2 md=2,/dev/sda3,/dev/sdb3 ro
        #initrd /initrd если используется
title Linux Fallback
        root (hd1,0)
        kernel /vmlinuz root=/dev/md2 md=2,/dev/sda3,/dev/sdb3 ro
        #initrd /initrd если используется
и ставим загрузчик на второй диск
grub-install /deb/sdb
Если используется initrd, то надо обязательно сделать "echo alias md-personality-3 raid1 >> /etc/modprobe.conf" (или не надо, так до сих пор и не понял, честно говоря) и перегенерировать initrd, чтобы в него добавился raid1.ko и запуск массива(rh и производные - mkinitrd, Debian и производные - update-initramfs). Правим /etc/fstab в chroot'е, исправляем /, /boot и swap на нужные массивы (md2, md0 и md1 для нашей ситуации соответственно) Выходим из chroot, отмонтируем обратно всё, что туда намонтировали:
umount /mnt/root/dev /mnt/root/proc /mnt/root/sys /mnt/root/boot /mnt/root /mnt/boot
и перезагружаемся.
Если при первой загрузке уже с массива что-то пошло не так, всегда можно загрузиться обратно с первого диска, нажав в grub с (командная строка) и ввести руками root, kernel и boot.
После успешной загрузки уже со второго диска вынимается первый диск и вместо него вставляется диск одинаковой ёмкости со вторым, он размечается также как второй:
sfdsk -d /dev/sdb | sfdisk /dev/sda
и его разделы добавляются к существующему массиву:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
Ставим загрузчик на него:
grub-install /dev/sda
и перегружаемся, чтобы выставить в биосе порядок загрузки с дисков, сначала с sda, потом с sdb.