Hack 65 Add an Extra Drive to a Software RAID 5 Array

 < Day Day Up > 

figs/expert.gif figs/hack65.gif

Add a fourth drive to a three-drive software RAID 5 array without a backup and restore .

[Hack #64] explored a method of increasing the disk space in a RAID 1 array by adding a single drive and converting the array to RAID 5. With the ever-increasing storage needs in most businesses, you may find yourself needing to expand a RAID 5 array as well. You can replace all of the drives in the RAID with larger drives and copy all of the files over to the new, larger RAID. Of course, for a three-drive RAID 5 array, this means buying three new drives to use. A cheaper alternative is to back up the array, create a new array using four drives, and copy back the data. This method requires the four drives for the array and a medium to back up to, such as a hard drive large enough to hold the entire RAID or possibly tape. Although, backups and restores aren't as fun as watching a RAID 5 array grow in front of your very eyes.

Some expensive hardware RAID controllers support adding new drives to RAID 5 arrays without requiring a backup and restore. This feature did not exist in software RAID until the creation of raidreconf a tool that can grow RAID 0 and RAID 5 drives. This hack is a step-by-step guide to adding a fourth disk to a three-disk RAID 5 array.

Hot-adding a disk to a software RAID 5 array is serious RAID voodoo! Whenever you reconfigure a RAID array on the fly, you risk the loss of your data, so be sure that any important data is backed up and you say a little prayer before trying this. Also, raidreconf is designed primarily to allow you to grow drives. You can shrink a RAID using raidreconf only if the data on the old RAID fits on the new RAID; otherwise , raidreconf truncates the data.

Now that all the caveats are out of the way, let's talk about the example RAID used in this hack. It is a 20-GB three-disk RAID 5 array at /dev/md0 that contains the root partition for a filesystem that spans three hard drives: /dev/hda1 , /dev/hdb1 , and /dev/hdc1 , which are 10 GB each. You then add a fourth 10-GB drive to this array, located at /dev/hdd1 , which makes the final four-disk RAID 5 array 30 GB.

To add a drive to md0 , mount the array and create two copies of the raidtab file: one to represent the original state of the RAID and one to modify to represent the new state of the array. Then unmount the array and stop it, so that raidreconf can change it:

 knoppix@tty0[knoppix]$  sudo mkdir /mnt/md0  knoppix@tty0[knoppix]$  sudo mount /dev/md0 /mnt/md0  knoppix@tty0[knoppix]$  sudo cp /mnt/md0/etc/raidtab /etc/raidtabold  knoppix@tty0[knoppix]$  sudo cp /mnt/md0/etc/raidtab /etc/raidtabnew  knoppix@tty0[knoppix]$  sudo umount /dev/md0  knoppix@tty0[knoppix]$  sudo raidstop /dev/md0  

Now you have two files, /etc/raidtabold and /etc/raidtabnew . You must modify /etc/raidtabnew to reflect the configuration of the new RAID 5 array you want to create. First, here is raidtabold :

 raiddev /dev/md0         raid-level      5         nr-raid-disks   3         nr-spare-disks  0         persistent-superblock 1         parity-algorithm        left-symmetric         chunk-size      32         device          /dev/hda1         raid-disk       0         device          /dev/hdb1         raid-disk       1         device          /dev/hdc1         raid-disk       2 

Edit raidtabnew and add the new drive to the array:

 raiddev /dev/md0         raid-level      5         nr-raid-disks   4         nr-spare-disks  0         persistent-superblock 1         parity-algorithm        left-symmetric         chunk-size      32         device          /dev/hda1         raid-disk       0         device          /dev/hdb1         raid-disk       1         device          /dev/hdc1         raid-disk       2         device          /dev/hdd1         raid-disk       3 

Notice the increase to the nr-raid-disks variable and the addition of the fourth raid-disk. Once raidtabnew is modified, reconstruct the array with this command:

 knoppix@tty0[knoppix]$  sudo raidreconf -o /etc/raidtabold -n /etc/raidtabnew   -m /dev/md0  

As your array is reconstructed, raidreconf outputs a nice progress bar, which lets you know the completion rate.

Do not interrupt raidreconf while it is in the middle of a reconstruction, or you lose your entire array.

Once raidreconf is finished, mount the new /dev/md0 and copy over the new raidtab file that you have created:

 knoppix@tty0[knoppix]$  sudo mount /dev/md0 /mnt/md0  knoppix@tty0[knoppix]$  sudo cp /etc/raidtabnew /mnt/md0/etc/raidtab  

While the drive is mounted, you might want to run df and confirm that the size of the array has in fact increased. Now you can reboot your machine into your new, larger array.

6.15.1 See Also

  • The raidreconf documentation in /usr/share/doc/raidtools2/raidreconf-HOWTO.gz on your Knoppix disc.

 < Day Day Up > 

Knoppix Hacks. 100 Tips and Tricks
Knoppix Hacks. 100 Tips and Tricks
Year: 2004
Pages: 166

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net