(57)【要約】【課題】データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理のためのコンピュータ・プログラム製品、システム、および方法を提供する。【解決手段】１つの実施形態では、ＲＡＩＤアレイの２つの仮想ストレージ・ドライブが同じ物理ストレージ・ドライブにマップされないように、仮想ストレージ・ドライブがＲＡＩＤアレイに割り当てられる。別の態様では、エラーによる影響を受けない物理ストレージ・ドライブの仮想ストレージ・ドライブがバイパスされるように、エラー処理ルーチンは、物理ストレージ・ドライブにおけるエラーによる影響を受ける仮想ストレージ・ドライブに限定される。さらに別の態様では、目標仮想ストレージ・ドライブへのキャッシュ動作は、仮想ストレージ・ドライブが割り当てられた先のＲＡＩＤアレイを対象とするキャッシュ動作に課された制限と目標仮想ストレージ・ドライブと同じ物理ストレージ・ドライブにマップされた仮想ストレージ・ドライブのグループを対象とするキャッシュ動作の別個の制限との両方の機能としてスロットル調整され得る。他の特徴および態様が、特定の適用分野に応じて、実現され得る。【選択図】図４
2021515298.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、および前記より小さいストレージ・エリアのグループの各より小さいストレージ・エリアを前記仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、前記仮想ストレージ・ドライブの複数のグループを作成することと、
仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることと
を含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、前記グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、前記識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられた最も少ない数の仮想ストレージ・ドライブを有する識別されたグループとして前記仮想ストレージ・ドライブの複数のグループのうちのグループを識別し、仮想ストレージ・ドライブの前記識別されたグループからの１つの仮想ドライブを前記識別されたＲＡＩＤアレイに割り当てることと、前記識別されたＲＡＩＤアレイが完成したかどうかを判定することと、前記識別されたＲＡＩＤアレイが完成するまで前記グループ識別およびドライブ割当動作を繰り返すこととを含む、方法。
【請求項２】
物理ストレージ・ドライブの仮想ドライブのグループの仮想ストレージ・ドライブにおいてエラーを検出することと、
検出されたエラーを有する仮想ドライブをどの物理ストレージ・ドライブが含むかを識別することと、
識別された物理ストレージ・ドライブのどのストレージ・エリアが検出されたエラーによる影響を受けるかを識別することと、
検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは前記識別された物理ストレージ・ドライブの全ストレージ・エリアより少ないかどうかを判定し、少ない場合は、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアにマップされた仮想ストレージ・ドライブのセットを識別し、識別された仮想ドライブのセットのためのエラー処理ルーチンを開始することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記識別された物理ストレージ・ドライブのすべてのストレージ・エリアは検出されたエラーの影響を受けるかどうかを判定し、影響を受ける場合は、前記識別された物理ストレージ・ドライブの前記仮想ストレージ・ドライブのグループのすべての仮想ストレージ・ドライブのためのエラー処理ルーチンを開始することをさらに含む、請求項２に記載の方法。
【請求項４】
第１の目標ＲＡＩＤアレイと第１の目標物理ストレージ・ドライブの仮想ストレージ・ドライブの第１の目標グループとの第１の目標仮想ストレージ・ドライブとキャッシュとの間でデータを転送するための第１のキャッシュ動作を制御するために割り当てられた第１のタスク制御ブロックを受信することであって、前記第１のキャッシュ動作は、前記第１の目標仮想ストレージ・ドライブから前記キャッシュにデータをステージするためのステージ動作と前記キャッシュから前記第１の目標仮想ストレージ・ドライブにデータをデステージするためのデステージ動作とのうちの１つである、前記受信することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかを判定することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えていないという判定に応答して、前記第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかを判定し、超えていない場合は、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期するように前記第１の割り当てられたタスク制御ブロックを待ち行列に入れる代わりに、前記第１の割り当てられたタスク制御ブロックをディスパッチして前記第１のキャッシュ動作を実行することをさらに含む、請求項４に記載の方法。
【請求項６】
前記第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの前記第２の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することをさらに含む、請求項５に記載の方法。
【請求項７】
キャッシュと目標仮想ストレージ・ドライブとの間でデータを転送するための第２のキャッシュ動作が完了したときにタスク制御ブロックの割当を解除することと、
前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限が超えられていない場合、かつ仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの前記第２の制限が超えられていない場合に、待機中のタスク制御ブロックを待ち行列から取り除き、キャッシュ動作を実行するために前記取り除かれたタスク制御ブロックをディスパッチすることと
をさらに含む、請求項６に記載の方法。
【請求項８】
データ・ストレージ・システムと使用するためのコンピュータ・プログラム製品であって、前記データ・ストレージ・システムは、ストレージ・コントローラおよび複数の物理ストレージ・ドライブを有し、前記複数の物理ストレージ・ドライブは、前記ストレージ・コントローラによって制御され、データを記憶するように構成されており、前記ストレージ・コントローラは、プロセッサおよびキャッシュを有し、前記コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、前記プログラム命令は、プロセッサ動作を引き起こすために、前記ストレージ・コントローラのプロセッサによって実行可能であり、前記プロセッサ動作は、
仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、および前記より小さいストレージ・エリアのグループの各より小さいストレージ・エリアを前記仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、前記仮想ストレージ・ドライブの複数のグループを作成することと、
仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることと
を含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、前記グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、前記識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられた最も少ない数の仮想ストレージ・ドライブを有する識別されたグループとして前記仮想ストレージ・ドライブの複数のグループのうちのグループを識別し、仮想ストレージ・ドライブの前記識別されたグループからの１つの仮想ドライブを前記識別されたＲＡＩＤアレイに割り当てることと、前記識別されたＲＡＩＤアレイが完成したかどうかを判定することと、前記識別されたＲＡＩＤアレイが完成するまで前記グループ識別およびドライブ割当動作を繰り返すこととを含む、
コンピュータ・プログラム製品。
【請求項９】
前記プロセッサ動作は、
物理ストレージ・ドライブの仮想ドライブのグループの仮想ストレージ・ドライブにおいてエラーを検出することと、
検出されたエラーを有する仮想ドライブをどの物理ストレージ・ドライブが含むかを識別することと、
識別された物理ストレージ・ドライブのどのストレージ・エリアが検出されたエラーによる影響を受けるかを識別することと、
検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは前記識別された物理ストレージ・ドライブの全ストレージ・エリアより少ないかどうかを判定し、少ない場合は、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアにマップされた仮想ストレージ・ドライブのセットを識別し、識別された仮想ドライブのセットのためのエラー処理ルーチンを開始することと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記プロセッサ動作は、前記識別された物理ストレージ・ドライブのすべてのストレージ・エリアは検出されたエラーの影響を受けるかどうかを判定し、影響を受ける場合は、前記識別された物理ストレージ・ドライブの前記仮想ストレージ・ドライブのグループのすべての仮想ストレージ・ドライブのためのエラー処理ルーチンを開始することをさらに含む、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
前記プロセッサ動作は、
第１の目標ＲＡＩＤアレイと第１の目標物理ストレージ・ドライブの仮想ストレージ・ドライブの第１の目標グループとの第１の目標仮想ストレージ・ドライブとキャッシュとの間でデータを転送するための第１のキャッシュ動作を制御するために割り当てられた第１のタスク制御ブロックを受信することであって、前記第１のキャッシュ動作は、前記第１の目標仮想ストレージ・ドライブから前記キャッシュにデータをステージするためのステージ動作と前記キャッシュから前記第１の目標仮想ストレージ・ドライブにデータをデステージするためのデステージ動作とのうちの１つである、前記受信することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかを判定することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１２】
前記プロセッサ動作は、前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えていないという判定に応答して、前記第１の割り当てられたタスク制御ブロックが仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかを判定し、超えていなければ、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期するように前記第１の割り当てられたタスク制御ブロックを待ち行列に入れる代わりに、前記第１の割り当てられたタスク制御ブロックをディスパッチして前記第１のキャッシュ動作を実行することをさらに含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記プロセッサ動作は、前記第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することをさらに含む、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記プロセッサ動作は、
キャッシュと目標仮想ストレージ・ドライブとの間でデータを転送するための第２のキャッシュ動作が完了したときにタスク制御ブロックの割当を解除することと、
前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限が超えられていない場合、かつ仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの前記第２の制限が超えられていない場合に、待機中のタスク制御ブロックを待ち行列から取り除き、キャッシュ動作を実行するために前記取り除かれたタスク制御ブロックをディスパッチすることと
をさらに含む、請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
システムであって、
ストレージ・コントローラおよび複数の物理ストレージ・ドライブを有するデータ・ストレージ・システムであって、前記複数の物理ストレージ・ドライブは、前記ストレージ・コントローラによって制御され、データを記憶するように構成されており、前記ストレージ・コントローラは、プロセッサおよびキャッシュを有する、前記データ・ストレージ・システムと、
プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品と
を備え、前記プログラム命令は、プロセッサ動作を引き起こすために、前記ストレージ・コントローラのプロセッサによって実行可能であり、前記プロセッサ動作は、
仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、および前記より小さいストレージ・エリアのグループの各より小さいストレージ・エリアを前記仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、前記仮想ストレージ・ドライブの複数のグループを作成することと、
仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることと
を含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、前記グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、前記識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられた最も少ない数の仮想ストレージ・ドライブを有する識別されたグループとして前記仮想ストレージ・ドライブの複数のグループのうちのグループを識別し、仮想ストレージ・ドライブの前記識別されたグループからの１つの仮想ドライブを前記識別されたＲＡＩＤアレイに割り当てることと、前記識別されたＲＡＩＤアレイが完成したかどうかを判定することと、前記識別されたＲＡＩＤアレイが完成するまで前記グループ識別およびドライブ割当動作を繰り返すこととを含む、
システム。
【請求項１６】
前記プロセッサ動作は、
物理ストレージ・ドライブの仮想ドライブのグループの仮想ストレージ・ドライブにおいてエラーを検出することと、
検出されたエラーを有する仮想ドライブをどの物理ストレージ・ドライブが含むかを識別することと、
識別された物理ストレージ・ドライブのどのストレージ・エリアが検出されたエラーによる影響を受けるかを識別することと、
検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは前記識別された物理ストレージ・ドライブの全ストレージ・エリアより少ないかどうかを判定し、少ない場合は、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアにマップされた仮想ストレージ・ドライブのセットを識別し、識別された仮想ドライブのセットのためのエラー処理ルーチンを開始することと
をさらに含む、請求項１５に記載のシステム。
【請求項１７】
前記プロセッサ動作は、前記識別された物理ストレージ・ドライブのすべてのストレージ・エリアが検出されたエラーの影響を受けるかどうかを判定し、影響を受ける場合は、前記識別された物理ストレージ・ドライブの前記仮想ストレージ・ドライブのグループのすべての仮想ストレージ・ドライブのためのエラー処理ルーチンを開始することをさらに含む、請求項１６に記載のシステム。
【請求項１８】
前記プロセッサ動作は、
第１の目標ＲＡＩＤアレイと第１の目標物理ストレージ・ドライブの仮想ストレージ・ドライブの第１の目標グループとの第１の目標仮想ストレージ・ドライブとキャッシュとの間でデータを転送するための第１のキャッシュ動作を制御するために割り当てられた第１のタスク制御ブロックを受信することであって、前記第１のキャッシュ動作は、前記第１の目標仮想ストレージ・ドライブから前記キャッシュにデータをステージするためのステージ動作と前記キャッシュから前記第１の目標仮想ストレージ・ドライブにデータをデステージするためのデステージ動作とのうちの１つである、前記受信することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかを判定することと、
前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することと
をさらに含む、請求項１５に記載のシステム。
【請求項１９】
前記プロセッサ動作は、前記第１の割り当てられたタスク制御ブロックは前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限を超えていないという判定に応答して、前記第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかを判定し、超えていない場合は、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期するように前記第１の割り当てられたタスク制御ブロックを待ち行列に入れる代わりに、前記第１の割り当てられたタスク制御ブロックをディスパッチして前記第１のキャッシュ動作を実行することをさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記プロセッサ動作は、前記第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの前記第２の制限を超えているという判定に応答して、前記第１の割り当てられたタスク制御ブロックを待ち行列に入れて、前記第１のキャッシュ動作を実行するための前記第１の割り当てられたタスク制御ブロックのディスパッチを延期することをさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記プロセッサ動作は、
キャッシュと目標仮想ストレージ・ドライブとの間でデータを転送するための第２のキャッシュ動作が完了したときにタスク制御ブロックの割当を解除することと、
前記第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの前記第１の制限が超えられていない場合、かつ仮想ストレージ・ドライブの前記第１の目標グループにアサインされる割り当てられるタスク制御ブロックの前記第２の制限が超えられていない場合に、待機中のタスク制御ブロックを待ち行列から取り除き、キャッシュ動作を実行するために前記取り除かれたタスク制御ブロックをディスパッチすることと
をさらに含む、請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理のためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【０００２】
データ・ストレージ・システムは、特に企業レベルでは、通常、データ・ストレージ・システムの構成要素が故障した場合のデータ損失のリスクを低減するために、高レベルの冗長性を提供するように設計される。それにより、データの複数のコピーが、地理的に分散され得る複数のシステムに頻繁に記憶される。したがって、データ・ストレージ・システムにおいて記憶されることになるホストからのデータは、通常は、ローカル・サイトにある１次データ・ストレージ・システムの１次デバイスに向けられ、次いで、１次データ・ストレージ・システムから地理的に遠隔のシステムでもよい２次データ・ストレージ・システムの１つまたは複数の２次デバイスに複製され得る。１つの１次デバイスは、１次デバイスに向けられたデータが複数の２次デバイスに複製される、複数の２次的関係を有し得る。
【０００３】
ストレージ・コントローラは、ハード・ディスク、テープ、ソリッド・ステート・ドライブなどを含み得る、複数のストレージ・デバイスを制御し得る。ストレージ・コントローラは、複数のストレージ・デバイスへのネットワーク・ホストからの入出力（Ｉ／Ｏ）要求を管理し得る。ストレージ・デバイスのストレージ容量が増えるとき、物理ストレージ・ドライブを複数の仮想ストレージ・ドライブに断片化するまたはさらに分割することが知られており、各仮想ストレージ・ドライブは、物理ストレージ・ドライブの物理ストレージの一部にマップされた仮想ストレージを有する。仮想ストレージ・ドライブのより小さいストレージ容量は、資源管理を円滑にし、ストレージ・コントローラによるシステム性能を改善し得る。
【０００４】
キャッシュはまた、ストレージ・コントローラによって保持され得、そこで、キャッシュは、ある種の他のストレージ・デバイス、たとえば、ハード・ディスク、テープなど、と比較してより迅速にアクセス可能な高速ストレージを備え得る。キャッシュは、読み取りデータ・アクセス要求にサービスするための、および修正されたデータのバッファリングを提供するための、外部ストレージからステージされたデータへの高速アクセスのために使用される。しかしながら、キャッシュのストレージ容量の総量は、ストレージ・コントローラによって制御されるある種の他のストレージ・デバイス、たとえばハード・ディスクなど、のストレージ容量と比較して相対的に小さくなり得る。したがって、書き込み要求は、しばしば、最初にキャッシュに書き込まれ、次いで、その後に外部ストレージ・デバイスに書き込まれる（すなわち、デステージされる）。
【０００５】
タスク制御ブロック（ＴＣＢ）は、特定のプロセスを管理するために必要とされる情報を含むオペレーティング・システム・カーネル内のタスク制御データ構造体である。ストレージ・コントローラは、ＴＣＢを使用してデータの移動を管理することによって、ストレージ・デバイスにおよびストレージ・デバイスから、そして、キャッシュ（ＮＶＳを含む）におよびキャッシュ（ＮＶＳを含む）から、情報を移動することができる。書き込み要求が、ホスト・コンピュータからストレージ・コントローラに生じるとき、ＴＣＢは、オペレーティング・システム・コードから割り当てられ得る。書き込まれることになるデータが、ホスト・コンピュータからキャッシュを介してストレージ・デバイスに渡されるとき、ＴＣＢは、最初から最後まで書き込みプロセスに関する情報を保持するために使用される。キャッシュがいっぱいである場合、ＴＣＢは、スペースを解放するために、キャッシュ内の既存のデータがデステージされ得る（すなわち、ストレージ・デバイスに書き込まれ得る）まで、ＴＣＢ待ち行列に入れられ得る。デステージ動作は、ＲＡＩＤ（独立ディスクの冗長アレイ）ストレージなどのストレージへのキャッシュからの情報の移動を含み得、デステージＴＣＢが、デステージ動作を実行するために割り当てられ得る。
【０００６】
任意の１つの特定のＲＡＩＤアレイ（ＲＡＩＤランクとしても知られる）に多数のステージまたはデステージ動作を指示し過ぎることは、性能に悪影響を及ぼし得る。そのようなステージおよびデステージ動作のより均一な配分を実現するために、キャッシュ動作が指示されたＲＡＩＤアレイに基づいて、ステージまたはデステージ動作の数を「スロットル調整する（throttle）」ことが知られている。したがって、各ＲＡＩＤアレイは、特定のＲＡＩＤアレイまたはアレイを対象とするキャッシュ動作を実行するように割り当てられるおよびディスパッチされるステージまたはデステージＴＣＢの数に関連上限値を有し得る。その上限に達すると、特定のＲＡＩＤアレイまたはアレイを対象とすることになるキャッシュ動作のための追加のＴＣＢは、ＴＣＢ待ち行列に入れられて特定のＲＡＩＤアレイまたはアレイのＴＣＢの解放（割当解除）を待つ。ＲＡＩＤアレイのＴＣＢの割当解除をしたとき、待機中のＴＣＢは、ＴＣＢ待ち行列から取り除かれ、関連キャッシュ動作を完了するためにディスパッチされ得る。
【０００７】
ストレージ・コントローラは、２次ストレージにデステージされることになる修正された（「ダーティ」としばしば称される）データのためのキャッシュ・ディレクトリを走査する安全データ・コミット・プロセスを頻繁に使用する。キャッシュ・ディレクトリのそのような走査は、たとえば、正時になど、定期的に開始され得る。デステージ動作はまた、ホスト動作に応じて、他の時間に開始され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理のためのコンピュータ・プログラム製品、システム、および方法を提供する。
【課題を解決するための手段】
【０００９】
１つの態様によれば、方法が提供され、方法は、仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、およびより小さいストレージ・エリアのグループの各より小さいストレージ・エリアを仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、仮想ストレージ・ドライブの複数のグループを作成することと、仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることとを含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブを有する、識別されたグループとして複数のグループの仮想ストレージ・ドライブのグループを識別し、仮想ストレージ・ドライブの識別されたグループからの１つの仮想ドライブを識別されたＲＡＩＤアレイに割り当てることと、識別されたＲＡＩＤアレイが完成したかどうかを判定することと、識別されたＲＡＩＤアレイが完成するまでグループ識別およびドライブ割当動作を繰り返すこととを含む。
【００１０】
１つの実施形態によれば、データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理を用いたコンピューティング環境が提供される。これは、仮想ストレージ・ドライブの複数のグループを作成することを対象とし、そこで、仮想ストレージ・ドライブのグループを作成することは、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすることと、より小さいストレージ・エリアのグループの各より小さいストレージ・エリアを仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることとを含む。仮想ストレージ・ドライブは、グループ識別およびドライブ割当動作において仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てられる。１つの実施形態において、グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブを有する識別されたグループとして複数のグループの仮想ストレージ・ドライブのグループを識別することと、１つの仮想ドライブを識別されたグループの仮想ストレージ・ドライブから識別されたＲＡＩＤアレイに割り当てることとを含む。識別されたＲＡＩＤアレイが完成したかどうかについて判定がなされ、識別されたＲＡＩＤアレイが完成するまでグループ識別およびドライブ割当動作を繰り返す。
【００１１】
たとえば、１つの実施形態において、ＲＡＩＤアレイ論理は、任意のＲＡＩＤアレイの２つの仮想ストレージ・ドライブが同じ物理ストレージ・ドライブにマップされないことを確実にするような方式で仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤアレイに自動的に割り当てるように構成され得る。結果として、任意の１つの物理ストレージ・ドライブの故障は、任意の１つのＲＡＩＤアレイ内の複数の仮想ストレージ・ドライブの故障を引き起こさないことになる。さらに、各アレイの故障した仮想ストレージ・ドライブのデータは、適切なＲＡＩＤデータ再構築技術を用いてより容易に再構築され得る。
【００１２】
さらに、ＲＡＩＤアレイ論理は、仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのより均一な配分を確保するような方式で仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤアレイに自動的に割り当てるように構成され得る。結果として、特定の物理ストレージ・ドライブの損失の影響を受けるＲＡＩＤアレイの数は、低減され得るまたは最小限に抑えられ得る。さらに、個々の物理ストレージ・ドライブのオーバードライビングにつながる不均一な作業負荷配分は、仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのより均一な配分によって、低減され得る。
【００１３】
本明細書による仮想ストレージ・ドライブ管理のもう１つの態様において、物理ストレージ・ドライブの仮想ドライブのグループの仮想ストレージ・ドライブにおいてエラーを検出することに応答して、検出されたエラーを有する仮想ドライブをどの物理ストレージ・ドライブが含むかに関して識別がおこなわれ、識別された物理ストレージ・ドライブのどのストレージ・エリアが検出されたエラーによる影響を受けるかを識別する。検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは識別された物理ストレージ・ドライブの全ストレージ・エリアより少ないかどうかに関する判定がおこなわれ、少ない場合は、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアにマップされた仮想ストレージ・ドライブのセットを識別する。加えて、エラー処理ルーチンが、識別された仮想ドライブのセットについて開始される。この方式では、エラー処理ルーチンは、エラーによる影響を受けない同じ物理ストレージ・ドライブの仮想ストレージ・ドライブをバイパスしつつ、物理ストレージ・ドライブの影響を受ける仮想ストレージ・ドライブに集中し得る。結果として、エラー処理の効率は、向上し得る。
【００１４】
本明細書による仮想ストレージ・ドライブ管理のさらに別の態様において、識別された物理ストレージ・ドライブのすべてのストレージ・エリアが検出されたエラーの影響を受けるかどうかに関する判定がおこなわれる。影響を受ける場合は、エラー処理ルーチンが、識別された物理ストレージ・ドライブの仮想ストレージ・ドライブのグループのすべての仮想ストレージ・ドライブについて開始される。ここでもまた、エラー処理ルーチンは、物理ストレージ・ドライブの影響を受けるすべての仮想ストレージ・ドライブに集中して、エラー処理効率を向上させることができる。
【００１５】
本明細書による仮想ストレージ・ドライブ管理のさらに別の態様は、第１の目標ＲＡＩＤアレイと第１の目標物理ストレージ・ドライブの仮想ストレージ・ドライブの第１の目標グループとの第１の目標仮想ストレージ・ドライブとキャッシュとの間でデータを転送するための第１のキャッシュ動作を制御するために割り当てられた第１のタスク制御ブロックを受信することを対象とし、そこで、第１のキャッシュ動作は、第１の目標仮想ストレージ・ドライブからキャッシュにデータをステージするためのステージ動作とキャッシュから第１の目標仮想ストレージ・ドライブにデータをデステージするためのデステージ動作とのうちの１つである。第１の割り当てられたタスク制御ブロックが第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかに関する判定がおこなわれ、そして、第１の割り当てられたタスク制御ブロックは第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているという判定に応答して、第１の割り当てられたタスク制御ブロックを待ち行列に入れて、第１のキャッシュ動作を実行するための第１の割り当てられたタスク制御ブロックのディスパッチを延期する。逆に、第１の割り当てられたタスク制御ブロックは第１の目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えていないという判定に応答して、第１の割り当てられたタスク制御ブロックが仮想ストレージ・ドライブの第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかに関する判定がおこなわれ、超えていなければ、第１の割り当てられたタスク制御ブロックを待ち行列に入れて、第１のキャッシュ動作を実行するための第１の割り当てられたタスク制御ブロックのディスパッチを延期する代わりに、第１の割り当てられたタスク制御ブロックをディスパッチして第１のキャッシュ動作を実行する。第１の割り当てられたタスク制御ブロックは仮想ストレージ・ドライブの第１の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているという判定に応答して、第１の割り当てられたタスク制御ブロックが、待ち行列に入れられて、第１のキャッシュ動作を実行するための第１の割り当てられたタスク制御ブロックのディスパッチを延期する。
【００１６】
したがって、１つの実施形態において、どちらの制限も超えられていない場合、タスク制御ブロックが、目標仮想ストレージ・ドライブに関して関連キャッシュ動作を実行するために、ディスパッチされる。逆に、どちらかの制限が超えられている場合、待ち行列論理は、割り当てられたタスク制御ブロックを目標仮想ストレージ・ドライブのためのＴＣＢ待ち行列に入れて、割り当てられたタスク制御ブロックのディスパッチを延期する。この方式では、特定の仮想ストレージ・ドライブのためのタスク制御ブロックは、任意の１つの特定のＲＡＩＤアレイまたは物理ストレージ・ドライブを多過ぎるキャッシュ動作でオーバーロードすることを回避するために、目標仮想ストレージ・ドライブのＲＡＩＤアレイのＩＤ（identity）ならびにキャッシュ動作の目標仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのＩＤの両方に基づいてスロットル調整され得る。結果として、システム性能は、向上し得る。
【００１７】
別の態様によれば、データ・ストレージ・システムと使用するためのコンピュータ・プログラム製品が提供され、データ・ストレージ・システムは、ストレージ・コントローラおよび複数の物理ストレージ・ドライブを有し、複数の物理ストレージ・ドライブは、ストレージ・コントローラによって制御され、データを記憶するように構成されており、ストレージ・コントローラは、プロセッサおよびキャッシュを有し、コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、プログラム命令は、プロセッサ動作を引き起こすために、ストレージ・コントローラのプロセッサによって実行可能であり、プロセッサ動作は、仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、およびより小さいストレージ・エリアのグループの各より小さいストレージ・エリアを仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、仮想ストレージ・ドライブの複数のグループを作成することと、仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることとを含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブを有する識別されたグループとして仮想ストレージ・ドライブの複数のグループのうちのグループを識別し、仮想ストレージ・ドライブの識別されたグループからの１つの仮想ドライブを識別されたＲＡＩＤアレイに割り当てることと、識別されたＲＡＩＤアレイが完成したかどうかを判定することと、識別されたＲＡＩＤアレイが完成するまでグループ識別およびドライブ割当動作を繰り返すこととを含む。
【００１８】
別の態様によれば、システムが提供され、システムは、ストレージ・コントローラおよび複数の物理ストレージ・ドライブを有するデータ・ストレージ・システムであって、複数の物理ストレージ・ドライブは、ストレージ・コントローラによって制御され、データを記憶するように構成されており、ストレージ・コントローラは、プロセッサおよびキャッシュを有する、データ・ストレージ・システムと、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品とを備え、プログラム命令は、プロセッサ動作を引き起こすために、ストレージ・コントローラのプロセッサによって実行可能であり、プロセッサ動作は、仮想ストレージ・ドライブの複数のグループを作成することであって、仮想ストレージ・ドライブのグループを作成することが、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすること、およびより小さいストレージ・エリアのグループの各より小さいストレージ・エリアを仮想ストレージ・ドライブのグループの仮想ストレージ・ドライブにマップすることを含む、仮想ストレージ・ドライブの複数のグループを作成することと、仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てることとを含み、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることが、グループ識別およびドライブ割当動作を含み、グループ識別およびドライブ割当動作は、識別されたＲＡＩＤアレイに対して、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブを有する識別されたグループとして仮想ストレージ・ドライブの複数のグループのうちのグループを識別し、仮想ストレージ・ドライブの識別されたグループからの１つの仮想ドライブを識別されたＲＡＩＤアレイに割り当てることと、識別されたＲＡＩＤアレイが完成したかどうかを判定することと、識別されたＲＡＩＤアレイが完成するまでグループ識別およびドライブ割当動作を繰り返すこととを含む。
【００１９】
記載されている技術の実装形態は、コンピュータでアクセス可能な媒体のハードウェア、方法もしくはプロセス、またはコンピュータ・ソフトウェアを含み得る。他の特徴および態様が、特定の適用分野に応じて、実現され得る。
【００２０】
本発明の実施形態が、以下のような添付の図面を参照して、単に例として、ここで説明される。
【図面の簡単な説明】
【００２１】
【図１】データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理を用いたコンピューティング環境の一実施形態を示す図である。
【図２】図１のコンピューティング環境における仮想ストレージ・ドライブ管理を用いるデータ・ストレージ・システムの一例を示す図である。
【図３】図１のコンピューティング環境におけるホストの一例を示す図である。
【図４】仮想ストレージ・ドライブを有するＲＡＩＤアレイ形成の一例を示す図である。
【図５】１グループの仮想ストレージの仮想ストレージ・ドライブにマップされた複数のより小さいストレージ・エリアにさらに分けられた物理ストレージ・ドライブのストレージ・エリアの一例を示す図である。
【図６】仮想ストレージ・ドライブを物理ストレージ・ドライブ、仮想ストレージ・ドライブのグループ、物理ストレージ・エリア、ＲＡＩＤアレイおよびＴＣＢ待ち行列にマップするテーブルの一例を示す図である。
【図７】仮想ストレージ・ドライブ管理の一例を示す図である。
【図８】データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理の１つの実施形態におけるエラー処理動作の一例を示す図である。
【図９】仮想ストレージ・ドライブ管理の１つの実施形態におけるエラー処理動作に関する物理ストレージ・ドライブによってサポートされる仮想ストレージ・ドライブにおけるエラーの影響のローカル・エリアの一例を示す図である。
【図１０】仮想ストレージ・ドライブ管理の１つの実施形態におけるエラー処理動作に関する物理ストレージ・ドライブによってサポートされる仮想ストレージ・ドライブにおけるエラーの影響のグローバル・エリアの一例を示す図である。
【図１１】目標ＲＡＩＤアレイおよび目標仮想ストレージ・ドライブ・グループＩＤの両方の機能としてのＴＣＢスロットル調整動作の一例を示す図である。
【図１２】仮想ストレージ・ドライブ管理を用いる１つの実施形態におけるキャッシュ動作論理の一例を示す図である。
【図１３】ＲＡＩＤアレイのＩＤおよび仮想ストレージ・ドライブの仮想ストレージ・ドライブ・グループのＩＤの機能として仮想ストレージ・ドライブにアサインされたＴＣＢ待ち行列の一例を示す図である。
【図１４】ＲＡＩＤアレイのＩＤおよび各仮想ストレージ・ドライブの仮想ストレージ・ドライブ・グループのＩＤの機能として仮想ストレージ・ドライブにＴＣＢ待ち行列をマップするテーブルの一例を示す図である。
【図１５】仮想ストレージ・ドライブ管理を用いる１つの実施形態におけるディスパッチされたＴＣＢのためのＴＣＢ処理の一例を示す図である。
【図１６】仮想ストレージ・ドライブ管理を用いる１つの実施形態における仮想ストレージ・ドライブのためのＴＣＢ待ち行列処理の一例を示す図である。
【図１７】データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理を用いるコンピュータ実施形態を示す図である。
【発明を実施するための形態】
【００２２】
高容量物理ドライブを複数の仮想ストレージ・ドライブに断片化することまたはさらに分けることは、性能を向上させることができるが、単一物理ドライブにマップされた複数の仮想ストレージ・ドライブを有する任意の１つのＲＡＩＤアレイ（またはＲＡＩＤランク）を構成することは、アレイの複数の仮想ストレージ・ドライブをサポートする物理ストレージ・ドライブが故障した場合に、データ損失の可能性を増やし得ることが認識される。したがって、本明細書による仮想ストレージ・ドライブ管理を用いるストレージ・コントローラまたは他のコンピュータ・システムの１つの実施形態において、ＲＡＩＤアレイ論理は、任意のＲＡＩＤアレイの２つの仮想ストレージ・ドライブが同じ物理ストレージ・ドライブにマップされないことを確実にするような方式で仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤアレイに自動的に割り当てるように構成される。結果として、任意の１つの物理ストレージ・ドライブの故障は、任意の１つのＲＡＩＤアレイ内の複数の仮想ストレージ・ドライブの故障を引き起こさないことになる。さらに、各アレイの故障した仮想ストレージ・ドライブのデータが、適切なＲＡＩＤデータ再構築技術を用いてより容易に再構築され得る。
【００２３】
本明細書の別の実施形態において、ＲＡＩＤアレイ論理は、仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのより均一な配分を確保するような方式で仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤアレイに自動的に割り当てるように構成され得る。結果として、特定の物理ストレージ・ドライブの損失の影響を受けるＲＡＩＤアレイの数は、低減され得るまたは最小限に抑えられ得る。さらに、個々の物理ストレージ・ドライブのオーバードライビングにつながる不均一な作業負荷配分は、仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのより均一な配分によって、低減され得る。
【００２４】
１つの実施形態において、仮想ストレージ・ドライブをＲＡＩＤアレイに割り当てることにおけるＲＡＩＤアレイ論理は、識別されたＲＡＩＤアレイについて、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さない他のグループと比較して、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さないかつ任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブを有する仮想ストレージ・ドライブのグループを識別することを含む自動グループ識別およびドライブ割当動作を実行する。ＲＡＩＤアレイ論理は、識別されたグループの仮想ストレージ・ドライブからの１つの仮想ドライブを識別されたＲＡＩＤアレイに割り当てる。識別されたＲＡＩＤアレイが完成したかどうかについて判定がなされ、論理は、識別されたＲＡＩＤアレイが完成するまで、グループ識別およびドライブ割当動作を繰り返す。
【００２５】
本明細書による仮想ストレージ・ドライブ管理を用いるストレージ・コントローラまたは他のコンピュータ・システムの別の実施形態において、エラー処理論理は、仮想ストレージ・ドライブにおけるエラーを検出するようにおよびどの物理ドライブが検出されたエラーを有する仮想ドライブにマップされているかを自動的に識別するように構成される。加えて、エラー処理論理は、識別された物理ストレージ・ドライブのどのストレージ・エリアが検出されたエラーによる影響を受けるかを自動的に識別する。エラー処理論理が、識別された物理ストレージ・ドライブのすべてのストレージ・エリアは、検出されたエラーの影響を受ける、すなわち、エラーの影響の「グローバル」エリアである、と判定した場合、エラー処理ルーチンが、すべての識別された物理ストレージ・ドライブの仮想ストレージ・ドライブについて開始され得る。逆に、エラー処理論理が、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは識別された物理ストレージ・ドライブの全ストレージ・エリアより少ない、すなわち、エラーの影響のエリアはエラーの影響の「ローカル」エリアである、と判定した場合、結合されたストレージ・エリア、すなわち、エラーの影響のローカル・エリア、にマップされた仮想ストレージ・ドライブのセットが、識別され、識別された仮想ドライブのセットのためのエラー処理ルーチンが、開始される。この方式では、エラー処理ルーチンは、エラーによる影響を受けない同じ物理ストレージ・ドライブの仮想ストレージ・ドライブをバイパスしつつ、物理ストレージ・ドライブの影響を受ける仮想ストレージ・ドライブに集中し得る。結果として、エラー処理の効率は、向上し得る。
【００２６】
本明細書による仮想ストレージ・ドライブ管理を用いるストレージ・コントローラまたは他のコンピュータ・システムのさらに別の実施形態において、目標閾値レベル論理は、特定の仮想ストレージ・ドライブを目標にする割り当てられたタスク制御ブロックが、目標仮想ストレージ・ドライブのＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかを判定し、超えていなければ、割り当てられたタスク制御ブロックが、目標仮想ストレージ・ドライブの物理ストレージ・ドライブにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかもまた判定する。目標仮想ストレージ・ドライブの物理ストレージ・ドライブは、同じ物理ストレージ・ドライブにすべてマップされた仮想ストレージ・ドライブのグループを定義し、そこで、グループは、そのグループのメンバとして目標仮想ストレージ・ドライブを含む。
【００２７】
どちらの制限も超えられていない場合、タスク制御ブロックが、目標仮想ストレージ・ドライブに関して関連キャッシュ動作を実行するために、ディスパッチされる。逆に、どちらかの制限が超えられている場合、待ち行列論理は、割り当てられたタスク制御ブロックを目標仮想ストレージ・ドライブのためのＴＣＢ待ち行列に入れて、割り当てられたタスク制御ブロックのディスパッチを延期する。いずれもＲＡＩＤアレイおよび仮想ストレージ・ドライブの物理ストレージ・ドライブのためのＴＣＢの許可される数を制限しないように、キャッシュと仮想ストレージ・ドライブとの間でデータを転送するための他のキャッシュ動作が完了したときに十分な数のタスク制御ブロックの割当を解除したときに、待ち行列論理は、待機中のタスク制御ブロックをＴＣＢ待ち行列から取り除き、取り除かれたタスク制御ブロックをディスパッチして目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行する。
【００２８】
この方式では、特定の仮想ストレージ・ドライブのためのタスク制御ブロックは、任意の１つの特定のＲＡＩＤアレイまたは物理ストレージ・ドライブを多過ぎるキャッシュ動作でオーバーロードすることを回避するために、目標仮想ストレージ・ドライブのＲＡＩＤアレイのＩＤならびにキャッシュ動作の目標仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのＩＤの両方に基づいてスロットル調整され得る。結果として、システム性能は、向上し得る。他の態様および利点が、特定の適用分野に応じて、実現され得る。
【００２９】
１つまたは複数のコンピュータのシステムは、本明細書による仮想ストレージ・ドライブ管理を動作中に引き起こすまたはシステムに実行させるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを有することによって、本明細書によるデータ・ストレージ・システムにおける仮想ストレージ・ドライブ管理のために構成され得る。たとえば、１つまたは複数のコンピュータ・プログラムは、データ処理装置によって実行されるときにその装置にアクションを実行させる命令を含むことによって、データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理を実行するように構成され得る。
【００３０】
本明細書に記載の動作は、マニュアルで実行されるものとして指示されている場合を除いて、システム・オペレータの介入をほとんどまたはまったく有さずに自動的にまたはほぼ自動的に動作を実行するように構成された論理によって実行される。したがって、本明細書では、「自動」という用語は、グラフィック・ユーザ選択インターフェースへのユーザ入力などの人間の介入を有さずに１つまたは複数のハードウェアまたはソフトウェア制御された機械によって実行される動作である、完全自動も含む。本明細書では、「自動」という用語はさらに、大半は自動を含み、すなわち、ほとんどの動作（たとえば、５０％を超える）は、グラフィック・ユーザ選択インターフェースへのユーザ入力などの人間の介入を有さずに１つまたは複数のハードウェアまたはソフトウェア制御された機械によって実行され、そして、残りの動作（たとえば、５０％未満）は、マニュアルで実行される、すなわち、マニュアル動作は、動作の性能を指示するグラフィック・ユーザ選択インターフェースへのユーザ入力などの人間の介入を有して１つまたは複数のハードウェアまたはソフトウェア制御された機械によって実行される。
【００３１】
本明細書に記載の機能要素の多くは、それらの実装形態の独立性をより具体的に強調するために、「論理」と名付けられてある。たとえば、論理要素は、カスタムＶＬＳＩ回路もしくはゲート・アレイを備えるハードウェア回路、論理チップなどの市販の半導体、トランジスタ、または他の個別構成要素として実装され得る。論理要素はまた、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイスなど、プログラマブル・ハードウェア・デバイスにおいて実装され得る。
【００３２】
論理要素はまた、様々なタイプのプロセッサによって実行するためにソフトウェアにおいて実装され得る。たとえば、実行可能コードを含む論理要素は、たとえば、オブジェクト、手続き、または機能として編成され得る、コンピュータ命令の１つまたは複数の物理または論理ブロックを含み得る。それにかかわらず、識別された論理要素の実行ファイルは、物理的にともに配置される必要はないが、論理的に結合されるときに論理要素を含むおよび論理要素の述べられた目的を達成する異なる場所に記憶された異種命令を含み得る。
【００３３】
実際に、論理要素のための実行可能コードは、単一の命令、または多数の命令でもよく、いくつかの異なるコード・セグメントにわたり、異なるプログラムの間で、異なるプロセッサの間で、およびいくつかのメモリ・デバイスにわたり、分散されてもよい。同様に、動作データは、本明細書では論理要素内に識別および示され得、任意の適切な形で具現化され得、任意の適切なタイプのデータ構造体内で編成され得る。動作データは、単一データ・セットとして収集され得、または、異なるストレージ・デバイスにわたりを含む、異なる場所にわたり分散され得る。
【００３４】
記載されている技術の実装形態は、コンピュータでアクセス可能な媒体のハードウェア、方法もしくはプロセス、またはコンピュータ・ソフトウェアを含み得る。図１、２は、本明細書によるデータ・ストレージ・システムにおける仮想ストレージ・ドライブ管理を用いたコンピューティング環境の一実施形態を示す。複数のホスト１ａ、１ｂ…１ｎは、データを読み取るまたは書き込むために、ネットワーク６を介して１つまたは複数のデータ・ストレージ・デバイスまたはシステム２ａ、２ｂ、２（図２）に入出力（Ｉ／Ｏ）要求を送信し得る。ホスト１ａ、１ｂ…１ｎは、別個の物理デバイスでもよく、あるいは、たとえば、サーバのパーティションのアサインされた資源を使用して実装された仮想デバイスでもよい。類似の方式で、データ・ストレージ・システムまたはシステム２（図２）、２ａ、２ｂは、たとえば、別個の物理デバイスでもよく、あるいは、１つまたは複数のサーバのパーティションのアサインされた資源を使用して実装された仮想デバイスでもよい。
【００３５】
説明されている実施形態において、データ・ストレージ・システム２ａは、１次データ・ストレージ・システムであり、データ・ストレージ・システム２ｂは、ホストによって１次データ・ストレージ・システム２ａに記憶されたデータが２次データ・ストレージ・システム２ｂにミラーリングされる、２次データ・ストレージ・システムである。図１に示す実施形態は、単一の２次データ・ストレージ・システム２ｂを示すが、１次データ・ストレージ・システム２ａは複数の２次データ・ストレージ・システムを有し得ることが認識される。
【００３６】
各データ・ストレージ・システム２（図２）、２ａ、２ｂは、それぞれ、ストレージ１０、１０ａ、１０ｂの複数のデータ・ストレージ・ユニットに記憶されたデータにアクセスするストレージ・コントローラまたは制御ユニット４（図２）、４ａ、４ｂを含む。ストレージ１０、１０ａ、１０ｂの各データ・ストレージ・ユニットは、当技術分野において知られている、データを記憶する能力を有する任意の適切なデバイス、たとえば、物理ハード・ディスク、ソリッド・ステート・ドライブなど、を含み得る。したがって、１つの実施形態において、ストレージ１０、１０ａ、１０ｂは、１つまたは複数の順次アクセス・ストレージ・デバイス、たとえばハード・ディスク・ドライブおよび磁気テープなど、から成ってもよく、あるいは、たとえば、ソリッド・ステート・ドライブ（ＳＳＤ）などの非順次アクセス・ストレージ・デバイスを含み得る。ストレージ１０（図２）、１０ａ、１０ｂの各デバイスは、データ・ストレージのための単一の順次または非順次アクセス・デバイスを備え得、あるいは、たとえば、ＪＢＯＤ（単純ディスク束）、ＤＡＳＤ（直接アクセス・ストレージ・デバイス）、ＲＡＩＤ（独立ディスクの冗長アレイ）アレイ、仮想化デバイス、テープ・ストレージ、フラッシュ・メモリなど、データ・ストレージのためのデバイスのアレイを備え得る。
【００３７】
ある種の実施形態において、たとえば、ストレージ・ユニットは、独立型ディスクの冗長アレイ（ＲＡＩＤ）ストレージ・アレイ１１ａ（図２）、・・・１１ｎとして構成されたディスクでもよく、そこで、１つまたは複数のＲＡＩＤストレージ・アレイは、ハード・ディスクの損失が発生した場合のデータ回復を円滑にするためのＲＡＩＤ構成におけるハード・ディスクのアレイである。ストレージ１０、１０ａ、１０ｂのストレージ・ユニットはまた、ソリッド・ステート・ドライブの損失が発生した場合のデータ回復を円滑にするためのＲＡＩＤ構成におけるソリッド・ステート・ドライブなどの他のタイプのストレージでもよい。ストレージ１０（図２）、１０ａ、１０ｂのストレージ・ユニットは、データ・ストレージの副単位、たとえば、ボリューム、トラックなど、においてデータを記憶するように構成され得る。
【００３８】
各ストレージ・コントローラ４（図２）、４ａ、４ｂは、単一のまたは複数のプロセッサ・コアをそれぞれ有する、１つまたは複数のプロセッサまたは中央処理装置によって提供されるプロセッサ資源を含むＣＰＵ複合体１２（図２）を含む。この実施形態では、プロセッサ・コアは、たとえば、論理演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、または様々なレベルのキャッシュ（Ｌ１およびＬ２キャッシュなど）、あるいはその組合せなどの、命令の実行に関わるＣＰＵの構成要素を含む。プロセッサ・コアは本明細書に記載のものに加えてまたはそれらの代わりに他の論理要素を有し得ることが認識される。
【００３９】
各ストレージ・コントローラ４（図２）、４ａ、４ｂはさらに、別のデータ・ストレージ・システムからのホストまたはミラー・データからのＩ／Ｏデータ要求に応答して関連するストレージ１０（図２）、１０ａ、１０ｂにデータを書き込むことまたはそこからデータを読み取ることを含むストレージ動作を管理するためのストレージ・マネージャ２４を含むメモリ２０を有する。メモリ２０のキャッシュ２８は、異なるタイプのメモリ、たとえば、ＲＡＭ、書き込みキャッシュ、読み取りキャッシュ、ＮＶＳなど、のうちの１つまたは複数を備え得る。キャッシュを備える異なるタイプのメモリは、互いに相互運用し得る。各ストレージ・コントローラ４（図２）、４ａ、４ｂのＣＰＵ複合体１２は、プロセッサの複数のクラスタを有し得、各クラスタは、独自のアサインされたメモリ２０、ストレージ・マネージャ２４、キャッシュ２８などを有する。各クラスタをアサインされた処理およびメモリ資源は、特定の適用分野に応じて、物理的、仮想、共用、移転可能または専用になり得る。
【００４０】
ホスト１ａ・・・１ｎからの書き込みは、最初に１次ストレージ・コントローラ４ａのキャッシュ２８に書き込まれ得、次いで、１次ストレージ・システム２ａのストレージ１０ａに後でデステージされ得る。ホスト１ａ…１ｎからの読み取り要求は、対応する情報がそのキャッシュ２８において入手可能である場合には、１次ストレージ・コントローラ４ａのキャッシュ２８から満たされ得、そうでない場合には、情報は、ストレージ１０ａからキャッシュ２８にステージされ、次いで、要求しているホスト１ａ・・・１ｎに提供される。
【００４１】
１次ストレージ・コントローラ４ａのキャッシュ２８およびストレージ１０ａに最初に書き込まれたホスト１ａ・・・１ｎからの書き込みは、１次ストレージ・コントローラ４ａのストレージ・マネージャ２４によって２次ストレージ・コントローラ４ｂにミラーリングされ得る。ミラーリングされたデータは、２次ストレージ・コントローラ４ｂのキャッシュ２８に最初に書き込まれ得、次いで、２次ストレージ・システム２ｂの２次ストレージ・コントローラ４ｂによって制御されたストレージ１０ｂに後でデステージされ得る。
【００４２】
ストレージ・コントローラ４（図２）、４ａ、４ｂのメモリ２０は、ストレージ１０（図２）、１０ａ、１０ｂに記憶されたトラックのデータをキャッシュ２８に転送する事前ステージまたはステージ動作の結果として、あるいはストレージ１０（図２）、１０ａ、１０ｂの１つまたは複数の対応するトラックへのその後のデステージのためにキャッシュ２８にデータを書き込むホスト書き込み動作の結果として、キャッシュ２８に記憶されたデータを有するトラックを識別する、キャッシュ・ディレクトリ３０を含む。示されている実施形態において、キャッシュ・ディレクトリ３０は、キャッシュ２８内のすべてのトラックのハッシュ・テーブルである知られているデータ構造の形で実装される。各トラックは、トラック識別（ＩＤ）と、トラックのデータは「ダーティ」である、すなわち、ストレージ１０（図２）、１０ａ、１０ｂの対応するトラックにまだ安全にデステージされていない、かどうかに関する指示とを含む、キャッシュ・ディレクトリ３０のスロット内にハッシュされる。スロット内にハッシュされた複数のトラックは、ともにリンクされる。適切なキャッシュ・ディレクトリは他のタイプのデータ構造を使用して実装され得ることが認識される。
【００４３】
キャッシュ書き込み、ステージ、事前ステージおよびデステージ動作を含む、ストレージ・マネージャ２４のＩ／Ｏ動作を含む動作は、たとえば、メモリ２０のタスク制御ブロック（ＴＣＢ）３２を使用する。各ＴＣＢは、特定のプロセスを管理するために必要とされる情報を含むオペレーティング・システム・カーネル内のデータ構造体である。ストレージ・コントローラは、ＴＣＢを使用してデータの移動を管理することによって、ストレージにおよびストレージから、ならびにキャッシュにおよびキャッシュから、情報を移動し得る。ホストからストレージ・コントローラまたはデータへの書き込み要求発行が、１次データ・ストレージ・システムから２次データ・ストレージ・システムにミラーリングされるとき、ＴＣＢが、オペレーティング・システム・コードから割り当てられ得る。１つの実施形態において、書き込まれることになるデータが、ソースからキャッシュを介してストレージに渡されるとき、ＴＣＢは、最初から最後まで書き込みプロセスに関する情報を保持するために使用され得る。キャッシュがいっぱいである場合、ＴＣＢは、スペースを解放するために、キャッシュ内の既存のデータがデステージされ得る（すなわち、ストレージに書き込まれ得る）まで、待ち行列に入れられ得る。
【００４４】
ＴＣＢは、特定のＴＣＢによって制御されているタスクに基づいて分類され得る。たとえば、「バックグラウンド」ＴＣＢは、ホスト入出力動作に直接関係しない動作を制御するＴＣＢである。もう１つのタイプのＴＣＢは、ホスト入出力動作に直接関係する動作を制御する「フォアグラウンド」ＴＣＢである。
【００４５】
本明細書の１つの実施形態において、ストレージ・マネージャ２４は、システム性能を向上させるような方式で仮想ストレージ・ドライブを管理するように構成された仮想ストレージ・ドライブ管理論理３４を含む。ストレージ・マネージャ２４はさらに、２次データ・ストレージ・システム２ｂによって表されるような２次データ・ストレージ・システムの２次ボリューム２（図１）として１次データ・ストレージ・システム２ａの１次ボリューム１（図１）のコピーを同期して生成するように構成されたストレージ・マネージャ２４のデータ複製論理３５（図２）を含む。１次−２次ペアのボリューム、ボリューム１、ボリューム２は、１次ボリューム１への更新が、各２次ボリューム２に同期してミラーリングされるような、同期コピーまたはミラー関係３７にある。
【００４６】
１次および２次ストレージ・コントローラ４ａ、４ｂ（図１）のためのデータ複製論理３５によって保持され得る、１つまたは複数のコピー関係３７は、１次ストレージ・ドライブ１０ａのストレージ場所の更新がミラーリングされる、すなわち、１つまたは複数の対応する２次ストレージ・ドライブ１０ｂのストレージ場所にコピーされるように、ミラー関係のストレージ・ドライブ１０ｂによって表されるような２次ストレージ・ドライブのそれぞれにおける１次ストレージ・ドライブ１０ａおよび対応する２次ストレージ場所に１次ストレージ場所を関連付ける。たとえば、ストレージ・ドライブ１０ａの１次ストレージ・ボリューム１（図１）内のソース・ストレージ場所は、ミラー・コピー関係３７（図２）に従ってストレージ・ドライブ１０ｂの２次ボリューム２の目標ストレージ場所にミラー・データ複製動作において同期してミラーリングされ得る。同様に、ストレージ・ドライブ１０ａの１次ストレージ・ボリューム１（図３）内のソース・ストレージ場所は、ミラー・コピー関係３７（図２）に従って別の２次データ・ストレージ・システムの別の２次ボリューム２の付加的目標ストレージ場所にミラー・データ複製動作において同期してミラーリングされ得る。
【００４７】
説明されている実施形態において、コピー関係３７は、ミラー関係３７の１次（ソース）ストレージ場所への更新がミラー関係３７の２次（目標）ストレージ場所に同期してミラーリングされる、ストレージ場所のペアのピア・ツー・ピアの同期ミラー関係を含む。たとえば、同期などの他のタイプのコピー関係が、特定の適用分野に応じて、確立され得ることが認識される。
【００４８】
図１に示す構成において、ストレージ・コントローラ４ａおよびデータ・ストレージ・ドライブ１０ａは、１次データ・ストレージ・システム２ａの１次ストレージ制御ユニットおよび１次ストレージとしてそれぞれ構成されている。同様に、ストレージ・コントローラ４ｂおよびそれのデータ・ストレージ・ドライブ１０ｂは、２次データ・ストレージ・システム２ｂの２次ストレージ制御ユニットおよび２次ストレージとしてそれぞれ構成されている。したがって、図１に示された構成では、ストレージ・コントローラ４ａは、１次ストレージ・コントローラまたは制御ユニット４ａと称されることになり、そして、データ・ストレージ・ドライブ１０ａは、１次ストレージ・ドライブ１０ａと称されることになる。同様に、ストレージ・コントローラまたは制御ユニット４ｂは、２次ストレージ・コントローラまたは制御ユニット４ｂと称されることになり、そして、データ・ストレージ・ドライブ１０ｂは、２次データ・ストレージ・ドライブ１０ｂと称されることになる。この実施形態では、コピー関係が、複数目標関係とも称される、１対多の関係になり得るような、複数の２次データ・ストレージが存在し得る。
【００４９】
特定のコピー関係において、ソース・ユニットは、しばしば、１次と称され、目標ユニットは、しばしば、２次と称される。複製関係は、１次データ・ストレージ・ドライブ１０ａおよび２次データ・ストレージ・ドライブ１０ｂのストレージ・ユニット間で定義される。データ・ストレージ・ドライブ１０ａを「１次」と称するおよびデータ・ストレージ１０ｂを「２次」と称するにもかかわらず、データ・ストレージ１０ａ、１０ｂの特定のストレージ・ユニットは、特定のコピー関係に応じて、１次（またはソースの役割）および２次（または目標の役割）の両方を果たし得る。
【００５０】
データ複製システムにおいて、データは通常は、たとえば、１次ストレージ・システム内の、ボリューム１（図１）などの１次ボリュームと、たとえば、１次ボリュームにおいて保持されたデータの同一コピーを含む２次ストレージ・システム内の、ボリューム２などの対応する２次ボリュームとを含む、ボリューム・ペアにおいて保持される。１次および２次ボリュームは、ソース・ボリュームとも称される１次ボリュームのデータが、目標ボリュームとも称される２次ボリュームにコピーされる、コピー関係によって識別される。１次および２次ストレージ・コントローラは、１次および２次デバイスへのアクセスを制御するために使用され得る。たとえば、ボリューム１などの１次デバイスは、２次データ・ストレージ・システム２ｂのボリューム２などの複数の２次デバイスと１対多のミラー複数目標関係にあり得る。
【００５１】
１次ストレージ・コントローラ４ａは、第１のサイトに位置し、２次ストレージ・コントローラ４ｂは、第１のサイトとは地理的にまたは機能的に遠隔でもよい第２のサイトに位置する。したがって、この例では、第１のサイトはローカル・サイトにあってもよく、そして、第２のサイトは、ローカル・サイトからおよび互いから短いまたは長い地理的距離で隔てられた地理的に遠隔のサイトにあってもよい。別法として、ローカルおよび遠隔のサイトは、ネットワーク６の、同じ一般的な地理的場所の異なる建物内、同じ建物の異なる部屋内、同じ部屋内の異なる機械内、または同じ機械の異なる部分もしくはパーティション内など、比較的近くにあってもよい。
【００５２】
１つの実施形態において、ストレージ・デバイス１０、１０ａ、１０ｂは、たとえばハード・ディスク・ドライブおよび磁気テープなどの、１つまたは複数の順次アクセス・ストレージ・デバイスからなり得、あるいは、たとえば、ソリッド・ステート・ドライブ（ＳＳＤ）などの非順次アクセス・ストレージ・デバイスを含み得る。各ストレージ・デバイス１０、１０ａ、１０ｂは、単一の順次または非順次アクセス・ストレージ・デバイスを備え得、あるいは、たとえば、ＪＢＯＤ（単純ディスク束）、ＤＡＳＤ（直接アクセス・ストレージ・デバイス）、ＲＡＩＤ（独立ディスクの冗長アレイ）アレイ、仮想化デバイス、テープ・ストレージ、フラッシュ・メモリなどの、ストレージ・デバイスのアレイを備え得る。
【００５３】
コピー関係を管理するデータ複製論理３５の１つのモードは、本明細書に従って必要に応じて修正されたピア・ツー・ピアの遠隔コピー（ＰＰＲＣ：peer-to-peer remote copy）プログラムなどの、同期コピー動作で実装され得る。記載されている動作は、本明細書に従って必要に応じて修正された他のコピー・プログラムまたは他のグローバル回復プログラムなどの、他のプログラムで実装され得る。
【００５４】
ストレージ・マネージャ２４はさらに、ストレージ１０からキャッシュ２８にデータをステージするおよびまたキャッシュ２８からストレージ１０にデータをデステージするキャッシュ動作論理４０を含む。１つの実施形態において、キャッシュ動作論理４０は、ストレージ１０（図２）、１０ａ、１０ｂ（図１）にデステージされることになるダーティ・データについてキャッシュ・ディレクトリ３０を定期的に走査する。安全データ・コミット・プロセスとしばしば称される１つのタイプのキャッシュ動作は、安全データ・コミット走査開始時間に先立ってキャッシュ２８に書き込まれたものはすべて、無事にデステージされ、ストレージ１０（図２）、１０ａ、１０ｂ（図１）に安全に記憶されていることをオペレータに保証することを可能にする。論理４０の他のタイプのキャッシュ動作は、特定の適用分野に応じて、他のイベントに関連してステージおよびデステージ動作を実行する。
【００５５】
示されている実施形態において、仮想ストレージ・ドライブ管理論理３４およびキャッシュ動作論理４０を含むストレージ・マネージャ２４は、メモリ２０に記憶されたおよびＣＰＵ複合体１２によって実行されるソフトウェアとして描かれている。しかしながら、ストレージ・マネージャ２４の論理機能は、特定の適用分野に応じて、ハードウェア、ソフトウェア、ファームウェアまたはそれらのうちの１つもしくは複数の組合せとして実装され得ることが認識される。
【００５６】
１つの実施形態において、ストレージ・マネージャ２４（図２）はキャッシュ２８にデータを記憶し、トラックにおいてキャッシュ２８とストレージ１０（図２）、１０ａ、１０ｂ（図１）との間でデータを転送することができる。キャッシュにトラックを書き込む際に、ＴＣＢは、トラックを書き込むためのキャッシュ・ストレージの１つまたは複数のセグメントを割り当てる。同様に、１つの実施形態において、ストレージ・マネージャ２４（図２）は、トラックにおいて１次ストレージ・ドライブ１０ａ（図１）から２次ストレージ・ドライブ１０ｂにデータを転送することができる。本明細書では、トラックという用語は、ディスク・ストレージ・ユニット、ソリッド・ステート・ストレージ・ユニットまたは他のタイプのストレージ・ユニットのデータまたはストレージの副単位を指し得る。トラックに加えて、ストレージ・ユニットは、ビット、バイト、単語、セグメント、ページ、ブロック（たとえば、論理ブロック・アドレス（ＬＢＡ：Logical Block Address））、シリンダ、セグメント、エクステント、ボリューム、論理デバイスなどのストレージもしくはデータまたはその任意の部分の他の副単位、あるいは転送またはストレージに適した他の副単位を有し得る。したがって、本明細書では、セグメントは、トラックの副単位である。したがって、本明細書に従ったキャッシュ書き込みおよびキャッシュ動作プロセスにおいて処理されるデータの副単位のサイズは、特定の適用分野に応じて、異なるものになり得る。したがって、本明細書では、「トラック」という用語または「セグメント」という用語は、データ・ストレージまたは転送の任意の適切な副単位を指す。
【００５７】
システム構成要素１ａ（図１）、１ｂ・・・１ｎ、４（図２）、６は、これらの構成要素の間の通信を可能にするネットワーク６に接続される。したがって、ネットワークは、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、インターネット、広域ネットワーク（ＷＡＮ）、ピア・ツー・ピア・ネットワーク、ワイヤレス・ネットワーク、アービトレート型ループ・ネットワークなどを備え得るファブリックを含む。ストレージ・サブシステムからホスト１ａ、１ｂ、・・・１ｎへの通信パスは、たとえば、ファイバ接続（ＦＩＣＯＮ（Ｒ））などの特定のホスト連結プロトコルに基づき得る。ファブリックの他の通信パスは、たとえば、ファイバ・チャネル・アービトレート型ループ構成、シリアル・ループ・アーキテクチャまたはバス・インターフェース、たとえばＰＣＩエクスプレス・インターフェースなどの周辺構成要素相互接続（ＰＣＩ）インターフェース、を備え得る。ファブリックの通信パスはまた、たとえば、各ノードが個々のネットワーク（インターネット・プロトコル）アドレスを有するような、イーサネット（Ｒ）・ネットワークの一部にもなり得る。モデム電話パス、ワイヤレス・ネットワークなどの他のタイプの通信パスが、特定の適用分野に応じて、使用され得る。
【００５８】
通信パスに関連する通信ソフトウェアは、もしあれば、通信プロトコルおよび通信プロトコルによる通信ハードウェアの動作を制御する命令および他のソフトウェアを含む。特定の適用分野に応じて、他の通信パス・プロトコルが使用され得ることが認識される。
【００５９】
図３のホスト１ａによって表されるような標準的ホストは、ＣＰＵ複合体２０２と、ストレージ・コントローラ４、４ａ、４ｂを介してストレージ１０（図２）、１０ａ、１０ｂからデータを読み取るおよびこれらにデータ更新を書き込むために協力するオペレーティング・システム２０６およびアプリケーション２０８を有するメモリ２０４とを含む。適切なオペレーティング・システムの一例は、ｚ／ＯＳ（Ｒ）オペレーティング・システムである。他のタイプのオペレーティング・システムが、特定の適用分野に応じて、使用され得ることが認識される。
【００６０】
図４は、仮想ストレージ・ドライブ管理論理３４によって作成された仮想ストレージ・ドライブのグループから取得された仮想ストレージ・ドライブを有するＲＡＩＤアレイを構成するための仮想ストレージ・ドライブ管理論理３４（図２）の動作の１つの例を示す。１つの実施形態において、仮想ストレージ・ドライブ管理論理３４は、物理ストレージ・ドライブのストレージ・エリアをさらに分割してより小さいストレージ・エリアのグループにすることによって物理ストレージ・ドライブから仮想ストレージ・ドライブのグループを作成する（ブロック２５０、図４）ように構成される。図５は、物理ストレージ・エリアがより小さい物理ストレージ・エリアのグループにさらに分けられてある、データを記憶するように構成された物理ストレージ・エリアを有する、物理ストレージ・ドライブ、この例ではドライブＡ、の一例を示す。この例では、物理ストレージ・ドライブＡの物理ストレージ・エリアは、４つのより小さいストレージ・エリア、エリアＡ１、エリアＡ２・・・エリア４、にさらに分けられる。結果として得られるさらに分けられた物理ストレージ・エリアのサイズおよび数は、特定の適用分野に応じて、異なるものになり得ることが認識される。たとえば、１５テラバイト物理ストレージ・ドライブは、それぞれが１テラバイトの仮想ストレージ容量を有する、１５個のより小さい仮想ストレージ・ドライブに断片化され得る。
【００６１】
物理ストレージ・ドライブの４つのより小さいストレージ・エリア、エリアＡ１、エリアＡ２・・・エリア４、は、グループ、グループＡのストレージ・エリアにマップされた仮想ストレージ・ドライブも含む指定されたグループＡ、を形成する。図６のテーブルの行に示されているように、仮想ストレージ・ドライブ管理論理３４は、仮想ストレージ・ドライブのグループＡの単一仮想ストレージ・ドライブにグループＡの各物理ストレージ・エリアをマップするように構成される。したがって、グループＡの物理ストレージ・エリアＡ１は、グループＡの単一仮想ストレージ・ドライブＡ１にもマップされ、グループＡの物理ストレージ・エリアＡ２は、グループＡの単一仮想ストレージ・ドライブＡ２にもマップされる、など。この方式では、仮想ストレージ・ドライブＡ１のストレージ能力は、物理ストレージ・ドライブＡの物理ストレージ・エリアＡ１に提供され、仮想ストレージ・ドライブＡ２のストレージ能力は、同じ物理ストレージ・ドライブＡの物理ストレージ・エリアＡ２に提供される、など。仮想ストレージ・ドライブ、ドライブＡ１〜ドライブＡ４、のストレージ能力は、同じ物理ストレージ・ドライブ、ドライブＡ、によって提供されるので、仮想ストレージ・ドライブ、ドライブＡ１〜ドライブＡ４、は、同じグループ、すなわち、この例ではグループＡ、にアサインされる。ストレージ・システム２（図２）の付加的物理ドライブは、さらに分けられ、類似の方式で仮想ストレージ・ドライブの他のグループにマップされ得る。
【００６２】
グループの各仮想ストレージ・ドライブがそのグループの同じ物理ストレージ・ドライブにマップされる仮想ストレージ・ドライブのグループを形成して、ＲＡＩＤアレイは、物理ストレージ・ドライブのためのＲＡＩＤ割当手続きにいくらか関連する類似した方式でグループの個々の仮想ストレージ・ドライブから構成され得る。しかしながら、以下でさらに詳しく説明されるように、本明細書の１つの実施形態において、仮想ストレージ・ドライブは、物理ストレージ・ドライブの損失によるデータの損失を減らす方式でおよび仮想ストレージ・ドライブの性能を向上させることができる方式でＲＡＩＤアレイを構築するように選択される。
【００６３】
図４の実施形態では、ＲＡＩＤアレイを追加すると判定したとき（ブロック２５４、図４）、仮想ストレージ・ドライブ管理論理３４のＲＡＩＤアレイ論理２６０（図７）は、仮想ストレージ・ドライブを仮想ストレージ・ドライブのＲＡＩＤ（独立ディスクの冗長アレイ）アレイに割り当てるように構成される。１つの実施形態において、仮想ストレージ・ドライブ管理論理３４のＲＡＩＤアレイ論理２６０（図７）は、識別されたＲＡＩＤアレイが形成されるように、識別されたグループの仮想ストレージ・ドライブが識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さない限り、識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さず任意のＲＡＩＤアレイに割り当てられたより少ない数の仮想ストレージ・ドライブ有する仮想ストレージ・ドライブのグループを識別することを含む自動グループ識別およびドライブ割当動作を実行するように構成される。したがって、図４の実施形態では、ＲＡＩＤアレイ論理２６０（図７）は、任意のＲＡＩＤアレイに割り当てられた最小数の仮想ストレージ・ドライブを有する仮想ストレージ・ドライブのグループを識別し（ブロック２６４、図４）、識別されたグループは識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを既に有するかどうかを判定する（ブロック２６８、図４）ように構成される。有する場合は、ＲＡＩＤアレイ論理２６０（図７）は、任意のＲＡＩＤアレイに割り当てられた次の最小数の仮想ストレージ・ドライブを有する仮想ストレージ・ドライブのグループを識別し（ブロック２７２、図４）、識別されたグループは識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを既に有するかどうかを再び判定する（ブロック２６８、図４）ように構成される。
【００６４】
１）形成されている識別されたＲＡＩＤアレイに割り当てられた他の仮想ストレージ・ドライブを有さないことと、２）形成されている識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さない仮想ストレージ・ドライブのその他のグループと比較して任意のＲＡＩＤアレイに割り当てられた最も少ない数の仮想ストレージ・ドライブを有することとの両方の条件を１グループの仮想ストレージ・ドライブが満たした後は、グループ識別およびドライブ割当動作はさらに、１つの仮想ストレージ・ドライブを、識別されたグループから、形成されている識別されたＲＡＩＤアレイに割り当てることを含む。したがって、示されている実施形態において、ＲＡＩＤアレイ論理２６０（図７）はさらに、識別されたグループから、形成されている識別されたＲＡＩＤアレイに１つの（そして唯一の）仮想ストレージ・ドライブを割り当てる（ブロック２７６、図４）ように構成される。
【００６５】
グループ識別およびドライブ割当動作を実行中のＲＡＩＤアレイ論理２６０（図７）はさらに、形成されているＲＡＩＤアレイが完成したかどうかを判定する（ブロック２８０、図４）ように構成される。完成していない場合には、ＲＡＩＤアレイの形成が完了する（ブロック２８４、図４）まで、ブロック２７２、２６８および２７６の自動動作が繰り返される。仮想ストレージ・ドライブが、形成されているＲＡＩＤアレイに追加されるたびに、仮想ストレージ・ドライブは、以下の条件、１）形成されている識別されたＲＡＩＤアレイに割り当てられた他の仮想ストレージ・ドライブを有さないことと、２）形成されている識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さない仮想ストレージ・ドライブのその他のグループと比較して任意のＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブの数が最も少ないこととの両方を満たすグループから追加される。
【００６６】
結果として、任意の１つのＲＡＩＤアレイの各仮想ストレージ・ドライブは、ＲＡＩＤアレイが同じ物理ストレージ・ドライブからの複数の仮想ストレージ・ドライブを有さないような、異なる固有のグループから選択される。この方式では、単一物理ストレージ・ドライブの損失によるＲＡＩＤアレイ内の２つ以上の仮想ドライブの損失は防がれる。したがって、単一物理ドライブの故障は、任意の１つのＲＡＩＤアレイの最大でも単一の仮想ストレージ・ドライブに影響を及ぼすことになる。その結果として、知られているＲＡＩＤアレイ技術を使用して、単一物理ストレージ・デバイス故障の発生時には最大でも単一の仮想ドライブのみが失われることになるので、ＲＡＩＤアレイのデータは再構築され得る。
【００６７】
さらに、任意の１つのＲＡＩＤアレイの各仮想ストレージ・ドライブは、形成されている識別されたＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブを有さない仮想ストレージ・ドライブのその他のグループと比較して、任意のＲＡＩＤアレイに割り当てられた最も少ない数の仮想ストレージ・ドライブを有するグループから選択されるので、ＲＡＩＤアレイに割り当てられた仮想ストレージ・ドライブは、物理ドライブの間でより均一に配分され得る。これ故に、任意の１つの物理ドライブをオーバーロードすることによる性能低下は、改善され得る。
【００６８】
図６の例では、グループＡの仮想ストレージ・ドライブＡ１は、ＲＡＩＤアレイＡに割り当てられている。しかしながら、図６の例では、図４に関して前述されたグループ識別およびドライブ割当動作に従って、グループＡの他の仮想ストレージ・ドライブは、同じＲＡＩＤアレイに割り当てられない。したがって、グループＡの仮想ストレージ・ドライブＡ２は、ＲＡＩＤアレイＤに割り当てられ、グループＡの仮想ストレージ・ドライブＡ３はＲＡＩＤアレイＣに割り当てられ、グループＡの仮想ストレージ・ドライブＡ４は、まだ任意のＲＡＩＤアレイに割り当てられており、したがって、割り当てられていないものとして指示されている。
【００６９】
図８は、２つのカテゴリ−ａ）１つの仮想ドライブ、または物理ストレージ・ドライブにマップされた仮想ストレージ・ドライブのグループの仮想ドライブのサブセットのみに影響を及ぼすローカル・エリア・エラーおよびｂ）物理ストレージ・ドライブのすべての仮想ストレージ・ドライブに影響を及ぼすストレージ・ドライブ内のグローバル・エリア・エラー−にストレージ・ドライブからのエラーを分類し、処理するための仮想ストレージ・ドライブ管理論理３４（図２）の自動動作の１つの例を示す。図８の例では、仮想ストレージ・ドライブ管理論理３４（図７）は、仮想ストレージ・ドライブ内のエラーを検出する（ブロック３０８、図８）ようにおよび検出されたエラーを有する仮想ドライブにどの物理ストレージ・ドライブがマップされているかを自動的に識別する（ブロック３１２、図８）ように構成されたエラー処理論理３０４を含む。したがって、たとえば、エラーが、仮想ストレージ・ドライブＡ２において検出された場合、図６の仮想ドライブ・マッピング・テーブルは、グループＡの仮想ストレージ・ドライブＡ２は物理ストレージ・ドライブＡにマップされていることを示す。
【００７０】
エラー処理論理３０４はさらに、識別された物理ストレージ・ドライブのどの１つまたは複数のストレージ・エリアがエラーによる影響を受けるかを識別する（ブロック３１６、図８）ように構成される。図９の例では、物理ストレージ・ドライブＡのストレージ・エリア３２０が検出されたエラーによる影響を受けると判定される。たとえば、ストレージ・エリア３２０は、媒体エラーを示し得る。図９に示すように、影響を受けるストレージ・エリア３２０は、本質的にローカルであり、すなわち、エラーの影響を受けるストレージ・エリア３２０は、物理ストレージ・ドライブＡのすべての物理ストレージ・エリアではなく一部の物理ストレージ・エリアに及ぶ。したがって、図９の例では、影響を受けるストレージ・エリア３２０は、物理ストレージ・エリア、エリアＡ２およびエリアＡ３、には及ぶが、物理ストレージ・ドライブＡの物理ストレージ・エリア、エリアＡ１またはエリアＡ４、には及ばない。したがって、この例では、検出されたエラーは、物理ストレージ・ドライブＡのローカル・エリア（ローカル・エリア３２０）に限定されると判定される（ブロック３１６、図８）。
【００７１】
検出されたエラーは物理ストレージ・ドライブのローカル・エリアに限定されると判定された（ブロック３１６、図８）場合、エラー処理論理３０４はさらに、エラーの影響を受けるローカル・ストレージ・エリアにマップされた仮想ストレージ・ドライブを、または複数の場合は、仮想ストレージ・ドライブのセットを識別する（ブロック３３０、図８）ように構成される。前述のように、図９の例では、影響を受けるストレージ・エリア３２０は、物理ストレージ・ドライブＡの物理ストレージ・エリア、エリアＡ２およびエリアＡ３、に及ぶが、物理ストレージ・エリア、エリアＡ１またはエリアＡ４、には及ばない。図６の仮想ドライブ・マッピング・テーブルは、仮想ストレージ・エリアＡ２が仮想ストレージ・ドライブＡ２マップされていることを示す。加えて、仮想ストレージ・エリアＡ３は、仮想ストレージ・ドライブＡ３にマップされている。それに応じて、仮想ストレージ・ドライブ、ドライブＡ２およびドライブＡ３、は、影響を受けるローカル・エリア３２０にマップされているものとして自動的に識別される（ブロック３３０、図８）。
【００７２】
エラーの影響を受けるローカル・ストレージ・エリア３２０にマップされた１つまたは複数の仮想ストレージ・ドライブを識別して、エラー処理論理３０４はさらに、識別された仮想ストレージ・ドライブのセット、ドライブＡ２およびドライブＡ３、のエラー処理ルートを自動的に開始する（ブロック３３４、図８）ように構成される。たとえば、図６の仮想ドライブ・マッピング・テーブルは、仮想ストレージ・ドライブＡ２がＲＡＩＤアレイＤに割り当てられたことを示す。それに応じて、新しい仮想ストレージ・ドライブが、ＲＡＩＤアレイＤから取り除かれた故障した仮想ストレージ・ドライブＡ２のＲＡＩＤアレイＤにおいて代用され得る。代用仮想ストレージ・ドライブ（substitute virtual storage drive）は、ＲＡＩＤアレイＤに既に割り当てられた任意の仮想ストレージ・ドライブを有さないグループから図４に関連して前述した方式で選択される。故障した仮想ストレージ・ドライブＡ２に予め記憶されたデータは、知られているＲＡＩＤ技術を使用する代用仮想ストレージ・ドライブで再構築され得る。
【００７３】
類似の方式で、図６の仮想ドライブ・マッピング・テーブルは、仮想ストレージ・ドライブＡ３はＲＡＩＤアレイＣに割り当てられたことを示す。それに応じて、新しい仮想ストレージ・ドライブが、図４に関連して前述した方式で故障した仮想ストレージ・ドライブＡ３のＲＡＩＤアレイＣにおいて代用され得る。故障した仮想ストレージ・ドライブＡ３に予め記憶されたデータは、知られているＲＡＩＤ技術を使用する代用仮想ストレージ・ドライブで再構築され得る。
【００７４】
したがって、エラー処理論理３０４（図７）が、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは識別された物理ストレージ・ドライブの全ストレージ・エリアより少ないと判定した場合、検出されたエラーによる影響を受けるものとして識別された結合されたエラーの影響を受けるストレージ・エリアにマップされた仮想ストレージ・ドライブのセットが、識別され、そして、識別された仮想ドライブのセットためのエラー処理ルーチンが、開始される。この方式では、エラー処理ルーチンは、エラーによる影響を受けない同じ物理ストレージ・ドライブ（この例では物理ストレージ・ドライブＡ）の仮想ストレージ・ドライブ（この例では、たとえば、仮想ストレージ・ドライブ、ドライブＡ１およびドライブＡ４）をバイパスしつつ、物理ストレージ・ドライブの影響される仮想ストレージ・ドライブに集中し得る。結果として、エラー処理の効率は、向上し得る。
【００７５】
エラー処理論理３０４（図７）が、識別された物理ストレージ・ドライブのすべてのストレージ・エリアは検出されたエラーの影響を受けると判定した（ブロック３１６、図８）場合、エラー処理ルーチンが、識別された物理ストレージ・ドライブのすべての仮想ストレージ・ドライブについて開始され得る（ブロック３３８、図８）。たとえば、識別された物理ストレージ・ドライブは、ドライブ全体の壊滅的な故障を被った可能性がある。したがって、検出されたエラーが、物理ストレージ・ドライブのすべての仮想ストレージ・ドライブに影響を及ぼすグローバル・エリア・エラーである場合、グローバル・エリア・エラーによる影響を受けるおよびＲＡＩＤアレイに割り当てられた各仮想ストレージ・ドライブは、関連するＲＡＩＤアレイから取り除かれ得、新しい仮想ストレージ・ドライブが、故障した仮想ストレージ・ドライブのＲＡＩＤアレイに割り当てられた任意の仮想ストレージ・ドライブを既に有さないグループから選択され得る。
【００７６】
図１０の例では、物理ストレージ・ドライブＡのストレージ・エリア３４２は検出されたエラーによる影響を受けると判定される。図１０に示すように、エラーの影響を受けるストレージ・エリア３４２は、本質的にグローバルである、すなわち、エラーの影響を受けるストレージ・エリア３４２は、物理ストレージ・ドライブＡのすべての物理ストレージ・エリアに及ぶ。したがって、図１０の例において、影響を受けるストレージ・エリア３４２は、物理ストレージ・ドライブＡの物理ストレージ・エリア、エリアＡ１、エリアＡ２、エリアＡ３およびエリアＡ４、のそれぞれに及ぶ。したがって、この例では、検出されたエラーは物理ストレージ・ドライブＡのすべてのストレージ・エリアに及ぶグローバル・エリア・エラーであると判定される（ブロック３１２、図８）。
【００７７】
検出されたエラーは物理ストレージ・ドライブのローカル・エリアに限定されないと判定された（ブロック３１２、図８）場合、エラー処理論理３０４はさらに、図１０の例における物理ストレージ・ドライブＡである影響される物理ストレージ・ドライブのすべての仮想ストレージ・ドライブのためのエラー処理ルーチンを開始する（ブロック３３８、図８）ように構成される。図６の仮想ドライブ・マッピング・テーブルは、物理ストレージ・ドライブＡの物理ストレージ・エリアＡ１にマップされた仮想ストレージ・ドライブＡ１がＲＡＩＤアレイＡに割り当てられたことを示す。それに応じて、新しい仮想ストレージ・ドライブは、ＲＡＩＤアレイＡから取り除かれた故障した仮想ストレージ・ドライブＡ１のためのＲＡＩＤアレイＡにおいて代用され得る。代用仮想ストレージ・ドライブは、ＲＡＩＤアレイＡに割り当てられた任意の仮想ストレージ・ドライブを既に有さないグループから、図４に関連して前述した方式で選択される。故障した仮想ストレージ・ドライブＡ２に予め記憶されたデータは、知られているＲＡＩＤ技術を使用する代用仮想ストレージ・ドライブで再構築され得る。
【００７８】
類似の方式で、故障した仮想ストレージ・ドライブ、ドライブＡ２およびドライブＡ３、は、同じＲＡＩＤアレイに割り当てられた２つの仮想ストレージ・ドライブが同じグループまたは物理ストレージ・ドライブにマップされないように、前述のようにそれらのＲＡＩＤアレイ、アレイＤおよびアレイＣ、からそれぞれ取り除かれ、異なるグループから代用され得る。故障した仮想ストレージ・ドライブ、ドライブＡ２およびドライブＡ３、に予め記憶されたデータは、知られているＲＡＩＤ技術を使用するそれらの関連するＲＡＩＤアレイのための代用仮想ストレージ・ドライブで再構築され得る。
【００７９】
したがって、エラー処理論理３０４（図７）が、検出されたエラーによる影響を受けるものとして識別された結合されたストレージ・エリアは識別された物理ストレージ・ドライブの全ストレージ・エリアと等しいと判定した場合、影響を受ける物理ストレージ・ドライブにマップされたすべての仮想ストレージ・ドライブ、が識別され、そして、物理ストレージ・ドライブの仮想ストレージ・ドライブのそれぞれのためのエラー処理ルーチンが、開始される。図６の例では、グローバル・エリア３４２（図１０）の物理ストレージ・エリアＡ４は、仮想ストレージ・ドライブに割り当てられておらず、したがって、任意のＲＡＩＤアレイから取り除かれる必要はない。影響を受ける仮想ストレージ・ドライブの限定されたセット（ブロック３３４）または影響を受ける仮想ストレージ・ドライブの完全なセット（ブロック３３８）のいずれかのエラー処理ルートが完了したとき、エラー処理論理３０４（図７）のエラー処理は完了する（ブロック３５０、図８）。
【００８０】
本明細書の別の実施形態において、物理ストレージ・ドライブは、多数のＲＡＩＤアレイを横断する仮想ストレージ・ドライブを介して共有され得るので、１つの物理ストレージ・ドライブは、どのＲＡＩＤアレイが個々の物理ストレージ・ドライブによってサポートされるかに応じて、他の物理ストレージ・ドライブよりはるかに高い作業負荷のステージまたはデステージ動作を経験し得ることが認識される。これ故に、ステージまたはデステージ動作を受信するＲＡＩＤアレイが、比較的少ない物理ストレージ・ドライブの間に集中する場合に、ＲＡＩＤアレイに基づいてＴＣＢをスロットル調整した事前のステージまたはデステージ動作は、特定の物理ストレージ・ドライブでのオーバーロードを適切に防がないことがある。特定の物理ストレージ・ドライブが、物理ストレージ・ドライブによってサポートされるＲＡＩＤアレイを対象とするステージまたはデステージ動作でオーバーロードされる場合、オーバーロードされる物理ストレージ・ドライブは、オーバードライブを経験し、入出力動作でタイムアウトし得、それにより、性能に悪影響を及ぼし得る。
【００８１】
図１１は、ストレージ・ドライブとキャッシュとの間のステージおよびデステージ動作を含むキャッシュ動作を管理するための仮想ストレージ・ドライブ管理論理３４（図２）の動作の１つの例を示す。本明細書による仮想ストレージ・ドライブ管理を用いるストレージ・コントローラまたは他のコンピュータ・システムのさらに別の実施形態において、キャッシュ動作論理４０の目標閾値レベル論理４０４（図１２）は、特定の（目標）ＲＡＩＤアレイの目標仮想ストレージ・ドライブを対象とするキャッシュ動作を制御するための割り当てられたタスク制御ブロックが、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの第１の制限を超えているかどうかを判定し、超えていなければ、目標仮想ストレージ・ドライブを対象とするキャッシュ動作を制御するための割り当てられたタスク制御ブロックが、目標仮想ストレージ・ドライブがメンバである仮想ストレージ・ドライブ（同じ物理ストレージ・ドライブにすべてマップされた）の目標グループにアサインされる割り当てられるタスク制御ブロックの第２の制限を超えているかどうかもまた判定する。どの制限も超えていない場合、タスク制御ブロックは、関連キャッシュ動作を実行するために、ディスパッチされる。
【００８２】
逆に、どちらかの制限が超えられている場合、待ち行列論理４０６（図１２）は、割り当てられたタスク制御ブロックのディスパッチを延期するために、割り当てられたタスク制御ブロックを、目標仮想ストレージ・ドライブについてのＴＣＢ待ち行列に入れ、そのＴＣＢ待ち行列の一例は、図１３の４０８に示されている。ＴＣＢは、目標仮想ストレージ・ドライブを対象とする十分な数のＴＣＢの割当解除を待つためのＴＣＢ待ち行列４０８の後部の４０８ａにおいて待ち行列に加えられる。ＴＣＢは、それらがその後に待ち行列から取り除かれ、ディスパッチされてキャッシュ動作を実行することになる順番で、ＴＣＢ待ち行列に加えられる。それに応じて、最前部の４０８ｂにおけるＴＣＢは、ＴＣＢ待ち行列のいずれの他のＴＣＢよりも前にＴＣＢ待ち行列４０８から取り除かれることになる。逆に、ＴＣＢ待ち行列の最終の４０８ａに最初に位置付けられたそのＴＣＢの前に位置付けられたすべてのＴＣＢが、ＴＣＢ待ち行列の目標仮想ストレージ・ドライブのためのキャッシュ動作を実行するためにディスパッチされた後に、最終の４０８ａにあるＴＣＢは、待ち行列から取り除かれ、ディスパッチされることになる。
【００８３】
ＴＣＢは、ＴＣＢによって制御されるキャッシュ動作が完了したときに、割当解除される。目標仮想ストレージ・ドライブを対象とする十分な数のタスク制御ブロックを割当解除したとき、待ち行列論理４０６（図１２）は、目標仮想ストレージ・ドライブのためのＴＣＢ待ち行列４０８の最前部の４０８ｂ（図１３）から待機中のタスク制御ブロックを取り除き、取り除かれたタスク制御ブロックをディスパッチして目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行する。示されている実施形態では、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントも、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていない場合、そして、目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、そのすべてが同じ物理ストレージ・ドライブにマップされた目標仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていない場合に、目標仮想ストレージ・ドライブを対象とする十分な数のタスク制御ブロックの割当解除は、満たされる。この方式では、タスク制御ブロックは、多過ぎるキャッシュ動作で任意の１つの特定のＲＡＩＤアレイまたは物理ストレージ・ドライブをオーバーロードすることを回避するために、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイのＩＤならびに目標仮想ストレージ・ドライブの目標グループ（または物理ストレージ・ドライブ）のＩＤの両方に基づいてスロットル調整され得る。結果として、システム性能は、向上し得る。
【００８４】
図１１の実施形態では、キャッシュ動作論理４０（図１２）は、目標ＲＡＩＤアレイ、たとえば、目標仮想ストレージ・ドライブＡ１を含むＲＡＩＤアレイＡ（図６）、と本明細書で称される特定のＲＡＩＤアレイの仮想ストレージ・ドライブＡ１（図６）などの目標仮想ストレージ・ドライブと本明細書で称される、特定の仮想ストレージ・ドライブとキャッシュとの間でデータを転送するためにキャッシュ動作を制御するために割り当てられたタスク制御ブロックを受信する（ブロック４１０、図１１）ように構成される。割り当てられたＴＣＢの目標仮想ストレージ・ドライブはまた、たとえば、目標仮想ストレージ・ドライブＡ１を含むグループＡ（図６）などの、本明細書で目標グループと称される、仮想ストレージ・ドライブの特定のグループのメンバである。前述のように、仮想ストレージ・ドライブの各グループは、そのグループのすべての仮想ストレージ・ドライブがマップされた先の特定の物理ストレージ・ドライブによって、定義される。したがって、割り当てられたキャッシュ動作が目標仮想ストレージ・ドライブＡ１を対象とするこの例では、目標仮想ストレージ・ドライブＡ１をサポートする物理ストレージ・ドライブＡは、目標物理ストレージ・ドライブ、すなわち、目標物理ストレージ・ドライブＡ（図５）、と本明細書で称される。前述のように、キャッシュ動作は、目標仮想ストレージ・ドライブからキャッシュにデータをステージするためのステージ動作、またはキャッシュから目標仮想ストレージ・ドライブにデータをデステージするためのデステージ動作でもよい。
【００８５】
目標閾値レベル論理４０４（図１２）は、各ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数と各仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数との両方を追跡するように構成される。これ故に、目標仮想ストレージ・ドライブである、特定の仮想ストレージ・ドライブを対象とするキャッシュ動作を割り当てた（ブロック４１０、図１１）とき、目標閾値レベル論理４０４は、割り当てられたキャッシュ動作の目標仮想ストレージ・ドライブを含む目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントをインクリメントする（ブロック４１４、図１１）ように、そしてまた、割り当てられたキャッシュ動作の目標仮想ストレージ・ドライブを含む目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数の別個のカウントをインクリメントする（ブロック４１８、図１１）ように構成される。
【００８６】
目標閾値レベル論理４０４（図１２）はさらに、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、特定のＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えているかどうかを判定する（ブロック４２２、図１１）ように構成される。超えている場合、割り当てられたタスク制御ブロックをディスパッチして目標ＲＡＩＤアレイの目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行するのではなくて、割り当てられたタスク制御ブロックは、その代わりに、目標仮想ストレージ・ドライブの待機中のタスク制御ブロックの待ち行列４０８（図１３）に入れられる（ブロック４２６、図１１）。
【００８７】
逆に、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていない場合、目標閾値レベル論理４０４（図１２）はさらに、目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントは目標仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えているかどうかを判定する（ブロック４２８、図１１）ように構成される。超えている場合、割り当てられたタスク制御ブロックをディスパッチして目標仮想ストレージ・ドライブ・グループの目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行するのではなくて、割り当てられたタスク制御ブロックは、その代わりに、目標仮想ストレージ・ドライブの待機中のタスク制御ブロックの待ち行列４０８（図１３）に入れられる（ブロック４２６、図１１）。
【００８８】
目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていないと判定され（ブロック４２２、図１１）、目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントもまた、目標仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていないと判定された（ブロック４２８、図１１）場合、目標閾値レベル論理４０４（図１２）はさらに、以下でさらに詳しく説明されるように、割り当てられたタスク制御ブロックをディスパッチして（ブロック４３２、図１１）目標ＲＡＩＤアレイと目標仮想ストレージ・ドライブ・グループとの目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行するように構成される。
【００８９】
示された実施形態において、キャッシュ動作論理４０の待ち行列論理４０６（図１２）は、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていると判定された（ブロック４２２、図１１）場合に、あるいは目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のインクリメントされたカウントが、特定の仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超えていると判定された（ブロック４２８、図１１）場合に、目標ＲＡＩＤアレイと目標仮想ストレージ・ドライブ・グループとの目標仮想ストレージ・ドライブにアサインされたＴＣＢ待ち行列４０８（図１３）に、割り当てられたタスク制御ブロックを加える（ブロック４２６、図１１）ように構成される。図１６に関連して以下でさらに詳しく説明するように、目標仮想ストレージ・ドライブのためのＴＣＢ待ち行列に加えられたＴＣＢは、目標仮想ストレージ・ドライブのための十分な数のＴＣＢの割当解除を待ってから、目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行するために待ち行列で待っているＴＣＢをディスパッチする。この方式では、仮想ストレージ・ドライブのＲＡＩＤアレイを目標とするキャッシュ動作のためのタスク制御ブロックの数と、目標仮想ストレージ・ドライブの仮想ストレージ・ドライブ・グループを目標とするキャッシュ動作のためのタスク制御ブロックの数とは、目標ＲＡＩＤアレイまたは目標仮想ストレージ・ドライブの仮想ストレージ・ドライブ・グループを定義する物理ストレージ・ドライブのいずれかのオーバードライビングを減らすまたは解消するようにそれぞれ別個にスロットル調整することができ、したがって、オーバードライビングによる性能の低下を減らすまたは解消することができる。
【００９０】
示された実施形態において、各仮想ストレージ・ドライブは、仮想ストレージ・ドライブが割り当てられた先のＲＡＩＤアレイのＩＤおよび仮想ストレージ・ドライブがメンバである仮想ストレージ・ドライブ・グループのＩＤの機能として、ＴＣＢ待ち行列をアサインされる。前述のように、各仮想ストレージ・ドライブ・グループは、そのグループの各仮想ストレージ・ドライブがマップされた先の固有の物理ストレージ・ドライブによって定義される。図１４は、仮想ストレージ・ドライブが割り当てられた先のＲＡＩＤアレイのＩＤおよび仮想ストレージ・ドライブがメンバである仮想ストレージ・ドライブ・グループのＩＤの機能として特定のＴＣＢ待ち行列に各仮想ストレージ・ドライブをマップするテーブルである。すなわち、図６および１４に示すように、たとえば、ＲＡＩＤアレイＡに割り当てられたおよび仮想ストレージ・ドライブ・グループＡ（物理ストレージ・ドライブＡの）のメンバである、仮想ストレージ・ドライブＡ１は、ＴＣＢ待ち行列ＡＡをアサインされる。類似の方式で、たとえば、ＲＡＩＤアレイＤに割り当てられたおよび仮想ストレージ・ドライブ・グループＡ（物理ストレージ・ドライブＡの）のメンバでもある、仮想ストレージ・ドライブＡ２は、ＴＣＢ待ち行列ＤＡをアサインされる。
【００９１】
示された実施形態において、４つのＲＡＩＤアレイ、アレイＡ〜アレイＤ、が存在し、各アレイは、４つの仮想ストレージ・ドライブ、および仮想ストレージ・ドライブの４つのグループを有し、各グループは、固有の物理ストレージ・ドライブ、ドライブＡ〜ドライブＤ、にマップされた４つの仮想ストレージ・ドライブを有する。したがって、１６個の可能な仮想ストレージ・ドライブが存在し、この例では、各グループの各仮想ストレージ・ドライブは、異なるＲＡＩＤアレイに割り当てられている。この例の１６個の可能な仮想ストレージ・ドライブのそれぞれは、固有のＴＣＢ待ち行列にアサインされ得る。しかしながら、ＲＡＩＤストレージ・アレイ、仮想ストレージ・ドライブ・グループ、物理ストレージ・ドライブ、仮想ストレージ・ドライブ、およびＴＣＢ待ち行列の数は、特定の適用分野に応じて、異なるものになり得ることが認識される。
【００９２】
ＴＣＢ待ち行列４０８（図１３）は、図１４のテーブルの各ＴＣＢ待ち行列を表す。キャッシュ動作論理４０（図１２）は、各ＴＣＢ待ち行列を実装するためのメモリ資源４３６（図１２）を含む。タスク制御ブロックをＴＣＢ待ち行列から選択的に取り除き、ＴＣＢ待ち行列からの取り除かれたタスク制御ブロックをディスパッチするための各ＴＣＢ待ち行列の処理における待ち行列論理４０６の動作は、図１６に関連してさらに詳しく後述される。
【００９３】
図１５を参照すると、キャッシュ動作論理４０（図１２）は、特定の仮想ストレージ・ドライブ（目標仮想ストレージ・ドライブ）を対象とするディスパッチされたタスク制御ブロックを受信する（ブロック５０４）ように、および受信されたタスク制御ブロックによって制御されるキャッシュ動作を実行するように構成される。したがって、それぞれ、受信されたＴＣＢがステージ動作のためかデステージ動作のためかに応じて、データのセグメントは、ステージ動作において目標仮想ストレージ・ドライブからキャッシュにステージされ得る、または、データのセグメントは、キャッシュから目標仮想ストレージ・ドライブにデステージされ得る。キャッシュ動作が完了した（ブロック５０８）とき、ディスパッチされたＴＣＢは、割当解除することができ（ブロック５１２）、別のキャッシュ動作のために再び割り当てられるようにＴＣＢを解放し得る。
【００９４】
キャッシュ動作のためのＴＣＢの割当解除（ブロック５１２）に応答して、目標閾値レベル論理４０４（図１２）は、割当解除されたＴＣＢ動作の目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントをデクリメントする（ブロック５１６、図１５）ように構成される。加えて、目標閾値レベル論理４０４（図１２）はまた、割当解除されたキャッシュ動作ＴＣＢの目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数の別個のカウントをデクリメントする（ブロック５２０、図１５）。
【００９５】
図１６を参照すると、目標閾値レベル論理４０４（図１２）はさらに、特定の仮想ストレージ・ドライブ（目標仮想ストレージ・ドライブ）を対象とするキャッシュ動作のためのＴＣＢの割当解除に応答して（ブロック５４４、図１６）、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントは十分にデクリメントされたか、あるいは、そうではなくて、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超え続けているかどうかを判定する（ブロック５４８、図１６）ように構成される。目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限を超え続けている場合、目標閾値レベル論理４０４（図１２）はさらに、目標ＲＡＩＤアレイを対象とするＴＣＢの追加の割当解除を待つ（ブロック５４４、図１６）ように構成される。
【００９６】
逆に、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、十分にデクリメントされて、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限をもはや超えていない場合、目標閾値レベル論理４０４（図１２）はさらに、目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントは十分にデクリメントされたか、または、そうではなくて、目標仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超え続けているかどうかを判定する（ブロック５５２、図１６）ように構成される。目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、十分にデクリメントされて、目標グループにアサインされる割り当てられるタスク制御ブロックの特定の制限をもはや超えていない場合、目標仮想ストレージ・ドライブのためのＴＣＢ待ち行列４０８の最前部の４０８ｂ（図１３）にある待機中のＴＣＢ（ブロック５５６、図１６）は、待ち行列から外され得る（ブロック５６０、図１６）、すなわち、待ち行列から取り除かれ、図１５に関して前述したように目標仮想ストレージ・ドライブを対象とするキャッシュ動作を実行するためにディスパッチされ得る。逆に、目標仮想ストレージ・ドライブの目標グループに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、目標グループにアサインされる割り当てられるタスク制御ブロックの特定の制限を超え続けている場合、目標閾値レベル論理４０４（図１２）はさらに、仮想ストレージ・ドライブの目標グループを対象とするＴＣＢの追加の割当解除を待つ（ブロック５４４、図１６）ように構成される。
【００９７】
したがって、目標仮想ストレージ・ドライブの目標ＲＡＩＤアレイに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、十分にデクリメントされて、目標ＲＡＩＤアレイにアサインされる割り当てられるタスク制御ブロックの特定の制限をもはや超えていない、かつ目標仮想ストレージ・ドライブの目標仮想ストレージ・ドライブ・グループに現在割り当てられたキャッシュ動作ＴＣＢの数のカウントが、目標仮想ストレージ・ドライブ・グループにアサインされる割り当てられるタスク制御ブロックの特定の制限をもはや超えていないように、十分にデクリメントされない限り、目標仮想ストレージ・ドライブのための待ち行列で待機中のＴＣＢは、待ち行列から外されず、目標仮想ストレージ・ドライブを対象とするＴＣＢのキャッシュ動作を実行するためにディスパッチされない。この方式では、特定の仮想ストレージ・ドライブのためのタスク制御ブロックのディスパッチは、多過ぎるキャッシュ動作で任意の１つの特定のＲＡＩＤアレイまたは任意の１つの物理ストレージ・ドライブをオーバーロードすること回避するために、目標仮想ストレージ・ドライブのＲＡＩＤアレイのＩＤならびにキャッシュ動作の仮想ストレージ・ドライブにマップされた物理ストレージ・ドライブのＩＤの両方に基づいてスロットル調整され得る。結果として、システム性能は、向上し得る。他の態様および利点が、特定の適用分野に応じて、実現され得る。
【００９８】
図のコンピュータ構成要素は、図１７に示すコンピュータ・システム１００２など、１つまたは複数のコンピュータ・システムにおいてそれぞれ実装され得る。コンピュータ・システム／サーバ１００２は、コンピュータ・システムによって実行されているコンピュータ・システム実行可能命令、たとえばプログラム・モジュール、との一般的関連において説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、構成要素、論理、データ構造体などを含み得る。コンピュータ・システム／サーバ１００２は、タスクが、通信ネットワークを介してリンクされた遠隔の処理デバイスによって、実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよび遠隔の両方のコンピュータ・システム・ストレージ媒体内に置かれ得る。
【００９９】
図１７に示すように、コンピュータ・システム／サーバ１００２は、汎用コンピュータ・デバイスの形で示される。コンピュータ・システム／サーバ１００２の構成要素は、１つまたは複数のプロセッサまたは処理ユニット１００４、システム・メモリ１００６、および、システム・メモリ１００６を含む様々なシステム構成要素をプロセッサ１００４に結合させるバス１００８を含み得るが、これらに限定されない。バス１００８は、メモリ・バスもしくはメモリ・コントローラ、周辺バス、アクセラレイテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサもしくはローカル・バスを含む、いくつかのタイプのうちのいずれ１つまたは複数のバス構造体を表す。例としてそして限定ではなく、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、および周辺構成要素相互接続（ＰＣＩ）バスを含む。
【０１００】
コンピュータ・システム／サーバ１００２は、通常は、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１００２によってアクセス可能な任意の利用可能な媒体でもよく、それは、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体の両方を含む。
【０１０１】
システム・メモリ１００６は、ランダム・アクセス・メモリ（ＲＡＭ）１０１０またはキャッシュ・メモリ１０１２あるいはその両方など、揮発性メモリの形でコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１００２はさらに、他の取り外し可能な／取り外し不可能な、揮発性／不揮発性コンピュータ・システム・ストレージ媒体を含み得る。単に例として、ストレージ・システム１０１３は、取り外し不可能な、不揮発性磁気媒体（図示せず、「ハード・ドライブ」と通常は称される）から読み取るおよびこれに書き込むために提供され得る。図示されていないが、取り外し可能な、不揮発性磁気ディスク（たとえば、「フロッピ・ディスク」）から読み取るおよびこれに書き込むための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの、取り外し可能な、不揮発性光ディスクから読み取るおよびこれに書き込むための光ディスク・ドライブとが、提供され得る。そのような場合、それぞれが、１つまたは複数のデータ媒体インターフェースによってバス１００８に接続され得る。さらに示されるおよび後述されるように、メモリ１００６は、本発明の実施形態の機能を実施するように構成された１セット（たとえば、少なくとも１つ）のプログラム・モジュールを有する少なくとも１つのプログラム製品を含み得る。
【０１０２】
１セット（少なくとも１つ）のプログラム・モジュール１０１６を有するプログラム／ユーティリティ１０１４は、例として、そして限定ではなく、メモリ１００６に、ならびにオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに記憶され得る。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはその何らかの組合せのそれぞれは、ネットワーク環境の一実装形態を含み得る。コンピュータ・システム１００２の構成要素は、本明細書に記載のような本発明の実施形態の機能または方法論あるいはその両方を一般に実施するプログラム・モジュール１０１６として実装され得る。図１のシステムは、１つまたは複数のコンピュータ・システム１００２において実装され得、そこでは、それらが、複数のコンピュータ・システム１００２において実装された場合、次いで、コンピュータ・システムは、ネットワークを介して通信し得る。
【０１０３】
コンピュータ・システム／サーバ１００２はまた、１つまたは複数の外部デバイス１０１８、たとえば、キーボード、ポインティング・デバイス、ディスプレイ１０２０など、コンピュータ・システム／サーバ１００２とユーザが対話することを可能にする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ１００２が１つまたは複数の他のコンピュータ・デバイスと通信することを可能にする任意のデバイス（たとえば、ネットワーク・カード、モデムなど）、あるいはその組合せと通信し得る。そのような通信は、入出力（Ｉ／Ｏ）インターフェース１０２２を介して生じ得る。さらに、コンピュータ・システム／サーバ１００２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮ）、または公衆ネットワーク（たとえば、インターネット）、あるいはその組合せなど、１つまたは複数のネットワークとネットワーク・アダプタ１０２４を介して通信し得る。図示されているように、ネットワーク・アダプタ１０２４は、コンピュータ・システム／サーバ１００２のその他の構成要素とバス１００８を介して通信する。図示されていないが、他のハードウェアまたはソフトウェア構成要素あるいはその両方が、コンピュータ・システム／サーバ１００２と併せて使用され得ることを理解されたい。その例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどを含むが、これらに限定されない。
【０１０４】
ｉ、ｊ、およびｎなどの本明細書で使用される参照文字は、同じまたは異なる値を表し得る、および異なる記載されたインスタンスにおいて異なるまたは同じ要素と使用されるときに同じまたは異なる値を表し得る、要素のインスタンスの変数を示すために使用される。
【０１０５】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでもよい。コンピュータ・プログラム製品は、本発明の態様によるプロセッサ動作をプロセッサに実施させるためのコンピュータ可読プログラム命令を有する１つまたは複数のコンピュータ可読ストレージ媒体を含み得る。
【０１０６】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスでもよい。コンピュータ可読ストレージ媒体は、たとえば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前記の任意の適切な組合せでもよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非包括的リストは、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯用コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピ・ディスク、機械的にエンコードされたデバイス、たとえば、パンチカードまたは命令が記録された溝の中の隆起した構造体、および前記の任意の適切な組合せを含み。本明細書では、コンピュータ可読ストレージ媒体は、一過性の信号自体、たとえば、無線波または他の自由に伝搬する電磁波、導波路または他の伝送媒体を介して伝搬する電磁波（たとえば、光ファイバ・ケーブルを通り抜ける光パルス）、あるいはワイヤを介して送信される電気信号、として解釈されるべきではない。
【０１０７】
本明細書に記載のコンピュータ可読プログラム命令は、ネットワーク、たとえば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたはワイヤレス・ネットワークあるいはその組合せ、を介してそれぞれのコンピュータ／処理デバイスにコンピュータ可読ストレージ媒体からあるいは外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備え得る。各コンピュータ／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピュータ／処理デバイス内のコンピュータ可読ストレージ媒体において記憶するためにコンピュータ可読プログラム命令を転送する。
【０１０８】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存の命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、オブジェクト指向プログラミング言語、たとえば、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋など、および従来の手続き型プログラミング言語、たとえば、「Ｃ」プログラミング言語または類似のプログラミング言語、を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードでもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータで、部分的にユーザのコンピュータで、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータでかつ部分的に遠隔のコンピュータであるいは完全に遠隔のコンピュータまたはサーバで実行することができる。後者のシナリオでは、遠隔のコンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続され得、あるいは接続は、外部コンピュータに（たとえば、インターネット・サービス・プロバイダを使用するインターネットを介して）おこなわれ得る。いくつかの実施形態において、たとえば、プログラマブル論理電気回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む、電子回路は、本発明の態様を実行するために、電子回路を個人化するためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行し得る。
【０１０９】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図の解説またはブロック図あるいはその両方を参照して本明細書で説明されている。流れ図の解説またはブロック図あるいはその両方の各ブロックと、流れ図の解説またはブロック図あるいはその両方のブロックの組合せとは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【０１１０】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実装するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製造品を備え得るように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するよう指示することができるものであってもよい。
【０１１１】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実施するように、コンピュータ実施プロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイスに一連の動作のステップを実行させるものであってもよい。
【０１１２】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。これに関連して、流れ図またはブロック図内の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装形態において、ブロック内に示された機能は、図示されている以外の順番で生じ得る。たとえば、連続して示されている２つのブロックは、実際には、実質的に同時に、実行され得、あるいは、それらのブロックは、時には、関係する機能性に応じて、逆の順番で実行され得る。ブロック図または流れ図の解説あるいはその両方の各ブロックと、ブロック図または流れ図の解説あるいはその両方のブロックの組合せとは、指定された機能または動作を実行するあるいは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【０１１３】
「一実施形態（an embodiment）」、「実施形態（embodiment）」、「複数の実施形態（embodiments）」、「その実施形態（the embodiment）」、「それらの実施形態（the embodiments）」、「１つまたは複数の実施形態（one or more embodiments）」、「いくつかの実施形態（someembodiments）」、および「１つの実施形態（one embodiment）」という用語は、別段の明示的指定のない限り、「本発明の１つまたは複数の（しかし、すべてではない）実施形態」を意味する。
【０１１４】
「含む（including）」、「備える（comprising）」、「有する（having）」という用語およびその変化形は、別段の明示的指定のない限り、「含むがこれに限定されない」ことを意味する。
【０１１５】
項目の列挙されたリストは、別段の明示的指定のない限り、それらの項目のいずれかまたはすべてが相互に排他的であることを暗示しない。
【０１１６】
「ある（a）」、「一（an）」および「その（the）」という用語は、別段の明示的指定のない限り、「１つまたは複数の」を意味する。
【０１１７】
互いに通信するデバイスは、別段の明示的指定のない限り、互いに通信し続ける必要はない。加えて、互いに通信するデバイスは、直接的にあるいは１つまたは複数の仲介を介して間接的に通信し得る。
【０１１８】
互いに通信するいくつかの構成要素を有する実施形態の記述は、そのような構成要素がすべて必要とされることを暗示しない。そうではなくて、様々なオプションの構成要素が、本発明の多種多様な可能な実施形態を説明するために記載されている。
【０１１９】
単一のデバイスまたは品目が本明細書に記載されているとき、複数のデバイス／品目（それらが協力してもしなくても）が単一のデバイス／品目の代わりに使用され得ることは、容易に明らかとなろう。同様に、複数のデバイスまたは品目が本明細書に記載されているとき（それらが協力してもしなくても）、単一デバイス／品目が複数のデバイスまたは品目の代わりに使用され得、あるいは異なる数のデバイス／品目が、示された数のデバイスまたはプログラムの代わりに使用され得ることは、容易に明らかとなろう。デバイスの機能性または特徴あるいはその両方は、別法として、そのような機能性／特徴を有するものとして明示的に記載されていない１つまたは複数の他のデバイスによって具現化され得る。したがって、本発明の他の実施形態は、そのデバイス自体を含む必要はない。
【０１２０】
本発明の様々な実施形態の前述の説明は、例示および説明を目的として表されている。それは、包括的であることまたは開示されている厳密な形に本発明を限定することを意図されていない。多数の変更形態および変形形態が、前述の教示を考慮して可能である。本発明の範囲は、本明細書によって限定されず、本明細書に添付された特許請求の範囲によって限定されることが意図されている。前述の明細、例およびデータは、本発明の構成の製造および使用の完全な説明を提供する。本発明の多数の実施形態が、本発明の思想および範囲を逸脱せずに達せられ得るので、本発明は、本明細書の後に添付された特許請求の範囲に含まれる。
【図１】
2021515298.tif 000003
【図２】
2021515298.tif 000004
【図３】
2021515298.tif 000005
【図４】
2021515298.tif 000006
【図５】
2021515298.tif 000007
【図６】
2021515298.tif 000008
【図７】
2021515298.tif 000009
【図８】
2021515298.tif 000010
【図９】
2021515298.tif 000011
【図１０】
2021515298.tif 000012
【図１１】
2021515298.tif 000013
【図１２】
2021515298.tif 000014
【図１３】
2021515298.tif 000015
【図１４】
2021515298.tif 000016
【図１５】
2021515298.tif 000017
【図１６】
2021515298.tif 000018
【図１７】
2021515298.tif 000019
【国際調査報告】
2021515298.tif 000020
2021515298.tif 000021