So, in brief, here are a few of my observations running an OpenSolaris 2009.6 system. The machine has a 60GB mirrored root ZFS pool named rpool, and a ~4.2TB RAID-Z1 (that's RAID-5 to the rest of you) user data ZFS pool named storage. And, because no review, no matter how silly!, is complete without a wankerous listing of hardware specifications, I'll also note that the machine that I'm playing with has 8GB of ECC DDR2 and a Core2 Quad Q6600.
I suspect that the first true joy of OpenSolaris to be mentioned is ZFS. Not just the filesystem on disk, although I am a firm believer in the layout of the filesystem, but what I find most enjoyable about ZFS is the mechanisms by which one manages it. This is an overarching theme that I've found in the system; in particular, "say what you mean!". Let me give an example:
$ zfs set compression=on storage/storage/backups/joshua
I want to set a property (namely, transparent data compression to on) of a zfs filesystem, and I want the property to be inherited all the way down. Say what you mean. Some contrasting mechanisms for this sort of thing might be (fictitious):
$ mount -o remount,compression=on -t something storage/storage/backups/joshua /storage/backups/joshua
$ echo on > /sys/fs/something/storage/storage/backup
Really, I don't want to do anything files or echoing to files, and I certainly don't want anything to do with how the filesystem is mounted! What I want to do is do something to a zfs filesystem; and that's exactly what the first command is telling me.
A stranger thing that happens with ZFS is that it can also manage various other parts of the system. For example,
$ zfs set sharenfs="sec=sys,email@example.com,rw=
exports the storage/storage volume -- and all subvolumes -- so that the bloomy VM can get at them. I'm not sure I aesthetically like this being part of the ZFS command, but it has made my job as an administrator much easier!
Speaking of NFS, OpenSolaris's NFSv4 interoperated pretty much out of the box with the Linux VM on the machine (far and away unlike what happened when I tried this with FreeBSD). I needed to set the NFSv4 ID mapping domain, though; the command for that had a very familiar syntax:
$ sharectl set -p nfsmapid_domain=emarhavil.com nfs
Just like that -- and without touching anything further, my Linux VM instantly got the user IDs mapped properly. I was relieved not to have to touch configuration files, or guess at which services to restart (is it /etc/rc.d/nfs? /etc/rc.d/nfsshare? what are the dependencies?). On the other hand, this does make me a little uneasy -- if something went wrong, I could not tell you where that value is stored, and I have absolutely no idea how I'd fix it.
There are other things that I really like about Solaris, like the way services are run (no /etc/init.d or /etc/rc.d; service status is accessed with svcs, and service administration is done with svcadm, which automatically brings everything up in order, etc...), and boot environments (ZFS snapshots of a root filesystem that are done automatically before beginning an upgrade; this has saved my ass at least once!). In general, it's a joy to administrate. But, to be fair, I should at least point my laser pointer at the elephant standing in the room... namely, the package manager.
root@moroso:~# time pkg install bogus_package Creating Plan / pkg: The following pattern(s) did not match any packages in the current catalog. Try relaxing the pattern, refreshing and/or examining the catalogs: bogus_package real 0m10.174s user 0m2.748s sys 0m0.416s root@moroso:~#
What the fuck. The package manager really is slow as dirt. It appears to have been built as Yet Another Package Manager for absolutely no good reason. Seriously, guys, why not use... apt? Or... ports? Or... I don't know, fucking anything except for IPS? Here's the other horror story about the packaging system: you can only get security updates if you pay Sun some ($130 or so, I think) fee per year to get access to the /support repository. If you don't want to do that, you're stuck with /dev (it's like Debian unstable, except it's actually unstable -- half the releases break your machine) or whatever was shipped at release.
But I'm such a huge fan of the rest of the modern features in OpenSolaris -- well, as long as I put /usr/gnu/bin in my path -- that I'm willing to put up with the Image Packaging Shithole. Maybe I shouldn't be so willing, but getting day to day administrivia done is so easy that it almost outweighs the remaining bits of 1980.