126: Low Distress Tolerance

I finished the OpenZFS Mastery chapter on volumes earlier this week.

Zvols support sparse volumes, also known as thin provisioning or overcommitting storage. A sparse volume is a volume that reserves less space than the volume actually needs. Sparse volumes permit allocating more space than the pool has available. You could, for example, create ten 1-exabyte sparse volumes on your 1 TiB dataset. So long as your volumes are never heavily used, nobody will notice that you’re overcommitted. Sparse volumes can be useful if you’re prepared to add more disks. Using a sparse volume means you can tell the Windows host that a disk is a specific large size, even if the underlying pool doesn’t have that much free space.

Sparse volumes are not generally recommended. If the pool fills up but the sparse volumes think they have space remaining, writes will fail with an “out of space” error. Guests will get errors they can’t hope to resolve. Windows in particular has low distress tolerance.

I’d appreciate your support keeping the rats fed as I finish writing this book.

125: A Useful Quirk

I’m trying to finish up the OpenZFS Mastery chapter on disk space use today. Well, my part of it. I’m planning to dump–delegate, delegate–the section on deduplication to Allan. When you have a co-author expert, use them.

Zstd offers compression levels from 1 to 19. The default is zstd-3, a reasonable compromise between performance and efficiency. Writing data at higher compression levels require more CPU but might save more space. Zstd has a useful quirk where decompressing higher levels uses no more processing power than decompressing lower levels. If you have data that must be written once but read many times, increasing the compression level makes sense.

ZFS still supports gzip compression, but Zstd is always faster and achieves better results while using less processor and memory.

ZFS also offers the ZLE algorithm, for data with long runs of zeroes. Some file formats, such as GIFs and certain scientific data, include long runs of zeroes. If you have a dataset for such data, you might find ZLE compression useful.

How does one realistically tell if your data has long runs of zeroes? The simplest way I know is to pass it across a T1 with 23 channels set to b8zs but one channel stuck on AMI. Such a circuit cannot pass large all-zero packets. Sadly, this recommendation does not suit a book on filesystems.

I would appreciate your help keeping the lights on as I finish this book.

Changing Language for Storage Capacity

Back in the 90s a notably pedantic coworker informed us ignorant peasants that, according to International Electrotechnical Commission standard IEC 80000-13:2008, disks and memory were now to be measured in “bi” units such as kibibyte and mebibyte. I agreed that he was technically correct, but nobody cared and saying “mebibytes” made you sound like either a pedant or an idiot.1 For all practical system administration purposes, the difference between a 1.544 MB floppy and a 1.544 MiB floppy was negligible. Yes, the operating system showed everything in mebibytes, but everything was labeled as being megabytes, and we all knew what it means.

This is no longer true.

My main test host has six hard drive bays. Each has a 3 TB drive, which is only 2.7 TiB. The operating system shows everything in binary-based tebibytes. I bought 18 TB of storage and got only 16.3 TiB.

People look to my books for information to keep their jobs. That missing two TiB is part of the information. If you’re doing capacity planning, it’s vital. From now on, my books need to use bi units for most storage.

In some cases, it looks stupid. Disks are also sold with 4K sectors. The package says that. “K” is an ambiguous label. It could mean kilobytes or kibibytes. Technically, disk sectors are kibibytes. I think I’ll just keep calling them 4K disks.

Memory? I want to say that nobody cares and that everybody knows what we mean. I don’t run any applications that use terabytes of memory, and for routine system administration tasks the difference between 32 GB and 32 GiB is negligible. But someone does care, and mixing GB of RAM with TiB of storage seems odd. Dang it. I think I have to be pedantic.

But in the 90s? Nobody cared, and we all knew what we meant. Unless you worked in embedded systems.

124: Clones Can Grow

I’m writing about space usage OpenZFS Mastery.

ZFS offers tools to transparently increase the amount of data you can fit on a disk. Rather than requiring the system administrator to compress and decompress individual files, ZFS uses efficient compression at the filesystem level. While compressing logs during rotation makes the files look smaller in ls(1), it doesn’t change how many disk blocks those logs use. Snapshots and clones let you duplicate entire datasets with only a tiny amount of space. ZFS can also perform deduplication of files, improving disk usage at the cost of memory. We’ll see how to evaluate these options and determine when to use each.

If ZFS is so transparent, why is space usage complicated? Child datasets affect their parents. Those space-efficient clones can grow, and snapshots can prevent freeing space.

I’d appreciate your help keeping the lights on while I finish this book.

Cover Font Headaches

