期間限定

Apple Silicon クラウド Mac Runner のディスクと inode ガバナンス:Derived Data、コンテナレイヤ、統合ログとキャッシュ——割当アラート、段階的クリーンアップとプラン SSD 境界のキャパシティプランニング

Runner サーバーメモと容量
2026-05-08 約 6 分

無人運転の クラウド Mac Runner で最初に枯れるのは CPU ではなく、しばしばディスク容量と inode です。DerivedData、Docker のレイヤ、~/Library/Logs とパッケージマネージャのキャッシュが重なると、キューが深まった瞬間に「実行は続くが書き込めない」状態になります。本稿では観測指標・段階的クリーンアップの順序・プラン境界の三本線を、当番 Runbook に落とし込める形で整理します。

この記事の要点

  1. ブロック使用量inode を同時に監視する。小ファイルの嵐は node_modules、インデックス、ログのシャードで起きやすい。
  2. 削除順を「再取得できるキャッシュ → 再ビルドできる成果物 → 承認が必要なデータ」の三段に分け、鍵やレジストリキャッシュを誤って消さない。
  3. コンテナ側とホスト側は別々に計量する。docker system df と APFS の空きはセットで見る(詳細は Docker 本番相当のトラブルシュート記事)。
  4. Webhook や自己ホスト Runner のディスク尖峰は並列度と相関しがち。受信検証とべき等性の設計は OpenClaw コールバックと Runner の連携記事 とあわせてレビューすると安全側に寄せられる。
データセンターのサーバーラックをイメージしたストレージと容量計画の雰囲気写真
カバーは雰囲気用です。本番では実際の dfdf -i、統合ログと CI 成果物の保持ポリシーで裏取りしてください。

1. 二つの天井:ブロックと inode

APFS で「まだ数十 GB ある」のに No space left on device になるのは、多くの場合inode やメタデータ圧力が原因です。Runner で典型な犯人は、ジョブごとの Xcode DerivedData、ローテーションされていない統合ログ、npm / pip / Maven のローカルキャッシュ、リポジトリを bind マウントしたコンテナ内の大量小ファイルです。アラートは disk > 85%inode > 85%(またはファイル数プロキシ)の二系統に分け、ダッシュボード上の色分けも分けると、当番が容量バーだけを見て inode を見落とす事故を減らせます。

2. 段階的クリーンアップ:順序がポリシーになる

第一段階は再ダウンロード・再ビルドで復元できるパスだけ:パッケージキャッシュ、ジョブ用 /tmp、期限の切れた .xcresult アーカイブなど。第二段階は再生成は高コストだが許容できる領域:DerivedData、Docker BuildKit キャッシュ、宙に浮いたイメージ。コマンドとプラン境界は前述の Docker 記事と揃えるとレビューが楽です。第三段階は変更管理が必要な永続ボリュームと監査ログ。受信実行チェーンに関わる保持期間は、OpenClaw Runner 記事の監査フィールド設計と突き合わせ、「ディスク確保のために証跡だけ消す」ことを防ぎます。

典型パス / オブジェクト リスクとアクション
L1 捨ててよい パッケージキャッシュ、ジョブ workspace/tmp 低。ジョブごとの finally か専用 tmp ボリュームを推奨
L2 再構築 DerivedData、Docker レイヤ、シミュレータランタイムキャッシュ 中。掃除前にタグやイメージ版を記録し、索引ジョブと衝突しないよう時間帯を固定
L3 要承認 成果物キャッシュ、監査ログ、ユーザーアップロード領域 高。保持ポリシーと法務サイクルに従い、夜間スクリプトの一括削除は禁止

3. コンテナ層、統合ログ、プラン境界

Docker イメージ層は SSD 上で積み上げ書き込みになり、並列ビルドが多いと IOPS と空きブロックを同時に削ります。統合ログにサイズ上限がないと、数ヶ月で単一 Runner でも数 GB 単位に膨らみます。プラン内の 256 GB / 512 GB を「システム + ツールチェーン + 二週間ローリング成果物 + 15% バッファ」としてモデル化し、バッファが尽きると CI 失敗だけでなく Spotlight やキーチェーン保守まで遅くなる、と説明できるようにしておくと調達と合意が取りやすいです。log configmax-size とホスト側 newsyslog / aslmanager をベースイメージに焼き込む方が、事後の rm -rf より安上がりです。

Xcode とコンテナ手順を同居させるマシンでは、週次の短い「読み取り専用体检」ウィンドウを推奨します:df -hdf -ih、上位の du -sh *docker system df。結果を追記専用のオブジェクトストレージやチケットに残すと、「先週から何が肥大化したか」が比較でき、ディスクが真っ赤になってから全員で grep する羽目を避けられます。

4. まとめ

健全な Runner 運用は割当が観測でき、掃除が繰り返し可能で、境界が説明できることです。同じ数字を SRE のアラートと調達資料の双方に使えると、「なぜ次のティアでディスクを上げるのか」が一貫して伝わります。本稿の層分け表をオンボーディングに貼れば、初当番でも inode の地雷を踏みにくくなります。

クラウド Mac mini なら、容量と性能がより予測しやすい

Apple Silicon の統合メモリは、Xcode・シミュレータ・並列ビルドを同時に回してもスワップの振動で「偽のフリーズ」になりにくいのが実務上の利点です。macOS 上では APFS・統合ログ・ネイティブツールチェーンの意味論が揃い、Linux ホストと macOS ゲストの間を行き来して翻訳するコストが減ります。専用のクラウド Mac はディスク I/O と inode 負荷をマルチテナント近所づき合いから切り離せます。M シリーズは消費電力対性能に優れ、筐体も小さく、7×24 で Runner を回す総所有コストはノートをビルド機に流用するより有利になりがちです。Gatekeeper や SIP により、安価なジャンプボックスで起きがちなサプライチェーン改ざん面も相対的に抑えられます。

CI / 自己ホスト Runner観測可能なディスク割当とクリーンアップ Runbook を設計したいなら、kvmboot のクラウド Mac mini M4 は現実的な出発点です。プランと料金を見るで、Derived Data とコンテナキャッシュがキューを潰さない余裕を確保してください。