IntelliCache

注:

この機能は、Citrix Virtual DesktopsでXenServerを使用する場合にのみサポートされます。

GFS2ストレージリポジトリを使用する仮想マシンでは、IntelliCacheはサポートされていません。

XenServerのIntelliCache機能により、共有ストレージとローカルストレージを組み合わせて使用して、仮想デスクトップインフラストラクチャをより効率的に展開できるようになりました。この機能は、多くの仮想マシンで同じオペレーティングシステムイメージを共有する場合に特に有効です。この機能を使用すると、ストレージアレイへの負荷が軽減され、パフォーマンスが向上します。また、共有ストレージからマスターイメージがローカルストレージ上にキャッシュされるため、XenServerと共有ストレージ間のネットワークトラフィックが減少します。

IntelliCacheにより、仮想マシンの親VDIのデータが、その仮想マシンホストのローカルストレージ上にキャッシュされます。このローカルキャッシュは、親VDIからのデータ読み取りが必要になった時に使用されます。多数の仮想マシンで親VDIを共有する場合、1つの仮想マシンでキャッシュに読み込まれたデータがほかの仮想マシンでも使用されるという状況が多く発生します。この場合、共有ストレージ上のマスターイメージにアクセスする代わりに、ローカルキャッシュが使用されます。

IntelliCacheを使用するには、シンプロビジョニングで作成されたローカルストレージリポジトリが必要です。シンプロビジョニングという方法を使用すると、ストレージ領域を最大限に活用できます。これにより、ローカルストレージを効率的に使用できるようになります。シンプロビジョニングでは、オンデマンドでデータブロックが割り当てられます。一方、他の方法では、すべてのブロックが事前に割り当てられます。

重要:

シンプロビジョニングを有効にすると、ホストのデフォルトローカルストレージの種類がLVMからEXT3に変更されます。Citrix Virtual Desktopsを使用する場合は、ローカルキャッシュが正しく機能するように、シンプロビジョニングを有効にする必要があります。

シンプロビジョニングを使用すると、管理者はそのストレージリポジトリの使用可能領域よりも大きなサイズを仮想マシンに提供できます。この場合、領域は予約されず、仮想マシンによりデータが書き込まれるまでは、LUNの割り当て処理でデータブロックが要求されることはありません。

警告:

仮想マシンでのディスク消費が増加すると、シンプロビジョニングのストレージリポジトリで物理領域が足りなくなることがあります。この問題を回避するため、IntelliCacheが有効な仮想マシンでは、ローカルストレージリポジトリのキャッシュに空きがなくなると自動的に共有ストレージへのフォールバックが行われます。IntelliCacheが有効な仮想マシンのサイズは急激に増加することがあるため、同じストレージリポジトリで通常の仮想マシンとIntelliCache仮想マシンを共存させないでください。

IntelliCacheの使用

IntelliCacheは、XenServerをホストにインストールする時に有効にします。インストール済みのXenServerホストでは、CLIを使用してこの機能を有効にすることもできます。

Citrix IntelliCacheを使用する場合は、可能な限り高速にデータを転送できるように、高性能なローカルストレージデバイスを使用することをお勧めします。たとえば、SSD(Solid State Disk)や高性能なRAIDなどを使用します。ローカルディスクのデータスループットだけでなく、ストレージ容量についても考慮する必要があります。また、親VDIをホストする共有ストレージの種類は、NFSまたはEXTである必要があります。

ホストのインストール時に有効にする

インストール時にIntelliCacheを有効にするには、仮想マシンストレージの画面で [Enable thin provisioning] を選択します。これにより、このローカルストレージリポジトリが仮想マシンVDIのローカルキャッシュとして使用されるようになります。

インストール画面の仮想マシンストレージパネル。

既存のホストでシンプロビジョニングに変換する

LVMベースの既存のローカルストレージリポジトリを削除してEXT3ベースのシンプロビジョニングストレージリポジトリに変換するには、次のコマンドを実行します。

警告:

これらのコマンドにより、既存のローカルストレージリポジトリが削除され、そのストレージリポジトリ上の仮想マシンがすべて消去されます。

localsr=`xe sr-list type=lvm host=hostname params=uuid --minimal`
    echo localsr=$localsr
    pbd=`xe pbd-list sr-uuid=$localsr params=uuid --minimal`
    echo pbd=$pbd
    xe pbd-unplug uuid=$pbd
    xe pbd-destroy uuid=$pbd
    xe sr-forget uuid=$localsr
    sed -i "s/'lvm'/'ext'/" /etc/firstboot.d/data/default-storage.conf
    rm -f /etc/firstboot.d/state/10-prepare-storage
    rm -f /etc/firstboot.d/state/15-set-default-storage
    service firstboot start
    xe sr-list type=ext

