Last updated on February 12, 2017
Normally the complexity of doing something in Linux doesn’t bother me. Arcane and convoluted commands don’t scare me, they never really have; they just take some getting use to. The problem I have is when the command, or the underlying system is only half implemented.
My current project has been replacing a pair of 1.5TB WD Caviar Greens with 2TB Hitachi 5k3000s. Yes I see the irony in replacing WD drives with drives made by a company that just sold their drive division to WD. On the up side 500GB more space nets me enough space to backup the rest of the computers on the network and still have as much free space as I had before, which was running down anyway; oh and the Hitachi’s are faster too.
Replacing the drives in the RAID array has gone smoothly enough using the following procedure:
- Fail the disk to remove using
mdadm /dev/md0 --fail /dev/sdX#
- Remove the disk from the array using
mdadm /dev/md0 --remove /dev/sdX#
- Power down the machine (hot swap is coming in a future upgrade)
- Swap the physical drives
- Bring the machine back up
- Add the new drive to the array using
mdadm /dev/md0 --add /dev/sdX#
- Let it re-sync.
I’ve done this for 2 1.5TB Greens, one that was failing and one that’s now going to become a proper backup target.
Now that I have two 2TB drives in there, I want to use them, and that means extending the md group to the full size of the array. So far as I can tell, that should be a simple…
mdadm -G /dev/md0 --size=max
…but, apparently that’s not the case if the array is configured as RAID10. RAID10, which gives the performance of RAID0 with redundancy of being able to lose a disk, which IMO is perfect for slow 5K RPM disks. MD even has a nice feature where the RAID10 array can be created in a partial 2-disk configuration then extended to the full 4+ disk configuration later. In the “partial” mode, it behaves exactly like a RAID-1 array.
Which brings me to the meat of this rant. I can re-size a RAID1 array, I can convert a RAID 1 array to 5, 6, or even 0. However, mdadm can’t re-size a RAID10 array, even if it’s running in what amounts to RAID1 mode, or convert it to RAID1 or any other RAID level for that matter.
Now it’s off to back up the damn thing, kill it rebuild it, and restore everything…. At least I’ll know if my backup procedure works.