Skip to content
A scene from Ireland

Linux

Linux md/raid throughput measurements

Following some comments on the linux-raid mailing list about poor throughput for raid5 in 2.6, I did some systematic measurement on my test machine to look for patterns. And the result were illuminating.

image

I compared raid0 with raid5 in 2.4.27 and 2.6.9. The results showed that reading from raid5 is significantly slower in 2.6 (as reported) and also that writes were quite a bit slower too, even for raid0 (raid0 reads improved in 2.6). However I didn't get the same degree of slow down that has been reported elsewhere.

UPDATE: more results are available in a subsequent article, showing that the raid0 write through shown here is misleading.

RAID10 in Linux MD driver

My raid10 module has recently appear in Linus' source tree and should be in the next release of 2.6 - 2.6.9.

I started writing this module about 3 years ago, hit a hiccup, and took 2 and a half year to get back to it. There was a difficulty getting the resync code to work sensibly. As often happens I didn't look for an easy way out that maybe wasn't so complete, but tried to find a completely "right" solution, and ended up with none. "Perfect" was the enemy of "good" once again.

But I finally got back to it earlier this year and got most of it written in a couple of days, most of it working in another couple of days a few weeks later, and the final bugs out about two weeks ago.

--grow option for "linear" md arrays

I've just been working on an enhancement for Linux "MD" linear arrays which allows them to be enlanged.

More specifically, a new device (typcially disk drive) can be added to the end of an active linear array now. The size increases accordingly.

You can find patches for mdadm and 2.6.7-rc3-mm1.

It is still a work in progress, as it isn't documented, some of the code doesn't report errors very nicely, and I realised that there is some work needed in md.c with respect to handling new superblocks.

I really should do the new-superblock code in mdadm and get it all tidied up.

Better FSID management

An NFS filehandle stores information to identify a filesystem (or directory in the filesystem that is the export point) and a file within that filesystem.

Identifying the file within the filesystem is now handled fairly well, but there are problems with identifying the filesystem.

New "mdadm"

I have just released a new version of mdadm - 1.6.0.

Mdadm is my tool for managing Linux Software RAID arrays.

This release included initial support for a --grow mode that allows resizing on-line arrays. Naturally this requires kernel support to be able to work. The 2.6.7-rc2-mm1 Linux kernel has support for changing the active size of component devices and changing the number of drives in a RAID1.

I hope to add support for adding drives to a linear array soon, and adding drives to a RAID5 eventually.

I had hoped to get support for the new-style superblocks into this release, but it just didn't happen. Maybe next time.

sysfs??

It might be nice to make information and management available through sysfs. Maybe.

Event monitoring

Events happen in raid arrays, such as device failure and resync. It would be nice to know when they happen. polling /proc/mdstat is one option, but it isn't perfect.

auto-correcting read errors

Write errors must always fail a device as even if there was a cable problem rather than a media problem, the drive will be inconsistant with the array after the write failure and so cannot be trusted.

However read errors do not have to be fatal. If the device can over-write a bad sector, or remap to elsewhere, then it makes sense to regenerate the data from redundant info and re-write.