My machine had been getting slower and slower. Operations were taking longer and longer. I was spending more and more time watching the colorful pinwheel spin while mail was written to files and my browser read and wrote to its cache. Then apps starting freezing in such a way that they couldn’t be killed (either with “Force Quit” or kill -9). Every now and then I would have to power-cycle the machine, then finally, it didn’t come back up.
I’m not sure what happened, but I suspect my disk had become hopelessly fragmented from the amount of mail that I get which was causing the machine to hang during file IO operations. All it took was for me to turn it off one time at the wrong moment to create an “invalid sibling link” for which there is no recovery on OS X except to rebuild. I tried Disk Utility and I tried fsck. In fact, I discovered that Disk Utility is just GUI for fsck. Anyway, neither worked.
Fortunately, I had a second Mac around, and through firewire tricks and network access to the hosed machine, I was able to recover all my data. It took two full days, but I got back up and running. Now I own a 100GB external firewire drive, and I have vowed to never get lazy about backups again.
The lesson I learned here is that although OS X is like Unix, it isn’t Unix, and in particular, it isn’t Linux. At least in terms of the file system. By default, OS X uses HFS plus rather than a Unix file system, and apparently HFS plus has the potential to become very fragmented. I have also learned that Macs were not designed to take the amount of file abuse I tend to dish out as there are no good utilities out there (yet) for disk recovery and maintenance (unless you have classic installed, which I didn’t and still don’t). Fortunately, there are some coming.
I am going to try reinstalling OS X on my old machine, but this time, with a Unix filesystem rather than HFS plus. I have no idea what will happen, but it should be interesting. (Anyone out there tried this yet?) If nothing else, I should a truly case-sensitive Mac. The other solution might be to run OS X server. Presumably it is more robust than the standard edition.