Happy birthday APFS, 7 years old today
eclecticlight.co
eclecticlight.co
https://arstechnica.com/gadgets/2016/06/zfs-the-other-new-ap...
Meanwhile, I’m expanding my ZFS single drives to mirrors and wondering why I can’t do the same with APFS. Apple should have embraced ZFS (and almost did, just like they almost embraced Ruby instead of Swift), but Apple is absolutely the worst offender when it comes to NIH syndrome.
APFS and ZFS have very different design goals.
That said though, they could obviously have supported both, but from their perspective it makes sense to design for the 90%+.
What are the advantages APFS has over ZFS, for lightweight systems or otherwise?
ZFS features like dedupe and data protection require a lot of RAM and run in the background;
filesystems optimized for different medias (HDD, SDD, WORM, etc) make different design choices.
https://arstechnica.com/gadgets/2016/06/a-zfs-developers-ana...
Dominic Giampaolo wrote BeFS, Spotlight, and now APFS.
In my 15-ish years running ZFS at home, the only time I’ve had corruption was when there was also noticeable hardware issues (cables, drives, enclosures). ZFS made them easy to deal with, but wouldn’t have helped if I wasn’t already running RAIDZ or mirrors. I’ve not looked recently, but in the past ZFS was extremely RAM hungry and relatively CPU expensive, not necessarily something optimized for mobile devices or battery life.
For single-disk non-checksummed, non-deduplicated storage, it's a lot of wasted code that a device with a "mere" gigabyte of RAM doesn't need. So APFS hits most of their needs: volume management + journal + better disk layout for SSD.
do you have any more information about this?
Ruby’s object model is relatively similar to objc - no direct member access outside the object, everything is loosely coupled messages with dynamic runtime, you could get away with duck typing in some cases in objc using `id` types (at the expense of getting type checks from the compiler).
I don’t think it was ever intended at the next system language, though. It was just a convenient binding and optimized runtime (many of its core types were Core Foundation types - NSString, etc. IIRC).
https://marketsplash.com/tutorials/objective-c/objective-c-b...
Sadly, those days are long gone, and I just don’t think Swift brings the same kind of flexibility or joy that MacRuby did.
Had ZFS been under an MIT licence it's plausible that it, and not APFS, would've been the foundation of macOS/iOS/tvOS/etc now.
[0]https://arstechnica.com/gadgets/2009/10/apple-abandons-zfs-o... [1]https://news.ycombinator.com/item?id=17852019
The CDDL is/was the license that is part of the public source distribution.
Given that Sun/Oracle owned the code, there was nothing stopping them from relicensing it to Apple under something different with a standalone contract that would have included things like support and escrow. From the zfs-dicuss post by Bonwick:
>> Apple can currently just take the ZFS CDDL code and incorporate it (like they did with DTrace), but it may be that they wanted a "private license" from Sun (with appropriate technical support and indemnification), and the two entities couldn't come to mutually agreeable terms.
> I cannot disclose details, but that is the essence of it.
* http://mail.opensolaris.org/pipermail/zfs-discuss/2009-Octob...
CDDL was not the problem (as evidence by DTrace), but the terms of the 'private license' were as Apple wanted more than just basic functionality (which they could have gotten by importing the code).
I don't think you can compare these in terms of features (hence also not in terms of potential problems)
> We actually had this process running for earlier iOS updates … where when you updated to 10.1 or 10.2, we were trial migrating your whole file system … consistency checking it … reporting back to us whether the upgrade was 100 percent clean, then rolling it back.
https://www.macobserver.com/analysis/apple-dry-run-apfs-prio...
I was bitten by this and it was an awful couple of days of head scratching with Apple Support.
My story is that I upgraded my mail server but the install hung never completed. I ended up with a a hard drive with no files and completely full. Diskutil and Disk Utility reported everything as good but there was a partition that could not be seen. I forget the eventual resolution. Probably starting all over again with a completely fresh install.
I never understood what had happened until I saw a talk or read an interview with the APFS creaator. During the talk he spoke of how they did a complete re-format to APFS and verified everything and than reverted to HFS+ for the install.
This is all from memory but I think I have the details mostly correct. The whole process was technically impressive but not without hiccups.
And the drives I’m talking about the external usb drives everyone (me) have dangling off their machines (notably things like Time Machine and such).
Why checksum metadata if the SSD is so safe?