November 28, 2014

Non-Destructively Convert an Existing Drive to CoreStorage

CoreStorage Series

After I moved my iMac move volume to an SSD, I was left with an internal hard disk drive full of data. Rather than blowing away and start again, I decided to repartition it using CoreStorage. The first step to storage bliss is conversion: Mac OS X can non-destructively convert an existing drive to CoreStorage! From there you’re free to resize it, create new volumes, and pretty much anything else you’re interested in doing to your drives!

diskutil coreStorage convert

First, convert the disk to a CoreStorage volume. Mine was still called “Macintosh HD” from the day I bought it, and here’s the simple command I used:

diskutil corestorage convert "Macintosh HD"

The CoreStorage convert command non-destructively converts an existing disk into a flexible CoreStorage volume

This is a non-destructive command – it preserves your data and safely moves everything over. In my case, it took less than 10 minutes! Note that this only works with mounted, readable journaled HFS+ volumes on GPT disks, since CoreStorage needs to resize the filesystem when it makes the switch.

diskutil coreStorage list

Next, check your handiwork:

diskutil corestorage list

Note the logical volume UUID – it’s very useful!

You should see your new CoreStorage hard disk listed! Note the long string of characters listed after the logical volume name; that’s the UUID and we’ll use it soon!

Reboot to Run CoreStorage

After the conversion, Mac OS X will remount your drive without CoreStorage running. This is a friendly feature, but it doesn’t help if you want to resize a volume. Although it’s possible to get everything working without a reboot, I don’t recommend it. Instead just reboot your machine and let Mac OS X have a fresh start with CoreStorage.

Before rebooting, you’re not running CoreStorage

After the reboot, you can check your handiwork using the “diskutil cs list” command and verify that the whole CoreStorage stack is running.

After the reboot we have a whole CoreStorage stack