VMの状態保存とスナップショット

作成日:
VM virtualization infrastructure operations

概要

仮想マシン(VM)の状態保存(サスペンド)機能とスナップショット機能の特性を理解し、安定した運用を実現するための知識をまとめる。

状態保存(サスペンド)の問題点

状態保存とは

VMの「状態保存」または「サスペンド」は、実行中のメモリ状態をディスクに保存し、後で同じ状態から再開する機能。ホストマシンのスリープやハイバネーションに似た動作をする。

なぜ信頼性が低いのか

状態保存はメモリの状態を凍結して後で再開する仕組みのため、以下の問題が発生しやすい。

問題カテゴリ具体例
時刻同期ゲストOSの時刻がずれ、ライセンス認証・証明書検証・タイムアウト処理が誤動作
ネットワークTCP接続がタイムアウト済み、VPN/SSH接続が切断、再接続不可
デバイスUSB機器やシリアルポートの接続状態が不整合、Guest Additionsが動作不良
アプリケーションデータベースのロック状態、Dockerコンテナの停止、長時間プロセスの失敗

発生する典型的な症状

  • インストールしたソフトウェアが起動しない、または動作がおかしい
  • ネットワーク接続ができない
  • データベースが起動しない、またはデータが破損する
  • ライセンス認証が無効になる
  • 時刻依存の処理が失敗する

動作中スナップショットのリスク

状態保存と同じ問題が発生する

動作中のVMでスナップショットを取ると、メモリの状態も一緒に保存される。これは実質的に状態保存と同じことを行っているため、復元時に同様の問題が起きる可能性がある。

【電源オフ状態でのスナップショット】
保存されるもの: ディスクの状態のみ
復元後: OSが起動からスタート → クリーンな状態
リスク: 低い

【動作中のスナップショット】
保存されるもの: ディスク + メモリ + CPU状態
復元後: その瞬間から再開 → 状態保存と同じ問題
リスク: 状態保存と同等

動作中スナップショット特有の追加リスク

  1. ディスクI/Oの不整合: スナップショット取得中もゲストOSが書き込みを続けるため、ファイルシステムの整合性が崩れる可能性
  2. データベースの破損: トランザクション中のスナップショットでデータ不整合が発生
  3. 取得時間の増大: メモリサイズが大きいほど時間がかかり、その間に不整合が広がる

推奨される運用方法

シンプルな運用ルール

1. 状態保存(サスペンド)を使わない
2. スナップショットは電源オフ状態で取る

この2つを守れば、メモリ状態の復元に起因する問題は発生しない。

日常の運用フロー

作業開始:  VMを起動
作業中:    普通に使う
作業終了:  ゲストOSをシャットダウン(状態保存ではなく)

重要ポイント: シャットダウン後にスナップショット作成
問題発生時:  スナップショットに復元 → 起動

スナップショットの取り方

推奨手順(電源オフ状態)

  1. ゲストOSを正常にシャットダウン

    # Linux
    sudo shutdown -h now
    
    # Windows
    # スタートメニュー → シャットダウン
  2. VMマネージャーでスナップショットを取得

    • 各仮想化ソフトウェアのスナップショット機能を使用する
  3. スナップショットに名前と説明を付ける

    • 例: 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/QEMUvirsh saveあり
UTM (macOS)状態保存あり

クラウドVMの場合

AWS、Azure、GCPなどのクラウドVMでも同様の原則が適用される。

操作問題の有無
インスタンス停止→起動問題なし(再起動と同等)
ハイバネーション同様の問題あり
ディスクスナップショット(EBS等)ディスクのみなので問題なし

VirtualBoxのウィンドウを閉じる際の注意

VirtualBoxでは、VMウィンドウを閉じる際に選択肢が表示される。

選択肢説明推奨
仮想マシンの状態を保存状態保存(サスペンド)✗ 非推奨
ACPIシャットダウン シグナルを送信正常シャットダウン◎ 推奨
仮想マシンの電源オフ強制終了△ 緊急時のみ

「仮想マシンの状態を保存」がデフォルトになっている場合があるため注意。

トラブルシューティング

状態保存から復帰後に問題が発生した場合

  1. 時刻同期を試す - ゲストOSの時刻同期サービスを再起動する
  2. ネットワークを再起動 - ゲストOSのネットワークサービスを再起動する
  3. それでも解決しない場合
    • VMを再起動する
    • スナップショットから復元する

関連トピック

参考リンク