Updates

How to mess up your Fusion Drive. A cautionary tale.

I did a bit more investigation of 3 TB fusion drives on the new iMac after we received a support call that caused us to scratch our heads a bit. The person had followed our instructions on how to create a Boot Camp partition using Disk Utility, but had somehow gotten into a state where Disk Utility could no longer add or remove partitions. I led to a very interesting road about how core storage works, how Apple works around the 2.2 TB limit of Windows on MBR macs, and how Fusion drives are created using Core Storage. I already did a wrote up the internals in my Boot Camp on Large (3 TB+) drive with 10.8.3 article, so check that out if you want to see the overview of how it all works. This article will focus on the issue, how to probe Core Storage to find out the issue, and how to fix it.

If you create a Boot Camp partition on a 3 TB Fusion drive, you’ll end up with 3 partitions:

image

As you can see in the partition layout, there are 2 Macintosh HD and one BOOTCAMP partition. The two Macintosh HD partitions (called Physical Volumes in Core Storage) are combined to create the single “Macintosh HD” volume. Core Storage has a bunch of different terms, and they can be confusing. For example, a Logical Volume Group is not a group of Logical Volumes, but rather a group of Physical Volumes. The key piece for this article is that the Boot Camp partition is not managed by Core Storage, and the two Macintosh HD Physical Volumes are combine together and exported as a single Logical Volume. So on the desktop, you see a Macintosh HD and a BOOTCAMP volume.

The incompatibility comes up with you try and erase the BOOTCAMP partition. Since it is not managed by Core Storage, you think you could just select it and select “Erase” in Disk Utility:

https://vimeo.com/70139832

As you can see in the video, Disk Utility tried to convert the BOOTCAMP partition to core storage, failed, and left it in a strange state:

image

Disk Utility is now in a very strange state. It appears that the Boot Camp partition is now another Disk. The command line utility diskutil cs list shows what is going on:

bash-3.2# diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         645.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:          Apple_CoreStorage BOOTCAMP                1.6 TB     disk0s4
   5:                 Apple_Boot Boot OS X               134.2 MB   disk0s8
   6:          Apple_CoreStorage                         801.4 GB   disk0s5
   7:                 Apple_Boot Boot OS X               134.2 MB   disk0s6
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:          Apple_CoreStorage                         121.0 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *1.6 TB     disk2


|
+-- Logical Volume Group CE81F8B0-98F1-45E8-BB56-443A4ED02A5B
|   =========================================================
|   Name:         Macintosh HD
|   Status:       Online
|   Size:         1567587950592 B (1.6 TB)
|   Free Space:   110592 B (110.6 KB)
|   |
|   +-< Physical Volume 3E808D6A-F206-49E0-9064-823908038CC3
|   |   ----------------------------------------------------
|   |   Index:    0
|   |   Disk:     disk1s2
|   |   Status:   Online
|   |   Size:     120988852224 B (121.0 GB)
|   |
|   +-< Physical Volume 908CAF55-CE83-40BA-B560-C22451398B51
|   |   ----------------------------------------------------
|   |   Index:    1
|   |   Disk:     disk0s2
|   |   Status:   Online
|   |   Size:     645162557440 B (645.2 GB)
|   |
|   +-< Physical Volume 65E456FC-A61B-4825-BC4F-750317EBE2DF
|   |   ----------------------------------------------------
|   |   Index:    2
|   |   Disk:     disk0s5
|   |   Status:   Online
|   |   Size:     801436540928 B (801.4 GB)
|   |
|   +-> Logical Volume Family 42010919-822F-4AF5-8DB6-B546CF11381F
|       ----------------------------------------------------------
|       Encryption Status:       Unlocked
|       Encryption Type:         None
|       Conversion Status:       NoConversion
|       Conversion Direction:    -none-
|       Has Encrypted Extents:   No
|       Fully Secure:            No
|       Passphrase Required:     No
|       |
|       +-> Logical Volume 59947BF8-64CF-470C-86E0-04DB8936D67C
|           ---------------------------------------------------
|           Disk:               disk2
|           Status:             Online
|           Size (Total):       1552772104192 B (1.6 TB)
|           Size (Converted):   -none-
|           Revertible:         No
|           LV Name:            Macintosh HD
|           Volume Name:        Macintosh HD
|           Content Hint:       Apple_HFS
|
+-- Logical Volume Group 037CEA9F-9867-4EBC-8835-35C0E45ACCFE
    =========================================================
    Name:         BOOTCAMP
    Status:       Online
    Size:         1552865554432 B (1.6 TB)
    Free Space:   1552546779136 B (1.6 TB)
    |
    +-< Physical Volume 49684B0E-E440-4A38-8458-E526361827B9
        ----------------------------------------------------
        Index:    0
        Disk:     disk0s4
        Status:   Online
        Size:     1552865554432 B (1.6 TB)

Disk Utility tried to create a brand new Core Storage Logical Volume Group and add the BOOTCAMP partition to it. That is not all. It also decided to try and create some new standard (GPT) partitions to install BOOT_OS_X on it:

   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         645.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:          Apple_CoreStorage BOOTCAMP                1.6 TB     disk0s4
   5:                 Apple_Boot Boot OS X               134.2 MB   disk0s8
   6:          Apple_CoreStorage                         801.4 GB   disk0s5
   7:                 Apple_Boot Boot OS X               134.2 MB   disk0s6

This is just strange. Luckily, since it is an entirely new Core Storage Logical Volume group, we can easily delete it, and get back to a state where Boot Camp Assistant can create a new Boot Camp partition. To delete the Logical Volume Group, grab the Logical Volume Group UUID and run the diskutil command to delete it. If UUID is 037CEA9F-9867-4EBC-8835-35C0E45ACCFE, I would run:

twocanoess-imac:~ tcadmin$ diskutil cs delete 037CEA9F-9867-4EBC-8835-35C0E45ACCFE
The Core Storage Logical Volume Group UUID is 037CEA9F-9867-4EBC-8835-35C0E45ACCFE
Started CoreStorage operation Destroying Logical Volume Group
...

After that operation, we are back to 2 Macintosh HD’s managed by Core Storage and no Boot Camp partition. You can now run Boot Camp Assistant and it will recreate the Boot Camp partition. The moral of this story is that you do not erase partitions with Disk Utility if you have any Core Storage volume.