Another bad day for iMac Fusion Drive with macOS developer/public Beta. Knowing the differences between the tools can improve the recovery time.
Background
It was Monday in the middle of July, like any other days. I ran macOS Mojave beta on Fusion Drive equipped iMac overnight with few loads such as normal web browsing. On the following morning, the machine couldn't be waking up via keyboard and trackpad. I had hit a power button, and then a screen turned on showing last night activity in freezing state. I knew that this was wrong and bad, so I long pressed the power button again to power off the machine. I had rebooted the machine, but it didn't pass the boot screen, aka. the screen with an Apple Logo and a progress bar. I waited around 10 minutes which was too long and turned it off.
The usual task after this was first-aiding the disk with Disk Utility. Unfortunately, that couldn't happen. The Disk Utility on macOS Mojave beta recovery drive couldn't handle this macOS drive. I got the iconic spinning beach ball and couldn't do anything. :( Trying to use single disk mode, I found that there was a "daemon" on macOS Mojave which kept verifying free space consistency. This operation was resource intensive. It took whole CPU threads and didn't let me use Terminal for doing other operations. (Think of seeing console log message as the matrix screen saver!)
I tried to use the old successful method which was install macOS on external drive and migrate data back and forth. Firstly, I installed macOS High Sierra on external drive. High Sierra could recognize my internal drive, but I can't migrate the data from the existing internal drive due to higher macOS version. Luckily, some of data could be recovered! I can use Finder to copy all files to another storage. (I had a Time Machine backup, but it wasn't complete drive backup due to sizing of Time Machine backup NAS.) I tried to use First-Aid on the internal drive again and it showed no error on the drive! (No physical damage.) I tried to reboot into the internal drive again but still had no luck. :( Then, I upgraded High Sierra to Mojave Beta. The shit happened again. I couldn't boot into the newly installed Mojave Beta. (Technically, I couldn't even boot into macOS Mojave Beta installation sequence on the iMac. I finished that operation on another Mac, which is Retina MacBook.) This should confirm the last paragraph assumption regarding to "free space daemon".
At this point, the shorter method was useless. I had to use a longer method which was Time Machine recovery. I knew that the machine could boot into High Sierra. So, I reinstalled macOS High Sierra on the external drive again. This time, the internal disk was wiped out. Due to High Sierra didn't official support APFS on Fusion Drive, the well-known Fusion Drive recreation from Stack Overflow thread was used. Then, I installed High Sierra on Fusion Drive and upgraded to Mojave Beta. The machine was ready for data restoration operation. Which tools could recover the Time Machine backup data?
The tools
When dealing with data restoration from Time Machine backup, there are two tools involved: Migration Assistant and Time Machine System Restore.
I started with Migration Assistant. In this state, there was one user account existing on the system, which was the one using to install/upgrade the system. Migration Assistant could browse the Time Machine backup, but it couldn't list all mandatory elements to be restored! The missing element was "User data". I think this is due to a user account existing on the system. This is a difference situation from Migration Assistant prompt after wiping up the disk. I didn't know this and expected the User data would be restored during this operation. It cost me around 2 days to see that I got nothing on my User folder but everything elsewhere.
I realized that there was another recovery tool on macOS recovery drive, which was "Time Machine System Restore". So, I booted into recovery drive and launched it. It looked nearly identical to Migration Assistant but different. The differences were:
- It could list all versions of Time Machine backup which the migration assistant didn't show that.
- It didn't allow me to select any elements of the backup which the migration assistant allowed that. (Applications, Settings, Other files, and Users folder -- for 1st time boot)
- It showed how many data are copied instead of only estimated complete time.
When the backup was selected, it wiped up current macOS drive and copied the selected backup to the drive. This took me around 3 days to complete and I got everything back! macOS needed to be updated again due to total restoration from the backup. Last thing, to do, was copying the non-backup data back to its location. :) All iDevices iTunes Wifi sync were left untouched which was difference from Migration Assistant restoration. (Don't need to replug them to the machine again!)
Summary
I think a proper method for restoring Time Machine backup is using Time Machine System Restore on macOS recovery drive. Migration Assistant, as its name, is for transferring from one macOS drive to another macOS drive only when you do cleaned installation of macOS.