(57)【要約】共有バックエンドストレージを備えた複数の物理的ストレージシステムにわたりユーザワークロードのロードバランスをリアルタイムにとるシステム、及び方法を提供する。ロードバランシングプロセスは、使用率メトリックを管理し、ソース物理的ストレージシステム、及び宛先物理的ストレージシステム、並びにマイグレートすべき仮想ストレージシステム（ｖｆｉｌｅｒ）を判定する。【選択図】図２
2008521140.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理的ストレージシステムにわたってワークロードのバランスをリアルタイムにとる方法であって、
（ａ）複数の物理的ストレージシステムのそれぞれについてパフォーマンスデータを収集するステップと、
（ｂ）複数の物理的ストレージシステムのそれぞれについて一組の総合メトリックを計算するステップと、
（ｃ）前記複数の物理的ストレージシステムの中に、１又は複数の所定の閾値を超える物理的ストレージシステムがあるか否かを判定するステップと、
（ｅ）前記１又は複数の閾値のうちのいずれかを超える物理的ストレージシステムが存在しないという判定に応じて、ステップ（ａ）へ戻るステップと、
（ｆ）前記物理的ストレージシステムのうちの少なくとも１つが、１又は複数の所定の閾値を超えているという判定に応答して、前記複数の物理的ストレージシステムのうちの１つから宛先ストレージシステムへマイグレートすべき仮想ストレージシステムを選択するステップと
を含む方法。
【請求項２】
前記選択するステップは、
（ａ）ソース物理的ストレージシステム、及び宛先物理的ストレージシステムを選択するステップと、
（ｂ）マイグレートすべき仮想ストレージシステムを選択するステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記マイグレートすべき仮想ストレージシステムを選択するステップは、前記ソース物理的ストレージシステムに関連する各仮想ストレージシステムについて使用率テーブルを作成するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記使用率テーブルを作成するステップは、ｖｆｉｌｅｒ率（ＶＲ）を計算するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記選択された仮想ストレージシステムをマイグレートすべきことを管理者に提案するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記選択された仮想ストレージシステムを前記ソース物理的ストレージシステムから宛先物理的ストレージシステムへマイグレートするすてぷを更に含む、請求項１に記載の方法。
【請求項７】
前記パフォーマンスデータは、一秒当たりの処理の総数、及びプロセッサ使用率を含む、請求項１に記載の方法。
【請求項８】
前記一組の総合メトリックは、プロセッサ余裕、ドメイン余裕、スピンドル余裕、容量余裕、及び一秒当たりの処理の総数を含む、請求項１に記載の方法。
【請求項９】
複数の物理的ストレージシステムにわたってワークロードのバランスをリアルタイムにとるシステムであって、
（ａ）前記複数の物理的ストレージシステムのそれぞれについてパフォーマンスデータを収集し、
（ｂ）前記複数の物理的ストレージシステムのそれぞれについて一組の総合メトリックを計算し、
（ｃ）前記複数の物理的ストレージシステムの中に、１又は複数の所定の閾値を超える物理的ストレージシステムがあるか否かを判定し、
（ｅ）前記１又は複数の所定の閾値のうちのいずれかを超える物理的ストレージストレージシステムが存在しないという判定に応じて、動作（ａ）へ戻り、
（ｆ）前記物理的ストレージシステムのうちの少なくとも１つが、１又は複数の所定の閾値を超えているという判定に応答して、前記複数の物理的ストレージシステムのうちの１つから宛先ストレージシステムへマイグレートすべき仮想ストレージシステムを選択するように構成されたロードバランシングプロセスを含むシステム。
【請求項１０】
前記ロードバランシングプロセスは、（ａ）ソース物理的ストレージシステム、及び宛先物理的ストレージシステムを選択し、（ｂ）マイグレートすべき仮想ストレージシステムを選択するように更に構成される、請求項９に記載のシステム。
【請求項１１】
前記ロードバランシングプロセスは、前記ソース物理的ストレージシステムに関連する各仮想ストレージシステムについて使用率テーブルを作成するように更に構成される、請求項１０に記載のシステム。
【請求項１２】
前記ロードバランシングプロセスは、ｖｆｉｌｅｒ率（ＶＲ）を計算するように更に構成される、請求項１１に記載のシステム。
【請求項１３】
前記ロードバランシングプロセスは、前記選択された仮想ストレージシステムをマイグレートすべきことを管理者に提案するように更に構成される、請求項９に記載のシステム。
【請求項１４】
前記ロードバランシングプロセスは、前記選択された仮想ストレージシステムを前記ソース物理的ストレージシステムから前記宛先物理的ストレージシステムへマイグレートするように更に構成される、請求項９に記載のシステム。
【請求項１５】
前記パフォーマンスデータは、一秒当たりの処理の総数、及びプロセッサ使用率を含む、請求項９に記載のシステム。
【請求項１６】
前記一組の総合メトリックは、プロセッサ余裕、ドメイン余裕、スピンドル余裕、容量余裕、及び一秒当たりの処理の総数を含む、請求項９に記載のシステム。
【請求項１７】
１又は複数のストレージアプライアンスを使用する調整された共有ストレージアーキテクチャを構成する方法であって、
第１のネットワークを介して１又は複数のクライアントを１又は複数のストレージアプライアンスに相互接続するステップと、
１又は複数の中間ネットワークデバイスを介して一組のデータ記憶装置を１又は複数のストレージアプライアンスに相互接続するステップと、
１又は複数のストレージシステムのそれぞれにターゲットデバイスドライバを設けることにより、各ストレージシステムをターゲットデバイスとしてアクセス可能にするステップと
を含み、前記ターゲットデバイスドライバにより、各ストレージシステムは、前記１又は複数の中間ネットワークデバイスを介して前記１又は複数のストレージシステムと通信できるように構成される方法。
【請求項１８】
前記中間ネットワークデバイスはハブを含む、請求項１７に記載の方法。
【請求項１９】
前記中間ネットワークデバイスはルータを含む、請求項１７に記載の方法。
【請求項２０】
前記１又は複数のデータ記憶装置はディスクドライブを含む、請求項１７に記載の方法。
【請求項２１】
１又は複数のストレージアプライアンスを使用する調整された共有ストレージアーキテクチャを構成するシステムであって、
第１のネットワークを介して１又は複数のストレージアプライアンスに相互接続された１又は複数のクライアントと、
一組のデータ記憶装置を前記１又は複数のストレージアプライアンスに相互接続するように構成された１又は複数の中間ネットワークデバイスと
を含み、各ストレージシステムのターゲットデバイスドライバにより、各ストレージシステムがターゲットデバイスとしてアクセス可能にされる、システム。
【請求項２２】
前記データ記憶装置はディスクドライブを含む、請求項２１に記載のシステム。
【請求項２３】
前記中間ネットワークデバイスはハブを含む、請求項２１に記載のシステム。
【請求項２４】
前記中間ネットワークデバイスはスイッチを含む、請求項２１に記載のシステム。
【請求項２５】
調整された共有ストレージアーキテクチャで使用されるストレージシステムであって、ターゲットデバイスドライバモジュールを有するストレージオペレーティングシステムを含み、前記ターゲットデバイスドライバモジュールは、前記ストレージシステムをターゲットとしてアドレス指定出来るようにするように構成され、前記ターゲットデバイスドライバモジュールは、前記ストレージシステムが１又は複数の中間ネットワークデバイスを使用して前記ストレージシステムに相互接続されたストレージデバイスをアドレス指定出来るようにするように更に構成される、ストレージシステム。
【請求項２６】
前記中間ネットワークデバイスはハブを含む、請求項２５。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、ストレージシステムに関し、特に、共有バックエンドストレージを備えた複数のストレージシステムにわたりユーザワークロードのバランスをリアルタイムにとることに関する。
【背景技術】
【０００２】
［発明の背景］
ストレージシステムは、メモリ、テープ、及びディスクのような書き込み可能な永久的記憶装置上での情報の編成に関するストレージサービスを提供するコンピュータである。ストレージシステムは一般に、ストレージ・エリア・ネットワーク（ＳＡＮ）環境やネットワーク・アタッチド・ストレージ（ＮＡＳ）環境において展開される。ＮＡＳ環境で使用される場合、ストレージシステムは、情報を例えばディスク上にディレクトリやファイルの階層構造として論理編成するためのファイルシステムを実施するオペレーティングシステムを含むファイルサーバとして実施される場合がある。「ディスク上」の各ファイルは、そのファイルの実際のデータのような情報を記憶するように構成された、例えばディスクブロックのような一連のデータ構造として実施される場合がある。一方、ディレクトリは、他のファイルやディレクトリに関する情報を格納するための特殊形式のファイルとして実施される場合がある。
【０００３】
ストレージシステムは、情報配送のクライアント／サーバモデルにしたがって動作するように更に構成され、それによって多数のクライアントシステム（クライアント）は、ストレージシステムに格納されたファイルのような共有リソースにアクセスすることができる。ファイルの共有はＮＡＳシステムの特徴であり、これはファイルやファイルシステムに対するセマンティックレベルのアクセスによって可能となる。ＮＡＳシステム上の情報の記憶は一般に、クライアントがファイルサーバ上の情報（ファイル）を遠隔からアクセスできるようにするための、地理的に分散されたイーサネットのような相互接続通信リンクの集まりを含むコンピュータネットワーク上に展開される。クライアントは一般に、トランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）のような所定のプロトコルにしたがってデータフレーム又はデータパケットを交換することによって、ストレージシステムと通信する。
【０００４】
クライアント／サーバモデルでは、クライアントは、ポイント・ツー・ポイントリンク、共用ローカルエリアネットワーク、ワイドエリアネットワーク、あるいはインターネットのような公共ネットワーク上で実施される仮想私設ネットワークのようなコンピュータネットワーク上のストレージシステムに「接続」するためのアプリケーションをコンピュータ上で実行する。ＮＡＳシステムは一般にファイルベースのアクセスプロトコルを使用している。したがって、各クライアントは、ネットワークを介してファイルシステム・プロトコル・メッセージ（パケットの形をしている）をファイルシステムに対して発行することによって、ストレージシステムのサービスを要求することができる。従来のコモン・インターネット・ファイル・システム（ＣＩＦＳ）プロトコル、ネットワーク・ファイル・システム（ＮＦＳ）プロトコル、及びダイレクト・アクセス・ファイル・システム（ＤＡＦＳ）プロトコルのような複数のファイルシステムプロトコルをサポートすることにより、ネットワーククライアントに対し、ストレージシステムの有用性を向上させることができる。
【０００５】
ＳＡＮは、ストレージシステムと、該ストレージシステムが有する記憶装置との間にダイレクト接続を確立することが可能な高速ネットワークである。つまり、ＳＡＮは、ストレージバスに対する拡張のようなものであり、したがって、ストレージシステムのオペレーティングシステムは、「拡張バス」を介してブロックベースのアクセスプロトコルを使用して、記憶された情報にアクセスすることができる。この例において、拡張バスは一般に、「ＳＣＳＩ  ｏｖｅｒ  ＦＣ」（ＦＣＰ）プロトコルや「ＳＣＳＩ  ｏｖｅｒ  ＴＣＰ／ＩＰ／Ｅｔｈｅｒｎｅｔ」（ｉＳＣＳＩ）プロトコルのようなブロックアクセスプロトコルを使用して動作するように構成されたファイバチャネル（ＦＣ）、又はイーサネットメディアとして実施される。ＳＡＮ構成、すなわちＳＡＮデプロイメントによれば、アプリケーションサーバのようなストレージシステムからストレージを切り離すことができ、アプリケーションサーバレベルである程度のレベルのストレージ共有が可能になる。ただし、ＳＡＮが単一のサーバに専用に使用される環境もある。ＳＡＮ環境で使用される場合、ストレージシステムは、ファイバチャネルにおいて実施されるＳＣＳＩ（ＦＣＰ）のような幾つかのブロックベースのプロトコルを使用して一連のディスクに対するデータアクセスを管理するストレージアプライアンスとして実施される場合がある。ＳＡＮで使用するのに適したマルチプロトコル・ストレージ・アプライアンスを含む、ＳＡＮ構成の一例は、「MULTI PROTOCOL STORAGE APPLIANCE THAT PROVIDEDS INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS」と題するBrian Pawlowski他による米国特許出願第１０／２１５，９１７号に記載されている。
【０００６】
ストレージアプライアンスのようなストレージシステムによって提供されるサービスやデータは、出来る限りアクセス可能であると有利である。したがって、ストレージシステムによっては、クラスタを成す複数のストレージアプライアンスを備え、第１のストレージアプライアンスが故障したときでも、第２のストレージアプライアンス（「パートナ」）がそれを引継ぎ、通常ならば第１のストレージアプライアンスによって提供されるサービスやデータを提供し続けるものがある。第１のストレージアプライアンスが故障すると、クラスタ内の第２のパートナストレージアプライアンスは、データアクセス要求を処理し、取り扱うタスクをすべて、第１のストレージアプライアンスによって正常に処理されたものと仮定する。管理者は、例えばハードウェアのアップグレード等の種々の理由から、ストレージアプライアンスをオフラインにしたい場合がある。こうした状況では、フェイルオーバ処理よりはむしろ、ユーザ始動によるテイクオーバ処理を実施する方が有利な場合がある。テイクオーバ処理の完了後、ストレージアプライアンスのデータは、パートナストレージアプライアンスがそのストレージアプライアンスに制御を返すまで、パートナストレージアプライアンスによって提供される。
【０００７】
既知のストレージアプライアンスクラスタ構成の中には、クライアントとクラスタの間の通信に使用されるトランスポート媒体が、ＦＣＰプロトコルを使用してデータを運ぶファイバチャネル（ＦＣ）ケーブルであるものがある。ＳＣＳＩ用語では、ＳＡＮ環境で動作するクライアントは、データの要求やコマンドを発行する「イニシエータ」である。したがって、マルチプロトコルストレージアプライアンスは、要求／応答プロトコルにしたがってイニシエータから発行された要求に応答するように構成された「ターゲット」である。ＦＣプロトコルによれば、イニシエータ、及びターゲットは、３つの一意の識別子、すなわち、ノード名、ポート名、及びデバイス識別子を有する。ノード名、及びポート名は世界的に一意の（重複しない）名前であり、例えば、ワールドワイドノード名（ＷＷＮＮ）、及びワールドワイドポート名（ＷＷＰＮ）である。デバイス識別子は、所与のスイッチング構造内で一意の（重複しない）識別子であり、ＦＣポートに結合されたＦＣスイッチによって、ＦＣポートに動的に割り振られる。
【０００８】
ストレージアプライアンスクラスタを必要とする従来のフェイルオーバ技術では、クラスタ内の各ストレージアプライアンスは、２つの物理的ＦＣポート、すなわちＡポートとＢポートを管理する。Ａポートは、当該ストレージアプライアンスを宛先とするデータアクセス要求を処理し、扱うために使用される。Ｂポートは通常、待機モードにあり、フェイルオーバ状況が発生すると、Ｂポートが有効化され、当該ストレージアプライアンスの故障したパートナストレージアプライアンスの「識別子を引き継ぐ」。この時点で、Ｂポートは、ＦＣターゲットとして機能し、故障したストレージアプライアンスを宛先とするデータアクセス要求を受信し、処理し始める。このように、生き残ったストレージアプライアンスは、そのストレージアプライアンスを宛先とする要求と、そのストレージアプライアンスのパートナストレージアプライアンスを宛先とする要求の両方を処理する場合がある。一般に、「生き残った」ストレージアプライアンスの１つのポートは、そのストレージアプライアンスの故障したパートナストレージアプライアンスのＷＷＮＮ、及びＷＷＰＮを宛先とするデータアクセス要求に対するサービスを提供することにより、故障したストレージアプライアンスの識別子を引き継ぐ。多くのクライアントオペレーティングシステムにとって、クライアントが、生き残ったストレージアプライアンスを故障したストレージアプライアンスと同様に透過的にアクセスできるようにするためには、これで十分である。生き残ったストレージアプライアンスが故障したストレージアプライアンスの識別子を引き継いだ後、故障したストレージアプライアンスのネットワークアドレスを宛先とするデータアクセス要求は、生き残ったストレージアプライアンスによって受信され、処理される。クライアントから見ると、故障したストレージアプライアンスは瞬間的にネットワークから切断され、再度ネットワークに接続されたかのように見え、データ処理、又はデータアクセス要求は継続されることになる。
【０００９】
図１は、例示的なストレージ（アプライアンス）システムネットワーク環境１００を示す略ブロック図である。環境１００は、クライアント１０４に接続されたネットワーククラウド１０２を含む。クライアント１０４は、ＰＣやワークステーションのような汎用コンピュータであってもよいし、ブロックアクセスプロトコルを有するオペレーティングシステム上でアプリケーションを実行するように構成された、アプリケーションサーバのような特殊な目的のコンピュータであってもよい。ネットワーククラウドには更に、赤色ストレージシステム２００Ａと青色ストレージシステム２００Ｂを含むストレージシステムクラスタ１３０が接続されている。これらのストレージシステムは例えば、ディスクシェルフ１１２及び１１４上のディスクのような相互接続された多数の記憶装置に対する記憶、及びアクセスを管理するように構成されたストレージアプライアンスとして実施される。
【００１０】
図示の例において、赤色ストレージシステム２００Ａは、ポートＡ１１６によって赤色ディスクシェルフ１１２に接続される。赤色ストレージシステム２００Ａは、Ｂポート１１８を介して青色ディスクシェルフ１１４にもアクセスする。同様に、青色ストレージシステム２００Ｂは、Ａポート１２０を介して青色ディスクシェルフ１１４にアクセスするとともに、Ｂポート１２２を介して赤色ディスクシェルフ１１２にアクセスする。このように、クラスタ内の各ディスクシェルフは、各ストレージアプライアンスにアクセスすることができ、それによって、フェイルオーバ時の冗長データ経路を提供する。なお、赤色ディスクシェルフと青色ディスクシェルフが、ストレージシステム２００に直接接続されているのは、単なる例に過ぎない。
【００１１】
赤色ストレージシステム２００Ａと青色ストレージシステム２００Ｂを接続しているのは、それら２つのストレージシステム間のデータ通信リンクを提供するクラスタ相互接続１１０である。クラスタ相互接続１１０は、例えば、イーサネット接続やＦＣデータリンクといった任意の適当な通信媒体から形成される。
【００１２】
通常のクラスタ動作中、ディスクシェルフの一次（すなわち、Ａ）ポートを介してディスクシェルフに接続されたストレージシステムは、そのディスクシェルフの「所有者」となり、主として、そのディスクシェルフに格納されたボリューム上のブロックを宛先とするデータ要求に対するサービスを提供する働きをする。したがって、この例の場合、赤色ストレージシステム２００Ａは、赤色ディスクシェルフ１１２を所有し、主として、そのディスクシェルフに格納されたボリュームに対するデータアクセス要求に対するサービスを提供する働きをする。同様に、青色ストレージシステム２００Ｂは、主として、青色ディスクシェルフ１１４に対する責任を負う。ストレージシステムクラスタ１３０のような動作をしているとき、各ストレージシステム２００は通常、クラスタ１３０内の他方のディスクシェルフのデータ処理機能を引き継ぐことが出来るように構成される。
【００１３】
既知のストレージシステムアーキテクチャは、物理的ストレージシステムプラットフォームのような単一の物理的サーバ内に、仮想ストレージシステム（ｖｆｉｌｅｒ）のようなブロックベースの仮想サーバの複数のインスタンスを作成し、管理する機能を有する。Ｖｆｉｌｅｒの詳細については、「ARCHITECTURE FOR CREATING AND MAINTAINING VIRTUAL FILERS ON A FILER」と題するMark Muhlestein他による米国特許出願第１０／０３５，６６４号に記載されている。各Ｖｆｉｌｅｒは、プラットフォーム上の他のｖｆｉｌｅｒとは全く無関係に管理され、実行される。その目的のために、幾つかのストレージユニット、及びネットワークインタフェースのネットワークアドレスのような専用ストレージシステムリソースが、適宜グループ化され、「ハードパーティション」化され、ストレージアプライアンス内に幾つかのセキュリティドメインを形成する。ストレージオペレーティングシステムやファイルシステムのような更に別の共通ストレージシステムリソースが、ｖｆｉｌｅｒ間で共有される場合もある。
【００１４】
各物理的ストレージシステムがその物理的ストレージシステム上で１又は複数のｖｆｉｌｅｒを実行する複数の物理的ストレージシステムを備えたストレージ環境に関する上記の問題は、例えば、ｖｆｉｌｅｒが、平均負荷よりも高い負荷を受けると、物理的ストレージシステム上の処理負荷のバランスがとれなくなる場合があるということである。もし、単一の物理的ストレージシステム上で実行されている複数のｖｆｉｌｅｒが平均負荷よりも高い負荷を受けた場合、その物理的ストレージシステムは性能の低下を生じ、それによって、その物理的ストレージシステムで実行されているｖｆｉｌｅｒのそれぞれの性能に悪影響を与えることになる。システム管理者は、例えば従来のｖｆｉｌｅｒマイグレーションを利用して、負荷を再分散させようと試みる場合がある。しかしながら、一般的なロードバランシング技術では、負荷バランスのくずれたｖｆｉｌｅｒを管理者が検出し、マイグレーションを開始することにより修正措置を取らなければならない。
【発明の開示】
【課題を解決するための手段】
【００１５】
[発明の概要]
本発明は、共有バックエンドストレージを備えた複数の物理的ストレージシステムにわたりユーザワークロードのバランスをリアルタイムにとるシステム、及び方法を提供することによって、従来技術の欠点を克服する。ストレージシステムは、ハブのような複数の中間ネットワークデバイスを介してディスクシェルフに相互接続される。各ストレージシステムは、ターゲットデバイスドライバモジュールを備えたストレージオペレーティングシステムを有する。ロードバランシングプロセスは、ストレージシステム環境における管理コンソールの中で実行され、例えば決められた時間間隔で、各物理的ストレージシステムに関するパフォーマンスデータを収集する。また、ロードバランシングシステムは、収集されたパフォーマンスデータを使用し、通常は所定の時間にわたって、例えば平均値の末尾３０分時間枠にわたり、各物理的ストレージシステムについてメトリックを計算する。計算されたメトリックが閾値を超えている物理的ストレージシステムがあった場合、プロセスは、ソース物理的ストレージシステムと宛先物理的ストレージシステムを選択する。選択されるソース物理的ストレージシステムは、相対的に負荷の高い物理的ストレージシステムであることが好ましい。一方、選択される宛先物理的ストレージシステムは、相対的に負荷の低い物理的ストレージシステムであることが好ましい。さらに、ソース物理的ストレージシステムにおいて実行されている各ｖｆｉｌｅｒについて、パフォーマンスメトリックの使用率テーブルが計算される。経験則的なアルゴリズムを使用することにより、ソースから宛先へマイグレートすべきｖｆｉｌｅｒの選択が可能となる。次に、選択されたｖｆｉｌｅｒをディストリビュータに「手動」マイグレートすべきことが、管理者に対して提案される。代替実施形態として、ロードバランシングプロセスは、ソースから宛先への選択されたｖｆｉｌｅｒの「自動」ｖｆｉｌｅｒマイグレーションを開始する場合がある（ユーザの直接介入なしに）。
【００１６】
本発明の上記の利点、及びその他の利点は、添付の図面と併せて下記の説明を読むことにより理解できるであろう。図中、同じ参照符号は、同一の構成要素、又は機能的に同様の構成要素であることを意味している。
【発明を実施するための最良の形態】
【００１７】
Ａ．クラスタ化されたストレージシステム環境
図２は、本発明の原理が実施される例示的ネットワーク環境２００を示す略ブロック図である。環境２００は、クライアント１０４に接続されたネットワーククラウド１０２を含む。クライアント１０４は、ＰＣやワークステーションのような汎用コンピュータであってもよいし、ブロックアクセスプロトコルを含むオペレーティングシステム上でアプリケーションを実行するように構成された、アプリケーションサーバのような特殊な目的のコンピュータであってもよい。ネットワーククラウド１０２には更に、赤色ストレージシステム３００Ａ、青色ストレージシステム３００Ｂ、及び緑色ストレージシステム３００Ｃが接続されている。後で詳細を説明するこれらのストレージシステムは、例えば、ディスクシェルフ１１２、及び１１４上のディスクのような相互接続されたストレージデバイスに対する記憶、及びアクセスを制御するように構成されたストレージアプライアンスとして実施される。
【００１８】
赤色、青色、及び緑色のストレージシステム３００Ａ，Ｂ，Ｃは、データ経路２０２、２０４、２０６をそれぞれ介して、ネットワーク１０２に接続される。これらのデータ経路２０２、２０４、２０６は、直接のポイント・ツー・ポイントリンクであってもよいし、ルータ、スイッチ、ハブなどを含む種々の中間ネットワークデバイスを含む代替データ経路表わす場合もある。環境２００は更に、ストレージシステム３００Ａ，Ｂ，Ｃに相互接続されたハブＨ１、及びＨ２を含む。ハブＨ１は、データ接続２２２を介してディスクシェルフ１１２に接続されるとともに、データ接続２２０を介してディスクシェルフ１１４にも接続される。同様に、ハブＨ２は、データアクセスループ２２４を介してディスクシェルフ１１２に接続されるとともに、データアクセスループ２２６を介してディスクシェルフ１１４にも接続される。なお、こうしたデータループは、例えばＦＣ−ＡＬ（Fibre Channel Arbitrated Loop）のような任意の適当なネットワーク媒体であってよい。図示の実施形態において、ハブＨ１、及びＨ２は、ディスクシェルフ１１２、１１４のＡポートとＢポートの両方に相互接続され、それによって両方のディスクシェルフに対して複数のデータ経路を提供する。赤色ストレージシステム３００Ａは、データ経路２０８を介してハブＨ１に接続され、データ経路２１０を介してハブＨ２にも接続される。同様に、青色ストレージシステム３００Ｂは、データ経路２１２を介してハブＨ１に接続され、データ経路２１４を介してハブＨ２にも接続される。最後に、緑色ストレージシステム３００Ｃは、データ経路２１６を介してハブＨ１に接続され、データ経路２１８を介してハブＨ２にも接続される。
【００１９】
図示の実施形態において、ハブＨ１，Ｈ２は、中間ネットワークデバイスとして使用される。ただし、スイッチのような他のタイプの中間ネットワークデバイスを本発明の代替実施形態にしたがって使用することも可能である。したがって、中間ネットワークデバイスとしてのハブの使用は、単なる例であるものと捉えなければならない。
【００２０】
また、ネットワーク１０２には、ロードバランシングプロセス２５５を実行する管理コンソール２５０も接続される。管理コンソールは、環境２００内の全ての物理的ストレージシステムの一元管理を管理者に提供する。後で詳細を説明するロードバランシングプロセス２５５は、本発明の新規なロードバランシング技術を実施する。
【００２１】
Ｂ．ストレージアプライアンス
図３は、ディスクのような記憶装置上での情報の編成に関するストレージサービスを提供するように構成された例示的ストレージシステム３００を示す略ブロック図である。ストレージシステム３００は例えば、システムバス３３０によって相互接続されたプロセッサ３０５、メモリ３１５、複数のネットワークアダプタ３２５ａ，３２５ｂ、ストレージアダプタ３２０、及びクラスタ相互接続アダプタ３３５を含むストレージアプライアンスとして実施される。ストレージアプライアンスは、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントやストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントのユーザ（システム管理者）やクライアントに対し、再利用可能な記憶空間を含む、単純なストレージサービス管理や、簡単なストレージ再構成を提供するコンピュータである。ストレージアプライアンスは、ファイルシステムを通してＮＡＳサービスを提供する場合がある一方、同ストレージアプライアンスは、論理ユニット番号エミュレーションのようなＳＡＮ仮想化を通してＳＡＮサービスを提供する場合がある。こうしたストレージアプライアンスの一例の詳細については、「MULTI PROTOCOL STORAGE APPLIANCE THAT PROVIDEDS INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS」と題する、上で参照した米国特許出願に記載されている。なお、「ストレージシステム」という用語と「ストレージアプライアンス」という用語は、交換可能に使用される。ストレージアプライアンス３００は、情報をディレクトリ、ファイル、及び仮想ディスク（ｖｄｉｓｋ）ストレージオブジェクトの階層構造としてディスク上に論理編成するための仮想化システムを提供するストレージオペレーティングシステム４００を更に含む。
【００２２】
ＮＡＳ系ネットワーク環境のクライアントが、ファイル単位でストレージを参照する一方、ＳＡＮ系ネットワーク環境のクライアントは、ブロックやディスクの単位でストレージを参照する。その目的のために、ストレージアプライアンス３００は、ＬＵＮ、又はｖｄｉｓｋオブジェクトの生成により、ディスクをＳＡＮクライアントに提示（エキスポート）する。ｖｄｉｓｋオブジェクト（以後「ｖｄｉｓｋ」）は、仮想化システムによって実施される特殊なファイルタイプであり、ＳＡＮクライアントからの参照に応じてエミュレートディスクに変換される。こうしたｖｄｉｓｋオブジェクトの詳細については、「STORAGE VIRTUALIZATION BY LAYERING VIRTUAL DISK OBJECTS ON A FILE SYSTEM」と題するVijayan Rajan他による米国特許出願第１０／２１６，４５３号に記載されている。そして、マルチプロトコルストレージアプライアンスは、後で詳しく説明するように、エキスポート制御により、それらのエミュレートディスクをＳＡＮクライアントがアクセスできるようにする。
【００２３】
図示の実施形態において、メモリ３１５は、本発明に関連するソフトウェアプログラムコード、及びデータ構造を格納するために、プロセッサ、及びアダプタによってアドレス指定可能な多数の記憶場所を有する。さらに、プロセッサ、及びアダプタは、ソフトウェアプログラムコードの実行、及びデータ構造の操作を実行するように構成された処理要素、及び／又は論理回路を含む場合がある。ストレージオペレーティングシステム４００の幾つかの部分は通常、メモリ上にあり、それらの処理要素によって実行され、とりわけ、ストレージアプライアンスによって実施されるストレージサービスを支える記憶処理を実施することにより、ストレージアプライアンスの機能を構成する。当業者には明らかなように、本明細書に記載する本発明のシステム、及び方法に関するプログラム命令の記憶、及び実行には、他の処理手段や、種々のコンピュータ読取媒体を含む他の記憶手段を使用してもよい。
【００２４】
ネットワークアダプタ３２５ａ，ｂは、ポイント・ツー・ポイントリンク、ワイドエリアネットワーク（ＷＡＮ）、公共ネットワーク（インターネット）上で実施される仮想私設ネットワーク（ＶＰＮ）、又は共用ローカルエリアネットワーク（ＬＡＮ）、あるいは他の適当なネットワークアーキテクチャを介して、ストレージアプライアンスをクライアントに接続する。また、ネットワークアダプタ３２５ａ，ｂは、ストレージアプライアンス３００をクライアント１０４に接続し、クライアント１０４は、記憶された情報をブロック、又はディスクとしてアクセスするように更に構成される場合がある。ネットワークアダプタ３２５は、ストレージアプライアンス３００をネットワーク１０２に接続するために必要とされる機械的、電気的、及び信号的回路を有するＦＣホストバスアダプタ（ＨＢＡ）を含む場合がある。ＦＣ  ＨＢＡは、ＦＣアクセスを可能にするだけでなく、ストレージアプライアンスのプロセッサ３０５からＦＣネットワーク処理の負荷を減らす働きもする。ＦＣ  ＨＢＡ３２５は、各物理的ＦＣポートに関連する仮想ポートを有する場合がある。各仮想ポートは、ＷＷＰＮ、及びＷＷＮＮを含む一意のネットワークアドレスを有する。
【００２５】
クライアントは、ＵＮＩＸオペレーティングシステムやＷｉｎｄｏｗｓオペレーティングシステムのような種々のオペレーティングシステム上でアプリケーションを実行するように構成された汎用コンピュータであってよい。クライアントは一般に、ＳＡＮ系ネットワークを介して情報（ブロック、ディスク、又はｖｄｉｓｋの形をしている）にアクセスするときに、スモールコンピュータシステムインタフェース（ＳＣＳＩ）プロトコルのようなブロックベースのアクセスプロトコルを使用する。ＳＣＳＩは、標準的な、デバイスに依存しないプロトコルを備えた周辺機器入出力（Ｉ／Ｏ）インタフェースであり、ＳＣＳＩプロトコルによれば、ディスクのような異なる周辺機器をストレージアプライアンス３００に取り付けることが可能になる。
【００２６】
ストレージアプライアンス３００は、「ＳＣＳＩ  ｏｖｅｒ  ＴＣＰ」（ｉＳＣＳＩ）や「ＳＣＳＩ  ｏｖｅｒ  ＦＣ」（ＦＣＰ）のような、ＳＡＮデプロイメントで使用される種々のＳＣＳＩ系プロトコルをサポートする。したがって、イニシエータ（以後、クライアント１０４）は、ディスク上に格納された情報にアクセスするために、ネットワーク１０２上にｉＳＣＳＩメッセージやＦＣＰメッセージを発行することによって、ターゲット（以後、ストレージアプライアンス３００）にサービスを要求する場合がある。当業者には分かるように、クライアントは、他のブロックアクセスプロトコルを使用して、統合ストレージアプライアンスにサービスを要求する場合もある。複数のブロックアクセスプロトコルをサポートすることにより、ストレージアプライアンスは、異種ＳＡＮ環境にあるｖｄｉｓｋ／ＬＵＮに対する統一的で首尾一貫としたアクセス手段を提供する。
【００２７】
ストレージアダプタ３２０は、ストレージアプライアンス上で実行されるストレージオペレーティングシステム４００と協働し、クライアントから要求された情報にアクセスする。情報は、ディスク上に格納されている場合もあれば、情報を格納するように構成された同様の他の媒体に記憶されている場合もある。ストレージアダプタは、従来の高性能ＦＣシリアルリンク、又はループトポロジのようなＩ／Ｏ相互接続構成でディスクに接続するためのＩ／Ｏインタフェース回路を含む。情報は、ストレージアダプタにより取得され、必要に応じてプロセッサ３０５（又はアダプタ３２０自体）によって処理された後、システムバス３３０を介してネットワークアダプタ３２５ａ及びｂに転送され、そこでその情報はパケット、又はメッセージの形に成形され、クライアントに返送される。
【００２８】
図示の実施形態において、マルチプロトコルストレージアプライアンス上での情報の記憶は、幾つかの物理的ストレージディスクのクラスタを含む１以上のボリュームとして実施され、ディスク空間の全体的論理構成はそれらによって決まる。あるボリューム内のディスクは通常、１以上のＲＡＩＤ（Redundant Array of Independent or Inexpensive Disks）グループに編成される。ＲＡＩＤ実施形態は、ＲＡＩＤグループ内の所定数の物理的ディスクにわたってデータを「ストライプ」状に書き込み、ストライプ状のデータに対して適切な冗長情報を記憶することによって、データ記憶の信頼性／完全性を向上させるものである。冗長情報により、記憶装置が故障したときに失われるデータの復元が可能になる。
【００２９】
具体的には、各ボリュームは幾つかの物理的ディスクのアレイからなり、物理的ディスクは、幾つかのＲＡＩＤグループに編成される。例えばＲＡＩＤレベル４構成によれば、各ＲＡＩＤグループの物理的ディスクは、ストライピングされたデータを記憶するように構成されたディスクと、そのデータのパリティを記憶するように構成されたディスクとを含む。ただし、他のＲＡＩＤレベル構成（例えばＲＡＩＤ５）を使用することも可能である。図示の実施形態では、最小限である１台のパリティディスクと１台のデータディスクを使用している。しかしながら、一般的実施形態は、１つのＲＡＩＤグループあたり３台のデータディスク、及び１台のパリティディスクを有し、１つのボリュームあたり少なくとも１つのＲＡＩＤグループを有する場合がある。
【００３０】
ディスクに対するうアクセスを容易にするために、ストレージオペレーティングシステム４００は、ディスクによって提供される記憶空間を「仮想化」する機能を有する新規な仮想化システムコードと協働するｗｒｉｔｅ−ａｎｙｗｈｅｒｅファイルシステムを実施する。このファイルシステムは、情報をディレクトリやファイルオブジェクト（以後、「ディレクトリ」及び「ファイル」）の階層構造としてディスク上に論理編成する。「ディスク上」の各ファイルは、データのような情報を記憶するように構成された一連のディスクブロックとして実施される一方、ディレクトリは、他のファイルやディレクトリの名前やそれらのへのリンクを格納するための特殊形式のファイルとして実施される場合がある。仮想化システムによれば、ファイルシステムは、情報をｖｄｉｓｋとしてディスク上に更に論理編成することができる。その結果、ファイルやディレクトリに対するファイルベースの（ＮＡＳ）アクセスが可能になるだけでなく、ファイルベースのストレージプラットフォーム上のｖｄｉｓｋに対するブロックベースの（ＳＡＮ）アクセスのエミュレーションも更に可能となり、したがって、ＮＡＳアプライアンスとＳＡＮアプライアンスの統合アプローチによる記憶が可能となる。
【００３１】
上記のように、ｖｄｉｓｋは、普通の（標準的な）ファイルに由来するボリューム内の特殊ファイルタイプであるが、ディスクのエミュレーションをサポートするためのエキスポート制御、及びオペレーション制限を有する。クライアントが例えばＮＦＳプロトコルやＣＩＦＳプロトコルを使用して作成可能なファイルとは異なり、ｖｄｉｓｋは、例えばユーザインタフェース（ＵＩ）を利用して、特殊ファイルタイプのファイル（オブジェクト）としてストレージアプライアンス上に作成される。例えば、ｖｄｉｓｋは、データを保持する特殊なファイルｉｎｏｄｅと、セキュリティ情報のような属性を保持する少なくとも１つの関連ストリームｉｎｏｄｅとを含むマルチノードオブジェクトである。この特殊なファイルｉｎｏｄｅは、エミュレートディスクに関連するデータを格納するためのメインコンテナとして機能する。ストリームｉｎｏｄｅに格納される属性によれば、リブート処理が行われても、ＬＵＮやエキスポートを存続させることができ、また、ｖｄｉｓｋをＳＡＮクライアントに関連する単一のディスクオブジェクトとして管理することが可能になる。
【００３２】
また、当業者には明らかなように、本明細書に記載する本発明の技術は、いかなるタイプの特殊目的のコンピュータ（例えば、ストレージサービスを提供するアプライアンス）や汎用コンピュータにも適用することができ、ストレージシステムとして実施されるスタンドアロンのコンピュータ若しくはその一部、又はストレージシステムを含むスタンドアロンのコンピュータ若しくはその一部に適用することができる。さらに、本発明の教示は、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアントやホストコンピュータに直接取り付けされたディスクアセンブリを含む種々のストレージシステムアーキテクチャに適合する。ただし、それらに限定はしない。したがって、「ストレージシステム」という用語は、それらの構成だけでなく、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムを含むものとして広い意味で解釈しなければならない。
【００３３】
Ｃ．ストレージオペレーティングシステム
図示の実施形態において、ストレージオペレーティングシステムは、Ｗｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ）ファイルシステムを実施するＮｅｔＡｐｐ  Ｄａｔａ  ＯＮＴＡＰオペレーティングシステムである。しかしながら、ｗｒｉｔｅ  ｉｎ−ｐｌａｃｅファイルシステムを含む任意の適当なファイルシステムが、本明細書に記載する本発明の原理にしたがって拡張可能であるものと考えられる。したがって、「ＷＡＦＬ」という用語が使用された場合でも、この用語は、本発明の教示に適合する任意のファイルシステムを指すものとして広い意味で解釈しなければならない。
【００３４】
本明細書で使用される場合、「ストレージオペレーティングシステム」という用語は一般に、データアクセスを管理するコンピュータ上で実行可能なコンピュータ実行可能コードを意味し、ストレージアプライアンスの場合、Ｄａｔａ  ＯＮＴＡＰストレージオペレーティングシステムのようなデータアクセスセマンティックを実施する場合がある。Ｄａｔａ  ＯＮＴＡＰストレージオペレーティングシステムは、マイクロカーネルとして実施される。また、ストレージオペレーティングシステムは、ＵＮＩＸやＷｉｎｄｏｗｓ  ＮＴのような汎用オペレーティングシステム、あるいは本明細書に記載するようなストレージアプリケーションのために構成された、構成変更機能を備えた汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施される場合がある。
【００３５】
図４は、本発明とともに使用するのに都合がよいストレージオペレーティングシステム４００を示す略ブロック図である。ストレージオペレーティングシステムは、統合ネットワークプロトコルスタック、又はマルチプロトコルエンジンを形成するように編成された一連のソフトウェア層を含み、それらは、クライアントがブロックアクセスプロトコル、又はファイルアクセスプロトコルを使用して、マルチプロトコルストレージアプライアンス上に格納された情報にアクセスするためのデータ経路を提供する。プロトコルスタックは、ＩＰ層４１２、並びにその補助トランスポート機構であるＴＣＰ層４１４、及びユーザデータグラムプロトコル（ＵＤＰ）層４１６のようなネットワークプロトコル層に対するインタフェースを提供するネットワークドライバ（例えば、ギガネットイーサネットドライバ）のメディアアクセス層４１０を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ダイレクト・アクセス・ファイル・システム（ＤＡＦＳ）プロトコル４１８、ＮＦＳプロトコル４２０、ＣＩＦＳプロトコル４２２、及びハイパー・テキスト・トランスファ・プロトコル４２４を含む。仮想インタフェース（ＶＩ）層４２６は、ＶＩアーキテクチャを実施し、ＤＡＦＳプロトコル４１８に必要とされるようなリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）のようなダイレクト・アクセス・トランスポート（ＤＡＴ）機能を提供する。
【００３６】
ｉＳＣＳＩドライバ層４２８は、ＴＣＰ／ＩＰネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、ＦＣドライバ層４３０は、ＦＣ  ＨＢＡ３２５と協働し、統合ストレージアプライアンスに対するブロックアクセス要求の送信や応答の受信を行う。ＦＣドライバ、及びｉＳＣＳＩドライバは、ＬＵＮ（ｖｄｉｓｋ）に対するＦＣ固有のアクセス制御、及びｉＳＣＳＩ固有のアクセス制御を提供し、したがって、マルチプロトコルストレージアプライアンス上の単一のｖｄｉｓｋをアクセスするときに、ｉＳＣＳＩとＦＣＰのいずれか、あるいは両方に対するｖｄｉｓｋのエキスポートを管理する。また、ストレージオペレーティングシステムは、ＲＡＩＤプロトコルのようなディスクストレージプロトコルを実施するディスクストレージ層４４０と、例えばＳＣＳＩプロトコルのようなディスクアクセスプロトコルを実施するディスクドライバ層４５０とを含む。
【００３７】
ＳＣＳＩエンクロージャ・サービス（ＳＥＳ）モジュール４５５は、ディスクドライバ層４５０と協働し、ストレージオペレーティングシステム４００に対するＳＥＳを実施する。ＳＥＳモジュール４５５は、新規なターゲットデバイスドライバ（ＴＤＤ）モジュール４６０を利用して、他のストレージシステムから到来するＳＥＳメッセージを処理する。後で詳しく説明するように、到来するＳＥＳメッセージは、ＴＤＤ４６０によって受信され、ＳＥＳモジュール４５５へ転送され、更に処理される。応答はＳＥＳモジュール４５５からＴＤＤモジュール４６０へ送信され、ＦＣドライバ４６５を介してイニシエータに転送される。図示の実施形態では、ＦＣドライバモジュール４６５が、ストレージアダプタ３２０を管理する。
【００３８】
ディスクソフトウェア層を統合ネットワークプロトコルスタック層に橋渡しするのは、ファイルシステム４３６によって実施される仮想化システム４８０である。ファイルシステム４３６は、例えばｖｄｉｓｋモジュール４３３、及びＳＣＳＩターゲットモジュール４３４として実施される仮想化ソフトウェアと交信する。これらのモジュールは、ソフトウェアとして実施しても、ハードウェアとして実施しても、ファームウェアとして実施しても、それらの組み合わせとして実施してもよい。とりわけ、ｖｄｉｓｋモジュール４３３は、ｖｄｉｓｋを実施するために、非常に様々なｖｄｉｓｋ（ＬＵＮ）コマンドを実施し、それらをファイルシステム４３６、及びＳＣＳＩターゲットモジュール４３４と交信するための原始的なファイルシステムオペレーション（「プリミティブ」）に変換することによって、ＳＡＮデプロイメントを管理する。
【００３９】
次に、ＳＣＳＩターゲットモジュール４３４は、ＬＵＮを特殊なｖｆｉｌｅタイプに変換するマッピング手順を提供することにより、ディスク、又はＬＵＮのエミュレーションを開始する。ＳＣＳＩターゲットモジュールは例えば、ＦＣドライバやｉＳＣＳＩドライバ４２８、４３０とファイルシステム４３６との間に配置され、ＳＡＮブロック（ＬＵＮ）空間とファイルシステム空間の間における仮想化システム４８０の変換層として機能する。ファイルシステム空間では、ＬＵＮはｖｄｉｓｋで表される。ファイルシステム４３６の上にＳＡＮ仮想化を「配置」することにより、マルチプロトコルストレージアプライアンスは、従来のシステムで行われているアプローチを逆転させ、実質的に全てのストレージアクセスプロトコルに対し、単一の統一されたストレージプラットフォームを提供する。
【００４０】
ファイルシステム４３６は、例えば４キロバイト（ＫＢ）ブロックを使用し、ｉｎｏｄｅを使用してファイルを表現するディスク上フォーマット表現を有するＷｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ）ファイルシステムを実施する。ファイルシステムの構造に関する詳しい説明は、１９９８年１０月６日に発行された「METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCSSIBLE READ-ONLY COPIES OF A FILE SYSTEM」と題するDavid Hitz他による米国特許第５，８１９，２９２号に記載されており、この文献は、参照により完全に本明細書の中で説明されたものとして本明細書に援用される。
【００４１】
Ｄ．仮想ストレージシステム（ｖｆｉｌｅｒ）
本発明は、物理的ストレージシステム（アプライアンス）プラットフォームのような単一の物理的サーバ内に、仮想ストレージシステム（ｖｆｉｌｅｒ）のようなブロックベースの仮想サーバの複数のインスタンスを作成し、管理する機能を備えたアーキテクチャにおいて使用することができる。ｖｆｉｌｅｒは、ｉＳＣＳＩのようなブロックベースのプロトコルに応答してデータアクセス要求に対するサービスを提供するように構成されたマルチプロトコルサーバのインスタンスを確立するための、ストレージシステムプラットフォームのネットワークリソース、及びストレージリソースの論理パーティションである。各ｖｆｉｌｅｒは、プラットフォーム上の他のｖｆｉｌｅｒとは全く無関係に管理され、実行される。その目的のために、ストレージユニットや、ネットワークインタフェースのネットワークアドレスといった専用ストレージシステムリソースは、自由にグループ化され、「ハードパーティショニング」され、ストレージアプライアンス内にセキュリティドメインを確立する。ストレージオペレーティングシステムやファイルシステムのような更に別の共通のストレージシステムリソースが、複数のｖｆｉｌｅｒ間で共用される場合もある。
【００４２】
具体的には、各ｖｆｉｌｅｒに、特定量のストレージリソース、若しくは専用かつ個別単位のストレージリソースのサブセットと、１又は複数の専用かつ個別のネットワークアドレスとが割り当てられる。また、各ｖｆｉｌｅｒは、そのクライアントに代わって、共通ファイルシステムに対する共用アクセスが許可される。したがって、例えばクライアントがアクセスする共通ファイルシステムに関連するセキュリティオブジェクトの解釈は、ｖｆｉｌｅｒごとに異なる場合がある。この問題に対処するために、各ｖｆｉｌｅｒは、ｖｆｉｌｅｒコンテキストデータ構造（以後、「ｖｆｉｌｅｒコンテキスト」）を有し、とりわけ、そのｖｆｉｌｅｒに固有のセキュリティドメインに関連する情報を有することにより、ｖｆｉｌｅｒに割り当てられた共有リソースに対するアクセス制限を可能にする。
【００４３】
例えば、第１のｖｆｉｌｅｒのｖｆｉｌｅｒコンテキストは、ストレージアプライアンス上のストレージリソースの第１のサブセットに対するアクセス要求が発行されたときに、第１のセキュリティドメインのユーザ、又はクライアントが、ソースネットワークアドレスと宛先ネットワークアドレスの第１の組を使用できるようにする。同様に、第２のｖｆｉｌｅｒのｖｆｉｌｅｒコンテキストは、第２のセキュリティドメインのクライアントが、ソースネットワークアドレスと宛先ネットワークアドレスの第２の組を使用して、ストレージリソースの第２のサブセットにアクセスできるようにする。なお、各セキュリティドメインのクライアントは、ストレージアプライアンス上の互いの「存在」を認識してなく、また、互いのストレージリソースをアクセスすることもできない。
【００４４】
図５は、複数のｖｆｉｌｅｒを有するストレージシステムプラットフォーム５００の一実施形態を示す概略図である。各ｖｆｉｌｅｒは、例えばＣＩＦＳサーバやｉＳＣＳＩサーバのようなサーバとして実施される場合があり、それらは、例えばＶＦ１〜ＶＦ３のような論理名で参照される。クライアントから見ると、各ｖｆｉｌｅｒは、他のｖｆｉｌｅｒとは無関係に独立している。各ｖｆｉｌｅｒ  ＶＦ１〜ＶＦ３は、１以上のネットワークインタフェース５０８ａ〜ｃに割り当てられた１又は複数のインターネットプロトコル（ＩＰ）アドレスを有するように構成される場合がある。この文脈において、「ネットワークインタフェース」という用語は、ＩＰアドレスを割り振ることが可能なインタフェースを意味し、例えば、仮想インタフェース（ＶＩＦ）のような「物理的」ＮＩＣ及び「ソフト」ＮＩＣ、仮想ローカルエリアネットワーク（ＶＬＡＮ）、及びエミュレートされたＬＡＮ（ＥＬＡＮ）などを含む。なお、単一のＮＩＣが複数のＩＰアドレスを有することもでき、そのような構成の場合、必要であれば、複数のｖｆｉｌｅｒが単一のＮＩＣを共用することも可能である。
【００４５】
ストレージアプライアンスの各インタフェースには、そのインタフェースをＩＰ空間に結びつけるためのＩＰ空間識別子（ＩＤ）５０６ａ〜ｃが更に割り振られる。「ＩＰ空間」とは、ストレージアプライアンス、及び該ストレージアプライアンスが有するストレージオペレーティングシステムが属する固有のＩＰアドレス空間である。単一のストレージアプライアンスが複数のＩＰ空間を有することも可能である。各ｖｆｉｌｅｒには１つのＩＰアドレス空間が割り振られ、したがって各ｖｆｉｌｅｒは１つのＩＰ空間に属する。各ＩＰ空間内の多数のＩＰアドレスは、一意（重複しないもの）でなければならない。ＩＰ空間に関する詳しい説明は、「TECHNIQUE FOR ENABLING MULTIPLE VIRTUAL FILERS ON A SINGLE FILER TO PARTICIPATE IN MULTIPLE ADDRESS SPACES WITH OVERLAPPING NETWORK ADDRESSES」と題するGaurav Banga他による米国特許出願第１０／０３５，６６６号に記載されている。
【００４６】
各ｖｆｉｌｅｒに割り当てられるストレージリソースの単位には、ボリュームやサブボリューム（ｑｔｒｅｅ）がある。ボリューム（Ｖ）５１０は、ファイルシステム、すなわちディレクトリとファイルの階層を含むストレージユニットである。Ｑｔｒｅｅ（ＱＴ１〜３）５２０は、例えば、ファイルのｉｎｏｄｅの中に格納されたｑｔｒｅｅ識別子（ｑｔｒｅｅＩＤ）によってファイルシステム内で自分を識別することが可能な特性を持つ、小型ボリューム、又はボリュームの一区画に似た特殊なディレクトリである。ｖｆｉｌｅｒアーキテクチャは、リソースの作成、割り振り、及びｖｆｉｌｅｒへのマッピングを含む、ストレージリソースの効率的利用、及び管理を提供する。例えば、仮想サーバ（ｖｆｉｌｅｒ等）、及び当該仮想サーバに関連するストレージリソース（ｑｔｒｅｅ等）は、１つのサーバ（ストレージシステム等）にマイグレートされる場合もあれば、同様の名前のリソースを有する他の仮想サーバ（ｖｆｉｌｅｒ）に統合される場合もある。ストレージリソースはｖｆｉｌｅｒ単位で割り当てられるため、このようなサーバ統合、及びストレージマイグレーションは、クライアントにとって透過的である。なぜなら、クライアントがそのデータを参照する方法に何ら変更がないからである。
【００４７】
図示の実施形態において、各ｖｆｉｌｅｒは、そのｖｆｉｌｅｒがアクセス可能な特定量のデータ、例えば、幾つかのボリュームやｑｔｒｅｅを所有する。また、ｖｆｉｌｅｒは、ｖｄｉｓｋを直接所有しないが、ｖｄｉｓｋが属するボリュームやｑｔｒｅｅの所有権属性を引き継ぐ。したがって、あるｖｆｉｌｅｒが、所与のボリューム又はｑｔｒｅｅにアクセスできる場合、そのｖｆｉｌｅｒは、それらのストレージユニットに記憶されたいずれのｖｄｉｓｋにもアクセスすることができる。その結果、ストレージユニットの所有権は単純化され、上で援用した「ARCHITECTURE FOR CREATING AND MAINTAINING VIRTUAL FILERS ON A FILER」と題する米国特許出願に記載されているようなファイルベースのｖｆｉｌｅｒに適したものとなる。
【００４８】
本発明の一態様によれば、ｖｆｉｌｅｒは、ストレージオペレーティングシステムに関連するＵＩの次のＣＬＩコマンド：vfiler create [xyz] [-s IPspace-name] [-i IP address(s)] [/vol/vol2] [/vol/vol3/qt1]によって作成される。
【００４９】
ここで、xyzは作成するｖｆｉｌｅｒの名前を指定し、-s IPspace-nameはそのｖｆｉｌｅｒが属するＩＰ空間の名前を指定し、-i IP adderss(s)はそのｖｆｉｌｅｒの特定のＩＰアドレス又は一連のＩＰアドレスを指定する。また、/vol/vol2という記載は、第１のストレージユニットへの第１パス記述子であり、/vol/vol3/qt1という記載は、第２のストレージユニットへの第２パス記述子である。デフォルトｖｆｉｌｅｒは、物理的ストレージアプライアンスの起動時の初期化時に作成されるｖｆｉｌｅｒ０（ＶＦ０）である。ＶＦ０は、ストレージアプライアンス内にｖｆｉｌｅｒが何もないときに作成される唯一のｖｆｉｌｅｒである。ストレージアプライアンス上の全てのｖｆｉｌｅｒに対するリソース割り当てが全て完了した後、例えば、未割り当てのシステムリソースに対するアクセスを可能にするために、デフォルトＶＦ０は、物理的ストレージアプライアンスプラットフォームに関連付けられる。ｖｆｉｌｅｒが何も定義されていないとき、ＶＦ０は、ストレージシステムの全リソースを有する。
【００５０】
各ｖｆｉｌｅｒは、ストレージアプライアンスのルートディレクトリにある特定のメタデータを管理する。このメタデータは、そのｖｆｉｌｅｒの種々の設定ファイルを含む。さらに、このメタデータは、そのｖｆｉｌｅｒのルートディレクトリにある隠しメタデータディレクトリにミラーリングされる。通常、メタデータは、ｖｆｉｌｅｒの／ｅｔｃディレクトリにミラーリングされる。ただし、代替実施形態として、メタデータは、ｖｆｉｌｅｒディレクトリ構造内の他の場所にミラーリングされる場合がある。ｖｆｉｌｅｒメタデータに変更があったときは必ず、隠しメタデータディレクトリにも変更が加えられる。隠しメタデータディレクトリは通常、後で詳しく説明するように、ｖｆｉｌｅｒマイグレーションに使用される。
【００５１】
具体的には、ｖｆｉｌｅｒ作成ＣＬＩコマンドは、各ｖｆｉｌｅｒに対してｖｆｉｌｅｒコンテキスト６００ａ〜ｃを作成する。なお、ストレージアプライアンスの初期化時には、ＶＦ０に対してｖｆｉｌｅｒコンテキストが作成される。図６は、マルチプロトコルサーバのインスタンスを確立するために必要とされる設定情報、又は「状態」を含むｖｆｉｌｅｒコンテキスト６００のコア内表現を示す略ブロック図である。ｖｆｉｌｅｒコンテキスト６００は、ｖｆｉｌｅｒの名前６０２を入れるためのフィールドと、ｖｆｉｌｅｒコンテキストを使用して作成された世界的に一意な（重複のない）識別子（ＵＵＩＤ６０４）を入れるためのフィールドとを有する。ＵＵＩＤは、例えば、現在の日時や、そのｖｆｉｌｅｒに関連するメディア・アクセス・コントロール（ＭＡＣ）アドレスを含む場合がある。ｖｆｉｌｅｒリストフィールド６０６は、ストレージアプライアンスプラットフォーム上のｖｆｉｌｅｒのリストを含み、ＩＰ空間識別子（ＩＤ）フィールド６０８は、そのｖｆｉｌｅｒのＩＰ空間ＩＤを有する。
【００５２】
ｖｆｉｌｅｒアーキテクチャによれば、ストレージデバイスやネットワークデバイスのようなハードウェアリソースが、ｖｆｉｌｅｒに直接割り当てられることはない。むしろ、それらのハードウェアデバイスの機能の一部のみに相当するソフトウェアオブジェクトが、ｖｆｉｌｅｒに割り当てられる（最も一般的に言えば）。これらのソフトウェア（「ソフト」）オブジェクトは、ハードウェアリソースのうちの「動的に調節可能な」部分にのみ対応する。ｖｆｉｌｅｒへの割り当てにソフトオブジェクトを使用する利点は、物理的ストレージアプライアンス上のｖｆｉｌｅｒ間で、ハードウェアリソースの一部又は全部を割り当て、追加し、移動し、除去する際の総合的な柔軟性にある。これらの処理は、ハードウェアパーティションを利用する従来の仮想サーバ間でハードウェアオブジェクトを再構成したり、コピーしたりするための複雑で実行時間の長い手順とは違い、実行時間の短い単純なコマンドを使用して非常に迅速に達成することができる。したがって、ｖｆｉｌｅｒコンテキスト構造６００の他のフィールドは、仮想ファイラストレージ（ｖｆｓｔｏｒｅ）構造（ソフトオブジェクト）のリスト６１０、及び仮想ｆｉｌｅｒネットワーク（ｖｆｎｅｔ）ソフトオブジェクトのリスト６１２を有する。
【００５３】
「リソースマッピング」は、ｑｔｒｅｅ／ｖｏｌｕｍｅ、及びｉｆｎｅｔ構造のようなハードウェアリソースの部分に割り当てられたｖｆｉｌｅｒの割り当て済みリソースを表わすソフトオブジェクト間のマッピングとして定義される。したがって、ｖｆｓｔｏｒｅソフトオブジェクトとｖｆｎｅｔソフトオブジェクトは、それらのハードウェアリソースの機能のうちの動的調節可能な部分を表わすある程度の間接的な指示を提供する。すなわち、これらのソフトオブジェクトは、例えば、オブジェクトのポインタを変更することにより、それらのネットワークリソースやストレージリソースを「論理的に」再割り当てするときの柔軟性が得られるような仕方で、ハードウェアリソースを表わす他のソフトウェアオブジェクト（データ構造）に「リンク」される。このような柔軟性によれば、例えば、ネットワークハードウェアリソースやストレージハードウェアリソースを手動で再割り当てすることによるｖｆｉｌｅｒ構成変更の物理的確立とは違い、ファイルシステムレベルでのｖｆｉｌｅｒ構成変更の論理的確立が可能となる。
【００５４】
また、ｖｆｉｌｅｒアーキテクチャにおけるリソースマッピングによれば、例えばｖｆｉｌｅｒ間でのネットワークリソースやストレージリソースのマイグレーション（割り当て）に比べて、効率的なネットワーク及びストレージの管理も可能になる。ネットワーク管理とは、ファイラプラットフォーム上のリソースその他の割り当てに動的変更がなされたときに、ｖｆｉｌｅｒとそれらが有するネットワークリソースとの間のリソースマッピングを管理するための、一連のデータ構造及びアルゴリズムを指す。一方、ストレージ管理とは、プラットフォーム上のリソースその他の割り当てに動的変更がなされたときに、ｖｆｉｌｅｒとそれらが有するストレージリソースとの間のリソースマッピングを管理するための、一連のデータ構造及びアルゴリズムを指す。割り当て変更には例えば、ｖｆｉｌｅｒ間でのリソースの追加、移動、及び削除がある。他のシステム変更には例えば、新たなＮＩＣ（ＶＩＦ、ＶＬＡＮ、又は新たなデバイス）の作成や、ストレージボリュームの追加／運転開始／運転停止がある。
【００５５】
また、ネットワーク及びストレージの管理には、ｖｆｉｌｅｒ間でリソースの割り当てに変更がなされたときにネットワークオブジェクトやストレージオブジェクトに対して実施されるタスクも含まれる。例えば、ＩＰアドレスのｖｆｉｌｅｒ割り当てが変化したときは、ＩＰアドレスに関連するＴＣＰ／ＩＰ接続及びルーティングを再初期化しなければならない。同様に、ストレージユニットのｖｆｉｌｅｒ割り当てが変化したときは、ｑｔｒｅｅ又はボリューム上で実行中のディスク入出力処理を中止し、クオータを初期化しなければならない。
【００５６】
各ｖｆｉｌｅｒコンテキスト６００は、特定のプロトコル又はサブシステムのインスタンスのために必要となる全ての情報（グローバル変数等）を有する複数の「モジュール」データ構造を更に含む。例えば、ＣＩＦＳモジュールデータ構造６２０は、ドメインコントローラ６２２との接続、ＣＩＦＳプロトコルのアクティブセッション６２４、及びＣＩＦＳプロトコルに関連する種々の制御ブロック６２５に関する情報を含む、ＣＩＦＳプロトコルのインスタンスに必要とされる全ての情報を含む。ドメインコントローラは、ログイン要求を受け取り、それらの認証を開始するサーバである。ＣＩＦＳ要求に対するＷｉｎｄｏｗｓ  ＮＴセキュリティを可能にするために、セキュリティドメイン６２６に関する情報も与えられる。このセキュリティ情報は、ドメイン部分、及び関連ＩＤ（ＲＩＤ）部分を含み、後者のＲＩＤは、ＵＮＩＸセキュリティのユーザＩＤに似ている。Ｗｉｎｄｏｗｓドメインセキュリティの場合、セキュリティ情報は、ドメインコントローラとの信頼関係も含む。この信頼関係は、ｖｆｉｌｅｒがドメインコントローラを信頼し、ｖｆｉｌｅｒの代わりにドメインコントローラにユーザを認証させるｖｆｉｌｅｒの機能を意味する。各ＣＩＦＳモジュール６２０は、ＣＩＦＳ認証プロセスのプロセスＩＤ（ＰＩＤ６２８）を更に含み、このプロセスＩＤにより、ＣＩＦＳ層は、正しいＣＩＦＳ認証プロセスに認証要求を送信することができる。
【００５７】
ｖｆｉｌｅｒに関連するプロトコル、及びサブシステムのそれぞれについて、例えば、ｉＳＣＳＩプロトコル６３０、ｖｄｉｓｋデータ構造６４０、ＳＣＳＩターゲット６５０、ＮＩＳサブシステム６６０、ドメインネームサービス（ＤＮＳ）サブシステム６７０、及びレジストリ６８０といった同様の「モジュールごとの」データ構造が存在する。ただし、それらに限定はされない。ＮＩＳサブシステム、すなわち「イエローページ」は、各ユーザパスワードに関連するユーザＩＤやグループＩＤのようなセキュリティ情報を記憶する分散データベースとして実施されるＮＦＳプロトコル用のサービスロケータである。ｖｄｉｓｋデータ構造は、ｖｆｉｌｅｒがｖｆｉｌｅｒに関連するｖｄｉｓｋを管理するための、ｖｆｉｌｅｒによって使用される種々のコア内データ構造を指すポインタを含む。ＳＣＳＩターゲットデータ構造６５０はｖｆｉｌｅｒによって使用され、、ｖｆｉｌｅｒにログインしたイニシエータのＩＤや種々のアダプタの現在の状態のようなｖｆｉｌｅｒごとのデータの記憶に使用される。
【００５８】
Ｅ．ロードバランシング
本発明は、共有バックエンドストレージを備えた複数の物理的ストレージシステムにわたりユーザワークロードのバランスをリアルタイムにとるシステム、及び方法を提供する。ストレージシステムは、ハブのような複数の中間ネットワークデバイスを介してディスクシェルフに相互接続される。各ストレージシステムは、ターゲットデバイスドライバモジュールを含むストレージオペレーティングシステムを有する。ロードバランシングプロセスが、ストレージシステム環境における管理コンソール内で実行され、例えば決まった時間間隔で、各物理的ストレージシステムのパフォーマンスデータを収集する。また、ロードバランシングプロセスは、収集されたパフォーマンスデータを使用し、通常は所定の時間にわたって、例えば平均値の末尾３０分時間枠にわたって、各物理的ストレージシステムについてメトリックを計算する。計算されたメトリックが閾値を超えている物理的ストレージシステムがあった場合、プロセスは、ソース物理的ストレージシステムと宛先物理的ストレージシステムを選択する。
【００５９】
選択されるソース物理的システムは、相対的負荷の高い物理的ストレージシステムであることが好ましい。一方、選択される宛先物理的ストレージシステムは、相対的負荷の低い物理的ストレージシステムであることが好ましい。さらに、ソース物理的ストレージシステムで実行されている各ｖｆｉｌｅｒについて、パフォーマンスメトリックの使用率テーブルが計算される。経験則的なアルゴリズムを使用することにより、ソースから宛先へマイグレートすべきｖｆｉｌｅｒの選択が可能となる。次に、選択されたｖｆｉｌｅｒをディストリビュータに「手動」マイグレートすべきことが、管理者に対して提案される。代替実施形態として、ロードバランシングプロセスは、ソースから宛先への選択されたｖｆｉｌｅｒの「自動」ｖｆｉｌｅｒマイグレーションを開始する場合がある（ユーザの介入なしに）。
【００６０】
図７は、本発明の一実施形態による、複数の物理的ストレージシステム間でユーザワークロードのバランスをとるための手順７００のステップの詳細を示すフロー図である。この手順は、ステップ７０５から開始され、ステップ７１０へ進み、そこで、ロードバランシングプロセス２５５は、所定時間にわたって各物理的ストレージシステムについてパフォーマンスデータを収集する。これは、物理的ストレージシステムに対して従来のリモートプロシージャコールを使用し、パフォーマンスデータを収集することによって達成することができる。例示的実施形態において、ロードバランシングプロセスは、約１分の時間間隔でこのデータを収集する。しかしながら、本発明の他の実施形態では、ストレージシステム環境の特定ニーズに適合させるために、他の時間間隔を使用する場合もある。パフォーマンスデータには、とりわけ、物理的ストレージシステムにおけるプロセッサ（複数の場合もあり）の使用率、種々のドメインにおいて消費される処理時間の割合、物理的ストレージシステムによって提供される特定のボリューム、又は他のデータコンテナに対して行われる処理の数、及び物理的ストレージシステム上で機能しているプロセッサ数がある。また、本明細書で使用される場合、ドメインは、２個（又はそれ以上）の異なるプロセッサ上で同時に実行することができない特定のプロセスを識別する。例示的実施形態において、ドメイン使用率はアレイとして管理され、アレイは、特定のストレージシステムアーキテクチャ内で使用される各ドメインについて１つのエントリを有する。なお、本発明の代替実施形態では、更に別のパフォーマンスデータ、又は代替パフォーマンスデータを収集する場合もある。
【００６１】
ステップ７１５において、ロードバランシングプロセスは、収集されたパフォーマンスデータを使用して、各物理的ストレージシステムについて一組の総合メトリックを計算する。短期スパイクを避けるために、例えば、パフォーマンスメトリックは、移動時間枠にわたる平均として計算される。例えば、メトリックは、３０分の移動時間枠に対して計算される場合がある。すなわち、総合メトリックは、過去３０分にわたる平均として計算される。移動時間枠を使用することで、一時的なスパイクの発生をなくすことができる。移動時間枠を超えてシステムが過負荷にならない限り、負荷のバランスが再度とられることはない。
【００６２】
各物理的ストレージシステムについて総合メトリックを計算する場合、少なくとも２つの更に別のデータ点、すなわち、(i)物理的ストレージシステム上の全てのボリュームについての合計スピンドル数、及び(ii)物理的ストレージシステムに関連する各ボリュームによって使用される合計容量が収集される。なお、スピンドル数は、所与のボリュームに関連する物理ディスクの数である。これらのデータ点は、従来のＲＰＣ処理を使用して物理的ストレージシステムに収集される場合がある。ロードバランシングプロセスは、物理的ストレージシステムの総合スピンドル使用率を計算するために、全ボリュームのスピンドル数の全ての和を計算する。同様に、全てのボリュームによって使用される全ての容量の和も計算される。
【００６３】
他の総合メトリックには、例えば、プロセッサ余裕率、ドメイン「余裕」率、スピンドル余裕、容量余裕、及び一秒あたりの処理の総数がある。本明細書で使用される場合、余裕とは一般に、あるリソースの現在の使用率と、そのリソースの最大使用率との差を意味する。プロセッサ余裕率は、最大パーセンテージから平均プロセッサ使用率を差し引くことによって算出される。マルチプロセッサシステムの場合、平均プロセッサ使用率は、各プロセッサについて結合される。シングルプロセッサシステムの場合、最大パーセンテージは、例えば９５％に設定される場合がある。２プロセッサシステムの場合、このプロセッサ値は１８０％に設定される場合がある。同様に、４プロセッサシステムの場合、最大プロセッサ値は３００％に設定される場合がある。これらの値は、物理的ストレージシステムが異なれば異なる場合があり、単なる例として考えなければならない。ドメイン余裕率は、所定のパーセンテージ値から余裕使用率を差し引くことによって算出される。例示的実施形態において、この所定のパーセンテージ値は、９０％に設定される。なお、このドメイン余裕率は、各ドメインについて計算される。したがって、このステップの間に、ドメイン余裕率のアレイが生成される。
【００６４】
スピンドル余裕は、ストレージシステムのタイプに関連するスピンドルの最大数から、物理的ストレージシステムによって使用されるスピンドルの合計計算数を差し引くことによって算出される。各タイプの物理的ストレージシステムは、その物理的ストレージシステムに関連する特定の最大スピンドル数を有する。容量余裕は、物理的ストレージシステムに関連する最大容量から当該システムの総和容量を差し引くことによって算出される。一秒当たりの合計処理値は、先行する時間枠にわたる、物理的ストレージシステムに関連するボリュームの一秒当たりの処理の平均である。
【００６５】
総合メトリックを計算した後、次にプロセスは、ステップ７２０へ進み、そこで所定のマイグレーション閾値を超えている物理的ストレージシステムがあるか否かを判定する。例えば、要望に応じてシステム管理者がストレージシステムのパフォーマンスを調節できるようにするために、それらの閾値は調節可能である場合がある。少なくとも１つの閾値を超える物理的ストレージシステムが何もなければ、手順はステップ７１０へ戻る。
【００６６】
ただし、物理的ストレージシステムが閾値を超えている場合、手順はステップ７２５へ移り、そこで、ロードバランシングプロセスは、ソース物理的ストレージシステム、及び宛先物理的ストレージシステムを選択する。適当なソース物理的ストレージシステムを選択する際に、２つの異なる規格が使用される場合がある。すなわち、一方は、シングルプロセッサ物理的ストレージシステムに関するもので、他方はマルチプロセッサ物理的ストレージシステムに関するものである。本発明の例示的実施形態によれば、ある環境内の物理的ストレージシステムは全て、同数のプロセッサを有していなければならない。
【００６７】
ソース物理的ストレージシステムがシングルプロセッサタイプである場合、ソース物理的ストレージシステムの候補は、ＣＰＵ又はプロセッサ余裕率が所定の値、例えば１５％以下のストレージシステムである。なお、代替実施形態において、この値は、管理者の特定の要望に応じて、あるいはハードウェア固有の問題に対処するために、変更される場合がある。この余裕テストを満足する物理的ストレージシステムが複数ある場合、ロードバランシングプロセスは、より低いプロセッサ余裕を有するストレージシステムに優先権を与えるように、それらの物理的ストレージシステムをランク付けする。同じプロセッサ余裕を有する２以上の物理的ストレージシステムは、無作為に順位付けされる場合がある。上記の基準に適合する物理的ストレージシステムがない場合、すなわち、所定値よりも小さいプロセッサ余裕を有する物理的ストレージシステムが存在しない場合、マイグレーションは不要となる。
【００６８】
マルチプロセッサシステムの場合、ソース物理的ストレージシステムは、プロセッサ余裕が所定値以下であるか、又は（ドメインアレイにおける任意のドメインの）ドメイン余裕が所定値以下であるストレージシステムとして識別される場合がある。この判定がドメイン単位で実施される際、いずれかのドメインが、所定値以下の余裕を有する場合、その物理的ストレージシステムが、マイグレーションの候補となる。例示的実施形態では、プロセッサ余裕が３０％以下であるか、又はドメイン余裕が１０％以下でなければならない。上記のように、これらの割合は単なる例であり、管理者の要望によって、又はハードウェア要件に従う上で異なる場合もある。マイグレーションの候補が複数ある場合、ロードバランシングシステムは、ドメイン余裕が一番少ないストレージシステムに優先権を与えることによって、候補に順位を付ける。この場合も、同数の場合、マイグレーションの候補は無作為に順位付けされる。上記の基準のいずれかに適合する候補が存在しない場合、マイグレーションは不要となる。
【００６９】
ロードバランシングプロセスは、似たような一連のテストを使用して、宛先物理的ストレージシステムを選択する。シングルプロセッサシステムの場合、ロードバランシングプロセスは、プロセッサ余裕が所定値以下である物理的ストレージシステムを宛先の候補として選択する。例示的実施形態において、この所定値は２５％である。適合する複数の候補は、最大プロセッサ余裕を有するストレージシステムに優先権を与えることによって順位付けされる。先と同様に、同数の場合、候補ストレージシステムは、無作為に順位付けされる。基準に適合する物理的ストレージシステムが存在しない場合、有効な宛先物理的ストレージシステムが存在しないため、マイグレーションは行われないことになる。
【００７０】
同様の考え方が、マルチプロセッサストレージシステムにおける宛先の決定の際にもなされる。マルチプロセッサストレージシステムの場合、宛先ストレージシステムの候補は、プロセッサ余裕が所定値以上であるか、又は（ドメインアレイの）いずれかのドメインの最小余裕が所定値以上であるストレージシステムである。例示的実施形態では、プロセッサ余裕が６０％以上であるか、又はドメイン余裕が２０％以上である。複数の候補が存在する場合、ロードバランシングプロセスは、最高ドメイン余裕から開始してストレージシステムを順位付けする。この場合も、この基準に適合する物理的ストレージシステムが存在しない場合、有効な宛先物理的ストレージシステムは存在しないため、マイグレーションは行われないことになる。
【００７１】
ソース物理的ストレージシステムが選択された後、ステップ７３０において、ロードバランシングプロセスは、ソース物理的ストレージシステム上の各ｖｆｉｌｅｒについて使用率テーブルを作成する。使用率テーブルは、一秒あたりの平均処理数を一秒あたりの合計物理的ストレージシステム処理で割ることにより算出されるｖｆｉｌｅｒ率（ＶＲ）、すなわちＶＲ＝（一秒当たりのｖｆｉｌｅｒ処理）／（一秒当たりのストレージシステム処理）を含む。ＶＲの計算は、使用率テーブルの構築に使用される。使用率テーブルは、プロセッサ使用値、ドメイン使用率、スピンドル使用率、及び容量使用率値を含む。プロセッサ使用率は、ＶＲに物理的ストレージシステムの平均総合プロセッサ使用率を乗じたものとして規定される。すなわち、プロセッサ使用率＝ＶＲ＊（物理的ストレージシステムの平均プロセッサ使用率）である。ドメイン使用率は、ＶＲに各ドメイン使用率を乗じることによって算出される。すなわち、ドメイン使用率＝ＶＲ＊（平均ドメイン使用率）である。スピンドル使用率は、ボリュームのスピンドル数であり、容量使用率は、ｖｆｉｌｅｒによって提供されるボリュームに使用される容量である。
【００７２】
使用率テーブルを生成した後、ステップ７３５において、ロードバランシングプロセスは、マイグレートすべき適当なｖｆｉｌｅｒを選択する。この選択は、図８を参照して後で詳しく説明するように、まずマイグレートすべき適当なｖｆｉｌｅｒ候補を決定し、次いで、最高プロセッサ使用率を有する候補ｖｆｉｌｅｒを選択することによってなされる。次に、ステップ７４０において、ロードバランシングプロセスは、選択されたｖｆｉｌｅｒのマイグレーションを管理者に提案する。代替実施形態において、ロードバランシングプロセスは、選択されたｖｆｉｌｅｒをソース物理的ストレージシステムから宛先物理的ストレージシステムへ「自動的」にマイグレートする場合がある。
【００７３】
図８は、本発明の一実施形態による、ストレージシステムが単一のプロセッサしか有しない環境において、あるｖｆｉｌｅｒがマイグレーションの候補であるか否かを判定する手順８００のステップを詳細に示すフロー図である。この手順は、ステップ８０５から開始され、ステップ８１０へ進み、そこで、ｖｆｉｌｅｒのスピンドル使用率が宛先ストレージシステムのスピンドル余裕よりも大きいか否かの判定を行う。ｖｆｉｌｅｒのスピンドル使用率が宛先ストレージシステムのスピンドル余裕以下である場合、手順はステップ８１５へ進み、そこで、ｖｆｉｌｅｒの容量使用率が、宛先ストレージシステムの容量余裕よりも大きいか否かの判定を行う。ｖｆｉｌｅｒの容量使用率が、宛先ストレージシステムの容量余裕以下であった場合、手順はステップ８２０へ進み、そこで、宛先ストレージシステムのプロセッサ余裕からｖｆｉｌｅｒのプロセッサ使用率を引いたものが、所定の閾値、例えば１５％未満であるか否かの判定を行う。所定の閾値未満であった場合、手順はステップ８２５へ進み、そこで、ｖｆｉｌｅｒのプロセッサ使用率が、所定の閾値、例えば２％未満であるか否かの判定を行う。ｆｉｌｅｒのＣＰＵ使用率が所定の閾値未満であった場合、ステップ８３０において、そのｖｆｉｌｅｒはマイグレーションの候補として識別される。そして、手順はステップ８４０で終了する。ステップ８１０〜８２５において、テストされる条件に合致した場合、プロセスはステップ８３５へ分岐し、そのｖｆｉｌｅｒは、マイグレーションの候補ではないものとしてマーキングされる。そして、手順はステップ８４０で終了する。すなわち、手順８００におけるそれらのテストのいずれかに合格したｖｆｉｌｅｒは、マイグレーションの候補にはならない。なぜなら、宛先物理低ストレージシステムが閾値を超えるか、又はそのｖｆｉｌｅｒは少量のリソースしか使用しないからである（すなわち、ステップ８２５）。
【００７４】
図９は、本発明の一実施形態による、マルチプロセッサシステムにおいてあるｖｆｉｌｅｒがマイグレーションの候補になるか否かを判定するための手順のステップを詳細に示すフロー図である。この手順はステップ９０５から開始され、ステップ９１０へ進み、そこで、ｖｆｉｌｅｒのスピンドル使用率が宛先ストレージシステムのスピンドル余裕よりも大きいか否かの判定を行う。大きくなければ、手順はステップ９１５へ進み、そこで、そのｖｆｉｌｅｒの容量使用率が宛先ストレージシステムの容量余裕よりも大きいか否かの判定を行う。大きくなければ、手順はステップ９２０へ進み、そこで、宛先物理的ストレージシステムのプロセッサ余裕からそのｖｆｉｌｅｒのプロセッサ使用率を差し引いたものが、所定の閾値、例えば３０％未満であるか否かを判定する。所定の閾値未満でなければ、ロードバランシングプロセスはステップ９２５へ進み、宛先物理的ストレージシステムのドメイン余裕からｖｆｉｌｅｒのドメイン使用率を差し引いたものが、所定の閾値、例えば１０％未満であるか否かを判定する。この計算は例えば、ドメインごとに実施される場合がある。したがって、全てのドメインについて、計算結果は所定の値未満でなければならない。所定の閾値未満でなければ、次にロードバランシングシステムは、ステップ９３０において、ｖｆｉｌｅｒのプロセッサ使用率が、所定の閾値、例えば２％未満であるか否かを判定する。これらの条件のいずれにも適合しなかった場合、すなわち、テストが肯定的であった場合、次にロードバランシングプロセスは、ステップ９３５において、そのｖｆｉｌｅｒをマイグレーションの候補として識別し、その後、ステップ９４５において終了する。一方、ステップ９１０〜９３０におけるテストのうちのいずれかの結果が肯定的な結果であれば、手順はステップ９４０へ分岐し、そのｖｆｉｌｅｒはマイグレーションの候補ではないものとしてマーキングされ、その後、ステップ９４５で終了する。
【００７５】
もう一度まとめると、本発明は、共有バックエンドストレージを備えた複数のストレージシステムにわたってユーザワークロードのロードバランスをとるシステム、及び方法に関する。管理コンソール上のロードバランシングプロセスは、ストレージシステム環境における物理的ストレージシステムに関連するパフォーマンスデータを定期的に収集する。収集されたデータから、最後の時間枠にわたって、一連のメトリックが計算機。計算されたメトリックのうちのいずかが所定の閾値を超えている場合、ロードバランシングプロセスは、ソース物理的ストレージシステム、及び宛先物理的ストレージシステムを識別する。物理的ストレージシステムを識別した後、ロードバランシングプロセスは、宛先へマイグレートすべきソース上の適当なｖｆｉｌｅｒを識別する。次にロードバランシングプロセスは、マイグレーションの候補ｖｆｉｌｅｒを識別し、最高プロセッサ使用率を使用して１つを選択する。
【００７６】
上記の説明は、本発明の特定の実施形態に関するものである。しかしながら、当業者には明らかなように、記載した実施形態の利点の一部、又は全てを維持したままで、記載した実施形態に対して他の変更や修正を施すことも可能である。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読取可能媒体を含むソフトウェアとしても、ハードウェアとしても、ファームウェアとしても、あるいはそれらの組み合わせとしても実施することができる。また、本明細書の説明は種々のステップを実施するロードバランシングプロセスを例として記載されているが、ロードバランシングプロセスの機能は、各物理的ストレージシステムにおいて実施してもよい。さらに、例示的実施形態に関係して種々のパーセンテージが記載されているが、それらのパーセンテージ値は、単なる例として解釈されるべきものである。したがって、本明細書の説明は、単なる例として解釈すべきものであり、本発明の範囲を制限するものではない。したがって、添付の特許請求の範囲の目的は、そうした変更や修正も、本発明の思想、及び範囲の中に含めることにある。
【図面の簡単な説明】
【００７７】
【図１】ストレージシステムクラスタ環境の略ブロック図である。
【図２】本発明の一実施形態による例示的ストレージシステム環境の略ブロック図である。
【図３】本発明の一実施形態による例示的ストレージシステムの略ブロック図である。
【図４】本発明の一実施形態による例示的ストレージオペレーティングシステムの略ブロック図である。
【図５】本発明の一実施形態による物理的ストレージシステム内で実行される複数のｖｆｉｌｅｒを示す略ブロック図である。
【図６】本発明の一実施形態による例示的ｖｆｉｌｅｒコンテキストを示す略ブロック図である。
【図７】本発明の一実施形態による、複数のストレージシステム間におけるユーザワークロードのロードバランスをとるための手順のステップの詳細を示すフロー図である。
【図８】本発明の一実施形態による、シングルプロセッサシステムにおいてマイグレートすべきｖｆｉｌｅｒを判定する手順のステップの詳細を示すフロー図である。
【図９】本発明の一実施形態による、マルチプロセッサシステムにおいてマイグレートすべきｖｆｉｌｅｒを判定する手順のステップの詳細を示すフロー図である。
【図１】
2008521140.tif 000003
【図２】
2008521140.tif 000004
【図３】
2008521140.tif 000005
【図４】
2008521140.tif 000006
【図５】
2008521140.tif 000007
【図６】
2008521140.tif 000008
【図７】
2008521140.tif 000009
【図８】
2008521140.tif 000010
【図９】
2008521140.tif 000011
【国際調査報告】
2008521140.tif 000012
2008521140.tif 000013
2008521140.tif 000014
2008521140.tif 000015