跨区 Mac mini M4 並列で CephFS を使うとメタ・クライアントキャッシュ・rsync が先に壁になります。決定表、ceph.conf/同期例、一テラ二テラ水位、flock 要点を一枚化し、現場検収に使えます。

並列ビルドで詰まりやすい三つの壁

専有ノードが増えるほど共有ファイルシステム設計の誤りが顕在化します。

  • MDS/セッション: 長時間ジョブでメタ途切れ→再利用遅延。
  • クライアントキャッシュ: APFS 空きを食い成果物同期と競合。
  • 跨区 rsync: バーストで上行圧迫、体感低下。

JuiceFSSeaweedFSPulumi 租約 稿と併読。

意思決定マトリクス(CephFS 観点)

方針 向くケース 注意
キャッシュ上限を先に決める 読み取り中心のテスト分割。 成果物と同一 APFS だと水位が連動。
MDS セッション猶予を延ばす 長時間メタ連打パイプライン。 放置セッション掃除とセット。
rsync を先にキャップ ゴールデンから扇展開。 無制限は他テナントへ波及。

キャッシュと rsync の実行例

管理者配布用の ceph.conf 断片と、エージェントが毎回叩く同期例です(値は環境で置換)。

[client]
client_oc_max_objects = 2000
client_oc_size = 33554432
client_oc_max_dirty = 67108864
#!/usr/bin/env bash
set -euo pipefail
PROFILE="${1:-tokyo}"
case "$PROFILE" in
  tokyo) BW="32768";;
  oregon) BW="24576";;
  *) BW="16384";;
esac
rsync -azh --partial --delete-delay --checksum \
  --bwlimit="$BW" --timeout=300 --contimeout=60 \
  "${GOLDEN_HOST}:${GOLDEN_PATH}/" "${LOCAL_ARTIFACT_ROOT}/"

一時領域は可能なら別ボリュームへ。未対応の環境変数に依存させない方が安全です。

多リポジトリのビルドロック(要点)

ワークツリーはリポジトリ単位で分離し、昇格だけ単一路へ。flock はローカルロックファイルのみに置きます。

LOCK=/var/tmp/promote-${REPO_SLUG}.lock
flock -n "$LOCK" bash -c '
  ./scripts/package.sh
  rsync -az --delete ./dist/ "/Volumes/CephFS/promote/${REPO_SLUG}/"
' || { echo busy; exit 19; }

1TB/2TB 水位パラメータ

構成 黄信号 赤信号
1TB 空き200GiB未満が48h、または78〜82%継続。 空き100GiB未満/90%超→扇展開停止。
2TB 空き400GiB未満が48h、または78〜82%継続。 空き200GiB未満/90%超→同上。

隠れ消費を織り込み黄信号が週二回以上なら 拡張

運用五手順

  1. キャッシュ上限を表にし台数で割る。
  2. MDS 猶予を最長ジョブの九五パーセンタイルへ合わせ掃除方針を書く。
  3. rsync プロファイルをリージョン固定し週次 dry-run を記録。
  4. 一八%黄・九〇%赤を監視に接続し超過でジョブ抑制。
  5. ロックは昇格のみに限定し失敗時はロールバックへ。
可引用 ダーティ計64MiB前後から評価+APFS併記/rsync16〜32MiB/s昼夜二段/90%は赤合意。

FAQ

キャッシュ最大化:空き枯れで逆効果。

MDS 延長のみ:クライアントタイムアウトと RTT も要確認。

2TB 安心説:派生で再び崖、監視は継続。

免責。 数値は目安で SLA ではありません。dry-run で削除を検証してください。
ストレージと帯域の次の一手

ディスク拡張と同型ノードで水位を下げる

黄信号前に Mac mini M4 の容量と台数を見直し、ヘルプで接続手順を確認しましょう。

購入・拡張(プランを選ぶ) ヘルプを開く