ローカルキャッシュを有効にするには、次のコマンドを実行します:

xe host-disable host=hostname
    localsr=`xe sr-list type=ext host=hostname params=uuid --minimal`
    xe host-enable-local-storage-caching host=hostname sr-uuid=$localsr
    xe host-enable host=hostname

仮想マシンの起動設定

仮想マシン起動時のVDIの動作として、以下の2つのモードがあります:

  1. 共有デスクトップモード

    このモードで仮想マシンを起動すると、VDIが前回起動時の状態に復元されます。前回の仮想マシンセッション内での変更内容は、すべて削除されます。

    仮想デスクトップに対する永続的な変更をユーザーに許可せず、常に標準的なデスクトップを提供する場合は、このオプションを選択します。

  2. プライベートデスクトップモード

    このモードの仮想マシンは、VDIが前回シャットダウン時の状態のまま起動します。

    仮想デスクトップに対する永続的な変更をユーザーに許可する場合は、このオプションを選択します。

仮想マシンのキャッシュ設定

仮想マシンのキャッシュ設定は、VDIフラグallow-cachingにより制御されます:

共有デスクトップモード

on-bootオプションをresetに設定してallow-cachingフラグをtrueに設定した共有デスクトップの場合、仮想マシン上での新規データはローカルストレージにのみ書き込まれ、共有ストレージには書き込まれません。これにより、共有ストレージへの負荷が軽減されます。ただし、仮想マシンをほかのホスト上に移行することはできません。

プライベートデスクトップモード

on-bootオプションをpersistに設定してallow-cachingフラグをtrueに設定したプライベートデスクトップの場合、仮想マシン上での新規データはローカルストレージおよび共通ストレージに書き込まれます。キャッシュされたデータの読み取り時には共有ストレージへの入出力が不要なため、共有ストレージへの負荷が軽減されます。仮想マシンをほかのホスト上に移行することも可能であり、移行先でのデータ読み取りに応じてそのホスト上にローカルキャッシュが生成されます。

実装の詳細とトラブルシューティング

Q: IntelliCacheは、XenMotionや高可用性機能と互換性がありますか?

A: 仮想デスクトップがプライベートモード(on-boot=persist)の場合は、IntelliCacheとXenMotionや高可用性機能を併用できます。

警告:

VDIのキャッシュ動作としてon-boot=resetおよびallow-caching=trueが設定されている仮想マシンは、ほかのホスト上に移行することはできません。この場合、仮想マシンの移行に失敗します。

Q: ローカルキャッシュはローカルディスクのどこに生成されますか?

A: キャッシュはストレージリポジトリ内に生成されます。各ホストには、どの(ローカル)ストレージリポジトリがキャッシュファイルに使用されるかを示す構成パラメーター(local-cache-sr)があります。通常、これらのストレージリポジトリの種類はEXTです。IntelliCacheを有効にして仮想マシンを実行すると、このストレージリポジトリ上にuuid.vhdcacheという名前のファイルが作成されます。これが、UUIDで示されるVDIのキャッシュファイルです。これらのキャッシュファイルは、XenCenterには表示されません。キャッシュファイルを表示するには、dom0にログインし、/var/run/sr-mount/sr-uuidの内容を一覧します。

Q: キャッシュ用のストレージリポジトリを指定するには?

A: ローカルストレージリポジトリは、hostオブジェクトのlocal-cache-srフィールドで示されます。このフィールドの値を表示するには、次のコマンドを実行します:

xe sr-list params=local-cache-sr,uuid,name-label

この値を設定するには、以下のいずれかを行います:

  • XenServerをホストにインストールする時に、[Enable thin provisioning]オプションを選択する。または、

  • xe host-enable-local-storage-caching host=host sr-uuid=srを実行する。このコマンドを実行するには、指定されたホストが無効になっており、仮想マシンがシャットダウン状態である必要があります。

1つ目のオプションでは、ホストのインストール時に種類がEXTのローカルストレージリポジトリが作成されます。2つ目のオプションでは、コマンドラインで指定したストレージリポジトリが使用されます。

警告:

これらの手順が必要になるのは、複数のローカルストレージリポジトリを設定した場合のみです。

Q: ローカルキャッシュはいつ削除されますか?

A: VDIのキャッシュファイルが削除されるのは、そのVDI自体を削除した時のみです。VDIが仮想マシンに接続されると(仮想マシンの起動時など)、キャッシュがリセットされます。VDIを削除した時にホストがオフラインだった場合は、そのホストの起動時に実行されるストレージリポジトリ同期によりキャッシュファイルが削除されます。

注:

仮想マシンをほかのホストに移行した時、および仮想マシンをシャットダウンしたときは、ホスト上のキャッシュファイルは削除されません。