(57)【要約】【課題】  トランザクションベースのストレージ動作を実施するシステムおよび方法を提供する。【解決手段】  本発明の計算方法は、ストレージネットワーク（２００）内のプロセッサ（４１６）において、サービス要求を受け取ること、該サービス要求を受け取ったことに応答して、サービストークンのトークン要求を生成すること、該トークン要求を、前記ストレージネットワークに通信可能に接続されたサーバ（２１６）に送信すること、該サーバにおいて、前記トークン要求を検証すること、該検証されたトークン要求に対する応答を前記プロセッサに送信すること、前記トークン要求に対する応答が少なくとも１つのサービストークンを含む場合、前記ストレージネットワーク内の前記プロセッサにおいて、サービスコールを呼び出すこと、とを含むものとする。【選択図】          図８
2005235195.tif 000002
【特許請求の範囲】
【請求項１】
ストレージネットワーク（２００）内のプロセッサ（４１６）において、
サービス要求を受け取ること、
該サービス要求を受け取ったことに応答して、サービストークンのトークン要求を生成すること、
該トークン要求を、前記ストレージネットワーク（２００）に通信可能に接続されたサーバ（２１６）に送信すること、
該サーバ（２１６）において、
前記トークン要求を検証すること、
該検証されたトークン要求に対する応答を前記プロセッサ（４１６）に送信すること、
前記トークン要求に対する応答が少なくとも１つのサービストークンを含む場合、前記ストレージネットワーク（２００）内の前記プロセッサ（４１６）において、サービスコールを呼び出すこと、
とを含む計算方法。
【請求項２】
前記トークン要求を生成することは、前記ストレージネットワーク（２００）内のデバイス（２１４）に関連する口座の少なくとも１つの口座識別子を検索することを含む、請求項１記載の計算方法。
【請求項３】
前記トークン要求に対する応答は、
口座識別子、
口座残高、
前記プロセッサ（４１６）により判読可能な、前記サービスコールを呼び出す許可を認可または拒絶するコード、および
前記プロセッサ（４１６）により実行可能であり、前記サービスコールを呼び出すソフトウェアモジュール
のうちの少なくとも１つを含む、請求項１記載の計算方法。
【請求項４】
前記ストレージネットワーク（２００）内の前記プロセッサ（４１６）における口座更新情報を更新することをさらに備える、請求項１記載の計算方法。
【請求項５】
コンピュータベースのデータストレージデバイス（１２８）であって、
データストレージ（１１２）へのアクセスを提供する手段と、
１つまたは複数のリモート計算デバイス（１２６）との通信を可能にする手段と、
該コンピュータベースのストレージデバイス（１２８）に関連する口座情報を管理する口座管理手段と、
サービス要求を受け取り、前記口座管理手段またはリモート計算デバイス（１２６）からの入力に基づいて、前記サービス要求を実行する処理手段と、
を備えるコンピュータベースのデータストレージデバイス。
【請求項６】
コンピュータベースのデータストレージデバイス（１２８）であって、前記データストレージへのアクセスを提供する手段は、ＲＡＩＤコントローラ（６１０）を備える、請求項５記載のコンピュータベースのデータストレージデバイス。
【請求項７】
コンピュータベースのデータストレージデバイス（１２８）であって、前記１つまたは複数のリモート計算デバイス（１２６）との通信を可能にする手段は、Ｉ／Ｏモジュールを備える、請求項５記載のコンピュータベースのデータストレージデバイス。
【請求項８】
前記口座管理手段は、ローカルストレージ媒体（５２４）に記憶されている口座の残高を更新する手段を備える、請求項５記載のコンピュータベースのデータストレージデバイス。
【請求項９】
前記処理する手段は、ローカルストレージ媒体（５２４）に記憶されている口座が前記サービス要求を実行するに十分なクレジットを含んでいるか否かを判断する手段を備える、請求項５記載のコンピュータベースのデータストレージデバイス。
【請求項１０】
前記処理する手段は、前記リモート計算デバイス（１２６）からの前記サービス要求を実行する許可を要求する手段を備える、請求項５記載のコンピュータベースのデータストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
記載の主題は電子計算に関し、より詳細にはトランザクションベースのストレージ動作を実施するシステムおよび方法に関する。
【背景技術】
【０００２】
たとえば、ＳＡＮ（ストレージエリアネットワーク）ディスクアレイやＲＡＩＤ（独立ディスク冗長アレイ）デバイス等のコンピュータベースのストレージデバイスは、たとえば、データ冗長動作、データミラーリング動作、またはリカバリ動作等の動作特徴セットを実施する。これら動作は、ストレージデバイス内の処理ユニット上の論理命令、構成可能プロセッサに実装されるファームウェア、さらにはハードウェア固有の命令として実施することができる。
【０００３】
ストレージデバイスの購入には通常、ストレージデバイスに提供される特徴セットを無制限に使用するライセンスが含まれる。選択された特徴のコストは、ストレージデバイスのコストに組み込まれる。特徴セットは、たとえば適した通信ネットワークを介して、通常は課金して、改訂された命令セットをダウンロードすることによって更新することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この構成は、コンピュータベースのストレージデバイスのユーザによっては適している場合もあるが、ストレージ機器に関連する動作特徴の取得により柔軟な構成を好むユーザもいる。
【課題を解決するための手段】
【０００５】
本明細書に記載のシステムおよび方法は、コンピュータベースのストレージデバイスがトランザクションベースのストレージサービスを実施できるようにし、トランザクション料金は特定のサービスの実行に関連する。例示的な一実施形態では、料金ベースのストレージサービスを実施する方法が提供される。この方法は、ストレージデバイス内のプロセッサにおいて、サービス要求を受け取ること、サービス要求を実行すること、および、プロセッサならびにサービス要求に関連する口座を識別する情報を口座サーバに送信することを含む。
【発明を実施するための最良の形態】
【０００６】
本明細書に記載するのは、トランザクションベースのストレージ動作を実施する例示的なストレージネットワークアーキテクチャおよび方法である。本明細書に記載の方法は、コンピュータ可読媒体上の論理命令として具現することができる。論理命令は、プロセッサ上で実行されると、記載の方法を実施する専用機械として汎用計算デバイスをプログラムさせる。プロセッサは、論理命令により本明細書に記載の方法を実行するように構成される場合、記載の方法を実行する構造を構成する。
【０００７】
［例示のネットワークアーキテクチャ］
図１は、ストレージネットワークを利用するネットワーク化された計算システム１００の例示的な実施形態の概略図である。このストレージネットワークは、任意の大容量のストレージ空間を含むストレージプール１１０を含む。実際には、ストレージプール１１０は、ストレージプール１１０を実施するのに使用される特定のハードウェアによって決まる有限サイズ限度を有する。しかし、ストレージプール１１０に利用可能なストレージ空間には、理論的な制限はほとんどない。
【０００８】
複数の論理ディスク（論理ユニットまたはＬＵＮとも呼ぶ）１１２ａ、１１２ｂをストレージプール１１０内で割り振ることができる。各ＬＵＮ１１２ａ、１１２ｂは、ホストデバイス１２０、１２２、１２４、および１２８により使用される接続プロトコルからの要求を一意に識別されるＬＵＮ１１２にマッピングすることによって、ホストデバイス１２０、１２２、１２４、および１２８によりアドレス指定することが可能な連続した論理アドレス範囲を含む。本明細書では、「ホスト」という用語は、自らのために、またはホストに結合されたシステムのためにストレージを利用する計算システム（複数可）を含む。たとえば、ホストは、大量のデータベースを処理するスーパーコンピュータとすることもできるし、トランザクション記録を保持するトランザクション処理サーバとすることもできる。あるいは、ホストは、企業にストレージサービスを提供するローカルエリアネットワーク（ＬＡＮ）や広域ネットワーク（ＷＡＮ）上のファイルサーバとすることもできる。ファイルサーバは、複数のディスクドライブを管理するように構成された１つまたは複数のディスクコントローラおよび／またはＲＡＩＤコントローラを備えることができる。ホストは、たとえばファイバチャネル（ＦＣ）接続等の通信接続を介してストレージネットワークに接続する。
【０００９】
サーバ１２８等のホストは、サービスを他の計算システムもしくは計算デバイスまたはデータ処理システムもしくはデータ処理デバイスに提供することができる。たとえば、クライアントコンピュータ１２６は、サーバ１２８等のホストを介してストレージプール１１０にアクセスすることができる。サーバ１２８はファイルサービスをクライアント１２６に提供することができ、またトランザクション処理サービス、電子メールサービス等の他のサービスを提供することができる。したがって、クライアントデバイス１２６はホスト１２８が消費するストレージを直接使用する場合もあれば、直接使用しない場合もある。
【００１０】
ホストでもあるワイヤレスデバイス１２０およびコンピュータ１２２、１２４等のデバイスは、ＬＵＮ１１２ａ、１１２ｂに論理的に直接結合することができる。ホスト１２０〜１２８は複数のＬＵＮ１１２ａ、１１２ｂに結合することができ、またＬＵＮ１１２ａ、１１２ｂは複数のホストで共有することができる。図１に示す各デバイスは、メモリ、大容量ストレージ、およびネットワーク接続を管理するに十分な或る程度のデータ処理能力を備えることができる。
【００１１】
図２は、ストレージプール１１０等のストレージプールを実施するのに使用することができる例示的なストレージネットワーク２００の概略図である。ストレージネットワーク２００は、通信ネットワーク２１２によって接続された複数のストレージセル２１０ａ、２１０ｂ、２１０ｃを含む。ストレージセル２１０ａ、２１０ｂ、２１０ｃは、１つまたは複数の通信可能に接続されたストレージデバイスとして実施することができる。例示的なストレージデバイスとしては、米国カリフォルニア州パロアルト所在のHewlett-Packard Corporationから市販のSTORAGEWORKSラインのストレージデバイスが挙げられる。通信ネットワーク２１２は、たとえばファイバチャネル（ＦＣ）スイッチングファブリック等の私設専用ネットワークとして実施することができる。あるいは、通信ネットワーク２１２の一部は、たとえば、インターネット小型コンピュータシリアルインタフェース（ｉＳＣＳＩ）プロトコル等の適した通信プロトコルに準拠した公衆通信ネットワークを使用して実施することができる。
【００１２】
クライアントコンピュータ２１４ａ、２１４ｂ、２１４ｃは、サーバ２１６、２２０等のホストを通してストレージセル２１０ａ、２１０ｂ、２１０ｃにアクセスすることができる。クライアント２１４ａ、２１４ｂ、２１４ｃは、直接、またはローカルエリアネットワーク（ＬＡＮ）や広域ネットワーク（ＷＡＮ）等のネットワーク２１８を介して、ファイルサーバ２１６に接続することができる。任意のストレージネットワークに含めることができるストレージセル２１０ａ、２１０ｂ、２１０ｃの数は主に、通信ネットワーク２１２において実施される接続性によって制限される。例として、単一のＦＣスイッチを備えるスイッチングファブリックは、２５６以上のポートを相互接続することができ、数百ものストレージセル２１０ａ、２１０ｂ、２１０ｃが単一のストレージネットワークに存在する可能性を提供する。
【００１３】
ホスト２１６、２２０は通常、サーバコンピュータとして実施される。図３は、ホストの実施に利用することができる例示的な計算デバイス３３０の概略図である。計算デバイス３３０は、１つまたは複数のプロセッサまたは処理ユニット３３２、システムメモリ３３４、およびシステムメモリ３３４を含む様々なシステム構成要素をプロセッサ３３２に結合するバス３３６を備える。バス３３６は、メモリバスまたはメモリコントローラ、周辺バス、加速グラフィックスポート（ＡＧＰ）、およびプロセッサまたは様々なバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかの種類のバス構造のいずれか１つまたは複数を表す。システムメモリ３３４は、読み取り専用メモリ（ＲＯＭ）３３８およびランダムアクセスメモリ（ＲＡＭ）３４０を備える。スタートアップ中等、計算デバイス３３０内の要素間の情報の転送を助ける基本的なルーチンを含む基本入出力システム（ＢＩＯＳ）３４２は、ＲＯＭ３３８に記憶される。
【００１４】
計算デバイス３３０は、ハードディスク（図示せず）を読み書きするハードディスクドライブ３４４をさらに備え、リムーバブル磁気ディスク３４８を読み書きする磁気ディスクドライブ３４６、およびＣＤ−ＲＯＭや他の光学媒体等のリムーバブル光ディスク３５２を読み書きする光ディスクドライブ３５０を備えることができる。ハードディスクドライブ３４４、磁気ディスクドライブ３４６、および光ディスクドライブ３５０は、ＳＣＳＩインタフェース３５４または他の或る適切なインタフェースによりバス３３６に接続される。ドライブおよびそれぞれの関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および計算デバイス３３０の他のデータの不揮発性ストレージを提供する。本明細書において説明する例示的な環境はハードディスクを採用するが、リムーバブル磁気ディスク３４８およびリムーバブル光ディスク３５２、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）等の他のタイプのコンピュータ可読媒体も、例示的な動作環境において使用することが可能である。
【００１５】
オペレーティングシステム３５８、１つまたは複数のアプリケーションプログラム３６０、他のプログラムモジュール３６２、およびプログラムデータ３６４を含む複数のプログラムモジュールを、ハードディスク３４４、磁気ディスク３４８、光ディスク３５２、ＲＯＭ３３８、またはＲＡＭ３４０に記憶することができる。ユーザは、キーボード３６６およびポインティングデバイス３６８等の入力デバイスを通してコマンドおよび情報を計算デバイス３３０に入力することができる。他の入力デバイス（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を挙げることができる。これらおよび他の入力デバイスは、バス３３６に結合されたインタフェース３７０を通して処理ユニット３３２に接続される。モニタ３７２または他のタイプの表示デバイスもまた、ビデオアダプタ３７４等のインタフェースを介してバス３３６に接続される。
【００１６】
計算デバイス３３０は、リモートコンピュータ３７６等の１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境において動作することができる。リモートコンピュータ３７６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常、計算デバイス３３０に関して上に説明した要素の多くまたはすべてを含むが、メモリストレージデバイス３７８のみが図３に示される。図３に示す論理接続はＬＡＮ３８０およびＷＡＮ３８２を含む。
【００１７】
ＬＡＮネットワーキング環境において使用される場合、計算デバイス３３０はネットワークインタフェースまたはアダプタ３８４を通してローカルネットワーク３８０に接続される。ＷＡＮネットワーキング環境において使用される場合、計算デバイス３３０は通常、モデム３８６またはインターネット等の広域ネットワーク３８２を介しての通信を確立する他の手段を備える。内部にあってもまたは外部にあってもよいモデム３８６は、シリアルポートインタフェース３５６を介してバス３３６に接続される。ネットワーク化された環境では、計算デバイス３３０またはその一部に関して示すプログラムモジュールは、リモートメモリストレージデバイスに記憶することができる。図示のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することも可能なことが理解されよう。
【００１８】
ホスト２１６、２２０は、通信ネットワーク２１２への接続を可能にするホストアダプタハードウェアおよびソフトウェアを備えることができる。通信ネットワーク２１２への接続は、帯域幅要件に応じて光学的結合またはより慣例的な導電ケーブルを通して行うことができる。ホストアダプタは、計算デバイス３３０上のプラグインカードとして実施することができる。ホスト２１６、２２０は、任意の数のホストアダプタを実施して、ハードウェアおよびソフトウェアがサポートするのと同じ数の通信ネットワーク２１２への接続を提供することができる。
【００１９】
一般に、計算デバイス３３０のデータプロセッサは、異なる時間に記憶された命令によって、コンピュータの様々なコンピュータ可読ストレージ媒体にプログラムされる。プログラムおよびオペレーティングシステムは、たとえば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、または電子的に分散させることができ、コンピュータの補助メモリにインストールまたはロードされる。実行時に、プログラムは少なくとも一部、コンピュータの主要なメモリにロードされる。
【００２０】
図４は、２１０ａ、２１０ｂ、２１０ｃ等のストレージセルを実施するのに使用することが可能なストレージセル４００の例示的な実施形態の概略図である。図４を参照すると、ストレージセル４００は、ディスクアレイコントローラ４１０ａ、４１０ｂとも呼ばれる２つのネットワークストレージコントローラ（ＮＳＣ）を備えて、１つまたは複数のディスクドライブ４４０、４４２の動作および１つまたは複数のディスクドライブ４４０、４４２内外へのデータの転送を管理する。ＮＳＣ４１０ａ、４１０ｂは、マイクロプロセッサ４１６ａ、４１６ｂ、およびメモリ４１８ａ、４１８ｂを有するプラグインカードとして実施することができる。各ＮＳＣ４１０ａ、４１０ｂは、すなわちスイッチングファブリック等の通信ネットワークを通してホストへのインタフェースを提供する、デュアルホストアダプタポート４１２ａ、４１４ａ、４１２ｂ、４１４ｂを備える。ファイバチャネル実施形態では、ホストアダプタポート４１２ａ、４１２ｂ、４１４ａ、４１４ｂはＦＣ  Ｎ＿ポートとして実施することができる。各ホストアダプタポート４１２ａ、４１２ｂ、４１４ａ、４１４ｂは、ログインおよびスイッチングファブリックとのインタフェースを管理し、ログインプロセスにおいてファブリックに固有のポートＩＤが割り当てられる。図４に示すアーキテクチャは完全な冗長性のストレージセルを提供するが、ストレージセルを実施するのに必要なのは単一のＮＳＣのみである。
【００２１】
各ＮＳＣ４１０ａ、４１０ｂは、ＮＳＣ４１０ａ、４１０ｂの間での通信接続４３８を可能にする通信ポート４２８ａ、４２８ｂをさらに備える。通信接続４３８は、ＦＣポイントツーポイント接続として、または他の任意の適した通信プロトコルに準拠して実施することができる。
【００２２】
例示的な実施形態では、ＮＳＣ４１０ａ、４１０ｂは、複数のストレージデバイス、たとえばディスクドライブ４４０、４４２のアレイとのＦＣＡＬ（Fiber Channel Arbitrated Loop）通信接続を実施する複数のＦＣＡＬポート４２０ａ〜４２６ａ、４２０ｂ〜４２６ｂをさらに備える。図示の実施形態は、ディスクドライブ４４０、４４２のアレイとＦＣＡＬ接続を実施するが、ディスクドライブ４４０、４４２のアレイとの通信接続は他の通信プロトコルを使用して実施することができることが理解されよう。たとえば、ＦＣＡＬ構成ではなく、ＦＣスイッチングファブリックまたは小型コンピュータシリアルインタフェース（ＳＣＳＩ）接続を使用することも可能である。
【００２３】
動作に際して、ディスクドライブ４４０、４４２のアレイによって提供されるストレージ容量は、ストレージプール１１０に加えることができる。アプリケーションがストレージ容量を必要とすると、ホストコンピュータ１２８上の論理命令が、１つまたは複数のストレージサイトで利用可能なディスクドライブ４４０、４４２のアレイ上で利用可能なストレージ容量からＬＵＮを確立する。ＬＵＮは必ずしも物理的なユニットであるわけではなく論理ユニットであるため、ＬＵＮを構成する物理的なストレージ空間は複数のストレージセルに分散することができることが理解されよう。アプリケーションのデータは、ストレージネットワーク内の１つまたは複数のＬＵＮに記憶される。データにアクセスする必要があるアプリケーションはホストコンピュータを照会し、ホストコンピュータはＬＵＮからデータを検索してアプリケーションに転送する。
【００２４】
ストレージネットワーク２００内のストレージセル２１０ａ、２１０ｂ、２１０ｃの１つまたは複数はＲＡＩＤベースのストレージを実施することができる。ＲＡＩＤ（独立ディスク冗長アレイ）ストレージシステムは、物理的なストレージ容量の一部が冗長データを記憶するのに使用されるディスクアレイシステムである。ＲＡＩＤシステムは通常、ＲＡＩＤという頭字語の下で列挙される６つのアーキテクチャの１つとして特徴付けられる。ＲＡＩＤ０アーキテクチャは、いずれの冗長性もなしで構成されるディスクアレイシステムである。このアーキテクチャは実際には冗長アーキテクチャではないため、ＲＡＩＤ０は多くの場合、ＲＡＩＤシステムの考察から省略される。
【００２５】
ＲＡＩＤ１アーキテクチャは、ミラーリング冗長性に従って構成されるストレージディスクを含む。元のデータは１セットのディスクに記憶され、データの複製コピーは別個のディスクに保持される。ＲＡＩＤ２〜ＲＡＩＤ５アーキテクチャはすべて、パリティタイプの冗長性ストレージを含む。特に興味深いのは、ＲＡＩＤ５システムがデータおよびパリティ情報を複数のディスクに分散することである。通常、ディスクは、「ブロック」と呼ばれる等サイズのアドレスエリアに分割される。同じユニットアドレス範囲を有する各ディスクからのブロックセットは「ストライプ」と呼ばれる。ＲＡＩＤ５では、各ストライプはＮブロックのデータ、およびＮブロック中のデータの冗長情報を含む１つのパリティブロックを有する。
【００２６】
ＲＡＩＤ５では、パリティブロックはストライプ単位で異なるディスクを循環する。たとえば、５枚のディスクを有するＲＡＩＤ５システムでは、第１のストライプのパリティブロックは第５のディスク上にあることができ、第２のストライプのパリティブロックは第４のディスク上にあることができ、第３のストライプのパリティブロックは第３のディスク上にあることができ、以下同様である。後続のストライプのパリティブロックは通常、ヘリカルパターン（他のパターンも可能であるが）でディスクドライブの周囲を「歳差運動」する。ＲＡＩＤ２〜ＲＡＩＤ４アーキテクチャは、パリティブロックの計算の仕方およびディスク上への配置の仕方においてＲＡＩＤ５と異なる。実施される特定のＲＡＩＤクラスは重要ではない。
【００２７】
図５は、ＲＡＩＤストレージを実施するデータストレージシステム５００の例示的な実施形態の概略図である。データストレージシステム５００は、複数のストレージディスク５３０ａ〜５３０ｆを有するディスクアレイ、ディスクアレイコントローラモジュール５２０、およびＲＡＩＤ管理システム５１０を有する。ディスクアレイコントローラモジュール５２０は、小型コンピュータシステムインタフェース（ＳＣＳＩ）バス等の１つまたは複数のインタフェースバスを介して複数のストレージディスク５３０ａ〜５３０ｆに結合される。ＲＡＩＤ管理システム５１０は、１つまたは複数のインタフェースバスを介してディスクアレイコントローラモジュール５２０に結合される。ＲＡＩＤ管理システム５１０は別個の構成要素として具現することも可能であり（図示のように）、またはディスクアレイコントローラモジュール５２０内に具現することも、またはホストコンピュータ内に具現することも可能であることに留意する。ＲＡＩＤ管理システム５１０は、データストレージデバイスの処理ユニット上またはコンピュータ３３０のプロセッサユニット３３２上で実行されるソフトウェアモジュールとして実施することができる。
【００２８】
ディスクアレイコントローラモジュール５２０は、複数のストレージディスク５３０ａ〜５３０ｆ内外へのデータ転送を調整する。例示的な実施形態では、ディスクアレイモジュール５２０は、２つの同一のコントローラまたはコントローラボード、すなわち第１のディスクアレイコントローラ５２２ａおよび第２のディスクアレイコントローラ５２２ｂを有する。パラレルコントローラは、一方のコントローラが動作不能になった場合に切れ目のないバックアップおよび冗長性を提供することによって信頼性を向上させる。パラレルコントローラ５２２ａおよび５２２ｂは、それぞれのミラーリングメモリ５２４ａおよび５２４ｂを有する。ミラーリングメモリ５２４ａおよび５２４ｂは、バッテリーバックアップ付き不揮発性ＲＡＭ（ＮＶＲＡＭ）として実施することができる。デュアルコントローラ５２２ａおよび５２２ｂのみが示され、本明細書において概説されるが、本発明の態様は、３つ以上のコントローラが採用される他のマルチコントローラ構成に拡張することが可能である。
【００２９】
ミラーリングメモリ５２４ａおよび５２４ｂは、いくつかのタイプの情報を記憶する。ミラーリングメモリ５２４ａおよび５２４ｂは、複数のストレージディスク５３０ａ〜５３０ｆのストレージ空間のまとまりのあるメモリマップの複製コピーを保持する。このメモリマップは、データおよび冗長情報がディスクのどこに記憶されているか、および利用可能な空き領域がどこで見つけられるかを追跡する。ミラーリングメモリの図は、ホットプラグインタフェースにわたって一貫しており、データの読み書きを行おうとする外部プロセスから同じに見える。
【００３０】
ミラーリングメモリ５２４ａおよび５２４ｂは、複数のストレージディスク５３０ａ〜５３０ｆから読み出されているデータを保持する読み出しキャッシュも保持する。あらゆる読み出し要求はコントローラ間で共有される。ミラーリングメモリ５２４ａおよび５２４ｂは、書き込みキャッシュの２つの複製コピーをさらに保持する。各書き込みキャッシュは、データが複数のストレージディスク５３０ａ〜５３０ｆに完全に書き込まれる前にデータを一時的に記憶する。
【００３１】
コントローラのミラーリングメモリ５２２ａおよび５２２ｂは、ホットプラグインタフェース５２６を介して物理的に結合される。一般に、コントローラ５２２ａおよび５２２ｂは、それらの間のデータ転送を監視して、確実にデータが正確に転送され、トランザクションの順序（たとえば、読み出し／書き込み順序）が保存されるようにする。
【００３２】
図６は、デュアルＲＡＩＤコントローラの例示的な実施形態のより詳細な概略図である。コントローラボード６１０ａおよび６１０ｂの他に、ディスクアレイコントローラは、２つのＩ／Ｏモジュール６４０ａおよび６４０ｂ、オプションのディスプレイ６４４、および２つの電源６４２ａおよび６４２ｂも有する。Ｉ／Ｏモジュール６４０ａおよび６４０ｂは、各コントローラ６１０ａおよび６１０ｂおよびサーバ２１６、２２０等のホストコンピュータの間のデータ転送を容易にする。一実施形態では、Ｉ／Ｏモジュール６４０ａおよび６４０ｂはファイバチャネル技術を採用するが、他のバス技術を使用することも可能である。電源６４２ａおよび６４２ｂは、電力を各ディスクアレイコントローラ６１０ａ、６１０ｂ、ディスプレイ６４４、およびＩ／Ｏモジュール６４０ａ、６４０ｂ内の他の構成要素に電力を供給する。
【００３３】
各コントローラ６１０ａ、６１０ｂは、各Ｉ／Ｏモジュール６４０ａ、６４０ｂを介してホストから信号を受け取るように接続されたコンバータ６３０ａ、６３０ｂを有する。各コンバータ６３０ａおよび６３０ｂは、或るバスフォーマット（たとえば、ファイバチャネル）から別のバスフォーマット（たとえば、周辺構成要素相互接続（ＰＣＩ））に信号を変換する。第１のＰＣＩバス６２８ａ、６２８ｂは信号をアレイコントローラメモリトランザクションマネージャ６２６ａ、６２６ｂに伝達し、アレイコントローラメモリトランザクションマネージャ６２６ａ、６２６ｂは、ミラーリングコントローラ内のＲＡＭ６２２ａ、６２２ｂ内外へのすべてのミラーリングメモリトランザクショントラフィックを処理する。アレイコントローラメモリトランザクションマネージャ６２６ａ、６２６ｂは、メモリマップを保持し、パリティを計算し、他のコントローラとの相互通信を容易にする。アレイコントローラメモリトランザクションマネージャ６２６ａ、６２６ｂは、好ましくは、特定用途向け集積回路（ＡＳＩＣ）等の集積回路（ＩＣ）として実施される。
【００３４】
アレイコントローラメモリトランザクションマネージャ６２６ａ、６２６ｂは、高速バス６２４ａ、６２４ｂを介してＲＡＭ６２２ａ、６２２ｂに結合され、第２のＰＣＩバス６２０ａ、６２０ｂを介して他の処理構成要素およびメモリ構成要素に結合される。各コントローラ６１０ａ、６１０ｂは、少なくとも１つの処理ユニット６１２ａ、６１２ｂおよびＰＣＩバス６２０ａおよび６２０ｂに接続されたいくつかのタイプのメモリを有する。メモリとしては、ダイナミックＲＡＭ（ＤＲＡＭ）６１４ａ、６１４ｂ、フラッシュメモリ６１８ａ、６１８ｂ、およびキャッシュ６１６ａ、６１６ｂが挙げられる。
【００３５】
アレイコントローラメモリトランザクションマネージャ６２６ａおよび６２６ｂは、通信インタフェース６５０を介して互いに結合される。通信インタフェース６５０は、ＲＡＭバス６２４ａおよび６２４ｂに見合ったデータ転送速度での２つのアレイコントローラメモリトランザクションマネージャ６２６ａおよび６２６ｂの間の双方向パラレル通信をサポートする。
【００３６】
アレイコントローラメモリトランザクションマネージャ６２６ａおよび６２６ｂは、高水準パケットプロトコルを採用して、ホットプラグインタフェース６５０を介してトランザクションをパケットで交換する。アレイコントローラメモリトランザクションマネージャ６２６ａおよび６２６ｂは、パケットに対して誤り訂正を行い、確実にデータがコントローラ間で正確に転送されるようにする。
【００３７】
アレイコントローラメモリトランザクションマネージャ６２６ａおよび６２６ｂは、ホットプラグインタフェース６５０にわたって首尾一貫した（coherent）メモリイメージを提供する。マネージャ６２６ａおよび６２６ｂは順序付けメカニズムも提供して、メモリトランザクションの適切な順序を確保する順序付きインタフェースをサポートする。
【００３８】
［例示的な動作］
図７は、トランザクションベースのストレージ動作方法の例示的な実施形態における動作を示すフローチャートである。一実施形態では、図７において説明する動作は、図６に示すＲＡＩＤコントローラ６１０ａ、６１０ｂの処理ユニット６１２ａ、６１２ｂの一方等、ＲＡＩＤコントローラの処理ユニットで実施することができる。代替の実施形態では、図７において説明する動作は、ネットワークストレージコントローラ、ホストコンピュータ、またはストレージネットワーク内の別のプロセッサで実施することができる。
【００３９】
動作７１０において、サービス要求が受け取られる。サービス要求は、ストレージデバイスまたはストレージネットワークのユーザ、たとえばネットワーク管理者により生成することができる。あるいは、サービス要求は、ストレージデバイスまたはストレージネットワーク内の別の計算デバイスにより、または図７の動作を実行するプロセッサで実行されるプロセスにより生成することができる。サービス要求は、実行すべき特定のサービスを識別する情報を含むことができ、またサービスを実行すべきプロセッサまたはコントローラ、サービスを実行すべきデータストレージユニット、および動作料金を課すべき口座を識別する情報を含むことができる。
【００４０】
サービス要求の特定の性質は重要ではない。例示的なサービスとしては、第１のデータストレージユニット、たとえば、ＬＵＮまたはＲＡＩＤディスクアレイのデータマップが冗長ストレージユニットにコピーされるスナップショット動作、第１のデータストレージユニット、たとえばＬＵＮまたはＲＡＩＤディスクアレイからのデータが冗長ストレージユニットにコピーされるスナップクローン動作を挙げることができる。あるいは、サービス要求は、第１のデータストレージユニット、たとえばＬＵＮまたはＲＡＩＤディスクアレイからのデータがリモートストレージユニットにコピーされるリモートコピーまたはミラーリング動作に対するものであることができる。リモートコピーまたはミラーリング動作は、データストレージユニット全体を書き込むことができ、または同期（または非同期）書き込み動作を実行してソースデータおよびリモートコピーを一貫したデータ状態に保つことができる。他の適したサービス要求としては、ＬＵＮのサイズを増大するＬＵＮ拡張要求、誤り検出アルゴリズム要求、またはデータマップリカバリ動作要求が挙げられる。
【００４１】
他の実施形態では、サービス要求は、特定の動作特徴の所望のサービスレベルを示すサービスレベルインジケータを含むことができる。複数のサービスレベルを提供することができ、各サービスレベルのトランザクション料金は可変である。ここでも、特定の動作特徴は重要ではない。例として、効率の異なる複数の処理および／またはデータ送信アルゴリズムを提供することができ、トランザクション料金はアルゴリズムの効率に応じて可変である。別法では、またはこれに加えて、たとえば不揮発性ＲＡＭリカバリのためのファームウェア更新をオンライン（すなわち、ストレージデバイスが動作可能なとき）またはオフライン（すなわち、ストレージデバイスが動作可能ではないとき）で提供することができ、トランザクション料金は選択に基づいて可変である。
【００４２】
別のサービスレベル提供は、Hewlett-Packard Companyに譲渡され、内容全体が参照により本明細書に援用される、Brian L. Patterson他による「Method and Apparatus for Selecting Among Multiple Data Reconstruction Techniques」という名称の米国特許出願第１０／４５７，８６８号に記載されている。複数のデータ再構築技法を提供して、デバイス故障からリカバリ（recover）することができ、異なるトランザクション料金を異なる再構築技法に割り振ることができる。たとえば、管理者は好ましい再構築技法として「所定位置再構築(rebuild in place)」技法を選択することができるが、所定位置再構築技法が利用可能ではない場合に「再構築移行(migrating rebuild)」再構築技法を許可することを選択することができる。故障の場合、ストレージデバイスはまず、好ましい技法を実施しようとすることができ、好ましい技法が利用可能ではない場合に別の技法を実施することができる。
【００４３】
動作７１５において、サービス要求が実行される。例示的な実施形態では、プロセッサはソフトウェアアプリケーションを呼び出してサービスコールを実行する。
【００４４】
動作７２０において、口座情報がサービス要求の実行を反映するように更新される。例示的な実施形態では、口座情報がプロセッサに通信可能に接続されたメモリロケーションに保持される。ＲＡＩＤコントローラでは、口座情報はＲＡＩＤディスクアレイに保持することができる。口座情報は、口座識別子、サービス識別子、サービスを実行した特定のネットワークデバイスまたはコントローラを識別するデバイス識別子、サービスが実行された日時を識別するタイムスタンプを含むことができる。
【００４５】
動作７２５において、口座情報は、適した通信接続、たとえば通信ネットワークまたは専用通信リンクを介してリモートサーバに送信される。一実施形態では、動作７２５はサービス要求が実行される都度実行される。他の実施形態では、口座には借方残高または貸方残高が生じ得るため、動作７２５が実施される前に複数のサービス要求を実行することができる。
【００４６】
動作７１０〜７２５により、ストレージデバイスはリモートプロセッサの関与なしでトランザクションベースのストレージ動作を実施することができる。図８は、トランザクションベースのストレージ動作方法の代替の実施形態における動作を示すフローチャートである。図８において説明する動作は、ＲＡＩＤコントローラ、ネットワークストレージコントローラ、ホストコンピュータ、またはストレージネットワーク内の別のプロセッサで実施することができる。図８における動作は、ローカルコントローラ上のプロセッサがリモートサーバと協働してトランザクションベースのストレージ動作を実施することができるクライアント−サーバベースの方法を実施する。
【００４７】
動作８１０において、サービス要求が受け取られる。サービス要求は、ストレージデバイスまたはストレージネットワークのユーザ、たとえばネットワーク管理者により生成することができる。別法として、サービス要求は、ストレージデバイスまたはストレージネットワーク内の別の計算デバイスにより、または図８の動作を実行するプロセッサで実行されるプロセッサにより生成することができる。サービス要求の中身は、図７に関連して上に説明したものとほぼ同じであることができる。要求される特定のサービスは重要ではない。例示的なサービス要求については図７に関連して説明した。
【００４８】
オプションの動作８１５において、ローカルストレージ媒体に記憶されている口座に、サービス要求を実行するに十分なクレジットがあるか否かが判断される。クレジットベースのシステムでは、コントローラは、借方残高または貸方残高を有することができる口座をローカルストレージ媒体上に保持することができる。口座の単位は重要ではなく、口座は通貨単位、ポイント、または他の単位で称することができる。サービス要求に関連する料金が口座残高（すなわち利用可能なクレジット）を超えない場合、十分なクレジットがローカルストレージ媒体に記憶されている口座で利用可能であり、制御を動作８５５に渡すことができ、動作８５５において、サービス要求は、たとえばソフトウェアアプリケーションを呼び出すことによって実行される。この場合、トランザクションベースのストレージ動作は、リモートサーバの助けなしで管理することができる。次いで、制御は動作８６０に渡され、ローカル口座情報が、ストレージ動作の実行を反映するように更新される。
【００４９】
対照的に、ローカル口座におけるクレジットがサービス要求を実行するに不十分である場合、制御は動作８２０に渡され、トークン要求が生成される。一実施形態では、ＲＡＩＤコントローラ（または図８の方法を実行している他のプロセッサ）およびサーバはトークンベースの通信モデルを使用し、ＲＡＩＤコントローラ（または図８の方法を実行している他のプロセッサ）は、トークンの形態で、サービス要求を実行する許可をサーバから要求する。トークン要求は、サービス要求を実行する料金を課すべき口座の口座識別子を含むことができる。さらに、トークン要求は、サービス要求を識別する情報、サービス要求を発したネットワークデバイスを識別する情報、およびローカルストレージ媒体に記憶されている口座で利用可能なクレジットについての情報を含むことができる。
【００５０】
動作８２５において、トークン要求はサーバに送信される。要求は、任意の適した通信接続を介して送信することができる。ストレージネットワーク２００等のストレージネットワークでは、トークン要求は通信ネットワーク２１２を介して送信することができる。代替の実施形態では、トークン要求はＲＡＩＤコントローラ（または図８の方法を実行している他のプロセッサ）とサーバの間の専用通信リンクを介して送信することができる。例として、保持を目的として、ＲＡＩＤアレイがＲＡＩＤアレイとリモートサーバの間に専用電話リンクまたはデータリンクを保持することが一般的である。トークン要求はこの専用通信リンクを介して送信することができる。
【００５１】
サーバはトークン要求を受け取り、動作８３０において、トークン要求を検証する。例示的な実施形態では、サーバは、１つまたは複数のサービス口座の状態を記録したデータテーブルを保持するソフトウェアアプリケーションを備える。データテーブルは、たとえば関係データベースまたは他の任意の適したデータモデルで実施することができる。サーバに保持されるデータテーブルは、顧客番号、口座番号、デバイス識別子、デバイスおよびサービスについての他の情報を含むことができる。
【００５２】
一実施形態では、サーバは、トークン要求内の口座識別子を、サーバのデータテーブルに保持される口座識別子のリストと比較することができる。一致する口座識別子がデータテーブルにない場合、サーバはサービス要求の検証を拒絶することができる。対照的に、一致するエントリがデータテーブルにある場合、サーバはオプションでさらなる検証動作を実行することができる。たとえば、サーバは、トークン要求に含まれるデバイス識別子に一致するデバイス識別子についてデータテーブルを探索することができ、デバイス識別子と口座識別子の間の関連を確認することができる。
【００５３】
サーバは、トークン要求において識別された口座がトークンを受け取るに十分なクレジットを含むか否かも判断することができる。例示的な実施形態では、サーバに保持される口座は借方残高または貸方残高を有することができる。サーバは、サービス要求に関連する料金を口座で利用可能なクレジットと比較することができる。サービス要求に関連する料金の支払いに十分なクレジットが口座にない場合、サーバはオプションで、十分なクレジットを口座に提供する動作を行うことができる。例として、サーバは口座の支払い履歴をレビューすることができ、または第三者信用調査機関から情報を検索して、さらなるクレジットを口座に追加すべきか否かを判断することができる。
【００５４】
サービスに関連する料金の支払いに十分なクレジットが口座にある場合、サーバはサービス要求の実行を認可するトークンを生成することができる。トークンがとる特定の形態は重要ではなく、実施固有とすることができる。一実施形態では、トークンは、サービス要求を実行する許可が認可されたか、または拒絶されたかを示すフラグを含むデータフィールドを含むことができる。代替の実施形態では、トークンは口座識別子および／または口座残高情報を含むことができる。トークンは、プロセッサにより判読可能な、サービスコールを呼び指す許可を認可または拒絶するコードも含むことができる。コードを暗号化して、プロセッサとサーバの間での機密性対策を提供することができる。代替の実施形態では、トークンはプロセッサにより実行可能な、サービス要求を呼び出すソフトウェアモジュールを含むことができる。ソフトウェアモジュールは、プロセッサで実行可能なＪＡＶＡ（登録商標）アプレット等のアプレットとして具現することができる。
【００５５】
動作８４０において、サーバはトークン要求に対する応答をＲＡＩＤコントローラ（または図８の方法を実行している他のプロセッサ）に送信する。応答は、上述のように適した通信リンク（複数可）を介して送信することができる。トークン要求に対する応答はトークンを含み、また、たとえばタイムスタンプ等の追加情報を含むことができる。
【００５６】
ＲＡＩＤコントローラ（または他のプロセッサ）はトークン要求に対する応答を受け取り、動作８４５において、応答を評価して、トークンがサービス要求を実行する許可を認可するか否かを判断する。実施される評価動作はトークンのフォーマットに応じる。トークンがデータフィールドとして実施される場合、評価には、データフィールド内の値を解釈して、データフィールドがサービス要求を実行する許可を認可するか、それとも拒絶するかを判断することが必要であり得る。トークンがコードとして実施される場合、評価には、コードを判読かつ／または解読して、データフィールドがサービス要求を実行する許可を認可するのか、それとも拒絶するかを判断する必要があり得る。トークンがソフトウェアモジュールとして実施される場合、評価には、応答がソフトウェアモジュールを含むか否かを判断し、含む場合、ＲＡＩＤコントローラ（または他のプロセッサ）でソフトウェアモジュールを実行することが必要であり得る。評価の特定の性質は重要ではなく実施固有である。
【００５７】
トークン要求に対する応答がサービス要求を実行する許可を拒絶する場合、図８に示す方法は動作８５０において終了する。対照的に、トークン要求に対する応答がサービス要求を実行する許可を認可する場合、制御は動作８５５に渡り、サービス要求が実行される。例示的な実施形態では、プロセッサはソフトウェアアプリケーションを呼び出してサービスコールを実行する。
【００５８】
オプションの動作８６０において、ＲＡＩＤコントローラ（または他のプロセッサ）は、サービス要求の実行および／またはサーバへのトークン要求に起因する他の口座変更を反映するようにローカルストレージ媒体に記憶されている口座における情報を更新する。例として、サーバがＲＡＩＤコントローラ（または他のプロセッサ）に利用可能なクレジットを増やした場合、この変更を反映するように、ローカルストレージ媒体に記憶されている口座における情報を更新することができる。
【００５９】
同様にオプションの動作８６５において、サーバに記憶されている口座情報は、サービス要求の実行および／または口座状態の他の変更を反映するように更新される。たとえば、口座が債務不履行であると判断される場合、そのクレジット状態を限度に制限する、またはサービスの使用を拒絶することができる。
【００６０】
記載の構成および手順は構造的特徴および／または方法論的動作に固有の言葉で説明したが、添付の特許請求の範囲に規定される主題は必ずしも記載の特定の特徴または動作に限定されないことを理解されたい。むしろ、特定の特徴および動作は特許権請求する本主題を実施する好ましい形態として開示されるものである。
【図面の簡単な説明】
【００６１】
【図１】ストレージネットワークを利用するネットワーク化された計算システムの例示的な実施形態の概略図である。
【図２】ストレージネットワークの例示的な実施形態の概略図である。
【図３】ホストを実施するのに利用することができる計算デバイスの例示的な実施形態の概略図である。
【図４】ストレージセルの例示的な実施形態の概略図である。
【図５】ＲＡＩＤストレージを実施するデータストレージシステムの例示的な実施形態の概略図である。
【図６】ＲＡＩＤコントローラの例示的な実施形態のより詳細な概略図である。
【図７】トランザクションベースのストレージ動作方法の例示的な実施形態における動作を示すフローチャートである。
【図８】トランザクションベースのストレージデバイス動作の別の例示的な実施形態における動作を示すフローチャートである。
【図１】
2005235195.tif 000003
【図２】
2005235195.tif 000004
【図３】
2005235195.tif 000005
【図４】
2005235195.tif 000006
【図５】
2005235195.tif 000007
【図６】
2005235195.tif 000008
【図７】
2005235195.tif 000009
【図８】
2005235195.tif 000010