kern/79035: gvinum unable to create a striped set of mirrored
sets/plexes
Greg 'groggy' Lehey
grog at FreeBSD.org
Sat Mar 19 21:30:07 PST 2005
The following reply was made to PR kern/79035; it has been noted by GNATS.
From: Greg 'groggy' Lehey <grog at FreeBSD.org>
To: Sven Willenberger <sven at dmv.com>
Cc: freebsd-gnats-submit at FreeBSD.org
Subject: Re: kern/79035: gvinum unable to create a striped set of mirrored sets/plexes
Date: Sun, 20 Mar 2005 15:51:33 +1030
--oj4kGyHlBMXGt3Le
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Saturday, 19 March 2005 at 23:43:00 -0500, Sven Willenberger wrote:
> Greg 'groggy' Lehey presumably uttered the following on 03/19/05 22:11:
>> On Sunday, 20 March 2005 at 2:04:34 +0000, Sven Willenberger wrote:
>>
>>> Under the current implementation of gvinum it is possible to create
>>> a mirrored set of striped plexes but not a striped set of mirrored
>>> plexes. For purposes of resiliency the latter configuration is
>>> preferred as illustrated by the following example:
>>>
>>> Use 6 disks to create one of 2 different scenarios.
>>>
>>> 1) Using the current abilities of gvinum create 2 striped sets using
>>> 3 disks each: A1 A2 A3 and B1 B2 B3 then create a mirror of those 2
>>> sets such that A(123) mirrors B(123). In this situation if any drive
>>> in Set A fails, one still has a working set with Set B. If any drive
>>> now fails in Set B, the system is shot.
>>
>> No, this is not correct. The plex ("set") only fails when all drives
>> in it fail.
>
> I hope the following diagrams better illustrate what I was trying to
> point out. Data striped across all the A's and that is mirrored to the B
> Stripes:
>
> ...
>
> If A1 fails, then the A Stripe set cannot function (much like in Raid 0,
> one disk fails the set) meaning that B now is the array:
No, this is not correct.
>>> Thus the striping of mirrors (rather than a mirror of striped sets)
>>> is a more resilient and fault-tolerant setup of a multi-disk array.
>>
>> No, you're misunderstanding the current implementation.
>
> Perhaps I am ... but unless gvinum somehow reconstructs a 3 disk stripe
> into a 2 disk stripe in the event one disk fails, I am now sure how.
Well, you have the source code. It's not quite the way you look at
it. It doesn't have stripes: it has plexes. And they can be
incomplete. If a read to a plex hits a "hole", it automatically
retries via (possibly all) the other plexes. Only when all plexes
have a hole in the same place does the transfer fail.
You might like to (re)read http://www.vinumvm.org/vinum/intro.html.
Greg
--
See complete headers for address and phone numbers.
--oj4kGyHlBMXGt3Le
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (FreeBSD)
iD8DBQFCPQhdIubykFB6QiMRAmrSAJ9c1s3Hclp/mQUU+YIenXXLgA/ViACgg/uZ
sg//WXGWNor/Yho5ZDhIFjQ=
=z4NN
-----END PGP SIGNATURE-----
--oj4kGyHlBMXGt3Le--
More information about the freebsd-bugs
mailing list