すべてのスナップショットを一度に破棄する最良の方法

すべてのスナップショットを一度に破棄する最良の方法

私は VirtualBox VM (ホストとゲストの両方に Windows Server 2012 を使用) を持っています。いくつかの難しい設定をしながら、いくつかのスナップショットを作成しました。

Before installing OS
 \____ Before installing software A
        \____ Before installing software B
               \____ Before installing software C
                      \____ Testing this
                             \____ Testing that
                                    \____ Current state

今はすべて正常に動作しており、ディスク領域が必要なので、すべてのスナップショットを破棄したいと考えています。調査したところ、スナップショットを 1 つずつ削除する以外に方法はないようです。これは非常に時間がかかります。VM はすでにホスト ディスクの 75% を使用しているため、VM をクローンまたはエクスポートできません。

上から下へ削除を開始する必要がありますか、それともその逆ですか? マージが速くなるとどうなるでしょうか? それとも、あまり重要ではありませんか?

答え1

これが最善の方法かどうかはわかりませんが、すべてのスナップショットを破棄して現在の状態を残したい場合にのみ、これが最速の方法です。

スナップショットに移動し、現在の状態を右クリックして、クローンをクリックし、すべてのチェックボックスをオンにして、「すべてのネットワーク アダプターを含める...」を設定します。

ここに画像の説明を入力してください

次の画面で「フルクローン」を選択します

次の画面で「現在のマシンの状態」を選択し、「クローン」をクリックします。

これで、スナップショットのないまったく同じマシンができました。古いマシンを削除する必要があります

短所: - クローン前に古い VM の名前を変更するか、クローン後に新しい VM の名前を変更する必要があります。すべての UUID が保持されるため、コマンド ラインの自動化を含め、すべてが同じように動作するはずです。 - 一時的にサイズを 2 倍にするために追加のスペースが必要です。

利点: - すべてのスナップショットを高速に自動マージするため、1つずつ削除する時間を無駄にする必要はありません。

答え2

経験から言うと、スナップショットを削除する正しい方法は 1 つしかありません。最新のものから後方へ移動し、一度に 1 つずつ削除します。
常に順番に - 「中間」のスナップショットは絶対に削除しないでください。さらに悪いことに、最も古い / トップ レベルのスナップショットは削除しないでください。VB が介入してこの大きなエラーを防いでくれると思うかもしれませんが、VB は喜んでそれを許可します。その後、「はは、後悔するよ!」というバナーが表示されるはずです。
最新のスナップショット以外を削除して後方へ移動して失敗したことがない場合は、最も古い / トップ レベルを含むすべてを削除できるはずです。
失敗して中間のスナップショットを削除した場合は、すべてを削除するという点ではおそらく失敗です。通常、削除しようとするとエラーが発生し、残っているスナップショットが残り、削除できません。開始ポイント (インストールまたはインポート) で VM をリロードする必要があります。
各削除プロセスには、システムのサイズに応じて、スナップショットごとに約 10 分以上かかる場合があることに注意してください。

答え3

VirtualBox バージョン 7.0 を使用しているため、途中でスナップショットを削除しても問題は発生していません。

途中で約 15 個のスナップショットを削除する必要があり、次のスクリプトを使用してそれを実行しました。

@echo off
:: Rename the following two lines to the correct VM name and executable path.
set VM_NAME="Win10ProWrk64TorrentTest"
set VBoxManageCMD="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"

for /F "tokens=* delims=" %%a in (SnapshotsList.txt) DO  (
    Echo Deletting snapshot %%a from VM %VM_NAME%
    %VBoxManageCMD% snapshot %VM_NAME% delete %%a
    Echo *********************************************
)

SnapshotsList.txt削除したいスナップショットの名前を保存したというファイルでこのスクリプトを使用しました。

例:

"qBitTorrent Installed"
"Increased Resolution"
"Updated VM software"
"After downloading MiniTool Tourent and before MiniTool install"
"Post Minitool Install and other torrent downloads"
"EaseUS Data Recovery Wizard Installed"
"EaseUS Partition Master installed"
"Removed bad DiskGenius installs"
"Removed Failed AOMEI_PartAssist"
"MiniTool Partition Wizard Installed"
"Wondershare Reparit installed"
"qTorrent option changes"
"Before removing Recoverit"

SnapshotsList.txt次のコマンドを使用すると、ファイルを簡単に作成できます。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" snapshot "MyVmNameHere" list --machinereadable >SnapshotsList.txt

削除する SnapshotName のみが含まれるようにファイルを編集します。

これを試す場合は、スナップショット名と VM 名に二重引用符を使用することを忘れないでください。

関連情報