VMの状態保存とスナップショット
作成日:
VM virtualization infrastructure operations
概要
仮想マシン(VM)の状態保存(サスペンド)機能とスナップショット機能の特性を理解し、安定した運用を実現するための知識をまとめる。
状態保存(サスペンド)の問題点
状態保存とは
VMの「状態保存」または「サスペンド」は、実行中のメモリ状態をディスクに保存し、後で同じ状態から再開する機能。ホストマシンのスリープやハイバネーションに似た動作をする。
なぜ信頼性が低いのか
状態保存はメモリの状態を凍結して後で再開する仕組みのため、以下の問題が発生しやすい。
| 問題カテゴリ | 具体例 |
|---|---|
| 時刻同期 | ゲストOSの時刻がずれ、ライセンス認証・証明書検証・タイムアウト処理が誤動作 |
| ネットワーク | TCP接続がタイムアウト済み、VPN/SSH接続が切断、再接続不可 |
| デバイス | USB機器やシリアルポートの接続状態が不整合、Guest Additionsが動作不良 |
| アプリケーション | データベースのロック状態、Dockerコンテナの停止、長時間プロセスの失敗 |
発生する典型的な症状
- インストールしたソフトウェアが起動しない、または動作がおかしい
- ネットワーク接続ができない
- データベースが起動しない、またはデータが破損する
- ライセンス認証が無効になる
- 時刻依存の処理が失敗する
動作中スナップショットのリスク
状態保存と同じ問題が発生する
動作中のVMでスナップショットを取ると、メモリの状態も一緒に保存される。これは実質的に状態保存と同じことを行っているため、復元時に同様の問題が起きる可能性がある。
【電源オフ状態でのスナップショット】
保存されるもの: ディスクの状態のみ
復元後: OSが起動からスタート → クリーンな状態
リスク: 低い
【動作中のスナップショット】
保存されるもの: ディスク + メモリ + CPU状態
復元後: その瞬間から再開 → 状態保存と同じ問題
リスク: 状態保存と同等
動作中スナップショット特有の追加リスク
- ディスクI/Oの不整合: スナップショット取得中もゲストOSが書き込みを続けるため、ファイルシステムの整合性が崩れる可能性
- データベースの破損: トランザクション中のスナップショットでデータ不整合が発生
- 取得時間の増大: メモリサイズが大きいほど時間がかかり、その間に不整合が広がる
推奨される運用方法
シンプルな運用ルール
1. 状態保存(サスペンド)を使わない
2. スナップショットは電源オフ状態で取る
この2つを守れば、メモリ状態の復元に起因する問題は発生しない。
日常の運用フロー
作業開始: VMを起動
作業中: 普通に使う
作業終了: ゲストOSをシャットダウン(状態保存ではなく)
重要ポイント: シャットダウン後にスナップショット作成
問題発生時: スナップショットに復元 → 起動
スナップショットの取り方
推奨手順(電源オフ状態)
-
ゲストOSを正常にシャットダウン
# Linux sudo shutdown -h now # Windows # スタートメニュー → シャットダウン -
VMマネージャーでスナップショットを取得
- 各仮想化ソフトウェアのスナップショット機能を使用する
-
スナップショットに名前と説明を付ける
- 例:
2026-01-23_clean-install - 説明: 何をインストールした状態か、どんな設定をしたかを記録
- 例:
コマンドライン(VirtualBox)
# VMが停止している状態で
VBoxManage snapshot "VM名" take "スナップショット名" --description "説明文"
# 例
VBoxManage snapshot "Ubuntu-Dev" take "2026-01-23_docker-installed" --description "Docker、Node.js、Python環境構築完了"
スナップショットを取るタイミング
| タイミング | 説明 |
|---|---|
| OSインストール直後 | クリーンな状態を保存 |
| 基本設定完了後 | ネットワーク、ユーザー設定など |
| 主要ソフトウェア導入後 | 開発環境、ツール類のインストール後 |
| 大きな変更を行う前 | 危険な操作の前に保険として |
スナップショットの管理
[現在の状態]
↑
[開発環境構築完了] ← よく使う復元ポイント
↑
[基本設定完了]
↑
[OSクリーンインストール] ← 最初のスナップショット
注意事項:
- スナップショットは増やしすぎない(目安: 3〜5個程度)
- 各スナップショットは差分を保持するため、ディスク容量を消費
- 不要になったスナップショットは削除する
- 中間のスナップショットを削除すると、差分がマージされる(時間がかかる)
復元手順
コマンドライン(VirtualBox)
VBoxManage snapshot "VM名" restore "スナップショット名"
GUI
各仮想化ソフトウェアのスナップショット復元機能を使用する。
他の仮想化環境への適用
この問題は仮想化技術全般に共通する。
| 仮想化ソフト | 状態保存機能 | 同様の問題 |
|---|---|---|
| VirtualBox | サスペンド | あり |
| VMware Workstation/Fusion | サスペンド | あり |
| Hyper-V | 保存 (Save) | あり |
| Parallels Desktop | サスペンド | あり |
| KVM/QEMU | virsh save | あり |
| UTM (macOS) | 状態保存 | あり |
クラウドVMの場合
AWS、Azure、GCPなどのクラウドVMでも同様の原則が適用される。
| 操作 | 問題の有無 |
|---|---|
| インスタンス停止→起動 | 問題なし(再起動と同等) |
| ハイバネーション | 同様の問題あり |
| ディスクスナップショット(EBS等) | ディスクのみなので問題なし |
VirtualBoxのウィンドウを閉じる際の注意
VirtualBoxでは、VMウィンドウを閉じる際に選択肢が表示される。
| 選択肢 | 説明 | 推奨 |
|---|---|---|
| 仮想マシンの状態を保存 | 状態保存(サスペンド) | ✗ 非推奨 |
| ACPIシャットダウン シグナルを送信 | 正常シャットダウン | ◎ 推奨 |
| 仮想マシンの電源オフ | 強制終了 | △ 緊急時のみ |
「仮想マシンの状態を保存」がデフォルトになっている場合があるため注意。
トラブルシューティング
状態保存から復帰後に問題が発生した場合
- 時刻同期を試す - ゲストOSの時刻同期サービスを再起動する
- ネットワークを再起動 - ゲストOSのネットワークサービスを再起動する
- それでも解決しない場合
- VMを再起動する
- スナップショットから復元する
関連トピック
- VMネットワーキング - VMのネットワーク設定