(57)【特許請求の範囲】
【請求項１】
仮想サーバを受動的に監視するための方法であって、
前記仮想サーバに関連付けられたストレージ・ロケーションにアクセスするために前記仮想サーバによって使用される仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲット・デバイスを生成することであって、前記読み出し専用のターゲット・デバイスは、前記仮想サーバ・ディスクの特性の実質的にすべてを有するものである、前記生成することと、
監視クローラによってアクセスされるように前記仮想サーバ・ディスクをエクスポーズすることと、
前記監視クローラによって、前記監視クローラが前記仮想サーバ・ディスクの状態を変更しないように前記読み出し専用のターゲット・デバイスを介して前記仮想サーバ・ディスクから前記仮想サーバに関する１組の特徴を獲得することと、
前記１組の特徴のうちの少なくとも１つを分析して、前記仮想サーバの受動的監視を実行することと
を含む方法。
【請求項２】
ハイパーバイザに基づく仮想化管理ユーティリティを用いて前記仮想サーバのデバイス構成を特定することと、
前記特定することに基づいて前記仮想サーバ・ディスクの前記構成を判定することとをさらに含む、請求項１に記載の方法。
【請求項３】
前記仮想サーバ・ディスクに関するデバイス・マッパ・テーブルによって定義されるリニア・ブロック・デバイスで前記仮想サーバのイメージ・ファイルをラップすることをさらに含み、
前記エクスポーズすることが、前記デバイス・マッパ・テーブルを前記読み出し専用のターゲット・デバイスにコピーすることを含む、請求項１に記載の方法。
【請求項４】
前記エクスポーズすることの前に、異なる仮想サーバに関連付けられた異なる仮想サーバ・ディスクであって、前記読み出し専用のターゲット・デバイスを介して前記監視クローラによって以前にアクセスされているものと、前記読み出し専用のターゲット・デバイスとの関連付けを解くことをさらに含み、
前記関連付けを解くことが、前記読み出し専用のターゲット・デバイスにおいて前記異なる仮想サーバに関連付けられた異なるデバイス・マッパ・テーブルの上に前記デバイス・マッパ・テーブルをコピーすることを含む、請求項３に記載の方法。
【請求項５】
前記監視クローラが、監視されている前記仮想サーバとは異なるものであって、且つ、前記仮想サーバとともに共通の物理サーバ上に配置されるクローラ仮想サーバに含まれるものである、請求項１に記載の方法。
【請求項６】
前記読み出し専用のターゲット・デバイスが、前記仮想サーバの仮想サーバ・ディスクのための読み出し専用のインターネット小型コンピュータ・システム・インターフェース（ＩＳＣＳＩ：Internet Small Computer System Interface）ターゲット・デバイスであり、
前記監視クローラが、前記仮想サーバを含む前記共通の物理サーバから遠隔にある物理サーバ上に配置され、
前記エクスポーズすることが、前記読み出し専用のＩＳＣＳＩターゲット・デバイスをネットワークを介して前記読み出し専用のターゲット・デバイスとして提示することを含む、請求項１に記載の方法。
【請求項７】
前記獲得することの前に、前記監視クローラで中央検出サーバからの要求を受信することであって、前記要求が、前記仮想サーバの受動的監視を実行するように前記監視クローラに要求するものである、前記受信することと、
前記監視クローラからの前記１組の特徴に対応するデータを前記中央検出サーバに転送することと、
前記中央検出サーバで前記分析することを実行することとをさらに含む、請求項１に記載の方法。
【請求項８】
要求に応じて、コピー・オン・ライト・ストレージを生成することと、
データ・ブロックへのあらゆる書き込みに関して、前記書き込みによって書き込まれているデータを前記コピー・オン・ライト・ストレージにコピーすることとをさらに含み、
前記獲得することが、書き込まれなかったデータを得るために前記データ・ブロックにアクセスし、書き込まれたデータを得るために前記コピー・オン・ライト・ストレージにアクセスすることを含む、請求項１に記載の方法。
【請求項９】
コンピュータ・システムを受動的に監視するためのシステムであって、
仮想サーバに関連付けられた仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲット・デバイスを生成することと、
監視クローラによってアクセスされるように前記仮想サーバ・ディスクをエクスポーズすることと、
前記監視クローラによって、前記読み出し専用のターゲット・デバイスを介して前記仮想サーバ・ディスクから前記仮想サーバに関する１組の特徴を獲得することと、
前記１組の特徴のうちの少なくとも１つを分析して、前記仮想サーバの受動的監視を実行することと
を含む方法を実行する少なくとも１つのコンピュータ・デバイスを含むシステム。
【請求項１０】
コンピュータ・システムを受動的に監視するための方法を実施するためのコンピュータ可読媒体で具現化されたコンピュータ・プログラムであって、前記方法が、
仮想サーバに関連付けられたストレージ・ロケーションにアクセスするために前記仮想サーバによって使用される仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲット・デバイスを生成することであって、前記読み出し専用のターゲット・デバイスは、前記仮想サーバ・ディスクの特性の実質的にすべてを有するものである、前記生成することと、
監視クローラによってアクセスされるように前記仮想サーバ・ディスクをエクスポーズすることと、
前記監視クローラによって、前記監視クローラが前記仮想サーバ・ディスクの状態を変更しないように前記読み出し専用のターゲット・デバイスを介して前記仮想サーバ・ディスクから前記仮想サーバに関する１組の特徴を獲得することと、
前記１組の特徴のうちの少なくとも１つを分析して、前記仮想サーバの受動的監視を実行することとを含む、コンピュータ・プログラム。
【請求項１１】
コンピュータ・システムを受動的に監視するためのアプリケーションを展開するための方法であって、
仮想サーバに関連付けられたストレージ・ロケーションにアクセスするために前記仮想サーバによって使用される仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲット・デバイスを生成することであって、前記読み出し専用のターゲット・デバイスは、前記仮想サーバ・ディスクの特性の実質的にすべてを有するものである、前記生成することと、
監視クローラによってアクセスされるように前記仮想サーバ・ディスクをエクスポーズすることと、
前記監視クローラによって、前記監視クローラが前記仮想サーバ・ディスクの状態を変更しないように前記読み出し専用のターゲット・デバイスを介して前記仮想サーバ・ディスクから前記仮想サーバに関する１組の特徴を獲得することと、
前記１組の特徴のうちの少なくとも１つを分析して、前記仮想サーバの受動的監視を実行することと
を行うように動作可能なコンピュータ・インフラストラクチャを提供することを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の対象は、一般に、コンピュータ・システムの管理に関する。より詳細には、本発明の態様は、複雑な仮想環境における改善された受動的監視のための解決策を提供する。
【背景技術】
【０００２】
今日の電子的環境において、コンピュータ・システムは、絶え間ない変化に晒されている。これらの変化に遅れずについて行くためには、これらのシステムのユーザがシステムを監視することができることが重要である。監視は、能動的監視（active monitoring）および受動的監視を含むいくつかの異なる種類に分類され得る。受動的監視は、コンピュータ・システムを修正しない任意の観測を含む。この限りにおいて、受動的監視は、準拠（compliance）の検査を実行するためにファイル・システムをスキャンすること、どのアプリケーションがシステムに現在インストールされているかを判定するためにレジストリをスキャンすること、セキュリティ・スキャンを行うこと、ファイル・システムの検査、ライセンス使用を監視することなどを含み得る。対照的に、コンピュータ・システムの修正を伴うパッチを当てること、セキュリティ・アップデートを適用することなどの活動は、能動的監視と呼ばれる。
【０００３】
標準的なコンピュータ・システムにおいて、受動的監視は、受動的監視機能を実行するためにシステムのバックグラウンドで１つまたは複数のプログラム（例えば、エージェント）を実行することを含むことが多い。これらのプログラムは、システムの監視、準拠の検査、セキュリティ、マルウェアの検出、ソフトウェアの発見、ドリフト（drift）の検出、バックアップなどを含むがこれらに限定されない機能を提供し得る。このシステム内の手法の解決策は、同じ物理マシンで多数のインスタンスが実行される仮想サーバ型のコンピュータ・システムなどのコンピュータ・システムにおいては実用性が落ちる。そのようなシステムは、ランタイムのシステムの状態が物理ハードウェアから切り離されることを可能にすることによって、基礎を成す物理リソースのより効率的な使用と、実行中のシステムのより簡素化された管理とを可能にする。さらに、仮想サーバの作成、展開、および再利用の容易性が増すことは、同じ物理マシンで同時に、または連続して、あるいはその両方で実行される仮想サーバの数を増やすことになった。
【発明の概要】
【０００４】
概して、本発明の態様は、コンピュータ・システムを受動的に監視するための解決策を提供する。一実施形態においては、読み出し専用のターゲット（read-only target）が、仮想サーバに関連付けられたストレージにアクセスするために仮想サーバによって使用される仮想サーバ・ディスクの構成に基づいて生成される。この読み出し専用のターゲットは、監視クローラによるアクセスのために仮想サーバ・ディスクをエクスポーズするために使用され得る。読み出し専用のターゲットを用いて、監視クローラは、仮想サーバ・ディスクから仮想サーバに関する１組の特徴を獲得することができる。この１組の特徴のうちの１つまたは複数は、仮想サーバの受動的監視を実行するために分析され得る。
【０００５】
本発明の第１の態様は、仮想サーバを受動的に監視するための方法であって、仮想サーバに関連付けられた仮想サーバ・ディスクの構成に基づいて読み出し専用のディスク・ターゲットを生成することと、読み出し専用のターゲットによってアクセスされるように仮想サーバ・ディスクをエクスポーズすることと、監視クローラによって、読み出し専用のターゲットを介して仮想サーバ・ディスクから仮想サーバに関する１組の特徴を獲得することと、１組の特徴のうちの少なくとも１つを分析して、仮想サーバの受動的監視を実行することとを含む方法を提供する。
【０００６】
本発明の第２の態様は、コンピュータ・システムを受動的に監視するためのシステムであって、仮想サーバに関連付けられた仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲットを生成することと、読み出し専用のターゲットによってアクセスされるように仮想サーバ・ディスクをエクスポーズすることと、受動的な監視クローラによって、読み出し専用のターゲットを介して仮想サーバ・ディスクから仮想サーバに関する１組の特徴を獲得することと、１組の特徴のうちの少なくとも１つを分析して、仮想サーバの受動的監視を実行することとを含む方法を実行する少なくとも１つのコンピュータ・デバイスを含む、システムを提供する。
【０００７】
本発明の第３の態様は、コンピュータ・システムを受動的に監視するための方法を実施するためのコンピュータ可読媒体で具現化されたコンピュータ・プログラム製品であって、方法が、仮想サーバに関連付けられた仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲットを生成することと、読み出し専用のターゲットによってアクセスされるように仮想サーバ・ディスクをエクスポーズすることと、受動的な監視クローラによって、読み出し専用のターゲットを介して仮想サーバ・ディスクから仮想サーバに関する１組の特徴を獲得することと、１組の特徴のうちの少なくとも１つを分析して、仮想サーバの受動的監視を実行することとを含む、コンピュータ・プログラム製品を提供する。
【０００８】
本発明の第４の態様は、コンピュータ・システムを受動的に監視するためのアプリケーションを展開するための方法であって、コンピュータ・インフラストラクチャを提供することを含む方法を提供する。コンピュータ・インフラストラクチャは、仮想サーバに関連付けられた仮想サーバ・ディスクの構成に基づいて読み出し専用のターゲットを生成することと、読み出し専用のターゲットによってアクセスされるように仮想サーバ・ディスクをエクスポーズすることと、受動的な監視クローラによって、読み出し専用のターゲットを介して仮想サーバ・ディスクから仮想サーバに関する１組の特徴を獲得することと、１組の特徴のうちの少なくとも１つを分析して、仮想サーバの受動的監視を実行することとを行うように動作可能である。
【０００９】
さらにその上、本発明の構成要素のいずれかが、コンピュータ・システムで受動的監視を実施することを提供するサービス・プロバイダによって展開、管理、提供などを行われる可能性がある。
【００１０】
本発明の実施形態は、関連付けられたシステム、方法、またはプログラム製品、あるいはこれらすべても提供する。
【００１１】
本発明のこれらのおよびその他の特徴は、添付の図面と関連してなされる本発明のさまざまな態様の以下の詳細な説明からより容易に理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態による例示的なコンピュータ・システムを示す図である。
【図２】本発明の実施形態による仮想化されたデータセンター環境を示す図である。
【図３】本発明の実施形態による例示的な仮想サーバを示す図である。
【図４】本発明の実施形態による例示的なデバイス・マッパ・テーブルを示す図である。
【図５】本発明の実施形態による改善された仮想サーバ環境を示す図である。
【図６】本発明の実施形態による仮想サーバ環境をクロールするための方針を示す図である。
【図７】本発明の実施形態による仮想サーバ環境をクロールするための方針を示す図である。
【図８】本発明の実施形態による分析環境を示す図である。
【図９】本発明の実施形態による例示的な流れ図である。
【発明を実施するための形態】
【００１３】
図面は、必ずしも正確な縮尺でない。図面は、概略的な表現であるに過ぎず、本発明の特定の限定要因を示すように意図されていない。図面は、本発明の典型的な実施形態を示すようにのみ意図されており、したがって、本発明の範囲の限定と考えられるべきでない。図面において、同様の番号は、同様の要素を表す。
【００１４】
本発明の発明者は、仮想サーバを受動的に監視する現在の方法が改善され得ることを発見した。例えば、各仮想サーバに受動的監視エージェントを追加する現在の解決策は、仮想化されたデータセンター環境内のあらゆる仮想サーバの「フットプリント（footprint）」を広げる。この広げられたフットプリントは、単一の仮想サーバに関して絶対的に見れば小さい可能性があるが、単一の物理サーバでリソースを得るために争う非常に多くの仮想サーバが存在する仮想化されたデータセンター環境などのシステムではかなり大きくなる可能性がある。加えて、本発明の発明者は、スナップショットに基づく解決策が限界を有することも発見した。例えば、多くのスナップショットに基づく解決策は、システム全体のイメージが取得されることを必要とする。仮想サーバに関する情報の小さなサブセットのみが分析される必要がある場合、これらのスナップショットは、他でより有効に使用される可能性がある準備するための時間および記憶するための空間を必要とする不必要な情報を含む。さらに、そのようなスナップショットに基づく解決策は、単一の時点のシステムの状態を捕捉し得るに過ぎない。これは、行われ得る分析の量を制限するか、または必要な分析を実行するために複数のスナップショットの取得を必要とするか、あるいはその両方である可能性がある。
【００１５】
さらに、本発明の発明者は、そのような監視が副次的な影響を引き起こさないことが有益である可能性があることを発見した。つまり、監視自体が、監視されるシステムの状態または動作にいかなる変化も引き起こすべきでない。さらに、発明者は、現在のシステム外監視の解決策によって、実行されるシステムの「ダーティな（dirty）」ディスクの状態に確実にアクセスすることが困難になり得ることを発見した。例えば、システムは、実行されるとき、ディスク上のそれらのシステムのデータを絶えず変更する、つまり、ダーティにする可能性がある。クリーンな（clean）不活発であるディスクを期待する現在の標準的なディスク・アクセス方法は、実行されるシステムの活発なディスクに適用されるとき、失敗することが多い。
【００１６】
上で示されたように、本発明の態様は、コンピュータ・システムを受動的に監視するための解決策を提供する。一実施形態においては、読み出し専用のターゲットが、仮想サーバに関連付けられたストレージにアクセスするために仮想サーバによって使用される仮想サーバ・ディスクの構成に基づいて生成される。この読み出し専用のターゲットは、監視クローラによるアクセスのために仮想サーバ・ディスクをエクスポーズするために使用され得る。読み出し専用のターゲットを用いて、監視クローラは、ストレージ・ブロックから仮想サーバに関する１組の特徴を獲得することができる。この１組の特徴のうちの１つまたは複数は、仮想サーバの受動的監視を実行するために分析され得る。
【００１７】
図面に目を向けると、図１は、コンピュータ・システムを受動的に監視するための例示的な環境１００を示す。この限りにおいて、環境１００は、コンピュータ・システムを受動的に監視するために本明細書において説明されるプロセスを実行することができるコンピュータ・システム１０２を含む。特に、コンピュータ・システム１０２は、コンピューティング・デバイス１０４を本明細書において説明されるプロセスを実行することによってコンピュータ・システムを受動的に監視するように動作可能にする受動的監視プログラム１４０を含むコンピューティング・デバイス１０４を含むものとして示されている。
【００１８】
コンピューティング・デバイス１０４は、処理構成要素１０６（例えば、１つまたは複数のプロセッサ）、メモリ１１０、ストレージ・システム１１８（例えば、記憶階層）、入力／出力（Ｉ／Ｏ）構成要素１１４（例えば、１つまたは複数のＩ／Ｏインターフェースまたはデバイスあるいはその両方）、ならびに通信経路１１２を含むものとして示されている。概して、処理構成要素１０６は、メモリ１１０に少なくとも部分的に固定されている受動的監視プログラム１４０などのプログラム・コードを実行する。この限りにおいて、処理構成要素１０６は、単一の処理ユニットを含むか、または１つもしくは複数の位置の１つもしくは複数の処理ユニットに分散される可能性がある。
【００１９】
また、メモリ１１０は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ（ストレージ・システム１１８）、または実行中に大容量ストレージ・システム１１８からコードが取り出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶を行うキャッシュ・メモリ（図示せず）、あるいはこれらすべてを含み得る。したがって、メモリ１１０は、磁気媒体、光媒体、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、データ・キャッシュ、データ・オブジェクトなどを含む任意の知られている種類の一時的または永続的データ・ストレージ媒体を含み得る。さらに、処理構成要素１０６と同様に、メモリ１１０は、１つもしくは複数の種類のデータ・ストレージを含む単一の物理的位置に存在するか、またはさまざまな形態の複数の物理システムに分散される可能性がある。
【００２０】
プログラム・コードを実行する間に、処理構成要素１０６は、データを処理することができ、その処理は、さらなる処理のためにメモリ１１０もしくはＩ／Ｏ構成要素１１４またはその両方から変換されたデータを読むこと、またはメモリ１１０もしくはＩ／Ｏ構成要素１１４またはその両方に変換されたデータを書き込むこと、あるいはその両方を行う結果となる可能性がある。経路１１２は、コンピュータ・システム１０２の構成要素のそれぞれの間に直接的または間接的な通信リンクを提供する。Ｉ／Ｏ構成要素１１４は、システムのユーザ１２０が任意の種類の通信リンクを用いてコンピュータ・システム１０２と通信することを可能にするために人間のユーザ１２０がコンピュータ・システム１０２または１つもしくは複数の通信デバイスあるいはその両方とインタラクションすることを可能にする１つまたは複数のヒューマンＩ／Ｏデバイスを含み得る。
【００２１】
この限りにおいて、受動的監視プログラム１４０は、人間のまたはシステムのあるいはその両方のユーザ１２０が受動的監視プログラム１４０とインタラクションすることを可能にする１組のインターフェース（例えば、（１つもしくは複数の）グラフィカル・ユーザ・インターフェース、アプリケーション・プログラム・インターフェースなど）を管理することができる。ユーザ１２０は、とりわけ、システム・アドミニストレータ、または仮想データセンター環境２００（図２）のリソースを利用するクライアント、あるいはその両方を含む可能性がある。さらに、受動的監視プログラム１４０は、任意の解決策を用いて、特性１５２または獲得された特徴１５４あるいはその両方を含むがこれらに限定されないストレージ・システム１１８内のデータを管理する（例えば、記憶する、取り出す、生成する、操作する、編成する、提示するなど）ことができる。
【００２２】
いずれにしても、コンピュータ・システム１０２は、インストールされた受動的監視プログラム１４０などのプログラム・コードを実行することができる１つまたは複数のコンピューティング・デバイス１０４（例えば、汎用のコンピューティング製品）を含み得る。本明細書において使用されるとき、「プログラム・コード」は、情報処理能力を有するコンピューティング・デバイスに、直ちに、または以下の、すなわち、（ａ）別の言語、コード、もしくは表記への変換、（ｂ）異なる具体的な形態での再現、または（ｃ）解凍、あるいはこれらすべての任意の組合せの後に特定の行為を実行させる任意の言語、コード、または表記の命令の任意の集合を意味することが理解される。この限りにおいて、受動的監視プログラム１４０は、システム・ソフトウェアまたはアプリケーション・ソフトウェアあるいはその両方の任意の組合せとして具現化され得る。いずれにしても、コンピュータ・システム１０２の技術的効果は、コンピュータ・システムを受動的に監視するためにコンピューティング・デバイス１０４に処理命令を与えることである。
【００２３】
さらに、受動的監視プログラム１４０は、１組のモジュール１４２〜１４８を用いて実装される可能性がある。この場合、モジュール１４２〜１４８は、コンピュータ・システム１０２が受動的監視プログラム１４０によって使用される１組のタスクを実行することを可能にすることができ、別々に開発されるか、または受動的監視プログラム１４０のその他の部分とは別に実装されるか、あるいはその両方である可能性がある。本明細書において使用されるとき、用語「構成要素」は、任意の解決策を用いてハードウェアに関連して説明される機能を実装する、ソフトウェアを伴うかまたは伴わないハードウェアの任意の構成を意味し、一方、用語「モジュール」は、任意の解決策を用いてプログラム・コードに関連して説明される行為をコンピュータ・システム１０２が実施することを可能にするプログラム・コードを意味する。処理構成要素１０６を含むコンピュータ・システム１０２のメモリ１１０に固定されるとき、モジュールは、行為を実施する構成要素の実質的な部分である。とにかく、２つ以上の構成要素、モジュール、またはシステム、あるいはこれらすべてがこれらのそれぞれのハードウェアまたはソフトウェアあるいはその両方の一部／すべてを共有する可能性があることが、理解される。さらに、本明細書において検討される機能の一部が実装されない可能性があり、または追加の機能がコンピュータ・システム１０２の一部として含まれる可能性があることが、理解される。
【００２４】
コンピュータ・システム１０２が複数のコンピューティング・デバイス１０４を含むとき、各コンピューティング・デバイス１０４は、そのコンピューティング・デバイス１０４に固定された受動的監視プログラム１４０の一部のみ（例えば、１つまたは複数のモジュール１４２〜１４８）を有する可能性がある。しかし、コンピュータ・システム１０２および受動的監視プログラム１４０は本明細書において説明されるプロセスを実行し得るさまざまなあり得る等価なコンピュータ・システムを代表するに過ぎないことが、理解される。この限りにおいて、その他の実施形態で、コンピュータ・システム１０２および受動的監視プログラム１４０によって提供される機能は、プログラム・コードを伴うかまたは伴わない汎用のハードウェアまたは専用のハードウェアあるいはその両方の任意の組合せを含む１つまたは複数のコンピューティング・デバイスによって少なくとも部分的に実装される可能性がある。それぞれの実施形態において、ハードウェアおよびプログラム・コードは、含まれる場合、それぞれ、標準的な工学およびプログラミング技術を用いて作られ得る。
【００２５】
とにかく、コンピュータ・システム１０２が複数のコンピューティング・デバイス１０４を含むとき、コンピューティング・デバイスは、任意の種類の通信リンクを介して通信することができる。さらに、本明細書において説明されるプロセスを実行する間、コンピュータ・システム１０２は、任意の種類の通信リンクを用いて１つまたは複数のその他のコンピュータ・システムと通信することができる。いずれの場合も、通信リンクは、さまざまな種類の有線リンクまたは無線リンクあるいはその両方の任意の組合せを含むか、１つもしくは複数の種類のネットワークの任意の組合せを含むか、またはさまざまな種類の送信技術およびプロトコルの任意の組合せを利用するか、あるいはこれらすべてを行う可能性がある。
【００２６】
本明細書において検討されるように、受動的監視プログラム１４０は、コンピュータ・システム１０２がコンピュータ・システムを受動的に監視することを可能にする。この限りにおいて、受動的監視プログラム１４０は、読み出し専用デバイス・クリエータ・モジュール１４２、仮想ディスク・エクスポーザ・モジュール１４４、特徴獲得モジュール１４６、および特徴アナライザ・モジュール１４８を含むものとして示されている。
【００２７】
ここで図２を参照すると、本発明の実施形態による仮想化されたデータセンター環境２００が、示されている。示されるように、仮想的なデータセンター環境２００は、受動的監視プログラム１４０（図１）の機能のすべてまたは一部を実行するために使用され得る物理サーバ２１０を有する。この限りにおいて、物理サーバ２１０は、仮想サーバ２３０の複数のインスタンスを実行するように適合される任意のプラットフォームを実行する任意の製造業者のサーバである可能性がある。図２に示されるように、仮想化されたデータセンター環境２００は、任意の数の関連付けられた物理サーバ２１２、２１４、２１６も含む可能性がある。関連付けられた物理サーバ２１２、２１４、２１６は、ネットワーク２２０を介して通信を目的として物理サーバ２１０と接続される可能性がある。ネットワーク２２０は、現在知られているかまたは今後開発される任意の１つの通信の解決策または複数の通信の解決策を用いて、物理サーバ２１０が関連付けられた物理サーバ２１２、２１４、２１６と通信すること、または物理サーバ２１２、２１４、２１６が互いに通信すること、あるいはその両方を可能にし得る。一部の実施形態において、ネットワーク２２０は、クラウド・コンピューティングの規模で動作し、例えば、サービスを配信するネットワーク２２０の物理的位置および構成をエンドユーザが知っていることを必要としない計算、ソフトウェア、データ・アクセス、およびその他のサービスを提供する可能性がある。
【００２８】
いずれにしても、上述のように、物理サーバ２１０上の仮想サーバ２３０の各インスタンスは、独立を維持したままその他の仮想サーバ２３０のインスタンスと同時に動作することができる。これは、仮想サーバ２３０のインスタンスのそれぞれが、仮想サーバ２３０のその他のインスタンスとは独立して動作し、たとえ仮想サーバ２３０のインスタンスが同じ物理サーバ２１０上で動作するとしても仮想サーバ２３０のその他のインスタンスと情報を共有しないことを意味する。仮想サーバ２３０のこれらのインスタンスの特性のおかげで、単一の物理サーバ２１０は、仮想サーバ２３０の非常に多くのインスタンスを同時に実行することができる。仮想サーバ２３０のこれらのインスタンスの独立した動作は、仮想サーバ２３０の同時に存在するインスタンスの数が物理サーバ２１０のハードウェアの制約によってのみ制限されることを保証する。
【００２９】
ここで図３に目を向けると、本発明の実施形態による例示的な仮想サーバ環境３００が、示されている。仮想サーバ環境３００はプロセス仮想マシン（process virtual machine）とは異なることを理解されたい。プロセス仮想マシンは、特定のタスクを実行するための、Ｊａｖａ（Ｒ）などの高級プログラミング言語で記述されたプラットフォームに依存しないコードを実行するＪａｖａ（Ｒ）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅなどのプラットフォームに依存するエンジンである（Ｊａｖａ（Ｒ）およびＪａｖａ（Ｒ）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅは、米国またはその他の場所あるいはその両方におけるサン・マイクロシステムズの商標である）。対照的に、本発明の仮想サーバ環境３００は、コンピューティング環境全体をシミュレートする仮想システムである。この限りにおいて、単一のタスクのみを実行するのではなく、本発明の仮想サーバ環境３００は、さまざまなタスク、機能、動作などがユーザ１２０（図１）によって実行され得る環境である。したがって、仮想サーバ環境３００は、ユーザ１２０（図１）から見るとスタンドアロンのコンピュータ・システムをシミュレートさせられ得る。
【００３０】
この限りにおいて、仮想サーバ環境３００は、最も低いレベルに仮想化ハイパーバイザ３０２を含む。特に、仮想化ハイパーバイザ３０２は、複数の「ゲスト」仮想サーバ３１０システムが物理サーバ２１０（図２）上で同時に実行されることを可能にするプラットフォームを提供する。この限りにおいて、仮想化ハイパーバイザ３０２は、物理サーバ２１０（図２）のハードウェアのレベルとそれぞれの仮想サーバ３１０のより高レベルのソフトウェアの機能との間の抽象化のレベルを提供する。これらのソフトウェアの機能を提供するために、各仮想サーバ３１０は、イメージとも呼ばれるソフトウェア・スタック３１２を含み得る。ソフトウェア・スタック３１２は、仮想ハイパーバイザ３０２によって物理サーバ２１０上で特定の仮想サーバ３１０の「ゲスト」インスタンスをシミュレートするために必要なすべてのものを含む。この限りにおいて、ソフトウェア・スタック３１２は、オペレーティング・システム３１４、ミドルウェア３１６、および１つまたは複数のアプリケーション３１８を提供し得る。
【００３１】
仮想化されたデータセンター環境２００で実行されるシステムの異なる変化形の数を制限することによって保守費用を下げるために、このレベルで標準化が使用され得る。例えば、特定のソフトウェア・スタック３１２が、限られた数の予め構成されたスタックのうちの１つから生成される可能性がある。これらの予め構成されたスタックは、仮想化されたデータセンター環境２００（図２）の提供者によってそれらのスタックの特定の機能のために最適化される可能性がある。したがって、ユーザ１２０（図１）がデータベース機能を利用したい場合、同じ予め構成されたスタックに基づく同じソフトウェア・スタック３１２を有する１つまたは複数の仮想サーバ３１０が、特にこのユーザ１２０のために生成される可能性がある。これらのソフトウェア・スタック３１２は、例えば、データベース機能を実行するのに適した種類のオペレーティング・システム３１４と、データベース管理システムを含むミドルウェア３１６と、データベース管理システムに抗して実行されるように構成されるアプリケーション３１８とを含む可能性がある。同様に、ユーザ１２０（図１）がウェブ・サーバ機能を利用したい場合、データベース管理システムのために使用される予め構成されたスタックとは異なる予め構成されたスタックに基づく同じソフトウェア・スタック３１２を有する１つまたは複数の仮想サーバ３１０が、特にそのユーザ１２０のために生成される可能性がある。これらのソフトウェア・スタック３１２は、例えば、ウェブ・サーバ機能に適した種類のオペレーティング・システム３１４と、ウェブ・サーバ管理システムを含むミドルウェア３１６と、ウェブ・サーバ管理システムに抗して実行されるように構成されるアプリケーション３１８とを含む可能性がある。仮想化されたデータセンター環境内でさまざまなその他の機能を実行するように適合されるソフトウェア・スタック３１２も生成される可能性があることを理解されたい。この限りにおいて、オペレーティング・システム３１４は、現在知られているかまたは今後開発される任意のオペレーティング・システムを含み得る。さらに、ミドルウェア３１６およびアプリケーション３１８は、特定の仮想サーバ３１０のための所望の機能を提供するための想像され得る任意の解決策を含み得る。
【００３２】
しかし、仮想サーバ３１０が標準化された予め構成されたスタックを用いて生成されることを保証することは、ユーザ１２０（図１）が仮想サーバ３１０の特定のインスタンスを利用し始めると、そのインスタンスが許容し得る限定要因の中に留まることを保証しない。例えば、１人のユーザ１２０が、対応する仮想サーバ３１０を不適格にするソフトウェア・スタック３１２に対する不注意による変更を行う可能性がある。代替的に、ユーザ１２０は、ソフトウェア・スタック３１２に対する意図的な変更を、変更がソフトウェア・スタック３１２を不適格にしたと知らずに行う可能性がある。その上さらに、不適格な変更が、ユーザ１２０によって仮想サーバ３１０に不注意でロードされたマルウェアからなど、悪意によって取り入れられる可能性がある。いずれにしても、仮想サーバ３１０の特定のインスタンスのソフトウェア・スタック３１２のそのような不適格な変更は、仮想サーバ３１０を非効率的にまたは不正確に機能させる可能性がある。仮想サーバ３１０によって利用される物理空間がその他の仮想サーバ３１０（図３）によっても利用されるので、この種の変更が、仮想化されたデータセンター環境２００のシステムの機能の即時的なまたは漸進的な低下を引き起こす可能性がある。
【００３３】
上述のように、この問題を是正するために、そのような不適格な変更に由来する仮想サーバ３１０の逸脱を検出するために仮想サーバ３１０を受動的に監視するための解決策が、提案されている。図３は、仮想化されたデータセンター環境２００の仮想サーバ３１０のあらゆるインスタンスに受動的監視エージェント３１９がインストールされる１つのそのような従来技術の解決策を示す。しかし、本出願の発明者は、この手法のいくつかの欠点を発見した。例えば、図３に示されるように、仮想サーバ３１０への受動的監視エージェント３１９の追加がリソースを使用し、仮想化されたデータセンター環境２００内の仮想サーバ３１０の「フットプリント」を広げる。この広げられたフットプリントは、単一の仮想サーバ３１０に関して絶対的に見れば小さい可能性があるが、それぞれがそれ自体の受動的監視エージェント３１９を有する非常に多くの仮想サーバ３１０が物理サーバ２１０でリソースを得るために争っている仮想化されたデータセンター環境２００などのシステムではかなり大きくなる可能性がある。加えて、本発明の発明者は、各受動的監視エージェント３１９が中央検出サーバ（図示せず）に報告することを求められる場合、報告する受動的監視エージェント３１９からの組み合わされた出力が、ネットワーク２２０（図２）を介した通信をあふれさせないまでも圧迫する可能性があることを発見した。その上さらに、マルウェアが原因である脅威の急速に発達する性質のために、受動的監視エージェント３１９は、頻繁に更新される必要がある可能性がある。仮想化されたデータセンター環境２００の仮想サーバ３１０の多数の受動的監視エージェント３１９は、配置し、仮想サーバ３１０のステータスを調べ、必要に応じて受動的監視エージェント３１９を更新するために多大なリソースを必要とする可能性がある。
【００３４】
いずれにしても、仮想サーバ環境３００に要求される１つのタスクまたは複数のタスクを実行するためには、仮想サーバ環境３００が、ストレージ・ロケーション３０４に対する１つまたは複数の書き込みを実行しなければならない可能性がある。ストレージ・ロケーション３０４は、仮想サーバ３１０に含まれる１つまたは複数の仮想ディスクを含み得る。この場合、ストレージ・ロケーションは、仮想化ハイパーバイザ３０２のファイル・システムに含まれる可能性がある。追加的にまたは代替的に、ストレージ・ロケーション３０４は、デバイス、疑似デバイス（例えば、ループ・オーバー・ファイル（loop over file）またはｄｅｖマッパ（dev mapper）あるいはその両方のデバイス）などのうちの１つまたは複数も含む可能性がある。いずれにしても、ストレージ・ロケーション３０４は、仮想化ハイパーバイザ３０２によって、および仮想化ハイパーバイザ３０２を通して見え、したがって、仮想サーバ環境３００の外からアクセス可能である。いずれにしても、仮想サーバ３１０は、本質的に、仮想化ハイパーバイザ３０２を介して基礎を成す物理サーバ２１０（図２）によって実行されているソフトウェアであるので、オペレーティング・システム３１４、ミドルウェア３１６、またはアプリケーション３１８、あるいはこれらすべてなどによるソフトウェア・スタック３１２への任意の変更は、ストレージ３０４への任意の変更を伝達する書き込み動作を必要とする可能性がある。これらの動作を容易にするために、仮想化ハイパーバイザ３０２は、仮想サーバ・ディスク３２０を提供することができる。仮想サーバ・ディスク３２０は、基礎を成す物理サーバ２１０（図２）または別のノードあるいはその両方に配置される可能性がある仮想サーバ環境３００とストレージ３０４との間のインターフェース（例えば、ドライバ）として働く。この限りにおいて、仮想サーバ・ディスク３２０は、基礎を成す物理的なストレージ３０４のデバイスのサービスを仮想サーバ環境３００に提供する。また、仮想サーバ・ディスク３２０は、デバイス・マッパ・テーブルを用いるなどして仮想サーバ３１０によって内部で使用される１組のデータ・ブロックをストレージ３０４の１組のターゲット・データ・ブロックとマッピングし得る。そのような場合、仮想サーバ３１０のイメージ・ファイルが、仮想サーバ３１０のイメージ・ファイルに対するデバイス・マッパ・テーブルを作成するためにリニア・デバイス・マッパ・ブロック（linear device mapper block）でラップされる可能性がある。
【００３５】
ここで図４に目を向けると、本発明の実施形態によるデバイス・マッパ・テーブル３２２が示されている。一実施形態において、デバイス・マッパ・テーブル３２２は、専用のデバイス（もしくはドライバ）である可能性があり、または仮想サーバ３１０（図３）のためのデバイス・マッパ・テーブルによって定義されるリニア・ブロック・デバイス（linear block device）で仮想サーバのイメージ・ファイルをラップすることなどにより仮想サーバ（図３）のイメージ・ファイルに対して生成される可能性があり、あるいはその両方である可能性がある。いずれにしても、デバイス・マッパ・テーブル３２２は、基礎を成す物理サーバ２１０（図２）上の特定の仮想サーバ３１０（図３）とストレージ３０４（図３）との間の読み取り動作または書き込み動作あるいはその両方を容易にすることができる。デバイス・マッパ・テーブル３２２は、仮想サーバ３１０（図３）によって使用されるディスク・ブロック・アドレスをストレージ３０４（図３）によって利用されるターゲット・アドレスにマッピングすることによってこれを行う。この機能を容易にするために、デバイス・マッパ・テーブル３２２は、仮想ブロック３２４およびターゲット・ブロック３２６を含み得る。仮想サーバ３１０（図３）は、ストレージ３０４（図３）から読み取るかまたはストレージ３０４（図３）に書き込むとき、仮想ブロック３２４（例えば、２２）を含む要求を送る可能性がある。デバイス・マッパ・テーブル３２２は、仮想ブロック３２４を用いて要求をストレージ３０４（図３）の正しいターゲット・ブロック３２６、この場合はブロック７５にマッピングすることができる。デバイス・マッパ・テーブル３２２は、書き込みインジケータ３２８も含み得る。書き込みインジケータ３２８は、ストレージ３０４（図３）の特定のターゲット・ブロック３２６への書き込みが行われたかどうかを示す。書き込みインジケータ３２８は、データ・ビット、トグル、カウンタ、それぞれの状態に関連付けられた１組のデータ値などを含むがこれらに限定されない現在知られているかまたは今後開発される任意の解決策を用いてこのタスクを実行することができる。
【００３６】
ここで図５に目を向けると、本発明の実施形態による改善された仮想サーバ環境４００が、示されている。示されるように、改善された仮想サーバ環境４００は、本発明の機能のうちの１つまたは複数を実行するために使用され得るクローラ・フレームワーク４０２を含む。クローラ・フレームワーク４０２は、以降でさらに詳細に説明される監視クローラ４１０を含む可能性がある。クローラ・フレームワーク４０２を囲む破線の四角によって示されるように、クローラ・フレームワーク４０２は、仮想サーバ３１０が含まれる同じ仮想化ハイパーバイザ３０２の一部である可能性がある。代替的に、クローラ・フレームワーク４０２は、同じ物理サーバ２１０（図２）上の異なる仮想化ハイパーバイザに含まれる可能性がある。これらの場合、監視クローラ４１０は、それぞれの仮想化ハイパーバイザに配置された仮想サーバに含まれる可能性がある。追加的にまたは代替的に、クローラ・フレームワーク４０２の１つまたは複数の要素は、同じ物理サーバ２１０（図２）上に配置されるが、ハイパーバイザに基づかない解決策を用いて実装される可能性がある。追加的にまたは代替的に、クローラ・フレームワーク４０２の１つまたは複数の要素は、物理サーバ２１０（図２）と永続的または一時的にネットワークで接続される中央サーバなどの、仮想サーバ３１０が配置される物理サーバ２１０（図２）の遠隔に配置される可能性がある。
【００３７】
ここで図１および５に同時に目を向けると、コンピュータ・システム１０２によって実行される読み出し専用デバイス・クリエータ・モジュール１４２が、読み出し専用ターゲット・デバイス４２０を生成し得る。この読み出し専用のターゲット４０６は、仮想サーバ３１０が関連付けられるストレージ・ロケーション３０４にアクセスするために仮想サーバ３１０によって使用される仮想サーバ・ディスク３２０の構成に基づいて生成され得る。例えば、特定の実施形態においては、仮想化ハイパーバイザ３０２に含まれる仮想化管理ユーティリティが、仮想サーバ３１０を分析して、仮想サーバ３１０に関連付けられたデバイスのうちの１つまたは複数の構成を特定することができる。この分析から、仮想サーバ・ディスク３２０の構成が判定され得る。そして今度は、この構成が、仮想サーバ・ディスク３２０の特性のすべてまたは実質的にすべてを有する読み出し専用のターゲット４０６を生成するために使用され得る。１つの重要な違いは、読み出し専用のターゲット４０６はそれ自体が読み出し専用であることである。
【００３８】
いずれにしても、読み出し専用のターゲット４０６は、クローラ・フレームワーク４０２の構成に応じていくつかの形態のうちの１つを取る可能性がある。ここで図５に関連して図６に目を向けると、ｃｒａｗｌＶＭ４２４（例えば、クローラ・フレームワーク４０２）が監視することになる１つの仮想マシンまたは複数の仮想マシン４２６ａ、ｂ（例えば、仮想サーバ３１０）と同じホスト４２２（例えば、物理サーバ２１０（図２））にｃｒａｗｌＶＭ４２４が配置される実施形態が、示されている。そのような環境において、読み出し専用のターゲット４０６は、複製デバイス・マッパ（duplicate device mapper）（ＤＭ−ｄｕｐ）デバイス４３２の形態で具現化される可能性がある。ＤＭ−ｄｕｐデバイス４３２は、実際のデバイス・マッパ・デバイス（device mapper device）（ｄｍデバイス）４３０ａ〜ｎ（例えば、仮想サーバ・ディスク３２０）と同じデバイス・テーブルを有する疑似デバイスと考えられ得る。ＤＭ−ｄｕｐデバイス４３２は、ホスト４２２か、またはホスト４２２内で仮想マシンとして実行される監視クローラ４１０か、あるいはその両方によって生成される可能性がある。例えば、Ｌｉｎｕｘ環境においては、ホスト４２２または監視クローラ４１０あるいはその両方が、標準的なＬｉｎｕｘのブロック・デバイス・マッピング論理を用いてＤＭ−ｄｕｐデバイス４３２を生成し得る。いずれにしても、ＤＭ−ｄｕｐデバイス４３２は、読み出し専用として生成され、したがって、ブロック・レベルでさえも仮想サーバ・ディスク３２０にまったく副次的な影響を与えない。示されるように、別個のｃｒａｗｌＶＭ４２４が使用されるとき、ＤＭ−ｄｕｐデバイス４３２は、別個のデバイスとしてｃｒａｗｌＶＭ４２４にされ得る。この疑似ｄｕｐデバイス（pseudo dup-device）は、初めは、テーブルがない可能性があり、つまり、ＶＭ４２６ａ、ｂの仮想デバイスのためのバッキング・デバイス（backing device）が存在しない。しかし、ランタイム中に、このデバイスは、このデバイスの現在のデバイス・マッパ・テーブルを対応するＤＭデバイス４３０ａ〜ｎのマッピングで置き換えることによってＤＭデバイス４３０ａ〜ｎのいずれかをロードされ得る。このように、同じＤＭ−ｄｕｐデバイス４３２が、同じホスト４２２に配置されるＶＭ４２６ａ、ｂのいずれかをマッピングする、マウントする、またはクロール／インデックス付けする、あるいはこれらすべてを行うために使用され得る。
【００３９】
ここで図５に関連して図７に目を向けると、仮想マシン（ＶＭ）４２６ａ、ｂが存在するホスト４２２から遠隔のホスト４６６（例えば、物理サーバ２１２、２１４、２１６（図２））にｃｒａｗｌＶＭ４２４（例えば、クローラ・フレームワーク４０２）が配置される別の実施形態が、示されている。そのような環境４６０において、読み出し専用のターゲット４０６は、ｉＳＣＳｉターゲット４７２の形態で具現化され得る。ＩＳＣＳｉターゲット４７２は、ネットワークを介して遠隔のホスト４６６にターゲットＤＭデバイス４３０ａ〜ｎをエクスポーズするために使用され得る。これは、クロール側のイニシエータによってネットワークを介したＤＭデバイス４３０ａ〜ｎ（例えば、仮想サーバ・ディスク３２０）へのアクセスを可能にしながら、ｃｒａｗｌＶＭ４２４（例えば、監視クローラ４１０）のすべてまたは一部が（１つまたは複数の）ターゲットＶＭ４２６ａ、ｂから完全に切り離されることを可能にし得る。セキュリティを保証するために、ｉＳＣＳｉターゲット・アドミニストレータ４７４が、ホスト４２２で認証機能を実行するために使用され得る。ＩＳＣＳｉターゲット・アドミニストレータ４７４は、１組のクレデンシャル４７６（例えば、監視される仮想サーバ３１０、アクセス制限情報など）を用いてこの認証を実行することができる。特定のＶＭ４２６ａ、ｂが監視されるべきであるとき、監視クローラ４１０は、監視される（１つまたは複数の）ＶＭ４２６ａ、ｂの仕様はもちろん、正しいクレデンシャル４７６もネットワーク２２０（図２）を介するなどして送信し得る。示されたｉＳＣＳＩに特有の実装において、クレデンシャルは、ＣＨＡＰ認証、または特定のｃｒａｗｌＶＭ４２４のインスタンスへのアクセスを制限するさらなるアクセス制御構成、あるいはその両方によって管理される可能性がある。しかし、ネットワークを介して外部ホスト４６６にＶＭ４２６ａ、ｂをエクスポーズするためのその他のプラットフォームまたは解決策あるいはその両方は本発明の範囲内であることを理解されたい。いずれにしても、エクスポーズすることにより、ネットワークを介して（１つまたは複数の）ＤＭデバイス４３０ａ〜ｎへのアクセスを読み出し専用で可能にする（１つまたは複数の）ＶＭ４２６ａ、ｂへのリンクが生成される。
【００４０】
再び図１および５を同時に参照すると、コンピュータ・システム１０２によって実行される仮想ディスク・エクスポーザ・モジュール１４４が、読み出し専用のターゲット４０６を特定の仮想サーバ３１０に関連付けられたストレージ３０４に関連付ける。この関連付けは、上述のマッピングの解決策を用いて、または現在知られているかもしくは今後開発される任意の解決策を利用して行われ得る。例えば、特定の実施形態においては、単一の読み出し専用のターゲット４０６が、特定の仮想サーバ３１０の受動的監視を実行する要求がなされる度に生成され、要求が完了すると破棄される可能性がある。代替的に、その他の実施形態においては、読み出し専用のターゲット４０６が、使用後に破棄されるのではなく、再利用のために維持される可能性がある。そのような実施形態においては、読み出し専用のターゲット４０６が、監視クローラ４１０によるアクセスのためにその読み出し専用のターゲット４０６が関連付けられていた仮想サーバ・ディスク３２０（例えば、図６および７のＶＭ４２６ｂに対応するＤＭデバイス４３０ｎ）との関連付けを解かれ、受動的監視が新たに望まれる新しい仮想サーバ・ディスク３２０（例えば、図６および７のＶＭ４２６ａに対応するＤＭデバイス４３０ａ）に関連付けられる可能性がある。これは、読み出し専用のターゲット４０６に以前に保持されていた情報がデバイス・マッパ・テーブル３２２からのコピーされた情報によって置き換えられるようにして新しい仮想サーバ３１０に関連付けられたデバイス・マッパ・テーブル３２２を読み出し専用のターゲット４０６にコピーすることによって実現され得る。代替的に、これは、仮想サーバ・ディスク３２０（例えば、図７のＶＭ４２６ｂに対応するＤＭデバイス４３０ｎ）から既存のＩＳＣＳＩ接続を削除し、その既存のＩＳＣＳＩ接続を新しい仮想サーバ・ディスク３２０（例えば、図７のＶＭ４２６ａに対応するＤＭデバイス４３０ａ）への読み出し専用の接続で置き換えることによって実現され得る。代替的に、さらにその他の実施形態においては、単一の読み出し専用のターゲット４０６が、複数の仮想サーバ・ディスク３２０と同時に関連付けられる可能性がある。そのような実施形態においては、関連付けを求めるそれぞれの新しい仮想サーバ・ディスク３２０に関して、特定の仮想サーバ・ディスク３２０に関連付けられたデバイス・マッパ・テーブル３２２のコピーが、その他の仮想サーバ３１０に関する同様の情報を削除することなく仮想サーバ・ディスク３２０から読み出し専用のターゲット４０６にコピーされる可能性がある。代替的に、関連付けを求めるそれぞれの新しい仮想サーバ・ディスク３２０に関して、新しい論理ユニット番号（ＬＵＮ）が、その他の仮想サーバ３１０に関する同様の情報を削除することなく既存のＩＳＣＳＩに基づく読み出し専用のターゲット４０６に追加される可能性がある。そのような情報は、必要とされないときに破棄されるか、または将来のアクセスが望まれるようなときまで読み出し専用のターゲット４０６内に維持される可能性がある。
【００４１】
引き続き図１および５を同時に参照すると、コンピュータ・システム１０２によって実行される特徴獲得モジュール１４６が、関連付けられた仮想サーバ・ディスク３２０から仮想サーバ３１０に関する１組の特徴を獲得し得る。仮想サーバ３１０の特徴のこの獲得は、読み出し専用のターゲット４０６の使用を通じて監視クローラ４１０によって実行され得る。受動的監視が望まれる仮想サーバ３１０に対応する仮想サーバ・ディスク３２０に読み出し専用のターゲット４０６が直接関連付けられるので、監視クローラ４１０は、読み出し専用のターゲット４０６を用いて、情報が望まれる仮想サーバ３１０のそれらの特徴にのみアクセスすることができる。
【００４２】
その結果、特定の時点の仮想サーバ３１０の状態の全体をコピーするスナップショットを取得することとは異なり、監視クローラ４１０は、仮想サーバ３１０の仮想サーバ・ディスク３２０の完全なスイープ（sweep）を含む「フル・クロール（full crawl）」から仮想サーバ３１０の仮想サーバ・ディスク３２０の定義されたサブセットのみをクロールする「ターゲットを定めたクロール（targeted crawl）」に及ぶ任意の１組の特徴を仮想サーバ３１０から獲得し得る。そのような「ターゲットを定めたクロール」を用いると、仮想サーバ・ディスク３２０からの情報の単一のブロックしか、獲得のターゲットにされない可能性がある。さらに、読み出し専用のターゲット４０６と仮想サーバ・ディスク３２０との間の関連付けの永続的な性質のために、監視クローラ４１０は、「増分クロール（incremental crawl）」を実行することができるように１組の特徴を獲得することもできる。そのような「増分クロール」において、監視クローラ４１０は、読み出し専用のターゲット４０６を利用して、仮想サーバ・ディスク３２０のすべてまたは一部を経時的にクロールすることができる。そのようなクロールの期間は、獲得されるデータの予め決められた量、同じイメージまたはインスタンスの以前のクロールに関連して観測された任意の差などに基づいて予め定義される可能性がある。
【００４３】
いずれにしても、読み出し専用であるターゲットの監視クローラ４１０による利用（例えば、監視クローラ自体は実際の仮想ディスク３２０の状態に影響を与え得るいかなる書き込みも実行することができない）は、仮想サーバ・ディスク３２０の状態への変更がなされないかまたはなされ得ないことを保証する。対照的に、仮想サーバ３１０がストレージ３０４へライブ・アクセス（live access）可能である間の仮想サーバ３１０の仮想サーバ・ディスク３２０を通じたストレージ３０４へのアクセスの試みは、たとえ読み出し専用の動作として実行されるとしても直ちに成功しない可能性が高い。これは、稼働している仮想サーバ３１０に関して、デバイスに対してなされた変更の一部を吸収し、それらの変更を後の間隔でフラッシュするためにオペレーティング・システム・レベルのキャッシュおよびファイル・システムのジャーナルなどの性能最大化の解決策が使用されることが多いために、仮想サーバ・ディスク３２０が本質的にダーティな状態にあるからである。これらの解決策の結果として、（オフラインのＶＭの場合のような）クリーンなディスク、またはディスクのジャーナルをフラッシュしてダーティな状態をクリーンにする能力を期待する標準的なマウント方法は、失敗するか、または仮想サーバ・ディスク３２０の望ましくない変更を取り込むそのようなフラッシュ・プロセスを実行する必要があるか、あるいはその両方である。
【００４４】
稼働中のＶＭの仮想ディスク３２０の信頼できる処理を実現するために、本発明は、１つまたは複数のさらなる技術を使用することができる。一実施形態においては、コピー・オン・ライト（ＣＯＷ）ストレージ４０４が、生成され得る。ＣＯＷストレージ４０４は、監視クローラ４１０の中、クローラ・フレームワーク４０２の他の場所、またはクローラ・フレームワークの外に配置される可能性がある。いずれにしても、ＣＯＷストレージ４０４は、行われたが、ストレージ３０４に伝播されていないあらゆる変更を含む情報が獲得されることを保証するために使用され得る。これを行うために、仮想サーバ・ディスク３２０は、仮想サーバ３１０がその仮想サーバ３１０のディスクに対して行ったあらゆる変更をコピーとしてＣＯＷストレージ４０４に伝播し得る。この手法によって、監視クローラ４１０が、書き込み可能な媒体にアクセスしているかのように進行し得る一方、ジャーナルのフラッシュなどのストレージ３０４へのブロック・レベルの変更は、実際のターゲットのＶＭのディスクに反映されないが、ＣＯＷストレージ４０４に一時的に転送される。１組の特徴を獲得するとき、監視クローラ４１０は、変わった特徴をＣＯＷストレージ４０４から獲得する一方、変わっていない特徴は読み出し専用のターゲット４０６を介して適切なＶＭブロックから獲得することができる。この手法は、別の重要な利点を有し、このさらなるＣＯＷ操作を行うことによって、ＶＭの永続的なディスクの状態の「リアルタイム性」が劇的に向上し、多くの場合、ディスクの状態の変化が、それらの変化が実際の仮想サーバ・ディスク３２０のファイル・システムに実際に同期される前でさえも観測され得る。仮想サーバ・ディスク３２０の状態に対してなされたあらゆる変更が、監視クローラ４１０によって実質的に直ちに観測され得る（あり得る例外はクロール・プロセスが完了するために費やされる追加的時間であり、この追加的時間は秒のオーダーである可能性がある）。
【００４５】
この問題に対する代替的な手法は、代替スーパーブロック（alternatesuperblock）アクセス、ディスク・フォレンジック（disk forensics）によって使用される技術を使用することである。この解決策を使用すると、ディスク・レイアウトをマッピングする読み出し専用のターゲット４０６のプライマリ・スーパーブロック（primary superblock）が迂回され、ディスクはその代替スーパーブロックを介してアクセスされ得る。代替スーパーブロックによって、ダーティな状態の仮想サーバ・ディスク３２０が、最初のリカバリを必要とせずにアクセスされ得る。しかし、アクセスは、データまたはメタデータの一部がアクセスされたダーティな状態で古い可能性があるので、仮想サーバ・ディスク３２０のいくらか不完全なビュー（view）をもたらす可能性がある。この解決策は、デバイスの厳密な状態がより重要であるシナリオでより役立つが、概して、よりエラーが起こりやすく、ファイル・システムの分散全体で実装に依存する。
【００４６】
いずれにしても、必要な特徴が獲得されると、これらの特徴を獲得するために使用された構成要素が破棄され得る。例えば、読み出し専用のターゲット４０６と仮想ディスクとの間の関連付けが解かれる可能性があり、ｄｍ−ｄｕｐデバイス４３２を介したデバイスのマッピング、またはｉｓｃｓｉターゲット４７２が削除される可能性がある。コピー・オン・ライト・ストレージ４０４または読み出し専用のターゲット４０６あるいはその両方も、破棄される可能性がある。加えて、クローラ・フレームワークは、使用されていないとき、最小化されることが多い可能性がある。
【００４７】
再び図１を参照すると、コンピュータ・システム１０２によって実行される特徴アナライザ・モジュール１４８が、獲得された特徴１５４のうちの１つまたは複数を分析して仮想サーバ３１０（図５）の受動的監視を実行することができる。受動的監視は、準拠の検査を実行するためにファイル・システムをスキャンすること、どのアプリケーションがシステムに現在インストールされているかを判定するためにレジストリをスキャンすること、セキュリティ・スキャンを行うこと、ファイル・システムの検査、ライセンス使用を監視することなどの活動を含み得る。
【００４８】
ここで図８を参照すると、一実施形態による分析環境５００が、示されている。分析環境は、本発明の実施形態によるクローラＶＭ５４０を有する例示的な物理サーバ５１０を含む。示されるように、クローラＶＭ５４０は、分析環境５００の物理サーバ５１０上の仮想サーバ５３０とは別であり、それ自体が仮想サーバ５３０である可能性がある。しかし、上述のように、その他の構成もあり得る。クローラＶＭ５４０は、物理サーバ５１０全体に関する受動的監視サービスを実行するために複数の仮想サーバ５３０のそれぞれに関してストレージ・システム５１８から抽出された特徴５３４を獲得し得るクローラ・エージェント５４２を含む。クローラ・エージェント５４２は、受動的監視のために必要である機能のすべてを実行するために、読み出し専用のターゲット４０６（図５）を介して仮想サーバ５３０の任意のインスタンスに対応するストレージ・システム５１８のブロックにアクセスすることができる。必要とされる抽出された特徴５３４が獲得されると、これらの抽出された特徴５３４は、さらなる処理または処理のための別のサイトへの送信あるいはその両方のためなどでクロールｄｏｃ（crawl doc）ストア５３８に保存される可能性がある。クロールＤｏｃストア５３８は、極めて基本的に、特徴獲得モジュール１４６および特徴分析モジュール１４８によって生成されたクロールＤｏｃのためのデータ・ストアとして働くことができる。クロールｄｏｃストア５３８は、単純なファイル・システム・ストレージ、リレーショナル・データベース、文書、キー値、テーブル、グラフ・ストアなどの非リレーショナル・データベースなどのさまざまな媒体およびフォーマットでこの情報を記憶することができる。より広い視点から見ると、クロールＤｏｃストア５３８は、基底データ・ストアの上にさらなる論理を構築し、ＶＭの状態の情報のＶＭ内とＶＭ間との両方の経時的分析のための広範な問い合わせおよび分析能力を提供するためにさらなる文書処理を実行する十全な知識ベースとして働くことができる。
【００４９】
この設計の利点は、この設計が、監視される必要があるシステムが実際に実行されている場所に物理的に近い場所にインデックス付け論理がオフロードされることを可能にし、それによって、この設計のスケーラビリティを向上させることである。例として、仮想化されたデータセンター環境２００に１００個の物理サーバ２１０、２１２、２１４、２１６（図２）が存在し、各物理サーバが２５個の仮想サーバ３１０（図３）をホストしていると仮定する。各物理サーバ２１０、２１２、２１４、２１６（図２）上でクローラＶＭ５４０（すなわち、各物理サーバ２１０、２１２、２１４、２１６上の２６番目の仮想サーバ２３０）を実行することによって、クローラＶＭ５４０の単一のインスタンスが、そのインスタンスと同じ場所に配置される２５個の仮想サーバ５３０にインデックス付けサービスを提供し得る。最適化として、クローラＶＭ５４０を含む仮想サーバ５３０（図８）は、インデックス付け動作が実行されていないとき（その仮想サーバ５３０が物理サーバ２００のＣＰＵまたはメモリあるいはその両方のリソースをほとんどまたはまったく使用しないように）停止されたままにされる可能性がある。
【００５０】
この設計の別の利点は、この設計が、ネットワーク２２０（図２）のための単純な帯域幅最適化をアドミニストレータ・ユーザ１２０（図１）が実行して、抽出された特徴５３４を中央検出サーバ５５０に伝達し返すために使用されるデータの量を小さくすることを可能にすることである。例えば、本発明は、その前のスキャン以降に変わった抽出された特徴３３４を中央受動的監視サーバ５５０に送信する。この最適化は、ネットワーク２２０（図２）を介して送信されるデータの量を大きく削減することができる。
【００５１】
実行される分析は、実行されている受動的監視の種類に基づいて異なる可能性がある。例えば、ドリフト検出分析においては、特徴分析モジュール１４８が、抽出された特徴５３４の１つまたは複数の要素を対応する予め構成されたソフトウェア・スタック５５２の少なくとも一部と比較する可能性がある。これら２つを比較することによって、特徴分析モジュール１４８は、それぞれのファイル・システムの構造、内容、状態などの間の差を計算し得る。この差は、例えば、３つの部分、すなわち、すべて予め構成されたソフトウェア・スタック５５２に対して、追加されたデータ、削除されたデータ、および修正されたデータからなる可能性がある。対照的に、マルウェア・タイプの分析においては、抽出された特徴５３４が、知られているマルウェア・エージェントのシグネチャと比較される可能性がある。その他の分析の種類において、抽出された特徴５３４は、特定の要件が満たされたかどうかを判定するためなどの１組の規則５５４に基づいて分析される可能性がある。規則５５４は、許容範囲内の多くの仮想サーバ５３０の間で生じる差を分析することによって統計的に推測される可能性もあり、ファイルを不変（例えば、実行ファイル）、ほとんど変化しない（構成ファイル）、もしくは絶えず変わる（ログ・ファイル）として自動的に分類することによって推測される可能性があり、または評価ツールによって実行される評価に基づいてクラスタの構成の記述などの情報の外部ソースから推測される可能性があり、あるいはこれらすべてである可能性がある。同様の規則に基づく変更形態が、メモリの状態の異常または悪意のある振る舞いを検出するために使用され得る。これらの例は、未知のプロセス、怪しいネットワーク接続、およびコード・セグメントの修正を検出することを含むがこれに限定されない。
【００５２】
ここで図９に目を向けると、本発明の実施形態による例示的な流れ図が、示されている。示されるように、Ｓ１において、コンピュータ・システム１０２（図１）によって実行される読み出し専用デバイス・クリエータ・モジュール１４２（図１）が、読み出し専用のターゲット４０６（図５）を生成する。この読み出し専用のターゲット４０６（図５）は、仮想サーバ３１０がその仮想サーバ３１０の関連付けられたストレージ３０４にアクセスするために使用する仮想サーバ・ディスク３２０（図５）の構成に基づいて生成され得る。Ｓ２において、コンピュータ・システム１０２（図１）によって実行される仮想ディスク・エクスポーザ・モジュール１４４（図１）が、読み出し専用のターゲット４０６（図５）を仮想サーバ・ディスク３２０に関連付ける。Ｓ３において、コンピュータ・システム１０２（図１）によって実行される特徴獲得モジュール１４６（図１）が、仮想サーバ・ディスク３２０（図４）から仮想サーバ３１０（図５）に関する１組の特徴１５４を獲得する。この獲得は、読み出し専用のターゲット４０６（図５）を用いて監視クローラ４１０（図５）によって実行され得る。Ｓ４において、コンピュータ・システム１０２（図１）によって実行される特徴アナライザ・モジュール１４８（図１）が、獲得された特徴１５４（図１）を分析して仮想サーバ３１０（図５）の受動的監視を実行する。
【００５３】
本明細書においてはコンピュータ・システムを受動的に監視するための方法およびシステムとして示され、説明されたが、本発明の態様はさまざまな代替的な実施形態をさらに提供することが理解される。例えば、一実施形態において、本発明は、実行されるときに、コンピュータ・システムがコンピュータ・システムを受動的に監視することを可能にする少なくとも１つのコンピュータ可読媒体に固定されたコンピュータ・プログラムを提供する。この限りにおいて、コンピュータ可読媒体は、本明細書において説明されたプロセスの一部またはすべてを実装する受動的監視プログラム１４０（図１）などのプログラム・コードを含む。用語「コンピュータ可読媒体」は、プログラム・コードのコピーがコンピューティング・デバイスによって認識されるか、再生されるか、またはそうでなければ伝達され得る現在知られているかまたは今後開発される任意の種類の有形の表現媒体のうちの１つまたは複数を含むことが理解される。例えば、コンピュータ可読媒体は、１つまたは複数のポータブル・ストレージ製品、コンピューティング・デバイスの１つまたは複数のメモリ／ストレージ構成要素などを含み得る。
【００５４】
別の実施形態において、本発明は、本明細書において説明されたプロセスの一部またはすべてを実装する受動監視プログラム１４０（図１）などのプログラム・コードのコピーを提供する方法を提供する。この場合、コンピュータ・システムは、本明細書において説明されたプロセスの一部またはすべてを実装するプログラム・コードのコピーを処理して、１組のデータ信号にプログラム・コードのコピーを符号化するように、その特性のうちの１つまたは複数を設定させるかまたは変更させるかあるいはその両方を行わせる１組のデータ信号を生成し、第２の異なる場所で受信するために送信することができる。同様に、本発明の実施形態は、コンピュータ・システムが本明細書において説明された１組のデータ信号を受信し、１組のデータ信号を少なくとも１つのコンピュータ可読媒体に固定されたコンピュータ・プログラムのコピーに変換することを含む、本明細書において説明されたプロセスの一部またはすべてを実装するプログラム・コードのコピーを獲得する方法を提供する。いずれの場合も、１組のデータ信号が、任意の種類の通信リンクを用いて送信／受信され得る。
【００５５】
さらに別の実施形態において、本発明は、コンピュータ・システムを受動的に監視するためのシステムを生成する方法を提供する。この場合、コンピュータ・システム１２０（図１）などのコンピュータ・システムが得られる（例えば、生成される、保有される、利用可能にされるなど）可能性があり、本明細書において説明されたプロセスを実行するための１つまたは複数の構成要素が得られ（例えば、生成される、購入される、使用される、修正されるなど）、コンピュータ・システムに展開される可能性がある。この限りにおいて、展開は、（１）コンピューティング・デバイスにプログラム・コードをインストールすること、（２）１つまたは複数のコンピューティング・デバイスまたはＩ／Ｏデバイスあるいはその両方をコンピュータ・システムに追加すること、（３）コンピュータ・システムが本明細書において説明されたプロセスを実行することを可能にするようにコンピュータ・システムを組み込むことまたは修正することあるいはその両方などのうちの１つあるいは複数を含み得る。
【００５６】
用語「第１の」、「第２の」などは、本明細書において使用される場合、いかなる順序、量、または重要度も表さず、むしろある要素を別の要素と区別するために使用され、本明細書における用語「ａ」および「ａｎ」は、量の限定を表さず、むしろ言及される項目の少なくとも１つの存在を表す。修飾語「およそ」は、量に関連して使用される場合、記載された値を含み、文脈によって決定される意味を有する（例えば、特定の量の測定に関連付けられた誤差の度合いを含む）。接頭辞「（１つまたは複数の）」は、本明細書において使用されるとき、それが修飾する語の単数と複数との両方を含むように意図され、それによって、その語の１つまたは複数を含む（例えば、（１つまたは複数の）金属は、１つまたは複数の金属を含む）。本明細書において開示された範囲は、包括的であり、独立に組合せ可能である（例えば、「最大でおよそ２５ｗｔ％まで、またはより詳細にはおよそ５ｗｔ％からおよそ２０ｗｔ％まで」の範囲は、「およそ５ｗｔ％からおよそ２５ｗｔ％まで」の範囲の端点およびすべての中間値を含むなど）。
【００５７】
本発明のさまざまな態様の上述の説明は、例示および説明を目的として示された。本発明のさまざまな態様の上述の説明は、網羅的であるように、または開示された厳密な形態に本発明を限定するように意図されておらず、明らかに、多くの変更および変形があり得る。当業者には明らかである可能性があるそのような変更および変形は、添付の特許請求の範囲によって定義される本発明の範囲に含まれる。
【図１】
0006380958.tif 000002
【図２】
0006380958.tif 000003
【図３】
0006380958.tif 000004
【図４】
0006380958.tif 000005
【図５】
0006380958.tif 000006
【図６】
0006380958.tif 000007
【図７】
0006380958.tif 000008
【図８】
0006380958.tif 000009
【図９】
0006380958.tif 000010