(57)【要約】【課題】レコードを修正するオペレーションの一部としてそのレコードを検証するための方法、システム、およびプログラムを提供すること。【解決手段】レコードが値と一致しているかどうかを判定するための検索要求が受信される。第１のコンポーネントが、レコードが値と一致しているかどうかを判定するための検索要求を実行する。第１のコンポーネントは、レコードが値と一致しているかどうかを判定するための検索要求を実行するために、その検索要求を実行しなかった第２のコンポーネントへ検証要求を送信する。第１および第２のコンポーネントが検索要求を実行した結果が記録される。【選択図】図１
2008090839.tif 000002
【特許請求の範囲】
【請求項１】
レコードが値と一致しているかどうかを判定するための検索要求を受信するステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検索要求を第１のコンポーネントによって実行するステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検索要求を実行するために、前記第１のコンポーネントによって、前記検索要求を実行しなかった第２のコンポーネントへ検証要求を送信するステップと、
前記第１および第２のコンポーネントが前記検索要求を実行した結果を記録するステップとを含む方法。
【請求項２】
前記レコードが前記値と一致していると前記第２のコンポーネントが判定したことに応答して、前記第１のコンポーネントがエラー・モードにあることを示すステップであって、前記エラー・モードにおいては前記第１のコンポーネントがオペレーションから隔離されているステップをさらに含む請求項１に記載の方法。
【請求項３】
前記第２のコンポーネントへの前記検証要求が、前記値および前記レコードのアドレスのためのエラー・チェッキング・コードを含む方法であって、
前記第１のコンポーネントによって使用された前記レコード・アドレスおよび前記値を確認するための前記エラー・チェッキング・コードを使用したエラー・チェッキング・オペレーションを前記第２のコンポーネントによって実行するステップと、
前記エラー・チェッキング・コードが前記レコード・アドレスおよび前記値を確認しないと前記第２のコンポーネントが判定したことに応答して、前記第１のコンポーネントがエラー・モードにあることを示すステップとをさらに含む請求項２に記載の方法。
【請求項４】
前記レコードが前記値と一致していない場合に、前記検索要求に関連付けられたフラグが設定されているかどうかを判定するステップであって、前記フラグが設定されていると判定されたことに応答してのみ、前記検証要求が前記第２のコンポーネントへ送信されるステップをさらに含む請求項１に記載の方法。
【請求項５】
前記検索要求が、前記レコードに関連付けられているデータを更新するためのアトミック・オペレーションの一部であることを、設定されている前記フラグが示す請求項４に記載の方法。
【請求項６】
前記検証要求を前記第２のコンポーネントへ送信するように示すように前記フラグが設定されていないと判定されたことに応答して、前記第１のコンポーネントが前記検索要求を実行した結果を記録するステップをさらに含む請求項４に記載の方法。
【請求項７】
前記検索されるレコードが、あるホストが依然としてホストの管理されているグループの一部であるかどうかを判定するために前記検索が実行される結合されたデータ・セット・レコードと、前記レコードを修正するオペレーションの最中に前記レコードのための前記値が変化していないかどうかを判定するために前記検索が実行されるボリューム目次レコードとを含むレコードのセットの一部である請求項１に記載の方法。
【請求項８】
前記第１のコンポーネントがネットワーク・アダプタを含み、前記第２のコンポーネントがプロセッサ・コンプレックスを含む請求項１に記載の方法。
【請求項９】
あるシステムによって管理されているストレージ内のレコードを修正するオペレーションを開始するステップと、
前記オペレーション中に他のプロセスが前記レコードを修正できないようにロックを設定するためのコマンドを前記システムへ送信するステップと、
前記ストレージから前記レコードを読み取って、前記レコードのための値を割り出すステップと、
修正する前記レコードが前記割り出された値を有するかどうかを判定するための前記システムへの検索要求を作成するステップであって、前記システムが、第１のコンポーネントを使用して前記検索要求を実行するステップと、
前記レコードが前記値と一致していないと前記システムが判定したことに応答して、前記第１のコンポーネントによる前記検索要求の前記実行に関与しなかった第２のコンポーネントを使用して前記検索要求を再実行するための第２のチェッキング・オペレーションを前記システムに実行させるためのフラグを設定するステップと、
前記検索要求を前記システムへ送信するステップとを含む方法。
【請求項１０】
前記フラグが、前記検索要求用のコマンド内に含めて送信される請求項９に記載の方法。
【請求項１１】
前記レコードが前記値と一致したかどうかを示す前記検索要求からの結果を受信するステップと、
前記レコードが前記値と一致しなかったことを示す前記結果に応答して、前記レコードを修正する前記オペレーションを継続するステップと、
前記レコードが前記値と一致したことを示す前記結果に応答して、前記レコードを修正する前記オペレーションを終了するステップとをさらに含む請求項９に記載の方法。
【請求項１２】
前記結果が、前記第１のコンポーネント内のエラーのために前記レコードが前記値と一致しなかったのかどうかを示す方法であって、
前記エラーが前記第１のコンポーネント内のエラーのためではなかったことを示す結果に応答して、前記オペレーションを開始した、および前記検索要求を作成したコンポーネントのエラー・チェッキングを実行するステップをさらに含む請求項９に記載の方法。
【請求項１３】
第１のコンポーネントと、
第２のコンポーネントと、
オペレーションが実施されるようにするために少なくとも前記第１および第２のコンポーネントによって実行されるコードを実装しているデバイスとを含むシステムであって、前記オペレーションが、
レコードが値と一致しているかどうかを判定するための検索要求を受信するステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検索要求を前記第１のコンポーネントによって実行するステップと、
前記第１のコンポーネントによって、前記検索要求を実行しなかった前記第２のコンポーネントへ検証要求を送信するステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検証要求に応答して、前記第２のコンポーネントによって前記検索要求を実行するステップと、
前記第１および第２のコンポーネントが前記検索要求を実行した結果を記録するステップとを含むシステム。
【請求項１４】
前記オペレーションが、
前記レコードが前記値と一致していると前記第２のコンポーネントが判定したことに応答して、前記第１のコンポーネントがエラー・モードにあることを示すステップであって、前記エラー・モードにおいては前記第１のコンポーネントがオペレーションから隔離されているステップをさらに含む請求項１３に記載のシステム。
【請求項１５】
前記第２のコンポーネントへの前記検証要求が、前記値および前記レコードのアドレスのためのエラー・チェッキング・コードを含み、前記オペレーションが、
前記第１のコンポーネントによって使用された前記レコード・アドレスおよび前記値を確認するための前記エラー・チェッキング・コードを使用したエラー・チェッキング・オペレーションを、前記検証要求に応答して前記第２のコンポーネントによって実行するステップと、
前記エラー・チェッキング・コードが前記レコード・アドレスおよび前記値を確認しないと前記第２のコンポーネントが判定したことに応答して、前記第１のコンポーネントがエラー・モードにあることを示すステップとをさらに含む請求項１４に記載のシステム。
【請求項１６】
前記レコードが前記値と一致していない場合に、前記検索要求に関連付けられたフラグが設定されているかどうかを判定するステップであって、前記フラグが設定されていると判定されたことに応答してのみ、前記検証要求が前記第２のコンポーネントへ送信されるステップをさらに含む請求項１３に記載のシステム。
【請求項１７】
前記検索要求が、前記レコードに関連付けられているデータを更新するためのアトミック・オペレーションの一部であることを、設定されている前記フラグが示す請求項１６に記載のシステム。
【請求項１８】
前記オペレーションが、
前記検証要求を前記第２のコンポーネントへ送信するように示すように前記フラグが設定されていないと判定されたことに応答して、前記第１のコンポーネントが前記検索要求を実行した結果を記録するステップをさらに含む請求項１６に記載のシステム。
【請求項１９】
前記検索されるレコードが、あるホストが依然としてホストの管理されているグループの一部であるかどうかを判定するために前記検索が実行される結合されたデータ・セット・レコードと、前記レコードを修正するオペレーションの最中に前記レコードのための前記値が変化していないかどうかを判定するために前記検索が実行されるボリューム目次レコードとを含むレコードのセットの一部である請求項１３に記載のシステム。
【請求項２０】
前記第１のコンポーネントがネットワーク・アダプタを含み、前記第２のコンポーネントがプロセッサ・コンプレックスを含む請求項１３に記載のシステム。
【請求項２１】
前記デバイスが、コンピュータ可読メモリとハードウェア・デバイスとを含むデバイスのセットの少なくとも１つの部分である請求項１３に記載のシステム。
【請求項２２】
第１および第２のコンポーネントを有する、およびストレージを管理するサーバと通信状態にあるシステムであって、
オペレーションが実施されるようにするために実行されるコードを実装しているデバイスを含み、前記オペレーションが、
前記サーバによって管理されている前記ストレージ内のレコードを修正するオペレーションを開始するステップと、
前記オペレーション中に他のプロセスが前記レコードを修正できないようにロックを設定するためのコマンドを前記サーバへ送信するステップと、
前記ストレージから前記レコードを読み取って、前記レコードのための値を割り出すステップと、
修正する前記レコードが前記割り出された値を有するかどうかを判定するための前記サーバへの検索要求を作成するステップであって、前記サーバが、前記第１のコンポーネントを使用して前記検索要求を実行するステップと、
前記レコードが前記値と一致していないと前記サーバが判定したことに応答して、前記第１のコンポーネントによる前記検索要求の前記実行に関与しなかった前記第２のコンポーネントを使用して前記検索要求を再実行するための第２のチェッキング・オペレーションを前記サーバに実行させるためのフラグを設定するステップと、
前記検索要求を前記サーバへ送信するステップとを含むシステム。
【請求項２３】
第１のコンポーネントおよび第２のコンポーネントに関するオペレーションを引き起こすためにコンピュータに
レコードが値と一致しているかどうかを判定するための検索要求を受信するステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検索要求を前記第１のコンポーネントに実行させるステップと、
前記レコードが前記値と一致しているかどうかを判定するための前記検索要求を実行するために、前記第１のコンポーネントに、前記検索要求を実行しなかった前記第２のコンポーネントへ検証要求を送信させるステップと、
前記第１および第２のコンポーネントが前記検索要求を実行した結果を記録するステップと、
を実行させるプログラム。
【請求項２４】
前記オペレーションが、
前記レコードが前記値と一致していると前記第２のコンポーネントが判定したことに応答して、前記第１のコンポーネントがエラー・モードにあることを示すステップであって、前記エラー・モードにおいては前記第１のコンポーネントがオペレーションから隔離されているステップをさらに含む請求項２３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レコードを修正するオペレーションの一部としてそのレコードを検証するための方法、システム、および製品に関する。
【背景技術】
【０００２】
特定のコンピューティング環境においては、複数のホスト・システムは、１つまたは複数の論理パスを通じて相互接続されたハード・ディスク・ドライブなどのストレージ・デバイスへのアクセスを提供する複数のコントロール・ユニット（ＣＵ）（ストレージ・コントローラ、ストレージ・サブシステム、エンタープライズ・ストレージ・サーバ（enterprise storage server）などとしても知られている）と通信することができる。それらの相互接続されたドライブは、ＤＡＳＤ（DirectAccess Storage Device）、ＲＡＩＤ（Redundant Array of Independent Disks）、ＪＢＯＤ（Just aBunch of Disks）などとして構成することができる。コントロール・ユニットは、１つまたは複数のロジカル・サブシステム（logicalsubsystem）（ＬＳＳ）を構成することができ、その場合には、それぞれのＬＳＳは、複数のボリュームを含むように構成される。
【０００３】
特定の状況においては、ホスト・システムは、コントロール・ユニットによって管理されているレコードのうちで、ロックが得られなければならないレコードを修正する必要が生じる場合がある。そのレコードを修正する一部として、ホストは、修正するレコードを、修正オペレーションが開始した時点でのそのレコードの値と比較して、そのレコード上のロックにもかかわらずに値が変化しているかどうかを判定する作業をコントロール・ユニットに行わせるために、そのホスト内のチャネル・サブシステム・プログラムを通じて、検索コマンドを発行することができる。レコードの値が変化していないことを検索の応答が示している場合には、チャネル・サブシステム・プログラムは、コントロール・ユニットへ送信する次のチャネル指令語に進んで、ロックされているレコードまたは他のデータ・オブジェクトの修正を実行することができる。レコードの値が変化している場合、すなわちレコードが検索値と一致していない場合には、この不一致は、コントロール・ユニットまたはホスト内のハードウェアまたはソフトウェアあるいはその両方の問題を示している可能性がある。このような場合には、チャネル・サブシステム・プログラムは、エラー処理モードへと進み、レコードの修正は進めない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
当技術分野においては、アトミック・オペレーション（atomic operation）を処理するための改良された技術が必要とされている。
【課題を解決するための手段】
【０００５】
提供されるのは、レコードを修正するオペレーションの一部としてそのレコードを検証するための方法、システム、および製品である。レコードが値と一致しているかどうかを判定するための検索要求が受信される。第１のコンポーネントが、レコードが値と一致しているかどうかを判定するための検索要求を実行する。第１のコンポーネントは、レコードが値と一致しているかどうかを判定するための検索要求を実行するために、その検索要求を実行しなかった第２のコンポーネントへ検証要求を送信する。第１および第２のコンポーネントが検索要求を実行した結果が記録される。
【０００６】
さらなる実施形態においては、レコードが値と一致していると第２のコンポーネントが判定したことに応答して、第１のコンポーネントがエラー・モードにあることが示され、そのエラー・モードにおいては、第１のコンポーネントは、オペレーションから隔離されている。
【０００７】
さらなる実施形態においては、第２のコンポーネントへの検証要求は、値およびレコードのアドレスのためのエラー・チェッキング・コードを含む。第２のコンポーネントは、第１のコンポーネントによって使用されたレコード・アドレスおよび値を確認するためのエラー・チェッキング・コードを使用したエラー・チェッキング・オペレーションをさらに実行する。エラー・チェッキング・コードがレコード・アドレスおよび値を確認しないと第２のコンポーネントが判定したことに応答して、第１のコンポーネントがエラー・モードにあることが示される。
【０００８】
さらなる実施形態においては、レコードが値と一致していない場合に、検索要求に関連付けられたフラグが設定されているかどうかについて判定が行われ、フラグが設定されていると判定されたことに応答してのみ、検証要求が第２のコンポーネントへ送信される。
【０００９】
さらなる実施形態においては、設定されているフラグは、検索要求が、レコードに関連付けられているデータを更新するためのアトミック・オペレーションの一部であることを示す。
【００１０】
さらなる実施形態においては、検証要求を第２のコンポーネントへ送信するように示すようにフラグが設定されていないと判定されたことに応答して、第１のコンポーネントが検索要求を実行した結果が記録される。
【００１１】
さらなる実施形態においては、検索されるレコードは、あるホストが依然としてホストの管理されているグループの一部であるかどうかを判定するために検索が実行される結合されたデータ・セット・レコードと、レコードを修正するオペレーションの最中にそのレコードのための値が変化していないかどうかを判定するために検索が実行されるボリューム目次レコード（volume table of contents record）とを含むレコードのセットの一部である。
【００１２】
さらなる実施形態においては、第１のコンポーネントはネットワーク・アダプタを含み、第２のコンポーネントはプロセッサ・コンプレックス（processor complex）を含む。
【００１３】
さらに提供されるのは、あるシステムによって管理されているストレージ内のレコードを修正するオペレーションを開始する方法、システム、および製品である。オペレーション中に他のプロセスがレコードを修正できないようにロックを設定するためのコマンドが、システムへ送信される。ストレージからレコードが読み取られて、そのレコードのための値が割り出される。修正するレコードがその割り出された値を有するかどうかを判定するためのシステムへの検索要求が作成され、システムは、第１のコンポーネントを使用してその検索要求を実行する。レコードが値と一致していないとシステムが判定したことに応答して、第１のコンポーネントによる検索要求の実行に関与しなかった第２のコンポーネントを使用して検索要求を再実行するための第２のチェッキング・オペレーションをシステムに実行させるためのフラグが設定される。検索要求は、システムへ送信される。
【００１４】
さらなる実施形態においては、フラグは、検索要求用のコマンド内に含めて送信される。
【００１５】
さらなる実施形態においては、レコードが値と一致したかどうかを示す検索要求からの結果が受信される。レコードが値と一致しなかったことを示す結果に応答して、レコードを修正するオペレーションが継続される。レコードが値と一致したことを示す結果に応答して、レコードを修正するオペレーションが終了される。
【００１６】
さらなる実施形態においては、結果は、第１のコンポーネント内のエラーのためにレコードが値と一致しなかったのかどうかを示す。エラーが第１のコンポーネント内のエラーのためではなかったことを示す結果に応答して、オペレーションを開始した、および検索要求を作成したコンポーネントのエラー・チェッキングが実行される。
【発明を実施するための最良の形態】
【００１７】
図１は、実施形態を実装することができるコンピューティング環境を示している。１つまたは複数のホスト２（１つだけが図示されている）は、レコード８を有するストレージ６へのアクセスを管理するサーバ４と通信状態にある。ホスト２は、ストレージ６内のレコード８にアクセスするためにサーバ４へ送信するためのＩ／Ｏ要求を作成するオペレーティング・システム１０を含む。サーバ４は、ストレージ６へのＩ／Ｏ要求を管理するためのＩ／Ｏ（Input/Output）マネージャー１２を含む。サーバ４は、ストレージ６からのレコード８およびデータをメモリ１４内に一時的に格納することができる。サーバ４はまた、図示されている第１のコンポーネント１６および第２のコンポーネント１８など、複数のコンポーネントを含む。第１のコンポーネント１６および第２のコンポーネント１８は、ネットワーク・アダプタ、処理コンプレックス（processingcomplex）、コントローラ、ブリッジ、コンピュータ・プログラムなど、ストレージ６に関するＩ／Ｏ関連の要求を実行できるハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を含むことができる。
【００１８】
図２は、レコード８を修正するオペレーションの一部として、その修正を実行する前に修正オペレーション中にレコード８の値が変化していないことを確認するためにホスト２がサーバ４へ送信できる検索コマンド５０の一実施形態を示している。この修正は、対象のレコード８を更新すること、または削除することを含むことができる。検索コマンド５０は、検索要求を指定する検索コマンド・コード５２と、その検索要求が、レコード８を更新したりチェックしたりしてそのレコード８が変化しているかどうかを判定するオペレーションなど、アトミック・オペレーションの一部であることをサーバ４に示すアトミック・フラグ（atomic flag）５４と、修正するレコード８を識別するレコード・アドレス５６と、識別されたレコード８に関して確認する値を示す検索値５８と、ＣＲＣ（cyclicalredundancy check）コードなど、レコード・アドレス５６および検索値５８のためのエラー・チェッキング・コード６０とを含む。一実施形態においては、エラー・チェッキング・コード６０は、検索要求５０がカプセル化されている送信パケットと共に含まれているエラー・チェッキング・コードを含むことができる。たとえばエラー・チェッキング・コード６０は、送信の内容を確認するために使用される検索要求を送信するネットワーク・プロトコル・ドライバによって作成することができる。図２の実施形態においては、アトミック・フラグ５４は、検索コマンド５０内に含まれる。代替実施形態においては、アトミック・フラグ５４は、検索コマンド５０とは別にサーバ４へ伝達することができる。
【００１９】
図３は、ストレージ６内のレコード８を修正するオペレーションを実行するためにホスト・オペレーティング・システム１０または他の何らかのプログラムによって実行されるオペレーションの一実施形態を示している。レコード８を修正するオペレーションを（ブロック１００において）開始すると、オペレーティング・システム１０は、そのオペレーション中に他のプロセスがそのレコードを修正できないようにロックを設定するためのコマンドを（ブロック１０２において）サーバ４へ送信する。オペレーティング・システム１０は、（ブロック１０４において）ストレージからレコード８を読み取って、そのレコード８のための値を割り出す。レコード８は、サーバ・メモリ１４から戻すことができる。オペレーティング・システム１０は、修正するレコード８が、割り出された値を有するかどうか、すなわちそのレコードの値が、ロックにもかかわらずにオペレーションの開始以降に変化しているかどうかを判定するための検索要求５０を（ブロック１０６において）作成する。レコードが変化している場合には、これは、サーバ４またはホスト２にハードウェアまたはソフトウェアの問題があるかもしれないということを示している。フラグ５４は、レコード８が値と一致していないとサーバ４が判定した場合には、第１のコンポーネント１６による検索要求の実行には関与しなかった第２のコンポーネント１８を使用して検索要求を再実行する第２のチェッキング・オペレーションをサーバ４に実行させるように（ブロック１０８において）設定される。これによって、サーバ４は、レコードと値とにおける判定された不一致が、最初の検索コマンド５０を実行した第１のコンポーネント１６内のエラーの結果かどうかをチェックすることができる。オペレーティング・システム１０は、実行するための検索コマンド５０を（ブロック１１０において）サーバ４へ送信する。
【００２０】
図４は、ホスト２からの検索コマンド５０を処理するために第１のコンポーネント１６および第２のコンポーネント１８によって実行されるオペレーションの一実施形態を示している。レコード５６が値５８と一致しているかどうかを判定するための検索要求５０を（ブロック１５０において）受信すると、第１のコンポーネント１６（たとえば、アダプタや、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方）は、レコード・アドレス５６におけるレコードが検索値５８と一致しているかどうかを判定するための検索要求を（ブロック１５２において）実行する。（ブロック１５４において）レコードが値５８と一致している場合には、第１のコンポーネント１６は、検索が一致したというステータスを（ブロック１５６において）ホスト２へ返す。（ブロック１５４において）レコードが値と一致しなかった場合には、第１のコンポーネント１６は、検索要求５０が、たった今チェックしたレコード８を修正するオペレーションなどのアトミック・オペレーションの一部であることを示すために、その検索要求５０に関連付けられているアトミック・フラグ５４が設定されているかどうかを（ブロック１５８において）判定する。アトミック・オペレーションを示すためにアトミック・フラグ５４が設定されていない場合には、第１のコンポーネント１６は、レコードが値５８と一致していないことを示すメッセージを（ブロック１６０において）返す。
【００２１】
（ブロック１５８において）アトミック・フラグ５４が設定されている場合には、第１のコンポーネント１６は、レコードが値と一致していないかどうかを確認するための検索要求を再実行するために、その検索要求を実行しなかった（あるいは、その検索要求の処理に関与しなかった）第２のコンポーネント１８（たとえば、プロセッサ・コンプレックスや、他のハードウェアまたはソフトウェアあるいはその両方）へ（ブロック１６２において）検証要求を送信する。第１のコンポーネント１６から第２のコンポーネント１８への検証要求は、第１のコンポーネント１６がその検索において使用したレコード・アドレス５６および検索値５８を提供することができる。第２のコンポーネント１８は、第１のコンポーネント１６によって使用されたレコード・アドレスおよび値を確認するために第１のコンポーネント１６へ送信された検索要求９０と共に提供されたエラー・チェッキング・コード６０を（ブロック１６４において）使用する。上述のように、エラー・チェッキング・コード６０は、ネットワーク伝送プロトコル・ドライバによって計算されて、ホスト２からサーバ４へ送信された検索コマンドをカプセル化している送信パッケージ内に含まれているエラー・チェッキング・コードを含むことができる。第１のコンポーネント１６によって使用されたレコード・アドレスおよび値が（ブロック１６６において）確認された場合には、第１のコンポーネント１６は、正しい情報を使用したことになり、第２のコンポーネント１８は、提供されたレコード・アドレスにおけるレコードが、提供された値と一致しているかどうかを（ブロック１６８において）判定する。（ブロック１６８において）一致がない場合には、第１のコンポーネント１６は、一致がないことを正しく計算したことになり、第２のコンポーネント１８は、ハードウェア用のエラー・チェッキング情報および検索結果を記録し、レコードが一致していないこと、およびサーバ・ハードウェアが正しく機能していることを示すメッセージを（ブロック１７０において）返す。
【００２２】
（ブロック１６８において）一致がある場合、すなわち第２のコンポーネント１８が、第１のコンポーネント１６とは異なる結果を得た場合には、第２のコンポーネント１８は、エラー・チェッキング情報および検索結果を記録し、レコードが検索値５８と一致していることを示すメッセージを（ブロック１７２において）返す。第２のコンポーネント１８によって判定された異なる結果は、予想される結果、すなわちレコードが値と一致しているという結果とは異なる結果を判定した第１のコンポーネント１６のハードウェアまたはロジックあるいはその両方に何らかの問題がある可能性が高いということを示している。このような場合には、第２のコンポーネント１８は、第１のコンポーネント１６がエラー・モードにあり、第１のコンポーネント１６がオペレーションから隔離されている可能性もあるということを（ブロック１７４において）示す。複数のアダプタなど、第１のコンポーネント１６の余分なインスタンスがある場合には、第１のコンポーネント１６が隔離されても、サーバ４のオペレーションが混乱することはない。
【００２３】
（ブロック１６６において）第２のコンポーネント１８が、エラー・チェッキング・コード６０を使用してレコード・アドレスおよび値を確認しない場合には、第１のコンポーネント１６は、ホスト２によって送信されたレコード・アドレス５６または検索値５８とは異なる、第２のコンポーネント１８に提供されたレコード・アドレスまたは検索値を使用したため、正しく機能していない可能性がある。このような場合には、第２のコンポーネント１８は、ブロック１７４へ進んで、第１のコンポーネント１６をオペレーションから隔離する。
【００２４】
第１のコンポーネント１６および第２のコンポーネント１８によって実行されるものとして説明したオペレーションの一部は、サーバ４内のＩ／Ｏマネージャー１２または他のコンポーネントによって実行することができる。
【００２５】
図５は、検索コマンド５０に応答してサーバ４から受信した結果を処理するためにオペレーティング・システム１０によって実行されるオペレーションの一実施形態を示している。（ブロック２００において）検索コマンド５０に応答してサーバ４から結果を受信すると、提供されたアドレス５６におけるレコードが、提供された検索値５８と一致していることを（ブロック２０２において）応答が示している場合には、オペレーティング・システム１０は、（ブロック２０４において）レコード８を修正するオペレーションを継続する。レコードが値５８と一致していなかったこと、すなわち、レコード８上に設置されているロックにもかかわらずにレコード８が変化したことを（ブロック２０２において）応答が示している場合には、オペレーティング・システム１０は、第１のコンポーネント１６（たとえばアダプタ、ハードウェア、またはソフトウェア、あるいはそのすべて）の障害など、結果として障害につながったサーバ・コンポーネントの障害があったかどうかを（ブロック２０６において）判定する。サーバ・コンポーネントの障害があった場合には、オペレーティング・システム１０は、検索コマンド５０を（ブロック２０８において）再送することができ、それによって、障害が発生して隔離された第１のコンポーネント用のフェイルオーバ・コンポーネント、すなわち他の利用可能な余分なアダプタのうちの１つが、検索要求を処理することができる。サーバ・コンポーネント１６に問題またはエラーがあったことを（ブロック２０８において）メッセージが示していない場合には、オペレーティング・システム１０は、問題を診断するために、修正オペレーションを開始した、および検索要求５０を作成したホスト２のコンポーネントのエラー・チェッキングを（ブロック２１０において）実行することができる。
【００２６】
説明した実施形態に関しては、第１のコンポーネント１６が予想外の検索結果を得た場合には、第２のコンポーネント１８が、第１のコンポーネント１６によって判定された検索結果をチェックする。たとえば、レコード８（あるいはレコード８を含むデータ構造、たとえばテーブル、オブジェクトなど）の上でロックが得られた場合には、ロックが設置された後に判定されたレコードの値は変化していないと予想される。第１のコンポーネント１６が予想外の検索結果を判定した場合には、第２のコンポーネント１８は、第１のコンポーネント１６のハードウェアまたはロジック（たとえばソフトウェア）あるいはその両方にエラーが存在するかどうかを判定するために、トラブルシューティング・オペレーションの一部としてその結果を再計算する。
【００２７】
図６は、代替コンピューティング環境の実施形態を示している。１つまたは複数のホスト３０２（１つだけが図示されている）は、１つまたは複数の処理システム３０４ａ、３０４ｂ・・・３０４ｎを含み、これらの処理システムは、コントロール・ユニット３０６への複数の論理パスを提供するチャネル・サブシステム３０８を通じてコントロール・ユニット３０６へＩ／Ｏ（Input/Output）要求を伝達する。それぞれの処理システム３０４ａ、３０４ｂ・・・３０４ｎは、パス関連のオペレーションを管理するためのオペレーティング・システム３０５を含む。チャネル・サブシステム３０８は、アダプタ３１２を通って延びる論理パス３１０を管理する。アダプタ３１２は、物理層を提供し、この物理層を通って、論理パス３１０は、スイッチ（図示せず）を通じてコントロール・ユニット３０６または複数のコントロール・ユニットへと延びる。オペレーティング・システム３０５は、複数の論理パス３１０を１つのパス・グループにさらに関連付けることができ、その場合には、１つのパス・グループ内のすべてのパスは、コントロール・ユニット３０６と通信するために１つの処理システム３０４ａ、３０４ｂ・・・３０４ｎによって使用することができる。
【００２８】
それぞれの処理システム３０４ａ、３０４ｂ・・・３０４ｎは、オペレーティング・システム３０５およびチャネル・サブシステム３０８のコードを含むプログラムを実行するＣＰＵ（central processing unit）を含むことができる。あるいは、それぞれの処理システム３０４ａ、３０４ｂ・・・３０４ｎは、複数のロジカル・パーティション（logicalpartition）（ＬＰＡＲ）のうちの１つを含むことができ、そのそれぞれは、自前のオペレーティング・システム３０５を実行する独立したシステムとして機能し、チャネル・サブシステム３０８のコードを共有することができる。さらなる実施形態においては、それぞれの処理システムは、プロセッサのロジカル・パーティションを含むことができる。この方法においては、ホスト２内の１つまたは複数のプロセッサは、複数のロジカル・パーティション（ＬＰＡＲ）を実装することができる。複数の処理システム３０４ａ、３０４ｂ・・・３０４ｎが、単一の論理チャネル・サブシステム１６を共有することもでき、あるいは別々の処理システム３０４ａ、３０４ｂ・・・３０４ｎが、別々の論理チャネル・サブシステムを使用することもできる。
【００２９】
チャネル・サブシステム３０８は、処理システム３０４ａ、３０４ｂ・・・３０４ｎからコントロール・ユニット３０６へＩ／Ｏ要求を伝達するオペレーションを実行するためのチャネル・サブシステム・プログラム３１６を含む。オペレーティング・システム３０５は、Ｉ／Ｏ要求を管理する。チャネル・サブシステム・プログラム３１６は、チャネル・サブシステム３０８からＩ／Ｏ要求を得る。１つまたは複数のメモリ・デバイスから構成されるメモリ３１７は、Ｉ／Ｏ要求を管理するためにチャネル・サブシステム・プログラム１６によって使用される情報を含む。
【００３０】
チャネル・サブシステム・プログラム３１６は、ボリューム目次（Volume Tableof Contents）（ＶＴＯＣ）内の項目を修正するオペレーションなど、コントロール・ユニット３０６によって管理されるレコードを修正するオペレーションの一部として検索コマンド５０を含むＣＣＷコマンドを含むチャネル・プログラムを処理することができる。したがって、チャネル・サブシステム・プログラム３１６は、修正するレコードを含むテーブルまたは他のデータ構造、たとえばＶＴＯＣ上でロックが得られた後で、更新するレコードが修正されたかどうかを判定するために、図３および図５のオペレーションを実行するための一連のコマンドを実行することができる。
【００３１】
コントロール・ユニット３０６は、トラック、パーティション、ロジカル・デバイス（logicaldevice）、ロジカル・ボリューム（logical volume）、ロジカル・ユニット・ナンバー（logical unit number）（ＬＵＮ）、ロジカル・サブシステム（ＬＳＳ）、あるいはストレージのその他のロジカル・ユニットまたはフィジカル・ユニットなど、ストレージ・システム３１８ａ、３１８ｂ・・・３１８ｎにアクセスしたいという処理システム３０４ａ、３０４ｂ・・・３０４ｎからの要求を管理する。ストレージ３１８ａは、１つまたは複数のＬＳＳ  ３３２を含む構成を示しており、この場合には、１つまたは複数のボリューム３３４が、それぞれのＬＳＳ  ３３２内で構成されている。これらのボリュームは、複数のストレージ・デバイスにわたることができる。「デバイス」という用語は、フィジカル・トラック（physicaltrack）、ＬＳＳ、パーティション、ロジカル・ボリューム、ボリュームなど、あらゆる物理的または論理的なデータ・ストレージ・ユニット（data storageunit）を指す。コントロール・ユニット３０６は、ストレージ・システム３１８ａ、３１８ｂ・・・３１８ｎからのデータを一時的に格納できるメモリ３２４と、ホスト３０２からコマンドおよび要求を受信するためのアダプタ３２６と、処理コンプレックス３２８とを含む。ストレージ３１８ａは、それぞれの定義されたデータ・セットに割り当てられているストレージ・ロケーション（storagelocation）の範囲を含む、ボリューム３３４内で定義されたそれぞれのデータ・セットに関する情報を提供するボリューム目次（ＶＴＯＣ）３３６をさらに含むことができる。
【００３２】
一実施形態においては、アダプタ３２６は、検索コマンド内に示されているレコードをはじめにチェックする第１のコンポーネントを含むことができ、処理コンプレックス３２８は、アダプタ３２６によって実行された検索チェッキングをチェックするためのチェッキング・オペレーションを実行する第２のコンポーネントを含むことができる。
【００３３】
ホスト３０２は、ワークステーション、メインフレーム、サーバなど、当技術分野で知られているコンピューテーショナル・デバイス（computational device）を含むことができる。コントロール・ユニット３０６は、エンタープライズ・ストレージ・サーバ、ストレージ・コントローラなど、ストレージ・サブシステムまたはサーバ、あるいは接続されているボリュームへのＩ／Ｏ要求を管理するために使用されるその他のデバイスを含むことができる。ストレージ３１８ａ、３１８ｂ・・・３１８ｎは、（たとえばＤＡＳＤ、ＲＡＩＤ、ＪＢＯＤ、仮想化されたデバイスなどとして構成されている）相互接続されたハード・ディスク・ドライブ、磁気テープ、電子メモリ、フラッシュ・メモリ、光ディスクなど、当技術分野で知られているストレージ・デバイスを含むことができる。ホスト３０２は、ＬＡＮ（LocalArea Network）、ＳＡＮ（Storage Area Network）、ＷＡＮ（Wide Area Network）、ピアツーピア・ネットワーク、無線ネットワークなどのネットワークを通じて広がることができる論理パス３１０を介してコントロール・ユニット３０６と通信することができる。あるいはホスト３０２は、ＰＣＩ（PeripheralComponent Interconnect）バスまたはシリアル・インターフェースなどのバス・インターフェースを介してストレージ・コントローラ６と通信することもできる。
【００３４】
さらなる実施形態の詳細
説明したオペレーションは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを製造するための標準的なプログラミング技術またはエンジニアリング技術あるいはその両方を使用した方法、装置、または製品として実装することができる。説明したオペレーションは、「コンピュータ可読メディア」内に保持されるコードとして実装することができ、その場合には、プロセッサは、そのコンピュータ可読メディアからそのコードを読み取って、実行することができる。コンピュータ可読メディアは、磁気ストレージ・メディア（たとえばハード・ディスク・ドライブ、フロッピー（登録商標）・ディスク、テープ等）、光ストレージ（ＣＤ−ＲＯＭ、ＤＶＤ、光ディスク等）、揮発性および不揮発性のメモリ・デバイス（たとえばＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ・メモリ、ファームウェア、プログラマブル・ロジック等）などのメディアを含むことができる。説明したオペレーションを実施するコードは、ハードウェア・ロジック（たとえば集積回路チップ、ＰＧＡ（Programmable Gate Array）、ＡＳＩＣ（Application Specific IntegratedCircuit）など）の中にさらに実装することができる。またさらに、説明したオペレーションを実施するコードは、「伝送信号」内に実装することもでき、その場合には、伝送信号は、空間を通じて、あるいは光ファイバーや銅線などの伝送メディアを通じて伝搬することができる。コードまたはロジックがコード化されている伝送信号は、無線信号、衛星伝送、電波、赤外線信号、Ｂｌｕｅｔｏｏｔｈなどをさらに含むことができる。コードまたはロジックがコード化されている伝送信号は、送信局によって送信し、受信局によって受信することができ、その場合には、伝送信号内でコード化されているコードまたはロジックをデコードして、受信側および送信側の局またはデバイスにおけるハードウェアまたはコンピュータ可読メディア内に保存することができる。「製品」とは、コードを実装することができるコンピュータ可読メディア、ハードウェア・ロジック、または伝送信号あるいはそのすべてを含む。オペレーションの説明した実施形態を実施するコードがコード化されているデバイスは、コンピュータ可読メディアまたはハードウェア・ロジックを含むことができる。もちろん、本発明の範囲から逸脱することなく、この構成に対して多くの修正を施すことができるということ、および製品は、当技術分野で知られている適切な情報搬送メディア（informationbearing medium）を含むことができるということを当業者なら認識できるであろう。
【００３５】
「an embodiment」、「embodiment」、「embodiments」、「theembodiment」、「the embodiments」、「one or more embodiments」、「some embodiments」、および「oneembodiment」という用語は、明確にその他の指定がない限り、「one or more (but not all) embodiments of thepresent invention(s)」を意味する。
【００３６】
「including」、「comprising」、「having」という用語、およびそれらの変形は、明確にその他の指定がない限り、「includingbut not limited to」を意味する。
【００３７】
列挙して記載した項目は、明確にその他の指定がない限り、それらのあらゆるまたはすべての項目が相互に排他的であることを意味しない。
【００３８】
「a」、「an」、および「the」という用語は、明確にその他の指定がない限り、「oneor more」を意味する。
【００３９】
相互に通信状態にあるデバイスは、明確にその他の指定がない限り、相互に継続的に通信状態にある必要はない。さらに、相互に通信状態にあるデバイスは、直接、あるいは１つまたは複数の中間物を通じて間接的に通信することができる。
【００４０】
相互に通信状態にあるいくつかのコンポーネントを伴う実施形態の説明は、そのようなコンポーネントがすべて必須であることを意味しない。それどころか、本発明のさまざまな可能な実施形態を説明するために、さまざまな任意選択のコンポーネントが記載されている。
【００４１】
さらに、プロセスのステップ、方法のステップ、アルゴリズムなどは、一連の順序で説明することができるが、そのようなプロセス、方法、およびアルゴリズムは、別の順序で機能するように構成することもできる。すなわち、説明できるステップのいかなるシーケンスまたは順序も、それらのステップがその順序で実行される必要性を必ずしも示しているわけではない。本明細書に記載されているプロセスのステップは、実用的ないかなる順序で実行することもできる。さらに、いくつかのステップは、同時に実行することもできる。
【００４２】
単一のデバイスまたは製品について本明細書に記載されている場合には、単一のデバイス／製品の代わりに複数のデバイス／製品を（それらが連携するか否かを問わずに）使用することができるということが容易に明らかになるであろう。同様に、複数のデバイスまたは製品について（それらが連携するか否かを問わずに）本明細書に記載されている場合には、それらの複数のデバイスまたは製品の代わりに単一のデバイス／製品を使用することもでき、あるいは、示されている数のデバイスまたはプログラムの代わりに異なる数のデバイス／製品を使用することもできるということが容易に明らかになるであろう。あるいは、あるデバイスの機能または特徴あるいはその両方は、そのような機能／特徴を有するとは明確に記載されていない１つまたは複数の他のデバイスによって具体化することもできる。したがって、本発明のその他の実施形態は、そのデバイスそのものを含む必要がない。
【００４３】
さらに、特定の数のアイテムを示すために「ａ」、「ｂ」、または「ｎ」などの参照文字が使用されている場合には、別々の要素と共に使用されている参照「ａ」、「ｂ」、または「ｎ」は、同じ数のそのような要素を示すこともでき、あるいは異なる数のそのような要素を示すこともできる。
【００４４】
図２は、特定のフォーマットで保持されている情報を示している。代替実施形態においては、これらの図に示されている情報は、別のデータ構造およびフォーマットで、および異なる組合せで保持することもできる。
【００４５】
図３、図４、および図５の例示されているオペレーションは、特定の順序で生じる特定のイベントを示している。代替実施形態においては、特定のオペレーションは、異なる順序で実行したり、修正したり、あるいは削除したりすることができる。さらに、上述のロジックにステップを追加して、なおかつ記載の実施形態に準拠することができる。さらに、本明細書に記載されているオペレーションは、順次行うこともでき、あるいは特定のオペレーションは、並行して処理することもできる。またさらに、オペレーションは、単一の処理装置によって実行することもでき、あるいは分散された処理装置によって実行することもできる。
【００４６】
本発明のさまざまな実施形態に関する前述の説明は、例示および説明の目的で提示されたものである。すべてを網羅すること、あるいは開示されている厳密な形態に本発明を限定することを意図するものではない。上述の教示に照らして、多くの修正および変形形態が可能である。本発明の範囲は、この詳細な説明によってではなく、むしろ本明細書に添付されている特許請求の範囲によって限定されることを意図している。上述の仕様、例、およびデータは、本発明の構成の製造および使用に関する完全な説明を提供している。本発明の多くの実施形態は、本発明の趣旨および範囲から逸脱することなく作成することができるため、本発明は、添付の特許請求の範囲に属するものである。
【図面の簡単な説明】
【００４７】
【図１】コンピューティング環境の一実施形態を示す図である。
【図２】レコードの値を検索値と比較するための検索コマンドの一実施形態を示す図である。
【図３】レコードを修正するオペレーションの一実施形態を示す図である。
【図４】検索コマンドを処理するオペレーションの一実施形態を示す図である。
【図５】検索コマンドの結果を処理するオペレーションの一実施形態を示す図である。
【図６】コンピューティング環境の代替実施形態を示す図である。
【符号の説明】
【００４８】
２  ホスト
４  サーバ
６  ストレージ
８  レコード
１０  オペレーティング・システム
１２  Ｉ／Ｏマネージャー
１４  メモリ
１６  第１のコンポーネント
１８  第２のコンポーネント
５０  検索コマンド
５２  検索コマンド・コード
５４  アトミック・フラグ
５６  レコード・アドレス
５８  検索値
６０  エラー・チェッキング・コード
３０２  ホスト
３０４ａ  処理システム
３０４ｂ  処理システム
３０４ｎ  処理システム
３０５  オペレーティング・システム
３０６  コントロール・ユニット
３０８  チャネル・サブシステム
３１２  アダプタ
３１６  チャネル・サブシステム・プログラム
３１７  メモリ
３１８ａ  ストレージ・システム
３１８ｂ  ストレージ・システム
３１８ｎ  ストレージ・システム
３２４  メモリ
３２６  アダプタ
３２８  処理コンプレックス
３３４  ボリューム
【図１】
2008090839.tif 000003
【図２】
2008090839.tif 000004
【図３】
2008090839.tif 000005
【図４】
2008090839.tif 000006
【図５】
2008090839.tif 000007
【図６】
2008090839.tif 000008