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. My next step was to resize my existing drive to make room for a new logical volume. CoreStorage can resize a drive non-destructively, moving existing data aside and clearing capacity for other uses.
Before you can begin to resize a volume, you must convert the disk to CoreStorage as I previously discussed. You should also reboot the Mac to make sure the CoreStorage volume is up and running, and it probably wouldn’t hurt to do a quick volume check in Disk Utility.
It is also important to know how much data is currently stored on the volume to be resized: This is the minimum size! I used the “df -k” command to see the “Used” space on my drive, “Macintosh HD”.
As you can see in this screenshot, the drive contained exactly 814571572 kilobytes of data, which converts to 776 GB in base 2. To be on the safe side, I decided to resize this drive to 850 GB, leaving approximately 150 GB for the new volume I would create later.
Get the UUID of the Logical Volume
We must first determine the UUID of the Logical Volume we wish to resize. I used the “coreStorage list” command of Diskutil to determine this.
diskutil corestorage list
It is important to get the correct UUID: Each element in the CoreStorage stack (Logical Volume Group, Physical Volume, Logical Volume Family, and Logical Volume) has its own UUID and we must use the correct one for each command!
diskutil coreStorage resizeVolume
Now we will resize our volume.
Note that this is an undocumented CoreStorage command: Although Apple created this function and the Diskutil command includes help text for it, it is not supported or endorsed by Apple. They even left it off the list of available options when you type “diskutil coreStorage”!
Although resizeVolume is undocumented, it has always worked fine for me. After a year of experimentation, I feel comfortable trusting it to my own data.
The diskutil coreStorage resizeVolume command takes as arguments the UUID of a Logical Volume to be resized and the desired capacity. As noted above, your target capacity should be greater than the data stored on the volume!
diskutil coreStorage resizeVolume ED316C9A-0483-4CAF-993C-78595C61FE55 850g
I decided to resize my 1 TB “Macintosh HD” volume to 850 GB so I could create a new volume for use by Final Cut Pro. The resize command took about 35 minutes on my iMac’s 7200 rpm Seagate internal drive – your progress will vary dramatically based on the interface speed, drive speed, and amount of data to be relocated!
Check out your newly resized volume!
Once the resizeVolume command was finished, I examined the volume to see if it had resized correctly. Sure enough, the volume was now 850 GB in size, leaving about 150 GB free in the Volume Group.
I also used “df -k” to see the new drive size, and even popped up Disk Utility to examine it. Everything worked fine!