(57)【特許請求の範囲】
【請求項１】
複数のストレージデバイス群（６０４）に構成することができる複数のストレージアレイ（６０２）と、
前記ストレージデバイス群の１つ以上に選択的に接続された複数のコントローラペア（６０６）と、
関連したコントローラペアおよびストレージデバイス（６１２）からなる組（６１０）が複数あり、その複数の組のリンク機構として配置されたネットワークファブリック（６０８）と、
前記コントローラペアのいずれかから、前記コントローラペアの他のいずれかへコントローラ負荷を分配して、前記複数のストレージデバイス群の間でデータを移動させずに、ボトルネックを解消するプロセッサ（６１４）であって、前記コントローラ負荷の分配は、個々の前記ストレージデバイス群の前記コントローラペアによる利用と、１つの組（６１０）内のストレージデバイス群間の帯域幅の利用とに従った性能要求の分配に基づくプロセッサと
を備えるストレージシステム（６００）。
【請求項２】
データ転送帯域幅の計測および／または毎秒の実行オペレーションの計測を含む性能要求を計測することによって、複数のストレージデバイス群（６０４）間の性能要求を決定する、前記プロセッサ（６１４）で実行可能なプロセス
をさらに備える請求項１に記載のストレージシステム。
【請求項３】
ストレージデバイスごとのスループットの比率として性能要求を見積もることにより、複数のストレージデバイス群（６０４）間の性能要求を決定する前記プロセッサ（６１４）で実行可能なプロセス
をさらに備える請求項１に記載のストレージシステム。
【請求項４】
仮想スロット、コントローラプロセッサの利用および組間リンクの利用として定義される３つの次元を有する３次元ビンパッキング技法を使用して、コントローラペア（６０６）およびストレージデバイス群（６０４）の割り当てを最適化する前記プロセッサ（６１４）で実行可能なプロセス
をさらに備える請求項１に記載のストレージシステム。
【請求項５】
カスタムなヒューリスティックアルゴリズムを使用して、コントローラペア（６０６）およびストレージデバイス群（６０４）の割り当てを最適化する、前記プロセッサ（６１４）で実行可能なプロセス
をさらに備える請求項１に記載のストレージシステム。
【請求項６】
１つの組（６１０）の事前に計画されたコントローラとストレージデバイス群との関連パターンの中から選択したものを使用して、コントローラペア（６０６）およびストレージデバイス群（６０４）の割り当てを最適化する前記プロセッサ（６１４）で実行可能なプロセス
をさらに備える請求項１に記載のストレージシステム。
【請求項７】
前記ストレージデバイスは、複数の前記コントローラペアと物理的に接続されている
請求項１に記載のストレージシステム。
【請求項８】
前記複数のストレージアレイ（６０２）は、冗長な独立ディスクアレイ（ＲＡＩＤ）ストレージ用にグループ化される
請求項１に記載のストレージシステム。
【請求項９】
前記ストレージデバイス群に関係した制御およびデータを配置するための仮想スロットとして管理されるコントローラメモリ資源
をさらに備える請求項１に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコントローラ間に仮想ストレージセグメントを割り当てる能力を有するストレージシステムに関する。
【背景技術】
【０００２】
情報技術を使用する組織は、変化および混乱が加速する困難な環境で運営を行うことがますます多くなっている。
ますます適応進化する企業は、情報技術基盤を使用することによってこれらの難題に対処する。
この情報技術基盤は、サービスを実行するコンポーネントではなく、提供されたサービスがシステム構成時の最も重要な因子となるユーティリティの形式で機能するものである。
【０００３】
適応進化する企業では、情報技術サービスのレベルは、低コストで信頼でき、確実でスケーラブルなサービスを使用するリアルタイムのビジネスアクティビティのフローと一致する。
これらのサービスは、利用可能であり、かつ、ピークのアクティビティの期間のニーズおよび小康状態の期間のニーズを満たすように動的にマッピングされる。
適応進化する企業としてうまく運営を行うために、情報技術サービスは、変化する内部および外部のビジネス状況に素早く対応することができ、安全で途切れない計算サービスおよびストレージサービスを提供することができる。
これらの計算サービスおよびストレージサービスは、自動化されたインテリジェントな管理オペレーションと、事前に定義されたコンポーネントの「プール」からのサーバ、ネットワークコンポーネント、ストレージエレメント、およびアプリケーションサービスを含む資源の発見、割り当て、最適化、および割り当て解除を行う能力とを使用して保護され、最適化されるものである。
【０００４】
資源の仮想化は、サーバ資源、ストレージ資源、およびネットワーク資源を抽象化または仮想化して、他のアプリケーションのデータへのアクセスを妨害することも中断することもなく組織の内外の双方で、動的に利用可能な共有資源を情報技術サービスによって得ることである。
サーバの仮想化によって、サーバ環境を水平方向および垂直方向でスケーリングすることが可能になり、利用の最適化、サービスレベルの改善、および管理オーバーヘッドの削減が可能になる。
ネットワークの仮想化は、インテリジェントルータ、スイッチ、および仮想的なローカルエリアネットワーク（ＬＡＮ）をサポートする他のネットワーク接続エレメントによって可能になる。
仮想化されたネットワークは、セキュリティを増大させ、顧客およびユーザの要求の予期しないスパイク（spike）をサポートすることができる。
ストレージの仮想化は、サーバ、ネットワーク、またはアレイに基づくことができ、ストレージサブシステムの利用を改善し、管理コストを削減し、かつ、貴重なデータを保護する。
【０００５】
システムは、サーバ、ストレージ、およびネットワークエレメントの論理機能を物理機能から分離することによって仮想化される。
例えば、すべてのサーバ、ストレージ、およびネットワークデバイスは、独立した資源プールに集約することができる。
いくつかのエレメントは、例えばサーバパーティション、ストレージ論理ユニット（ＬＵＮ）等にさらに再分割されて、より一層細かな粒度レベルの制御を与えることもできる。
ビジネスの変化するニーズおよび優先度に適合するように、手動または自動のいずれかで、資源プールからのエレメントの割り当て、プロビジョニング、および管理を行うことができる。
【０００６】
ストレージの仮想化を使用するシステムでは、ストレージの階層のさまざまなレベルで物理資源のプール化が可能にされる。
アレイコントローラでは、仮想化によって、物理容量をより効率的かつ動的に割り当てることが可能になる。
ネットワーク接続されたストレージの仮想化によって、ストレージエリアネットワーク（ＳＡＮ）、接続型アレイコントローラまたはネットワーク接続型ストレージ（ＮＡＳ）ファイルサーバ等のネットワークストレージデバイス群のより高可用性、より良い利用、および集中管理が可能になる。
サーバに基づく利用によって、単一サーバという状況の中で、ＳＡＮおよび直接接続型ストレージ（ＤＡＳ（direct-attached storage））の双方の物理容量がプールされる。
【０００７】
ストレージの仮想化には、アプリケーションによって消費される物理的なストレージデバイスと論理ボリュームとの間に抽象レイヤを形成することが必要とされる。
抽象化によって、ストレージ基盤の詳細がサーバから隠蔽され、管理環境全体が簡略化される。
資源プール化によって、データ位置の物理的な詳細が隠蔽され、保護用の資源サブセットが作成され、より高い帯域幅、容量、および／または可用性を得るために資源が集約される。
仮想化はストレージ容量を抽象化する。
この抽象化は、物理デバイスや論理ユニット（ＬＵＮ）等のストレージ容量を提供するエレメントを論理空間にマッピングし、アプリケーションに提示される論理デバイスを作成し、物理的境界を消去し、管理でき、かつ、必要に応じてアクセスできる容量プールを作成することによって行われる。
【０００８】
ストレージの仮想化によって、ストレージ管理は、基盤へのストレージ資源の追加、割り当て、および再割り当てを自動化することにより簡略化される。
また、ストレージの仮想化によって、ストレージの利用も、適切に構成されたストレージ環境をアプリケーションおよびデータの要件にマッピングすることを確実にすることにより改善される。
また、仮想化によって、要求の増大またはピーク要求を満たすためのストレージ容量の重要な事前割り当ての負担も軽減される。
また、ストレージ仮想化によって、異種環境にわたるストレージサービスも可能になり、その結果、管理が簡略化され、既存の資源の利用が改善される。
【０００９】
従来の多くの主要なストレージシステムは、ディスクアレイを使用して、データの高可用性を確保している。
アレイの主要なデータ転送および処理能力は、１つまたは２つ以上のコントローラ上に存在する。
いくつかのシステムは、フォールトトレランス用に丁度２つのコントローラを有し、サイズが適度にされている。
それ以外のシステムは、より高い性能を得るために３つ以上のコントローラを備えたより大きなアレイを有する。
あいにく、多くのコントローラを備えたアレイのエントリーコストは、より小さなよりモジュール形式のアレイよりもはるかに高くなる傾向を有する。
【００１０】
システム容量の要件または性能の要件の増加に伴う一般的なアップグレードは、ダウンタイムなしに２つまたは３つ以上のコントローラシステムからより大きなシステムへ成長することである。
成長は、性能要求または容量要求が１つのコントローラペアまたはアレイの能力を超える時に生じる。
一般的な拡張には、コントローラまたはアレイをデータセンタに追加することが必要とされ、必要に応じて、アレイ間でデータを移動させて、コントローラ全体にわたる仕事量をバランスさせることが必要とされる。
各ディスクは、１つのアレイ内の多くとも２つのコントローラに直接接続されるので、データの移動は、コントローラペア全体にわたる負荷をバランスさせるために課される。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
各ディスクが丁度２つのコントローラに接続される従来のストレージアレイの１つの問題は、ディスクのコントローラペアに対する関連を変更できないということである。
時間および資源の双方を費やすデータの移動なしに、コントローラ／ディスクの組み合わせを変更するように適合させることはできない。
性能ボトルネックを除去するコントローラ資源の拡張は、一般に、コントローラの追加だけでなく、ディスクの追加も要求する。
ディスクは、１つのコントローラペアとの制限された物理的関連を有するので、ボトルネックは、データを移動することなくコントローラペアで軽減することができない。
データ移動は、場合によってはオンラインであるが、時間および資源を費やし、したがって、性能または容量の頻度の高い負担、定期的な負担、または短期間の負担に対応するものとしては不適切である。
その結果、ストレージシステムが単一アレイを超えて成長することに対応することは困難である。
さらに、１つまたは複数のコントローラが障害になった場合に、ストレージシステムが性能および可用性を維持するのは困難である。
また、ストレージシステムは、要求の定期的な変更に対して性能を容易に最適化することができない。
【課題を解決するための手段】
【００１２】
開示したシステムの一実施の形態によると、方法が、ストレージシステムの仮想ストレージセグメントの制御を複数のコントローラ間に割り当てる。
ストレージシステムは、複数の組の関連したコントローラおよびストレージデバイスとして配置される。
この方法は、複数のストレージデバイス群間の性能要求を決定すること、個々のストレージデバイス群のコントローラプロセッサの利用と１組内のストレージデバイス群間で比例配分できる帯域幅の利用とに従って、性能要求値を分配すること、および性能要求値の分配に基づいて複数のストレージデバイス群をコントローラと関連付けることを含む。
【００１３】
オペレーションの構造および方法の双方に関係する本発明の実施の形態は、以下の説明および添付図面を参照することによって最もよく理解することができる。
【発明を実施するための最良の形態】
【００１４】
ストレージデバイス間のデータの移動を回避しつつシステムの拡張を可能にするために、例示のシステムは、複数のアレイコントローラペアおよびこれらのコントローラペアの背後にある１組のストレージデバイスの間のネットワークファブリックを形成する。
例示のシステムでは、コントローラペアは、他のコントローラペアからのストレージデバイスに相互にアクセスすることができる。
例示のシステムは、コントローラ間で責任を分割する方法を含むことができ、柔軟なシェルフ管理およびストレージデバイスのアクセスの拡張を可能にする。
例示のシステムは、データを移動させることなく、１群のストレージデバイスに関係した制御機能および／またはデータ転送機能をコントローラ間およびアレイ間で移動させる方法を実施することができる。
例示のシステムは、複数のストレージデバイス群に関係した制御機能および／またはデータ転送機能を、システム内の複数のコントローラまたはアレイにわたってどのように委ねるべきかを決定する一般的な方法を実施することができる。
【００１５】
本明細書で示す機能が不可能な従来のシステムは、ストレージデバイス間のデータ移動を利用する。
マルチコントローラファブリック（multiple-controller fabric）の利用、コントローラ帯域幅の利用、およびコントローラメモリの利用を考慮した自動化アルゴリズムの能力なしに、負荷バランシングの決定が行われる。
【００１６】
これに対して、本明細書に示すシステムは、ストレージデバイスに取り付けられたコントローラのオペレーションに関して、従来のモノリシックアレイの負荷バランシングの柔軟性と一致させるか、または、これを超えるように、数群のモジュール形式のストレージアレイの能力を増大させる。
例示のシステムでは、ネットワークファブリック構成、例えば、限られた構成のファイバチャネルファブリックが、１群のアレイの背後に配置され、ストレージデバイスに関係したアクティビティが、データを移動することなくコントローラ間で移行できるようにする。
【００１７】
例示のシステムおよび方法を使用すると、コントローラ資源を拡張して、性能ボトルネックを除去するのに、コントローラの追加だけでなく、ストレージデバイスの追加ももはや必要ではない。
ストレージデバイスは、物理接続を複数のコントローラペアに拡張しており、したがって、データを移動することなく、コントローラペアのボトルネックを軽減することができる。
データの移動が回避されるので、コントローラの負荷の再バランシングは、性能または能力の頻度の高い負担、定期的な負担、または短期間の負担に対応するものとして適したものとなる。
【００１８】
例示のシステムおよび方法によって、複数のコントローラファブリックの利用、コントローラの帯域幅の利用、およびメモリの利用を考慮する自動化アルゴリズムを使用して、負荷バランシングの決定が可能になる。
１つのストレージシェルフのストレージデバイスを、そのファブリックに接続された群の任意のコントローラペアに関連付けることができる。
コントローラの障害の短時間、例えば数分以内で性能を再バランスさせることができる。
一般的なアレイ構成は、障害のコントローラおよび残りのアクティブなコントローラを含む２つのコントローラを有するので、この高速な対応は有益である。
残りのアクティブなコントローラは、ライトバックキャッシュの利益がない状態で、双方のコントローラの作業を実行する。
障害のコントローラを有するアレイは、マルチアレイアプリケーションを実行する際に、リンクが容易に弱くなる可能性があり、アプリケーション全体が通常の性能の半分で実行される可能性がある。
高速な再バランシングによって、障害のコントローラを有するアレイの作業を他のアレイ全体にわたって再分散させることができ、性能の劣化が大幅に低減される。
これに対して、従来のシステムは作業負荷の再分散を試みない。
その理由は、このような再分散は、トランジット時間を含めて、コントローラを修復する時間よりも、負荷を再バランスさせる時間の方が長い時間を要する可能性があるからである。
【００１９】
いくつかの実施の形態によると、例示のシステムおよび方法によって、新たなコントローラが直ちに連動する状態で、当該新たなコントローラに論理ユニット（ＬＵＮ）およびストレージデバイス群を取り付けることができるコントローラを追加した後、復帰することが可能になる。
これに対して、従来のシステムは、データをコピーし、その結果、おそらく何時間もの移動時間を要することになる。
【００２０】
いくつかの実施の形態によると、コントローラの帯域幅をバックアップ用に追加することができる。
バックアップオペレーション中、余分なコントローラの帯域幅をそのオペレーションに割り当てることができ、ストレージデバイス群間でのローテーションが可能になる。
これに対して、従来のシステムでは、ＬＵＮの一部分をコピーすることができ、ＳＡＮバックアップアクティビティの可能な２重化が行われる。
【００２１】
いくつかの実施の形態では、例示のシステムおよび方法を利用して、ストレージデバイスシェルフの成長を償還する（amortize）ことができる。
あらゆるコントローラペアがあらゆるストレージデバイスを使用することができ、その結果、新たなストレージデバイスシェルフの利益をシステム全体にわたって共有することができる。
【００２２】
図１を参照して、概略ブロック図が、複数のコントローラ１０２間で仮想ストレージセグメントの制御を割り当てることができるストレージシステム１００の一実施の形態を示している。
このストレージシステム１００は、複数の組の関連したコントローラ１０２およびストレージデバイス１０４として配置されている。
ストレージシステム１００は、１つまたは２つ以上のストレージサブシステム１０６に複数のコントローラ１０２を含む。
例示の実施の形態では、ストレージサブシステム１０６は、カリフォルニア州パロアルトのＨｅｗｌｅｔｔ  Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙ（商標）が製造して販売しているＥｎｔｅｒｐｒｉｓｅ  Ｖｉｒｔｕａｌ  Ａｒｒａｙ（商標）ストレージサブシステムとすることができる。
コントローラ１０２は、ストレージデバイス群内に割り当てられた複数のストレージデバイス１０４の記憶を管理する集約された管理機能を実行する。
例示の実施の形態では、ストレージサブシステムは、マルチコントローラファブリック１０８、例えばバックエンドスイッチのアレイを介して、ストレージデバイスシェルフまたは単純ディスク束（ＪＢＯＤ（Just a Bunch of Disks））構成の複数のストレージデバイス１０４に記憶された情報を管理する。
１つまたは２つ以上のホストコンピュータ１１０は、ストレージエリアネットワーク（ＳＡＮ）の仮想化を使用する一揃いのインテリジェントスイッチ１１２を介して、ストレージサブシステム１０６と通信することができる。
例えば、管理機器１１４等のデバイスで実行される管理ソフトウェアは、インテリジェントスイッチ１１２、マルチコントローラファブリック１０８、および／またはストレージサブシステム１０６のオペレーションを調整する。
あるいは、管理ソフトウェアは、ストレージサブシステム１０６、ホスト１１０、または他の適切なデバイス等のシステム１００の他のプロセッサで実行することもできる。
管理コントローラは、インテリジェントスイッチ１１２の制御を介して、コントローラストライピング（controller striping）およびキャッシュ集約を含むオペレーションをハンドリングする。
管理ソフトウェアは、インテリジェントスイッチ１１２を操作して、トランスペアレントなマルチコントローラアクセスを構成する。
マルチコントローラファブリック１０８において、管理能力には、ストレージデバイス間での負荷バランシングが含まれる。
【００２３】
ストレージシステム１０６は、特定のストレージデバイス１０４に関連した数組のコントローラ１０２を含む。
これに対して、ストレージデバイス群は、任意のコントローラ１０２によって管理されるストレージデバイス１０４のあらゆる組み合わせの論理的関連である。
【００２４】
インテリジェントスイッチ１１２、ストレージシステム１０６、マルチコントローラファブリック１０８、およびストレージデバイス１０４は、ストレージボールト（storage vault）１１６に配置されて示されている。
このストレージボールト１１６は、単一の場所または建物の単一のキャビネット内に含まれたストレージシステムとすることもできるし、地理的に分散した複数のキャビネット内に含まれたストレージシステムとすることもできる。
【００２５】
さまざまな実施の形態では、１つまたは２つ以上のルールおよび条件が、コントローラペアの間で１群のストレージデバイスの記憶の管理方法の態様および制御の移動方法の態様と関係する。
例えば、ディスク等のストレージデバイスは、冗長な独立ディスクアレイ（ＲＡＩＤ（Redundant Array of Independent Disks））スタイルの冗長アルゴリズムを円滑にするようにグループ化することができる。
ストレージデバイス群の帰属は、一般に、ストレージデバイス群を現在制御しているコントローラ１０２に存在するアルゴリズムに従って決定される。
コントローラのメモリ資源は、ストレージデバイス群を現在制御しているコントローラの仮想スロットとして管理することができる。
【００２６】
個々の仮想スロットは、バッテリバックアップされたメモリを含むことができる。
このバッテリバックアップされたメモリは、コントローラが障害の場合の連続的なデータアクセスがストレージデバイス群の移動を必要としないように、別のコントローラにミラーリングされている。
【００２７】
ストレージデバイス群の移動が実行されていない時に、システムの最大のストレージデバイス群を収容するのに十分な容量を有する少なくとも１つの仮想スロットがシステム１００で利用可能である。
【００２８】
多くのインストールでは、アレイを橋渡しするネットワークは、稀にしか保証できない資源を購入する費用のために、全横断面帯域幅（full cross-sectional bandwidth）を公開しないことがある。
このネットワークは、複数の組の関連したコントローラペアおよびストレージデバイスシェルフとしてモデル化することができる。
これらの組の１つの内部の帯域幅は、その組のストレージデバイスのすべてにアクセスするのに十分であると仮定される。
しかしながら、これらの組と組との間の帯域幅は一般に限られている。
各コントローラとそのコントローラの組のストレージデバイスとの間の帯域幅がシステム全体にわたって一様であり、かつ、コントローラの内部帯域幅が、そのコントローラでインピングする（imping）すべての外部帯域幅の全利用を収容できる場合には、最適化アルゴリズムを簡略化することができる。
【００２９】
一般的に、ディスクに含まれるデータまたはメタデータへのアクセスのサポート以外に、ストレージデバイスまたは１群のストレージデバイス、例えばディスクまたはディスクエンクロージャ、との相互作用には、関連したコンポーネントとの相互作用を含めて、そのストレージデバイスと同じ組のコントローラが必要とされる。
例えば、このコントローラは、環境監視ユニット等の関連したストレージデバイスシェルフコンポーネントとの相互作用を管理する。
ストレージデバイスに関係した障害情報は、その情報の検出方法に応じて、どのコントローラにも現れることがある。
この情報は、より高いレベルの管理ソフトウェアによって相関される。
【００３０】
新たなストレージデバイスは、一般に、まず、そのストレージデバイスと同じ組のコントローラによって発見される。
この関連したコントローラは、或るデバイス群への割り当てを有効化または自動化する全システムストレージデバイスプール管理ユーティリティに、そのストレージデバイスが利用可能であることを知らせる。
デバイスを群に追加するプロセスは、その群を現在担当しているコントローラによって実行される。
【００３１】
図２を参照して、フローチャートが、ストレージデバイス群に対する管理責任を複数のコントローラ２００間に割り当てる方法を示している。
この方法は、複数のストレージデバイス群２０２間の性能要求（performance demand）を決定することを含む。
さまざまな状況において、特定のシステム構成では、さまざまな技法を使用して、性能要求を決定することができる。
性能要求は、計測することもできるし、見積もることもできる。
性能要求パラメータは、データ転送帯域幅、単位時間当たりのオペレーションのオペレーションスループット等の１つまたは２つ以上の中から選択することができる。
性能監視をサポートするプロセッサのレジスタまたはメモリからプロセッサメトリックを読み出すことができる。
見積もりは、ストレージデバイスごとのスループットの比率としての性能要求の列挙、および／または、実施されたアップストリーム作業負荷管理パラメータの評価を組み込むことができる。
【００３２】
さらに、この方法は、性能要求値を分配する（２０４）ことも含む。
この分配は、個々のストレージデバイス群のコントローラプロセッサ利用および帯域幅利用に基づいている。
資源利用は、１組の内部のストレージデバイス群間で比例配分することができる。
【００３３】
また、この方法は、複数のストレージデバイス群を性能要求値の分配に基づいてコントローラに関連付ける（２０６）ことも含む。
【００３４】
図３を参照して、フローチャートが、ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の代替的な実施の形態３００を示している。
この方法は、図２に示す動作を含み、コントローラプロセッサの利用ガイドラインおよび組間通信の利用ガイドラインを確立する（３０２）動作を追加する。
いくつかの実施の形態では、これらのガイドラインは、最大利用ターゲットのガイドラインおよび／またはコントローラプロセッサ全体にわたる均等化の適合性（appropriateness of equalization）３０４を含むことができる。
【００３５】
図４を参照して、フローチャートが、ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の代替的な実施の形態４００を示している。
この方法は、図２に示す動作を含み、１つまたは２つ以上の技法を使用して、コントローラおよびストレージデバイス群の割り当てを最適化する（４０２）動作を追加する。
いくつかの実施の形態または状況では、３次元ビンパッキング（bin-packing）技法が割り当てを最適化する（４０４）。
３つの次元は、仮想スロット、コントローラプロセッサ利用、および組間リンク利用として定義することができる。
従来のビンパッキング技法は当業者に既知である。
いくつかの実施の形態または状況では、ビンパッキング技法を省略することもできるし、特定のアプリケーションまたは状況に対してあまりにも計算集中的（computationally-intensive）になり過ぎると判断することもできる。
ビンパッキング技法または他の計算技法の代わりに、経験または実験的評価に基づくカスタムなヒューリスティックアルゴリズム４０６を使用することができる。
他の実施の形態または状況では、１組の事前に計画された、コントローラとストレージデバイス群との関連パターンから、コントローラおよびストレージデバイス群の割り当てを最適化することができる（４０８）。
【００３６】
決定された関連に基づいて、この方法は、現在の状態から決定された状態へ構成を進める、一連のストレージ群の移動を計画することができる（４１０）。
【００３７】
図５を参照して、フローチャートが、ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の代替的な実施の形態５００を示している。
この方法は、図４に示す動作を含み、コントローラへのストレージデバイス群の割り当てが、事前に選択された判定基準を満たすかどうかを判断する（５０２）動作を追加する。
この判定基準が満たされると（５０４）、このコントローラとストレージデバイス群との関連が割り当てられる（２０６）。
そうでない場合には、ストレージデバイスのパターンは判定基準を満たさず、システムは割り当て失敗を示し（５０６）、１つまたは２つ以上の動作で応答する（５０８）。
可能な動作には、コントローラの追加、組間の帯域幅の追加、ストレージデバイスの追加、およびデータの移動によるストレージデバイスのグループ化の再構成が含まれる。
これらの動作の１つまたは２つ以上を実行することができる。
【００３８】
いくつかの実施の形態では、コントローラに対するストレージデバイス群の関連は、複数の判定基準に従ってランク付けすることができ、それに応じて分類することができる。
性能が前の性能よりもあまり良くない場合に、その状態を示すメッセージを生成することができる。
何らかのサービスレベル問題が存在するかどうかに応じて、或る応答を行うこともできるし、何ら動作を実行しないこともできる。
【００３９】
コントローラおよびストレージデバイス群の割り当てが最適化されると、この方法は、現在の状態から最適化された状態に進む一連の仮想的なストレージセグメントの移動を計画することができる。
【００４０】
図６を参照して、概略ブロック図が、資源管理の割り当て能力を有するストレージシステム６００の一実施の形態を示している。
このストレージシステム６００は、複数のストレージデバイス群６０４に構成可能な複数のストレージアレイ６０２と、個々のストレージアレイ６０２に選択的に接続された複数のコントローラ６０６とを備える。
デバイス群６０４は、原子的に移動（atomically migrated）可能な所有権属性（ownership attribute）を有する論理的に定義されたストレージデバイスの集合を表す論理構成体である。
ストレージシステム６００は、複数の組６１０の関連したコントローラ６０６およびストレージデバイス６１２のリンク機構として配置されたネットワークファブリック６０８を形成する。
個々の組６１０の関連したコントローラペアおよびストレージシェルフは、その組６１０のすべてのストレージアレイ６０２にアクセスするのに十分な帯域幅を有し、組間の帯域幅は限られている。
いくつかの実施の形態では、ストレージエレメントに含まれるデータまたはメタデータへのアクセスのサポート以外のそのストレージエレメントとのすべての相互作用には、そのストレージエレメントと同じ組のコントローラ６０６が必要とされる。
【００４１】
さらに、ストレージシステム６００はプロセッサ６１４も備える。
このプロセッサ６１４は、個々のストレージデバイス群６０４のコントローラプロセッサの利用と１組６１０内のストレージデバイス群６０４間で比例配分できる帯域幅の利用とに基づく性能要求の分配に基づいて、複数のストレージデバイス群６０４をコントローラ６０６間で関連付けることができる。
【００４２】
例示のストレージシステム６００では、複数のコントローラ６０６は、ストレージアレイ６０２が１つのコントローラペアと制限された物理的関連を有する状態にある複数のコントローラペアとして構成される。
複数のストレージアレイ６０２は、冗長な独立ディスクアレイ（ＲＡＩＤ）スタイルの冗長アルゴリズム用にグループ化され、群の帰属は、群６０４を現在制御しているコントローラ６０６に存在するアルゴリズムに従って決定される。
コントローラの内部帯域幅は、そのコントローラ上でインピング（imping）するすべての外部帯域幅の全利用に対応するのに十分なものである。
【００４３】
群に関係した制御およびデータ情報を配置するための仮想スロットとして、コントローラメモリソースを管理することができる。
いくつかの実施の形態では、仮想スロットにバッテリバックアップされたメモリが含まれる。
プロセッサ６１４で実行可能なプロセスは、このバッテリバックアップされたメモリの情報を１次コントローラから２次コントローラにミラーリングして、コントローラが障害事象の状況において、ストレージデバイス群を移動することなく、連続的なデータアクセスを維持する。
最大のストレージデバイス群６０４を収容できる十分大きな少なくとも１つの仮想スロットが、ストレージデバイス群の移動が実行されていない時に利用可能である。
【００４４】
さまざまな実施の形態および状況では、ストレージの管理に利用されるプロセッサ６１４は、コントローラ６０６、管理機器６１６、システム６００と相互作用するホストコンピュータ６１８等のさまざまなデバイスに存在することができる。
ストレージシステム６００は、他の制御エレメントも含み、他の制御エレメントには、アレイ６０２上のインテリジェントスイッチ６２０および下位ネットワークスイッチ６２２が含まれる。
ホスト６１８は、１つまたは２つ以上のストレージボールト６２６と通信することができ、このストレージボールト６２６は、ストレージアレイ６０２、コントローラ６０６、ネットワークファブリック６０８内のコンポーネントの一部を含む。
【００４５】
例示のストレージシステム６００は、単一のビューの管理（single view of management）を維持すること、アレイ全体にわたって論理ユニット（ＬＵＮ）を配備すること、ＬＵＮをアレイ間で移動させること、ストレージデバイスとコントローラのスケーリングとを分離すること等の複数の能力を有する。
これらの能力は、ストレージシステム６００のさまざまなレベルで制御することができる。
例えば、管理機器６１６は、数群のＬＵＮおよびアレイに管理動作を適用することによって、単一のビューの管理の維持を容易にするレベルに存在する。
【００４６】
アレイ全体にわたるＬＵＮの配備は、アレイ上のデータパスエージェント、例えばネットワークファブリック６０８のインテリジェントスイッチ６２０で管理することができる。
適切なＬＵＮへのコマンドの転送およびＬＵＮストライピングによって、ＬＵＮをアレイ全体にわたって配備することができる。
ストライピングは、冗長な独立ディスクアレイ（ＲＡＩＤ）構成で使用される技法であり、この構成では、各ドライブのストレージ空間が、５１２バイトのセクタから数メガバイトまでの範囲のユニットに区画される。
すべてのドライブのストライプはインターリーブされて、順番にアドレス指定される。
アレイ全体にわたるＬＵＮの配備は、例えば、レベルＮ＋１のＬＵＮ全体にわたってレベルＮのＬＵＮをストライピングすることによって管理することができる。
この技法は、複数のアレイの資源を１つのホストレベルのＬＵＮに適用するのに使用することができる。
【００４７】
アレイ間でのＬＵＮの移動は、例えば、管理機器６１６およびインテリジェントスイッチ６２０によって管理することができ、それによって、データを移動することなく、オンラインのコントローラ負荷の平準化が可能になる。
ＬＵＮを移動させる能力は、コントローラ資源を追加すると同時に、過剰なストレージデバイスエンクロージャを除去することができる。
管理機器６１６は、数群のＬＵＮおよびアレイに管理動作を適用することによって、ＬＵＮの移動を可能にすることができる。
また、管理機器６１６は、ＬＵＮの移動中にデータをコピーすることもできる。
インテリジェントスイッチ６２０は、ＬＵＮ移動中に一貫したデータアクセスを容易にする。
【００４８】
ストレージデバイスとコントローラのスケーリングとの分離は、管理機器６１６、インテリジェントスイッチ６２０、コントローラ６０６、および下位ドライブネットワークスイッチ６２２によって管理することができる。
この技法を使用すると、データを移動することなく、コントローラ６０６全体にわたるオンライン負荷平準化を可能にすることができ、ドライブエンクロージャを追加することなく、追加されたコントローラ６０６をストレージシステム６００に適用することができ、物理ドライブを再割り当てして利用可能なストレージ容量に移行することを可能にすることができる。
管理機器６１６は、ＬＵＮおよびストレージデバイス群の移動を調整し、追跡することができ、作業の再分配動作の順序付けを制御することができ、数群のＬＵＮおよびアレイに管理動作を適用することができる。
アレイ上のデータパスエージェントのインテリジェントスイッチ６２０は、コマンドを適切なＬＵＮに転送することができ、組６１０のレベルで提示されたＬＵＮ全体にわたる、インテリジェントスイッチ６２０によって提示されたＬＵＮのストライピングを管理することができ、移動中の中断を回避するようにキューを管理することができる。
コントローラ６０６は、メタデータでストレージデバイス群をパッケージすることおよびストレージデバイス群の移動プリミティブを供給することを含むいくつかの機能を実行することができ、また、データ移動中であっても再初期化および障害回復を実行することができる。
下位ストレージデバイスネットワーク６２２は、組間リンク６２４によって接続され、ストレージデバイス群のコントローラポート特有のビューを提供することができ、データを移動することなくボトルネックを軽減する断面帯域幅（cross-sectional bandwidth）を提供することができる。
例示の実施の形態では、組間リンク６２４は、下位ストレージデバイスネットワーク６２２のスイッチのペアを接続する組間スイッチから構成される。
また、下位ストレージデバイスネットワーク６２２は、ネットワーク構成の選択もサポートし、安全な発見および回復もサポートする。
【００４９】
組間リンク６２４のスイッチと下位ストレージデバイスネットワーク６２２との間の接続の帯域幅は、均一にすることもできるし、可変にすることもできる。
例えば、システム６００は、一般に、異なる動作能力を有するさまざまなストレージアレイコンポーネントまたはストレージシステムコンポーネントを含むことがあり、使用および容量の変化するレガシー（legacy）を有することがある。
システムコンポーネントおよびソフトウェアをストレージシステムの使用に適合させる最適化プロセスの一部は、組間リンク６２４の帯域幅、判定基準を含む性能を選択することとすることができる。
【００５０】
別の実施の形態によると、ストレージシステム６００は、複数のストレージデバイス群６０４に構成可能な複数のストレージアレイ６０２と、特定のストレージアレイ６０２に選択的に接続された複数のコントローラ６０６と、複数の群の関連したコントローラおよびストレージデバイスのリンク機構として配置されたネットワークファブリック６０８と、組の境界にわたる複数のストレージアレイ間の通信リンク機構６２４とを含む。
【００５１】
ストレージシステム６００は、１つまたは２つ以上のプロセッサ６１４を含む。
これらのプロセッサ６１４は、そのシステムのさまざまなレベルから実行されて、ストレージデバイスとは独立にコントローラのスケーリングを実施することができる。
プロセッサ６１４で実行可能な１つのプロセスは、データ転送帯域幅の計測および／または毎秒の実行オペレーションの計測を含む性能要求を計測することによって、複数のストレージデバイス群６０４間の性能要求を決定する。
他の実施の形態または他の状況で動作可能な実施の形態では、或るプロセスが、ストレージデバイスごとのスループットの比率として性能要求を列挙すること、および／または、実施されたアップストリーム作業負荷スロットルパラメータ（upstream workload throttling parameters）を評価することを含む性能要求を見積もることによって、複数のストレージデバイス群６０４間の性能要求を決定することができる。
【００５２】
いくつかの実施の形態では、ストレージシステム６００は、さらに、コントローラおよびストレージデバイス群の割り当てを最適化する、プロセッサ６１４で実行可能なプロセスも含むことができる。
いくつかの例および状況では、仮想スロット、コントローラプロセッサの利用、および組間リンクの利用として定義される次元を有する３次元ビンパッキング技法を使用して、ストレージを割り当てるプロセスが含まれる。
いくつかの実施の形態および／または状況では、カスタムなヒューリスティックアルゴリズムを使用して、コントローラおよびストレージデバイス群の割り当てを最適化する、プロセッサ６１４で実行されるプロセスを含めることができる。
いくつかの状況では、或るプロセスが、１組の事前に計画された、コントローラとストレージデバイス群との関連パターンの中から選択したものを使用して、コントローラおよびストレージデバイス群の割り当てを最適化する。
【００５３】
例示のブロック図は、単に理解を容易にするために、２つの組６１０を含むストレージボールト６２６を示している。
任意の個数の組６１０をストレージボールト６２６内に含めることができ、複数のストレージボールト６２６を相互接続することができる。
ストレージボールト６２６は、単一のシステムエンクロージャを含むこともできるし、複数のエンクロージャを含むこともでき、特定の場所にローカルなものとすることもできるし、地理的に分散させることもできる。
【００５４】
図７を参照して、概略ブロック図が、資源管理を割り当てるための開示した技法を実施するのに利用できるストレージシステム７００の一実施の形態を示している。
このストレージシステム７００は、ディスクアレイ等の複数のストレージデバイス７０２を含み、この複数のストレージデバイス７０２は、ストレージドライブおよびそれらドライブのコントローラを含む。
図示したストレージデバイス７０２は、ストレージドライブ７０６、例えばディスクドライブアレイに相互接続された２つのコントローラ７０４を含む。
ストレージデバイス７０２は、データおよびコマンドを含む情報を、１つまたは２つ以上のネットワークファブリック７１０を介して多くのホストシステム７０８間で通信する。
図示したシステムは、エレメントマネージャ７１２を含み、このエレメントマネージャ７１２は、管理機器７１４に存在する。
管理機器７１４も、ネットワークファブリック７１０に接続される。
負荷バランシングを行う開示した技法は、一般に、コントローラ７０４の１つまたは２つ以上のもので実行される。
ただし、いくつかのシステムは、場合によっては、管理機器７１４のエレメントマネージャ７１２等の他のプロセッサまたはコントローラでこの技法を実行することができる。
コントローラペア７０４は、ＳＣＳＩおよび／またはファイバチャネル（ＦＣ）スイッチ等のインタフェースループスイッチ７１６に接続される。
【００５５】
図８を参照して、概略ブロック図が、ストレージデバイス群８１４の一実施の形態を示している。
ストレージデバイス群８１４は、ストレージデバイスおよびデータ構造体を含み、データ構造体には、仮想データの論理表現を管理するのに使用できるメタデータ構造体の一例が含まれる。
例示の実施の形態では、メタデータ８１０に対して実行される、転送、通信、および変更を含むオペレーションによって、複数のアレイコントローラ間のネットワークファブリックの作成および管理が可能になり、それによって、コントローラ間で責任が割り当てられ、データを移動することなく、１群のストレージデバイスに関係した制御情報および／またはデータがコントローラ間およびアレイ間で移動される。
【００５６】
メタデータのメモリ表現は、コントローラのメモリに実施された１つまたは２つ以上の論理ユニット（ＬＵＮ）マップ８０６を含むマッピング構造体である。
このコントローラは、論理ブロックアドレスの観点で表現された、ホストからの要求を、アクセスしたい情報を記憶した物理ストレージデバイスの特定の部分にアドレス指定された読み出し／書き込みコマンドに変換することを可能にする。
メタデータのメモリ表現は、コンパクトであり、適度に少ない量のメモリに記憶することができ、それによって、一般に単一のページアクセス内に含まれるオペレーションで読み出しアクセスが可能になる。
【００５７】
例示のメモリ表現によって、論理ユニット（ＬＵＮ）は、例えば１メガバイトから２テラバイト以上の適度な大きさのストレージ容量を実施することが可能になり、マルチレベルＲＡＩＤ保護または冗長性のないサポートを含む任意のタイプの冗長な独立ディスクアレイ（ＲＡＩＤ）保護を有するように各ＬＵＮを定義することが可能になる。
単一のＬＵＮ内で、複数のタイプのＲＡＩＤデータ保護を実施することができる。
【００５８】
ストレージデバイス群８１４は、任意の大きさのストレージ空間を有し、このストレージ空間から、論理ユニットまたはＬＵＮとも呼ばれる論理ストレージデバイスが割り当てられる。
ストレージプールが、１つまたは２つ以上のストレージデバイス群を含み、各ストレージデバイス群は、ＬＵＮをそこから割り当てることができる１組の物理ストレージデバイス８１８に対応する。
任意の個数のストレージデバイス群を定義することができる。
ストレージデバイス群は互いに独立に動作する。
ＬＵＮは、実際上、ホストが使用する接続プロトコルからの要求を一意に識別されるＬＵＮにマッピングすることによってホストデバイスがアドレス指定できる連続した範囲の論理アドレスである。
【００５９】
ホストは、他のデバイスに対してサービスを実行することができる。
例えば、クライアント等のデバイスは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）等のネットワークを介してホストを使用して、ＬＵＮにアクセスすることができる。
【００６０】
ＬＵＮ内の論理ブロックアドレスは、１つまたは２つ以上のテーブルを通じて物理セグメント（ＰＳＥＧ）８０８に変換される。
この変換は、ＰＳＥＧおよび各ＬＵＮに関連したテーブルが１つのストレージデバイス群に完全に含まれるように行われる。
特定のＬＵＮを実施する物理ストレージセグメント（ＰＳＥＧ）８０８は、物理ストレージデバイスの多く、おそらく数百個にわたって分散される。
テーブル８００、８０２、および８０４は、ストレージデバイス群内の空間割り当ておよび状態追跡を可能にする内部構造を有するテーブル配置の一実施の形態を示している。
この例示のテーブルは、レベル２マップ（level-two map）８００、論理マップ８０２、および冗長セット記述子８０４を含む。
これらは、論理ストレージデバイスアドレスを、アドレスによって表された物理ストレージ位置にマッピングする主データ構造体（primary data structure）として結合する。
単一のレベル２マップ８００は、ＬＵＮ全体またはボリューム全体をハンドリングする。
各ＬＵＮは、特定の番号が、常に割り当てられる実際のアドレス空間に依存する複数の論理マップ８０２によって表される。
冗長セット記述子８０４も、割り当てられたストレージ空間用にのみ存在する。
各ＬＵＮのデータおよびマップのすべてが１つのストレージデバイス群に完全に含まれる限り、他のテーブル配置も同様に適用することができる。
【００６１】
メタデータコンテナ８１０は、ＬＵＮ、ストレージデバイス群、およびシステムによって使用される他の論理構造体を作成するのに使用される論理構造体を記述する。
利用可能な物理ストレージ容量の一部は、定数空間（quorum space）８１２として予約され、ストレージデバイス群に割り当てることも、ＬＵＮの実施に使用することもできない。
名前の文字列や他の識別情報または機能情報等の情報を、ストレージデバイス群およびＬＵＮならびにオブジェクト作成のタイムスタンプに関連付けることができる。
【００６２】
定数空間８１２は、メタデータ情報を記憶するのに使用することができる。
このメタデータ情報には、各物理ドライブに一意である物理ストア識別子、バージョン制御情報、タイプ、物理ストレージセグメントサイズ、および状態情報が含まれる。
メタデータの物理ストレージセグメント（ＰＳＥＧ）８０８は、ＰＳＥＧフリーリストも含むことができる。
【００６３】
メタデータコンテナ８１０は、各物理ストレージデバイスの状態情報を含む。
この状態情報は、物理ストレージデバイスが予想通りに動作しているのか、利用可能でないのか、マージ中であるのか、取り替え中であるのか、再生中であるのかを示す。
マージにおいては、欠落しているドライブが再び現れて、使用前に元に戻されることになる。
取り替えにおいては、ドライブが除去のためマークを付けられて、データが分散スペアにコピーされることになる。
再生においては、ドライブが利用可能でなく、データが再生されることになる。
【００６４】
定数空間８１２の論理ディスクディレクトリ（ＬＤＤＩＲ）データ構造体８１６は、アレイのすべてのストレージデバイス群の全ＬＵＮ８０６のディレクトリである。
ＬＬＤＩＲ８１６は、複数のＬＵＮを指し示し、ストレージデバイス群におけるＬＵＮの位置を特定するものである。
論理ディスクディレクトリのエントリは、そのＬＵＮの主論理ディスクメタデータコンテナの位置を示す普遍固有識別子（ＵＵＩＤ）である。
特定のＬＵＮに特有のメタデータ８１０は、論理ディスクディレクトリ内にインデックスして特定のＬＵＮのテーブルを見つけることによりアクセスすることができる。
主論理ディスクメタデータコンテナ内のメタデータ８１０は、マッピング構造体を含めて、メモリ内にロードされ、特定のＬＵＮを実現することができる。
【００６５】
図８に示すメモリ表現の永続コピーは、各ＬＵＮ８０６の主論理ストレージデバイスメタデータコンテナに保持される。
システムが、定数空間に含まれるメタデータを読み出して、対応する主論理ストレージデバイスメタデータコンテナへのポインタを取得し、次いで、主論理ストレージデバイスメタデータコンテナを取り出し、レベル２マップ８００をロードすると、特定のＬＵＮのメモリ表現が実現される。
このオペレーションは、あらゆるＬＵＮについて実行され、通常、ＬＵＮの作成時に実行される。
【００６６】
システムは、メタデータを使用して、ストレージデバイスのオペレーションを管理する。
ストレージアクセスの各要求は、ＬＵＮおよびアドレスを指定する。
ストレージコントローラは、特定のＬＵＮに対して指定された論理ドライブがまだメモリに存在しない場合に、この論理ドライブをメモリにマッピングする。
テーブル８００、８０２、および８０４もメモリにロードされる。
要求で指定された論理ストレージデバイスのアドレスは、第１のテーブル８００内へのインデックスとして使用され、ポインタが、ストレージデバイス群に含まれる特定の構造体に従った任意の追加テーブルを通じて辿られ、ストレージアクセスに加わることになる具体的な物理ストレージセグメントが特定される。
メタデータ情報によって、コントローラは、ドライブ特有のコマンドを生成して、要求されたデータにアクセスすることが可能になる。
したがって、論理ストレージデバイスアドレスは、ストレージ要求を実施するためにアクセスされる１組の物理ストレージセグメントに容易にマッピングされる。
【００６７】
コントローラ間での仮想ストレージデバイス群の制御が割り当てられると、制御情報を移動させることができる。
図９を参照して、フローチャートが、データを移動させることなく、コントローラ間およびアレイ間で制御および／またはデータを移動させるのに使用できる技法の一実施の形態９００を示している。
ストレージデバイス群の移動に備えて、ユーザデータおよびメタデータのキャッシュに対するストレージデバイス群の依存のできるだけ多くを除去する（９０２）ことによって、データ移動オペレーションが容易になる。
具体的なオペレーションは、ユーザデータのライトバックキャッシュの使用を禁止すること、キャッシュをフラッシュすること、およびメタデータの変更を禁止することを含む。
十分な量のライトスルーユーザデータキャッシュおよびライトスルーメタデータキャッシュを保持することによって、群の可用性を持続することが確保される。
キャッシュのフラッシュおよびライトバックキャッシュ無効オペレーションによって、ストレージデバイス群の状態をストレージデバイスに完全に保持することが保証される。
例示の実施の形態では、依存の削減９０２によって、ストレージデバイス群のアクティビティがコントローラのアクティビティから十分に分離され、それによって、別のコントローラがＬＵＮマップをアップロードすることが可能になる。
【００６８】
システムは、ネットワークファブリックにおいて十分に高いシステムのレベルにあるコマンドのクラスをキューに入れることを開始して、コマンドを、ストレージデバイス群の新たな位置に変更して送ることを可能にする（９０４）。
キューに入れられたコマンドのクラスは、メタデータに影響を与えるか、または、メタデータを変更するコマンドのサブセットであり、特に、メタデータを変えるコマンド、および、メタデータを変える他のコマンドに依存するコマンドである。
ストレージデバイス群のソースおよびデスティネーションの通常の配置では、コマンドは、図６に示すスイッチ６２０のレベルでキューに入れることができる。
システムは、実行中のコマンドが完了するのを待機する（９０６）。
【００６９】
システムは、残りのあらゆるストレージデバイス群の状態をその群のストレージデバイスに書き込むことによって冗長な状態を可能にする（９０８）。
状態が書き込まれると、元のコントローラまたは新たに関連付けられたコントローラのいずれかがストレージデバイス群をホストできる（９１０）ことを示すように、ステータス表示が設定される。
いずれかのコントローラからストレージデバイス群をホストできることによって、移動オペレーション中の障害からの回復を可能にする原子性（atomicity）が生成され、ストレージデバイス群の移動中の電力損失または単一障害に起因する可能性のあるあらゆる問題が解決される。
電力損失または単一障害に対する対応は、適切な優先ルールを使用して完了することができる（９１２）。
この優先ルールは、例えば、不確実な場合に、群にアクセスするコントローラペアを決定するために、障害のないコントローラペアを任意に順序付けること等の簡単な優先ルールである。
この新たなコントローラが、群のすべてのストレージデバイスのデータへのアクセスを制御するが、各ストレージデバイスと同じ組のコントローラペアが、ストレージデバイス管理の他の態様に対する制御を保持する。
したがって、アクセスは、管理から分離することができる。
【００７０】
転送状態９１４では、ストレージデバイス群の状態が、新たに関連付けられたコントローラにアップロードされ、先に関連付けられたコントローラが群にアクセスできることを示す表示が除去される。
表示を除去する前にアップロードが失敗すると（９１６）、ストレージデバイス群は任意の配置に従う（９１８）。
【００７１】
オペレーションは、ストレージデバイス群へのコマンド配信の再開によってレジュームし（９２０）、コマンドを新たな位置に変更して送る。
変更して送る動作９０４で阻止されなかったコマンドは、転送の一部として、ストレージ群を先に管理していたコントローラからフラッシュされる。
コマンドは、コマンド配信の再開と共に、ストレージデバイス群の移動のデスティネーション位置に転送される。
転送は、インテリジェントスイッチ、例えば図１に示すインテリジェントスイッチ１１２および図６に示すインテリジェントスイッチ６２０のレベルで行われる。
【００７２】
システムによって遂行または実行されるさまざまな機能、プロセス、方法、およびオペレーションは、さまざまなタイプのプロセッサ、コントローラ、中央処理装置、マイクロプロセッサ、デジタル信号プロセッサ、状態マシン、プログラマブルロジックアレイ等で実行可能なプログラムとして実施することができる。
このプログラムは、あらゆるコンピュータ可読媒体に記憶することができる。
このコンピュータ可読媒体は、コンピュータに関係したあらゆるシステムまたは方法によって使用されるか、または、これらに関連して使用されるものである。
コンピュータ可読媒体は、電子デバイス、磁気デバイス、光デバイス、もしくは他の物理デバイスであるか、または、コンピュータに関係したシステム、方法、プロセス、もしくはプロシージャによって使用されるか、もしくは、これらに関連して使用されるコンピュータプログラムを収容もしくは記憶することができる手段である。
プログラムは、コンピュータ可読媒体に具体化することができる。
このコンピュータ可読媒体は、コンピュータもしくはプロセッサに基づくシステム等の命令実行システム、命令実行デバイス、命令実行コンポーネント、命令実行エレメント、もしくは命令実行装置、もしくは任意の適切なタイプの命令メモリもしくはストレージから命令をフェッチできる他のシステムによって使用されるか、または、それらに関連して使用されるものである。
コンピュータ可読媒体は、命令実行システム、命令実行装置、もしくは命令実行デバイスによって使用されるか、または、これらに関連して使用される任意の構造体、デバイス、コンポーネント、製品、または、プログラムの記憶、通信、伝搬、もしくは搬送が可能な他の手段とすることができる。
【００７３】
例示のブロック図およびフローチャートは、プロセスステップまたはプロセスブロックを示している。
これらのプロセスステップまたはプロセスブロックは、そのプロセスの具体的な論理機能または論理ステップを実施する１つまたは２つ以上の実行可能命令を含むコードモジュール、コードセグメント、またはコード部分を表すことができる。
特定の例が具体的なプロセスステップまたはプロセス動作を示しているが、多くの代替的な実施形態が可能であり、一般に、簡単な設計選択によって行われる。
動作およびステップは、機能、目的、標準的なレガシー構造に対する整合性等の考慮に基づいて、本明細書の具体的な説明とは異なる順序で実行することができる。
【００７４】
本開示は、さまざまな実施の形態を説明しているが、これらの実施の形態は、例示として理解されるべきであって、特許請求の範囲を限定するものではない。
説明した実施の形態の多くの変形、変更、追加、および改良が可能である。
例えば、当業者は、本明細書で開示した構造および方法を提供するのに必要なステップを容易に実施し、プロセスパラメータ、材料、および寸法が例として与えられているにすぎないことを理解する。
パラメータ、材料、および寸法は、所望の構造だけでなく変更をも達成するために変えることができ、これらの変更は特許請求の範囲に含まれる。
本明細書で開示した実施の形態の変形および変更も、添付の特許請求の範囲内に含まれることを維持しつつ行うことができる。
例えば、開示した装置および技法は、任意の適切な個数のストレージエレメントを有する任意のデータベース構成で使用することができる。
データベースシステムは磁気ディスクストレージエレメントを開示するが、任意の適切なタイプのストレージ技術を実施することができる。
システムは、さまざまなオペレーティングシステムおよびデータベースシステムで実施することができる。
制御エレメントは、汎用コンピュータシステム、ワークステーション、サーバ等のソフトウェアまたはファームウェアとして実施できるが、それ以外に、専用デバイスおよび組み込みシステムで実施することもできる。
【図面の簡単な説明】
【００７５】
【図１】複数のコントローラ間で仮想ストレージセグメントの制御を割り当てることができるストレージシステムの一実施の形態を示す概略ブロック図である。
【図２】ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の一実施の形態を示すフローチャートである。
【図３】ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の一実施の形態を示すフローチャートである。
【図４】ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の一実施の形態を示すフローチャートである。
【図５】ストレージデバイス群に対する管理責任を複数のコントローラ間に割り当てる方法の一実施の形態を示すフローチャートである。
【図６】資源管理の割り当て能力を有するストレージシステムの一実施の形態を示す概略ブロック図である。
【図７】資源管理を割り当てるための開示した技法を実施するのに利用できるストレージシステムの一実施の形態を示す概略ブロック図である。
【図８】ストレージデバイスと、仮想データの論理表現を管理するのに使用できるメタデータ構造体の一例を含むデータ構造体とを含んだストレージデバイス群の一実施の形態を示す概略ブロック図である。
【図９】データを移動させることなく、コントローラ間およびアレイ間で制御および／またはデータを移動させるのに使用できる技法の一実施の形態を示すフローチャートである。
【符号の説明】
【００７６】
１０６・・・ストレージシステム，
１０８・・・マルチコントローラファブリック，
１１０・・・ホスト，
１１２・・・インテリジェントスイッチ，
１１４・・・管理ソフトウェア，
６０６・・・コントローラペア，
６１６・・・管理機器，
６１８・・・ホスト，
６２０・・・スイッチ，
６２２・・・スイッチ，
７０４・・・コントローラ，
７０６・・・ストレージドライブ，
７０８・・・ホスト，
７１０・・・ファブリック，
７１２・・・エレメントマネージャ，
７１４・・・管理機器，
７１６・・・ＳＣＳＩ／ＦＣループスイッチ，
８１４・・・ストレージデバイス群
【図１】
0004634812.tif 000002
【図２】
0004634812.tif 000003
【図３】
0004634812.tif 000004
【図４】
0004634812.tif 000005
【図５】
0004634812.tif 000006
【図６】
0004634812.tif 000007
【図７】
0004634812.tif 000008
【図８】
0004634812.tif 000009
【図９】
0004634812.tif 000010