OpenSolaris with a raid-z array, Part1

The documentation for ZFS and OpenSolaris seems “technically correct” in a kind of austere fashion … but I haven’t found some “dumbed-down” simplified documentation for OpenSolaris newbies like there are for Linux/FreeBSD equivalents. Reading the Solaris/OpenSolaris docs, I get this aura that  Solaris/OpenSolaris is engineered in a real professional manner, and it just “seems to work” the way you expect it to after digesting the technical documents. So maybe that is why there’s not as much “newbie friendly” docs.

ZFS is exciting because it is a whole new way of administrating storage. I can have 3x 1 terrabyte disk drives set up in a redundant fashion, giving me 2 TB’s of storage space and using 1 disk for redundancy. ZFS is an enterprise-grade technology that does all kinds of data checking while making it much easier to manage my storage devices. And the really coot part? When it comes to upgrading to bigger disks, I just swap the disks in one by one and let ZFS’s self-healing techniques expand the array.

Check out Sun’s own materials: “ZFS – the last word in file systems“.

And by the way … OpenSolaris is a kind of a “Beta” for Solaris 11. It seems that Solaris 11 will be based on the OpenSolaris code, so heads up, if you want to get ahead of the curve with Solaris technology, you may want to get skills with OpenSolaris now 8-)

I’m working in a Sun xVM VirtualBox virtualised OpenSolaris install in my Fedora 10 laptop, and I have 3x virtual SATA drives connected to the OpenSolaris instance, each drive with 8GB. Once I’ve documented out the tasks to be done, I’m going to duplicate this set up on real hardware, with a machine with 3x 1TB SATA drives.

I’m trying to slice and dice my drives so that they appear as:

Disks –> Disk 1

Controller 4
Target 0
Disk 0

Disk 2

Controller 4
Target 1
Disk0

Disk 3

Controller 4
Target 2
Disk 0

rpool 4 gigs (Mirrored) 4 gigs (Mirrored) 4 gigs (Mirrored)
raidz 4 gigs (RAID) 4 gigs (RAID) 4 gigs (RAID)

Originally I wanted a root zpool (ZFS pool) with 4 gigs, mirrored over 3 disks. And a raid-z (ZFS equivalent of RAID-5) pool that can store 8 gigs, spread over 3 disks. In theory, this config should be able to tolerate one of the disks failing, and still be able to boot the system.

After much searching, I came across some good resources at Malachi’s blog, and at Darkstar’s blog about setting up mirrored rpools and a blog post by Johan about Solaris device naming conventions.

At first, I thought this isn’t really a configuration that is described in detail in the OpenSolaris documentation: the ZFS Administrator’s guide because ZFS expects to use whole disks, not partitions of disks, to simplify and improve storage management. To follow best practices, I would have to use a 4th disk to store my OpenSolaris installation, but this would add more costs on to my eventual set up. An attractive alternative is to use flash-based storage for the 4th disk, and get OpenSolaris to boot from the flash-based storage. Using flash-based storage for the root zpool would speed up my OpenSolaris installation. But at the end of the day – this is more costs and I want to engineer this with the minimum of capital outlay.

Ideally, OpenSolaris installs onto a raid-z pool. Unfortunately, the current OpenSolari 2008.11 release does not support this and can only boot from a single-drive root zpool or a mirrored root zpool. If it could, I could just install OpenSolaris onto a 3-disk root zpool.

It turns out the reason why it’s not described in detail … is because doing it this way disables on-disk hardware write caching, which may adversely affect system performance. Dayum! So now I’m going to test and see if my hardware will install OpenSolaris to compact Flash media, and if it will boot from compact Flash media.  This should be the most straightforward way out of my current predicament.

Wish me luck!

No related posts.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>