I commission custom art for the IT Mastery books, but do the text layout myself. Most often, I use the Minion Pro for the body font and Myriad Pro for the display font. They’re staid, reliable, and unremarkable. On rare occasion, the topic demands a particular font. That’s straightforward; I must distort the design until the font fits.

When a book requires a specific kind of font, but not a single font, things get hard.

The cover for OpenZFS Mastery is an old Mediterraniean vase. It needs a font that looks like it’s from the Roman Empire or ancient Greece. There’s lots of fonts for that, no?

Yes. Hundreds of fonts.

Each promising candidate needs a test cover. Here’s some of what I’ve run through trying to find one that works.

Baselius font

This is a nifty font. I like the central line. The title doesn’t really stand out, though. Next candidate.

Elektra font

The title stands out better, but looks kind of… janky?

Maybe a different approach.

Romanicum font

That flows too well. It looks modern, not like it was carved into unbaked clay. Try again.

The font is named “Greco-Roman Lubed Wrestling.” Seriously.

I like the look of this font, but the title doesn’t stand out well enough.

Adonias font

Okay, this is pretty good. The title stands out nicely and is legible at a distance. The U is kind of odd, making the author names look like JLIDE and LLKAS.

After spending a couple hours searching through fonts, I have exhausted my visual analysis energy. Adonias it is, for now. I’ll see if I can find better some other day.

When you wonder why cover designers charge so much? This is why.

July’s Jangada Sausage

This post went to Patronizers in July and to the public in August. Not a Patronizer? You could be!

It’s 98F outside and will remain so for the foreseeable future. Settling into the new apartment continues. My master plan for a smaller desk I can wheel onto the balcony is almost complete, but it’s 98F outside. I did go to the dojo yesterday despite the heat, but I think going tonight would be pushing my limits. Fortunately, my physical labor of getting our home ready to sale is done and I don’t have to go out in it. Other people are working on the house, preparing it for sale, and I don’t have to go back until next week. The divorce is in the court’s hands and everyone’s waiting.

Which means I have a week to catch up, starting with getting the monthly See the Sausage Being Made article back on the schedule I prefer. It feels like putting out to sea in a raft designed by observing nature rather than a knowledge of physics.

I’ve been reading the OpenZFS Mastery manuscript, tweaking tidbits here and there in the beginning. I hope to build up momentum so that when I reach the point where I stopped writing, I just keep going. This technique has worked well for me in the past and I’m hopeful it will again. Besides, I have nothing to do but hide indoors and write, because 98F.

No bright idea survives contact with reality, so I’m still rearranging the apartment. I had set up my test server under my desk, as one does, and configured a wireless bridge to give it Ethernet. It worked fine. I want to kill the power to the office when I’m not working, however. I call the test server as such because it hosts the VMs I use for testing, and it has eight hard drive bays for ZFS testing. I have a couple projects that I want to write about next that would benefit from having a production server running 24/7. I’ve relocated the test host to the living room and plugged it directly into the demarc switch. In my copious free time I’ll be configuring a DNS server and a netflow collector on it. That’ll let me play with things like DNS-based ad blocking and IPv6 analysis, two topics that will play against each other. The software license on my streaming media TV permits it to use my bandwidth during off hours to pillage web sites to feed AI scumbags? First, how dare. Second, turn off the TV at the power strip when not in use. But log its DNS queries so you can send those queries to oblivion, and analyze the traffic so you can feed it garbage? That’s the goal. Plus, you know, solving actual sysadmin problems. But mostly grinding my personal axes, the source of my best books.2

Earlier today, I got a message on the Run Your Own Mail Server Kickstarter. It ended in 2024, but a backer had missed both the original download link and the second download link I posted for folks who missed the first one. Two years. I don’t mind resending a download link, but when does Kickstarter fulfillment stop? I hired a naturally organized and disciplined person to shepherd physical fulfillment, so I’m confident that future books will have less drama. If someone fills out a backer survey two years after the campaign ends, should I interrupt everything to ship them the book? Set aside a day a month to check for stragglers on every campaign I’ve ever run? I’m pondering saying something in the Kickstarter like “Fulfillment stops three months after the first shipment leaves my house.” If someone contacts me I can choose to be accommodating, but it also leaves me an exit if necessary. I generally want to be accommodating. I also need room to say “come on, it’s been four years and the thing you backed for no longer exists. I sent you four requests for your shipping address before giving up. We are done here.” I’d leave ebook download links up for a year, because that’s the easy way to be accommodating.

