Creating RAID1 with mdadm
This example has two physical disks, /dev/sda and /dev/sdb, which are identical. Partition the first with your favourite partitioning tool. Example partitions of a 1TiB disk follow, set each raid partition to fd
root@host # sfdisk -l /dev/sda Disk /dev/sda: 121601 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 * 0+ 15 16- 128488+ fd Linux raid autodetect /dev/sda2 16 139 124 996030 82 Linux swap / Solaris /dev/sda3 140 121600 121461 975635482+ fd Linux raid autodetect /dev/sda4 0 - 0 0 0 Empty
There /dev/sda1 is 128MiB partition for boot and /dev/sda3 is for root, sda2 is for swap.
Then copy the partition table to the second disk
root@host # sfdisk -d /dev/sda | sfdisk /dev/sdb
Now the disks look exatly the same, first partition will be bound together for /boot, thrid partition will be bound toegether for /. Second Partitions will be created as two balanced swap areas.
Tune the settings for mdadm to (hopefully) speed up the sync. Then join the two raid partitions together, then wait for them to sync.
If you have data on one of the partitions then list that one first!
In the examples below data on sda
will be preserved, data on sdb
will be lost.
root@host # echo 50000 > /proc/sys/dev/raid/speed_limit_min root@host # echo 5000000 > /proc/sys/dev/raid/speed_limit_max root@host # mdadm --create /dev/md/0 --level=1 --metadata=1.0 --raid-devices=2 /dev/sda1 /dev/sdb1 root@host # mdadm --create /dev/md/1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3 root@host # watch cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sdb3[1] sda3[0] 975635350 blocks super 1.1 [2/2] [UU] [>....................] resync = 3.4% (34107584/975635350) finish=142.5min speed=110115K/sec md0 : active raid1 sdb1[1] sda1[0] 128480 blocks super 1.1 [2/2] [UU] resync=DELAYED unused devices: <none>
Writing mdadm.conf
root@host # mdadm --detail --scan >> /etc/mdadm.conf
Installing Bootloader
Our favourite is extlinux.
root@host # dd if=/usr/share/syslinux/mbr.bin of=/dev/sda root@host # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb root@host # mkfs -t ext2 -L'boot' /dev/md0 root@host # mount /dev/md0 /mnt/boot root@host # extlinux --install /mnt/boot/ root@host # nano -w /mnt/boot/extlinux.conf root@host # cat /mnt/boot/extlinux.conf DEFAULT praxis-2010.19 DISPLAY extlinux.msg PROMPT 1 TIMEOUT 50 LABEL praxis-2010.19 KERNEL kernel-genkernel-x86_64-2.6.31-gentoo-r6 INITRD initramfs-genkernel-x86_64-2.6.31-gentoo-r6 APPEND root=/dev/md1
Repairing RAID1
Starting an RAID1 device in degraded mode, so we can mount and copy files out.
root@host # mdadm --build /dev/md2 --level=1 --raid-devices=2 /dev/sdc3 missing root@host # mount -t ext3 /dev/md2 /mnt/failed-raid