Ubuntu 12.04 – Add RAID 1 Array on existing device

raidraid-1software-raidUbuntu

I read How can I add a RAID 1 array in Ubuntu 10.04 and Installing Raid 1 on Existing Ubuntu Server. However, I only have the following 2 hard drives:

dev/sdb1 where Ubuntu 12.04 is currently running

dev/sda1 empty disk

I want to create a RAID on these two hard drives, but I don't want to delete the sdb1 partition because Ubuntu is working fine.

How can I create a RAID on existing device?

I performed

mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sda1

Then

 mkfs -t ext2 /dev/md0 

And I run

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf 

Then I change boot to md0 in grub2

menuentry 'Ubuntu, with Linux 3.2.0-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(md0)'
        search --no-floppy --fs-uuid --set=root 8fff7794-a156-46d2-92f8-4931d42abf36
        linux   /vmlinuz-3.2.0-23-generic root=/dev/mapper/ubuntu--server-root ro
        initrd  /initrd.img-3.2.0-23-generic
}

But, when I want to add

mdadm --manage /dev/md0 -a /dev/sdb1

I always get

mdadm: Cannot open /dev/sdb1: Device or resource busy

Best Answer

Create a new RAID1 array with a "missing" device using the following in a terminal (may have to employ the sudo command):

# mdadm --create /dev/md0 -n 2 -l 1 /dev/sda1 missing

You'll be able to move all the data onto /dev/md0, boot with that, then add /dev/hdb1 into the mirror:

# mdadm --manage /dev/md0 -a /dev/hdb1

Backup your data first and get familiar with mdadm and software RAID on Linux to avoid shooting yourself in the foot.

Related Question