連載
» 2010年10月06日 00時00分 公開

VMware vSphere 4.1の進化を探る(3):VMware vSphere 4.1 のストレージ機構 (1) VAAI (2/3)

[齋藤康成,ヴイエムウェア株式会社]

連携機能の具体的な解説

Full Copy

 Full Copyは図2で示した通りの機能で、仮想マシンのディスクイメージファイルのコピー処理を、ストレージ装置側に実行させるという機能である。仮想マシンのクローン、テンプレートからの展開、Storage vMotionなど、仮想マシンのデプロイメントに関連するさまざまなI/Oをストレージ装置側にオフロードする機能である。

 ここではディスクサイズ30GBの仮想マシンをテンプレートから展開する処理を比較してみよう。テンプレート側の仮想ディスクにはあらかじめ実データを記録済みである。VAAIのFull Copy機能を無効にしたときと有効にしたときそれぞれについて、Disk I/Oの状況を比較してみる。

図5 VAAI Full Copyを利用すると、Disk I/Oが大幅に削減される 図5 VAAI Full Copyを利用すると、Disk I/Oが大幅に削減される

 結果は一目瞭然で、VAAIを有効化すると、ESXホストとストレージ装置間の実データの転送量はゼロになった。また、処理に要した時間はVAAIなしの状況と比較して86%に短縮された。

Block Zeroing

 Block Zeroingはその名の通り「ゼロで埋める」処理をハードウェアにオフロードする機能だ。ブロックをゼロで埋めるという処理はさまざまな場面で利用されるが、最も分かりやすい例としてVMware FT対応ディスクの作成がある。仮想ディスクを作成するとき、「フォールトトレランスなどのクラスタリング機能をサポート」というチェックボックスを有効化して作成処理を行うと、内部のデータが実際にすべてゼロで埋められたVMDKファイル(EagerZeroedThickフォーマットと呼ばれる)が作成される。

図6 あらかじめゼロで埋められた仮想ディスクを作成 図6 あらかじめゼロで埋められた仮想ディスクを作成

 従来の実装では、ESXホストからストレージ装置に対して、正直にゼロという値での書き込み処理を実行していた。このため例えば30GBのEagerZeroedThickフォーマットのVMDKファイルを作成した場合、実際に30GBの実データがファイバチャネルやiSCSIなどのストレージネットワーク上を流れ、ストレージ装置内に格納されていた。

図7 従来方式では、実際にデータを書き込むことでEagerZeroedThickフォーマットのVMDKを作成していた 図7 従来方式では、実際にデータを書き込むことでEagerZeroedThickフォーマットのVMDKを作成していた

 VAAIのBlock Zeroingを利用すると、ESXホストはストレージ装置に対して特定の領域をゼロで埋めるための命令のみを発行する。それを受けたストレージ装置は、命令の内容に従って該当エリアにデータとしてのゼロを書き込む。結果としてESXホストとストレージ装置間で流れる情報は制御命令のみとなり、処理のオフロードと処理時間の短縮を期待することができる(図8)。

図8 VAAIのBlock Zeroingを用いると、制御命令の発行のみで領域をゼロで埋めることができる 図8 VAAIのBlock Zeroingを用いると、制御命令の発行のみで領域をゼロで埋めることができる

 それではこちらも実際に動作させて動きを比較してみよう。30GBのEagerZeroedThickファイルの作成をVAAI Block Zeroingを無効化した状態と有効化した状態でそれぞれ実行し、パフォーマンスチャートでI/O状況を比較してみる。

図9 Block Zeroingを無効化した場合と有効化した場合の比較。有効化すると、Disk I/Oは大幅に削減され、処理時間もかなり短くなった 図9 Block Zeroingを無効化した場合と有効化した場合の比較。有効化すると、Disk I/Oは大幅に削減され、処理時間もかなり短くなった

 ESXホストとストレージ装置の間で転送されるデータ量が大幅に削減されていることがわかる。また完了までに要した時間は約3分の1に短縮されており、この環境では性能面でも大きな効果が得られていることが確認できる。

注:VAAIによる性能向上率は、利用しているストレージの機種や構成などに大きく依存するため、短縮される処理時間は環境によって変化する


 EagerZeroedThickフォーマットの仮想ディスクの作成時以外にも、Block Zeroingが活用される機会がある。通常のZeroedThickフォーマットの仮想ディスクや、Thinフォーマットの仮想ディスクを利用している場合、VMDKファイルの作成処理自体はすぐに完了する。これは各ディスクブロック上の実データの初期化は行わずに処理を完了させているためだ。このような仮想ディスクに対してI/Oを発行する場合、「該当ブロックに対して1回目のWrite処理が発行されたときに、そのブロック全体をいったんゼロで初期化し、その後発行されたWrite処理をディスク装置に発行する」という動作を行っている。つまり初回のWriteのとき、該当ブロックをゼロで埋める処理をオンデマンドで実行しているわけである。VAAIのBlock Zeroingはこのタイミングでも活用されるため、結果的に処理のオフロードが行われることになる。

Hardware Assisted Locking

 Hardware Assisted Lockingは前述の効率の良い排他制御処理を実現するための機能である。Atomic Test and Set(ATS)とも呼ばれている機能である。

 Hardware Assisted Lockingが有効化されている環境では、極力これを利用するようにしてVMFSの排他制御を行うようになる。そのESXホストが発行したHardware Assisted Lockingの数はesxtopコマンドから確認することができる(後述) 。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。