Full Copyは図2で示した通りの機能で、仮想マシンのディスクイメージファイルのコピー処理を、ストレージ装置側に実行させるという機能である。仮想マシンのクローン、テンプレートからの展開、Storage vMotionなど、仮想マシンのデプロイメントに関連するさまざまなI/Oをストレージ装置側にオフロードする機能である。
ここではディスクサイズ30GBの仮想マシンをテンプレートから展開する処理を比較してみよう。テンプレート側の仮想ディスクにはあらかじめ実データを記録済みである。VAAIのFull Copy機能を無効にしたときと有効にしたときそれぞれについて、Disk I/Oの状況を比較してみる。
結果は一目瞭然で、VAAIを有効化すると、ESXホストとストレージ装置間の実データの転送量はゼロになった。また、処理に要した時間はVAAIなしの状況と比較して86%に短縮された。
Block Zeroingはその名の通り「ゼロで埋める」処理をハードウェアにオフロードする機能だ。ブロックをゼロで埋めるという処理はさまざまな場面で利用されるが、最も分かりやすい例としてVMware FT対応ディスクの作成がある。仮想ディスクを作成するとき、「フォールトトレランスなどのクラスタリング機能をサポート」というチェックボックスを有効化して作成処理を行うと、内部のデータが実際にすべてゼロで埋められたVMDKファイル(EagerZeroedThickフォーマットと呼ばれる)が作成される。
従来の実装では、ESXホストからストレージ装置に対して、正直にゼロという値での書き込み処理を実行していた。このため例えば30GBのEagerZeroedThickフォーマットのVMDKファイルを作成した場合、実際に30GBの実データがファイバチャネルやiSCSIなどのストレージネットワーク上を流れ、ストレージ装置内に格納されていた。
VAAIのBlock Zeroingを利用すると、ESXホストはストレージ装置に対して特定の領域をゼロで埋めるための命令のみを発行する。それを受けたストレージ装置は、命令の内容に従って該当エリアにデータとしてのゼロを書き込む。結果としてESXホストとストレージ装置間で流れる情報は制御命令のみとなり、処理のオフロードと処理時間の短縮を期待することができる(図8)。
それではこちらも実際に動作させて動きを比較してみよう。30GBのEagerZeroedThickファイルの作成をVAAI Block Zeroingを無効化した状態と有効化した状態でそれぞれ実行し、パフォーマンスチャートでI/O状況を比較してみる。
ESXホストとストレージ装置の間で転送されるデータ量が大幅に削減されていることがわかる。また完了までに要した時間は約3分の1に短縮されており、この環境では性能面でも大きな効果が得られていることが確認できる。
EagerZeroedThickフォーマットの仮想ディスクの作成時以外にも、Block Zeroingが活用される機会がある。通常のZeroedThickフォーマットの仮想ディスクや、Thinフォーマットの仮想ディスクを利用している場合、VMDKファイルの作成処理自体はすぐに完了する。これは各ディスクブロック上の実データの初期化は行わずに処理を完了させているためだ。このような仮想ディスクに対してI/Oを発行する場合、「該当ブロックに対して1回目のWrite処理が発行されたときに、そのブロック全体をいったんゼロで初期化し、その後発行されたWrite処理をディスク装置に発行する」という動作を行っている。つまり初回のWriteのとき、該当ブロックをゼロで埋める処理をオンデマンドで実行しているわけである。VAAIのBlock Zeroingはこのタイミングでも活用されるため、結果的に処理のオフロードが行われることになる。
Hardware Assisted Lockingは前述の効率の良い排他制御処理を実現するための機能である。Atomic Test and Set(ATS)とも呼ばれている機能である。
Hardware Assisted Lockingが有効化されている環境では、極力これを利用するようにしてVMFSの排他制御を行うようになる。そのESXホストが発行したHardware Assisted Lockingの数はesxtopコマンドから確認することができる(後述) 。
Copyright © ITmedia, Inc. All Rights Reserved.