Mac のストレージの不要なパーティションを削除して容量を有効活用する

## はじめに

本記事には、ストレージ削除の処理が含まれています。
ストレージを削除する際は削除対象のデータを外部ディスクなどにコピーしてバックアップをとっておくことをおすすめします。
データの削除等については自己責任でお願いします。

## 環境

MacBook Pro
macOS Big Sur 11.3.1
ディスクユーティリティ 20.1

## TL;DR

ストレージの空き容量が逼迫している時は、不要なパーティションが原因の可能性がある。
空き容量を増やすために不要なパーティションを削除して、その分、残したいパーティションを拡大すれば良い。
「不要なパーティション」が「拡大したいパーティション」よりも前に配置されている場合、

1. 「不要なパーティション」に「拡大したいパーティション」のデータを復元する
1. 「拡大したいパーティション」を削除する

の手順で拡大できる。

## 問題

256GB ストレージを搭載しているはずなのに、 128GB程度分しか使えていませんでした。
このせいで、ストレージの空きが少なくなって、XCodeなど大きめのアプリが入れられないという状況になってしまいました。
本記事では、その原因と解決策について説明します。

※ディスクユーティリティ、パーティションなどに馴染みのない方は、[前提知識](#前提知識)をご参照ください。

## 原因-どうして容量の半分しか使えていなかったか

ディスクユーティリティを使ってストレージの内訳を見たところ、本来の容量(256GB)の半分しか使えていなかった理由は、
**残りの128GB分が別のパーティションとして使われていたから**でした。

### 原因の確認

これは、ディスクユーティリティから確認できます。
ディスクユーティリティを開いて、「パーティション作成」を押します。

![disk_util_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552269/7bca8084-5937-0c52-26c2-8a76912848a6.png)

すると、次のような画面になります。
※画像はそのときの現象を再現したものなのですが、手元に1TBストレージしかなかったので、当時の256GBストレージを完全に再現できているわけではありません。黒で隠している場所は無視してください。これ以降の画像も全て当時の現象を再現したものです。

![disk_util_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552269/f2b25970-2b3f-d9c5-cf42-c1a6226d2643.png)

256GB分のストレージが

- `test_partition_1`: 不要な128GB
- `test_partition_2`: 使用している128GB

の２つのパーティションに分かれています。

おそらく過去の自分が訳もわからずパーティションを作成し、そのままにしていたのだと思われます。
「使用しているパーティション（`test_partition_2`）」にmacOSがインストールされていて、別のパーティションはほぼ何にも使われずに存在しているだけでした。

不要なパーティション（`test_partition_1`）を削除して、その分、今使用しているパーティション`test_partition_2`が使える領域を増やすことが目的です。

### パーティションの配置順によっては通常の方法で解決できない

ここで大事なポイントなのですが、
**「削除したいパーティション（`test_partition_1`）」が「拡大したいパーティション（`test_partition_2`）」よりも前に配置されて**います。
これが逆の場合、つまり、削除したいパーティションが拡大したいパーティションよりも後に配置されている場合、[公式ページ](https://support.apple.com/ja-jp/guide/disk-utility/dskutl14027/20.0/mac/11.0)の「ストレージデバイスのパーティションを拡大する」に従って操作すれば無事完了です。

しかし、削除したいパーティションが前に来ている場合、削除しても残ったパーティションの領域が自動で拡大されません。
これは、mac のストレージ領域は後ろに拡張することはできますが、前に拡張することはできないからだと考えられます。
[先ほどの公式ページ](https://support.apple.com/ja-jp/guide/disk-utility/dskutl14027/mac)によると、

> ボリュームを拡大するには、デバイス上でそのボリュームの後ろに続くボリュームを削除してから、拡大したいボリュームの終了点を解放した領域に移動する必要があります。デバイス上の最後のボリュームを拡大することはできません。

とのことです。

したがって、本記事では**削除したいパーティションが、拡大したいパーティションよりも前に配置されている**場合の解決策を示します。

## 解決策

以下の手順で解決できます。

1. [「不要なパーティション」に「拡大したいパーティション」のデータを復元する](#不要なパーティションに拡大したいパーティションのデータを復元する)
1. [「拡大したいパーティション」を削除する](#拡大したいパーティションを削除する)

### 「不要なパーティション」に「拡大したいパーティション」のデータを復元する

「拡大したいパーティション = `test_partition_2`」のデータを、「不要なパーティション = `test_partition_1`」に復元します。
手順は以下のとおりです。

[^recover_mode]:　自分で再現したときに、復旧モードではなく通常の状態でディスクユーティリティを使って復元操作を行ったところ、`ターゲット装置のパーティションを設定できませんでした - 操作: DeleteAPFSVolume、行番号: 5453 - リソースが使用中です`のエラーが出て復元できませんでした。なので、復旧モードで復元する方法を示しています。

- Mac を復旧モードで起動する[^recover_mode]（[公式ページ](https://support.apple.com/ja-jp/HT201314)）
    - Mac の電源を切ってから再度電源を入れ、起動開始直後、アップルロゴが出てくるまで`command + R`を押し続ける
    - 復旧用システムが起動するので、ログインパスワードを入力する
- 「Time Machine から復元」や「ディスクユーティリティ」などの選択肢があるウィンドウが出てきたら、「ディスクユーティリティ」を選択して「続ける」をクリックする
- 左のディスク一覧から復元先の`test_partition_1`を選択して、右上の「復元」を押す

![disk_util_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552269/2e53cb52-cc7a-11c5-aed2-1f198c7756a2.png)

- 復元元として`test_partition_2`を選択して「復元」を押す

![disk_util_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552269/e466d843-4a08-885a-db7c-bb1710085e08.png)

- 復元が終了したら、「完了」を押す

### 「拡大したいパーティション」を削除する

同じくディスクユーティリティで、拡大したいパーティション（復元してできた方ではなく、元々あった方の`test_partition_2`）を削除します。

- ディスクユーティリティで、元々あった`test_partition_2`が入っているディスクを選択して「パーティション作成」を押す
- 円グラフの下の「-」を押す
- 右下の「適用」を押す
- 確認ダイアログが出るので「パーティション作成」を押す

※「拡大したいパーティション」の前に配置されているパーティションにマウントされていないボリュームがあると、「拡大したいパーティション」を削除できないので、もしマウントされていなければディスクユーティリティでマウントしたいボリュームを選択して、右上の「マウント」を押してマウントします。

以上で、元々あった`test_partition_2`のデータが復元された、256GB分の領域ができあがります。

## 前提知識

本記事に関係する前提知識についての説明です。
ご存知の方は読み飛ばしていただいて構いません。
また、誤り等がありましたらご指摘いただけると幸いです。

### ディスクユーティリティ

Macにデフォルトで入っているアプリで、ストレージ関係の設定を行えます。
ディスクユーティリティは以下の方法で起動することができます。（[公式ページ](https://support.apple.com/ja-jp/guide/disk-utility/dskutl1029/mac)）

> Launchpadを使用する: Dockで「Launchpad」 をクリックして、検索フィールドに「ディスクユーティリティ」と入力してから、「ディスクユーティリティ」アイコン  をクリックします。
> Finderを使用する: Finder  で「移動」＞「ユーティリティ」と選択してから、「ディスクユーティリティ」アイコン  をダブルクリックします。（「ディスクユーティリティ」は「/アプリケーション/ユーティリティ」フォルダ内にあります）

### ファイルシステム

ファイルシステムは、ストレージに入っているファイルの管理を支援してくれるソフトウェアです。
以下のように様々なファイルシステムがあり、Windowsでしか使えないものもあれば、macOSでしか使えないものもあります。

- FAT (File Allocation Table)
  - FAT12, FAT16, FAT32, exFAT
- NTFS (New Technology File System)
- HFS (Hierarchial File System)
- HFS+
- **APFS** (Apple File System)

本記事で扱うのはAPFSです。
BUFFALOの公式ページ「[ファイルシステム（FAT32、FAT16、NTFS、exFAT、HFS、HFS+、APFS）の違いについて](https://www.buffalo.jp/support/faq/detail/1079.html)」にそれぞれのファイルシステムの特徴などが書かれています。

### パーティション、ボリューム、コンテナ

パーティション、ボリューム、コンテナは、物理ストレージを仮想的に分割する時に出てくる概念です。

#### パーティション

物理ストレージを分割するときの単位です。
ある１つの物理ストレージを複数のパーティションに区切ることによって、1つしかない物理ストレージをあたかも複数のストレージがあるかのように扱えます。
ただし、各パーティションの空き領域は他のパーティションによって利用することができません。

#### ボリューム

ボリュームも、パーティションと同じようにストレージを区切る際の単位です。
厳密にはパーティションと異なるようですが、その詳しい違いについては今回はさして重要でないため省略します。

#### コンテナ

APFSでは、パーティションの中にコンテナが作成され、コンテナの中にボリュームが作成されます。
そして、コンテナの中には複数のボリュームが存在できます。
つまり、APFSでは1つのパーティションの中に複数のボリュームが存在することができるのです。
多くのファイルシステムでは、1つのパーティションの中に1つのボリュームしか存在できないので、これはAPFSの特徴の一つと言えます。
（参考: [About Apple File System](https://developer.apple.com/documentation/foundation/file_system/about_apple_file_system)の「Free Space Is Shared Between Volumes」）

これにより、APFSではボリュームの空き領域を有効活用することができます。
例えば、HFS+は1パーティション、1ボリュームなので、あるパーティションAの中にボリュームAがある場合、それ以外のボリュームは存在できません。
パーティション間で空き領域は共有できないので、ボリュームAに空き領域があっても、他のボリュームはその空き領域を利用できないことになります。
しかし、APFSの場合、あるパーティションBの中にコンテナBがあって、その中にボリュームB、ボリュームCがある場合、ボリュームBの空き領域はボリュームCが利用できますし、その逆もまた然りです。
この「（同一コンテナ内の）ボリューム間で空き領域を共有できる」ことが、APFSの大きな特徴の一つです。