本ブログエントリーはPernixData社のテクノロジーエバンジェリストであるFrank Denneman氏のブログの翻訳版です。 Frank氏について、詳しくはこちらもご参照ください。
本記事の原文はPernixData FVP I/O Profiling PowerCLI commandsで閲覧可能です。
ネットワールドのPernixDataに関する情報はこちら。本ブログのPernixDataの記事のまとめはこちら。
「キャッシュ汚染を解消する」という記事の中で、管理者が一時的に仮想マシンのRead、Writeのいずれか、もしくは双方をキャッシュしないようにするPowerCLIコマンドがあるということをお伝えしました。
Read操作が発生した際、FVPはデータがホストから提供されるのか、それともストレージから提供されるのかを判断します。もしもキャッシュミスが生じたら(2)、データはストレージからの取得となります(3)。データのパフォーマンスを改善するためには、データはローカルの高速化リソースにコピーされてからアプリケーションに渡される必要があります(4)。これはフォールスライト(false write)と呼ばれる手順です。
これらのコマンドを利用することで、FVPは頻繁にアクセスされるデータを高速化リソース上に残したまま、ストレージに対して直接Writeを発行することができます。FVPはキャッシュミスによってストレージから取得されるバックアップジョブやアンチウィルススキャンのためのデータをキャッシュ上のホットデータを上書きすることなく無視することができるのです。
仮想マシン上のFVPの高速化を一時的に止めるためには、WindowsのPowerShellセッションを開き、FVP管理サーバへ接続します。Windows PowerShellプロンプトから以下のFVPコマンドレットを実行します :
Suspend-PrnxReadDataPopulation: このコマンドレットは特定の仮想マシンに対して、FVPがフォールスライトを行わないようにする際に利用します。
Suspend-PrnxWriteDataPopulation:このコマンドレットは特定の仮想マシンに対して、FVPがトゥルーライト(True Write)を行わないようにする際に利用します。トゥルーライトは仮想マシンがWrite-Backモードになっている際に発生します。
Suspend-PrnxReadWriteDataPopulation:このコマンドレットは特定の仮想マシンに対して、FVPがフォールスライトおよびトゥルーライトを行わないようにする際に利用します。
例えばSQL01という名前の仮想マシンのフォールスライトを停止するには以下のコマンドを利用します :
Suspend-PrnxReadDataPopulation –Name "SQL01"
一つのコマンドで複数の仮想マシンに対しての停止も行えます :
"SQL01","SQL02","SQL03" | ForEach-Object {SuspendPrnxReadDataPopulation –Name $_}
$_ という変数にSuspend-PrnxReadDataPopulationに対して、データをパイプさせて利用されています。最初にこのコマンドが呼び出された時にはコマンドレットは SQL01という名前に対して実行され、二回目にはコマンドレットはSQL02に対して実行されます。以降同じです。
バックアップジョブが終了すれば、それに対応する再開のコマンドレットを呼び出します。
- Resume-PrnxReadDataPopulation
- Resume-PrnxWriteDataPopulation
- Resume-PrnxReadWriteDataPopulation
例えば :
Resume-PrnxReadDataPopulation –Name "SQL01"
仮想マシンのフォールスライトやトゥルーライトが停止されていても、FVPはすべての操作を継続して実行可能です。例えば、Suspend- PrnxReadDataPopulationが有効になっていても、データがキャッシュされていれば、すべてのReadのI/Oは高速化リソースから提供されます。
ほとんどすべてのバックアップソリューションはPre-およびPost-コマンドを設定することができるようになっています。これらのコマンドを利用して、アプリケーションから頻繁にアクセスされるデータを残しながら、フラッシュデバイス上にバックアップによって発生する不必要な消耗や劣化を発生させないことができるようになっています。
記事担当者: マーケティング本部 三好哲生 (@pernixdata_netw)