Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Dec 2004 18:48:52 -0500
From:      asym <asym@rfnj.org>
To:        ghost@kzsu.org, freebsd-stable@freebsd.org
Subject:   Re: drive failure during rebuild causes page fault
Message-ID:  <6.1.2.0.2.20041215183830.030013b0@mail.rfnj.org>
In-Reply-To: <a9ef27270412151516fcc7720@mail.gmail.com>
References:  <20041213052628.GB78120@meer.net> <20041213054159.GC78120@meer.net><20041213060549.GE78120@meer.net> <20041213192119.GB4781@meer.net><41BE8F2D.8000407@DeepCore.dk> <a9ef27270412151516fcc7720@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
At 18:16 12/15/2004, Gianluca wrote:
>barracudas and at this point I wonder if it's best to go w/ a small hw
>raid controller like the 3ware 7506-4LP or use sw raid. I don't really
>care about speed (I know RAID5 is not the best for that) nor hot
>swapping, my main concern is data integrity. I tried to look online
>but I couldn't find anything w/ practical suggestions except for
>tutorials on how to configure vinum.

If you don't care about hot-swapping, then you don't really care about (or 
need) RAID-5.  It doesn't offer any additional "data integrity", but no 
RAID level does.  What RAID does for you is allow you to survive an 
outright drive failure without losing any data.  No RAID level can save you 
from buggy software writing garbage to the disk, transient disk errors, or 
the myriad other events that are far more common than a single drive just 
dying on you.

Using RAID-5 as an example, during normal operations, a chunk is written to 
the "disk" and the controller (or software) calculates the bitwise XOR of 
all the blocks involved and writes that value into the parity 
stripe.  During read operations, this parity data is not read or verified 
-- doing so would be pointless because there is no way to tell if it's the 
parity-stripe or the data-stripe that's "lying" if the two don't jive.

So, during "normal" operations (all drives up and functioning) RAID-5 
functions readwise as a RAID-0 with one less disk than you really have, and 
as a somewhat slower array during writes.

If a drive completely fails, then the parity stripe is always read up, and 
the missing data stripe is reconstructed from the parity data -- unless the 
parity stripe happens to fall on the missing drive for the stripe set 
you're currently accessing, in which case it is ignored and for that single 
access the array functions just as it would if a drive hadnot failed.

If you're thinking of using RAID instead of good timely backups, you need 
to go back to the drawing board, because that is not what RAID is intended 
to replace -- and is something it cannot replace.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6.1.2.0.2.20041215183830.030013b0>