Re: limits on raid

From: Neil Brown
Date: Fri Jun 15 2007 - 17:59:58 EST


On Friday June 15, avi@xxxxxxxxxx wrote:
> Neil Brown wrote:
> >
> >> while I consider zfs to be ~80% hype, one advantage it could have (but I
> >> don't know if it has) is that since the filesystem an raid are integrated
> >> into one layer they can optimize the case where files are being written
> >> onto unallocated space and instead of reading blocks from disk to
> >> calculate the parity they could just put zeros in the unallocated space,
> >> potentially speeding up the system by reducing the amount of disk I/O.
> >>
> >
> > Certainly. But the raid doesn't need to be tightly integrated
> > into the filesystem to achieve this. The filesystem need only know
> > the geometry of the RAID and when it comes to write, it tries to write
> > full stripes at a time. If that means writing some extra blocks full
> > of zeros, it can try to do that. This would require a little bit
> > better communication between filesystem and raid, but not much. If
> > anyone has a filesystem that they want to be able to talk to raid
> > better, they need only ask...
> >
>
> Some things are not achievable with block-level raid. For example, with
> redundancy integrated into the filesystem, you can have three copies for
> metadata, two copies for small files, and parity blocks for large files,
> effectively using different raid levels for different types of data on
> the same filesystem.

Absolutely. And doing that is a very good idea quite independent of
underlying RAID. Even ext2 stores multiple copies of the superblock.

Having the filesystem duplicate data, store checksums, and be able to
find a different copy if the first one it chose was bad is very
sensible and cannot be done by just putting the filesystem on RAID.

Having the filesystem keep multiple copies of each data block so that
when one drive dies, another block is used does not excite me quite so
much. If you are going to do that, then you want to be able to
reconstruct the data that should be on a failed drive onto a new
drive.
For a RAID system, that reconstruction can go at the full speed of the
drive subsystem - but needs to copy every block, whether used or not.
For in-filesystem duplication, it is easy to imagine that being quite
slow and complex. It would depend a lot on how you arrange data,
and maybe there is some clever approach to data layout that I haven't
thought of. But I think that sort of thing is much easier to do in a
RAID layer below the filesystem.

Combining these thoughts, it would make a lot of sense for the
filesystem to be able to say to the block device "That blocks looks
wrong - can you find me another copy to try?". That is an example of
the sort of closer integration between filesystem and RAID that would
make sense.

NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/