Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Nov 2007 19:01:56 +0100
From:      "Gert Lynge" <gert@lynge.org>
To:        <freebsd-questions@freebsd.org>
Subject:   SV: RAID1 synchronisation - howto OR not necessary?
Message-ID:  <01e301c82dfa$f049c720$d0dd5560$@org>
In-Reply-To: <20071123150500.GA85473@owl.midgard.homeip.net>
References:  <20071122155640.fa7e0536.wmoran@potentialtech.com>	<20071123092146.E0E1B2878E@smtp.proximedia.com>	<14989d6e0711230545k4b32c55bs3564647043f9f4ed@mail.gmail.com> <20071123150500.GA85473@owl.midgard.homeip.net>

next in thread | previous in thread | raw e-mail | index | archive | help
>The disks themselves handle the checksumming to detect bad blocks.
>With modern disks it is *very* rare that a block on the disk goes bad
>without the disk being able to report it it as such.  
>This means that if you have a functioning RAID1 setup and one of the
>disks report a bad block, then the controller can simply read the
>corresponding block from the other disk, and rewrite it to the disk
>with the bad block.  If a disk has problems writing a block it will
>transparently re-map the block to another.
>The problems can occur when one disk in a RAID-array has failed and you
>try to rebuild it from the other disk(s). If you then encounter a bad block
>on that disk you have a problem since you don't have a good copy of that
>block.
>This is what verification (which, btw, is not the same as synchronization)
>tries to prevent by reading every block on each disk on a regular basis. 
>Then the RAID controller can recover the data on any bad blocks from the
>other disk(s) in the array.

I've been wondering how to do this with a BIOS assisted soft raid for some
time.
I have a server with ad4 ad6 in a mirror detected as ar0:
----
ws# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: READY
----
ws# cat /var/run/dmesg.boot
[...]
ar0: 76316MB <Intel MatrixRAID RAID1> status: READY
ar0: disk0 READY (master) using ad4 at ata2-master
ar0: disk1 READY (mirror) using ad6 at ata3-master
[...]
----

...and was wondering if dd could not do the job for me?
----
ws# man dd
[...]
EXAMPLES
     Check that a disk drive contains no bad blocks:
           dd if=/dev/ad0 of=/dev/null bs=1m
[...]
----

What if I run:
dd if=/dev/ad4 /of=/dev/null bs=1m
dd if=/dev/ad6 /of=/dev/null bs=1m

...once a week - will that not verify that the two drives can read all
blocks?

It would be nice to limit the load (the throughput of dd) though - anyone
know if that is possible? Maybe by pipeing through a second command (I guess
a throughput limiter could easily be programmed?).

Regards
    Gert Lynge




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01e301c82dfa$f049c720$d0dd5560$>