■VAAI ( vStorage API for Array Integration )
VAAIとはvStorage API for Array Integrationの略でVMwareとストレージベンダーのAPIを連携させストレージ関連の処理をホストからストレージ側にオフロードする機能です。VMFSの場合はストレージ側で提供するLUNがVAAIに対応していればそのまま使用可能です。その際、vSphere上ではストレージ側が対応済みであることを事前に確認しておく必要があります。
VMwareのコンパチビリティガイドを確認するとストレージベンダーごとにVAAIの機能をサポートするかを確認できます。コンパチガイドは以下のURLからアクセスできます。
http://www.vmware.com/resources/compatibility/search.php?deviceCategory=san
上記URLで検索し、そもそもストレージ側でサポートされていなければこの機能は使えないということになりますので注意してください。
VAAIで有効にできる具体的な機能として以下の機能があります。
●Block Zeroing機能
シックディスクなどを作るときの連続ゼロデータ書き込みをESXiホストではなくストレージ側のリソースで行います。また、VMware FTを利用するVMの仮想ディスク作成などでも活用されます。
●Full Copy機能
データコピーをESXiホストが行うのではなくストレージ側のリソースで行います。VMクローンやStorage vMotionなどが該当します。
●HW Assisted Locking ( ATS ) 機能
VMFSボリュームのファイルやメタデータの更新についてSCSIリザベーションによるロックではなくATS ( Atomic Test and Set ) アルゴリズムに基づいて実行します。このためロック単位が小さくなり、IOの待機時間を短縮できます。特にVDI環境のブート時に遅延を低減させます。
●Thin Provisioning機能 ( vShpere 5以降 )
vShpereではVMFS経由でデータディスクを保持しているため、ストレージ側でファイルシステム上、どのようにデータの配置がなされているかが不明でした。また逆にストレージの機能でThin Provisioningを使った場合、vSphere側ではその実装が不明でした。この問題をVMware側とストレージベンダー側はVAAIを使って解決します。
これらの機能はストレージごとで異なる振る舞いをするもので、それらの違いを吸収するためESXiではPSA ( Pluggable Storage Architecture ) と呼ばれる仕組みが取り入れられています。また、デフォルトで既にいくつかのプラグインがESXiにインストールされており、適用するためのフィルタルールが登録されています。フィルタルールおよびプラグインはesxcliでリスト表示することが可能です。
~ # esxcli storage core claimrule list --claimrule-class=Filter Rule Class Rule Class Type Plugin Matches ---------- ----- ------- ------ ----------- ---------------------------- Filter 65429 runtime vendor VAAI_FILTER vendor=MSFT model=Virtual HD Filter 65429 file vendor VAAI_FILTER vendor=MSFT model=Virtual HD Filter 65430 runtime vendor VAAI_FILTER vendor=EMC model=SYMMETRIX Filter 65430 file vendor VAAI_FILTER vendor=EMC model=SYMMETRIX Filter 65431 runtime vendor VAAI_FILTER vendor=DGC model=* Filter 65431 file vendor VAAI_FILTER vendor=DGC model=* Filter 65432 runtime vendor VAAI_FILTER vendor=EQLOGIC model=* Filter 65432 file vendor VAAI_FILTER vendor=EQLOGIC model=* Filter 65433 runtime vendor VAAI_FILTER vendor=NETAPP model=LUN* Filter 65433 file vendor VAAI_FILTER vendor=NETAPP model=LUN* Filter 65434 runtime vendor VAAI_FILTER vendor=HITACHI model=* Filter 65434 file vendor VAAI_FILTER vendor=HITACHI model=* Filter 65435 runtime vendor VAAI_FILTER vendor=LEFTHAND model=* Filter 65435 file vendor VAAI_FILTER vendor=LEFTHAND model=* ~ # esxcli storage core claimrule list --claimrule-class=VAAI Rule Class Rule Class Type Plugin Matches ---------- ----- ------- ------ ---------------- ---------------------------- VAAI 65429 runtime vendor VMW_VAAIP_MASK vendor=MSFT model=Virtual HD VAAI 65429 file vendor VMW_VAAIP_MASK vendor=MSFT model=Virtual HD VAAI 65430 runtime vendor VMW_VAAIP_SYMM vendor=EMC model=SYMMETRIX VAAI 65430 file vendor VMW_VAAIP_SYMM vendor=EMC model=SYMMETRIX VAAI 65431 runtime vendor VMW_VAAIP_CX vendor=DGC model=* VAAI 65431 file vendor VMW_VAAIP_CX vendor=DGC model=* VAAI 65432 runtime vendor VMW_VAAIP_EQL vendor=EQLOGIC model=* VAAI 65432 file vendor VMW_VAAIP_EQL vendor=EQLOGIC model=* VAAI 65433 runtime vendor VMW_VAAIP_NETAPP vendor=NETAPP model=LUN* VAAI 65433 file vendor VMW_VAAIP_NETAPP vendor=NETAPP model=LUN* VAAI 65434 runtime vendor VMW_VAAIP_HDS vendor=HITACHI model=* VAAI 65434 file vendor VMW_VAAIP_HDS vendor=HITACHI model=* VAAI 65435 runtime vendor VMW_VAAIP_LHN vendor=LEFTHAND model=* VAAI 65435 file vendor VMW_VAAIP_LHN vendor=LEFTHAND model=* |
■ESXi側の設定
デフォルトでESXi5.5ではVAAIが有効になっていますが、どの箇所で有効無効の設定ができるのか確認しておきます。vSphere Clientの管理画面から「構成」-「詳細設定」をクリックします。
DataMoverの項目をクリックします。ここでFull CopyとBlock Zeroning機能を設定しています。「DataMover.HardwareAcceleratedInit」と「DataMover.HardwareAcceleratedMove」にそれぞれ1が入力されています。1で有効、0で無効になります。
VMFS3の項目をクリックします。これはVMFS3の項目の「VMFS3.HardwareAcceleratedLocing」に1が入力されており既に有効化されています。これがHW Assited Locking機能です。これも同様に0を入力すると無効化されます。
注意点としてVAAIはあくまで「同一ストレージ上の処理」であり、「同一ブロックサイズのVMFS」であることが前提条件となります。