From what I understand, the implementation of the Fusion Drive is at the OS level (coreStorage). Yet, I want to know if it's possible to manually interfere in the management for a specific file or directory.

E.g. Most Photos in iPhoto are rarely used, yet I would like to push the entire directory ~/Pictures/iPhoto Library.photolibrary to the SSD.

  • 1
    Shouldn't individual pictures get moved to SSD automatically if they are accessed often enough?
    – nohillside
    Nov 10 '12 at 19:04
  • @patrix Don't know.
    – gentmatt
    Nov 12 '12 at 14:13
  • The directory is on a different piece of the disk to the data so could well be in cache automatically
    – mmmmmm
    Dec 10 '12 at 13:33

I am aware this may not be the technical answer you seek, but it's the pragmatic solution at present. Hopefully, a non-buggy way to micro manage the tiered storage will become known, but here are things you can do today, out of the box.

  • ensure all data fits on the SSD so that no tiering takes place.
  • manually access these files to ensure the algorithm sees them as being read more than the rest. Using dd to read the files would be a good start and rebuilding the iPhoto library databases should also force a full read of the contents. It's not clear reads only will affect tiering in a "mandatory promotion to SSD storage" sense.
  • If you want to add these as non-starter, things you have tried steps to your question, you have my full encouragement.
    – bmike
    Nov 10 '12 at 17:59
  • Using a script to run at login to read the directory sounds like a good idea.
    – gentmatt
    Nov 12 '12 at 14:16

I don't think so.

I put together a Fusion Drive as an experiment to see if was preferable to using a pure SSD vs. a high speed drive, and the trade offs, namely size vs. performance.

With my Fusion, the SSD was on the inside of the unit and I was using a Firewire external drive. The nice thing was that when the Firewire's drive activity light flashed, I knew it was being accessed. We have a program that generates a cacheing file, and periodically it changes. Here's what happened:

  1. When the program starts, it creates the cache file and then starts hitting it at about 1 second intervals.
  2. Initially, the Firewire, which was of course the HD part of the Fusion, would show no activity, which told me it was hitting the SSD.
  3. After a few seconds, the Fusion seemed to transfer the file to the Firewire drive, and then it would start flashing at the same intervals. This told me the Fusion had off loaded the file from the SSD to the hard drive.
  4. When the file changed, steps 1 through 3 would repeat.

The cache file wasn't big, but what was clear to me that the Fusion drive management was following Apple's proprietary algorithms, which, to the best of my knowledge, aren't known. That was done some time ago, right after Fusions and the ability to make them became known, so who knows if it even works that way.

If you want to control where the data goes, you might want to create a boot and system drive with the SSD then offload slower stuff that doesn't need to get hit that much to the hard drive and link them to the OS via symbolic links. This way you can control where stuff goes, what gets backed up and when, and if one of the units fails you'll know where and what data got lost. As-is, with a Fusion drive you can't tell at a given instant what's on which drive. I know what I'm describing is a two drive setup, but you may find it's generally faster than a Fusion drive as well.

Hope this helps.


The script that Howard posted can be used to periodically copy a file to /dev/zero. If you put in an automator task or cron job that calls this script for the files you want cached it will most likely trick the OS into putting the files onto the SSD portion.

Another option if you want to pin an app to the SSD is to open and close the program in the background using automator and not just read the app file itself. This will ensure associated libraries / config files will also be put on the SSD.


Try the following script

echo $1

dd if="$1" of=/dev/zero bs=1m
  • 4
    What does this do?
    – mmmmmm
    Oct 18 '13 at 10:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .