- Command Prompt
Updated: Aug 12, 2019
Hi. This is Dave. Pleasedtameetcha.
I’m spending a lot more time doing behind the scenes, big-picture IT these days, and it’s an odd change of pace compared to the more traditional, I’ll-jump-in-the-car-and-fix-things approach. Not a bad change of pace, but an odd one. I seem to spend less time frowning at things while onsite with clients and a lot more time frowning at things remotely on a little screen, which is fundamentally the same experience with the notable exception that I can use saltier oaths now and mutter more.
A big part of what I’m doing could be categorized as future-proofing. It’s an interesting time in the whole macOS/iOS ecosystem, and while the changes at foot aren’t entirely sea changes they’re nonetheless significant ones of a degree not dissimilar to the move from classic MacOS to Mac OS X. iOS 11 has peeked over the horizon and is approaching rapidly, and while High Sierra isn’t on the surface a massive upgrade over Sierra there’s a lot of stuff going on there that makes it prospectively challenging.
I like the look of iOS 11. I’ve always maintained that there’s a clarity in reduction – doing less with more. I use a 2015 MacBook as my main computer because it’s the smallest laptop I could get with a decent screen and battery life, and because I don’t mind just having the one USB-C port. Hell, if I could get by with just using my iPhone as my work machine then I’d go with that, but failing that option I’ve always thought that an iPad would be an excellent laptop replacement.
Except that iOS, well, sucks. Okay, that’s not fair: iOS is great for what it does, but my frustration with it is that it’s historically walked right up to the line of being a true replacement for a work laptop and just sort of stopped there, toes on the edge, looking over into the abyss with a diffident expression. The approach of sandboxing each app is outstanding from a mobility and security point of view, but I hated the fact that you couldn’t make elements from different apps interact (well, that and the lack of a native shell – but that’s rather a lot to hope for and I’ve given up on that). I watched the WWDC keynote just like everyone else, saw what they’d done with the Files app and the *very* macOS-like dock, and then looked at my laptop as if it were some old, incontinent-yet-faithful dog. Maybe I could lose a pound out of my work bag, vastly increase battery life, and put Old Yeller out to chase rabbits. Which is how the book ends in my world.
But the really interesting thing to come out of WWDC was APFS. I’m playing around with it now and there’s a lot to dig into; this is the first shift to a fundamentally new file system since 1998 brought us HFS+ and yes, that’s nineteen years ago which makes me feel very old. It’s in some ways a product indicative of where Apple is right now, and that’s kind of interesting.
Back when the Mac first hove into view in 1984 it ran on the creatively named Macintosh File System (MFS), which was functional but limited enough that it was replaced with Hierarchical File System (HFS) a year or so later. HFS was a media-based upgrade over MFS in that MFS was designed to work great when you were running it from a floppy but didn’t scale to larger storage like hard drives. Apple intelligently enough came up with a system of replacing the flat catalog of what-file-is-where (which worked well when you were dealing with a small storage device) with the vastly more effective approach of using a B-tree structure to allow the fast storage and retrieval of file location data, making it massively easier to search files on a larger drive.
In the same mold, HFS+ was largely in response to increased data storage sizes. When HFS was put into commission it would work with the unimaginably vast amounts of storage offered by a twenty-megabyte external SCSI drive, but when you scaled up to volumes in the multiple-gigabyte range then it became almost untenably slow and the approach of having files occupy a logical block meant that even very tiny files could use up a disproportionate amount of space. HFS+ tore that all down by replacing those logical blocks with much smaller 32-bit sectors, as well as increasing the amount of characters you could name a file and offering support to an exponential degree. Later on we got Journaling tacked on top, and all was right with the world.
So, why move to APFS? Lots of small reasons and a few big ones. Based on the reading and poking around with the thing I think they can be reasonably divided up via the magic of bullet points.
• It’s a media-driven update. Now that almost all (if not all) Desktop and Laptop Macs come from the factory with some kind of Flash/SSD/Fusion Drive bolted inside, it makes sense to accommodate that by replacing HFS+ with something that can accommodate the specifics of that new technology. APFS supports the TRIM command right out of the box, and it’s approach of writing changes to files as opposed to physically copying files leverages the speed of the newer, non-rotational-disk technology to deliver a lot of speed and security.
• Getting Fusion Drives to work in prior versions of macOS was something handled by CoreStorage. HFS+ had no idea what the heck a Fusion Drive was, so CoreStorage stepped in to make it all nice; but now APFS understands all about Fusion Drives. This is a good thing, but I wonder how that will effect the old break-the-fusion-drive-to-get-two-mirrorable-devices trick. Time will tell.
• Time Machine is great in theory but in practice slow and beastly. Not that there’s anything fundamentally wrong with Time Machine itself; rather that the process of writing out vast amounts of data and keeping track of the versioning and snapshots put a lot of overhead on a system – overhead that APFS will *drastically* reduce.
• APFS volumes will be shareable on a network via SMB and NFS. AFP over TCP is done, period. It’s due for retirement, and I hope it gets a gold watch and a hearty handshake and enjoys its twilight years. It’s earned it. Of course, that now means that if you’re implementing a new Mac Server then you should probably give a lot of careful thought about your client machines and what OS they should be running; doubling down on SMB is great, but history has shown that differences in the implementation of the SMB stack between client and server machines has occasionally proven problematic – which is a nice way of saying that it can be slow and broken and hateful.
Those are (so far) my major takeaways from APFS. It’s an update that I think is likely to change a lot of important professional/prosumer system designs in a lot of unglamorous but pretty essential ways – but it’s way overdue and absolutely worth embracing…