Home Posts


Upgrading a RAID-1 array...in only a week

750GB hard disks have been at the $/GB sweet spot for a while now, and now that they’ve hit $100, I decided to upgrade my home directory RAID-1 from 250GB to 750GB. I really dread these upgrades, as there’s always a chance you can really screw things up. So, for when I upgrade to 2TB or whatever in two years, I wrote up some notes.

In my configuration, sdb1 and sdc1 are the partitions currently part of my RAID-1 md0. sdd is one of the 750GB disks. I’m adding one 750GB disk at a time, because 1) I want at least two copies of my data to be available at all times and 2) I only have one free drive bay and don’t want disks dangling next to the machine for hours.

  1. Change the number of active devices in the array from two to three. This will cause any newly added drive to become active (i.e. actually write the array's data onto the new drive)
    mdadm -G /dev/md0 -n 3
  2. A little burn-in testing for the new disk
    badblocks -svw -t random -p 2 /dev/sdd
  3. Partition, not forgetting to set the partition type to 0xfd, Linux raid autodetect
  4. Add the new drive as a spare to the existing array
    mdadm /dev/md0 --add /dev/sdd1
  5. Once recovery is done (check `mdadm -D /dev/md0`), fail and remove one of the old disks from the array
    mdadm /dev/md0 -f /dev/sdc1 -r /dev/sdc1
  6. Shred the removed drive
    shred -v -n 2 -z /dev/sdc
  7. (Physically) swap out the removed drive and replace it with the second new one
  8. Repeat steps 2-5 above for the second new disk. Hold off on the shredding, as this is going to be our backup
  9. Reset the number of active devices in the array to two
    mdadm -G /dev/md0 -n 2
  10. Grow the array
    sudo mdadm -G /dev/md0 --size=max
  11. Let it resync, then unmount and resize the filesystem
    umount /home resize_reiserfs /dev/md0 mount /home
  12. Finally, if everything seems okay, shred that second old disk
    shred -v -n 2 -z /dev/sdb

…and we’re done! The one annoying thing is that with testing and a couple of resyncs, you end up with loads of down time between really short and simple tasks. So it’s possible (and I speak from experience) to stretch this weekend project out over a whole week.

Thomas Kho - 08 Jun 2008



The opinions expressed on this site are mine and do not necessarily represent those of my employer.