11/03/17 09:53:16.12 LJCWXDxY0
>>425
デフォルト (zeroedthick) で作成すると、領域のアロケーションは行うものの、
ディスク上の各ブロックを実際に 0 で埋めるということは行なわない。
該当ブロックに「最初のWriteが発生したとき」に、都度 0 で埋めてからゲスト
OSからのI/Oを実行する。「まだ一度もWriteが実行されていないブロック」に対して
Read I/Oが発行された場合は、実際にはディスクにアクセスせずに、仮想化
レイヤで即座に 0 というデータを仮想マシンに返す。
eagerzeroedthick で作成すると、作成時の領域のアロケーションのときに、
各ブロックに 0 を書き込むという処理も併せて実行する。
従って、「まだ一度もWriteが実行されていないブロック」というのは存在しない
状態でゲスト OS は仮想ディスクを利用することになる。結果として、全ての
Read I/Oは実際にディスクにアクセスして読み取った値がゲスト OS 側に戻
されている。
まとめ
zeroedthick
- 未 Write 領域への Read は高速
- 未 Write 領域への最初の Write は 0 で埋める処理を行なった後に実際
のデータの書き込みを行なうので若干低速
- Write 済領域への Read はディスクまでアクセス
- Write 済領域への Write はディスクまでアクセス
eagerzeroedthick
- 仮想ディスク作成の段階で 0 埋めを実行
- ゲスト OS からの全ての I/O は実際にディスクまでアクセス