差分ディスク

差分ディスク(Differencing)

差分ディスクは変更不可ディスクなどに書き込みを行うと自動的に作成される、ディスクからの変更分を表した特別なディスクです。
差分ディスク単体ではディスクとして意味が無く、必ず親となるディスクを必要とします。

差分ディスクの動き

差分ディスクが有効になっている場合、ゲストマシンからの書き込みはすべての差分ディスクが書き込み操作を受け付けます。
差分ディスクは差分ディスクが作成された以降に、変更された仮想ハードディスクのセクタを含んでいます。
仮想マシンが仮想ハードディスクからセクタを読み取るとき、最初は差分ディスクを見に行き、そこに目的のセクターが存在する場合は差分ディスクからデータを返します。

目的のデータが無い場合は、VirtualBoxは親になる変更不可ディスクなどを見に行きます。

上記のような動きをするため、差分ディスクを使った仮想マシン場合はI/Oのオーバーヘッドが生じます。

差分ディスクの概念や扱いはSnapshotに似ていますが自動で作成されるため、スナップショットでするような取得・復元の操作は必要ありません。

差分ディスクのリセットオプション

仮想マシンの起動の都度差分ディスクの内容をリセットすることで、毎回同じ環境で仮想マシンを起動できるようになります。
逆にこの差分ディスクのリセットを無効にすることで、不変ディスクをベースにした環境の作成が可能になります。

modifyhdのautoresetオプションでリセットの有効/無効が操作できます。デフォルトはonです。

この設定は差分ディスクに対して設定します。

VBoxManage modifyhd <仮想ディスクファイル> --autoreset off

リセットが無効になったかどうかは、以下のコマンドのAuto-Resetで確認できます。

> VBoxManage.exe showhdinfo <差分ディスクファイル>
Oracle VM VirtualBox Command Line Management Interface Version 3.2.10
(C) 2005-2010 Oracle Corporation
All rights reserved.

UUID:                 6c24daf9-8a34-4296-9832-66f153bcefb7
Accessible:           yes
Logical size:         20480 MBytes
Current size on disk: 159 MBytes
Type:                 normal (differencing)
Storage format:       VDI
In use by VMs:        RHEL_A (UUID: 8b5bf51a-1f40-4071-ba87-1bdaa1490b82)
Location:             C:\Users\hogehoge\.VirtualBox\Machines\RHEL_A\Snapshots\{6c24da
f9-8a34-4296-9832-66f153bcefb7}.vdi
Auto-Reset:           off