converting running system to RAID-1
Jack Howarth
howarth at bromo.msbb.uc.edu
Fri Mar 24 15:43:07 UTC 2006
I haven't tried this protocol yet (we are waiting for a
second IDE card) but I believe this should work for setting converting
an existing FC5 IDE drive to RAID-1 on two IDE drives. Does anyone
see any potential glitches. The only part I am uncertain on is the
steps where I have to edit grub.conf. Specifically I am unclear on
the fallover mechanism in terms of which drive it will read from
/boot off of? Also I assume I need to edit grub.conf on the second
drive before I do the setup of it in grub. Oh, the current partitions
are...
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda3 40631988 12381336 26153368 33% /
/dev/hda1 101086 18244 77623 20% /boot
/dev/hda2 10154020 2568816 7061084 27% /opt
/dev/shm 515976 0 515976 0% /dev/shm
/dev/hda6 96443344 55721576 35743628 61% /home
/sbin/sfdisk -d /dev/hda
# partition table of /dev/hda
unit: sectors
/dev/hda1 : start= 63, size= 208782, Id=83, bootable
/dev/hda2 : start= 208845, size= 20964825, Id=83
/dev/hda3 : start= 21173670, size= 83891430, Id=83
/dev/hda4 : start=105065100, size=207511605, Id= 5
/dev/hda5 : start=105065163, size= 8385867, Id=82
/dev/hda6 : start=113451093, size=199125612, Id=83
------------------------------------------------------------------------------
As root AFTER second IDE drive install on second IDE channel (not slave!)
1) Recreate current kernel with raid1 module preloaded (this will happen automatically once root
partition is raid). NOTE: This step is essential and you can not upgrade your again kernel before
completing the remaining steps.
cd /boot
cp initrd-2.6.16-1.2069_FC5smp.img initrd-2.6.16-1.2069_FC5smp.img.sav
/sbin/mkinitrd -f --preload raid1 /boot/initrd-2.6.16-1.2069_FC5smp.img 2.6.16-1.2069_FC5smp
2) duplicate the partitions of the first drive onto the second drive
/sbin/sfdisk -d /dev/hda | /sbin/sfdisk /dev/hdc
3) verify the partitions are the same with
/sbin/sfdisk -l /dev/hda
/sbin/sfdisk -l /dev/hdc
4) change partition Id's on second drive to fd for software RAID
/sbin/parted /dev/hdc set 1 raid on
/sbin/parted /dev/hdc set 2 raid on
/sbin/parted /dev/hdc set 3 raid on
/sbin/parted /dev/hdc set 5 raid on
/sbin/parted /dev/hdc set 6 raid on
Note that we don't touch hdc4 since it is the extended partition.
Also hdc5 is swap.
5) use '/sbin/sfdisk -l /dev/hdc' to verify that we have changed the
Id for the paritions to fd.
6) Now reboot to make sure that partition table reloads. This boot will
be from /dev/hda.
7) Create the md devices with...
/sbin/mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/hdc1
/sbin/mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/hdc2
/sbin/mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/hdc3
/sbin/mdadm --create /dev/md3 --level 1 --raid-devices=2 missing /dev/hdc5
/sbin/mdadm --create /dev/md4 --level 1 --raid-devices=2 missing /dev/hdc6
8) Check the status of the arrays with 'cat /proc/mdstat'/ They should show
raid1 active with _U and hdc*.
9) Make the md filesystems...
/sbin/mkfs.ext3 /dev/md0
/sbin/mkfs.ext3 /dev/md1
/sbin/mkfs.ext3 /dev/md2
/sbin/mkfs.ext3 /dev/md4
10) Make the md swap
/sbin/mkswap /dev/md3
11) Now copy the data from each old partition to its matching md partition
mount /dev/md2 /mnt/
mkdir /mnt/boot
mount /dev/md0 /mnt/boot
mkdir /mnt/opt
mount /dev/md1 /mnt/opt
mkdir /mnt/home
mount /dev/md4 /mnt/home
cd /mnt
tar -C / -clspf - . | tar -xlspvf -
cd /mnt/boot
tar -C /boot -clspf - . | tar -xlspvf -
cd /mnt/opt
tar -C /opt -clspf - . | tar -xlspvf -
cd /mnt/home
tar -C /home -clspf - . | tar -xlspvf -
12) Now backup and edit /boot/grub/menu.lst to have the changes below.
Copy this over to /mnt/boot/grub just to be safe.
#boot=/dev/hda
#fallback to md2 on hdc
fallback 1
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.16-1.2069_FC5smp) from hda1 as md2
root (hd0,0)
kernel /vmlinuz-2.6.16-1.2069_FC5smp ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.16-1.2069_FC5smp.img
title Fedora Core (2.6.16-1.2069_FC5smp) from hdc1 as md2
root (hd1,0)
kernel /vmlinuz-2.6.16-1.2069_FC5smp ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.16-1.2069_FC5smp.img
13) Now edit /mnt/etc/fstab to have...
/dev/md2 / ext3 defaults 1 1
/dev/md0 /boot ext3 defaults 1 2
/dev/md1 /opt ext3 defaults 1 2
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
/dev/md4 /home ext3 defaults 1 2
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
/dev/md3 swap swap defaults 0 0
14) Now reboot
15) Once booted from the md partitions on hdc we must setup grub again. Edit
the /boot/grub/conf first to have the root partition set to /dev/md2 for
booting.
/sbin/grub
root (hd1,0)
setup (hd1)
quit
16) Reboot once more. This time you will come up with the boot loader off of thesecond (hdc) drive and not have to fallover to it
17) Now add missing slices using the partitions on the first drive...
/sbin/mdadm /dev/md0 -a /dev/hda1
/sbin/mdadm /dev/md1 -a /dev/hda2
/sbin/mdadm /dev/md2 -a /dev/hda3
/sbin/mdadm /dev/md3 -a /dev/hda5
/sbin/mdadm /dev/md4 -a /dev/hda6
18) Use mdstat to verify that the RAID is being built
cat /proc/mdstat
--------------------------------------------------------------------------------
Tnanks in advance for any comments or advice. Also we really should have this
documented somewhere for Fedora.
Jack
More information about the fedora-list
mailing list