vSphere

vSphere 5.5 の新機能紹介 vSphere Flash Read Cache (vFRC)

このBlogは、製品出荷前のバイナリ及びマニュアルをベースに記載しています。出来る限り正確な情報をお伝えするよう努めておりますが、実際に製品に搭載される機能や表示とは異なる可能性があります。あらかじめご了承の上、ご利用下さい。
今回は、vSphere 5.5の新機能である、vSphere Flash Read Cacheをご紹介します。


NAND型のフラッシュメモリを利用した高速なストレージデバイスであるSSDは、既にコンシューマー用途からデータセンター用途まで幅広く利用されています。既存のvSphere5.1では、以下の2つの用途でSSDを利用することが可能でした。
1. 通常のデータストアやRDM (主に仮想マシンファイルを配置)
2. ESXホストのvmkernel swap領域 (ホストメモリ不足の際の待避場所として利用)
一言にSSDと言ってもSANやNAS、iSCSI等のリモートストレージに搭載されたSSDと、個々のServerに搭載されたLocal SSD がありますが、前者は1の目的で利用され、後者は共有ストレージとしての利用が難しいことから主に2の目的で利用されてきました。
vSphere5.5ではこの2つに加え、個々のServerに搭載されたLocal SSDを、仮想マシンのRead Cacheとして利用することが出来るようになります。これが、今回ご紹介するvSphere Flash Read Cache (vFRC)です。これまで限定されていたServer本体に搭載されたSSDの利用が、vSphere5.5からは仮想マシンのパフォーマンス向上のため、より簡単に利用できるようになります。
vFRC概要
vFRCは、仮想ディスク(VMDKファイル)のリードキャッシュとして、Localサーバに搭載したSSDを利用する仕組みを提供します。この機能を利用することにより、下記2つの効果が期待できます。
・仮想ディスクの読み込み速度の向上
・vmdkファイルが配置されたストレージ負荷の軽減
この機能を提供するため、ESXiホストは、自身に搭載されたSSD上にvFlash File System (VFFS)を作成します。このVFFSは仮想マシンへのキャッシュアクセスを提供する専用のDiskリソースで、通常のVMFS領域と異なりデータストアとしては見えません。VFFSが構成されたESXiホスト上の仮想マシンはvFRCの利用が可能となります。

vFRCの特徴
・Localサーバに搭載されたSSDを利用(リモートSSDは利用不可)
・仮想ディスクに対するリードキャッシュ、ライトスルーキャッシュとして機能
・ESXi 5.5以降及び、仮想マシンバージョン 10 以降が必要
・操作はvSphere Web Client でのみ可能(従来のc# 版での操作は不可)
・ホストに搭載したLocalのSSDのみ利用可能
指定可能なデバイスは最大8台
デバイス 1台の最大容量は4TB
ホストあたり最大32TB (4TB x 8台)*
・VFFSに指定したデバイスは、VMFS領域やvSAN領域として利用することは出来ない
・VFFSはホスト毎に1個作成される
・仮想Disk毎にvFRC利用の有無と容量の設定が可能(初期設定はDisable)
ブロックサイズは4KB~1024KBで設定が可能
・各仮想マシンに設定されたvFRC領域はパワーオン時にVFFS領域に対して予約される(VFFS領域のオーバーコミットは不可)
VFFSの容量が足りないと仮想マシンのパワーオンが出来ない
・VFFS はホスト固有であり、ホスト間でのシェアはされない
vMotion時、vFRC領域の同時移行も可能(破棄することも可能)
・vFRCをEnableに設定した仮想マシンは、vFRCがEnable化されたホストでのみ稼働可能
vFRC がDisableとなっているホストへのvMotionやHAは不可
・DRSのリソース管理においてはvFRCのアンバランスは考慮されない
・vFRC設定をされた仮想マシンは、DRSではホストとのSoft Affinity設定(可能な限り移行しない)となる
*ホストあたり管理可能なフラッシュの最大量です。うちvFRCで利用可能な領域は最大2TBとなります。
最新の情報は、構成の上限をご確認下さい。
vFRCの設定方法
vFRCの設定は極めて簡単です。ホスト側にVFFSを定義し、仮想マシン側でvFRCの利用設定を行います。
ホスト側の設定:VFFSの定義
1. vSphere Web Clientに接続
2. 設定を行うホストを選択し、”管理”タブ → ”設定” → ”仮想フラッシュリソース管理” を選択
3. 容量の追加をクリック

4. ホストに搭載されたSSDデバイスのリストが表示されますので、vFRCで利用するデバイスを選択します。

※ホスト側にこの設定を施すことにより、VFFS領域が作成されます。
次は仮想マシンに対する設定です。
仮想マシン側の設定:vFRCの設定
5. vFRC設定を行う仮想マシンを右クリックして”設定の編集”を選択
6. vFRC設定を行う仮想ディスクを展開し、”仮想フラッシュ”の詳細をクリック

7. 仮想フラッシュの有効化にチェックを入れ、キャッシュ容量とブロックサイズを指定します。

以上で完了です。
手順6、7を繰り返す事により、複数の仮想ディスクに対して設定を行うことも可能です。
また、この手順は仮想マシンがパワーオンの状態でも行うことが出来ます。
vFRCとvMotion
VFFSはホスト毎の管理となるため、仮想マシンがvMotionで移行してしまうと旧ホスト上のリードキャッシュは利用できなくなります。このためvSphere5.5のvMotionでは、vFRC設定が施された仮想マシンを移行する際、vFRC領域も同時にコピーを行う仕組みが提供されています。技術的には、vSphere5.1で実装された、XvMotion(Storage vMotionとvMotionの同時実行)の仕組みを利用しています。

リードキャッシュですので、vMotion時にドロップすることも可能です。この際は、移行先のホストで自動的に再作成されます。XvMotionの仕組みを使ってvFRCをコピーするか、ドロップするかは、vMotionウィザードの中で選択可能です。

コピーを選択すると、移行先でも蓄えたリードキャッシュをそのまま利用することが可能ですが、移行時にはvFRCのコピーにまつわる時間と負荷がかかります。
統計情報
vFRCに関する統計情報は、vSphere Web Clientやesxcliコマンドを利用して取得することが可能です。
1. vSphere Web Clientでは、該当する仮想ディスクに対し、以下のパラメータが新たに追加されました。
・vFRCキャッシュIOPs
・vFRCキャッシュスループット
・vFRCキャッシュ遅延

2. esxcliでは、”esxcli storage”に vflash というNamespaceが新たに追加され、例えば、esxcli storage vflash cache list コマンドでは作成されているvFRCのキャッシュファイルリスト、esxcli storage vflash cache stats get -c <Cache File Name> コマンドでは、特定のvFRCに対するキャッシュのヒット率やキャッシュIO数などの統計情報の確認が可能となりました。

まとめ
仮想ディスクへの読み込み速度の高速化とストレージ負荷の削減を実現するvFRC。以下のような環境に利用すると特に効果的です。
・読み込みの多いアプリケーションを仮想マシン上で稼働させる場合
・vmdkファイルを配置するStorageの性能よりも、VFFSを構成するSSDの性能が大幅に高い場合
・vmdkを配置したStorageの読み込み負荷が大きく、この負荷を軽減したい場合
是非ご利用下さい!
また、vFRCのパフォーマンスに関するTechPaperも公開されました。こちらも是非ご一読下さい。
http://www.vmware.com/files/pdf/techpaper/vfrc-perf-vsphere55.pdf