Macストレージがシステムデータでいっぱいな原因がRancher Desktopだった話

弊社では業務端末にMacを利用しているのですが、気づいたら利用可能ストレージが5GBになっていたので、ストレージの最適化を行いました。

# 結果
私のMacではコンテナ環境として、Rancher Desktopを利用していますが、limaに割り当てられているディスクスペースを開放したら、約60GBの利用可能ストレージが確保できました。
※必ず確保できるわけではございませんので、参考程度にお読みください。

# 対象者
- Macのストレージ最適化をやったことがない方
- Macの利用可能ストレージがなぜか少ないと感じる方
  - Rancher Desktop使っている方

※Docker Desktopも同様かは未確認なので、使ってるよーという方は確認していただけると嬉しいです。

# 前提
今回の記事の対象となるMacは、下記の仕様です。
- MacBook Pro (13-inch, M1, 2020)
- チップ：Apple M1
- ストレージ：251 GB


# ストレージ最適をやっていく
## 1. 現状確認
左上のAppleアイコンの「このMacについて」＞「ストレージ」から、現状の利用可能容量の確認が行えます。

## 2. よくある対応①：標準機能でスリム化
上記ストレージの画面から、「管理」をクリック

![スクリーンショット 2023-07-21 17.13.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477555/eee7ab54-25dc-bae0-9779-b9ef047ad75b.png)

「ストレージを最適化」、「ゴミ箱を自動的に空にする」あたりの対応を行いましょう。

「不要なファイルを削除」からファイルを見て、要不要を判断して削除することも可能です。
※わからないファイルを削除するのはやめましょう。ちゃんと調べてから削除しないと取り返しがつかなくなることがあります。


普段から気にかけている方は、これくらいはやっているかなと思いますが、ここから、「システムデータ」の壁にぶち当たると思います。


## 3. よくある対応②：キャッシュやログファイルなど
キャッシュ、ログファイルは下記のディレクトリのファイルをチェックしましょう。
```
[キャッシュ]
~/Library/Caches/
/Library/Caches/
/System/Library/Caches/

[ログ]
~/Library/Logs/
/Library/Logs/
```
消していいか判断できない場合は、クリーナーアプリ等を利用するといいと思います。
※今回の本題ではないので割愛します。


