Date: Tue, 01 Dec 2009 19:33:20 +0100 From: Rolf Nielsen <listreader@lazlarlyricon.com> To: Dan Nelson <dnelson@allantgroup.com> Cc: freebsd-questions@freebsd.org Subject: Re: ZFS pools of consisting of several mirrors Message-ID: <4B156170.5000003@lazlarlyricon.com> In-Reply-To: <20091201175500.GN89004@dan.emsphone.com> References: <4B155562.30109@lazlarlyricon.com> <20091201175500.GN89004@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Dan Nelson wrote: > In the last episode (Dec 01), Rolf Nielsen said: >> In experimenting a bit with ZFS, I, among other things, tried something >> like this >> >> zpool create -R /test test mirror file[01]0 mirror file[01]1 mirror >> file[01]2 mirror file[01]3 mirror file[01]4 mirror file[01]5 >> >> This, according to zpool status, gives me a (file backed) pool consisting >> of six mirrors, each mirror consisting of two files. Now for my question. >> Exactly how is the pool built? Is it... >> >> 1. A RAID0 of the six mirrors? >> >> 2. A mirror of two RAID0 arrays, each array consisting of the six files >> file0[0-5] and file1[0-5] respectively? >> >> 3 and 4. Like 1 and 2 above, but with JBOD instead of RAID0? >> >> 5. Some other way I haven't thought about? >> >> I guess it's 1 or 3, as the zpool status output shows me six mirrors, >> but which is it? And, provided my guess is correct, is there a way to >> implement 2 or 4 without involving geom_stripe or geom_concat? > > It's 1/3/5. Each mirror is independant, and writes are balanced across the > mirrors based on space usage. If you add another mirror to grow the pool, > it will get most of the writes until the usages balance out. > > You usually don't want to build an array with options 2 or 4, since a single > drive failure will degrade the entire mirror half. Consider if you have > > concat00 -> file01 file02 file03 file04 file05 > concat01 -> file11 file12 file13 file14 file15 > mirror0 -> concat0 concat1 > > If file01 fails, concat00 fails, causing mirror0 to become degraded. When > you replace file01, mirror0 will have to resynch all of concat00 from > concat01 since it doesn't know about the subdevices. If you don't replace > file01, and then file15 fails, you have lost your entire volume (unless you > do some hackery to swap file05 and file15 to create a functioning concat01). > Good point. Thanks for the reply.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B156170.5000003>