Can’t resize partition: “You can’t perform this resize unless it has a booter”

core-storagehigh sierrapartition

I have an external 1TB disk that I use for Time Machine backups that I temporarily added a second 100GB partition to. After deleting the partition, though, I can't reclaim the free space. Disk Utility won't let me drag the partition button onto it:

enter image description here

I tried the resizeStack command, but got an error:

******:~ ******$ diskutil cs resizeStack 389D8763-4C1B-4D77-A734-C507DBD567C1 0g
The Core Storage Logical Volume UUID is 389D8763-4C1B-4D77-A734-C507DBD567C1
Started CoreStorage operation
Error: -69722: You can't perform this resize unless it has a booter (target partition is probably too small)

What's this business about a 'booter'? How can I reclaim my lost 100GB?

EDIT:

Output from diskutil list:

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:          Apple_CoreStorage Time Machine            900.0 GB   disk3s2

… and from diskutil cs list:

+-- Logical Volume Group 7DBE7E68-7EB4-4208-9BBF-1ED08259754F
    =========================================================
    Name:         Time Machine
    Status:       Online
    Size:         899995127808 B (900.0 GB)
    Free Space:   0 B (0 B)
    |
    +-< Physical Volume 38259B44-99D7-4F3C-973D-2510408E8E72
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk3s2
    |   Status:   Online
    |   Size:     899995127808 B (900.0 GB)
    |
    +-> Logical Volume Family 76E4A480-E849-47D0-96D8-D07940EAB3C7
        ----------------------------------------------------------
        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 389D8763-4C1B-4D77-A734-C507DBD567C1
            ---------------------------------------------------
            Disk:                  disk4
            Status:                Online
            Size (Total):          899642802176 B (899.6 GB)
            Revertible:            No
            LV Name:               Time Machine
            Volume Name:           Time Machine
            Content Hint:          Apple_HFS

Best Answer

Note: This answer assumes your drive is not hybrid partitioned. In other words, I assume your drive is using a GUID partitioning scheme and the Master Boot Record (MBR) table is fully protected. Also, I assume the sector size is 512 bytes.

I will use an approximately 500 GB spare image file to illustrate your problem and my solution. The output from diskutil disk1 and diskutil disk2 for my drive is shown below. Here, there is almost no free space.

/dev/disk1 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +500.0 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage Macbook HD              499.1 GB   disk1s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk1s4

/dev/disk2 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macbook HD             +498.8 GB   disk2
                                 Logical Volume on disk1s2
                                 06A8BD94-5D42-4A7A-A8DF-2FAB7A268153
                                 Unlocked Encrypted

Normally, a Apple_CoreStorage partition is followed by a Apple_Boot partition. Your drive is missing this Apple_Boot partition.

Note: Other Core Storage configurations will use a different name and size for this Apple_Boot partition. For example, the partition may appear with the name Boot OS X and a size of 134.2 MB.

Below is output from the same commands, but this time my drive has approximately 50 GB of free space. Furthermore, the Apple_Boot partition is missing.

/dev/disk1 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +500.0 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage Macbook HD              449.9 GB   disk1s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk1s3

/dev/disk2 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macbook HD             +449.5 GB   disk2
                                 Logical Volume on disk1s2
                                 06A8BD94-5D42-4A7A-A8DF-2FAB7A268153
                                 Unlocked Encrypted

Below are instructions for recreating the Apple_Boot partition and recovering the free space. When required, make the appropriate adjustments to these commands. These instructions will not recreate any important files that were stored in this partition. In your case, there may not have been any important files. If needed, prepend a sudo to any of these commands.

  1. Use the third part tool gdisk to create the missing Apple_Boot partition. Enter the text given below to invoke this interactive command.

    gdisk /dev/disk1
    

    Below are the interactive gdisk commands. The blank line indicates the default was selected. You should expect your default value to be different from mine.

    n 
    3
    
    +1269536
    AB00
    w
    y
    

    Below is the output from when I used the gdisk /dev/disk1 command.

    GPT fdisk (gdisk) version 1.0.3
    
    Warning: Devices opened with shared lock will not have their
    partition table automatically reloaded!
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    
    Command (? for help): n
    Partition number (3-128, default 3): 3
    First sector (34-976562506, default = 879053752) or {+-}size{KMGTP}: 
    Last sector (879053752-976562506, default = 976562506) or {+-}size{KMGTP}: +1269536
    Current type is 'Apple HFS/HFS+'
    Hex code or GUID (L to show codes, Enter = AF00): AB00
    Changed type of partition to 'Recovery HD'
    
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/disk1.
    Warning: Devices opened with shared lock will not have their
    partition table automatically reloaded!
    Warning: The kernel may continue to use old or deleted partitions.
    You should reboot or remove the drive.
    The operation has completed successfully.
    
  2. Use the command below to format the newly created partition.

    newfs_hfs  -J  -v  "Recovery HD"  /dev/disk1s3
    
  3. Use the command below to recover the free space. Note: I already substituted your logical volume UUID.

    diskutil  cs  resizestack  389D8763-4C1B-4D77-A734-C507DBD567C1  0
    

Final note:

The gpt command can be used instead of the third party gdisk command. You would need to enter the gpt command shown below to partially dump the contents of the GUID Partition Table (GPT).

gpt  -r  show  /dev/disk1

For my drive, the output is shown below.

      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  878644112      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  879053752   97508755         
  976562507         32         Sec GPT table
  976562539          1         Sec GPT header

From this output, determine the start of the free space after the Apple_CoreStorage (53746F72-6167-11AA-AA11-00306543ECAC) partition. For my drive this would be sector 879053752.

Note: In the gpt command given below, replace my value of 879053752 with your own value.

The gpt command shown below adds a new Apple_Boot partition do the drive. Set the -b option to the start of the free space value. This command must be immediately preceded by the diskutil command shown below.

Note: If necessary, the -b option needs rounded up to a value evenly divisible by 8.

diskutil  umountdisk  disk1
gpt  add  -i  3  -b  879053752  -s  1269536  -t  426F6F74-0000-11AA-AA11-00306543ECAC  /dev/disk1

Next, proceed to step 2.