## 4. システムデータの調査
ここでは自力で「システムデータ」を調査する方法を紹介します。
「ターミナル」を起動して下記コマンドを実行してみてください。
```
% du -sh /System/* | sort -nr
```
#### コマンド解説
- du : 「disk usage」の略で、ディレクトリとそのサブディレクトリが使用しているディスク容量を確認するコマンドです。
  - -s : 指定したディレクトリの合計のみを表示するオプションで、サブディレクトリを除いて表示してくれます。サブディレクトリが表示されると見づらい時に使います。
  - -h : ディスク容量がKやMやGなどの読みやすい単位で表示されます。
  - /System/* : 対象のディレクトリを指定します。記載の場合はSystemディレクトリにあるディレクトリのディスク容量を確認できます。
- sort : パイプで繋いで結果を並び変えます。
  - -n : 文字列を数値としてみなします。
  - -r : 逆順で並べます。
    - 容量が大きいものから並べます。(-hをつけているため厳密ではないです。)

#### 深掘りしていく
上記コマンドの結果、下記のような結果が出てきます。
```
708M	/System/Applications
212M	/System/iOSSupport
157G	/System/Volumes
 14G	/System/Library
6.7M	/System/DriverKit
  0B	/System/Developer
```
その後、ディスク容量が大きいものをさらに深掘りしていきましょう。
```
% du -sh /System/Volumes/* | sort -nr
```
これを階層を掘り下げて繰り返していくと、ディスク容量を多く使っているファイルやアプリケーションが特定できると思います。

#### 時間がない人向け
後出しですが、findコマンドで探すこともできます。
```
% find ~ -type f -size +2G
```
- find : 場所を指定してファイルを検索するコマンドです。
  - ~ : 実行ユーザのルートフォルダを指定しています。
  - -type f : 検索対象を「f:ファイル」に限定しています。「d:ディレクトリ」や「l:シンボリックリンク」が選択できます。
  - -size +2G : 2Gを超える(「+」)ファイルを探します。「-」の場合は指定したサイズ未満のファイルを探します。


## 5. [ようやく本題]Rancher Desktopがシステムデータの犯人
コマンドを駆使しながら確認していったところ、巨大ファイルを見つけました。
```
du -sh ~/Library/Application\ Support/rancher-desktop
 60G	/Users/kimura/Library/Application Support/rancher-desktop
```
Rancher Desktop、お前だったか。

部署メンバーにも確認してもらったところ、
```
 35G	/Users/maedat/Library/Application Support/rancher-desktop
 27G	/Users/sakai/Library/Application Support/rancher-desktop
 18G	/Users/nakamuray/Library/Application Support/rancher-desktop
```
みんな違うことを確認。
おそらく、imageファイルだろうと、とりあえず使ってないものを消していく
```
% docker volume prune
% docker container prune
% docker image prune

# イメージ全部消えてもよい方　※自己責任でお願いします。
% docker image prune -a
```
どうかな？
```
% du -sh ~/Library/Application\ Support/rancher-desktop
 59G	/Users/kimura/Library/Application Support/rancher-desktop
```
やったー！1GB減ったよ！！・・・・・:sob:

#### 原因調査(迷走)
どうやら、limaのディスク容量に60GB割り当てられているみたいだということがわかった。
```
% LIMA_HOME="$HOME/Library/Application Support/rancher-desktop/lima" "/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl" shell 0
$ df -h
```
limaのログはここにあるのか。diskを100GiBで設定しているらしい。なるほど。
```
~/Library/Logs/rancher-desktop/lima.log

---
    "cpus":4,
    "memory":"4294967296",
    "disk":"100GiB",
---
```
disk：100GiB はデフォルト設定の模様
Rancher Desktopからlimaを起動しているはずだが、設定項目はないし、設定方法が不明。

## 6. Rancher Desktopの肥大化したデータの削除
飛びますが、結果として、Rancher Desktopの初期化が必要でした。
現状の設定を控えて、赤い「Factory Reset」をしましょう！
![スクリーンショット 2023-07-21 18.20.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477555/a74d79a8-b7f2-a053-f146-7ba4cf20841f.png)

```
% du -sh ~/Library/Application\ Support/rancher-desktop
681M	/Users/kimura/Library/Application Support/rancher-desktop
```
60Gから681Mに！！！！！


# 振り返り
その後、docker環境を立ち上げると、また増えました。
```
% du -sh ~/Library/Application\ Support/rancher-desktop
6.2G	/Users/kimura/Library/Application Support/rancher-desktop
```
イメージの分だけディスク容量が増えたようですが、再度イメージを削除してもディスク容量は減りませんでした。

### 結論
Rancher Desktopは取得するイメージサイズに合わせて、必要な分だけlimaのディスク容量を確保しているようです。
一度、確保したディスク容量の中であれば、イメージを削除したり新たなイメージを取得してもディスク容量は変わりませんが、確保した分以上にイメージを取得するとディスク容量を追加していくようです。
※デフォルト設定の100KiBを超えた場合にどうなるかは未検証

要は、Rancher Desktopは、イメージを削除しても**確保したディスク容量を解放しない**ようです。
解放するためには、「Factory Reset」が必要なので、Rancher Desktopを使っていて、なんかシステムデータが肥大化しているなと思っている方は是非お試しください。
おそらく、定期的にFactory Resetしないといけない気がします。

# おわりに
今回、Rancher Desktopがメモリ3Gしか割り当てられていない状態でしたので、MacのOSバージョンアップしようと思い立ったのがきっかけです。
ストレージが不足していて、OSバージョンアップのインストーラーがダウンロードできず、結果的にRancher Desktopがストレージを圧迫していたというお話でした。

（業務端末のスペック上げたい:sweat_smile:）