二〇二六年 レンタル Mac Mini:七×二十四ログの意思決定マトリクス(lz4/zstd・IO nice・inode 水位)
- 圧縮が CPU を奪い本処理が遅れる。
- 切片が粗く巨大ファイル化する。
- inode が先に枯れ静かに失敗する。
lz4 と zstd の第一選択
支配で順序固定。常駐稿。
| 状況 | 第一 | 第二 |
|---|---|---|
| 昼間追記 | lz4 | 細切片 |
| 夜間圧縮 | zstd 低中 | 日次 |
| inode 逼迫 | 切片増 | 古圧縮削除 |
| 同居 | nice | 別巻退避 |
圧縮レベルと CPU 占有
lz4 は速く常時向き。zstd は夜間窓で低から中に寄せ容量を削る。メモリ圧が出たらレベルより回転間隔を先に伸ばす。統合メモリでは圧縮とワーカーが同じ熱予算を共有するため、計測なしにレベルだけ上げない運用が安全です。
ローテーション頻度
巨大化前に回す。時刻とサイズの早い方で切る。追跡クエリがファイル境界に依存するなら間隔を短くし、集計のみなら日次でも足りることがあります。
| 帯域 | 間隔 | 目安 |
|---|---|---|
| 高頻度 | 十五至六十分 | 二百メガ前後 |
| 夜間増 | 日次 | 一ギガ超禁止 |
| inode 黄 | 切片倍 | 五十メガ上限 |
launchd との組み合わせ
重圧縮は夜間 plist に分離。詰まるなら回転側に待機を挟む。
# newsyslog 例
/var/log/runmini/batch.log root:staff 640 30 100M * Z
zstd 明示は logrotate 併置か夜間シェル。brew で入れた logrotate の例です。
/var/log/runmini/batch.log {
size 200M
rotate 14
compress
compresscmd /usr/local/bin/zstd
compressoptions -3
compressext .zst
}
#!/bin/bash
set -euo pipefail
LOGDIR="/var/log/runmini"
TS=$(date +%Y%m%d%H%M)
mv "$LOGDIR/batch.log" "$LOGDIR/batch.log.$TS"
: >> "$LOGDIR/batch.log"
zstd -3 --rm "$LOGDIR/batch.log.$TS"
ディスク水位時の動作
空きと inode を同板に。永続化稿と数を揃える。黄へ入った時点で新規圧縮キューだけ止め、本処理は継続できる余白を残すと切り戻しが容易です。
| 信号 | 黄 | 赤 |
|---|---|---|
| 空き率 | 一五%整理 | 一〇%新圧止 |
| inode | 七五%削除 | 八五%書止 |
| 同居 | 間隔倍 | 別巻退避 |
よくある質問
- lz4 と zstd の切り分けは。
- 常時 lz4 細切、夜間だけ zstd。
- inode が先に赤は。
- 切片増と削除順を README 固定。
- newsyslog だけで足りるか。
- 単純回転は可。zstd 厳密なら logrotate かシェル併置。
購入とレンタル(短評)
購入は構成固定と刷新負担。レンタルは巻き足しが速く水線試験が回しやすい。プール比較。
六手順(受入ランブック)
- 増分を測りサイズか inode 主導を付ける。
- 昼夜窓を表にし launchd を UTC 固定。
- newsyslog か logrotate を正に検証で一回転。
- 黄赤閾値を板に載せ文面短縮。
- 同居間隔調整と別巻退避パス。
- README 残し退避表へ。
文書に貼る出発点
- 昼 lz4 細切、夜 zstd 低中。
- 空き一五黄一〇で新圧止。
- inode 七五黄八五赤で書止。