Linux on-line Software RAID reshaping
I first read about on-line Software RAID reshaping a year ago on LWN. Today I tried it on a live system (that's too big to be backed-up first :-))
I added 2 250GB drives to my existing RAID5 array of 4, making for a 1.2TiB array. The reshape took a while...:
md0 : active raid5 sdb1[4] sda1[5] sdf1[2] sde1[3] sdd1[1] sdc1[0] 732587712 blocks super 0.91 level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU] [>....................] reshape = 1.9% (4800784/244195904) finish=397.4min speed=10034K/sec
But when it was done:
$ df -h /dev/md0 1.2T 657G 509G 57% /mnt/storage
This is one of the reasons why I love software RAID, while you have a kak load more I/O through the PCI(E) bus than you would with hardware RAID, you get the flexibility of the highest-end hardware controllers on a normal PC motherboard.
And of course, should things go pear-shaped, I don't need to find an identical controller, I just have to find a box with 6 SATA sockets.
HOWTO reshape
Lets say you have 4 SATA drives, /dev/sda
to /dev/sdd
, and you are adding a new one /dev/sde
.
Check that everything is happy:
$ cat /proc/mdstat md0 : active raid5 sdd1[3] sdc1[1] sdb1[2] sda1[0] 937705728 blocks level 5, 128k chunk, algorithm 2 [4/4] [UUUU]
Partition the new drive (clone sda
s partition table onto sde
):
# sfdisk -d /dev/sda | sfdisk /dev/sde
Add the new drive:
# mdadm -a /dev/md0 /dev/sde1
Grow the RAID:
# mdadm --grow -n5 /dev/md0
Watch the progress:
$ watch cat /proc/mdstat
Grow the filesystem:
# resize_reiserfs /dev/md0
See the extra space:
$ df -h