Azure HPC Cache でファイルの書き戻しをカスタマイズする

HPC Cache のユーザーは、flush_file.py ユーティリティを使用して、キャッシュで特定の個別ファイルをオンデマンドでバックエンド ストレージに書き込むよう要求することができます。 このユーティリティは、Linux クライアント マシンにインストールして使用する、個別にダウンロードしたソフトウェア パッケージです。

この機能は、キャッシュされたファイルの変更を、キャッシュをマウントしていないシステムでできるだけ早く利用できるようにするために設計されています。

たとえば、Azure HPC Cache を使用してクラウドでコンピューティング ジョブをスケーリングしつつ、データセットはオンプレミスのデータ センターに恒久的に保存するといった場合です。 Azure HPC Cache で作成された変更に依存するコンピューティング タスクがデータ センターで発生した場合、このユーティリティを使用して、クラウド タスクによって生成された出力または変更をオンプレミスの NAS ストレージに「プッシュ」することができます。 これにより、新しいファイルをオンプレミスのコンピューティング リソースでほぼ即座に使用できるようになります。

カスタムの書き戻しとフラッシュのどちらかを選択する

Azure HPC Cache に組み込まれている "ストレージ ターゲット フラッシュ" オプションを使用してデータを強制的に書き戻すことができますが、この方法はすべての状況に適しているわけではありません。

  • 変更されたすべてのファイルをストレージ システムに書き戻すと、データ量やオンプレミス システムに戻るネットワーク リンクの速度によっては、数分あるいは数時間かかることもあります。 また、書き込みが終了したファイルだけを選択することはできません。まだ変更中のファイルも、この計算に含まれます。

  • キャッシュは、フラッシュ プロセス中に、そのストレージ ターゲットからの一部の要求の処理をブロックする可能性があります。 同じストレージ ターゲット上に存在するファイルを使用する他のコンピューティング クライアントがある場合、これによって処理が遅れる可能性があります。

  • このアクションをトリガーするには、Azure Resource Manager への共同作成者アクセスが必要ですが、これはエンド ユーザーは持っていない可能性があります。

たとえば、同じ HPC Cache ストレージ ターゲットに存在するデータを使用する複数の並列 (ただし重複しない) コンピューティング ジョブがあるとします。 1 つのジョブが完了したら、そのジョブの出力をキャッシュからバックエンドの長期ストレージに直ちに書き込むとします。

次の 3 つのオプションがあります。

  • キャッシュされたファイルがキャッシュから自動的に書き戻されるのを待ちます。ただし、ファイルが完全に書き戻されるまで、1 時間以上キャッシュに残る場合があります。 タイミングは、キャッシュ使用モデルの書き戻しの遅延と、ネットワーク リンクのパフォーマンスやファイルのサイズなどのその他の要因によって異なります。 書き戻しの遅延の詳細については、「キャッシュ使用モデルについて」を参照してください。

  • ストレージ ターゲット全体のキャッシュ ファイルを直ちにフラッシュします - しかし、これにより、このストレージ ターゲットのデータを使用している他のコンピューティング ジョブが中断されます。

  • このカスタマイズされた書き戻しユーティリティを使用して、必要な特定のファイルのみを書き戻す特殊な NFS 要求をキャッシュに送信します。 このシナリオでは、他のクライアントのアクセスは中断されず、コンピューティング タスクのどの時点でもトリガーすることができます。

書き戻しユーティリティについて

書き戻しユーティリティには、キャッシュから長期ストレージ システムに書き込まれる個々のファイルを指定するために使用できるスクリプトがあります。

このスクリプトには、書き込むファイルの入力ストリームと、ストレージ ターゲット エクスポートへのキャッシュ名前空間のパス、および HPC Cache マウント IP アドレスを指定できます。

このスクリプトでは、特別な引数が有効になっている NFSv3 "commit" 呼び出しを使用します。 Linux nfs-common クライアントは、これらの引数を適切に渡すことができないため、flush_file.py ユーティリティは Python ライブラリの NFS クライアント エミュレーターを使用して、HPC Cache NFS サービスと通信します。 このライブラリには必要なものがすべて含まれており、コンピューティング クライアントの Linux カーネルベースの NFS クライアントに存在する可能性のある制限を回避することができます。

この機能を使用するには、以下を実行する必要があります。

  • GitHub Microsoft HPC-Cache-NFSv3-client リポジトリ から hpc-cache-nfsv3-client ライブラリを https://github.com/microsoft/hpc-cache-nfsv3-client にインストールします。 1 つ以上のコンピューティング クライアントで使用できます。 前提条件や使用方法は、リポジトリの README ファイルに記載されています。

  • 付属の 'flush_file.py' スクリプトを使用して、必要な正確なファイルを長期ストレージ システムに書き戻すようキャッシュに指示します。

flush_file.py スクリプトのインストールと使用の詳細については、GitHub リポジトリを参照してください。