VMスナップショットのロールバック:何が復元され、何が復元されないか
VMスナップショットが復元するのはゲストのディスクとメモリの状態であり、遠隔アカウントの操作、共有ファイルのコピー、他所に保持された記録ではない。まずロールバックの範囲を定めよう。
チェックポイントはゲストの一部を元に戻し、他のすべてのシステムはそのままの場所に残す。ゲストから出ていったもの、つまり配信されたメッセージ、ホストへコピーされたファイル、ウェブサイトが受け付けたアカウント操作は、それを受け取ったシステムに属し、チェックポイントには属さない。ロールバックには定められたローカルな範囲があり、それを消去と呼ぶと復旧計画は虚偽の主張になる。以下の表は、復元が実際にどこまで届くかのチェックリストだ。
デスクトップは戻るが、遠隔セッションは戻らない
よくある不満は後からやってくる。仮想マシンは先週の状態で起動し、ブラウザの履歴は消え、ユーザーがサインインしたサービスはいまだにセッションを有効として一覧に出す。壊れているものは何もない。二つのシステムは同じトランザクションにいたことがないのだ。
| Where the effect landed | Who owns undoing it | How you verify it is gone |
|---|---|---|
| Guest virtual disk | The hypervisor, through the checkpoint you restore | The disk state matches the checkpoint's timestamp |
| Guest memory | Only a checkpoint type that saved memory | The guest resumes or cold-boots, as that type dictates |
| Host share or clipboard | The owner of that host path | The copied file is absent at its destination |
| Remote account or session | The service that accepted the action | The session list shows nothing active for that account |
| Mail or message queue | The mail system that delivered it | The message is gone from the recipient's mailbox, not from the guest |
その食い違いが教訓である。チェックポイントはハイパーバイザーが追跡するもの、すなわちゲストの仮想ハードウェアと、種類によってはそのメモリを復元する。ウェブアプリケーションのセッションテーブル、メールサーバーの配信キュー、同僚のダウンロードフォルダは追跡しない。復元の前に種類を読むべきだ。種類が、復元がそもそも何を取り戻せるかを決めるからである。
ハイパーバイザーが実際に保存したもの
MicrosoftのHyper-Vドキュメントは、仮想ディスクとともにメモリも取得する標準チェックポイントと、データ整合性のある仕組みを使いメモリを省く運用チェックポイントとを区別している。標準チェックポイントはゲストが実行していた命令から再開し、運用チェックポイントは代わりに整合性のあるディスクから起動する。この違いが、復元が実行中のプロセスを返すのか、きれいな起動を返すのかを決める。あるハイパーバイザーの振る舞いを別のものへ持ち込んではならない。用語も整合性の仕組みも製品ごとに変わるからだ。
Microsoftはまた、チェックポイントはバックアップではないと警告しており、その警告は重要だ。一つのボリューム上のチェックポイントの連鎖はそのボリュームの運命を共有するので、失われたホストではなく、悪い変更に対して守るものになる。
ゲストのディスクの外に住むファイル
共有フォルダはゲストに提示されたホストのファイルシステムであり、ゲストを戻してもそれは戻らない。ユーザーがゲスト内でファイルをダウンロードし、共有パスを通して外へコピーしたなら、その二つ目のコピーには独自のライフサイクルと所有者がある。ゲストを復元すると一つ目のコピーは消え、二つ目は置かれた場所にそのまま残る。
ロールバックを約束する前に、各パスの所有者を尋ねよ。ホスト共有、クリップボード経由の転送、クラウドドライブへのアップロードは三つの行き先であり、ハイパーバイザーのストレージの隣にあり得るのは最初のものだけだ。
コピーを本当に削除しなければならない場合は、その行き先で削除し、その手順を別に記録する。スナップショットだけを列挙した復旧計画は、コピーが見つかるまで誰も気づかない形で不完全である。同じ注意は、ゲストが動いている間にホストが書いたログにも当てはまる。
ハイパーバイザーが見なかったアカウント
サービスがゲストから受け付けたものはすべてサービスの記録であり、ゲストの記録ではない。ハイパーバイザーはそのトランザクションを見ていないので、逆にはできない。パスワード変更、購入、投稿されたメッセージ、API呼び出しは、いずれもそれを処理したシステムに残る。ディスクイメージの復元はそのシステムには届かない。
ブラウザの状態が食い違いを具体的にする。復元されたゲストは、その後セッションを入れ替えたサービスの古いクッキーを保持しているかもしれず、ユーザーはサインインしているように見えて静かに拒否される。あるいはサインアウトして見えるのに、サービスはまだセッションを有効とみなしている。サービス側でセッションを取り消すことだけが、それを終わらせる操作だ。
復元が取り消せないもの
チェックポイントは、承認された試験や範囲を理解した構成実験には役立つ。それはローカルな状態に対するローカルな取り消しであり、聞こえるより狭い約束であり、ホスト、ハイパーバイザー、あるいは外部システムがきれいなままだった証拠ではない。VPNはパケットが通る経路を変える。ゲスト内のソフトウェアを実行しても安全なものにはしない。二つの主張は別であり、トンネルについて語っているのは一方だけだ。
$cp = Get-VMSnapshot -VMName lab-desktop -Name baseline
Get-VMHardDiskDrive -VMSnapshot $cp | Select-Object ControllerType, ControllerNumber, ControllerLocation, Path
最初の行はチェックポイントをオブジェクトに解決し、二行目はそれが覆うディスクを列挙する。これは範囲の問いに記憶ではなく証拠で答えるものだ。露出した秘密は、それを所有するサービスでローテーションして取り消す。既知の悪意あるコードが関与している場合は、スナップショットが実行を安全にすると思い込まず、許可された調査環境と組織の対応手順を使う。
復元の前に三つのことを書き留めよ。どのゲスト状態を取り戻すのか、どの外部システムがまだ効果を保持しているのか、その後どの時点を信頼するのか。その計画は、再び見慣れた姿になったマシンより強い主張である。チケットとともに保管し、次の復元が同じ一覧から始まるようにせよ。