ダウンロードの管理

BigFix では、ダウンロードを効率的に行うため、および使用可能な帯域幅を最大限活用するために、複数の手法が使用されます。その他の手法のうち、キャッシングがサーバー、リレー、およびクライアントを含むすべての BigFix 要素で幅広く使用されます。

クライアント上のアクションによって download ファイル・コマンドが実行されると、クライアントのローカル・キャッシュで最初にファイルの存在がチェックされます。クライアントは、ローカルでファイルを検出できない場合、その親 (通常はリレー) にファイルを要求します。次に、リレーがリレー自体のキャッシュをチェックします。リレーは、ファイルを検出すると、要求したクライアントにそのファイルを直ちに送信します。検出できなかった場合、その親に要求を渡します。親は別のリレーである場合があり、このプロセスがこの後も続けられます。最終的に、サーバーが内部サーバーまたはインターネットからファイルを取得し、それをキャッシュし、逆の経路でそのファイルを渡します。経路上にある各リレーは、ファイルを受信した後、それをキャッシュし、ファイルの転送を続行し、元のクライアントに届けます。元のクライアントもそのファイルをキャッシュします。

アクションの実行中にエージェントが download now コマンドを実行すると、アクション・スクリプトに指定された URL からファイルが要求されて収集されます。

各キャッシュでは、スペース不足になるまで、ファイルが保持されます。スペース不足になった時点で、スペースを確保するために、最も長い期間使用されていない (LRU) ファイルがキャッシュから消去されます。BES サポート・サイトから使用できる 「分析 ID# 227 BES リレーのキャッシュ情報 (Analysis ID# 227 BES Relay Cache Information)」 をアクティブにすることで、リレーのキャッシュ・サイズなどのリレー情報を表示できます。デフォルトのキャッシュ・サイズは 1 GB ですが、BES サポート・サイトで「タスク ID# 148 BES リレー/サーバー設定: ダウンロード・キャッシュ・サイズ (Task ID# 148 BES Relay/Server Setting: Download Cache Size)」を使用してこのサイズを変更することができます。

ファイルを手動でダウンロードし、キャッシュする必要がある場合があります。これは主にファイルが公開されていない場合です。この場合、ファイルをソースから直接ダウンロードする必要があります。具体的な手動キャッシュ要件について詳しくは、「Fixlet の説明 (Fixlet Description)」 タブを参照してください。ファイルをダウンロード・キャッシュの場所 __Download にコピーすることで、ダウンロード・キャッシュを事前に作成できます。これらのファイルを手動で削除することもできます。

キャッシュは、プログラム・フォルダーのサブフォルダーとして格納されます。プログラム・フォルダーは、デフォルトでは %PROGRAM FILES%\BigFix Enterprise (Windows システムの場合)、および /var/opt/BES Server (Linux システムの場合) に作成されます。サーバーのダウンロード・キャッシュは BES Server\wwwrootbes\bfmirror\downloads\sha1 で、クライアントのダウンロード・キャッシュは BES Client\__BESData\__Global\__Cache\Downloads にあります。

ダウンロード・キャッシュに加えて、リレーは、各アクションに必要なすべてのファイルを格納するアクション・キャッシュ (これも 1 GB) を保持し、クライアントは、ユーティリティー・キャッシュを保持します。

帯域幅やダウンロードなど、リレーのトラブルシューティングについて詳しくは、「Relay Health」を参照してください。

クライアントは、以下のいずれかの方法でアクション・スクリプトにリストされた URL からファイルを要求してそのファイルを収集します。
  • アクション・スクリプトを解析してダウンロード一式を計算できる場合は、サーバーによってダウンロード一式が計算されます。特定のアクションに対してプリフェッチ・ダウンロードを入手できる場合は、エージェントが単一の要求でリレーを要求できます。この要求では、エージェントがアクション ID を送信し、サーバー応答によって全ファイルが入手可能かそうでないかが示されます。ファイルがすべて入手可能である場合は、エージェントがファイルをその序数 (1 はスクリプト内の 1 番目のファイルを示し、2 はスクリプト内の 2 番目のファイルを示します) で要求する処理を開始します。ファイルが入手不可能である場合は、リレーがそのことをエージェントに通知し、ファイルをフェッチするプロセスを開始します。エージェントは、ダウンロードが入手可能になるのを待つことを通知し、そのアクションに対して 10 分間ダウンロード待ちの状態となります。10 分が経過してその特定のアクションに対してダウンロードが入手可能になった場合は、エージェントが再びリレーに要求します。

    リレー上でアクションに対してダウンロードが入手可能になると、リレーの子に通知が送信され、その通知を使用してダウンロードの要求が加速されます。何らかの理由で通知メッセージがブロックされた場合は、エージェントによる 10 分間の「リレーへの再要求」動作によって最終的にダウンロードが入手可能であることが検出され、その収集が開始されます。アクション ID に基づいたダウンロード、および序数が入手可能になると、子リレーも親から通知を受けます。子リレーは、この通知を使用して再びダウンロードの要求を加速します。

  • アクション・スクリプトにリストされているダウンロードの URL、サイズ、およびハッシュ値をエージェントだけが計算できるようになっているダウンロードの場合は、エージェントが、入手可能なダウンロードを項目化した要求を使用して親リレーに照会を行います。この要求には、特定のエージェントが必要とするダウンロード項目のリストが含まれています。リレーとクライアントは、上述したとおりに動作して、後続の要求を遅らせて通知を待ちます。

ダウンロードの再開

接続の問題が原因でダウンロードが失敗した場合、ダウンロード・プロセスは次のように再開されます。
  • クライアントが BigFix のリレーまたはサーバーからダウンロードしている場合、10,000 バイトのチャンクでダウンロードを再開できます。つまり、クライアント・プロセスは、再開されると、既に受信している 10,000 バイトのブロックを検査して、検査した最後のブロックの後からダウンロードを再開します。
  • クライアントが別のサーバーの URL からの直接ダウンロードを実行している場合、クライアント・プロセスの再開時に、ダウンロードは最初から開始されます。