MacOS – Can I have both a case-insensitive system volume and a case-sensitive volume within an encrypted CoreStorage volume

core-storagefilevaultmacos

( seems possibly related to Is it possible to have multiple filevault2-activated partitions on one disk? )

I have a MBP with a single internal SSD and I'd like:

  • to have everything on the disk encrypted in case I lose the laptop
  • to have my home dir be case-sensitive b/c i'm used to Linux
  • to have personal stuff separate from the OS in order to facilitate future OS updates
  • to keep the main system volume case-insensitive to avoid possible OSX weirdness

It seems like what I'd like is either:

  • two partitions, both filevault2 encrypted, one regular HFS+ and one case-sensitive HFS+, or
  • a filevault2 encrypted CoreStorage container with a regular HFS+ volume and a case-sensitive HFS+ volume in it

Do either of those make sense and, if so, are they possible?

Best Answer

Can I have both a case-insensitive system volume and a case-sensitive volume within an encrypted CoreStorage volume?

Core Storage:

  • can not create a volume within a volume
  • can create a logical volume (LV) within a logical volume group (LVG).

… to keep the main system volume case-insensitive …

That's reasonable.

… to have my home dir be case-sensitive …

Maybe desirable, but please beware: some software for OS X may not work as expected in that environment. I thought first of Adobe, found examples from 2012 and 2013:

An example – OS X 10.9.5, Mavericks

I used Disk Utility to create two partitions from a USB flash drive (at /dev/disk12 at the time), then erased each of the unencrypted file systems – and opted to encrypt.

For both encryptions I chose the same passphrase that is used to encrypt the FileVault 2 OS X startup volume.

The relevant part of output from diskutil coreStorage list:

+-- Logical Volume Group 391198AA-F179-466A-BD30-1B9BF02D9CAF
|   =========================================================
|   Name:         journaled, encrypted
|   Status:       Online
|   Size:         2004877312 B (2.0 GB)
|   Free Space:   0 B (0 B)
|   |
|   +-< Physical Volume 0A2101EC-811E-4E12-9CFD-A3CAEE4299D9
|   |   ----------------------------------------------------
|   |   Index:    0
|   |   Disk:     disk12s2
|   |   Status:   Online
|   |   Size:     2004877312 B (2.0 GB)
|   |
|   +-> Logical Volume Family 83E9BA42-4F8D-4AF4-BBEA-F831A4C5E1F5
|       ----------------------------------------------------------
|       Encryption Status:       Unlocked
|       Encryption Type:         AES-XTS
|       Conversion Status:       Complete
|       Conversion Direction:    -none-
|       Has Encrypted Extents:   Yes
|       Fully Secure:            Yes
|       Passphrase Required:     Yes
|       |
|       +-> Logical Volume C098FD1F-49E4-48D7-A3ED-1F8AC38FCA14
|           ---------------------------------------------------
|           Disk:                  disk13
|           Status:                Online
|           Size (Total):          1669324800 B (1.7 GB)
|           Conversion Progress:   -none-
|           Revertible:            No
|           LV Name:               journaled, encrypted
|           Volume Name:           journaled, encrypted
|           Content Hint:          Apple_HFS
|
+-- Logical Volume Group CA81191D-B39E-4B19-B4B6-FEC1FF3D2478
    =========================================================
    Name:         case-sensitive, journaled, encrypted
    Status:       Online
    Size:         1526685696 B (1.5 GB)
    Free Space:   0 B (0 B)
    |
    +-< Physical Volume 4DDC2838-F234-430B-89E5-0C0AF59ECC28
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk12s3
    |   Status:   Online
    |   Size:     1526685696 B (1.5 GB)
    |
    +-> Logical Volume Family FA8E36E2-724C-44B6-BC74-C7310BAE26D6
        ----------------------------------------------------------
        Encryption Status:       Unlocked
        Encryption Type:         AES-XTS
        Conversion Status:       Complete
        Conversion Direction:    -none-
        Has Encrypted Extents:   Yes
        Fully Secure:            Yes
        Passphrase Required:     Yes
        |
        +-> Logical Volume A4C96B6E-06F4-4E49-B57F-AA5DDC05EF66
            ---------------------------------------------------
            Disk:                  disk14
            Status:                Online
            Size (Total):          1191133184 B (1.2 GB)
            Conversion Progress:   -none-
            Revertible:            No
            LV Name:               case-sensitive, journaled, encrypted
            Volume Name:           case-sensitive, journaled, encrypted
            Content Hint:          Apple_HFSX

Limitations

I rebooted the Mac to check whether either logical volume family (LVF) was automatically unlocked before loginwindow is launched by launchd. As expected, no automation of that sort.

Issues

With Mavericks I can find no way to create more than one LV within an LVF.

The following articles state that it's possible to do so:

In the Franke article it's remarkable that the same UUID is used to both (a) shrink an existing LV; and (b) create another LV in the same LVF.

Unless I'm missing something, this approach is impossible with Mavericks. For example:

sh-3.2$ diskutil coreStorage resizeVolume DAED4621-90CF-43D1-BC40-F7ACABD7174F 600G
The Core Storage Logical Volume UUID is DAED4621-90CF-43D1-BC40-F7ACABD7174F
Started CoreStorage operation
Checking file system
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 Yosemite appears to be OK
Shrinking file system
Shrinking Logical Volume
Resizing Core Storage Logical Volume structures
Resized Core Storage Logical Volume to 600000000000 bytes
Finished CoreStorage operation
sh-3.2$ diskutil coreStorage createVolume DAED4621-90CF-43D1-BC40-F7ACABD7174F jhfsx case-sensitive 65G
DAED4621-90CF-43D1-BC40-F7ACABD7174F does not appear to be a valid Core Storage Logical Volume Group UUID or name
sh-3.2$ diskutil cs list | grep DAED4621-90CF-43D1-BC40-F7ACABD7174F
        +-> Logical Volume DAED4621-90CF-43D1-BC40-F7ACABD7174F

Assuming a bug in Core Storage in Mavericks

We should review this answer – maybe add another – after Yosemite is released.

(I should not expect a fix in Mavericks.)