Speaking of fulfillment: all of the N4SA2e Defenestrated Edition copies are on their way. I appreciate everyone’s patience. If I had known or believed Liz and I were going to divorce I would not have run the Kickstarter. Oops, I need to update the SNMP MIB and the web site for it! Tomorrow, I guess. Maybe I’ll do the MIB tonight, that’s nice easy Perl and doesn’t involve any icky images. Book covers are overrated anyway.

If there’s interest, I’m also thinking of an all-Patronizer video hangout this month. It’s been a while since I’ve done one, but life is no longer overwhelming me. Any interest?

Oh! I have managed some original writing from scratch since moving out. The FreeBSD Journal Letters column on improving software quality came out well enough. The Journal has a new editor and is making some changes, which gives me new opportunities to be cranky. I had some fun with it. I also did an interview for the Escape From 2026 Bundle, where I talked singularities and orcdom. Writing that interview was the first time I’ve felt the words come alive in over a year. Oh crap–I owe Digital Reader backers a copy of Tiny Time Wars! And I must update the web site for it!

These fiction bundles where I say my book goes out of print when the bundle ends? They’re collections. I gathered a few of my alternate history and time travel tales into a file, put a cover on it, and boom–an exclusive! The stories are all available elsewhere, but this particular collection won’t ever be in stores. If I need a collection of time travel stories in stores, I’ll write another time travel story and make a different book.

Publishing is an absolute scam. I have no idea why you support me. But I sincerely appreciate it.

123: Excuses Weighed Nothing Against Ice

Probably jinxing myself by posting this, but: here’s a chunk from Twisted Presents.

Three nights ago had been the Longest Dark, the strongest night of the year. A night for the clan to come together and declare the year’s struggles, to mark the end of feuds and wars. Even living clanless and bereft, Mha had caught a whisper that her youngest daughter was in danger and had charged into battle. The magnificent fight had given Mha fresh cuts. She had defeated an elven wizard. Other orcs had honored her. December knew the truth, though. A daughter claimed by another clan no longer belonged to her mother, but she’d fought for her anyway. She’d had a flimsy cowhide of an excuse, but excuses weighed nothing against ice.

Soon she’d return to the barn. Back to her coal-fed stove and the sepulchral groom’s quarters where she rotted her days. For now, she bore December’s castigation.

Mha’s night-sight made the farmhouse’s lingering warmth a red rectangle. Humans had a holiday a few days after the Longest Dark, a holiday that Thorn’s neglectful nephew could not ignore. Thorn would return tomorrow but tonight, with nobody to feed the furnace, the snug farmhouse cooled.

Want to know when this will hit the world? Watch the Kickstarter.

122: Gawk at Others’ Past Mistakes

OpenZFS Mastery is starting to pick up momentum. Don’t look at it too closely. You might scare it.

First, note how ridiculously wide this VDEV is. A fourteen-disk VDEV will have suboptimal performance and experience slow death by fragmentation. Also, the devices were named badly. Now that drives have failed, it matters. But we’re not here to gawk at others’ past mistakes—uh, learning experiences. We’re looking at hardware failures.

This RAID-Z2 pool is in a degraded state. It’s missing not one but two disks. One of the drives showed a red light and was removed. The other failed silently. A RAID-Z2 VDEV can handle up to two disk failures. This pool has lost all redundancy. One more disk failure will destroy the pool. A pool without redundancy cannot self-heal, so if a file suffers bit rot, it will not be corrected. This pool is very vulnerable.

I’d appreciate your support while writing this silly thing.

121: Possibilities Multiply

OpenZFS Mastery is starting to roll lunch again. Hoping to get some intertia with it.

But create a dataset for each team, and give each site its own dataset within that parent dataset, and possibilities multiply. A team needs a copy of a web site for testing? Clone it. With traditional filesystems, you’d have to copy the whole site directory, doubling the space used and taking much, much longer. Clones use only the amount of space for the differences between the datasets and can be created instantaneously. When the team is about to deploy a new version of a site but wants a backup of the old site, they can create a snapshot. This new site probably uses a whole bunch of the same files as the old one, so you’ll reduce disk space usage. When the deployment inevitably goes horribly wrong, they can restore the old version by reverting to the snapshot. A particular web site needs filesystem-level performance tweaks, or compression, or some locally created property? Set it for that site. When you must change a ZFS property on all of the sites, make the change to the parent dataset and let the children inherit it.

OpenZFS Mastery is yet again open for sponsorships. Just like yesterday, and last month, and seemingly forever.