Olaf Manczak wrote:
Eric Schrock wrote:
On Mon, Jun 26, 2006 at 05:26:24PM -0600, Gregory Shaw wrote:
You're using hardware raid.  The hardware raid controller will rebuild
the volume in the event of a single drive failure.  You'd need to keep
on top of it, but that's a given in the case of either hardware or
software raid.

True for total drive failure, but not there are a more failure modes
than that.  With hardware RAID, there is no way for the RAID controller
to know which block was bad, and therefore cannot repair the block.
With RAID-Z, we have the integrated checksum and can do combinatorial
analysis to know not only which drive was bad, but what the data
_should_ be, and can repair it to prevent more corruption in the future.

Keep in mind that each disk data block is accompanied by a pretty
long error correction code (ECC) which allows for (a) verification
of data integrity (b) repair of lost/misread bits (typically up to
about 10% of the block data).

AFAIK, typical disk ECC will correct 8 bytes.  I'd love for it to be
10% (51 bytes).  Do you have a pointer to such information?

Therefore, in case of single block errors there are several possible
situations:

- non-recoverable errors - the amount of correct bits in the combined
  data + ECC in insufficient - such errors are visible to the RAID
  controller, the controller can use a redundant copy of the data, and
  the controller can perform the repair

- recoverable errors - some bits can't be read correctly but they
  can be reconstructed  using ECC - these errors are not directly
  visible to either the RAID controller or ZFS. However, the disks
  keep the count of recoverable errors so disk scrubbers can identify
  disk areas with rotten blocks and force block relocation

- silent data corruption - it can happen in memory before the data
  was written to disk, it can occur in the disk cache, it can be caused
  by a bug in disk firmware. Here the disk controller can't do
  anything and the end-to-end checksums, which ZFS offers,
  are the only solution.

Another mode occurs when you use a format(1m)-like utility to scan
and repair disks.  For such utilities, if the data cannot be reconstructed
it is zero-filled.  If there was real data stored there, then ZFS will
detect it and the majority of other file systems will not detect it.
For an array, one should not be able to readily access such utilities,
and cause such corrective actions, but I would not bet the farm on it --
end-to-end error detection will always prevail.
 -- richard
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to