Apple - How to determine which files are on SSD on Fusion Drive?

Because the Fusion drive is one logical volume, there are no separate "partitions" to browse to determine this. You can however check which drive an given file is stored on with some command-line utilities.

Determine Your Drive Setup

First we have to figure out how the SSD and HD portions of the Fusion drive are identified in your system.

  1. Run diskutil list in Terminal.
  2. You should see output similar to this:

    #: TYPE NAME SIZE IDENTIFIER
    0: GUID_partition_scheme *121.3 GB disk0
    1: EFI 209.7 MB disk0s1
    2: Apple_CoreStorage 121.0 GB disk0s2
    3: Apple_Boot Boot OS X 134.2 MB disk0s3
    /dev/disk1
    #: TYPE NAME SIZE IDENTIFIER
    0: GUID_partition_scheme *1.0 TB disk1
    1: EFI 209.7 MB disk1s1
    2: Apple_CoreStorage 999.3 GB disk1s2
    3: Apple_Boot Recovery HD 650.0 MB disk1s3
    /dev/disk2
    #: TYPE NAME SIZE IDENTIFIER
    0: Apple_HFS Macintosh HD *1.1 TB disk2
    
  3. Take note of labels of the disks with a GUID_partition_scheme line. In this case, that's disk0 and disk1. These are the two physical disks, and we can see by the sizes, the smaller one (disk0) is the SSD, meaning disk1 is the HD while disk2 is the logical volume.

Monitor Disk Activity

Now we need a way to monitor disk activity for each device.

  1. Open Terminal, enter iostat -d disk0 disk1 1, replacing the disk numbers with those you found in above.
  2. Run the command, and leave the Terminal window open. You should see output similar to this:

           disk0           disk1 
     KB/t tps  MB/s     KB/t tps  MB/s 
     26.52  13  0.33     9.35   0  0.00 
     0.00   0  0.00     0.00   0  0.00 
     0.00   0  0.00     0.00   0  0.00 
     0.00   0  0.00     0.00   0  0.00 
    

    This shows you the disk activity on a per-device basis, updated every second. The MB/s columns are the most relevant.

Read a File

Now we'll read a file, and use our monitoring solution to discover which drive it resides on.

  1. Open a second Terminal window, and run dd if='/path/to/some/file' of=/dev/null. Replace the path with the proper path to the file (be sure it's quoted if it has unescaped spaces or other special characters).
  2. In the terminal window running iostat, watch the to see which disk shows some activity when dd is running. That's the drive the file resides on.
  3. For large files (especially those on the HD, the dd process may run for a while, you can safely quit it with control+C

Readings like this indicate that disk0 (the SSD in this example) contains the file:

       disk0           disk1 
 KB/t tps  MB/s     KB/t tps  MB/s 
 28.49  13  0.37   113.92   0  0.00 
 31.70 4500 139.29     0.00   0  0.00 
 31.64 3870 119.56     0.00   0  0.00 
 31.58 3294 101.58     0.00   0  0.00 

Whereas these readings indicate that the file is stored on the HD:

       disk0           disk1 
 KB/t tps  MB/s     KB/t tps  MB/s 
 0.00   0  0.00   128.00 275 34.33 
 0.00   0  0.00   128.00 255 31.83 
 7.62  53  0.39   126.90 178 22.03