Mac OSXの見えない空き領域を結合して、ハードディスク全体を再び使えるようにする方法

## 症状

ディスクユーティリティで見ると、「Macintosh HD」のサイズが、ハードディスクのサイズよりも随分小さくなっています。本来1TB以上あるのに、740GB程度しか見えていません。

パーティション分割画面でも、通常は空き領域が見えません。パーティションの区切りをドラッグ、なんてできません。復元モードのディスクユーティリティでは空き領域が見えますが、空き領域にボリュームを作成して「適用」ボタンをクリックしても、変更が適用されません。

ちょうど、「[Disk Utility not showing free space](https://discussions.apple.com/thread/7327119)」の画面ショットのような状態です。

復元パーティションなんて要らない！と強引に消したのが原因です...消したのが数年前なので、どのように消したか失念してしまいましたが...

以下は、Fusion Drive環境のHigh Sierra(10.13.2)で実施したものです。OSXであれば、どのようなバージョンやハードディスク環境でも、基本的に手順は同じだと思います。

## 対処

command + R を押し続けて、復元モードで起動します。[Mac の起動時のキーコンビネーション](https://support.apple.com/ja-jp/HT201255)

画面上部のメニューバーの「ユーティリティ」メニューから、「ターミナル」を起動します。

まずは、`diskutil`でディスクの状態を見てみます。

```
# diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         630.1 GB   disk0s2
   3:                 Apple_Boot                         650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:          Apple_CoreStorage                         121.0 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *1.2 GB     disk2
   1:        Apple_partition_map                         30.7 KB    disk2s1
   2:                  Apple_HFS Mac OS X Base System    1.2 GB     disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *742.6 GB   disk3
(以下略)
```

上記の例では、`/dev/disk0`全体では1.0TBあるのに、`disk0s1``disk0s2``disk0s3`の合計で631GB程度しか占めておらず、残りの369GBが行方不明の状態です。

次に、`gpt`でパーティションテーブル(GPT)の状態を見てみます。

```
# gpt -r show disk0
       start        size  index  contents
           0           1         MBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640  1230649056      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1231058696     1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1232328232   721196903         
  1953525135          32         Sec GPT table
  1953525167           1         Sec GPT header
```

下から3番目に、何の説明もなく大量のサイズを占めるパーティションがあります。いかにも空いていそうなパーティションです。この位置にパーティションを復活させることにします。

復活作業の前に、`disk0`に関連しそうなディスクを全部マウント解除しておきます。よくわからなければ、`diskutil`で見えているディスクを全部解除してみましょう。

```
# diskutil umountDisk /dev/disk0
# diskutil umountDisk /dev/disk1
# diskutil umountDisk /dev/disk2
# diskutil umountDisk /dev/disk3
```

作成するパーティションのUUIDに使う文字列を取得します。

```
# uuidgen
616B75A0-6163-4F08-9A2A-C0DEC1AA270F
```

そのUUIDで、新しいパーティションを作成します。

```
# gpt add -b 1232328232 -i 4 -s 721196903 -t 616B75A0-6163-4F08-9A2A-C0DEC1AA270F disk0
```

構文はこちらです。

```
# gpt add -b [startの内容] -i [新しいパーティションの番号] -s [sizeの内容] -t [UUID] [ディスク名]
```

> 「get add: unable to open device 'disk0': Resource busy」というエラーメッセージが出る場合は、umountDiskでのマウント解除が足りていない可能性があります。

改めて`diskutil`でディスクの状態を確認します。

```
# diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         630.1 GB   disk0s2
   3:                 Apple_Boot                         650.0 MB   disk0s3
   4: 616B75A0-6163-4F08-9A2A-C0DEC1AA270F               369.3 GB   disk0s4
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:          Apple_CoreStorage                         121.0 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *1.2 GB     disk2
   1:        Apple_partition_map                         30.7 KB    disk2s1
   2:                  Apple_HFS Mac OS X Base System    1.2 GB     disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *742.6 GB   disk3
(以下略)
```

`disk0s4`が増えていますね！ちょうど約369GBです。コマンドでディスクユーティリティを開きます。

```
# /Applications/Utilities/Disk\ Utility.app/Contents/MacOS/Disk\ Utility 
```

`Macintosh HD`と同じフォーマットで新しいパーティションをフォーマットしてから、そのパーティションで`-`をクリックします。すると、2つのパーティションが結合されて`Machintosh HD`の領域が増えます。

ディスクユーティリティを閉じて、ターミナルからマシンを再起動します。

```
# reboot
```

参考:
[StackExchange: Creating a partition in unallocated space](https://apple.stackexchange.com/questions/209208/creating-a-partition-in-unallocated-space)
[MacRumors: how to open Disk Utility.app through Terminal?](https://forums.macrumors.com/threads/how-to-open-disk-utility-app-through-terminal.565418/)