(57)【要約】  データ・ストレージ・システムにおける非同期イベント通知のための技術が説明される。イベントを生成する、デバイス・ドライバ、または他のソフトウェア・アプリケーションなどの、より低いレベルのソフトウェアが、イベントが生じたことをイベント・ハンドラにレポートする。イベント・ハンドラは、イベント一元化を含むことが可能なイベント・レポート・ポリシーを実施する。イベント・ハンドラは、それらのイベントをイベント・ディスパッチャにレポートし、イベント・ディスパッチャは、イベント・サブスクライバに、各サブスクライバの登録情報に従って、イベントが生じたことを通知する。イベント・ハンドラは、イベントが生じたことを最初にレポートした、より低いレベルのソフトウェアの特定の実行モードに依存して、カーネル・モードまたはユーザ・モードで実行される。イベント・レポートに関連して複数のイベント・ディスパッチャの階層構成が存在する。イベント・ディスパッチャは、登録情報のデータ共有を実施する。
2008535054.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストレージ・システムにおけるイベント・レポートのための方法であって、
少なくとも１つのデータ・ストレージ・システム・イベントをイベント・ハンドラに非同期でレポートすること、
イベント・レポートにおける前記少なくとも１つのデータ・ストレージ・システム・イベントを、少なくとも１つのイベント・レポート基準に従ってイベント・ディスパッチャに前記イベント・ハンドラによりレポートすること、
を備える方法。
【請求項２】
前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って、１つまたは複数のイベント・レジストラントに前記イベント・ディスパッチャにより通知をすること
をさらに備え、
前記イベント・レジストラントの１つは、ソフトウェア管理構成要素である、請求項１に記載の方法。
【請求項３】
前記イベント・ハンドラは、カーネル・モードで実行され、
前記少なくとも１つのデータ・ストレージ・システム・イベントの通知をデバイス・ドライバから受信すること
をさらに備える、請求項１に記載の方法。
【請求項４】
前記イベント・ハンドラは、ユーザ・モードで実行され、
前記少なくとも１つのデータ・ストレージ・システム・イベントの通知を、ユーザ・モードで実行されるソフトウェア構成要素から受信すること
をさらに備える、請求項１に記載の方法。
【請求項５】
前記少なくとも１つのイベント・レポート基準は、閾値イベント深刻レベル、イベント・タイプ、期間、メッセージ・カウント、バッファ・サイズ、前記期間、前記メッセージ・カウント、または前記バッファ・サイズの少なくとも一つを含み、前記閾値イベント深刻レベルを有するすべてのイベント、または前記イベント・タイプのイベントを受信すると、前記期間、前記メッセージ・カウント又はバッファ・サイズの１つに従って、前記閾値イベント深刻レベル未満のイベントを、前記イベント・ディスパッチャへ一元化されたレポートを実行するために収集して、レポートする、請求項１に記載の方法。
【請求項６】
前記イベント・ディスパッチャは１次ディスパッチャであり、前記第１のイベント・レジストラントは、前記１次イベント・ディスパッチャおよび２次イベント・ディスパッチャに登録し、前記１次イベント・ディスパッチャが、前記第１のイベント・レジストラントへのイベント通知を実行することができない場合に、前記第１のイベント・レジストラントへのイベント通知が前記２次イベント・ディスパッチャによって実行され、前記１次イベント・ディスパッチャと前記２次イベント・ディスパッチャとは、前記第１のイベント・レジストラントについての登録情報を共有する、請求項２に記載の方法。
【請求項７】
前記イベント・ディスパッチャは、第２のイベント・ディスパッチャと通信する、データ・ストレージ・システムに含まれる第１のイベント・ディスパッチャであり、前記第２のイベント・ディスパッチャは、１つまたは複数のイベント・レジストラントに、前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って、イベントについて通知する、請求項１に記載の方法。
【請求項８】
データ・ストレージ・システムにおけるイベント・レポートのためのコンピュータ・プログラム製品であって、
請求項１乃至７のいずれか１項に記載の方法を実行するための実行可能なコード
を備える、コンピュータ・プログラム製品。
【請求項９】
システムであって、
少なくとも１つのデータ・ストレージ・システムであって、
データ・ストレージ・システム・イベント・ジェネレータと、
前記データ・ストレージ・システム・イベント・ジェネレータと通信するイベント・ハンドラであって、前記イベント・ハンドラは前記データ・ストレージ・システム・イベント・ジェネレータから、イベントが生じたことの通知を非同期で受信し、少なくとも１つの基準に従ってイベント・レポート一元化を実行する、イベント・ハンドラと、
前記イベント・ハンドラからイベントの通知を受信し、イベントの通知を他の少なくとも１つの構成要素にディスパッチするイベント・ディスパッチャと
を含む少なくとも１つのデータ・ストレージ・システムと
前記イベントの通知を受信する、少なくとも１つのレジストラントと
を備えるシステム。
【請求項１０】
前記イベント・ディスパッチャと通信する第２のイベント・ディスパッチャを更に備え、前記第２のイベント・ディスパッチャは前記イベント・ディスパッチャからイベントの通知を受信し、前記第２のイベント・ディスパッチャは前記少なくとも１つのレジストラントに、前記少なくとも１つのレジストラントに関連する登録情報に従って、イベントについて通知し、前記データ・ストレージ・システム・イベント・ジェネレータは、デバイス・ドライバである、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書は、一般に、データ・ストレージ・システムに関し、より詳細には、データ・ストレージ・システムにおけるイベントの通知で使用される技術に関する。
【背景技術】
【０００２】
コンピュータ・システムは、１つまたは複数のホスト・プロセッサによって使用される様々なリソースを含む。コンピュータ・システムにおけるリソースおよびホスト・プロセッサは、１つまたは複数の通信接続によって互いに接続される。それらのリソースには、例えば、ＥＭＣコーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）によって製造されるデータ・ストレージ・システムに含まれるデータ・ストレージ・デバイスなどのデータ・ストレージ・デバイスが含まれる。それらのデータ・ストレージ・システムは、１つまたは複数のホスト・プロセッサに結合されて、各ホスト・プロセッサにストレージ・サービスを提供する。１つまたは複数の異なるベンダからの複数のデータ・ストレージ・システムが、接続され、コンピュータ・システム内の１つまたは複数のホスト・プロセッサのための共通データ・ストレージを提供する。
【０００３】
ホスト・プロセッサは、データ・ストレージ・システムを使用して、様々なデータ処理タスクおよび操作を実行する。例えば、ホスト・プロセッサは、データ読み取り操作やデータ書き込み操作などのデータ要求に関連して、基本システムＩ／Ｏ操作を実行する。
【０００４】
ホスト・プロセッサ・システムは、複数のホスト・インタフェース・ユニット、ディスク・ドライブ、およびディスク・インタフェース・ユニットを含むストレージ・デバイスを使用して、データの格納および取り出しを実行する。そのようなストレージ・デバイスは、例えば、ＥＭＣコーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）［米国マサチューセッツ州ホプキントン（Ｈｏｐｋｉｎｔｏｎ）所在］によって提供され、ヤナイ等（Ｙａｎａｉ  ｅｔ  ａｌ．）に発行された米国特許第５，２０６，９３９号、ゴルツァ等（Ｇａｌｔｚｕｒｅ  ｅｔ  ａｌ．）に発行された米国特許第５，７７８，３９４号、ビシュリツキ等（Ｖｉｓｈｌｉｔｚｋｙ  ｅｔ  ａｌ．）に発行された米国特許第５，８４５，１４７号、およびオフェク（Ｏｆｅｋ）に発行された米国特許第５，８５７，２０８号において開示されている。ホスト・システムは、ストレージ・デバイスに、デバイスとともに提供される複数のチャネルを介してアクセスする。ホスト・システムは、それらのチャネルを介してストレージ・デバイスに、データおよびアクセス制御情報を提供し、ストレージ・デバイスは、同様にそれらのチャネルを介して、データをホスト・システムに提供する。ホスト・システムは、ストレージ・デバイスのディスク・ドライブ群を直接にアドレス指定するのではなく、複数の論理ディスク・ユニットとしてホスト・システムに見えるデバイスにアクセスする。それらの論理ディスク・ユニットは、実際のディスク・ドライブ群に対応していても、対応していなくてもよい。複数のホスト・システムが、単一のストレージ・デバイス・ユニットにアクセスすることを許可することにより、ホスト・システムが、そのデバイスの中に格納されたデータを共有することが可能になる。
【０００５】
様々なタスクが、データ・ストレージ・システムに関連して実行される。例えば、管理タスクが、１つまたは複数のデータ・ストレージ・システムに関連して実行される。管理コンソールまたは管理ステーションが、データ・ストレージ・システムを監視するのに使用される。管理コンソールには、データ・ストレージ・システムに関する更新または変更が提供される。管理コンソール・システムに更新を提供することに関連して使用される１つの既存の技術は、ポーリング技術またはレポート技術として特徴付けられる。データ・ストレージ・システムのそれぞれが、規則的な周期間隔で管理コンソールに更新をレポートする命令を実行する。
【０００６】
以上の技術は、既存の欠点を有する。各間隔における各データ・ストレージ・システムによるレポートは、容認できない量のシステム帯域幅、およびその他のデータ・ストレージ・システム・リソースを消費するかもしれない。管理コンソールによって処理されるべき着信メッセージの数は、データ・ストレージ・システムの数とともに増加し、最終的には、レポートのために使用される管理コンソール、および関連する接続を飽和させる、つまり、「溢れさせる」かもしれない。さらに、一定間隔でレポートすることは、レポートされるいずれの更新またはイベントも、管理コンソールに通信されるのに、少なくとも次の間隔までかかることを意味する。さらに、レポートが受信された後、管理コンソールが、それらのレポートを処理することを完了するまでに、さらなる時間が経過する。その結果、イベントが生じてから、そのイベントが、管理コンソールにおいてシステム・マネージャによって最終的に受信されるまでの間に経過する合計時間は、容認できる長さの時間ではないかもしれない。管理コンソールは、例えば、陳腐な、つまり、古くなった情報を表示しているかもしれず、あるいは容認できない長さの時間内でイベントについて通知されているかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このため、１つまたは複数のデータ・ストレージ・システムに関するイベントおよび更新を適時にレポートするための効率的な技術を得ることが望ましい。その技術が、様々な数のデータ・ストレージ・デバイス、およびそれらのデバイス内で生じるイベントに対して使用するためにスケーラブルであることが望ましい。
【課題を解決するための手段】
【０００８】
本発明の１態様によれば、データ・ストレージ・システムにおけるイベント・レポートのための方法は、少なくとも１つのデータ・ストレージ・システム・イベントをイベント・ハンドラに非同期でレポートすること、および前記イベント・ハンドラによる、イベント・レポートの中の前記少なくとも１つのデータ・ストレージ・システム・イベントを、少なくとも１つのイベント・レポート基準に従ってイベント・ディスパッチャにレポートすることを備えている。また、この方法は、前記イベント・ディスパッチャによる、１つまたは複数のイベント・レジストラントに、前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って通知することも含む。前記イベント・レジストラントの１つは、ソフトウェア管理構成要素である。イベント・ハンドラは、カーネル・モードで実行され、方法は、デバイス・ドライバから、前記少なくとも１つのデータ・ストレージ・システム・イベントの通知を受信することも含む。イベント・ハンドラは、ユーザ・モードで実行され、方法は、ユーザ・モードで実行されるソフトウェア構成要素から、前記少なくとも１つのデータ・ストレージ・システム・イベントの通知を受信することも含む。少なくとも１つのイベント・レポート基準は、以下の少なくとも１つを含む。すなわち、閾値イベント深刻レベル、イベント・タイプ、期間、メッセージ・カウント、およびバッファ・サイズである。少なくとも１つのイベント・レポート基準には、前記期間、前記メッセージ・カウント、または前記バッファ・サイズに応じて前記イベント・ディスパッチャに一元化されたレポートを行うために、前記閾値イベント深刻レベルを下回るイベントを収集することが含まれる。前記少なくとも１つのイベント・レポート基準には、少なくとも前記閾値イベント深刻レベルを有するすべてのイベント、または前記イベント・タイプのイベントを、受信された時点でレポートすることも含まれる。イベント・ディスパッチャは、１次ディスパッチャであり、前記イベント・レジストラントの第１のレジストラントは、前記１次イベント・ディスパッチャおよび２次イベント・ディスパッチャに登録し、前記第１のイベント・レジストラントへのイベント通知は、前記１次イベント・ディスパッチャが前記第１のイベント・レジストラントへのイベント通知を実行することができない場合に、前記第２のイベント・ディスパッチャによって実行され、前記１次イベント・ディスパッチャと前記２次イベント・ディスパッチャは、前記第１のイベント・レジストラントについての登録情報を共有する。イベント・ディスパッチャは、第２のイベント・ディスパッチャと通信するデータ・ストレージ・システムに含まれる第１のイベント・ディスパッチャであってもよく、前記第２のイベント・ディスパッチャは、前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って、１つまたは複数のイベント・レジストラントにイベントについて通知する。
【０００９】
本発明の別の態様によれば、システムは、データ・ストレージ・システム・イベント・ジェネレータと、前記データ・ストレージ・システム・イベント・ジェネレータからイベントの出現の通知を非同期で受信し、少なくとも１つの基準に従ってイベント・レポート一元化を実行する、前記データ・ストレージ・システム・イベント・ジェネレータと通信するイベント・ハンドラと、前記イベント・ハンドラからイベントの通知を受信し、少なくとも１つの他の構成要素にイベントの通知をディスパッチするイベント・ディスパッチャと、前記イベントの通知を受信する少なくとも１つのレジストラントとを備える。また、システムは、前記イベント・ディスパッチャと通信する第２のイベント・ディスパッチャも含み、前記第２のイベント・ディスパッチャは前記イベント・ディスパッチャからイベントの通知を受信し、前記第２のイベント・ディスパッチャは、前記少なくとも１つのレジストラントに関連する登録情報に従って、前記少なくとも１つのレジストラントにイベントについて通知する。データ・ストレージ・システム・イベント・ジェネレータは、デバイス・ドライバであってもよい。
【００１０】
本発明の別の態様によれば、データ・ストレージ・システムにおけるイベント・レポートのためのコンピュータ・プログラム製品は、少なくとも１つのデータ・ストレージ・システム・イベントをイベント・ハンドラに非同期でレポートし、前記イベント・ハンドラにより、イベント・レポートの中の前記少なくとも１つのデータ・ストレージ・システム・イベントを、少なくとも１つのイベント・レポート基準に従ってイベント・ディスパッチャにレポートするコードを備える。また、コンピュータ・プログラム製品は、前記イベント・ディスパッチャによる、前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って、１つまたは複数のイベント・レジストラントに通知するコードも含む。イベント・ハンドラは、カーネル・モードで実行され、コンピュータ・プログラム製品は、デバイス・ドライバから前記少なくとも１つのデータ・ストレージ・システム・イベントの通知を受信するコードをさらに含む。イベント・ハンドラは、ユーザ・モードで実行されてもよく、コンピュータ・プログラム製品は、ユーザ・モードで実行されるソフトウェア構成要素から、前記少なくとも１つのデータ・ストレージ・システム・イベントの通知を受信するコードをさらに含む。少なくとも１つのイベント・レポート基準は、以下の少なくとも１つを含む。すなわち、閾値イベント深刻レベル、イベント・タイプ、期間、メッセージ・カウント、バッファ・サイズ、前記期間、前記メッセージ・カウント、または前記バッファ・サイズに応じて前記イベント・ディスパッチャに一元化されたレポートを行うために、閾値イベント深刻レベルを下回るイベントを収集すること、および少なくとも前記閾値イベント深刻レベルを有するすべてのイベント、または前記イベント・タイプのイベントを、受信された時点で、レポートすることである。イベント・ディスパッチャは、１次ディスパッチャであって、前記イベント・レジストラントの第１のレジストラントが、前記１次イベント・ディスパッチャ、および２次イベント・ディスパッチャに登録し、前記第１のイベント・レジストラントへのイベント通知は、前記１次イベント・ディスパッチャが前記第１のイベント・レジストラントへのイベント通知を実行することができない場合、前記２次イベント・ディスパッチャによって実行され、前記１次イベント・ディスパッチャと前記２次イベント・ディスパッチャとは、前記第１のイベント・レジストラントについての登録情報を共有する。イベント・ディスパッチャは、第２のイベント・ディスパッチャと通信するデータ・ストレージ・システムに含まれる第１のイベント・ディスパッチャであってもよく、前記第２のイベント・ディスパッチャは、前記１つまたは複数のイベント・レジストラントのそれぞれに関する登録情報に従って、１つまたは複数のイベント・レジストラントにイベントについて通知する。
【００１１】
本発明の特徴および利点は、添付の図面と併せて解釈される、本発明の例示的な諸実施形態の以下の詳細な説明から、より明白となろう。
【発明を実施するための最良の形態】
【００１２】
次に図１を参照すると、示されているのは、本願明細書で説明されるイベント通知技術を実行することに関連して使用されることが可能なコンピュータ・システムの実施形態の例である。コンピュータ・システム１０は、通信媒体１８を介してホスト・システム１４ａ〜１４ｎおよび管理構成要素１６に接続されたデータ・ストレージ・システム１２を含む。コンピュータ・システム１０の、この実施形態では、管理構成要素１６およびＮ個のホスト１４ａ〜１４ｎは、例えば、Ｉ／Ｏ（入力／出力）操作またはデータ要求を実行する際に、データ・ストレージ・システム１２にアクセスする。通信媒体１８は、当業者に知られている様々なネットワーク、または他のタイプの通信接続の任意の１つまたは複数である。通信媒体１８は、当技術分野で知られている結線による接続、またはその他の接続などの、ネットワーク接続、バス、および／または他のタイプのデータ・リンクである。例えば、通信媒体１８は、ホスト・システム１４ａ〜１４ｎが、データ・ストレージ・システム１２と通信し、コンピュータ・システム１０に含まれるその他とも通信する、インターネット、イントラネット、ネットワーク、またはその他の無線接続、もしくは他の結線による接続である。
【００１３】
コンピュータ・システム１０に含まれるホスト・システム１４ａ〜１４ｎ、管理構成要素１６、およびデータ・ストレージ・システム１２のそれぞれは、通信媒体１８のタイプに応じて提供され、サポートされる様々な接続のいずれか１つによって通信媒体１８に接続される。ホスト・コンピュータ・システム１４ａ〜１４ｎ、および管理構成要素１６に含まれるプロセッサは、Ｉｎｔｅｌ（商標）ベースのプロセッサ、またはそれぞれの特定の実施形態および応用例によるトラフィックをサポートする、他のタイプの市販のプロセッサなどの、様々な独自の、または市販のシングルプロセッサ・システムまたはマルチプロセッサ・システムのいずれのプロセッサであってもよい。
【００１４】
データ・ストレージ・システム１２に含まれるハードウェアおよびソフトウェアの特定の実施は、本願明細書でより詳細に説明され、それぞれの特定の実施形態により異なる可能性があることに留意されたい。ホスト・コンピュータ１４ａ〜１４ｎ、管理構成要素１６、およびデータ・ストレージ・システムのそれぞれはすべて、同一の物理的サイトに配置されてもよく、あるいは、代替として、異なる物理的ロケーションに配置されてもよい。ホスト・コンピュータ・システムと、コンピュータ・システム１０のデータ・ストレージ・システムの間で様々なタイプの接続を提供するのに使用される通信媒体の例は、ＳＣＳＩ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ（商標）、ｉＳＣＳＩなどの様々な異なる通信プロトコルが使用される。ホスト、管理構成要素、およびデータ・ストレージ・システムが、通信媒体に接続される接続の一部、またはすべては、Ｃｏｎｎｅｃｔｒｉｘ（商標）などの他の通信デバイス、あるいは電話線、中継器、マルチプレクサ、またはさらには、衛星などの、存在することが可能な他のスイッチング設備を経由してもよい。
【００１５】
ホスト・コンピュータ・システムのそれぞれは、様々なタイプのタスクに応じて、様々なタイプのデータ操作を実行する。図１の実施形態では、ホスト・コンピュータ１４ａ〜１４ｎのいずれか１つが、データ操作を実行するよう、データ・ストレージ・システム１２にデータ要求を発行する。例えば、ホスト・コンピュータ１４ａ〜１４ｎの１つのコンピュータ上で実行されるアプリケーションが、データ・ストレージ・システム１２に対する１つまたは複数のデータ要求をもたらす読み取り操作または書き込み操作を実行する。
【００１６】
本願明細書でより詳細に説明されるとおり、管理構成要素１６は、データ・ストレージ・システム１２の管理に関連して使用される。管理構成要素１６は、例えば、ディスプレイ・デバイス、もしくは他の出力デバイスや、例えば、キーボード、マウスなどの入力デバイスなどの、１つまたは複数のＩ／Ｏデバイスに接続された１つまたは複数のコンピュータ・プロセッサを含む。データ・ストレージ・システム・マネージャは、例えば、管理構成要素１６のディスプレイ・デバイス上で、現在のストレージ・ボリューム構成を見る。表示される情報には、例えば、現在の構成に関する論理ボリュームまたは論理ユニットのリストが含まれる。データ・ストレージ・システム１２において生じるイベントは、管理構成要素１６にレポートされる。それらのイベントには、例えば、物理デバイスまたは論理デバイスの追加／除去などの、デバイス構成の変更、ハードウェア障害、接続障害、電力供給障害、デバイス状態の変化などが含まれる。イベント・レポート、通知、および管理に関連して使用されることが可能な諸技術については、本願明細書の別の箇所でより詳細に説明する。
【００１７】
次に図２Ａを参照すると、図１のコンピュータ・システム１０に含まれるデータ・ストレージ・システム１２の実施形態の実施が示されている。図２Ａのデータ・ストレージ・システム１２に含まれるのが、１つまたは複数の異なるベンダによって製造される１つまたは複数のデータ・ストレージ・システム２０ａ〜２０ｎである。データ・ストレージ・システム２０ａ〜２０ｎのそれぞれは、互いに接続される（図示せず）。さらに、データ・ストレージ・システムは、特定の実施形態で使用される様々なプロトコルに応じて、それぞれの特定の実施形態およびデバイスにより異なる、任意の１つまたは複数の通信接続３１を介して、ホスト・システムにも接続される。使用される通信接続のタイプは、例えば、ホスト・コンピュータ・システムによってデータ・ストレージ・システム１２に発行されるＩ／Ｏ要求のレートに応じて要求される帯域幅およびスループットと関係するシステム・パラメータおよびシステム要件などの、いくつかのシステム・パラメータおよびシステム要件により異なる。後段でより詳細に説明されるこの実施では、要素２０ａのより詳細な図を参照する。同様のより詳細な説明は、２０ｎなどの、他の要素の任意の１つまたは複数にも当てはまるが、説明を簡明にするために省略されていることに留意されたい。また、或る実施形態は、１つまたは複数のベンダからのデータ・ストレージ・システムを含むことにも留意されたい。２０ａ〜２０ｎのそれぞれは、例えば、ホスト・コンピュータ・システムにストレージ・サービスを提供する、図１のコンピュータ・システム１０の或る実施形態に含まれるリソースである。データ・ストレージ・システム１２は、単独で動作してもよいこと、あるいは、例えば、他の構成要素を含むＳＡＮ（ストレージ・エリア・ネットワーク）の一部として含まれてもよいことに留意されたい。
【００１８】
２０ａなどのデータ・ストレージ・システムのそれぞれは、ｎ行のディスクまたはボリューム２４ａ〜２４ｎからなる構成２４のように、複数のディスク・デバイスまたはディスク・ボリュームを含んでもよい。その構成では、各行のディスクまたはボリュームは、ディスク群またはボリューム群２４の一部に対する操作、またはその一部からの操作のバックエンド管理を担う「ＤＡ」（ディスク・アダプタ）またはディレクタに接続される。システム２０ａでは、２３ａのような単一のＤＡが、行２４ａのようなディスクまたはボリュームの行の管理を担う。
【００１９】
システム２０ａは、１つまたは複数の「ＨＡ」（ホスト・アダプタ）またはディレクタ２１ａ〜２１ｎも含む。それらのＨＡのそれぞれは、１つまたは複数のホスト・システムと、グローバル・メモリとの間の通信およびデータ操作を管理するのに使用され。或る実施形態では、ＨＡは、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ（商標）、またはホスト通信を円滑にする他のアダプタである。
【００２０】
ＤＡ群、ＲＡ群、ＨＡ群、およびメモリ２６の間に１つまたは複数の内部論理通信パスが、存在する。例えば、或る実施形態は、１つまたは複数の内部バスおよび／または通信モジュールを使用する。例えば、グローバル・メモリ部分２５ｂが、データ・ストレージ・システムにおけるＤＡ群、ＨＡ群、およびＲＡ群の間のデータ転送、およびその他の通信を円滑にするのに使用される。１実施形態では、ＤＡ２３ａ〜２３ｎは、例えば、他のディスク・アダプタまたはディレクタ、およびシステム２０ａの他の構成要素と通信する、グローバル・メモリ２５ｂに含まれるキャッシュを使用して、データ操作を実行する。他方の部分２５ａは、各実施形態に応じて異なることが可能な他の指定に関連して使用されるメモリの部分である。
【００２１】
この実施形態で説明される特定のデータ・ストレージ・システム、またはディスクなどの、そのシステムの特定のデバイスは、限定として解釈されるべきではない。他のタイプの市販のデータ・ストレージ・システム、ならびにプロセッサ、およびそれらの特定のデバイスへのアクセスを制御するハードウェアも、或る実施形態に含まれてもよい。
【００２２】
同様にしてトレージ・システム２０ａ内に示されているのが、ＲＡ、つまり、リモート・アダプタ４０である。ＲＡは、同一タイプ、または異なるタイプのデータ・ストレージ・システムの２つの間などの、データ・ストレージ・システム間の通信を円滑にするのに使用される、プロセッサを含むハードウェアである。
【００２３】
ホスト・システムは、チャネルを介して、ストレージ・システムにデータおよびアクセス制御情報を提供し、また、ストレージ・システムもやはり、それらのチャネルを介して、ホスト・システムにデータを提供する。ホスト・システムは、ストレージ・デバイスのディスク・ドライブ群を直接にアドレス指定するのではなく、データへのアクセスは、ホスト・システムが、複数の論理デバイスまたはＬＶ（論理ボリューム）として見えるデバイスから、１つまたは複数のホスト・システムに与えられる。それらのＬＶは、実際のディスク・ドライブ群に対応していても、対応していなくてもよい。例えば、１つまたは複数のＬＶが、単一の物理ディスク・ドライブ上に存在する。単一のストレージ・システムの中のデータに、複数のホストによってアクセスが行われて、それらのホストがそのストレージ・システムの中に存在するデータを共有することを可能にする。ＨＡ群は、データ・ストレージ・システムとホスト・システムの間の通信に関連して使用される。ＲＡ群は、２つのデータ・ストレージ・システム間の通信を円滑にするのに使用される。ＤＡ群は、関連するディスク・ドライブ、およびディスク・ドライブ上に存在するＬＶへの通信を円滑にすることに関連して使用される。
【００２４】
ＤＡは、ディスク・ドライブに対してＩ／Ｏ操作を実行する。以下の説明では、ＬＶ上に存在するデータに、ＤＡによって、他のディレクタが生じさせたＩ／Ｏ操作に関連するデータ要求の後に、アクセスが行われる。
【００２５】
次に図２Ｂを参照すると、示されているのは、データ・ストレージ・システムに含まれるディレクタとメモリの間の論理内部通信の表示である。図２Ｂに含まれるのが、メモリ２６に結合された複数のディレクタ３７ａ〜３７ｎである。ディレクタ３７ａ〜３７ｎのそれぞれは、データ・ストレージ・システムに含まれるＨＡ、ＲＡ、またはＤＡのいずれかを表す。本願明細書で開示される或る実施形態では、メモリ２６に結合された１６までのディレクタが存在する。他の諸実施形態は、様々である、より高い最大数、またはより低い最大数のディレクタを使用してもよい。
【００２６】
また、図２Ｂの表示は、ディレクタ３７ａ〜３７ｎの間の代替の通信パスを提供するオプションのＣＭ（通信モジュール）３８も含む。ディレクタ３７ａ〜３７ｎのそれぞれは、ディレクタ３７ａ〜３７ｎの任意の１つが、メモリ２６を経由する必要なしに、ディレクタ３７ａ〜３７ｎの他の任意の１つにメッセージおよび／またはデータを送信するように、ＣＭ３８に結合される。ＣＭ３８は、ディレクタ３７ａ〜３７ｎの送信側ディレクタが、適切なアドレスを提供して、メッセージおよび／またはデータが、ディレクタ３７ａ〜３７ｎの意図される受信側ディレクタによって受信されるようにする、従来のＭＵＸ／ルータ技術を使用して実施されてもよい。さらに、ディレクタ３７ａ〜３７ｎの送信側ディレクタは、その他のディレクタ３７ａ〜３７ｎのすべてに同時にメッセージをブロードキャストすることができてもよい。
【００２７】
次に図３を参照すると、示されているのは、本願明細書で説明される技術に関連して使用される構成要素の例５０である。例５０に含まれるのが、データ・ストレージ・システム２０ａおよび２０ｂ、ならびに管理構成要素１６である。データ・ストレージ・システム２０ａおよび２０ｂは、例えば、ＥＭＣコーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）などのベンダによって製造されるデータ・ストレージ・システムである。また、或る実施形態は、複数のベンダからのデータ・ストレージ・システムを含む。例および説明の目的で、本願明細書で説明される、以上、およびその他の詳細は、技術の限定として解釈されてはならない。データ・ストレージ・システム２０ａおよび２０ｂ、ならびに管理構成要素１６は、スイッチング・ファブリック５６を介して通信する。要素２０ａ、２０ｂ、および／または要素１６は、例えば、ファイバ・チャネル接続を介するなどの、スイッチング・ファブリック５６を介する第１のパス上のＩ／Ｏの目的で、互いに通信する。要素２０ａ、２０ｂ、および／または要素１６は、データ・ストレージ・システム２０ａおよび２０ｂの管理に関連して、第２の異なるパスを介して通信する。第２のパスは、例えば、接続５４ａおよび５４ｂを介する。１実施形態では、接続５４ａおよび５４ｂは、ＴＣＰ／ＩＰ接続である。或る実施形態は、Ｉ／Ｏとデータ・ストレージ管理に関して別々のパスを使用するものの、或る実施形態は、Ｉ／Ｏとデータ・ストレージ・システム管理の両方に関して同一のパスを使用すること、ならびにＩ／Ｏおよび／または管理に関連して複数のパスも使用する。さらに、特定のタイプの通信パスは、各実施形態に応じて異なる。例えば、データ・ストレージ管理に関連して使用される通信パスは、スイッチング・ファブリックも含む。データ・ストレージ・システム管理および／またはＩ／Ｏのために使用されるタイプの接続には、例えば、ファイバ・チャネル、ＳＣＳＩ、または他の通信接続が含まれる。
【００２８】
管理構成要素１６に含まれる特定の１つまたは複数の要素は、それぞれの特定の実施形態により異なることに留意されたい。本願明細書の別の箇所で説明するとおり、管理構成要素１６は、例えば、プロセッサと、ディスプレイ・デバイスとを有するコンピュータ・システムを含む。プロセッサは、ストレージ・システムについての情報をストレージ・システム・マネージャに表示する命令を実行する。管理構成要素１６のコンピュータ・システム上で実行されるソフトウェアも、データ・ストレージ・システム・イベントに関連してデータ・ストレージ・システム・マネージャから獲得されるような、ユーザ入力を獲得することに関連して使用されることが可能である。データ・ストレージ・システム・イベント情報は、ディスプレイ・デバイス上で表示される。
【００２９】
管理構成要素１６内に含まれる要素の数は、ストレージ・システムの複雑さ、ならびに或る実施形態で実行される特定のアプリケーションおよびタスクにより異なる。例えば、管理構成要素１６は、単一のディスプレイ・デバイスとともに単一のコンピュータ・システムまたはプロセッサだけを含む。代替として、或る実施形態は、データ・ストレージ・システムの管理に関連して、さらなる複雑さを要求する可能性がある。このため、管理構成要素１６は、さらなるソフトウェアおよび／またはハードウェアも含むことが可能である。管理構成要素１６の様々な実施形態の特定の実施については、本願明細書の別の箇所で説明する。
【００３０】
次に、図１のコンピュータ・システムの或る実施形態における１つまたは複数のデータ・ストレージ・システムに関連して使用される非同期イベント通知に関連する諸技術を説明する。非同期イベント通知は、データ・ストレージ・システム・イベントのレポートおよび管理のための技術に関連して使用される。イベントには、例えば、データ・ストレージ・システム内で生じるハードウェア障害、デバイス状態変化、電力障害などが含まれることが可能である。データ・ストレージ・システム構成に適用される、非同期イベント通知は、図３の２０ａおよび２０ｂのようなデータ・ストレージ・システムが、本願明細書で説明される諸技術に関連しても例示されるとおり、例えば、管理構成要素１６、または管理構成要素１６の諸部分などの、１つまたは複数の受信側、または登録済みのサブスクライバに、特定のデータ・ストレージ・システム・イベントの通知を与えることができる技術として使用される。
【００３１】
当業者には理解されるとおり、非同期イベント通知に関連して本願明細書で説明される諸技術は、少数のデータ・ストレージ・システムおよび／または登録するアプリケーションもしくは管理構成要素とともにも、多数のそのような要素とともにも使用されるようにスケーラブルであると特徴付けられる。後段でも説明されるとおり、本願明細書で説明される諸技術は、カーネル空間とアプリケーション空間もしくはユーザ空間の両方で実行されるコード、ならびにユーザ空間だけにおいて実行される諸要素を利用する、或る実施形態に関連して使用される。
【００３２】
次に図４を参照すると、示されているのは、非同期イベント通知技術を使用することに関連して、或る実施形態に含まれる構成要素の実施１００である。図４の構成要素（登録済みのアプリケーション、および未登録のアプリケーションを除く）は、各データ・ストレージ・システム２０ａおよび２０ｂのような、或る実施形態の各データ・ストレージ・システムに含まれことに留意されたい。代替の諸実施形態については、後段で説明する。図４は、データ・ストレージ・システムが、本願明細書で説明される構成要素の実行のためにカーネル空間とユーザ空間とをともに使用する、或る実施形態において実施される、或る特定のアーキテクチャを例示していることに留意されたい。図４に示されるのは、１実施形態においてユーザ空間１０８ａとカーネル空間１０８ｂとで実行される構成要素間の分割である。ユーザ空間１０８ａは、イベント・ディスパッチャ１０２、１２０ａ〜１２０ｎのような１つまたは複数の登録済みのアプリケーション、および１２２ａおよび１２２ｂのような１つまたは複数の未登録のアプリケーションを含む。カーネル空間１０８ｂで実行される構成要素には、非同期イベント・ハンドラ１０４、および、例えば、ＥＭＣコーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）などのベンダによる１つまたは複数のハードウェア構成要素１１０ａ〜１１０ｃのインタフェースであるデバイス・ドライバ１０６が含まれる。カーネル空間１０８ｂで実行される他の構成要素には、他のハードウェア１１２と通信する他のデバイス・ドライバ１１４が含まれる。この特定の実施形態では、ハードウェア１１０ａ〜１１０ｃは、データ・ストレージ・システムに含まれる様々なハードウェア構成要素である。１０６に含まれるデバイス・ドライバのそれぞれは、データ・ストレージ・システムに含まれる１１０ａ〜１１０ｃなどの様々なハードウェア構成要素に通信することに関連して使用される。ハードウェア構成要素１１０ａ〜１１０ｃは、あらゆるハードウェア変化またはハードウェア・イベントに関して、それぞれのデバイス・ドライバに発信することができる。例えば、電力障害、新たなデバイスがオンラインになったこと、或る特定のデバイスがオフラインになったこと、接続障害などの、ハードウェア状態変化が存在する場合、その状態変化が生じたことが、１０６に含まれる適切なデバイス・ドライバに伝えられる。次に、デバイス・ドライバ１０６は、そのようなイベントの通知を、この実施では、カーネル空間１０８ｂで実行される非同期イベント・ハンドラ１０４に送信する。１実施形態では、イベント・ディスパッチャ１０２、非同期イベント・ハンドラ１０４、および１つまたは複数の関連するデバイス・ドライバ１０６は、データ・ストレージ・システム群の各システム上で実行されるソフトウェアを使用して実施される。
【００３３】
非同期イベント・ハンドラ１０４は、選択されたデバイス・ドライバ１０６からハードウェア・イベントの通知を受け取るための収集ポイントまたは中心ポイントの役割をするイベント・コンソリデータとして特徴付けられる。非同期イベント・ハンドラ１０４は、様々な技術のいずれか１つを使用して、収集、一元化を行い、それ以外で、いずれのイベントが、どの時点でイベント・ディスパッチャ１０２に送信されるかを決定する。イベント・ディスパッチャ１０２にイベントを通信することに関連して使用される詳細は、それぞれ特定の実施形態により異なる。イベント通知およびイベント一元化に関連して使用されることが可能な諸技術の例については、本願明細書の別の箇所でより詳細に説明する。
【００３４】
イベント一元化において非同期イベント・ハンドラによって実施される特定のアルゴリズムは、様々な要因を考慮することに留意されたい。非同期イベント・ハンドラによって実施される特定のアルゴリズムは、例えば、任意の単一の非同期イベント・ハンドラにレポートする構成要素およびドライバの数、受信されるイベントを一元化のために収集するバッファ空間などの利用可能なリソースを考慮する。イベント・ディスパッチャにイベントのすべてを１つずつレポートすることは、パフォーマンス問題を生じさせ、この非効率は、構成要素およびイベントの数が増加するにつれ、増大する。図４のカーネル空間−ユーザ空間アーキテクチャを使用する或る実施形態では、工程の実行コンテキストが、カーネル空間からユーザ空間に変わると（例えば、非同期イベント・ハンドラ１０４が、イベント・ディスパッチャ１０２と通信すること）、さらなるシステム・リソースが、コンテキスト切り替えを実行するのに利用される。或る実施形態は、任意のイベントが、期限内にイベント・ディスパッチャおよび／または登録済みのアプリケーションにレポートされるべき、容認できる期間も考慮する。さらに、或る実施形態は、他の１つまたは複数の要因とは無関係に、即時にレポートされる特定の深刻レベルのイベント、特定のタイプのイベントなどが存在することを考慮する。以上に基づき、或る実施形態は、カーネル空間−ユーザ空間コンテキスト切り替えの回数を減らすこと、特定の閾値（例えば、即時にレポートする深刻レベル、容認できる期間の通知、および受信されたイベント・レポートの経時）を設定すること、および非同期イベント・ハンドラからイベント・ディスパッチャに送信されるイベントの一元化を提供することを考慮する。考慮される特定の要因、および関連するあらゆる閾値およびポリシーは、各実施形態により異なる。
【００３５】
イベント・ディスパッチャ１０２は、非同期イベント・ハンドラ１０４から、一元化されたイベント・レポートを受け取る。その後、イベント・ディスパッチャ１０２は、１つまたは複数の登録済みのアプリケーション１２０ａ〜１２０ｎにイベントをレポートする。登録済みのアプリケーションは、例えば、図１および図３に関連して前述した管理構成要素１６に含まれるような、管理コンソール上、または管理ステーション上で実行されるソフトウェア管理構成要素である。
【００３６】
或る実施形態は、イベント・ディスパッチャ１０２による、或る特定のイベント・ディスパッチャ１０２に登録済みである各アプリケーションへの、特定のイベントの選択的通知を提供する。イベント通知を受け取るのに先立って、ソフトウェア管理構成要素などの、或る特定のアプリケーションが、選択された関心対象イベントに関する通知を受け取るようにイベント・ディスパッチャ１０２に登録する。登録工程は、アプリケーションの登録情報を得る命令を実行し、次に、その登録情報をイベント・ディスパッチャ１０２に通信する命令を実行することにより、実行される。登録情報は、例えば、登録済みのアプリケーション向けの通知をどこに送信するかについてのロケーション（例えば、ネットワーク・アドレス、アプリケーション名）、アプリケーションにレポートされるべき関心対象のイベントを識別するデータを含む。例えば、管理構成要素に含まれる或るアプリケーションが、或る実施形態に含まれるすべてのデータ・ストレージ・システムに関連するすべてのイベントを受信するように登録する。代替として、或る実施形態は、データ・ストレージ・システム管理およびデータ・ストレージ・システム構成のタスクを、複数の管理構成要素の間で分割する。データ・ストレージ・システムの第１の部分は、第１の管理構成要素に割り当てられる。データ・ストレージ・システムの第２の部分は、第２の異なる管理構成要素に割り当てられる。それらの管理構成要素のそれぞれは、データ・ストレージ・システムのそれぞれの部分の各部分に関するすべてのイベントについて通知を受けるアプリケーションとして登録される。１実施形態では、イベントは、いくつかの深刻度カテゴリによって階層に分類される。例えば、１実施形態では、レベル１が、最も深刻であり、レベル３が、最も深刻度の低い、３つの深刻レベルの１つが、各イベントが生じたことに関連付けられる。１実施形態における管理構成要素は、生じる、いずれのレベル３イベントについても、知ることを望まず、レベル１イベントおよびレベル２イベントに関するレポートを受け取るように登録する。イベント通知の、この選択的サブスクリプションを可能にすることにより、イベント・ディスパッチャと登録済みのアプリケーションの間におけるメッセージングのためのネットワーク帯域幅などの、システム・リソースの使用が、アプリケーションの特別な関心対象のメッセージだけを含めるように、最小限に抑えられる。代替として、イベント・ディスパッチャが、以上の選択的登録をしない場合に、イベント・ディスパッチャは、システム内のすべてのイベントについて、登録済みのすべてのアプリケーションに、別の形で通知する。通知を受信すると、登録済みのアプリケーションは、着信する各メッセージを、受信されるにつれてフィルタリングして、着信する各通知が、関心対象であるかどうかを判定する。図４の実施形態では、イベント・ディスパッチャ１０２は、登録情報を使用する選択的イベント通知を介して、以上のフィルタリングを実行する。特定のフィルタリングは、各レジストラントにイベントを送信する、またはレポートすることに関連する費用を被った後に、各アプリケーションによって実行されるのではなく、イベント・ディスパッチャ１０２によって行われる。
【００３７】
本願明細書で説明されるデータ・ストレージ・システムの各システム上で、様々な異なるオペレーティング・システムおよびソフトウェアの任意の１つが実行されていることに、留意されたい。例えば、１実施形態では、データ・ストレージ・システムのそれぞれは、Ｗｉｎｄｏｗｓベースのシステム、ＬＩＮＵＸベースのシステムなどを実行している。
【００３８】
次に図４Ａを参照すると、非同期イベント処理およびディスパッチに関連して、或る実施形態において実行される処理工程の流れ図１５０が示されている。図４Ａの流れ図１５０の処理工程は、図４に関連して以上に説明した処理を全体的に要約することに留意されたい。工程１５２で、デバイス・ドライバの１つまたは複数が、イベントをカーネル・イベント・ハンドラにレポートする。その後、制御は、工程１５４に進み、カーネル・イベント・ハンドラに、ユーザ空間イベント・ディスパッチャにレポートさせる、或る特定の条件がその特定の時点で生じたかどうかを、カーネル・イベント・ハンドラが判定する。イベント・ディスパッチャと通信するようにカーネル・イベント・ハンドラをトリガする特定の１つまたは複数の条件は、各実施形態により異なる。特定の実施については、後段でより詳細に説明する。そのような条件が工程１５４で生じると、制御は工程１５６に進み、カーネル・イベント・ハンドラがユーザ空間で実行されるイベント・ディスパッチャにイベント・レポートを送信する。その後、イベント・ディスパッチャは工程１５８で、登録情報に従って登録済みのアプリケーションにイベントをレポートする。工程１５４でそのイベント・ディスパッチャへのレポートは、その時点で行われるべきではないと判定された場合、制御は工程１６０に進み、次のイベントがデバイス・ドライバによってレポートされるのを待つ。
【００３９】
流れ図１５０の工程は、図４の構成要素を参照してイベント・レポートに関する１つのパスを全体的に説明し、参照される構成要素によって或る時点で実行される１つの特定の機能を識別することに留意されたい。図４の１００のような、或る実施形態における様々な構成要素のそれぞれは、他の処理工程を実行してもよく、同一の工程を繰り返し実行してもよい。例えば、デバイス・ドライバのそれぞれは、非同期イベント・ハンドラが、ユーザ空間でイベント・ディスパッチャ１０２と通信する工程にある可能性がある間に、新たなイベントを非同期イベント・ハンドラに非同期でレポートし続ける。非同期イベント・ハンドラ１０４は、１０６のような他のデバイス・ドライバから通信を受信する別のデバイス・ドライバである。非同期イベント・ハンドラ１０４によって受信されるイベントは、バッファの中、または他のストレージ空間の中でキューに入れられる。非同期イベント・ハンドラ１０４は、イベント・ディスパッチャ１０２が、１つまたは複数の登録済みのアプリケーションにレポートを送出する工程にある間に、イベント・ディスパッチャ１０２にイベントをレポートする。イベント・ディスパッチャ１０２への着信メッセージも、イベント・ディスパッチャ１０２による処理のためにキューに入れられる。
【００４０】
次に図４Ｂを参照すると、示されているのは、イベント・ディスパッチャによる、１つまたは複数の登録済みのアプリケーションへのレポートに関連して、或る実施形態において実行される処理工程の流れ図１７０である。工程１７２で、イベント・ディスパッチャがイベント・レポートを受信する。イベント・レポートは、単一のレポートに一元化される１つまたは複数のデータ・ストレージ・システム・イベントについての情報を含む。工程１７４で、現在のイベントがレポートの中の次のイベントとなるように割り当てられる。工程１７６で、イベント・レポート内のすべてのイベントが処理済みであるかどうかについての判定が行われる。処理済みである場合処理は停止する。さもなければ、制御は工程１７８に進み、イベント・ディスパッチャの最初のレジストラントに関する情報を獲得する。工程１８０で、すべてのレジストラントが処理済みであるかどうかについての判定が行われる。処理済みである場合制御は工程１８８に進み、レポートの中の次のイベントを獲得し、制御は工程１７６に進み、レポートの中の次のイベントを処理することを続ける。工程１８０で、すべてのレジストラントが、現在のイベントに関してまだ処理済みというわけではないという判定が行われた場合、制御は工程１８２に進み、現在のレジストラントが現在のイベントの通知を受信すべきであるかどうかが判定される。受信すべきでない場合、制御は工程１８６に進んで、次のレジストラントを獲得し、処理は工程１８０に進む。そうではなく、工程１８２により、現在のレジストラントが、現在のレジストラントに関する登録情報に従って現在のイベントの通知を受信すべきであると判定された場合、制御は工程１８４に進み、そのイベントをレジストラントにレポートする。その後、工程１８６で、次のレジストラントが獲得される。制御は工程１８０に進む。
【００４１】
一般に、この実施における流れ図１７０の処理は、カーネル・イベント・ハンドラから受信されたイベント・レポートに含まれる各イベントを処理する。各イベントに関して、各レジストラントが、その特定のイベントに関する通知を受信すべきかどうかについての判定が行われる。例えば、工程１８４で示されるように、レジストラントにイベントをレポートすることに関連して、様々な異なる技術の任意の１つが使用されることに留意されたい。イベント・レポートの可能な一元化がかかわる技術がイベントをレジストラントにレポートする際に使用される。例えば、各イベントを異なるメッセージの中で各レジストラントにレポートするのではなく、イベント・ディスパッチャ１０２は、レベル１イベントなどの、或る特定の深刻レベルのすべてのイベントを即時にレポートする。さもなければ、イベント・ディスパッチャ１０２は、クラス２または３のイベントを一元化して、他の基準に従って（例えば、登録の一環として各レジストラントによって指定されることも可能な、所定のレポート期間内に）、それらのイベントをレポートする。以上により、イベント通知およびイベント・レポートに関連して消費され、使用される帯域幅の量がさらに低減される。登録済みのアプリケーションのそれぞれにイベント・レポートを実行することに関連して、イベント・ディスパッチャ１０２によって使用される特定の技術は、各実施形態により異なる。
【００４２】
次に図４Ｃを参照すると、示されているのは、イベント・ディスパッチャによる、１つまたは複数の登録済みのアプリケーションへのイベントのレポートに関連する、別の実施形態の処理工程の流れ図１９０である。１つまたは複数の登録済みのアプリケーション１２０ａ〜１２０ｎにイベントをレポートすることに関連して、或る実施形態は、或る特定の登録済みのアプリケーション向けの用意されているすべてのイベントをひとまとめにして、それらすべてのイベントを単一のレポートの中で送信する。流れ図１９０は、受信されたレポートの中のすべてのイベントが、各レジストラントに関して調べられて、その特定のレジストラントがいずれのイベントに登録しているかが判定される、前段の例を詳細に示す。各レジストラントの関心対象であると受信されたレポートの中で識別されたイベントは、単一のイベント・レジストラント・イベント・レポートに一元化されて、各レジストラントに送信される。以上は、例えば、受信されたレポートの中で識別される各イベントに関して通知が各レジストラントに送信される、図４Ｂの流れ図１７０の処理とは対照的である。図４Ｃを再び参照すると、工程１９０ａで、イベント・ディスパッチャが、イベント・レポートを受信する。工程１９０ｂで、次のレジストラントおよび関連する情報が獲得される。工程１９０ｃで、すべてのレジストラントが処理済みであるかどうかの判定が行われる。処理済みである場合、処理は、停止する。処理済みではない場合、制御は工程１９０ｄに進み、受信されたレポートからの最初のイベントが獲得される。工程１９０ｅで、現在のレジストラントに関するすべてのイベントの処理が完了しているかどうかについての判定が行われる。完了している場合、制御は、工程１９２に進み、レポートがイベントを含む場合、一元化されたイベント・レジストラント・イベント・レポートを送出する。現在の受信されたレポートが、現在のレジストラントが登録している、いずれのイベントも含まず、イベント・レジストラント・イベント・レポートが、全くイベントを含まないことを生じさせる。制御は、次のレジストラントを処理するために工程１９０ｂに進む。工程１９０ｅが、「Ｎｏ」と評価された場合、制御は工程１９２ａに進み、現在のレジストラントが、現在のイベントに登録しているかどうかについての判定が行われる。登録していない場合、制御は工程１９６に進んで、受信されたレポートの中の次のイベントを処理する。登録している場合、制御は工程１９４に進んで、一元化されたイベント・レジストラント・イベント・レポートにそのイベントを追加し、その後、工程１９６で次のイベントを獲得する。制御は、工程１９６から工程１９０ｅに進む。
【００４３】
工程流れ図１９０は、登録済みのアプリケーションへのイベント・レポートのための処理をする流れ図１７０（図４Ｂ）の代替として実行されてもよい。他の諸実施形態は、イベント一元化に関して、本願明細書で説明される以外のレポート技術を使用することが可能である。
【００４４】
図４の構成要素に関連して、様々な異なる構成が可能であることに留意されたい。イベント・ディスパッチャ１０２、非同期イベント・ハンドラ１０４、および１つまたは複数の登録済みのアプリケーションは、同一のシステム上に配置されてもよい。別の構成では、イベント・ディスパッチャ１０２および非同期イベント・ハンドラ１０４は、登録済みのアプリケーション１２０ａ〜１２０ｎの１つまたは複数とは異なるシステム上に配置される。特定の構成は、各実施形態により異なり、以上の構成の他の変種が、当業者には直ちに明白となろう。
【００４５】
また、図４に関連して説明された特定の実施形態は、カーネル空間とユーザ空間の両方で実行される管理構成要素１６の諸要素を含むことにも留意されたい。図４の管理構成要素は、イベント・ディスパッチャ１０２および非同期イベント・ハンドラ１０４を含む。また、或る実施形態は、ユーザ空間でだけ実行される前述の構成要素を使用して実施される。そのようなシステムは、図４に関連して説明した非同期イベント通知技術を使用するが、非同期イベント・ハンドラが、ユーザ空間で実行されるという違いがある。
【００４６】
次に図５を参照すると、示されているのは、ユーザ空間で実行されるように、本願明細書で説明される非同期イベント通知技術を実施することに関連して使用される、特定の構成要素の実施形態２００の実施である。その特定の実施では、イベント・ハンドラおよびディスパッチャ２０４は、例えば、イベント・ディスパッチャ１０２および非同期イベント・ハンドラ１０４によって前に実行されていた諸機能を、単一のソフトウェア構成要素として実行する。代替として、或る実施形態は、図５に関連して示されるように機能を単一の構成要素に一元化するのではなく、複数のソフトウェア構成要素を利用する。実施２００における構成要素の動作は、図４に関連して説明した動作と同様である。イベント生成アプリケーション２０６ａ〜２０６ｎは、例えば、非同期イベントをイベント・ハンドラおよびディスパッチャ２０４にレポートするソフトウェア・エミュレーション・レイヤである。例えば、図４に関連して要素１０６として前記した、異なるデバイス・ドライバではなく、イベント生成アプリケーション２０６ａ〜２０６ｎが、イベントが生じたことをレポートする。カーネル・モードで実行されないイベント生成アプリケーション２０６ａ〜２０６ｎとの通信が生じることは、非同期イベント・ハンドラが、カーネル・モードで実行されなくてもよいことを意味する。したがって、アプリケーション２０６ａ〜２０６ｎからレポートされる非同期イベントを受信するイベント・ハンドラの機能は、ディスパッチャ構成要素と一元化して、単一の構成要素２０４にされる。非同期イベントは、要素２０４にレポートされる。すると、この実施では、ディスパッチ機能も含む要素２０４は、特定のアプリケーション２０２ａおよび２０２ｂに、それらのアプリケーションのそれぞれに関する特定の登録情報に従って、通知を行う。
【００４７】
図５に示されるとおり、ユーザ空間で実行される、そのようなシステムは、例えば、仮想バックアップ・システム、仮想イベント・ハンドラなどに関連して使用される。ユーザ空間で実行される、そのようなシステムは、イベント・レポートに関連して、デバイス・ドライバ以外の構成要素と通信し、カーネル・モードで実行されない構成要素と通信して、本願明細書で説明されるイベント通知技術を実施する。
【００４８】
次に図６を参照すると、示されているのは、本願明細書で説明される非同期イベント通知技術に関連して使用されるシステムに含まれる構成要素の別の実施形態３００である。図６の特定の実施３００では、イベント・ハンドラ３０６は、３０８ａおよび３０８ｂのような、複数のデータ・ストレージ・システムからレポートされたイベントを一元化し、受信する。イベント・ハンドラ３０６は、例えば、データ・ストレージ・システム３０８ａおよび３０８ｂのそれぞれと、イベント・ハンドラ３０６を含む特定の構成要素との間の特定の通信接続が、例えば、ファイバ・チャネルまたはＳＣＳＩ接続である場合、３０８ａと３０８ｂの両方からイベント通知を受信する。つまり、イベント・ハンドラとデータ・ストレージ・システムの間の通信のための或る実施形態において使用される特定の接続は、イベント・ハンドラ３０６が、３０８ａまたは３０８ｂのようなデータ・ストレージ・システム上ではないロケーションに存在する可能性があるかどうかを判定することができる。この実施３００では、イベント・ハンドラは、カーネル空間で実行され、データ・ストレージ・システムのそれぞれと通信して、カーネル空間における、あらゆるレポートされたイベントも受信する。このため、図６の実施３００における特定の構成は、各実施形態の詳細に従って使用される。図６の実施３００の、その他の構成要素は、他の図に関連して、本願明細書の他の箇所で説明されるとおり動作することに留意されたい。つまり、イベント・ハンドラ３０６は、受信されたイベントをイベント・ディスパッチャ３０４にレポートし、すると、ディスパッチャ３０４は、管理ステーション３０２ａ〜３０２ｃのそれぞれのような、１つまたは複数の登録済みのアプリケーションに通知する。
【００４９】
次に図７を参照すると、示されているのは、非同期イベント通知に関連して、データ・ストレージ・システムとともに使用される構成要素の別の実施４００である。実施４００では、データ・ストレージ・システム４０６ａおよび４０６ｂのそれぞれが、例えば、図４の１００に関連して説明されるとおり、ユーザ・モードとカーネル・モードの両方で実行される構成要素を実施することができる。このため、各ストレージ・システム４０６ａおよび４０６ｂは、イベント・ディスパッチャおよび非同期イベント・ハンドラを含む。また、実施４００は、サーバ４０４ａ〜４０４ｃ上にさらなるイベント・ディスパッチャを含む。データ・ストレージ・システムのそれぞれに含まれるイベント・ディスパッチャからイベントを、登録済みのアプリケーション（例えば、管理ステーション４０２ａ〜４０２ｃ）に直接にレポートするのではなく、データ・ストレージ・システムのそれぞれが、サーバ４０４ａ〜４０４ｃの１つまたは複数のサーバ内の別のイベント・ディスパッチャと通信する。図７の実施４００は、本願明細書で説明される非同期イベント通知技術を使用するデータ・ストレージ・システム管理およびイベント・レポートに関連して使用される階層の別のレイヤを示す。前述したとおり、４０２ａ〜４０２ｃのような管理ステーションまたは登録済みのアプリケーションのそれぞれは、１つまたは複数のイベント・ディスパッチャに登録される。しかし、この実施では、アプリケーションが登録されることが可能なイベント・ディスパッチャは、サーバ４０４ａ〜４０４ｃの中に含まれる。管理ステーションのそれぞれに含まれるアプリケーションは、サーバ４０４ａ〜４０４ｃの１つまたは複数のサーバ上の１つまたは複数のイベント・ディスパッチャに登録される。１実施では、各管理ステーションは、イベントの様々な部分に登録することにより、１つまたは複数のサーバ４０４ａ〜４０４ｃ上の１つまたは複数のイベント・ディスパッチャに登録する。例えば、管理ステーション４０２ａは、４０４ａ上のイベント・ディスパッチャに登録して、第１のイベント・セットが生じると、通知を受信する。また、管理ステーション４０４ａは、第２の異なるイベント・セットに関して、サーバ４０４ｂのイベント・ディスパッチャに登録することもできる。したがって、４０４ａおよび４０４ｂに含まれるイベント・ディスパッチャのそれぞれは、それらの特定のイベント登録のそれぞれが生じると、管理ステーション４０２ａに通知する。別の実施として、管理ステーション４０２ａは、１次サーバおよびフェイルオーバ・サーバとして指定された複数のサーバ上の複数のイベント・ディスパッチャに登録する。第１のイベント・ディスパッチャが、１次ディスパッチャとして指定され、第２のイベント・ディスパッチャが、２次イベント・ディスパッチャ、つまり、フェイルオーバ・イベント・ディスパッチャとして指定される。１次ディスパッチャは、例えば、４０４ａのイベント・ディスパッチャである。１次ディスパッチャは、管理ステーション４０２ａに関する特定の登録に従って、すべてのイベントに関するディスパッチャの役割をする。例えば、サーバ４０４ａが、オフラインになった場合、異なるサーバ上の指定された第２の、つまり、フェイルオーバ・イベント・ディスパッチャが、自動的に使用されて、管理ステーション４０２ａが、データ・ストレージ・システム・イベントの通知を受信することをシームレスに継続するようになる。１次ディスパッチャが、特定のサーバにおいて再びオンラインになった場合、イベント・レポートは、１次ディスパッチャで再開される、または続けられる。
【００５０】
以上は、図７の４００で示されるようなシステムにおける非同期イベント通知および非同期イベント・レポートに関連して使用される、いくつかの技術のいくつかの実施に過ぎない。或る実施形態は、複数のレイヤのサーバおよびイベント・ディスパッチャを含むことに留意されたい。
【００５１】
管理ステーションのそれぞれが、１つまたは複数のサーバ上の１つまたは複数のイベント・ディスパッチャに登録することに加えて、データ・ストレージ・システム４０６ａおよび４０６ｂのそれぞれが、サーバ４０４ａ〜４０４ｃの１つまたは複数に登録される。様々なデータ・ストレージ・システム４０６ａ〜４０６ｂのそれぞれからのイベント通知およびイベント・レポートの負荷分散の形態として、様々なデータ・ストレージ・システムが、様々なサーバおよびイベント・ディスパッチャに登録される。その場合、管理ステーションは、いずれの特定のデータ・ストレージ・システムが、いずれのサーバにレポートするかに応じて、特定のイベント・ディスパッチャに登録する。また、或る実施形態は、単一のサーバ上で実行される複数のイベント・ディスパッチャを有することに留意されたい。さらに、或る実施形態は、イベント・ディスパッチャの１つまたは複数が実行されるサーバの１つとして、スイッチを使用する。示される実施の以上、およびその他の変種が、当業者によって認識されよう。
【００５２】
１実施形態では、或る特定の管理ステーション、またはその他のレジストラントが、１次イベント・ディスパッチャおよび２次イベント・ディスパッチャに独立に登録するようにさせるのではなく、２次の、つまり、フェイルオーバのイベント・ディスパッチャおよびサーバが、１次のイベント・ディスパッチャへの登録の結果、自動的に指定される。例えば、管理ステーションが、４０４ｃ上のイベント・ディスパッチャに登録することにより、４０４ｂ上のイベント・ディスパッチャが、２次イベント・ディスパッチャ、つまり、フェイルオーバ・イベント・ディスパッチャとして自動的に割り当てられる。４０４ｃが、停止した、またはオフラインになった場合、管理ステーション４０２ｃは、サーバ４０４ｂ上のイベント・ディスパッチャからレポートを自動的に受信する。このタイプのフェイルオーバを円滑にするため、サーバ上の各イベント・ディスパッチャは、他の１つまたは複数のディスパッチャにも登録して、登録情報を共有する。４０２ｃなどの管理ステーションが、例えば、サーバ４０４ｃのイベント・ディスパッチャに登録すると、登録情報は、指定された２次サーバ、つまり、フェイルオーバ・サーバ４０４ｂと自動的に共有され、したがって、サーバ４０４ｂ上で実行されるイベント・ディスパッチャは、サーバ４０４ｃが、停止した場合、またはそれ以外で利用できなくなった場合、管理ステーション４０２ｃの登録情報にアクセスを有する。
【００５３】
非同期イベント・レポートは、カーネル・モードにおけるデバイス・ドライバ、またはユーザ・モードで実行される他のイベント生成アプリケーション（例えば、図５の２０６のような）によってレポートされるイベントに関して行われる。それらのイベントは、一元化され、ディスパッチされ、その後、１つまたは複数のレジストラントにレポートされる。
【００５４】
次に図８を参照すると、示されているのは、図７の実施４００に含まれる構成要素の一部の間の通信をより詳細に示す実施５００である。図８の実施５００は、４０６ａのようなデータ・ストレージ・システムの構成要素と、４０４ａのような、或る特定のサーバとの間で行われる通信をより詳細に示す。単一のサーバ４０４ａ、および単一のデータ・ストレージ・システム４０６ａだけが、例示の目的で図８の実施５００に含まれる。図７に含まれる他の構成要素は、同様の形で動作する。
【００５５】
データ・ストレージ・システム４０６ａに含まれるのは、イベント・ディスパッチャ５０２、カーネル・イベント・ハンドラもしくはユーザ・イベント・ハンドラ５０４、およびデバイス・ドライバもしくは他のイベント生成アプリケーション５０６である。この実施では、データ・ストレージ・システム４０６ａは、要素５０６の実行モードにより、カーネル・モードまたはユーザ・モードで実行されるイベント・ハンドラを含む。例えば、デバイス・ドライバが、イベントをイベント・ハンドラ５０４にレポートした場合、イベント・ハンドラ５０４は、例えば、図４に関連して示されるカーネル・イベント・ハンドラとして特徴付けられる。イベント生成アプリケーションが、カーネル・モードで実行されるデバイス・ドライバまたは他の構成要素ではなく、ユーザ・モードで実行される場合（例えば、ハードウェア・エミュレーションのためのソフトウェアを使用している場合）、イベント・ハンドラ５０４は、ユーザ・モードで実行されるユーザ・イベント・ハンドラである。図８に示されるとおり、イベント・ハンドラ５０４は、データ・ストレージ・システム上のイベント・ディスパッチャ５０２と通信する。データ・ストレージ・システムのイベント・ディスパッチャ５０２は、矢印５０８で示されるとおり、データ・ストレージ・システム４０６ａが登録されている特定のサーバに、イベントを非同期でレポートする。この実施では、データ・ストレージ・システム４０６ａは、サーバ４０４ａにイベントをレポートするように登録されている。サーバ４０４ａ上のイベント・ディスパッチャ５１０は、イベント・ディスパッチャ５０２によってレポートされたイベントを受信し、矢印５１２で示されるとおり、それらのイベントを、登録済みのアプリケーションに、その後、非同期でレポートする。
【００５６】
図７に示され、図８により詳細に示される実施形態は、２つのイベント・ディスパッチャ構成要素が互いに通信する構成を使用する。他方のディスパッチャから通信を受信する２つのイベント・ディスパッチャの１つは、後に登録済みのアプリケーションにイベントをレポートするトップ・レベル・イベント・ディスパッチャまたは高レベル・イベント・ディスパッチャとして特徴付けられる。図７および図８に関連して示される以上の実施は、データ・ストレージ・システムの非同期イベント通知のために、イベント・ディスパッチャの階層構成を使用していると特徴付けられることに留意されたい。或る実施形態は、イベント・ディスパッチャ間で、図７および図８に関連して示されるより多くのレベルのレポートを含む。
【００５７】
次に図９を参照すると、示されるのは、イベント・サブスクライバまたはレジストラントの登録に関連して格納される情報の例示的な表示６００である。６００に含まれる情報は、例えば、イベント・ディスパッチャによるアクセスのために格納される。イベント・ディスパッチャは、例えば、図４Ｂの流れ図の処理工程に関連して、６００における情報を使用することができる。各レジストラントに関して、エントリが、６００に含められる。各エントリは、イベントに関する登録を完了した結果、完了される。本願明細書で説明されるとおり、レジストラントは、例えば、管理構成要素などのアプリケーションまたは他の構成要素である。６００における各エントリは、フィールド６０２と、フィールド６０４とを含む。フィールド６０２に含まれる情報は、サーバ名、またはその他のアドレス指定、ならびに特定のレジストラントのロケーションを識別するのに必要とされる他の任意の情報を提供する。イベント・レポートが、６０２を使用して識別されたロケーションに送信される。さらに、６００におけるエントリのそれぞれに関連するのが、フィールド６０４に含まれる登録済みのイベント情報である。登録済みのイベント情報６０４には、例えば、特定のレジストラントが通知を受ける特定のイベントを識別するのに使用されるデータが含まれる。６０４からのデータを使用した特定のイベントの指定は、各実施形態により異なる。例えば、或る実施形態は、本願明細書の別の箇所で説明されるとおり、イベントの３レベルの深刻度分類を提供する。６０４に含まれるのは、或るレジストラントに関心対象の特定のデータ・ストレージ・システムまたはデバイスである。レジストラントは、イベントに割り当てられた深刻度分類レベルにより、いずれのイベントを受信するかを識別する。また、或る実施形態は、デバイス・タイプ分類に関する様々なカテゴリのイベントを含む。６０４に含まれる情報は、イベント・ディスパッチャにより、いずれのイベントを各レジストラントにレポートすべきかを見分けるのに使用される。テーブル６００の中に格納される特定の情報は、各実施形態、および特定のサブスクライバの識別に関連して使用される技術、ならびに或る実施形態の範囲内におけるイベントの特定の分類により異なる。
【００５８】
図７および図８に関連して示されるような実施形態は、イベント・ディスパッチャに提供される、いずれのデータ・ストレージ・システムが、特定のイベント・ディスパッチャおよびサーバにレポートするかに関する登録情報も含むことに留意されたい。そのため、このタイプの情報、および特定のサブスクライバに関する情報は、図７および図８に関連して示されるような実施形態において、サーバ４０４ａ〜４０４ｃの各サーバ上にも格納される。いずれのデータ・ストレージ・システムが、いずれのサーバにレポートするかに関する前述の情報は、いずれのイベント・ディスパッチャに登録するかを決定するアプリケーションに関連して使用される。
【００５９】
次に図１０を参照すると、イベント登録に関連して、或る実施形態において実行されることが可能な処理工程の流れ図７００が示されている。特に、７００の流れ図工程は、図７および図８に関連して、登録のための処理工程を示し、要約する。工程７０２で、データ・ストレージ・システムまたはデータ・ストレージ・システム群が、１つまたは複数のサーバ上の特定のイベント・ディスパッチャに登録される。工程７０２は、例えば、データ・ストレージ・システムのそれぞれが、４０４ａ〜４０４ｃのようなサーバの１つまたは複数にレポートするように指定されることを含む。工程７０４で、アプリケーション、管理ステーション、およびその他のサブスクライバが、４０４ａ〜４０４ｃのようなサーバ上のイベント・ディスパッチャに登録して、関心対象の特定のイベントに登録する。工程７０６で、サーバ上のイベント・ディスパッチャが、他のサーバ上の他のイベント・ディスパッチャに登録して、情報を共有する。登録情報を共有することの１つの例示的な用途は、１次イベント・ディスパッチャ、およびフェイルオーバ・イベント・ディスパッチャもしくは２次イベント・ディスパッチャの使用に関連して、本願明細書の別の箇所で説明した。
【００６０】
次に説明するのは、イベント一元化およびイベント・レポートのためにイベント・ハンドラ内部で実施される様々な技術である。前述したとおり、任意の１つまたは複数の条件および基準が、例えば、カーネル・イベント・ハンドラまたはユーザ・イベント・ハンドラが、イベント・ディスパッチャにレポートする際に、イベント一元化およびイベント・レポートに関連して使用される。やはり本願明細書で説明されるとおり、そのような一元化は、多くのイベントを生成する多くのデータ・ストレージ・システムを利用するシステム内で、パフォーマンスおよびイベント処理の向上をもたらす。単一の物理的イベントに関連して、複数のイベント通知が行われることに留意されたい。
【００６１】
イベント・ハンドラは、イベント・データ一元化に関連して、様々な異なる技術のいずれか１つを使用する。例えば、イベント・ハンドラは、特定の深刻レベルのイベントが受信されると、そのイベントを、他の一元化基準とは無関係にレポートする。或る特定のイベントが、所定の深刻レベルではない場合、イベント・ハンドラは、一元化されたイベント・レポートの中に含めるためにイベントを格納する。何らかの後の時点で、保存された、または一元化されたイベントも、イベント・ハンドラからイベント・ディスパッチャにレポートされる。これは、例えば、或る特定の時間が経過した際、保存された、または一元化されたイベントを保持するバッファが、満杯になった際などに行われる。このため、イベント・ハンドラは、例えば、或る特定の優先レベルの重大なイベントが、一元化されたレポートの中でレポートされる、他のそれほど重大でないイベントより適時にレポートされるように、レポートすることに関連するポリシーおよび技術を実施する。一括された、または一元化されたイベントは、その後、例えば、データの量および／または時間などの、他の任意の１つまたは複数の条件に従って、イベント・ハンドラによってレポートされる。やはり本願明細書で説明されるとおり、特定のイベントの分類は、例えば、或る実施形態において使用されるそれぞれの特定のデバイス、および他の分類により異なること。
【００６２】
或る実施形態は、カーネル・イベント・ハンドラの実施に関連して、様々な異なる技術のいずれか１つを使用する。或る実施形態は、ユーザが、イベント・ハンドラによってイベント一元化に関連して使用される特定の基準を定義することを可能にする。或る実施形態は、イベント一元化処理が、イベント・ハンドラによって実行される際に呼び出される、指定されるべきユーザ定義関数のためのインタフェースを提供する。或る特定のデータ・ストレージ・システムの中に含まれる定義されたイベント一元化技術セットと一緒に使用するための、ユーザ定義イベント一元化処理が、或る実施形態に含まれる。例えば、或る実施形態は、イベント一元化のためのユーザ定義関数を、そのような関数が定義されている場合、呼び出す。そうではなく、そのようなユーザ定義関数が指定されていない場合、ベンダまたはシステムによって供給される、デフォルトのカーネル・イベント・ハンドラまたはユーザ・イベント・ハンドラが、呼び出される。
【００６３】
例えば、図７および図８に示される、或る実施形態における登録に関連して、データ・ストレージ・システムとサブスクライバの両方による特定のディスパッチャへの登録は、或る実施形態で利用される負荷分散技術または負荷分散基準に従って実行される。例えば、イベント・ディスパッチャおよび／またはサーバの負荷情報が、異なるサーバの間で様々なレジストラントにレポートを配信することに関連して共有され、使用される。そのような負荷分散は、特定のレジストラントが知ることなしに実行され、登録は、それに相応して他のディスパッチャと共有される。負荷分散は、或る実施形態において指定される様々な異なる静的基準および／または動的基準のいずれか１つに従って実行される。そのような基準には、例えば、様々なサーバのそれぞれによってイベントがレポートされるレジストラントの数、将来のイベント・レポートを配信する各ディスパッチャおよび／または各サーバによる、以前のイベント・レポートについての履歴情報の検査などが含まれる。
【００６４】
イベント・ハンドラ５０４とイベント・ディスパッチャ５０２の間で、各イベントとともにレポートされる特定の情報、および様々なレジストラントのそれぞれにレポートされる特定の情報は、各実施形態により、異なることに留意されたい。レポートされる特定の情報は、例えば、イベントの深刻度により、異なる。重大な誤り、または決定的な誤りが生じた場合、さらなる情報が、初期メッセージとともに、レポートされる、または別の形でログ記録されて、他の場所に格納される。
【００６５】
以上、非同期イベント通知を使用するデータ・ストレージ・システム管理に関連して使用される諸技術を説明した。非同期イベント通知は、或るイベントが、イベント・ハンドラにレポートされると行われる。すると、１実施形態では、イベント・ハンドラのそれぞれが、イベントをイベント・ディスパッチャにレポートする。最終的に、イベント・ディスパッチャは、イベントが生じたことを、１つまたは複数のレジストラントに、登録情報に従って、非同期でレポートする。
【００６６】
当業者は、説明される諸実施形態の他の変種で、例えば、図７および図８に関連して本願明細書で示されるのとは異なるレベルの数を使用して、それらの諸技術を実施してもよいことに留意されたい。さらに、カーネル・モード／空間およびユーザ・モード／空間などの詳細が、様々な実行レベルまたは実行モードを指定するのに使用されてきた。本願明細書の諸技術を利用する他の諸実施形態は、本願明細書で説明される「ユーザ」および「カーネル」とは異なる指定を含むことが可能である。
【００６７】
本発明を、詳細に示され、説明される好ましい諸実施形態に関連して開示してきたが、それらの実施形態の変形および改良が、当業者には容易に明白となろう。したがって、本発明の趣旨および範囲は、添付の特許請求の範囲だけによって限定されるべきである。
【図面の簡単な説明】
【００６８】
【図１】本願明細書で説明される諸技術を利用するコンピュータ・システムの或る実施形態の実施を示す図。
【図２Ａ】データ・ストレージ・システムの或る実施形態の実施を示す図。
【図２Ｂ】図２Ａのデータ・ストレージ・システムの１実施形態に含まれるディレクタとメモリの間の論理内部通信を示す図。
【図３】本願明細書で説明される諸技術を利用するコンピュータ・システムの実施形態のより詳細な実施を示す図。
【図４】本願明細書で説明される非同期イベント通知技術を利用する或る実施形態に含まれる構成要素の例を示す図。
【図４Ａ】非同期イベント処理およびディスパッチに関連して、或る実施形態において実行される処理工程の流れ図。
【図４Ｂ】イベント・ディスパッチャによってイベントをレポートすることに関連して、或る実施形態で実行される処理工程の流れ図。
【図４Ｃ】イベント・ディスパッチャによってイベントをレポートすることに関連して、別の実施形態で実行される処理工程の流れ図。
【図５】ユーザ空間で実行される非同期イベント通知技術に関連して使用される構成要素の或る実施形態の実施を示す図。
【図６】非同期イベント通知技術とともに使用するためにシステムに含まれる構成要素の別の実施形態の実施を示す図。
【図７】非同期イベント通知技術とともに使用するためにシステムに含まれる構成要素の別の実施形態の実施を示す図。
【図８】図７に含まれる構成要素間のより詳細な通信を示す例を示す図。
【図９】サブスクライバの登録に関連して格納される情報の例を表す図。
【図１０】イベント登録に関連して、或る実施形態において実行される処理工程の流れ図。
【図１】
2008535054.tif 000003
【図２Ａ】
2008535054.tif 000004
【図２Ｂ】
2008535054.tif 000005
【図３】
2008535054.tif 000006
【図４】
2008535054.tif 000007
【図４Ａ】
2008535054.tif 000008
【図４Ｂ】
2008535054.tif 000009
【図４Ｃ】
2008535054.tif 000010
【図５】
2008535054.tif 000011
【図６】
2008535054.tif 000012
【図７】
2008535054.tif 000013
【図８】
2008535054.tif 000014
【図９】
2008535054.tif 000015
【図１０】
2008535054.tif 000016
【国際調査報告】
2008535054.tif 000017
2008535054.tif 000018
2008535054.tif 000019