Contents
- Seriously important warning
- A quick word on critical terminology
- Procedure
- 1. Open Terminal.
- 2. List your existing Core Storage volumes.
- 3. Determine your additional disk’s identifier.
- 4. Check that you’ve identified the correct additional disk.
- 5. Add your additional disk to your target volume’s Core Storage volume group.
- 6. Resize your target volume to make use of the new space from your additional disk.
Note: this guide was written circa macOS 10.13 High Sierra, in 2018. Its accuracy has not been verified for newer macOS releases.
Curiously there’s very little information out on the web (at time of writing) on how to create (or expand) a Fusion Drive without erasing its contents first. It’s entirely possible to do so – in some circumstances – and is probably what most people want, yet almost every ‘create your own Fusion Drive’ guide presumes you’re happy losing all your data in the process. 🤪
So here’s how to do it, step-by-step. The process is fairly straightforward, but there are some edge cases that might apply to you. The obvious & most common ones are covered by this guide, but if you find yourself in a situation that isn’t, please leave a comment at the bottom of this guide explaining what’s not working for you, and I’ll try to help you out.
Don’t be intimidated by the length of this guide – in the common case it’s only six steps, each a single operation, and someone familiar with the steps involved can complete this whole process in just a couple of minutes. The verbosity of this guide is because it takes great pains to explain precisely what’s going on in order to prevent confusion & error. Read it carefully, and take it slow – there is no undo option for any of these commands.
Seriously important warning
⚠️Manipulating your computer’s storage at the low level described in this guide is dangerous. In principle it’s safe as long as you enter all the right commands. However, a single typo in the wrong place can destroy all your data – e.g. a ‘2’ instead of a ‘1’ when typing a disk identifier. Furthermore, in practice Apple’s tools are not completely reliable, and it’s possible that even with you doing everything exactly right, something will still go wrong and your data might be lost.
Make sure all of your data is reliably & verifiably backed up before attempting any of this. Make sure your backups are not connected to your computer while you attempt this – if they are, they’re also just one typo or software bug or hardware glitch away from being destroyed too.
It’s recommended that you disconnect all other disks while you go through this process. That way you eliminate the possibility of damaging them, whether as the result of a typo, confusion between similar disks, or a software bug.
A quick word on critical terminology
- “Volume” in this context is what you might casually call a “disk” – it’s what you see as a disk icon on your desktop, for example, or listed under the ‘Devices’ section in the Finder window sidebars.
All Macs have at least one volume – the boot volume, usually the internal SSD, Fusion Drive, or hard disk – but you can of course add any number more of them via USB, Thunderbolt, Firewire, or even internally if you have an old enough Mac.
“Volume” is used rather than “disk” because the latter is ambiguous – lots of things are called “disks”, including many things that aren’t actually disks in any physical or practical sense. But “volume” has a specific meaning in the Mac storage lexicon, and you’ll see the word used frequently by Apple’s tools. There are different types of volumes – “physical”, “logical”, etc. For the most part you don’t need to worry about those distinctions here – it’ll be pointed out specifically if & when you do. Similarly there are related constructs like “volume groups” and “volume families”, but likewise you don’t need to know exactly what those mean for the purposes of this task. Just be aware that these distinctions exist, and read the instructions very carefully to see exactly which one is needed – particularly when dealing with UUIDs, as you’ll see. - “Disk” is thus used only to refer to physical disks – things you can hold in your hand. A disk can contain many volumes (sometimes called partitions).
- “Target volume” is used to denote the particular volume you want converted into a Fusion Drive. It should be your existing volume, the one with your data already on it – data that you want preserved.
- “Additional disk” is used to denote the SSD (or similar) that you want to fuse into your target volume, to create your Fusion Drive. In contrast to your target volume, its contents will not be preserved. Make sure you move any data on that disk somewhere safe before starting this process. Also note the distinction between disk and volume here – you can only add whole disks to Fusion Drives, not volumes – if your additional disk has multiple volumes on it (e.g. a Boot Camp partition in addition to a Mac volume) all of those will be erased during the fusion process.
Procedure
1. Open Terminal.
All of the following commands are entered in Terminal, unless otherwise specified. If you’re an admin user you won’t need to do anything more than what’s listed here, nor enter your login password at any point (nor, similarly, use sudo at any point). If you’re not an admin user, you might be prompted for an admin’s credentials, or you might have to run all the following commands via sudo (ideally as an admin, or as root if necessary).
2. List your existing Core Storage volumes.
Enter the following command in Terminal:
diskutil cs list
The output will ideally look something like:
CoreStorage logical volume groups (1 found) | +-- Logical Volume Group CF936785-3F07-4414-8512-F94E26F0ABC3 ========================================================= Name: Macintosh HD Status: Online Size: 6000831135744 B (6.0 TB) Free Space: 15101952 B (15.1 MB) | +-< Physical Volume C68C0FB4-B85F-4376-B9C4-BC744520A5FA | ---------------------------------------------------- | Index: 0 | Disk: disk99s2 | Status: Online | Size: 6000831135744 B (6.0 TB) | +-> Logical Volume Family 33A1CC8F-A3AF-4B5D-8EA0-379F4C9D6D0E ---------------------------------------------------------- Encryption Type: AES-XTS Encryption Status: Unlocked Conversion Status: Complete High Level Queries: Fully Secure | Passphrase Required | Accepts New Users | Has Visible Users | Has Volume Key | +-> Logical Volume 10DE6E37-6701-46F8-8E1F-42759C42B5A0 --------------------------------------------------- Disk: disk100 Status: Online Size (Total): 6000471965696 B (6.0 TB) Revertible: No LV Name: Macintosh HD Volume Name: Macintosh HD Content Hint: Apple_HFS
If you see your target volume in there as a Logical Volume – e.g. like “Macintosh HD” in the above example – then you’re all set to move on to step 3, making note of two things:
- The target logical volume’s UUID (10DE6E37-6701-46F8-8E1F-42759C42B5A0 in the above example). You’ll need this in step 6.
- The target logical volume’s volume group UUID (CF936785-3F07-4414-8512-F94E26F0ABC3 in the above example). You’ll need this in step 5.
If instead there are no volumes listed, or your target volume isn’t one of them, then you will need to perform the extra steps below.
If your target volume’s name does appear, but not on any Logical Volume – perhaps only as a Logical Volume Group – then do not proceed; your scenario is not covered by this guide. Please leave a comment at the bottom of this guide, so I can help you figure out what’s going on and what to do in your specific circumstances.
2B. List non-Core Storage volumes.
diskutil list
You’ll see a list of one or more disks & their constituent volumes, e.g.:
/dev/disk99 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 6.0 TB disk99 1: EFI EFI 314.6 MB disk99s1 2: Apple_HFS Macintosh HD 6.0 TB disk99s2 3: Apple_Boot Boot OS X 134.2 MB disk99s3
Make sure your target volume appears somewhere in that list. If it doesn’t… then I’m not sure what to tell you – your target volume appears to not be connected to your computer.
You’d typically be using Core Storage as a side-effect of encrypting your volumes (iff they’re HFS-formatted), or if you’re using Apple’s software RAID. If your target volume is APFS-formatted, however, and it’s not already using Core Storage underneath, you might be out of luck – you can try following 2C Option 2 below on the APFS Container volume, but I haven’t tried it myself so I don’t know if Apple’s tools support it (nor whether they can do the conversion correctly & reliably – proceed at your own risk).
2C Option 1: Encrypt your target volume.
The easiest and most fool-proof way to do this is to right-click on the target volume anywhere it appears in the Finder, and choose the ‘Encrypt “<volume name>“…’ option from the contextual menu. You’ll be prompted to enter a passphrase with which to encrypt the volume, and the operation might take some time, depending on the speed & size of your target volume.
This is also an excellent option because you should always encrypt your volumes, for your own security & privacy.
Alternatively, you can use Terminal:
diskutil cs convert <disk identifier> -stdinpassphrase
The disk identifier is the name associated with your target volume that looks like “diskXsY” where X & Y are numbers (e.g. disk99s2 in the prior example).
You’ll be prompted to enter the passphrase to encrypt the volume with.
Again, the operation might take some time, depending on the speed & size of your target volume.
2C Option 2: Convert your target volume to Core Storage without encrypting it.
diskutil cs convert <disk identifier>
The disk identifier is the name associated with your target volume that looks like “diskXsY” where X & Y are numbers (e.g. disk99s2 in the prior example) – see under the ‘IDENTIFIER’ column in the output of diskutil list from step 2B.
The operation might take some time, depending on the speed & size of your target volume.
2D. Verify the conversion succeeded.
diskutil cs list
As per the instructions in step 2, you should see your target volume now listed as a Logical Volume.
3. Determine your additional disk’s identifier.
This is the disk you want to fuse into your target volume in order to create your Fusion Drive. It will ideally be blank to begin with – e.g. you just bought it & connected it to your computer, and have no yet formatted it or otherwise used it.
If it is not blank, you need to move all your data off of it – it will be essentially erased as part of the fusion process (your target volume won’t be, so potentially you can move the data to there).
Also note the distinction between disk and volume here – you can only add whole disks to Fusion Drives, not volumes – if your additional disk has multiple volumes on it (e.g. a Boot Camp partition in addition to a Mac volume) all of those will be erased during the fusion process. Make sure to move your data off of all those volumes.
To determine the disk identifier for your additional disk, run:
diskutil list
The output should look something like the following:
/dev/disk99 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 6.0 TB disk99 1: EFI EFI 314.6 MB disk99s1 2: Apple_CoreStorage Macintosh HD 6.0 TB disk99s2 /dev/disk100 (internal, virtual): #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD +16.0 TB disk100 Logical Volume on disk99 10DE6E37-6701-46F8-8E1F-42759C42B5A0 Unlocked Encrypted /dev/disk101 (external, physical):
In the above example, the last entry is the additional disk – it has the disk identifier disk101. In this example it is not formatted, so it has no volumes listed on it.
4. Check that you’ve identified the correct additional disk.
diskutil info <disk identifier>
The output should look something like:
Device Identifier: disk101 Device Node: /dev/disk101 Whole: Yes Part of Whole: disk101 Device / Media Name: CT2000MX500SSD1 Volume Name: Not applicable (no file system) Mounted: Not applicable (no file system) File System: None Content (IOContent): GUID_partition_scheme OS Can Be Installed: No Media Type: Generic Protocol: SATA SMART Status: Verified Disk Size: 2.0 TB (2000398934016 Bytes) (exactly 3907029168 512-Byte-Units) Device Block Size: 512 Bytes Read-Only Media: No Read-Only Volume: Not applicable (no file system) Device Location: External Removable Media: Fixed Solid State: Yes Virtual: No Hardware AES Support: No
Check that info to make sure it matches what you’re expecting – in particular things like the device / media name (model number), and the disk’s size. Be extremely careful if you have multiple disks connected to your computer of the same type or size – remember that this disk will be erased during the fusion process, so you definitely do not want to pick the wrong disk by mistake. If in doubt – in fact as a best practice regardless – disconnect all other disks first, to ensure you can’t target them by mistake.
5. Add your additional disk to your target volume’s Core Storage volume group.
diskutil cs addDisk <target logical volume's volume group UUID> <additional disk's identifier>
If all goes well, you’ll see something like:
Started CoreStorage operation on disk101 Unmounting disk101 Repartitioning disk101 Unmounting disk Creating the partition map Rediscovering disk101 Adding disk101s2 to Logical Volume Group Switching disk101s2 to Core Storage Waiting for Logical Volume Group to come back online Core Storage PV UUID: D0E04199-9402-46EF-8481-98C8BADEF8FE Finished CoreStorage operation on disk101
If you wish you can also confirm that the logical volume group now has your additional disk listed as a physical volume underneath it:
diskutil cs list
You should now see something like:
CoreStorage logical volume groups (1 found) | +-- Logical Volume Group CF936785-3F07-4414-8512-F94E26F0ABC3 ========================================================= Name: Macintosh HD Status: Online Size: 6000831135744 B (6.0 TB) Free Space: 15101952 B (15.1 MB) | +-< Physical Volume C68C0FB4-B85F-4376-B9C4-BC744520A5FA | ---------------------------------------------------- | Index: 0 | Disk: disk99s2 | Status: Online | Size: 6000831135744 B (6.0 TB) | +-< Physical Volume D0E04199-9402-46EF-8481-98C8BADEF8FE | ---------------------------------------------------- | Index: 1 | Disk: disk101s2 | Status: Online | Size: 2000054960128 B (2.0 TB) | +-> Logical Volume Family 33A1CC8F-A3AF-4B5D-8EA0-379F4C9D6D0E ---------------------------------------------------------- Encryption Type: AES-XTS Encryption Status: Unlocked Conversion Status: Complete High Level Queries: Fully Secure | Passphrase Required | Accepts New Users | Has Visible Users | Has Volume Key | +-> Logical Volume 10DE6E37-6701-46F8-8E1F-42759C42B5A0 --------------------------------------------------- Disk: disk100 Status: Online Size (Total): 6000471965696 B (6.0 TB) Revertible: No LV Name: Macintosh HD Volume Name: Macintosh HD Content Hint: Apple_HFS
Note however that the logical volume – your target volume; your would-be Fusion Drive – is still listed as being the same, older size. It’s not yet making full use of the additional disk you added – that’s the next & last step.
6. Resize your target volume to make use of the new space from your additional disk.
Since Fusion Drives split data across their constituent disks (as opposed to mirroring it, as you might do in a RAID setup for improved reliability), their size is the sum of all the disks you put into them. You can in fact have multiple volumes on a single Fusion Drive, splitting up its total space amongst them however you wish, and having them share all the underlying disks on a kind of first-come-first-served basis. However, the details of that scenario are left as an exercise for the reader – here we’ll only look at the simple, most common example where you just have a single volume on your Fusion Drive.
diskutil cs resizeVolume <target volume's UUID> 0g
The target volume’s UUID was listed in the output of step 2, from the diskutil cs list
command.
When you run the resizeVolume command, it will typically take a little while – it does some sanity checking & validation of the target volume first, to make sure it’s in good health to begin with, and then the resize operation itself can take a few moments. You should see output similar to:
The Core Storage Logical Volume UUID is 10DE6E37-6701-46F8-8E1F-42759C42B5A0 Started CoreStorage operation Verifying file system Volume was successfully unmounted Performing fsck_hfs -fn -x /dev/rdisk100 Checking Journaled HFS Plus volume Checking extents overflow file Checking catalog file Checking multi-linked files Checking catalog hierarchy Checking extended attributes file Checking volume bitmap Checking volume information The volume Macintosh HD appears to be OK File system check exit code is 0 Restoring the original state found as mounted Growing Logical Volume Resizing Core Storage Logical Volume structures Resized Core Storage Logical Volume to 8,000,242,745,344 bytes Growing file system Finished CoreStorage operation
You’re now done! Your target volume is now a Fusion Drive, ready for use, and should reflect its new, enlarged size in the Finder and elsewhere.
Note: the new total size shown for your Fusion Drive will be slightly less than the sum of the underlying disks – usually by a few hundred megabytes. This is presumably because some space is reserved for Core Storage metadata and other essential system data.