web-dev-qa-db-ja.com

Virtualbox、スナップショットとベースディスクのマージ

ブランチに約30個のスナップショットがある仮想マシンがあります。現在の開発パスは、22個のスナップショットとベースディスクです。ファイルの量は現在IOと私が使用している開発ラップトップに影響を与えているようです(それがホストディスクのパフォーマンスの問題であり、多くの合計サイズが140GBであるかどうかはわかりません)フラグメント、またはそれが多くのファイルに分散しているセクターにヒットしているという事実)。

スナップショットの現在の開発ブランチをベースディスクとマージしたいのですが、次のコマンドで正しい結果が得られるかどうかわかりません。手順が完了した後(5〜6時間)、このディスクを起動できません。

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

これが正しいアプローチであるかどうかを誰かが確認できますか?

9
Henrik

スナップショットダイアログから、後ですべてのスナップショットを単一のVDIにマージする親スナップショットを選択します。

あなたの説明から、これは木の根であるように聞こえます。

右クリックして「スナップショットの削除」を選択します。

これにより、必要な処理が実行されます---すべての子スナップショットからのすべての変更が単一のVDIにマージされます。

さらに、最新のスナップショットにあるディスクイメージのクローンを作成すると、差分ディスクがその親(およびその親など、「通常の」ハードディスクタイプになるまで)とマージされます。

'スナップショットの削除'がclonehdコマンドを実行しているのではないかと思います。

VM設定(具体的にはIO APICの有効化/無効化))をチェックし、それらが一致することを確認します。

7
Adam

スナップショットを1つだけ保持する場合は、それを現在の状態にしてからVMをエクスポートし、再インポートします。エクスポートされたアプライアンスはスナップショット履歴を保持しません。

または、この vboxmerge.py スクリプトを使用して、マージを処理することもできます。スナップショットの数を考えると、エクスポート/インポートのサイクルが速くなると思います。

3
John Hart

これは、「クローン」コマンドを使用してすべてのスナップショットをマージし、単一のVDIファイルを含む新しいVM)に圧縮する手法(VirtualBox 4.3.4でテスト済み)です。

  1. VMの名前を変更して、クローンの現在の名前を再利用できるようにしますVM(VM nameを 'から変更できます) 「一般」設定の「基本」タブ)。

  2. VMを右クリックして、「クローン...」コマンドを実行します。

    • 名前をVMの元の名前に設定します。
    • 残りのデフォルトを受け入れます。つまり、クローンタイプ: 'フルクローン';スナップショット:「現在のマシンの状態」。
  3. 古いVMを削除します(VMを右クリックして、「削除...」コマンドを実行します)。

2
Stuart Rackham

ホストがWindowsの場合、またはWindowsからVHDファイルにアクセスできる場合は、すべての変更を親、祖父母などにマージするトリックがあります。

DiskPartツールと2つのコマンドを使用しています。

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

ここで、#は移動する階層レベルの数であり、1は親の親、2は祖父母などです。

インプレースで実行され、クローン作成などよりもはるかに時間がかかりません。

マージした後、すべての中間VHDを削除でき(削除されません)、マージした親をVirtualBoxにアタッチすることを忘れないでください。

例:

Disk3.vhdはDisk2.vhdの子であり、Disk2.vhdはDisk1.vhdの子です。

Disk1.vhdで、Disk3.vhdのすべての変更が必要な場合は、depth=2を使用して、Disk3.vhdを選択します。 Disk1.vhdで、Disk2.vhdのすべての変更が必要な場合は、depth=1を使用してDisk3.vhdを選択します。

また、醜いVirtualBoxスナップショットは必要ありません。DiskPartcreatevdiskコマンドを使用して、既存のディスク(差分ディスクなど)から差分ディスクを作成したり、巨大なツリーを作成したりすることもできます。

残りのすべて:ポスターはVHD(VDIではなく)を使用しているため、DiskPartやDisk Managmentなどのネイティブツールを使用して、ゲストからそのディスクにアクセスできます(ホストがWindowsの場合はホスト上)。

あなたのために、ポスター:マージの前に常に完全なバックアップがあることを忘れないでください、VirtualBoxクローンはその場で機能せず、新しいファイルを作成します(書き込み時にコピー)が、DiskPartマージはその場で機能します(ファイルを変更し、作成しないでください)新しいもの)。

VHD/VHDXが使用されているため、別の異なるアプローチを提供できることを願っています(VMDK、VDIなどでは無効で、Windowsホストでのみ有効です)。

注:Windows 7以降、XPおよびVistaは外部M $ツールを使用してVHDをマウントできますが、DiskPartはXP&Vista .. ..これはすべて、Windows HOMEエディション(7以降)でも機能し、SERVERエディションは必要ありません。

0
Laura