Enabling Defragmentation on APFS Hard Drives
You can try this yourself, although the documentation of defragmentation is minimal. The
diskutil apfs
command allows you to enable and disable defragmentation at Container or Volume level, with a command such asdiskutil apfs defragment volumeDevice enable
enabling it on the specified volume. But I wouldn’t expect it to have any significant impact on the poor performance that you’re experiencing on APFS-formatted hard drives. I hate to say it, but if you possibly can, it would make good sense to keep those in HFS+ format until you replace them with SSDs.
Previously:
Update (2023-08-31): Felix Schwarz:
Three days ago, I noticed an external HDD’s write performance had deteriorated to about 2-5 MB/s, making me wonder if it was about to fail - or if it is an APFS performance issue.
I subsequently learned about APFS defragmentation and enabled it for the HDD’s APFS container via
diskutil apfs defragment [disk] enableComing back to the disk two days later, write performance is back to normal.
5 Comments RSS · Twitter
See, @Howard and I are on the same page! I do not see a true advantage to switching spinning platters over to APFS. Lot of downsides to making that switch.
To reiterate, SSDs? No brainer.
Got to go with the flow there. The file system seems specifically designed with SSD characteristics in mind. Coupled to better volume management and likely better data safety, no problem with APFS on SSD.
So Apple doesn't actually use the defragmentation feature? Did they ship it knowing that it wasn't really helping, but also not hurting (and have dropped the effort for being a useless design?)? Are they working on improving it?
Stay tuned for some or none of these answers by 10.19 Death Valley.
Got to go with the flow there. The file system seems specifically designed with SSD characteristics in mind. Coupled to better volume management and likely better data safety, no problem with APFS on SSD.
Definitely.
(Though it seems even on SSDs, APFS isn’t quite as fast as HFS+. Maybe they’ll tweak that over time?)
But they have to come up with a backup story at some point, even if it is “you know what, just use btrfs on an HDD”. (That’s what I do with Synology and Time Machine. Seems fine?)
Is there any way to explicitly run a full defrag?
I'm trying to lower the high watermark on some APFS-formatted sparsebundles, hoping I could then `hdiutil compact` them