IntelliCache
注:
この機能は、Citrix Virtual DesktopsでCitrix Hypervisorを使用する場合にのみサポートされます。
GFS2ストレージリポジトリを使用する仮想マシンでは、IntelliCacheはサポートされていません。
Citrix HypervisorのIntelliCache機能により、共有ストレージとローカルストレージを組み合わせて使用して、仮想デスクトップインフラストラクチャをより効率的に展開できるようになりました。この機能は、多くの仮想マシンで同じオペレーティングシステムイメージを共有する場合に特に有効です。この機能を使用すると、ストレージアレイへの負荷が軽減され、パフォーマンスが向上します。また、共有ストレージからマスターイメージがローカルストレージ上にキャッシュされるため、XenServerと共有ストレージ間のネットワークトラフィックが減少します。
IntelliCacheにより、仮想マシンの親VDIのデータが、その仮想マシンホストのローカルストレージ上にキャッシュされます。このローカルキャッシュは、親VDIからのデータ読み取りが必要になったときに使用されます。多数の仮想マシンで親VDIを共有する場合、1つの仮想マシンでキャッシュに読み込まれたデータがほかの仮想マシンでも使用されるという状況が多く発生します。この場合、共有ストレージ上のマスターイメージにアクセスする代わりに、ローカルキャッシュが使用されます。
IntelliCacheを使用するには、シンプロビジョニングで作成されたローカルストレージリポジトリが必要です。シンプロビジョニングという方法を使用すると、ストレージ領域を最大限に活用できます。これにより、ローカルストレージを効率的に使用できるようになります。シンプロビジョニングでは、オンデマンドでデータブロックが割り当てられます。一方、他の方法では、すべてのブロックが事前に割り当てられます。
重要:
シンプロビジョニングを有効にすると、ホストのデフォルトローカルストレージの種類がLVMからEXT4に変更されます。Citrix Virtual Desktopsを使用する場合は、ローカルキャッシュが正しく機能するように、シンプロビジョニングを有効にする必要があります。
シンプロビジョニングを使用すると、管理者はそのストレージリポジトリの実際の使用可能領域よりも大きなサイズを仮想マシンに提供できます。この場合、領域は予約されず、仮想マシンによりデータが書き込まれるまでは、LUNの割り当て処理でデータブロックが要求されることはありません.
警告:
仮想マシンでのディスク消費が増加すると、シンプロビジョニングのストレージリポジトリで物理領域が足りなくなることがあります。この問題を回避するため、IntelliCacheが有効な仮想マシンでは、ローカルストレージリポジトリのキャッシュに空きがなくなると自動的に共有ストレージへのフォールバックが行われます。IntelliCacheが有効な仮想マシンのサイズは急激に増加することがあるため、同じストレージリポジトリで通常の仮想マシンとIntelliCache仮想マシンを共存させないでください。
IntelliCacheの使用
IntelliCacheは、XenServerをホストにインストールする時に有効にします。インストール済みのXenServerホストでは、CLIを使用してこの機能を有効にすることもできます。
IntelliCacheを使用する場合は、可能な限り高速にデータを転送できるように、高性能なローカルストレージデバイスを使用することをお勧めします。たとえば、SSD(Solid State Disk)や高性能なRAIDなどを使用します。ローカルディスクのデータスループットだけでなく、ストレージ容量についても考慮する必要があります。また、親VDIをホストする共有ストレージの種類は、NFSまたはEXT3/EXT4である必要があります。
ホストのインストール時に有効にする
インストール時にIntelliCacheを有効にするには、[Virtual Machine Storage] 画面で [Enable thin provisioning] を選択します。これにより、このローカルストレージリポジトリが仮想マシンVDIのローカルキャッシュとして使用されるようになります。
既存のホストでシンプロビジョニングに変換する
LVMベースの既存のローカルストレージリポジトリを削除してEXT3/EXT4ベースのシンプロビジョニングストレージリポジトリに変換するには、次のコマンドを実行します。
警告:
これらのコマンドにより、既存のローカルストレージリポジトリが削除され、そのストレージリポジトリ上の仮想マシンがすべて消去されます。
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 /var/lib/misc/ran-storage-init
systemctl restart storage-init.service
xe sr-list type=ext
<!--NeedCopy-->
ローカルキャッシュを有効にするには、次のコマンドを実行します:
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
<!--NeedCopy-->
IntelliCacheを使用した仮想マシンの動作
VDIフラグon-boot
は仮想マシンの起動時の仮想マシンVDIの動作を決定し、VDIフラグallow-caching
はキャッシュ動作を決定します。
これらのパラメーターに使用する値は、作成する仮想マシンの種類とその用途によって異なります:
-
共有マシンまたはランダムに割り当てられたマシンの場合:
-
on-boot
パラメーターをreset
に設定します。 -
allow-caching
パラメーターをtrue
に設定します
例:
xe vdi-param-set uuid=vdi_uuid on-boot=reset allow-caching=true <!--NeedCopy-->
このモードで仮想マシンを起動すると、VDIが前回起動時の状態に復元されます。前回の仮想マシンセッション内での変更内容は、すべて削除されます。仮想マシン上での新規データはローカルストレージにのみ書き込まれ、共有ストレージには書き込まれません。これにより、共有ストレージへの負荷が軽減されます。ただし、仮想マシンをほかのホスト上に移行することはできません。
仮想デスクトップに対する永続的な変更をユーザーに許可せず、常に標準的なデスクトップを提供する場合は、このオプションを選択します。
-
-
静的マシンまたは専用マシンの場合:
-
on-boot
パラメーターをpersist
に設定します。 -
allow-caching
パラメーターをtrue
に設定します
例:
xe vdi-param-set uuid=vdi_uuid on-boot=persist allow-caching=true <!--NeedCopy-->
このモードの仮想マシンは、VDIが前回シャットダウン時の状態のまま起動します。仮想マシン上での新規データはローカルストレージおよび共通ストレージに書き込まれます。キャッシュされたデータの読み取り時には共有ストレージへの入出力が不要なため、共有ストレージへの負荷が軽減されます。仮想マシンをほかのホスト上に移行することも可能であり、移行先でのデータ読み取りに応じてそのホスト上にローカルキャッシュが生成されます。
仮想デスクトップに対する永続的な変更をユーザーに許可する場合は、このオプションを選択します。
-
注:
VDIがGFS2ストレージリポジトリ上に配置されている仮想マシンの場合、仮想マシンの起動時の動作は、他の種類のストレージリポジトリ上にVDIがある仮想マシンとは異なります。GFS2ストレージリポジトリ上のVDIの場合、起動時オプションは仮想マシンの起動時ではなく、仮想マシンのシャットダウン時に適用されます。
実装の詳細とトラブルシューティング
Q: IntelliCacheは、ライブマイグレーションや高可用性機能と互換性がありますか?
A: 仮想デスクトップがプライベートモード(on-boot=persist
)の場合は、IntelliCacheとライブマイグレーションや高可用性機能を併用できます。
警告:
VDIのキャッシュ動作として
on-boot=reset
およびallow-caching=true
が設定されている仮想マシンは、ほかのホスト上に移行することはできません。この場合、仮想マシンの移行に失敗します。
Q: ローカルキャッシュはローカルディスクのどこに生成されますか?
A: キャッシュはストレージリポジトリ内に生成されます。各ホストには、どの(ローカル)ストレージリポジトリがキャッシュファイルに使用されるかを示す構成パラメーター(local-cache-sr)があります。通常、これらのストレージリポジトリの種類はEXT3/EXT4です。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
<!--NeedCopy-->
この値を設定するには、以下のいずれかを行います:
-
XenServerをホストにインストールする時に、[Enable thin provisioning]オプションを選択する。
-
xe host-enable-local-storage-caching host=host sr-uuid=sr
を実行する。このコマンドを実行するには、指定されたホストが無効になっており、仮想マシンがシャットダウン状態である必要があります。
1つ目のオプションでは、ホストのインストール時に種類がEXT3/EXT4のローカルストレージリポジトリが作成されます。2つ目のオプションでは、コマンドラインで指定したストレージリポジトリが使用されます。
警告:
これらの手順が必要になるのは、複数のローカルストレージリポジトリを設定した場合のみです。
Q: ローカルキャッシュはいつ削除されますか?
A: VDIのキャッシュファイルが削除されるのは、そのVDI自体を削除した時のみです。VDIが仮想マシンに接続されると(仮想マシンの起動時など)、キャッシュがリセットされます。VDIを削除した時にホストがオフラインだった場合は、そのホストの起動時に実行されるストレージリポジトリ同期によりキャッシュファイルが削除されます。
注:
仮想マシンをほかのホストに移行した時、および仮想マシンをシャットダウンしたときは、ホスト上のキャッシュファイルは削除されません。