Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Jul 2004 09:28:18 -0400
From:      Paul Mather <paul@gromit.dlib.vt.edu>
To:        freebsd-current@freebsd.org
Cc:        Harald Schmalzbauer <h@schmalzbauer.de>
Subject:   Re[2]: Whay is broken ATARAID that ignored?
Message-ID:  <1089725297.92521.55.camel@zappa.Chelsea-Ct.Org>
In-Reply-To: <20040713120051.00A3E16A4CF@hub.freebsd.org>
References:  <20040713120051.00A3E16A4CF@hub.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 12 Jul 2004 19:22:23 +0200, Gabriel Ambuehl
<gabriel_ambuehl@buz.ch> wrote:

> I know. But rather this than FreeBSD going on to write to a RAID1 array
> that's actually out of sync. Nobody in their sane mind will yank out
> drives, modify just one and then expect it to still work.

Nobody in their sane mind would expect this *not* to work!  It's one of
the basic tenets of RAID 1 that if one drive fails (is unavailable to
the array) that the array will still continue to be usable (i.e., you
can read from it and write to it using the remaining drives) until the
failed drive is eventually replaced and the whole array brought back
into sync by reconstructing onto the new (replacement) drive.  Being
able to write to a degraded array means it *will* be out of sync with
whatever replacement drive is eventually used.

It shouldn't matter whether the drive failure is actual or "simulated"
(by removal and later replacement of the same drive).  It should
correctly recognise an array inconsistency and reconstruct properly.  I
use RAIDframe under NetBSD/alpha and it even has an option to raidctl to
"soft fail" a RAID component, as well as allowing reconstruction onto
specific replacement drives.

It is very likely (and entirely sensible) that people will undergo
various simulated failure testing, and physical removal of a drive is
the easiest way to do this.  (Actually, I guess the "detach/attach"
approach as suggested in the handbook is even easier.)  I know that's
what I did, and I couldn't get "atacontrol rebuild" to work at all so I
gave up on ATA RAID.  It's better to know beforehand that you won't be
able to reconstruct a RAID array when it fails that to discover that
fact after an actual real failure when you have important data on it. 
(I did the same failure and reconstruction testing under RAIDframe
before deciding to adopt it on my NetBSD/alpha system.  The man page
even strongly encourages doing this, so you know and have practised the
steps before an actual failure happens, thereby minimising the chances
of first-time operator error.)

> As to documenting it, that wouldn't hurt.

It would actually help *a lot*.  It's better to document things properly
to allow people to make an informed choice beforehand than to have them
commit to something and then regret it later when they find it doesn't
actually work.  I would rather have known up-front that ATA RAID is "not
ready for prime time" than to have wasted all the time I did finding
that out for myself.  This is especially true of a system that is
somewhat geared towards improving reliability.

I don't mind if something doesn't work, but I'd rather know that up
front where possible.

> >> Well I do agree the rebuild procedure should be described better.

Here is the "rebuild" documentation (from atacontrol(1)):

     rebuild  Rebuild a RAID1 array on a RAID capable ATA controller.

There is also Section 13.4.3 of the handbook, but that is prefaced with
an assumption that you are using hot-swap drives.  It does not say what
to do if your system does not have hot-swap drives.  So, there are a lot
of common cases not covered by anything other than the one-liner in
atacontrol(1).

I've asked before, so I guess I should ask again, for official
clarification of the one-line "rebuild" description: will it work for a
FreeBSD native RAID array, i.e., one created and hosted on a non-RAID
controller.  The "create" entry in atacontrol(1) states the following:

     create   Create a type ATA RAID.  The type can be RAID0 (stripe), RAID1
              (mirror), RAID0+1 or SPAN (JBOD).  In case the RAID has a RAID0
              component, the interleave must be specified in number of sec-
              tors.  The RAID will be created of the individual disks named
              disk0 ... diskN.

              Although the ATA driver allows for creating an ATA RAID on disks
              with any controller, there are restrictions.  It is only possi-
              ble to boot on an array if it is either located on a ``real''
              ATA RAID controller like the Promise or Highpoint controllers,
              or if the RAID declared is of RAID1 or SPAN type; in case of a
              SPAN, the partition to boot must reside on the first disk in the
              SPAN.

(Note the first sentence of the second paragraph, particularly the "any
controller" part.)

In the restrictions, nothing is mentioned about rebuilding (only
booting).  Yet, the "rebuild" entry explicitly mentions "RAID capable."

Is it possible to rebuild an ATA RAID array on a non-RAID capable
controller (i.e., a standard ATA controller)?  Because you can create
and use ATA RAID arrays on such non-RAID capable controllers, it would
seem worthy to mention the important caveat that you can't rebuild
arrays using them if that is the case.  (That would beg the question,
why allow ATA RAID arrays to be created on them, then?  Are you supposed
to move the drives to a RAID capable controller machine after array
creation for actual use?  Or are you supposed to move them just to
effect reconstruction??)

One way or the other, it would be nice to know ahead of time.

I wonder how geom_mirror is coming along...

Cheers,

Paul.
-- 
e-mail: paul@gromit.dlib.vt.edu

"Without music to decorate it, time is just a bunch of boring production
 deadlines or dates by which bills must be paid."
        --- Frank Vincent Zappa



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