macOS High Sierraにアップデートした後、大容量のファイルを削除したにもかかわらず、ストレージの空き容量が増えなくなっていることに気がつきました。
普段からMacのストレージの空き容量のチェックには「Daisy Disk」を使っているのですが、いくら不要ファイルを削除しても、状況が変化しないのです。
これはおかしいと思い調べてみたところ、この挙動には、macOS High Sierraから導入されたAPFSおよびTime Machineバックアップの仕様の変化がからんでいる模様。
以下詳細を説明します。
ローカルスナップショットが作成されていた
インターネットを検索してみたところ以下のような情報が見つかりました
- After updating to macOS High Sierra 10.13.1, when I erase files, I don't get back the space
- APFS snapshots: where are they located?
- APFS Deleting files does not reclaim disk space & exit code 8
- Solution: Reclaim storage back from "System"
情報をまとめると、macOS High Sierra環境でAPFSとTime Machineバックアップを使っている場合、SSD上に「ローカルスナップショット」なるものが作成され、これが原因でファイルの削除によって空き容量が増えなくなっているようです。
ローカルスナップショットの確認および削除は以下のコマンドで実行できます。
確認方法:
$ sudo tmutil listlocalsnapshots / #ローカルスナップショットが存在すれば以下のように表示される com.apple.TimeMachine.2017-09-27-005259 com.apple.TimeMachine.2017-09-27-104645 com.apple.TimeMachine.2017-09-27-114218 com.apple.TimeMachine.2017-09-27-124220
削除方法:
$ tmutil deletelocalsnapshots 2017-09-27-005259
ただし上記コマンドによって個別にスナップショットを削除することはできるものの、スナップショットの作成を完全に止める方法は、Time Machineバックアップを止める以外にないようです。
以前は「sudo tmutil disablelocal」で止めることができたようですが、macOS High Sierraではdisablelocalオプションが削除されています。
Time Machineを使うなら諦めるしかないのか?
実はローカルスナップショットに関しては「Time Machine のローカルスナップショットについて」という公式ドキュメントで詳しく説明されています。
macOS High Sierra の Time Machine は、Mac に内蔵されているか直接接続されている、APFS でフォーマットされたオールフラッシュ構成のストレージデバイス (複数あればそのすべて) にスナップショットを保存します。以前のバージョンの macOS の Time Machine は、Mac ノートブックコンピュータに内蔵の起動ディスクにのみスナップショットを保存します。
macOS High Sierraではノートブック以外にもローカルスナップショットの対象が広がっていて、それが今回の問題の発生につながっているようです(Mac miniで発生)。
さらに空き容量に関して以下のように説明されています。
ストレージ容量が必要時に不足する事態に陥らないように、十分に空き容量があるディスクにしかスナップショットは保存されません。ストレージ容量が足りなくなってきたら、スナップショットは一番古いものから順番に自動的に削除されます。そのため、Finder や「情報を見る」ウインドウでは、ディスク上の空き容量の計算に、ローカルスナップショットの分の消費量を含めていません。
ローカルスナップショットは自動的に削除されていき、またFinderや「情報を見る」ウィンドウでは、ローカルスナップショットの消費量を含めないよう忖度してくれているようです。
実際「DaisyDisk」での空き容量は150GBほどですが、このMacについての「ストレージ」やFinderの空き容量表示では200GBと多めに表示されていまます。約50GB分がローカルスナップショットの分ということになるのかもしれません。
まとめ
macOS High SierraでAPFSとTime Machineバックアップを使っている場合、SSDドライブ上にローカルスナップショットが作成されるのは仕様のようです。
ローカルスナップショットの作成や削除時によって、SSDの書き込み回数が増えるのが気になりますが、Time Machineを使うかぎりこの機能を抑制する方法はなさそうです。今のところこういうものだと思っておくしかないのかもしれません。
なおTime Machineバックアップを使わない道を選ぶならば、Carbon Copy ClonerやSuperDuper!といったツールを使ってバックアップする方法もあるかもしれません。