vSphere環境でのサーバサイドフラッシュの利用 -vFRC-
2014年3月25日(火)
vFlash Read Cache(vFRC)は、VMware環境に特化したリードキャッシュの仕組みを提供します。具体的にはサーバ内蔵のフラッシュデバイスを、仮想ハードディスク(vmdkファイル)のリードキャッシュとして利用可能になります。そしてvFRCを利用することで、仮想ディスクの読み込み速度の向上、仮想ハードディスクファイルが配置されたストレージ負荷の軽減という2つの大きなメリットを得ることができます。
vFRCとは?
vFRCは、以下のような環境に利用すると特に効果的です。
- 読み込みの多いアプリケーションを仮想マシン上で稼働させる場合
- vmdkを配置したストレージの大きな読み込み負荷を軽減したい場合
- vmdkファイルを配置するストレージの性能よりも、サーバ搭載のフラッシュデバイスの性能を有効活用したい場合
ESXiホストは、ローカルに搭載したフラッシュデバイス上にvFlash File System(VFFS)を作成します。VFFSは、仮想マシンへのキャッシュアクセスを提供するディスクリソースとして使用されます。ストレージ搭載のフラッシュメモリを使用する場合と比較すると、よりアプリケーションに近いところでキャッシュの利用ができるので、低レイテンシーでの応答が実現します。また、ストレージ上の読み込みI/Oアクセスを減らし、書き込みインスタンスにリソースを配分することで、結果としてストレージ性能を向上することができます。
VFFSの利用は仮想ハードディスク毎に設定可能ですので、ある仮想マシンの特定のハードディスクのみリードキャッシュを使用することもできます。例えばDB用途の仮想マシンの、データアクセスの多い仮想ハードディスクのパフォーマンス向上に注力することも可能です。
vFRCの導入手順はとてもシンプルです。各ESXiホストにVFFSを定義し、仮想マシン側でvFRCの利用値を設定することですぐに使用できます。
図1 vFRCアーキテクチャー
構築する場合の考慮点は3つあります。
まずVFFSは、VMFS領域とは別にESXiホストに認識される点です。通常のデータストアとしてのマウントがされないため、仮想マシンを配置することはできません。
次にVFFSはホスト間でのシェアがされない点です。そのため、vMotionする場合に注意が必要です。デフォルトでは移行先のESXiホストにてVFFSが利用可能な場合、リードキャッシュごとvMotionする仕様となっています。よって、リードキャッシュデータの継続利用が可能です。ただし、通常のvMotionと比較すると、vFRCのコピーによる移行時の時間と負荷は多くなります。キャッシュをvMotionしない設定に変更した場合、キャッシュを再作成する必要があります。
最後にDRS によるバランス修正対象にvFRCが含まれない点です。vFRCのリードキャッシュの負荷のアンバランスは考慮されません。
以上の3点について押さえておけば、vFRCのメリットを活かした運用ができます。
vFRCを導入してみる
では、実際にvFRCを設定して利用する方法について紹介します。
vFRCは、vSphere 5.5から使用できる機能です。設定はvSphere Web Clientのみから行えます。vSphere Clientでは設定項目が表示されませんので、注意してください。インストールの流れは、ESXiホスト側と仮想マシン側の設定と、大きく2つに分けることができます。
まずESXiホスト側の設定として、vFRC用にフラッシュリソースのVFFSフォーマットを行います。
1. Web Clientに接続します。
2. 設定を行うESXiホストを選択し、[管理]タブを開き、さらに[設定]タブを開きます。
3. [設定タブ]内にある[仮想フラッシュリソース管理]を選択し、[容量の追加]をクリックします。
4.ESXiに搭載されたフラッシュデバイスのリストが表示されますので、vFRCで利用するデバイスを選択し[OK]ボタンをクリックします。
図2 ESXiホストの設定:仮想フラッシュリソース容量の追加(クリックして拡大)
次に仮想マシン側の設定を行います。キャッシュの容量とブロックサイズの2つの項目があります。この時、仮想マシンのハードウェアバージョンが10でないと設定できないので確認してください。
5. vFRC設定を行う仮想マシンを右クリックして[設定の編集]を選択します。vFRC設定を行う仮想ディスクを展開し、[仮想フラッシュ読み取りキャッシュ]の[詳細]をクリックします。
6. 仮想マシンに利用させるキャッシュ容量とブロックサイズを指定します。
キャッシュ容量のサイジングについては、仮想ハードディスクファイルの 20% を目安に初期設定を行ってください。ブロックサイズは適当なサイズを指定してください。サイジングのポイントについては、後述する「パフォーマンスの向上にむけて」で触れます。
図3 仮想マシンの設定:仮想ハードディスク設定の編集(クリックして拡大)
図4 仮想マシンの設定:仮想フラッシュ読み取りキャッシュ設定(クリックして拡大)
これで完成です。フラッシュデバイスの容量にもよりますが、全ての設定項目を含めても5分程度でvFRCを使用できます。
CrystalDiskMarkのベンチマーク結果
実際に筆者の環境での検証結果を紹介します。
今回は、ディスクサイズが32GBの仮想マシンにvFRCを有効化させました。キャッシュ容量は仮想ハードディスクの約20%の6GB、ブロックサイズは4KBとしました。ベンチマークツールは「CrystalDiskMark」を使用して、シーケンシャルおよびランダムアクセスの性能検証を行いました。
結果は、シーケンシャルアクセスの読み込みは通常時と比較し、3.5倍のスコアとなりました。ランダムアクセスは、NCQを使用した4KBの読み込みが約5倍となりました。読み込みの多いアプリケーションを使用する環境では、vFRCの利用によりパフォーマンスの向上を期待できそうです。
図5 vFRCベンチマーク結果
ちなみに、フラッシュデバイスがない環境でもNested ESXi環境であれば、擬似的にvFRCの検証が行うことができます。その場合、Nested ESXiホストから仮想ハードディスクをSSDとして見せる設定が必要です。
そのために仮想ディスクに関する、下記の構成パラメータを設定します。
scsiX:Y.virtualSSD = 1
たとえば、SCSI(0:1) に接続された仮想ディスクをSSDに見せるのであれば「scsi0:1.virtualSSD = 1」と設定します。デフォルトでは含まれないパラメータですので、[行の追加]からパラメータを新しく定義してください。これでSCSI(0:1) に接続された仮想ハードディスクのみがSSDとして認識されます。
パフォーマンスの向上にむけて
さてvFRCのパフォーマンスを最大限に発揮させることについて考察していきます。vFRCのパフォーマンスに影響する要素は以下が挙げられます。
1. vFRCの設定:
キャッシュ容量とブロックサイズの設定
2. ハードウェア構成:
デバイスタイプの違い
高速高価なPCIe接続カードか、コストパフォーマンスの高いSSDか
3. アプリケーション特性:
読み込みと書き込みのIOの割合
ある特定のデータにアクセスするのか、ディスク全体にアクセスするのか
4. vMotion:
キャッシュごとvMotionするのか、しないのか
サーバ、アプリケーションに変更を加えることなくパフォーマンスを向上させる場合、vFRCのキャッシュ容量とブロックサイズの設定が要となります。
では、実際にキャッシュ容量とブロックサイズの設定を変更する場合はどの情報をヒントにして行えばよいのでしょうか。
vSphere 5.5ではパフォーマンス分析に、新しいWeb Client統計カウンタとesxcliの実装がされています。
まず、新しいWeb Client統計カウンタですが、該当する仮想ディスクに対してvFRCキャッシュIOPs、vFRCキャッシュスループット、vFRCキャッシュ遅延3つのパラメータが追加されました。
図6 新しいWeb Client統計カウンタ(クリックして拡大)
esxcliコマンドにはvFRC用の新しいNamespaceが追加されました。例えば以下のものが挙げられます。
esxcli storage vflash cache list
- 作成されているvFRCのキャッシュファイルリストの取得
esxcli storage vflash cache stats get -c
- 特定のvFRCに対するキャッシュヒット率やキャッシュIO数などの統計情報の確認
図7 vFRCのキャッシュファイルリストと統計情報の確認(クリックして拡大)
読み込みと書き込みIOの割合をふまえたうえで、キャッシュヒット率が低い場合、キャッシュ容量が小さい、またはブロックサイズがI/Oサイズと合っていない可能性があります。
そこでキャッシュサイズが小さい場合は、アクティブ領域の確認またはキャッシュサイズを増やすことを検討します。
ブロックサイズが合っていない場合、仮想マシンのハードディスク単位のI/0サイズの確認を行い、最適なサイズへの変更を検討します。I/0サイズの確認には、以下のvscsiStatsコマンドを使用します。
vscsiStats -l
- 確認したい仮想マシンのworldGroupIDの取得
vscsiStats -s -w(worldGroupID)
- 仮想ハードディスクの統計情報の取得を開始
vscsiStats -p ioLength
- I/Oサイズの表示
図8 仮想ハードディスクのI/Oサイズの確認(クリックして拡大)
このようにWeb Client統計カウンタとesxcli・vscsiStatsコマンドを使用してvFRC最適設計が可能になります。
筆者の環境では、「CrystalDiskMarkのベンチマーク結果」で前述したように、キャッシュ容量を6GBとしていました。その場合のキャッシュヒット率はキャッシュの暖めを行った時点で42%でした。CrystalDiskMarkでは、読み込みと書き込みのIOの割合は50:50となっています。読み込みリードキャッシュ性能目標を90%とした場合、vscsiStats -p ioLengthコマンドでキャッシュヒット率が45%以上となる必要があります。
キャッシュ容量を2倍の12GBに変更し再度検証を行ったところ、ヒット率を47%まで向上できました。
キャッシュ容量が大きいほどヒット率は高くなりますが、大きくしすぎてしまうと、キャッシュリソースの無駄遣いとなります。統計カウンタとコマンドの結果をもとに、アプリケーション性能目標が満たされるように、サイジングを行ってください。なお、キャッシュ容量の変更は仮想マシンがオンラインの状態でも可能です。
今回紹介したvFRCは、サーバ搭載のリードキャッシュ利用により、読み込みの多いアプリケーション・DB環境の性能向上が見込めます。また、ストレージの負荷を軽減する点も非常に優れている仕組みです。また、vFRCを有効化することでvSphere機能に制限がかかることがないので、非常に簡単にvSphere環境に導入して利用することが可能です。
次回は、各ESXiホストのローカルディスクを1つの大規模ストレージの構成できるVirtual SAN(VSAN)について紹介します。安価でSAS/SATAのハードディスクと高速なSSDを組み合わせて大容量で高速な共有ストレージ領域を実現するVSANの魅力をお伝えします。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- VMware Virtual SANで実現するストレージ仮想化:Part2 データの読み書きと耐障害性
- VMware Virtual SANで実現するストレージ仮想化:Part1 構成とストレージポリシー
- VMware Virtual SAN 6.0の新機能
- VMware vSphere 6の新機能と用途
- ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要
- vSANのアーキテクチャーと機能概要
- VMware vCenter Server 6のインストール
- フラッシュストレージが注目される理由と4つのソリューション
- VMware vSphere Replicationのデータ保護
- VMware vSphere Hypervisor(ESXi)のインストール