跨区 Mac mini M4 並列で CephFS を使うとメタ・クライアントキャッシュ・
rsync が先に壁になります。決定表、ceph.conf/同期例、一テラ二テラ水位、flock 要点を一枚化し、現場検収に使えます。
並列ビルドで詰まりやすい三つの壁
専有ノードが増えるほど共有ファイルシステム設計の誤りが顕在化します。
- MDS/セッション: 長時間ジョブでメタ途切れ→再利用遅延。
- クライアントキャッシュ: APFS 空きを食い成果物同期と競合。
- 跨区 rsync: バーストで上行圧迫、体感低下。
JuiceFS・SeaweedFS・Pulumi 租約 稿と併読。
意思決定マトリクス(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%超→同上。 |
隠れ消費を織り込み黄信号が週二回以上なら 拡張。
運用五手順
- キャッシュ上限を表にし台数で割る。
- MDS 猶予を最長ジョブの九五パーセンタイルへ合わせ掃除方針を書く。
- rsync プロファイルをリージョン固定し週次 dry-run を記録。
- 一八%黄・九〇%赤を監視に接続し超過でジョブ抑制。
- ロックは昇格のみに限定し失敗時はロールバックへ。
可引用 ダーティ計64MiB前後から評価+APFS併記/rsync16〜32MiB/s昼夜二段/90%は赤合意。
FAQ
キャッシュ最大化:空き枯れで逆効果。
MDS 延長のみ:クライアントタイムアウトと RTT も要確認。
2TB 安心説:派生で再び崖、監視は継続。
免責。 数値は目安で SLA ではありません。dry-run で削除を検証してください。
ストレージと帯域の次の一手
ディスク拡張と同型ノードで水位を下げる
黄信号前に Mac mini M4 の容量と台数を見直し、ヘルプで接続手順を確認しましょう。