One reason why we have to do a major storage migration

We're currently in the process of migrating from our old fileserversto our new fileservers . We'redoing this by manually copying data around instead of anything lessuser visible and sysadmin intensive. You might wonder why, sincethe old environment and the new architecture are the same (withZFS, iSCSI backends, mirroring, and so on). One reason is that the ZFS 4K sector issue has forced our hands. But even if that wasn't there it turns outthat we probably would have had


The difference between Linux and FreeBSD boosters for me

A commentator on my entry about my cultural bad blood with FreeBSD said, in very small part:

I'm surprised that you didn't catch this same type of bad blood fromthe linux world. [...]

This is a good question and unfortunately my answers involve a certainamount of hand waving.

First off, I think I simply saw much less of the Linux elitism thanI did of the FreeBSD elitism, partly because I wasn't looking inthe places where it probably mostly occurred and


Why I don't like HTTP as a frontend to backend transport mechanism

An extremely common deployment pattern in modern web applicationsis not to have the Internet talk HTTP directly to your applicationbut instead to put it behind a (relatively lightweight) frontendserver like Apache, nginx, or lighttpd. While this approach has anumber of advantages, it does leave you with the question of howyou're going to transport requests and replies between your frontendweb server and your actual backend web application. While there are a number of options , one popularanswer is to just use HTTP; effectively you


My spam is (mostly) boring

I've mentioned a couple of times that I'm doing an experimentwith a sinkhole SMTP server to handle email forsome old addresses of mine that have become nothing but spam. WhenI started the experiment, what I think I expected to find was abunch of industrial spam operations, places that had my addressesfirmly anchored in spam lists and were sending their 'legitimate'email to them on a persistent basis, and maybe some interestingspammer behavior otherwise.

While there has been some of this and thereare


10G Ethernet is a sea change for my assumptions

We're soon going to migrate a bunch of filesystems to a SSD-based new fileserver , all at once. Suchmigrations force us to do full backups of migrated filesystems (to thebackup system they appear as new filesystems), so a big move means asudden surge in backup volume. As part of how to handle this surge, Ihad the obvious thought: we should upgrade the backup server that willhandle the migrated filesystems to 10G Ethernet now. The 10G transferspeeds plus the


Some notes on Python packaging stuff that wasn't obvious to me

A comment by Lars Kellogg-Stedman on this entry of mine wound up withme wanting to try out his lvcache utility , which is a Python programthat's packaged with a setup.py . Great, I thought, I know how toinstall these things.

Well, no, not any more. While I wasn't looking, Python packagingsystems have gotten absurdly complex and annoying (andyes, one of the problems is that there are more than one of them).My attempts to install lvcache


Where DTrace aggregates are handled for printing et al

DTrace, the system, is split into a kernel component and a userlevel component (the most obvious piece of which is the dtrace command). However the DTrace documentation has very little discussionof what features are handled where. You might reasonably ask whywe care; the answer is that anything done at user level can easilybe made more sophisticated while things done at kernel level mustbe minimal and carefully safe. Which brings us around to DTraceaggregates.

For a long time I've believed that DTraceaggregates had


How data flows around on the client during an Amanda backup

An Amanda backup session involves a lotof processes running on the Amanda client. If you're having aproblem with slow backups it can be somewherebetween useful and important to understand how everything is connectedto everything else and where things go.

A disclaimer: my current information is probably incomplete and itonly covers one case. Hopefully it will at least give people an ideaof where to start looking and how data is likely to flow around theirAmanda setup.

Let's start with an ASCII art process tree of


Explicit error checking and the broad exception catching problem

As I was writing yesterday's entry on a subtle over-broad try in Python , it occurred to me that oneadvantage of a language with explicit error checking, such as Go , is that a broad exception catching problemmostly can't happen, especially accidentally. Because you checkerrors explicitly after every operation, it's very hard to aggregateerror checks together in the way that a Python try block can fallinto.

As an example, here's more or less idiomatic Go code for thesame


The potential issue with Go's strings

As I mentioned back in Things I like about Go ,one of the Go things that I really like isits strings (and slices in general). From the perspective of aPython programmer, what makes them great is that creating stringsis cheap because they often don't require a copy. In Python, anytime you touch a string you're copying some or all of it and thiscan easily have a real performance impact .Writing performant Python code requires considering this carefully.In Go, pretty much