スナップショットとロールバック
ここではスナップショットがほぼ無コストな理由、ツリーの分岐、既知良好状態へ戻る 3 つの方法。
1VMTool のスナップショットはディスクのコピーではなく APFS クローン。ファイルシステムは一方が書くまでブロックを共有するため、スナップショット取得はゼロバイトコピーで約 1 ミリ秒 — 24 GiB でも 1 TiB でも同じ。スケールするサイズがない。
それがスナップショットの用途を変える。秒とギガバイトかかると節約し、危険な手前の 1 枚を省略する。無コストなら判断をやめる。
取得と復元
1vm snapshot take dev "before upgrade"
1vm snapshot list dev
1vm snapshot restore dev before-upgrade
1vm snapshot rm dev <ref>
<ref> は名前または id 接頭辞。snapshot rm は -r で 1 ノードではなく枝全体を削除。
スナップショットは分岐
古い状態に復元してから新スナップショットを取ると第 2 の系ができ、第 1 を捨てない。同一起点から複数方向を探索でき、ツリービューは各ノードの固有データで実形状を描く — 実際にディスクを消費する枝が見える。
キャプチャ内容
| 状況 | キャプチャ |
|---|---|
| Virtualization.framework 上で実行中 | ディスクとメモリ。復元で実行途中から再開 |
| 1VM エンジン上で実行中 | ディスクのみ — 復元は cold-boot |
| 停止、どちらのエンジンも | ディスクのみ |
戻る 3 つの方法
混同しやすいので明確に。
snapshot restore は選んだ特定スナップショットへ。
discard-session は今回の boot 開始時のスナップショットへ、電源投入以降の書き込みをすべて破棄:
1vm discard-session dev --force
reset はクリーン状態へ:
1vm reset dev --force
ロールバックモード
状態を蓄積すべきでないマシン — 閲覧 VM、サンドボックス、デモ、他人に渡すもの — でロールバックを有効にすると電源オフ時に書き込みを自動破棄:
1vm rollback dev on
毎 boot が安全点から始まり、覚えることなし。手で維持する規律の構造版。
クローン
同じクローン原語でマシン全体の安価なコピー:
1vm clone dev test # リンククローン。分岐までブロック共有
1vm clone dev test --full # 独立コピー
1vm clone dev test --rekey-ssh # ゲスト host key 再生成
親と同時実行するクローンには --rekey-ssh — でないと両方が同一 SSH host key。
ディスク使用量
1vm du
ライブラリ全体の allocated、on-disk、スナップショット別バイト — クローンがブロック共有するとき「どれだけ使っているか」の正直な答え。