(57)【特許請求の範囲】
【請求項１】
外部ホストにより要求されるストレージのＩ／Ｏ（入力／出力）要求に応じる、クラスタ接続された一つ以上のストレージ・サーバと、
前記外部ホストおよび前記一つ以上のストレージ・サーバにだけ接続された一つ以上のインタフェース・サーバであって、少なくとも一つの該インタフェース・サーバが前記Ｉ／Ｏ要求を受信して少なくとも一つの前記ストレージ・サーバに送信する、一つ以上のインタフェース・サーバと、
前記一つ以上のストレージ・サーバにだけ接続され、少なくとも一つの前記ストレージ・サーバとだけ直接交信して、アプリケーションをローカルで実行するための少なくとも一つのアプリケーション・サーバであって、前記クラスタ接続された前記一つ以上のストレージ・サーバのクラスタ管理のためのクラスタ・マネジメント・ソフトウエアおよび前記一つ以上のストレージ・サーバとのストレージ・アプライアンスの内部ネットワークで使われる内部通信プロトコルを備えたデバイス・ドライバを有する、少なくとも一つのアプリケーション・サーバと、
を含むストレージ・アプライアンス・システム。
【請求項２】
前記少なくとも一つのアプリケーション・サーバは複数のアプリケーション・サーバを含む、請求項１に記載のシステム。
【請求項３】
前記アプリケーションは、データベース・アプリケーション、スクラッビング・アプリケーション、およびビジネス分析アプリケーションから成るアプリケーションの群から選択される、請求項１に記載のシステム。
【請求項４】
前記アプリケーションは、一つ以上の他のマシン上で実行するよう設計される、請求項１に記載のシステム。
【請求項５】
前記一つ以上の他のマシンは、アプリケーション・サーバおよびホストから成るマシンの群から選択される、請求項４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にストレージ・アプライアンスに関し、さらに具体的には、アプリケーション・サーバおよびストレージ・サーバを含むストレージ・アプライアンス・システムに関する。
【背景技術】
【０００２】
今日入手可能な一部のハイエンドのストレージ・アプライアンスは、記憶機能を担うサーバのクラスタとして設計されている。これらサーバは、低遅延、高スループットのネットワーク相互接続（例、インフィニバンド、１０Ｇｂｐｓイーサネット（Ｒ））で相互に連結されている。一部または全部のサーバは、外部ホストとの接続のためのネットワーク・アダプタを有し、これはクラスタの相互接続（例、ファイバ・チャネル、１Ｇｂｐｓイーサネット）よりも遅くてもよい。以降、本明細書では、こういったサーバを「インタフェース・サーバ」という。さらに、一部または全部のサーバは、ローカル記憶装置（例、ディスク・ドライブ、フラッシュ）を有し、このローカル記憶装置に対するデータの出し入れ転送を担っている。以降、本明細書ではかかるサーバを「ストレージ・サーバ」という。単一のサーバが、インタフェース・サーバおよびストレージ・サーバの両方の機能を果たすことができる。通常の入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）オペレーションは、外部ホストによって開始され、インタフェース・サーバに来着し、次いで（おそらくは専用のプロトコルを使い）内部相互接続を介して特定のストレージ・サーバに送られる。かかるシステムでは、どのストレージ・サーバが特定のＩ／Ｏ要求に対する物理媒体を有するかをインタフェース・サーバが分かることを確実にするため、通常、グループ・メンバーシップまたは他のクラスタ通信アルゴリズムが使われている。このクラスタ・ソフトウエアは、ストレージ・サーバへのデータのマッピングの不具合または他の再配置があっても、正しい経路設定が維持されることを確実にすることを目的としている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このことは、Ｉ／Ｏオペレーションが、アプライアンスおよびＩ／Ｏの種類に応じて、少なくとも２つのホップを必要とすることを意味する。ホストから物理記憶装置への間の距離に基づいてサーバの階層的分類を行うことができ、上から下に見れば、ストレージ・サーバ、インタフェース・サーバ、そして外部ホストということになろう。システム・リソースの観点から、各ホップのコストは無視できず、これには、通常、少なくとも一つのデータ・コピーと、相互接続待ち時間と、プロトコルおよび経路設定のオーバーヘッドとが含まれる。
【課題を解決するための手段】
【０００４】
本発明の実施形態によって、ストレージ・アプライアンス・システムが提供される。このシステムには、アプリケーションをローカルで実行するための少なくとも一つのアプリケーション・サーバと、アプリケーション・サーバ（またはサーバ群）との間のＩ／Ｏ伝送のため、該サーバと通信する一つ以上のストレージ・サーバとを含めることができる。
【０００５】
また、本発明の実施形態によって、ストレージ・アプライアンス・システムを提供するステップを含めることのできる方法が提供される。このストレージ・アプライアンス・システムには、アプリケーションをローカルで実行するための少なくとも一つのアプリケーション・サーバと、Ｉ／Ｏ伝送のため、該少なくとも一つのアプリケーション・サーバと通信する一つ以上のストレージ・サーバとを含めることができる。また、該方法には、アプリケーション・サーバ上でアプリケーションをローカルに実行するステップ、およびアプリケーション・サーバと一つ以上のストレージ・サーバとの間でＩ／Ｏ伝送を通信するステップを含めることができる。
【０００６】
本発明の実施形態によって、持続性有形のコンピュータ可読記憶媒体に格納されたコンピュータ・プログラムがさらに提供される。このコンピュータ・プログラムには、ストレージ・アプライアンス・システムのアプリケーション・サーバ上でアプリケーションをローカルに実行するためのコードを含めることができる。このストレージ・アプライアンス・システムには、一つ以上のアプリケーション・サーバと、Ｉ／Ｏ伝送のため該アプリケーション・サーバと通信する一つ以上のストレージ・サーバとを含めることができる。該方法には、アプリケーション・サーバとストレージ・サーバとの間でＩ／Ｏ伝送を通信するステップをさらに含めることができる。
【０００７】
また、本発明の実施形態によって、ストレージ・アプライアンス・システムに組み込むためのアプリケーション・サーバが提供される。該アプリケーション・サーバは、アプリケーションをローカルで実行し、少なくとも一つのストレージ・サーバとＩ／Ｏ伝送を通信するよう構成することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態による、ストレージ・アプライアンスを示す。
【図２】図２Ａは、典型的インタフェース・サーバ・ソフトウエアのコード・スタックの一例を示し、図２Ｂは、本発明の実施形態による、アプリケーション・サーバ・ソフトウエアのコード・スタックの一例を示す。
【図３】本発明の実施形態による、ハイブリッド・アプリケーション・サーバを有するストレージ・アプライアンス・システムを示す。
【図４】本発明の実施形態による、アプリケーション・サーバを作動するための方法を示す。
【発明を実施するための形態】
【０００９】
発明と見なされる主題は具体的に指摘され、本明細書に添付された請求項の中ではっきりと請求されている。ただし、本発明は、添付の図面と併せ以下の詳細説明を読み、参照することによって、その目的、特質、および利点とともに、機構およびオペレーションの方法の双方として最善に理解することができよう。
【００１０】
当業者ならよく理解するであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現することができる。従って、本発明の態様は、全体がハードウエアの実施形態、全体がソフトウエアの実施形態（ファームウエア、常駐ソフトウエア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウエアおよびハードウエア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体（群）中に具現されたコンピュータ・プログラムの形を取ることもできる。
【００１１】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体のシステム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例（限定的リスト）には、一つ以上の配線を有する電気接続、携帯コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の持続性有形の媒体とすることができる。
【００１２】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の組み合わせを含め、さまざまな形態の任意の形を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、またはデバイスによって、またはこれらに関連させて使うためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００１３】
コンピュータ可読媒体に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなどまたはこれらの任意の組み合わせを含む、任意の適切な媒体を使って送信することができる。
【００１４】
本発明の態様のためのオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組合せで記述することができる。これらプログラム・コードは、全体をユーザのコンピュータで、一部をユーザのコンピュータでスタンドアロン・ソフトウエア・パッケージとして実行することができ、一部をユーザのコンピュータで他の部分を遠隔コンピュータで、または全体を遠隔コンピュータまたはサーバで実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことができる。
【００１５】
本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラムのフローチャート説明図もしくはブロック図またはその両方を参照しながら、以下に本発明の態様を説明する。フローチャート説明図もしくはブロック図またはその両方の各ブロック、および、フローチャート説明図もしくはブロック図またはその両方のブロックの組合せは、コンピュータ・プログラム命令によって実行可能であることは理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／処理を実施するための手段を生成するようにすることができる。
【００１６】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または特定の仕方で機能する他のデバイスに命令できるコンピュータ可読媒体に格納し、コンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／処理を実施する命令を包含する製品を生成するようにできる。
【００１７】
さらに、これらコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または、他のデバイスにロードして、そのコンピュータ、他のプログラム可能装置、または他のデバイス上で一連のオペレーション・ステップを実施させてコンピュータ実行のプロセスを生成し、コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／処理を実施するためのプロセスを提供するようにすることもできる。
【００１８】
図面中のフローチャート（群）およびブロック図（群）は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラムの、可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。これに関し、フローチャートまたはブロック図中の各ブロックは、規定された論理機能（群）を実施するための一つ以上の実行可能命令を含むコードのモジュール、セグメント、または部分を表し得る。また、ある別な実装においては、ブロックに記載された機能が図に記載されたのと違った順序で実施され得ることにも留意すべきである。例えば、関与する機能性によっては、引き続きに示された２つのブロックが、実際はほぼ同時に実行されることがあり、ブロック群が時として逆の順序で実行されることがある。また、ブロック図もしくはフローチャート説明図またはその両方の各ブロック、および、フローチャート説明図もしくはブロック図またはその両方中のブロックの組合せは、特定の機能または処理を遂行する特殊用途のハードウエア・ベース・システム、または特殊用途ハードウエアとコンピュータ命令との組合せによって実施できることにも留意すべきである。
【００１９】
「ストレージ・アプライアンス」（時として「ストレージ・コントローラ」ともいわれる）は、通常、データを格納するためのストレージ・サーバ、および、ホストとストレージ・サーバとの間の仲介装置として用いることのできるインタフェース・サーバを包含する。
【００２０】
本発明の実施形態による、ストレージ・アプライアンスを図示する図１を参照する。典型的ストレージ・アプライアンスには、ストレージ・サーバ１６およびインタフェース・サーバ１４を含めることができる。データもしくは命令またはその両方を包含し得るＩ／Ｏ要求が、ある外部ホスト２０によって開始され、その要求がストレージ・エリア・ネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１８を介してインタフェース・サーバ１４に通信される。命令はインタフェース・サーバ１４によって処理され、データが（読み出し要求の場合は）ストレージ・サーバから１６から取り出され、（書き込み要求の場合は）これに格納される。
【００２１】
本発明の実施形態によれば、ストレージ・アプライアンスに、サーバの新しいクラスが導入される。本明細書では以降これらサーバを「アプリケーション・サーバ」といい、これらは階層的にはインタフェース・サーバと実際上同等な階層である。アプリケーション・サーバ１２（図１参照）は単一のホップでストレージ・サーバ１６にアクセスすることができる。同時に、アプリケーション・サーバには、（例えば、データ集約型のソフトウエアを実行することによって）外部ホストの機能を組み入れ、（例えば、単一のホップで記憶装置にアクセスすることによって）インタフェース・サーバの機能を組み入れることができる。
【００２２】
本発明の実施形態によれば、アプリケーション・サーバは、いくつかの点でインタフェース・サーバに類似させてもよい。すなわち、アプリケーション・サーバは、ストレージ・アプライアンスの内部ネットワークに接続することができ、クラスタ・メンバーシップ・ソフトウエアを実行することができ、ストレージ・アプライアンスの内部ネットワークを用いてストレージ・サーバと（例えば、専用のプロトコルを使って）通信をすることができる。アプリケーション・サーバを使って、例えば、データベース・アプリケーション（例、ＩＢＭ（ＩＢＭの登録商標）のＤＢ２（ＩＢＭの登録商標））、スクラッビング・ソフトウエア、ビジネス分析ソフトウエアなどの、アプリケーションを実行することができる。このとき、アプリケーション・サーバ上で実行されているソフトウエアは、インタフェース・サーバの必要なく、ストレージ・サーバと直接交信することができる。本発明の実施形態によれば、アプリケーション・サーバは、アプリケーション・サーバの故障または追設が、クラスタ・ソフトウエアのグループ・メンバーシップの変更をもたらさないという点で、インタフェース・サーバとは異なる。
【００２３】
本発明の実施形態によれば、記憶装置ネットワークの内部ネットワークへの物理的接続性の付与に加え、アプリケーション・サーバのソフトウエアに、クラスタ・マネジメント・ソフトウエアおよびストレージ・アプライアンスの内部通信プロトコルを存知させておくことができる。この機能は、この知識を備えたデバイス・ドライバをインストールすることによって加えることができ、これはこの機能を拡張する広く認められた標準的やり方を提供する。デバイス・ドライバの使用するアプローチは、通信ホップの回避に加え、プロトコル・スタックの一部を削除でき、待ち時間をさらに低減する。
【００２４】
典型的なインタフェース・サーバ・ソフトウエア・コードには、プロトコル固有のコード（例、ｉＳＣＳＩ、ＦＣなど）、待ち行列をアドレス指定するコード、サービス品質のコード、ストレージ・サーバとデータをやり取り送信するために適切なストレージ・サーバを選定するためのロジックをアドレス指定するコード、およびストレージ・サーバとデータを（やり取り）送信するためのコードを含めることができる。
【００２５】
図２Ａは、典型的なインタフェース・サーバ・ソフトウエアのコード・スタックの一例を示す。インタフェース・サーバ・ソフトウエアのこの例は、プロトコル固有のコード２０２、待ち行列コード２０４、サービス品質のコード２０６、ストレージ・サーバ選定のためのロジック２０８、およびストレージ・サーバとやり取り送信のためのコード２１０を含む。
【００２６】
本発明の実施形態によれば、アプリケーション・サーバのために設計されたソフトウエアには、そのアプリケーション・サーバ上で実行するため設計されたアプリケーション・コード（実際上は、このアプリケーションは、必ずしもこの特定のサーバで実行するため特に設計されたものである必要はなく、他のコンピュータで実行するよう設計されたアプリケーション・ソフトウエアであってもよい）と、一つ以上のストレージ・サーバとデータをやり取り送信するためのコードとを含めることができる。図２Ｂは、本発明の実施形態による、アプリケーション・サーバ・ソフトウエアのコード・スタックの一例を示す。アプリケーション・コード２１２が備えられ、これをアプリケーション・サーバの処理ユニット上でローカルに実行することができ、ストレージ・サーバとやり取り送信するためのコード２１０も含まれている。また、このスタックはストレージ・サーバを選定するためのロジック・コード２０８も含む。
【００２７】
インタフェース・サーバ中に存在する各種ソフトウエア・コードの多くが（ストレージ・サーバとの交信のためのコードと、ストレージ・サーバ選定のためのロジックを除いて、図２Ａ参照）ホストとインタフェース・サーバとの間の適切な通信を容易にすることを目的としているのは明らかである。本発明の実施形態によれば、アプリケーション・サーバには、該アプリケーション・サーバ上でローカルに実行するよう設計されたアプリケーション・コード、アプリケーション・サーバとストレージ・サーバとの間で適切な通信を容易にするコード、およびでき得れば、ストレージ・サーバの選定のためのロジックを含めることができる。本発明の実施形態によれば、アプリケーション・サーバでは、データは、アプリケーション・サーバを経由して伝送されるのでなく、外部デバイス（例、ホスト）とストレージ・サーバとの間を行き来する。アプリケーション・サーバは、むしろ、ストレージ・サーバとだけの通信を維持することができる。
【００２８】
本発明の実施形態によれば、原理上は、一つ以上のアプリケーション・サーバおよび一つ以上のストレージ・サーバだけを包含する、スタンドアロン・ストレージ・アプライアンス・システムを設けることができるが、典型的なストレージ・アプライアンス・システムは、一つ以上（通常は複数）のストレージ・サーバ、一つ以上のアプリケーション・サーバ、およびホストと通信するための一つ以上（通常は複数）のインタフェース・サーバを含むことになろう。
【００２９】
本発明のいくつかの好適な実施形態によって、ハイブリッド型のアプリケーション・サーバが提供される。
【００３０】
図３は、本発明の実施形態による、ハイブリッド・アプリケーション・サーバを備えたストレージ・アプライアンス・システムを示す。
【００３１】
ストレージ・アプライアンス・システム３２には、ストレージ・サーバ１６およびインタフェース・サーバ１４を含めることができる。これにはハイブリッド・アプリケーション・サーバ１２ａも包含されており、その各々はアプリケーションを実行し、ストレージ・サーバ１６と通信することを目的としているが、同時に、ＳＡＮ１８を介してホスト２１と通信するインタフェース・サーバとしての役割も果たせるよう構成されている。
【００３２】
このアプリケーションは、例えば、いくつかのアプリケーション・サーバ、または、一つ以上のアプリケーション・サーバと一つ以上の追加のホストとでなど、一群のマシン上で実行されるように設計することができる。例えば、アプリケーションのいくつかの部分を一つ以上のアプリケーション・サーバで実行することができ、残りを一つ以上の外部ホストで実行するよう設計することができる。例えば、８台のマシンで実行するよう構成された分析ソフトウエア分散し、これらマシンの２台をアプリケーション・サーバとすることができ、残りの６台を外部ホストとすることができよう。
【００３３】
本発明のいくつかの実施形態によれば、インタフェース・サーバ・コードおよびアプリケーション・サーバ・コードの両方をハードウエア上で直接実行する代わりに、ハイパーバイザを用いて、これらの一つまたは両方をバーチャル・マシン内で実行することができる。例えば、ハイパーバイザを使えば、アプリケーション・サーバの機能をインタフェース・サーバにもっと容易に付加することができる。
【００３４】
図４は、本発明の実施形態によって、アプリケーション・サーバを作動させる方法を示す。
【００３５】
アプリケーション・サーバ上でアプリケーションをローカルに実行する４０２ことができる。Ｉ／Ｏ要求が生じた４０４場合、アプリケーション・サーバとストレージ・サーバとの間でＩ／Ｏ伝送４０６を行うことができる。
【００３６】
本発明の実施形態の前述の記載は、例示および説明の目的で提示された。これは、網羅的であることまたは本発明を開示されたとおりの形態に限定することは意図されていない。当業者は、上記の教示を踏まえ多くの修改、変形、代替、変更、および同等物が可能であることをよく理解すべきである。従って、添付の請求項は、本発明の真の趣旨に含まれる、かかる修改および変更を全て網羅することが意図されている。
【符号の説明】
【００３７】
１２  アプリケーション・サーバ
１４  インタフェース・サーバ
１６  ストレージ・サーバ
１８  ＳＡＮ
２０  外部ホスト
２２  ストレージ・アプライアンス
【図１】
0005995427.tif 000002
【図２】
0005995427.tif 000003
【図３】
0005995427.tif 000004
【図４】
0005995427.tif 000005