Перенос системы на RAID1

Всем привет!
Хотелось бы поделиться опытом переноса рабочей системы с одного диска на RAID1.
Оговорка: Статья не претендует на руководство. Это то, что работает у меня и результат которого хотел добиться получился.

Итак, имеем:
OpenBSD4.8
wd0 - на нем в данный момент стоит система
wd1 - диск под RAID1
wd2 - диск под RAID1

Подготавливаем диски:

mail:~#fdisk -iy wd1
Writing MBR at offset 0.
mail:~#fdisk -iy wd2
Writing MBR at offset 0.

Разбиваем оба диска:

mail:~#disklabel -E wd1
Label editor (enter '?' for help at any prompt)
> p g
OpenBSD area: 0-0; size: 0.0G; free: 0.0G
# size offset fstype [fsize bsize cpg]
a: 0.5G 64 4.2BSD 2048 16384 1
c: 465.8G 0 unused
e: 465.3G 1060288 RAID

Так как ядро пока не поддерживает загрузку с softraid мы поместим ядро на раздел "а" я сделал его 512М, хотя можно и намного меньше, например 64М, для ядра это более чем достаточно.
Остальное место отводим для RAID.

Создаем файловую систему под ядро, все делаем идентично, при выходе из строя одного из дисков система все равно должна грузиться:

mail:~#newfs /dev/rwd1a
/dev/rwd1a: 517.7MB in 1060224 sectors of 512 bytes
4 cylinder groups of 129.42MB, 8283 blocks, 16640 inodes each
super-block backups (for fsck -b #) at:
32, 265088, 530144, 795200,

mail:~#newfs /dev/rwd2a
/dev/rwd2a: 517.7MB in 1060224 sectors of 512 bytes
4 cylinder groups of 129.42MB, 8283 blocks, 16640 inodes each
super-block backups (for fsck -b #) at:
32, 265088, 530144, 795200,

собираем ядро, здесь нам необходимо указать ядру, где расположен root раздел, если необходимо swap:
Качаем:
mail:~#ftp http://mirror.corbina.net/pub/OpenBSD/4.8/sys.tar.gz
mail:~#cd /usr/src/; tar -zxf /root/sys.tar.gz

В конфиге необходимо поправить строчку:
config bsd root on sd0a swap on sd0b

Собираем ядро:
mail:/usr/src/sys/arch/i386/conf#cd ../compile/GENERIC/; make depend && make && make install

Копируем то, что недавно собрали. Делаем диски загрузочными:
mail:~#mount /dev/wd1a /mnt/
mail:~#cp /usr/mdec/boot /mnt/boot
mail:~#/usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot wd1
boot: /mnt/boot proto: /usr/mdec/biosboot device: /dev/rwd1c
/mnt/boot is 3 blocks x 16384 bytes
fs block shift 2; part offset 64; inode block 24, offset 1064
using MBR partition 3: type 0xA6 offset 64
mail:~#umount /mnt/

mail:~#mount /dev/wd2a /mnt/
mail:~#cp /usr/mdec/boot /mnt/boot
mail:~#/usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot wd2
boot: /mnt/boot proto: /usr/mdec/biosboot device: /dev/rwd2c
/mnt/boot is 3 blocks x 16384 bytes
fs block shift 2; part offset 64; inode block 24, offset 1064
using MBR partition 3: type 0xA6 offset 64
mail:~#umount /mnt/

создаем RAID:
bioctl -c 1 -l /dev/wd1e,/dev/wd2e softraid0

проверяем:
mail:~#bioctl sd0
Volume Status Size Device
softraid0 0 Online 499562111488 sd0 RAID1
0 Online 499562111488 0:0.0 noencl
1 Online 499562111488 0:1.0 noencl

создаем разделы на RAID:
> p g
OpenBSD area: 0-975707250; size: 465.3G; free: 0.0G
# size offset fstype [fsize bsize cpg]
a: 3.3G 0 4.2BSD 2048 16384 1
b: 2.0G 6924000 swap
c: 465.3G 0 unused
d: 195.0G 11116992 4.2BSD 4096 32768 1
e: 5.0G 420067584 4.2BSD 2048 16384 1
f: 10.0G 430541984 4.2BSD 2048 16384 1
g: 250.0G 451506816 4.2BSD 4096 32768 1
> w
> q

создаем файловую систему:
newfs /dev/rsd0a
newfs /dev/rsd0d
newfs /dev/rsd0e
newfs /dev/rsd0f
newfs /dev/rsd0g

Все готово, осталось только перенести систему.
Перед этим желательно прибить все рабочие процессы.

Переносим, это может занять некоторое количество времени:
mount /dev/sd0a /mnt
(cd /; tar -Xcpf - .) | (cd /mnt; tar -xpf -)
tar: Ustar cannot archive a socket ./dev/log
umount /mnt

mount /dev/sd0d /mnt
(cd /home; tar -cpf - .) | (cd /mnt; tar -xpf -)
umount /mnt

mount /dev/sd0f /mnt
(cd /usr; tar -cpf - .) | (cd /mnt; tar -xpf -)
umount /mnt

mount /dev/sd0g /mnt
(cd /var; tar -cpf - .) | (cd /mnt; tar -xpf -)
tar: Ustar cannot archive a socket ./cron/tabs/.sock
tar: Ustar cannot archive a socket ./empty/dev/log
umount /mnt

правим fstab
mount /dev/sd0a /mnt
sed 's/wd0/sd0/g' /etc/fstab > /mnt/etc/fstab
umount /mnt

Выключаемся, вынимаем старый диск, пробуем загрузиться. В идеале все должно получиться :).
После загрузки проверяем:
mail:~#bioctl sd0
Volume Status Size Device
softraid0 0 Online 499562111488 sd0 RAID1
0 Online 499562111488 0:0.0 noencl
1 Online 499562111488 0:1.0 noencl

mail:~#mount
/dev/sd0a on / type ffs (local)
/dev/sd0d on /home type ffs (local, nodev, nosuid)
/dev/sd0e on /tmp type ffs (local, nodev, nosuid)
/dev/sd0f on /usr type ffs (local, nodev)
/dev/sd0g on /var type ffs (local, nodev, nosuid)

Все готово.
Если хотите можете попробовать убрать один из жёстких дисков из системы и попробовать загрузиться. Потом вставить его обратно и восстановить RAID, так же обращаю внимание если диск будет новый, то будет необходимо скопировать с рабочего bsd и сделать его загрузочным, это так же актуально если вы хотите добавить убрать функционал из ядра.

Я пробовал восстанавливать свой RAID который состоял из 2х дисков по 320G, на все это ушло около 6-8 часов, так что придется запастись терпением, но в любом случае это лучше чем остаться без рабочей системы.

Так же мне очень помогла статья http://www.iniy.org/?p=98