<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>overflow</title>
      <link>http://mirrorshades.org/overflow/</link>
      <description>dumping core for fun and profit.</description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Wed, 01 Jul 2009 20:25:03 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.33</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Adventures on the Sun: Part IV</title>
         <description><![CDATA[<p>Someone on Sun managers asked for advice on moving from Linux to Solaris and tips on living with Solaris in general. I guess I kind of have a lot to say about it, actually..</p>

<p>One thing I forgot to mention is using SMF. You may have two software repositories (Sun's and pkgsrc), but you only want one place to manage the actual services. Write SMF manifests! It's easy, and you can use puppet to manage it all.</p>

<div class="quote">

<p>From: Bryan Allen &lt;bda@mirrorshades.net&gt;<br />
To: Jussi Sallinen<br />
Cc: <br />
Bcc: <br />
Subject: Re: Looking for tips: Migrating Linux&gt;Solaris10<br />
Reply-To: bda@mirrorshades.net<br />
In-Reply-To: &lt;20090624113312.GA32749@unikko&gt;<br />
AIM: packetdump</p>

<p>+------------------------------------------------------------------------------<br />
| On 2009-06-24 14:33:12, Jussi Sallinen wrote:<br />
| <br />
| Im new to Solaris and about to start migrating Linux (Gentoo) based E450 server<br />
| to V240 Solaris 10.<br />
| <br />
| Currently running:<br />
| <br />
| -Apache2<br />
| -Postfix<br />
| -Dovecot<br />
| -MySQL<br />
| <br />
| About 70 users using WWW and email services.<br />
| <br />
| So, to the point:<br />
| In case you have tips and tricks, or good to know stuff please spam me with <br />
| info regarding migration.</p>

<p>A quick note: I work for a company where I migrated all our services from Linux<br />
on whiteboxes to Solaris 10 on Sun hardware. It was a major effort, but<br />
garnered us many benefits:</p>

<p> * Consolidation. Thanks to the faster harder and Zones, we are down from 50+<br />
   Linux boxes to a dozen Sun systems. And for honestly not that much money.<br />
 * Much greater introspection (not just only mdb or DTrace; the *stat tools are<br />
   just that much better)<br />
 * Before ZFS, we were mostly sitting on reiserfs (before my time) and XFS<br />
   (which I migrated as much as I could to before getting it on ZFS). ZFS has<br />
   been a huge, huge win in terms of both reliability and availability.</p>

<p>This turned out to be quite an article, but here are some "quick" thoughts on<br />
using Solaris particularly, and systems administration in general:</p>

<p> * Read the System Administrator Guides on docs.sun.com if you are new to<br />
   Solaris<br />
 * No, seriously. Go read them. They are incredibly useful and easy to parse.<br />
 * Follow OpenSolaris development, either via the mailing lists or #opensolaris<br />
   on freenode. This gives you a headsup and stuff that might be getting into<br />
   the next Solaris 10 Update, so you can plan accordingly.</p>

<p> * Use a ZFS root instead of UFS (text installer only, but you really want to<br />
   use JET -- see below)<br />
 * Use rpool for operating system and zoneroots only<br />
 * Set up a tank pool on seperate disks<br />
 * Delegate tank/filesystems to zones doing the application work</p>

<p>This minimizes the impact of random I/O on the root disks for data and vice<br />
versa (just a good practice in general, but some people just try to use a<br />
single giant pool).</p>

<p>It also negates the issue where one pool has become full and is spinning<br />
platters looking for safe blocks to write to impacting the operating system or<br />
application data.</p>

<p> * Use Marin Paul's pca for patching</p>

<p>The Sun patching tools all suck. pca is good stuff. You get security and<br />
reliability patches for free from Sun; just sign up for a sun.com account.</p>

<p>You don't usually get new features from free patches (you do for paid patches),<br />
but regardless all patches are included in the next system Update.</p>

<p> * Learn to love LiveUpgrade</p>

<p>With ZFS roots, LiveUpgrade became a lot faster to use. You don't have a real<br />
excuse anymore for not building an alternative boot environment when you are<br />
patching the system.</p>

<p>Some patches suck and will screw you. Being able to reboot back into your<br />
previous boot environment is of enormous use.</p>

<p> * Use NetBSD's pkgsrc</p>

<p>Solaris 10 lacks a lot of niceties you and your users are going to miss.<br />
screen, vim, etc. You can use Blastwave, but it has its own problems. pkgsrc<br />
packages will compile basically everything without a problem; they are good<br />
quality, easy to administer, and easy to upgrade.</p>

<p>If you aren't doing this on a single box, but several machines, you would have<br />
a dedicated build zone/host, and use PKG_PATH to install the packages on other<br />
systems. Since you are using a single machine, see below about loopback<br />
mounting the pkgsrc directory into zones: Compile once, use everywhere.</p>

<p>The services you listed are available from pkgsrc and work fine. The one thing<br />
you might want to consider instead is using Sun's Webstack and the MySQL<br />
package, as they are optimized for Solaris and 64bit hardware.</p>

<p>In addition to the above, we use pkgsrc on our (dwingling number of) remaining<br />
Linux hosts. It means we have a *single version* of software that may be<br />
running on both platforms. It segments the idea of "system updates" and<br />
"application updates" rather nicely with little overhead.</p>

<p> * Use Solaris Zones</p>

<p>Keep the global zone as free of user cruft as possible. If you segment your<br />
services and users properly, zones make it incredibly easy to see what activity<br />
is going on where (prstat -Z).</p>

<p>It also makes it easy to manage resources (CPU, RAM) for a given set of<br />
services (you can do this with projects also, but to me it's easier to do at<br />
the zone level).</p>

<p>Install all your pkgsrc packages in the global zone and loopback mount it in<br />
each zone. This saves on space and time when upgrading pkgsrc packages. It also<br />
means you have one set of pkgsrc packages to maintain, not N. It's the same<br />
concept as...</p>

<p> * Use Sparse Zones</p>

<p>They are faster to build, patch and manage than full root zones. If you have<br />
recalcitrant software that wants to write to something mounted read-only from<br />
the global zone, use loopback mounts within the global zone to mount a zfs<br />
volume read-write to where it wants (e.g., if something really wants to write<br />
to /usr/local/yourface).</p>

<p>I also install common software in the global zone (e.g., Sun's compiler,<br />
Webstack or MySQL) and then loopback mount the /opt directory into each zone<br />
that needs it (every zone gets SSPRO).</p>

<p> * Delegate a ZFS dataset to each zone</p>

<p>This allows the zone administrator to create ZFS filesystems inside the zone<br />
without asking the global admin. Something like rpool/zones/www1/tank. It's<br />
easier to manage programmically too, if you are using something like Puppet<br />
(see below) to control your zones. You only have to edit a single class (the<br />
zones) when migrating the zone between systems.</p>

<p> * Use ZFS Features</p>

<p>No, really. Make sure your ZFS pools are in a redundant configuration! ZFS<br />
can't automatically repair file errors if it doesn't have another copy of the<br />
file.</p>

<p>But: ZFS does more for you than just checksumming your data and ensuring it's<br />
valid. You also have compression, trivial snapshots, and the ability to send<br />
those snapshots to other Solaris systems.</p>

<p>Writing a script that snapshots, zfs sends | ssh host zfs recvs is trivial. I<br />
have one in less than 50 lines of shell. It gives you streaming, incremental<br />
backups with basically no system impact (depending on your workload,<br />
obviously).</p>

<p>Note that if disk bandwidth is your major bottleneck, enabling compression can<br />
give you a major performance boost. We had a workload writing constantly<br />
rewriting 30,000 sqlite databases (which reads the file into memory, creates<br />
temp files, and writes the entire file to disk -- which are between 5MB and<br />
2GB). It was incredibly slow until I enabled compression, which gave us a 4x<br />
write boost.</p>

<p>You can also delegate ZFS filesystems to your users. This lets them take a<br />
snapshot of their homedir before they do something scary, or whatever.</p>

<p> * Use the Jumpstart Enterprise Tool</p>

<p>Even though you only have one Solaris system, if you're new to Solaris, the<br />
chances are you're going to screw up your first couple installs. I spent months<br />
trying to get mine just the I wanted. And guess what, installing Solaris is<br />
time-consuming and boring.</p>

<p>Using JET (a set of wrappers around Jumpstart, which can also be annoying to<br />
configure), you have a trivial way of reinstalling your system just the way you<br />
want. I run JET in a virtual machine, but most large installs would have a<br />
dedicated install VLAN their install server is plugged into.</p>

<p>Solaris installs have a concept of "clusters", which define which packages are<br />
instaled. I use RNET, the smallest one. It basically has nothing. I tell JET to<br />
install my extra packages, and the systems are configured exactly how I want.</p>

<p>You use the finish scripts to do basic configuration after the install, and<br />
to configure the *rest* of the system and applications, you...</p>

<p> * Use a centralized configuration management tool</p>

<p>I use Puppet. It makes it trivial to configure the system programmically,<br />
manager users and groups, and install zones. It's a life and timesaver. In<br />
addition to making your system configuration reproducible, it *documents* it.</p>

<p>Puppet manages both our Solaris and Linux boxes, keeping each in a known,<br />
documented configuration. It's invaluable.</p>

<p>I also store all my user skel in source control (see next), and distribute them<br />
with Puppet. Users may be slightly annoyed that they have to update the<br />
repository whenever they want to change ~/.bash_profile, but it will be the<br />
same on *every* host/zone they have access to, without them doing any work,<br />
which will make them very happy.</p>

<p> * Store your configs in a source control manager</p>

<p>Both your change management and your system configuration should all be<br />
versioned. Usefully, you can use your change management to manage your system<br />
configs!</p>

<p>We have an internal directory called /sw where we deploy all our software to.<br />
Older services have configs hard-coded to other locations, so we use Puppet to<br />
ensure symlinks exist as appropriate. We deploy to /sw with a script that<br />
checks the tree out of git and rsyncs it to all machines. It's pretty trivial,<br />
and very useful if you have more than, say, two hosts.</p>

<p>/sw is also a loopback mount into every zone, and read-only. It enforces the<br />
idea that all config changes must go into the repository, *not* be changed<br />
locally... because developers can't write to /sw just to fix something quickly.</p>

<p> * Solaris Sucks At: Logging, by default</p>

<p>The default logging setup is awful. Install syslog-ng from pkgsrc, and write<br />
your logs to both a remote syslog server and the local disk (enable compression<br />
on your logs ZFS filesystem!)</p>

<p> * Solaris Sucks At: Firewalling</p>

<p>ipf is a pain in the butt. Unless you absolutely have to do host-based<br />
firewalling, set up an OpenBSD system and use pf.</p>

<p>...</p>

<p>I'm sure I could think of quite a lot more (DTrace, Brendan Gregg's DTrace<br />
Toolkit, RBAC, mdb), but it's dinnertime. :)</p>

<p>Hopefully the above will prove somewhat useful!<br />
-- <br />
bda<br />
cyberpunk is dead. long live cyberpunk.</p>

<p><br />
</div></p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/07/adventures_on_the_sun_part_iv.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/07/adventures_on_the_sun_part_iv.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Wed, 01 Jul 2009 20:25:03 -0500</pubDate>
      </item>
            <item>
         <title>I asked for that one.</title>
         <description><![CDATA[<p>Watching <em><a href="http://www.imdb.com/title/tt0462465/">Outlander (2008)</a></em>, and spamming irk while doing so. It stars James Caviezel. You know. <a href="http://www.imdb.com/title/tt0335345/">Bondage Jesus</a>. He plays an alien who crashlands in Viking-era Norway (Earth being an abandoned alien seed colony).</p>

<p>At one point, Space Jesus has a bunch of Vikings building a trap for the Space Dragon.</p>

<div class="quote">

<p>&lt; bda&gt; "Is it deep enough for ya?" "No. Four more feet. And when you're done, I need two rows of postholes running up both sides." "Postholes. What do you need postholes for?" "...posts." "&lt;dirty face&gt;"<br />
&lt; bda&gt; Jesus needs a postholer.<br />
&lt; bda&gt; C'mon, no takers?<br />
&lt; bda&gt; "What does JESUS need with a POSTHOLER?!"<br />
&lt; rjbs&gt; I'm not going there.<br />
&lt; rjbs&gt; Nobody fucks with the Jesus.<br />
&lt; ejp&gt; I was going to say something, but I got hung up.<br />
 * bda groans.<br />
&lt; ejp&gt; happy to help.</p>

</div>

<p>It's a pretty decent Beowulf story, with surprise John Hurt and Ron Perlman. Hard to argue with that.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/05/i_asked_for_that_one.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/05/i_asked_for_that_one.shtml</guid>
         <category>irk</category>
         <pubDate>Thu, 28 May 2009 23:41:35 -0500</pubDate>
      </item>
            <item>
         <title>DAGGER OF THE MIND</title>
         <description><![CDATA[<div class="quote">

<p>bda<br />
Starting hypnosis next week.<br />
That should be alarming.</p>

<p>kitten<br />
For what?</p>

<p>bda<br />
To learn how to hack my brain.</p>

<p>kitten<br />
Uh.. huh.<br />
They tried that with me once.<br />
Didn't work.</p>

<p>bda<br />
That's what they want you to think, but you still bark anytime anyone asks you the time.</p>

</div>]]></description>
         <link>http://mirrorshades.org/overflow/2009/05/dagger_of_the_mind.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/05/dagger_of_the_mind.shtml</guid>
         <category>Life</category>
         <pubDate>Wed, 20 May 2009 17:10:47 -0500</pubDate>
      </item>
            <item>
         <title>ZZZ Top.</title>
         <description><![CDATA[<p>A nice high-level <a href="http://omniti.com/seeds/virtualization-zfs-and-zetaback">writeup</a> by OmniTI's Mark Harrison on Zones, ZFS, and Zetaback.</p>

<p>[via <a href="http://lethargy.org/~jesus/">Theo S.</a>]</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/04/zzz_top.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/04/zzz_top.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Thu, 16 Apr 2009 06:49:37 -0500</pubDate>
      </item>
            <item>
         <title>Console to LOM.</title>
         <description><![CDATA[<p>I've been meaning to blog this for a while. Very useful in Jumpstart finish scripts.</p>

<div class="quote">

<p>eeprom console=ttyb<br />
eeprom ttyb-mode="115200,8,n,1,-"<br />
echo "name=\"asy\" parent=\"isa\" reg=1, 0x2f8 interrupts=3;" >> /kernel/drv/asy.conf<br />
svccfg -s system/console-login setprop ttymon/label = 115200<br />
svcadm refresh system/console-login<br />
svcadm restart system/console-login<br />
perl -pi -e 's/^splashimage/#splashimage/' /rpool/boot/grub/menu.lst<br />
perl -pi -e 's/$ZFS-BOOTFS$/$ZFS-BOOTFS,console=ttyb/' /rpool/boot/grub/menu.lst<br />
bootadm update-archive</p>

<p>reboot</p>

</div>]]></description>
         <link>http://mirrorshades.org/overflow/2009/04/console_to_lom.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/04/console_to_lom.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Wed, 08 Apr 2009 03:24:03 -0500</pubDate>
      </item>
            <item>
         <title>zpool offline oddity.</title>
         <description><![CDATA[<p>So I have a device failing in one of my zpools:</p>

<div class="quote">

<p>                            extended device statistics       ---- errors --- <br />
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b s/w h/w trn tot device<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 fd0<br />
    0.0    2.0    0.0    8.0  0.0  0.0    0.0    0.1   0   0   1   0   0   1 c0t0d0<br />
    0.0    2.0    0.0    8.0  0.0  0.0    0.0    0.1   0   0   1   0   0   1 c0t1d0<br />
    0.0    0.0    0.0    0.0  0.0 10.0    0.0    0.0   0 100   1   3   4   8 c0t2d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c0t3d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t2d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t3d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t4d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t5d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 c2t0d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 c3t0d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   6   2   0   8 c4t0d0<br />
                            extended device statistics       ---- errors --- <br />
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b s/w h/w trn tot device<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 fd0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c0t0d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c0t1d0<br />
    0.0    0.0    0.0    0.0  0.0 10.0    0.0    0.0   0 100   1   3   4   8 c0t2d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c0t3d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t2d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t3d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t4d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   1   0   0   1 c1t5d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 c2t0d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   0   0   0   0 c3t0d0<br />
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0   6   2   0   8 c4t0d0</p>

</div>

<p>etc...</p>

<p>It's part of a mirror:</p>

<div class="quote">

<p>  pool: tank<br />
 state: ONLINE<br />
status: One or more devices has experienced an unrecoverable error.  An<br />
        attempt was made to correct the error.  Applications are unaffected.<br />
action: Determine if the device needs to be replaced, and clear the errors<br />
        using 'zpool clear' or replace the device with 'zpool replace'.<br />
   see: http://www.sun.com/msg/ZFS-8000-9P<br />
 scrub: none requested<br />
config:</p>

<p>        NAME        STATE     READ WRITE CKSUM<br />
        tank        ONLINE       0     0     0<br />
          mirror    ONLINE       0     0     0<br />
            c0t2d0  ONLINE       0     6     2<br />
            c0t3d0  ONLINE       0     0     0<br />
          mirror    ONLINE       0     0     0<br />
            c1t2d0  ONLINE       0     0     0<br />
            c1t3d0  ONLINE       0     0     0<br />
          mirror    ONLINE       0     0     0<br />
            c1t4d0  ONLINE       0     0     0<br />
            c1t5d0  ONLINE       0     0     0</p>

<p>errors: No known data errors</p>

</div>

<p>So I reckon I'll just <code>offline</code> it and go replace it.</p>

<div class="quote">

<p>[20090401-17:20:12]::[root@shoal]:[~]$ zpool offline tank c0t2d0<br />
cannot offline c0t2d0: no valid replicas<br />
[20090401-17:31:15]::[root@shoal]:[~]$ </p>

</div>

<p>err... what?</p>

<p>So I <code>detach</code> it from the mirror instead, which does work.</p>

<p>I ask <a href="http://blogs.sun.com/jmcp/">jmcp</a> if he has any insight into why this might be, and after a few minutes he asks if disconnecting the device works.</p>

<div class="quote">

<p>[20090401-18:01:57]::[root@shoal]:[~]$ cfgadm -c disconnect c0::dsk/c0t2d0<br />
cfgadm: Hardware specific failure: operation not supported for SCSI device</p>

</div>

<p>So that's the culprit, I think. A <code>disconnect</code> is implicit when doing a <code>zpool offline</code>?</p>

<p>Not a good error to throw back to the user, either.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/04/zpool_offline_oddity.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/04/zpool_offline_oddity.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Wed, 01 Apr 2009 18:06:33 -0500</pubDate>
      </item>
            <item>
         <title>Building ap-ssl@pkgsrc on Linux.</title>
         <description><![CDATA[<p>So Linux has a history of hosed db interfaces. Apache worked around this about ten years ago by including their own SDBM in their distribution.</p>

<p>pkgsrc separates their Apache packages into DSOs. So mod_perl, mod_fastcgi, mod_ssl, etc, are built as separate packages. However, when you compile Apache1 with no SSL, it disables SDBM, so mod_ssl (which requires some sort of DBM) fails.</p>

<p>The PR is <a href="http://www.NetBSD.org/cgi-bin/query-pr-single.pl?number=27073">here</a>.</p>

<p>My workaround was to do this:</p>

<div class="quote">
ap-ssl$ bmake patch

<p>ap-ssl$ vi /usr/pkg/pkgsrc/www/ap-ssl/work/mod_ssl-2.8.31-1.3.41/pkg.sslmod/libssl.module</p>

</div>

<p>Search for the first instance of APXS.</p>

<p>Add the following two lines <em>above</em> it:</p>

<div class="quote">
APXS_MODE="yes"

<p>my_rule_SSL_SDBM="yes"</p>

</div>

<p>And ap-ssl will compile happily.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/03/building_apsslpkgsrc_on_linux.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/03/building_apsslpkgsrc_on_linux.shtml</guid>
         <category>Linux</category>
         <pubDate>Wed, 18 Mar 2009 23:51:04 -0500</pubDate>
      </item>
            <item>
         <title>Toil and trouble.</title>
         <description><![CDATA[<p>Over the last two weeks we (read: rjbs) migrated our Subversion repositories to git on GitHub. I was not very pleased with this for the first week or so. By default, I am grumpy when things that (to me) are working just fine are changed, especially at an (even minor) inconvenience to me. That is just the grumpy, beardy sysadmin in me.</p>

<p>After a bit more talking to by rjbs, things are again smooth sailing. I can do the small amount of VCS work I need to do, and more imporantly: I am assured things I don't care about will make the developers lives much, much less painful, which is something I am certainly all for.</p>

<p>git is <em>much</em> faster than Subversion ever was, and I can see some features as being useful to me eventually. Overall, though, what I use VCS for is pretty uninteresting, so I don't have much else to say about it.</p>

<p>I had a couple basic mental blocks that rjbs was able to explain away in a 20 minute talk he gave during our bi-weekly iteration meeting. It was quite productive. There are <a href="http://www.flickr.com/photos/packetdump/archives/date-posted/2009/03/01/">pictures</a>.</p>

<p>Work has otherwise consisted of a lot of consolidation. I have finally reduced the number of horrible systems to two. Yes. Two. Both of which are slated for destruction in the next iteration. Not only that, I have found some poor sucker (hi, Cronin!) to take them all off our hands. Of course, they'll be upgrading from PIIIs, so...</p>

<p>I also cleaned up our racks. A lot. They are almost clean enough to post pictures of, though I'll wait until I've used up more of the six rolls of velcro Matt ordered before doing that.</p>

<p>Pretty soon we'll have nothing but Sun, a bit of IBM, and a very small number of SuperMicros. My plans are to move our mail storage from the existing SCSI arrays to a Sun J4200 (hopefully arriving this coming week). 6TB raw disk, and it eats 3.5" SATA disks, which are ridiculously cheap these days. I really, really wanted an Amber Roads (aka OpenStorage) J7110, but at 2TB with the cost of 2.5" SAS, it was impossible to justify. If they sold a SATA version at the low-end... there has been some noise about conversion kits for Thumpers, but that's also way outside our price range.</p>

<p>I doubt conversion support will become more common, but if I could turn one of our X4100s and the J4200 into an OpenStorage setup, I would incredibly happy. If you haven't tried out the OpenStorage Simulator, I suggest you do so. Analytics is absolutely amazing.</p>

<p>People on zfs-discuss@ and #opensolaris have been talking about possible GSoC projects. I suggested a zpool/filesystem "interactive" attribute, or "ask before destroy." However you want to think of it. Someone else expanded on that, suggesting that -t be allowed to ensure that only specified resource types can be destroyed. I have yet to bone myself with a `zfs destroy` or `zpool destroy` but the day <em>will</em> come, and I <em>will</em> cry.</p>

<p>I see a pkgsrc upgrade in my near future. I've been working on linking all our Perl modules against it, and I want to get the rest of our internal code linking against it as well. It will make OS upgrades so, so much easier. Right now, most code is either linked to OS libraries or to an internal tree (most of which also links to OS libraries).</p>

<p>We've almost gotten rid of all our Debian 3.1 installs, which is... well. You know. Debian 5.0 just came out, and we've barely gotten moved to 4.0 yet. Getting the upgrade path there sorted out will thankfully just be tedious, and require nothing clever.</p>

<p>I really hope that the Cobbler guys get Debian partitioning down soon, and integrate some Solaris support. I tried redeploying FAI over Christmas and man, did it so not work out of the box. I used to use FAI, and was quite happy with it. I had to hack it up, but... it worked pretty well. Until it stopped.</p>

<p>If Cobbler had Solaris support, I would seriously consider moving our remaining Linux installs to CentOS. We use puppet already, so in many ways Cobbler is a no-brainer. We are not really tied to any particular Linux distribution, and having all our infrastructure under a single management tools ken would be really nice. To put it mildly.</p>

<p>30% curious about OpenSolaris's Automated Installer project, but it's so far off the radar as to be a ghost.</p>

<p>I picked up John Allspaw's <em>The Art of Capacity Planning</em>, and it's next on my book queue. Flipping through it makes me think it's going to be as useful as Theo S.'s <em>Scalable Internet Architectures</em>.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/03/toil_and_trouble.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/03/toil_and_trouble.shtml</guid>
         <category>Work</category>
         <pubDate>Sun, 01 Mar 2009 02:46:58 -0500</pubDate>
      </item>
            <item>
         <title>Previously, on...</title>
         <description><![CDATA[<p>What with all my <a href="http://twitter.com/wastedcarbon/">microblogging</a>... well, anyway.</p>

<p>H is in Boston visiting her sister for the weekend, so I've been left to my own devices. Which seem to consist of many naps, baths, and lots of reading. I finished <em>The Iron Dragon's Daughter</em>, by Michael Swanwick. Nothing I'd recommend to anyone. Maybe to people who enjoy Laurrel K. Hamilton and are looking at a poor gateway to better fiction. Started the sequel, <em>The Dragons of Babel</em>, which is much, much better.</p>

<p>Beyond that, I've done little. The XBOX 360 is still broken (bloody Microsoft) and I haven't had the mental power to get over to Gamestop to get it replaced yet. I should do that. H is no doubt missing rocking out, and I'm sort of interested in <em>Dead Space</em> after hearing rjbs and a few other guys on IRC talk about it for a couple weeks now.</p>

<p>Tonight I apparently missed out on Social Activities, thanks to napping and headphone usage. Phone being on mute probably didn't help much.</p>

<p>I made some edamame to snack on earlier (yum!) but should probably find something more akin to an actual meal. meh.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/03/previously_on.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/03/previously_on.shtml</guid>
         <category>Life</category>
         <pubDate>Sun, 01 Mar 2009 02:12:17 -0500</pubDate>
      </item>
            <item>
         <title>The Internet narrowly avoided a new meme.</title>
         <description><![CDATA[<p>Today Harry and I were walking to Five Guys to get some lunch and an old woman and her grandson had just gotten nailed by the PPA. She was doing this Old World Damn the Man Dance on the crumpled up parking ticket.</p>

<p>Philadelphia was very colorful today.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2009/01/the_internet_narrowly_avoided_a_new_meme.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/01/the_internet_narrowly_avoided_a_new_meme.shtml</guid>
         <category>Life</category>
         <pubDate>Sat, 31 Jan 2009 17:08:03 -0500</pubDate>
      </item>
            <item>
         <title>A likely story.</title>
         <description><![CDATA[<div class="quote">

<p>Andy Zebrowitz<br />
ahaha.</p>

<p>Bryan Allen<br />
?</p>

<p>Andy Zebrowitz<br />
Hang on. ^_^</p>

<p>Bryan Allen<br />
uh.</p>

<p>Andy Zebrowitz<br />
Shut up.<br />
I already know what you're going to say.</p>

<p>Bryan Allen<br />
What?</p>

<p>Andy Zebrowitz<br />
The colon/semicolon key is broken, okay?</p>

<p>Bryan Allen<br />
mm.</p>

</div>]]></description>
         <link>http://mirrorshades.org/overflow/2009/01/a_likely_story.shtml</link>
         <guid>http://mirrorshades.org/overflow/2009/01/a_likely_story.shtml</guid>
         <category>irk</category>
         <pubDate>Wed, 28 Jan 2009 00:35:20 -0500</pubDate>
      </item>
            <item>
         <title>Per-filesystem ZFS stats</title>
         <description><![CDATA[<p><a href="http://mail.opensolaris.org/pipermail/zfs-discuss/2008-September/051037.html">fsstat `zfs list -H -o mountpoint -t filesystem | egrep '^/'` 2 20</a></p>]]></description>
         <link>http://mirrorshades.org/overflow/2008/12/perfilesystem_zfs_stats.shtml</link>
         <guid>http://mirrorshades.org/overflow/2008/12/perfilesystem_zfs_stats.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Sat, 27 Dec 2008 08:57:07 -0500</pubDate>
      </item>
            <item>
         <title>Sun Blueprint: Zone Security Capabilities</title>
         <description><![CDATA[<p><a href="http://wikis.sun.com/display/BluePrints/Understanding+the+Security+Capabilities+of+Solaris+Zones+Software">Understanding the Security Capabilities of Solaris Zones Software</a></p>]]></description>
         <link>http://mirrorshades.org/overflow/2008/12/sun_blueprint_zone_security_capabilities.shtml</link>
         <guid>http://mirrorshades.org/overflow/2008/12/sun_blueprint_zone_security_capabilities.shtml</guid>
         <category>Systems Administration</category>
         <pubDate>Sat, 27 Dec 2008 07:37:12 -0500</pubDate>
      </item>
            <item>
         <title>Trailer for &quot;9&quot;</title>
         <description><![CDATA[<center>

<p><object width="450" height="237"><param name="movie" value="http://www.filmroster.com/player/embed.swf?xml=http://www.filmroster.com/eplaylist/223&autostart=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.filmroster.com/player/embed.swf?xml=http://www.filmroster.com/eplaylist/223&autostart=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="237"></embed></object></p>

</center>
]]></description>
         <link>http://mirrorshades.org/overflow/2008/12/trailer_for_9.shtml</link>
         <guid>http://mirrorshades.org/overflow/2008/12/trailer_for_9.shtml</guid>
         <category>Movies</category>
         <pubDate>Sat, 27 Dec 2008 06:16:24 -0500</pubDate>
      </item>
            <item>
         <title>Gonzo bugs.</title>
         <description><![CDATA[<p>&lt; bda&gt; Dude.<br />
&lt; bda&gt; So I'm in bed reading and hear buzzy flapping coming from my desk.<br />
&lt; bda&gt; Like a moth on a lightbulb.<br />
&lt; bda&gt; So I look at my lamp and there's some shit going down behind the bulb. I can see some movement through the holes in the back, by the switch.<br />
&lt; bda&gt; So I wait for shit to resolve itself, thinking "A moth got caught back there? Weird."<br />
&lt; bda&gt; But I don't see any wings or antenna, and it seems to have an awful lot of legs for a moth.<br />
&lt; bda&gt; Finally it stops moving and I take a closer look, through the holes.<br />
&lt; bda&gt; A fucking spider went into my lamp after a fly and fried itself!<br />
&lt; bda&gt; Now I'm worried a fucking bird is going to fly into the damn thing!<br />
&lt; robf&gt; I guess not every insect can be on the varsity team.</p>]]></description>
         <link>http://mirrorshades.org/overflow/2008/12/gonzo_bugs.shtml</link>
         <guid>http://mirrorshades.org/overflow/2008/12/gonzo_bugs.shtml</guid>
         <category>irk</category>
         <pubDate>Sat, 13 Dec 2008 17:06:51 -0500</pubDate>
      </item>
      
   </channel>
</rss>
