(57)【特許請求の範囲】
【請求項１】
サーバ・クラスタ・システムに適用される、記憶リソースを共有するための方法であって、
前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記方法は、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するステップであって、前記複数の記憶パーティションは共有記憶リソースのプールを形成する、ステップと、
各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当てるステップと、
グローバルパーティション情報を生成するステップであって、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録する、ステップと、
記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、
を含む方法。
【請求項２】
前記記憶要求メッセージに対応する記憶パーティションを決定するステップは、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定するステップと、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項１に記載の方法。
【請求項３】
前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするステップであって、各々の記憶パーティションのメタデータは、前記記憶パーティションのＩＤと、前記記憶パーティションに割り当てられたデータブロックのＩＤとの間の対応関係を記録する、ステップをさらに含み、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックのＩＤを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも１つのデータブロックに対応する記憶パーティションのＩＤを決定するステップ
を含む請求項２に記載の方法。
【請求項４】
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを使用することによって、各々のデータブロックのｋｅｙ値を形成し、各々のデータブロックの前記ｋｅｙ値に対応するｖａｌｕｅ値を計算し、前記ｖａｌｕｅ値に従って各々のデータブロックに対応する記憶パーティションを決定するステップ
を含む請求項２に記載の方法。
【請求項５】
記憶要求メッセージを受信することは、データ書き込み操作要求を受信することを含み、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定するステップと、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのＩＤを決定するステップと、
書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにＬＢＡを割り当てるステップと、
前記現在の書き込み操作に対応するユーザボリュームのＩＤ、および、各々の書き込まれるデータブロックのＬＢＡに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項２または３または４に記載の方法。
【請求項６】
前記書き込まれるデータは、統一サイズの複数の書き込まれるデータブロックに分割される請求項５に記載の方法。
【請求項７】
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する読み出し・書き込み制御モジュールを決定するステップと、前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、は、
前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック書き込みコマンドを生成するステップであって、各々のデータブロック書き込みコマンドは１つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのＩＤを搬送する、ステップと、
各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールが記憶ハードウェアリソースに各々の書き込まれるデータブロックを書き込むように、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するステップと、
を含む請求項６に記載の方法。
【請求項８】
記憶要求メッセージを受信することは、データ読み出し操作要求を受信することを含み、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定するステップと、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのＩＤを決定するステップと、
前記読み出されるデータのオフセットに従って複数の読み出されるデータブロックのＬＢＡを決定するステップと、
前記現在の読み出し操作に対応するユーザボリュームのＩＤ、および、各々の読み出されるデータブロックのＬＢＡに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項２、３または４に記載の方法。
【請求項９】
統一サイズの複数の読み出されるデータブロックは、前記読み出されるデータのオフセットに従って決定される請求項８に記載の方法。
【請求項１０】
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する読み出し・書き込み制御モジュールを決定するステップと、前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、は、
前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック読み出しコマンドを生成するステップであって、各々のデータブロック読み出しコマンドは１つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのＩＤを搬送する、ステップと、
各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールが各々の読み出されるデータブロックを読み出すように、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するステップと、
を含む請求項８に記載の方法。
【請求項１１】
サーバ・クラスタ・システムであって、前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記サーバノードにおいて分散記憶コントローラが動作し、前記分散記憶コントローラは、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成されたメタデータ・コントローラを含み、前記複数の記憶パーティションは共有記憶リソースのプールを形成し、前記メタデータ・コントローラは、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成するように構成され、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録し、前記メタデータ・コントローラは、前記グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成され、
前記分散記憶コントローラは、
サービス層に向かい、記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように構成された前記仮想ブロック・サービス・モジュールと、
前記ハードディスクまたは前記ネットワーク記憶ノードに向かい、前記記憶要求メッセージによって要求される操作を実行するように構成された前記読み出し・書き込み制御モジュールと、
を含むサーバ・クラスタ・システム。
【請求項１２】
前記読み出し・書き込み制御モジュールはオブジェクト記憶デリゲートおよびＳＡＮ記憶エージェントを含み、
前記メタデータ・コントローラは、読み出し・書き込み制御モジュールとして前記オブジェクト記憶デリゲートをローカル・ハードディスクの記憶パーティションに割り当て、読み出し・書き込み制御モジュールとして前記ＳＡＮ記憶エージェントを前記記憶アレイの記憶パーティションに割り当てるように特に構成され、
前記オブジェクト記憶デリゲートは、前記記憶要求メッセージを受信し、前記記憶要求メッセージに対応する物理アドレスを決定し、前記物理アドレスに従って前記ハードディスクにおいて前記記憶要求メッセージによって要求される操作を実行するように構成され、
前記ＳＡＮ記憶エージェントは、前記記憶要求メッセージを受信し、前記ネットワーク記憶ノードの、前記記憶要求メッセージに対応する論理アドレスを決定し、前記論理アドレスに従って前記記憶アレイにおいて前記記憶要求メッセージによって要求される操作を実行するように構成された請求項１１に記載のシステム。
【請求項１３】
前記仮想ブロック・サービス・モジュールは、前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定し、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するように構成された請求項１１に記載のシステム。
【請求項１４】
前記仮想ブロック・サービス・モジュールは、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするように特に構成され、各々の記憶パーティションのメタデータは、前記記憶パーティションのＩＤと、前記記憶パーティションに割り当てられたデータブロックのＩＤとの間の対応関係を記録し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックのＩＤを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも１つのデータブロックに対応する記憶パーティションのＩＤを決定するように特に構成された請求項１３に記載のシステム。
【請求項１５】
前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを使用することによって、各々のデータブロックのｋｅｙ値を形成し、各々のデータブロックの前記ｋｅｙ値に対応するｖａｌｕｅ値を計算し、前記ｖａｌｕｅ値に従って各々のデータブロックに対応する記憶パーティションを決定するように特に構成された請求項１３に記載のシステム。
【請求項１６】
前記仮想ブロック・サービス・モジュールは、データ書き込み操作要求を受信し、前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのＩＤを決定し、書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにＬＢＡを割り当て、前記現在の書き込み操作に対応するユーザボリュームのＩＤ、および、各々の書き込まれるデータブロックのＬＢＡに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック書き込みコマンドを生成するように特に構成され、各々のデータブロック書き込みコマンドは１つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのＩＤを搬送し、前記仮想ブロック・サービス・モジュールは、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するように特に構成された請求項１１から１５のいずれか一項に記載のシステム。
【請求項１７】
前記仮想ブロック・サービス・モジュールは、データ読み出し操作要求を受信するように特に構成され、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、前記仮想ブロック・サービス・モジュールは、前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのＩＤを決定し、前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのＬＢＡを決定し、前記現在の読み出し操作に対応するユーザボリュームのＩＤ、および、各々の読み出されるデータブロックのＬＢＡに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック読み出しコマンドを生成するように特に構成され、各々のデータブロック読み出しコマンドは１つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのＩＤを搬送し、前記仮想ブロック・サービス・モジュールは、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するように特に構成された請求項１１から１５のいずれか一項に記載のシステム。
【請求項１８】
前記メタデータ・コントローラは、前記サーバノードにおけるオブジェクト記憶デリゲートおよびＳＡＮ記憶エージェントの配置状態を個々に決定し、前記決定された配置状態に従って前記読み出し・書き込み制御モジュールのビュー情報を生成するようにさらに構成され、前記読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されるサーバノードについての情報を示すために使用され、前記メタデータ・コントローラは、前記読み出し・書き込み制御モジュールのビュー情報を前記仮想ブロック・サービス・モジュールに送出するようにさらに構成され、
前記仮想ブロック・サービス・モジュールは、前記読み出し・書き込み制御モジュールのビュー情報に従って、前記読み出し・書き込み制御モジュールのルーティング情報を決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように特に構成された請求項１１から１５のいずれか一項に記載のシステム。
【請求項１９】
前記メタデータ・コントローラは、前記サーバ・クラスタ・システムにおける、ハードディスクリソースを有するサーバノードにおいて前記オブジェクト記憶デリゲートを配置することを決定し、前記サーバ・クラスタ・システムにおける、少ない負荷を有するサーバノードにおいて前記ＳＡＮ記憶エージェントを配置することを決定するように特に構成された請求項１８に記載のシステム。
【請求項２０】
前記メタデータ・コントローラは、前記サーバノードのハードディスクの利用可能な記憶リソースおよび前記ネットワーク記憶ノードの記憶アレイの利用可能な記憶リソースを集め、前記ハードディスクおよび前記記憶アレイの利用可能な記憶リソースを複数の記憶パーティションに分割するようにさらに構成された請求項１８に記載のシステム。
【請求項２１】
プロセッサ、メモリ、バス、および通信インタフェースを含むコンピュータであって、
前記メモリはコンピュータ実行命令を記憶するように構成され、前記プロセッサは前記バスを使用することによって前記メモリに接続され、前記コンピュータが動作するとき、前記コンピュータが、請求項１から１０のいずれか一項に記載の、記憶リソースを共有するための方法を実行するように、前記プロセッサが前記メモリによって記憶されたコンピュータ実行命令を実行する、コンピュータ。
【請求項２２】
コンピュータ実行命令を含むコンピュータ読み取り可能な媒体であって、コンピュータのプロセッサが前記コンピュータ実行命令を実行するとき、前記コンピュータが、請求項１から１０のいずれか一項に記載の、記憶リソースを共有するための方法を実行するコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術の分野、特に、記憶リソースを共有する方法およびシステムに関する。
【背景技術】
【０００２】
クラウド・コンピューティング・アプリケーションにおいて、サーバ・クラスタ・システムは、コンピューティング・リソース、記憶リソース、およびネットワーク・リソースを統合し、仮想化のような技術を使用することによって、ネットワークを介して、使用のためにユーザにリソースを提供する。アプリケーションの形式は、例えば、仮想マシン（Virtual Machine、略して“ＶＭ”）、コンピューティング能力、記憶能力貸し、等である。
【０００３】
現在、異なる種類のリソース需要のような理由のため、サーバ・クラスタ・システムは一般に異なるデバイスを使用して記憶デバイスを提供し、記憶リソースのソースは多様化され、例えば、サーバノードに組み込まれた記憶リソース、および独立に配置された記憶リソースであり、ここで、独立に配置された記憶リソースは、例えば、ストレージ・エリア・ネットワーク（Storage Area Network、略して“ＳＡＮ”）のような専用記憶アレイまたは記憶サーバとすることが可能である。
【０００４】
先行技術において、サーバ・クラスタ・システムの記憶デバイスは外部記憶サービスを独立に提供し、結果として、記憶リソースの低く結合された利用となる。さらに、企業によって本来蓄積された、ネットワーク記憶デバイスの、記憶リソースは、サーバ・クラスタ・システムによって再利用されることができず、途方もなく大きい浪費を引き起こす。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施例は、記憶リソースを共有する方法およびシステムを提供し、これは、異種の記憶リソースを統合、共有、および利用するために使用され、それによって、記憶リソースの利用を向上させる。
【０００６】
第１の態様に従って、本発明の実施例は、サーバ・クラスタ・システムに適用される、記憶リソースを共有するための方法であって、
前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記方法は、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するステップであって、前記複数の記憶パーティションは共有記憶リソースのプールを形成する、ステップと、
各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当てるステップと、
グローバルパーティション情報を生成するステップであって、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録する、ステップと、
記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、
を含む方法を提供する。
【０００７】
第１の態様を参照して、第１の可能な実現形態において、前記記憶要求メッセージに対応する記憶パーティションを決定するステップは、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定するステップと、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む。
【０００８】
第１の態様の第１の可能な実現形態を参照して、第２の可能な実現形態において、前記方法は、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするステップであって、各々の記憶パーティションのメタデータは、前記記憶パーティションのＩＤと、前記記憶パーティションに割り当てられたデータブロックのＩＤとの間の対応関係を記録する、ステップをさらに含み、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックのＩＤを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも１つのデータブロックに対応する記憶パーティションのＩＤを決定するステップ
を含む。
【０００９】
第１の態様または第１の態様の第１の可能な実現形態を参照して、第３の可能な実現形態において、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを使用することによって、各々のデータブロックのｋｅｙ値を形成し、各々のデータブロックの前記ｋｅｙ値に対応するｖａｌｕｅ値を計算し、前記ｖａｌｕｅ値に従って各々のデータブロックに対応する記憶パーティションを決定するステップ
を含む。
【００１０】
第１の態様の第１の可能な実現形態、第１の態様の第２の可能な実現形態、または第１の態様の第３の可能な実現形態を参照して、第４の可能な実現形態において、記憶要求メッセージを受信することは、ユーザボリューム生成コマンドを受信することを含み、前記ユーザボリューム生成コマンドは前記ユーザボリュームのサイズを示し、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定するステップと、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記ユーザボリュームに前記ユーザボリュームのＩＤを割り当てるステップと、
前記ユーザボリュームのサイズに従って、前記ユーザボリュームに割り当てられる初期記憶リソースのサイズを決定し、前記初期記憶リソースのサイズに従って、前記少なくとも１つのデータブロックのＬＢＡを決定するステップと、
前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む。
【００１１】
第１の態様の第１の可能な実現形態、第１の態様の第２の可能な実現形態、または第１の態様の第３の可能な実現形態を参照して、第５の可能な実現形態において、記憶要求メッセージを受信することは、データ書き込み操作要求を受信することを含み、
前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのＩＤを決定するステップと、
書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにＬＢＡを割り当てるステップと、
前記現在の書き込み操作に対応するユーザボリュームのＩＤ、および、各々の書き込まれるデータブロックのＬＢＡに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック書き込みコマンドを生成するステップであって、各々のデータブロック書き込みコマンドは１つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのＩＤを搬送する、ステップと、
各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールが記憶ハードウェアリソースに各々の書き込まれるデータブロックを書き込むように、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するステップと、
を含む。
【００１２】
第１の態様の第１の可能な実現形態、第１の態様の第２の可能な実現形態、または第１の態様の第３の可能な実現形態を参照して、第５の可能な実現形態において、記憶要求メッセージを受信することは、データ読み出し操作要求を受信することを含み、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、
前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのＩＤを決定するステップと、
前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのＬＢＡを決定するステップと、
前記現在の読み出し操作に対応するユーザボリュームのＩＤ、および、各々の読み出されるデータブロックのＬＢＡに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック読み出しコマンドを生成するステップであって、各々のデータブロック読み出しコマンドは１つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのＩＤを搬送する、ステップと、
各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールが各々の読み出されるデータブロックを読み出すように、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するステップと、
を含む。
【００１３】
第２の態様に従って、本発明の実施例は、サーバ・クラスタ・システムであって、前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記サーバノードにおいて分散記憶コントローラが動作し、前記分散記憶コントローラは、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成されたメタデータ・コントローラを含み、前記複数の記憶パーティションは共有記憶リソースのプールを形成し、前記メタデータ・コントローラは、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成するように構成され、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録し、前記メタデータ・コントローラは、前記グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成され、
前記分散記憶コントローラは、
サービス層に向かい、記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように構成された前記仮想ブロック・サービス・モジュールと、
前記ハードディスクまたは前記ネットワーク記憶ノードに向かい、前記記憶要求メッセージによって要求される操作を実行するように構成された前記読み出し・書き込み制御モジュールと、
を含むサーバ・クラスタ・システムを提供する。
【００１４】
第２の態様を参照して、第１の可能な実現形態において、前記読み出し・書き込み制御モジュールはオブジェクト記憶デリゲートおよびＳＡＮ記憶エージェントを含み、
前記メタデータ・コントローラは、読み出し・書き込み制御モジュールとして前記オブジェクト記憶デリゲートをローカル・ハードディスクの記憶パーティションに割り当て、読み出し・書き込み制御モジュールとして前記ＳＡＮ記憶エージェントを前記記憶アレイの記憶パーティションに割り当てるように特に構成され、
前記オブジェクト記憶デリゲートは、前記記憶要求メッセージを受信し、前記記憶要求メッセージに対応する物理アドレスを決定し、前記物理アドレスに従って前記ハードディスクにおいて前記記憶要求メッセージによって要求される操作を実行するように構成され、
前記ＳＡＮ記憶エージェントは、前記記憶要求メッセージを受信し、前記ネットワーク記憶ノードの、前記記憶要求メッセージに対応する論理アドレスを決定し、前記論理アドレスに従って前記記憶アレイにおいて前記記憶要求メッセージによって要求される操作を実行するように構成される。
【００１５】
第２の態様を参照して、第２の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのＩＤ、および、前記操作されるデータの少なくとも１つのデータブロックの論理ブロックアドレスＬＢＡを決定し、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するように特に構成される。
【００１６】
第２の態様の第２の可能な実現形態を参照して、第３の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするように特に構成され、各々の記憶パーティションのメタデータは、前記記憶パーティションのＩＤと、前記記憶パーティションに割り当てられたデータブロックのＩＤとの間の対応関係を記録し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックのＩＤを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも１つのデータブロックに対応する記憶パーティションのＩＤを決定するように特に構成される。
【００１７】
第２の態様の第２の可能な実現形態を参照して、第４の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを使用することによって、各々のデータブロックのｋｅｙ値を形成し、各々のデータブロックの前記ｋｅｙ値に対応するｖａｌｕｅ値を計算し、前記ｖａｌｕｅ値に従って各々のデータブロックに対応する記憶パーティションを決定するように特に構成される。
【００１８】
第２の態様および第２の態様のいずれか１つの可能な実現形態を参照して、第５の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、ユーザボリューム生成コマンドを受信するように特に構成され、前記ユーザボリューム生成コマンドは前記ユーザボリュームのサイズを示し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームに前記ユーザボリュームのＩＤを割り当て、前記ユーザボリュームのサイズに従って、前記ユーザボリュームに割り当てられる初期記憶リソースのサイズを決定し、前記初期記憶リソースのサイズに従って、前記少なくとも１つのデータブロックのＬＢＡを決定し、前記ユーザボリュームのＩＤおよび前記少なくとも１つのデータブロックのＬＢＡに従って、前記少なくとも１つのデータブロックに対応する記憶パーティションを決定するように特に構成される。
【００１９】
第２の態様および第２の態様のいずれか１つの可能な実現形態を参照して、第６の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、データ書き込み操作要求を受信し、前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのＩＤを決定し、書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにＬＢＡを割り当て、前記現在の書き込み操作に対応するユーザボリュームのＩＤ、および、各々の書き込まれるデータブロックのＬＢＡに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック書き込みコマンドを生成するように特に構成され、各々のデータブロック書き込みコマンドは１つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのＩＤを搬送し、前記仮想ブロック・サービス・モジュールは、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するように特に構成される。
【００２０】
第２の態様および第２の態様のいずれか１つの可能な実現形態を参照して、第７の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、データ読み出し操作要求を受信するように特に構成され、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、前記仮想ブロック・サービス・モジュールは、前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのＩＤを決定し、前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのＬＢＡを決定し、前記現在の読み出し操作に対応するユーザボリュームのＩＤ、および、各々の読み出されるデータブロックのＬＢＡに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック読み出しコマンドを生成するように特に構成され、各々のデータブロック読み出しコマンドは１つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのＩＤを搬送し、前記仮想ブロック・サービス・モジュールは、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するように特に構成される。
【００２１】
第２の態様および第２の態様のいずれか１つの可能な実現形態を参照して、第８の可能な実現形態において、前記メタデータ・コントローラは、前記サーバノードにおけるオブジェクト記憶デリゲートおよびＳＡＮ記憶エージェントの配置状態を個々に決定し、前記決定された配置状態に従って前記読み出し・書き込み制御モジュールのビュー情報を生成するようにさらに構成され、前記読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されるサーバノードについての情報を示すために使用され、前記メタデータ・コントローラは、前記読み出し・書き込み制御モジュールのビュー情報を前記仮想ブロック・サービス・モジュールに送出するようにさらに構成され、
前記仮想ブロック・サービス・モジュールは、前記読み出し・書き込み制御モジュールのビュー情報に従って、前記読み出し・書き込み制御モジュールのルーティング情報を決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように特に構成される。
【００２２】
第２の態様の第８の可能な実現形態を参照して、第９の可能な実現形態において、前記メタデータ・コントローラは、前記サーバ・クラスタ・システムにおける、ハードディスクリソースを有するサーバノードにおいて前記オブジェクト記憶デリゲートを配置することを決定し、前記サーバ・クラスタ・システムにおける、少ない負荷を有するサーバノードにおいて前記ＳＡＮ記憶エージェントを配置することを決定するように特に構成される。
【００２３】
第２の態様の第８の可能な実現形態を参照して、第１０の可能な実現形態において、前記メタデータ・コントローラは、前記サーバノードのハードディスクの利用可能な記憶リソースおよび前記ネットワーク記憶ノードの記憶アレイの利用可能な記憶リソースを集め、前記ハードディスクおよび前記記憶アレイの利用可能な記憶リソースを複数の記憶パーティションに分割するようにさらに構成される。
【００２４】
第３の態様に従って、本発明の実施例は、コンピュータを提供する。
【００２５】
第４の態様に従って、本発明の実施例は、コンピュータ記憶媒体を提供する。
【００２６】
本発明の実施例において、ハードディスクおよび記憶アレイの記憶リソースは複数の記憶パーティションに分割され、複数の記憶パーティションは共有記憶リソースのプールを形成し、読み出し・書き込み制御モジュールが各々の記憶パーティションに割り当てられ、共有記憶リソースのプールにおける各々の記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を記録するためにグローバルパーティション情報が生成されることが上述の技術的解決手段から分かる。このようにして、記憶要求メッセージが続いて受信されるとき、記憶要求メッセージに対応する記憶パーティションが決定でき、記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールがグローバルパーティション情報に従って決定でき、最後に、記憶要求メッセージが、決定された読み出し・書き込み制御モジュールに送信でき、それによって、読み出し・書き込み制御モジュールは記憶要求メッセージによって要求される操作を実行する。本発明の実施例は異種の記憶リソースの迅速で簡単な統合を実現し、従って、各種の記憶リソースを効率的に使用し、コストを節約し、リソースの浪費を避けることができる。
【００２７】
本発明の実施例または先行技術における技術的解決手段をより明確に説明するために、下記は、実施例または先行技術を説明するために必要な添付図面を簡単に導入する。明らかに、下記の説明における添付図面は本発明のいくつかの実施例を表わす。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施例に従う、サーバ・クラスタ・システムの概要のブロック図である。
【図２】本発明の実施例に従う、共有記憶リソースの分割を表わす概要図である。
【図３】本発明の実施例に従う、共有記憶リソースを使用するフローチャートである。
【図４】本発明の実施例に従う、共有記憶リソースを使用するもう１つのフローチャートである。
【図５】本発明の実施例に従う、共有記憶リソースを使用するもう１つのフローチャートである。
【図６】本発明の実施例に従う、サーバ・クラスタ・システムのもう１つの概要のブロック図である。
【図７】本発明の実施例に従う、コンピュータの構成図である。
【発明を実施するための形態】
【００２９】
本発明の実施例の目的、技術的解決手段、および利点をより明確にするために、以下は、本発明の実施例における添付図面を参照して、本発明の実施例における技術的解決手段を明確かつ十分に説明する。明らかに、説明された実施例は本発明の実施例のいくつかであるが全てではない。
【００３０】
さらに、この明細書における用語「および／または」は、関連付けされた対象を説明するために関連付けの関係のみを説明し、３つの関係が存在することが可能であることを表現する。例えば、Ａおよび／またはＢは次の３つの場合、Ａのみが存在する、ＡとＢの両方が存在する、Ｂのみが存在する、を表現することが可能である。さらに、この明細書における記号「／」は、この記号の前および後の関連付けされた対象が「または」の関係にあることを一般に表現する。
【００３１】
本発明の実施例によって提供される技術的解決手段において、分散コントローラは異種記憶リソースの統合を実現するためにサーバに配置され、それによって、異種の記憶および統合デバイスをさらに購入する必要なしで、異種の記憶リソースの統合および使用が実現でき、それによって、システムの価格／性能の比を向上させる。
【００３２】
本発明の実施例において、コンピューティング・リソースおよび記憶リソースが垂直に統合された後、各種の記憶リソースがそして水平に統合され、特に、異種の記憶リソースが統合および使用される。本発明の実施例において、分散記憶コントローラはサーバに配置され、各種の異種の記憶リソースは、統一された形態で記憶リソースを割り当ておよび管理するため、クラスタ共有記憶リソースのプールを形成するために使用される。この方法は、異種の記憶リソースの迅速で簡単な統合を実現でき、従って、各種の記憶リソースを効率的に使用し、コストを節約し、リソースの浪費を避けることができる。
【００３３】
本発明の実施例において言及される異種の記憶リソースは、２つまたはより多くの異なる種類の記憶デバイスを指す。具体的には、第１の種類の記憶デバイスは、ソリッド・ステート・ディスク（Solid State Disk、ＳＳＤ）、機械的ハードディスク（Hard Disk、ＨＤ）、またはハイブリッド・ハードディスク（Hybrid Hard Disk、ＨＨＤ）のようなサーバノードに組み込まれたローカル・ハードディスクを指し、第２の種類の記憶デバイスは、ネットワーク記憶ノードを指し、ここで、ネットワーク記憶ノードは、ストレージ・エリア・ネットワーク（Storage Area Network、ＳＡＮ）記憶デバイスとすることが可能であり、ネットワーク接続ストレージ（Network Attached Storage、ＮＡＳ）記憶デバイスとすることも可能であり、ネットワーク記憶ノードはサーバの外部ハードウェアデバイスであるが、サーバに組み込まれたデバイスではない。
【００３４】
図１は、本発明の実施例に従う、サーバ・クラスタ・システムの構成図である。サーバ・クラスタ・システムは、ネットワーク層を使用することによって、アプリケーションクライアントまたは記憶管理センターと通信する。サーバ・クラスタ・システムは、サーバノードおよびネットワーク記憶ノードを含み（この実施例は例としてＳＡＮ記憶デバイスを使用する）、１つまたはより多くのサーバノードおよび１つまたはより多くのネットワーク記憶ノードが存在することが可能であり、この実施例は例として２個のＳＡＮ記憶ノードを使用する。各々のサーバノードの物理デバイスは、ＣＰＵ、メモリ、ネットワーク、ハードディスク、等を含み、ネットワーク記憶ノードの物理デバイスは、記憶アレイおよび記憶アレイのコントローラを含む。この実施例において、サーバ・クラスタ・システムに接続されるアプリケーションプログラムのためのコンピューティング・リソースを提供するために使用される、サーバノードのＣＰＵおよびメモリのような物理デバイスは、サーバ・クラスタ・システムのコンピューティング・リソースと集合的に呼ばれ、コンピューティング層を形成する基礎を提供し、記憶リソース層に存在するサーバノードのハードディスクおよびネットワーク記憶ノードの記憶アレイは、サーバ・クラスタ・システムの記憶リソースと集合的に呼ばれる。
【００３５】
サーバ・クラスタ・システムは、使用のために異なるアプリケーションプログラムにコンピューティング・リソースを外部的に提供するために使用される。例えば、ウェブアプリケーションまたはＨＡＤＯＯＰ分散クラスタシステムはサーバ・クラスタ・システムにおいて動作することが可能である。サーバ・クラスタ・システムのコンピューティング・リソースは、複数の仮想マシンにさらに分離されることが可能であり、異なるアプリケーションプログラムは各々の仮想マシンにおいて動作し、または複数の仮想マシンは仮想マシンクラスタを形成して同じアプリケーションプログラムのためにサービスを提供する。この実施例は具体的な実現形式に限定を課さない。アプリケーションプログラムがサーバ・クラスタ・システムにおいて動作するとき、アプリケーションプログラムの関連するデータはサーバ・クラスタ・システムの記憶リソースにおいて記憶され、すなわち、サーバノードのハードディスクまたはＳＡＮノードの記憶アレイに記憶されることが可能であり、またはサーバノードのハードディスクおよびＳＡＮノードの記憶アレイの両方に記憶されることが可能である。
【００３６】
本発明のこの実施例におけるサーバ・クラスタ・システムは分散記憶コントローラをさらに動作させ、ここで、分散記憶コントローラは、サーバノードのハードディスクおよび（ＳＡＮのような）ネットワーク記憶ノードによって提供される記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成され、ここで、複数の記憶パーティションはサーバ・クラスタ・システムの共有記憶リソースのプールを形成し、それによって、サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムは共有記憶リソースのプールから分散記憶リソースのブロックを取得し、分散記憶リソースブロックを使用することが可能であり、それによって、記憶リソース、さらに記憶の分散の、より高い利用を保証し、記憶リソースの読み出し・書き込みの効率を向上させる。本発明のこの実施例において、分散記憶コントローラは、サーバのハードウェアデバイスにインストールされたソフトウェアモジュールを使用することによって実現され、従って、記憶制御デバイスとして追加のハードウェアデバイスを購入することを避けることができる。この解決手段はより経済的でコスト節約である。
【００３７】
本発明のこの実施例において説明される分散記憶コントローラは、各々のサーバノードにおいて動作する記憶制御機能モジュールのための一般的な用語であり、解決手段によって提供される分散記憶コントローラは異なる機能モジュールを含むことが可能である。しかし、実際の配置の間、各々のサーバノードは、サーバノードの機能および配置ポリシーに従って分散記憶コントローラの異なる機能モジュールを動作させることが可能である。すなわち、サーバ・クラスタ・システムの配置ポリシーに従って、分散記憶コントローラの異なる機能モジュールは、異なるサーバノードにおいて動作することが可能であり、各々のサーバノードは分散記憶コントローラの全ての機能モジュールを動作させることが可能であり、または分散記憶コントローラのいくつかの機能モジュールを動作させることが可能である。具体的な配置の形態は、以下で詳細に説明される。
【００３８】
分散記憶コントローラは、サーバ・クラスタ・システムのコンピューティング・リソースのためのデータ・アクセス・インタフェースを提供し、サーバ・クラスタ・システムの共有記憶リソースにおける管理および読み出し・書き込み制御を実行するように主に構成される。
【００３９】
具体的には、分散記憶コントローラは、次のモジュールに機能的に分割されることが可能である。
サーバノードのローカル・ハードディスクの記憶リソースおよびネットワーク記憶ノードの記憶アレイの記憶リソースを取得し、サーバノードの記憶リソースおよびネットワーク記憶ノードの記憶リソースを複数の記憶パーティション（partition）に分割し、各々の記憶パーティションに記憶パーティション識別子を割り当て、そして複数の記憶パーティションを使用することによって共有記憶リソースのプールを形成するように構成され、それによって、サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムが共有記憶リソースを使用する、メタデータ・コントローラＭＤＣ。
【００４０】
具体的には、ＭＤＣは、サーバノードのハードディスクリソースおよびネットワーク記憶ノードの記憶アレイにおいてヘルスチェックをまず実行し、その利用可能な記憶リソースを収集して共有記憶リソースのプールを形成することが可能である。パーティション分割の間、ＭＤＣは、リソースを同じサイズの記憶パーティションに分割すること、例えば１０ＧＢ単位での分割、が可能である。ＭＤＣによって収集される記憶リソースについての情報は、各々のハードディスクの容量およびＩＤ、各々のハードディスクが配置されたサーバのＩＤ、各々の記憶アレイに含まれる各々の論理記憶ユニットＬＵＮの容量およびＩＤ、および各々のＬＵＮが配置されたネットワーク記憶ノードのＩＤを含むことが可能である。
【００４１】
ＭＤＣによって収集される記憶リソースについての情報は、例えば次の通りである。
Ｄｉｓｋ ＩＤ＝１，Ｄｉｓｋ Ｃａｐａｃｉｔｙ＝５０ＧＢ，Ｓｅｒｖｅｒ ＩＤ＝１，
Ｄｉｓｋ ＩＤ＝２，Ｄｉｓｋ Ｃａｐａｃｉｔｙ＝５０ＧＢ，Ｓｅｒｖｅｒ ＩＤ＝１，
Ｄｉｓｋ ＩＤ＝３，Ｄｉｓｋ Ｃａｐａｃｉｔｙ＝５０ＧＢ，Ｓｅｒｖｅｒ ＩＤ＝２，
ＬＵＮ＝１，ＬＵＮ Ｃａｐａｃｉｔｙ＝５０ＧＢ，ＳＡＮ ＩＤ＝１，
ＬＵＮ＝２，ＬＵＮ Ｃａｐａｃｉｔｙ＝５０ＧＢ，ＳＡＮ ＩＤ＝１，
ＬＵＮ＝３，ＬＵＮ Ｃａｐａｃｉｔｙ＝５０ＧＢ，ＳＡＮ ＩＤ＝１
【００４２】
記憶リソースについての上述の情報を取集した後、ＭＤＣは、Ｄｉｓｋ１〜３およびＬＵＮ１〜３の記憶リソースを複数の記憶パーティションに分割し、ここで、記憶パーティションはサイズが等しいことが可能であり、またはサイズが等しくないことが可能である。例えば、記憶リソースは１０ＧＢ単位で等しく分割され、ＤＩＳＫおよびＬＵＮの記憶リソースは３０個の記憶パーティションに分割され、ここで、各々の記憶パーティションのサイズは１０ＧＢであり、記憶パーティションのパーティション識別子は１〜３０、すなわち、Ｐ１〜Ｐ３０である。ＭＤＣは、記憶パーディションＰ１〜Ｐ３０を使用することによって共有記憶リソースのプールを形成し、ここで、記憶パーティションＰ１〜Ｐ１５は、サーバノードに組み込まれたハードディスクの記憶リソースを含み、記憶パーティションＰ１６〜Ｐ３０は、ＳＡＮノードの記憶アレイの記憶リソースを含む。すなわち、共有記憶リソースは２種類の記憶パーティションを含み、ここで、第１の種類の記憶パーティションはＰ１〜Ｐ１５であり、第２の種類の記憶パーティションはＰ１６〜Ｐ３０である。
【００４３】
分散記憶コントローラは読み出し・書き込み制御モジュールをさらに含み、ここで、この実施例における読み出し・書き込み制御モジュールはオブジェクト記憶デリゲート（Object Storage Delegate、ＯＳＤ）およびＳＡＮ記憶エージェント（SAN Storage Agent、ＳＳＡ）を含む。ＯＳＤは、サーバノードに組み込まれたハードディスクの記憶リソースにおける読み出し・書き込み制御を実行し、すなわち、サーバノードのローカル・ハードディスクにおけるデータ記憶およびサーバノードのローカル・ハードディスクからのデータ取得を実現するように構成され、例えば、この実施例においてＯＳＤは記憶パーティションＰ１〜Ｐ１５における読み出し・書き込み制御を実行する。ＳＳＡはＳＡＮノードの記憶アレイの記憶リソースにおける読み出し・書き込み制御を実行し、すなわち、ＳＡＮノードの記憶アレイにおけるデータ記憶およびＳＡＮノードの記憶アレイからのデータ取得を実現し、例えば、この実施例においてＳＳＡは記憶パーティションＰ１６〜Ｐ３０における読み出し・書き込み制御を実行する。ＯＳＤおよびＳＳＡの両方は、分散記憶コントローラの機能モジュールであり、サーバ・クラスタ・システムの記憶リソースについての情報を収集した後、ＭＤＣは、記憶リソースの配置状態に従って、サーバ・クラスタ・システムにおいてＯＳＤおよびＳＳＡをどのように配置するかをさらに決定することが可能である。具体的には、ＭＤＣは、サーバ・クラスタ・システムにおける、ローカル・ハードディスクを有する各々のサーバノードにおいてＯＳＤを動作させることが可能であり、ＭＤＣは、サーバ・クラスタ・システムにおける各々のサーバノードにおいてＳＳＡを動作させることが可能であり、各々のサーバノードの負荷状態に従って、少ない負荷を有するサーバノードにおいてＳＳＡを配置することも可能である。例えば、ＭＤＣは、統一された形態で、全てのサーバノードにおいてコンピューティング・リソースの負荷状態を計算し、各々のＳＡＮ記憶ノードの記憶アレイの容量および負荷に従って、大域的なＳＳＡ配置情報を生成することが可能である。この実施例において、例えば、ＭＤＣは、サーバノード１においてＯＳＤ１を動作させ、サーバノード２においてＯＳＤ２を動作させ、サーバノード２においてＳＳＡ１を動作させる。
【００４４】
ＯＳＤおよびＳＳＡの配置状態を決定した後、ＭＤＣはＯＳＤビュー情報およびＳＳＡビュー情報をさらに記録することが可能である。ＯＳＤビュー情報は、ＯＳＤが対応して配置されたサーバを含み、これはＯＳＤのルーティング情報を示すために使用され、さらに、ＯＳＤビューは、各々のＯＳＤ、各々のＯＳＤに対応するステータス、および各々のＯＳＤによって対応して管理されるＤＩＳＫをさらに含むことが可能である。ＳＳＡビュー情報は、ＳＳＡが対応して配置されたサーバを含み、これはＳＳＡのルーティング情報を示すために使用され、さらに、ＳＳＡビュー情報は、各々のＳＳＡによって対応して管理される、ＳＳＡ記憶アレイの、各々のＳＳＡおよびＬＵＮのステータスをさらに含む。例えば、次の表１および表２はそれぞれＯＳＤビュー情報およびＳＳＡビュー情報を表わす。
【００４５】
【表１】
0006019513.tif 000002
【００４６】
【表２】
0006019513.tif 000003
【００４７】
上述の表１および表２はそれぞれＯＳＤビュー情報およびＳＳＡビュー情報を記述し、この技術分野の当業者は、また、上述の表１および表２を１つの読み出し・書き込み制御モジュールのビュー情報に結合することが可能である。
【００４８】
記憶リソースを記憶パーティションに分割し、読み出し・書き込み制御モジュールの配置を決定した後、ＭＤＣは、各々の記憶パーティションについての対応する読み出し・書き込み制御モジュールをさらに構成定義することが可能である。割り当ての過程は、比較的柔軟とすることが可能であり、記憶パーティションの分割状態および実際の動作負荷に従ってＭＤＣによって決定されることが可能である。例えば、記憶パーティションＰ１〜１０はサーバノード１において対応して配置され、サーバノード１において動作するＯＳＤ１はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たし、記憶パーティションＰ１１〜２０はサーバノード２において対応して配置され、サーバノード２において動作するＯＳＤ２はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たし、記憶パーティションＰ２１〜３０はサーバノード２において対応して配置され、サーバノード２において動作するＳＳＡ１はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たす。
【００４９】
さらに、ＭＤＣは、グローバルパーティション情報をさらに生成することが可能であり（グローバルパーティション情報テーブルは、本発明のこの実施例において例として使用される）、ここで、グローバルパーティション情報テーブルはサーバ・クラスタ・システムにおいて記憶パーティションの分散状態を記録する。図２および表３に表わされているように、グローバルパーティション情報テーブルは、各々の記憶パーティションに対応する読み出し・書き込み制御モジュール（ＯＳＤまたはＳＳＡ）を記録する。グローバルパーティション情報テーブルは各々の記憶パーティションに対応するソース記憶デバイスについての情報、例えば、磁気ディスク番号または物理アドレス情報をさらに記録することが可能である。
【００５０】
表３に表わされているように、Ｐ１に対応する読み出し・書き込み制御モジュールはＯＳＤ１であり、Ｐ１に対応するソース記憶ユニットはＳＥＲＶＥＲ１におけるＤＩＳＫ１であり、Ｐ１に対応するソース物理アドレスは１００〜１９９である。
【００５１】
【表３】
0006019513.tif 000004
【００５２】
分散記憶コントローラは、仮想ブロックサービスＶＢＳをさらに含む。記憶パーティションおよび読み出し・書き込み制御モジュールの配置を完了した後、ＭＤＣは、上述のグローバルパーティション情報テーブルおよび読み出し・書き込み制御モジュールのビュー情報をＶＢＳにさらに送出することが可能である。ＶＢＳはＭＤＣによって送出された情報に従ってＩ／Ｏビューを取得し、ここで、Ｉ／Ｏビューはグローバルパーティション情報テーブルの下位テーブルであり、各々の記憶パーティションに対応する実際の読み出し・書き込み制御モジュールを示すために使用され、記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を含む。Ｉ／ＯビューはＭＤＣによってＶＢＳに直接に送出されることが可能であり、ＭＤＣモジュールによって送出されるグローバルパーティション情報テーブルに従ってＶＢＳによって生成されることも可能である。
【００５３】
ＶＢＳはサーバ・クラスタ・システムにおける各々のサーバノードにおいて動作することが可能であり、記憶ドライバ層として、サーバ・クラスタ・システムのアプリケーションモジュールのためのブロック・アクセス・インタフェース、例えば、ＳＣＳＩに基づくブロック・デバイス・アクセス・インタフェースを提供するように構成される。上位層のアプリケーションによって送出されるデータ読み出し・書き込み要求を受信した後、ＶＢＳはデータ読み出し・書き込み要求に従って読み出され書き込まれる必要がある記憶パーティションを決定し、Ｉ／Ｏビューのビュー規則に従って現在のデータ読み出し・書き込み要求によって要求された記憶パーティションに対応する読み出し・書き込み制御モジュール（ＯＳＤおよびＳＳＡ）を決定し、対応する読み出し・書き込み制御モジュールに読み出し・書き込みデータ要求を送出してデータの読み出しおよび書き込みを完了する。
【００５４】
具体的には、ＶＢＳはグローバル・メタデータの管理をさらにサポートすることが可能であり、ここで、グローバル・メタデータは、サーバ・クラスタ・システムにおける共有記憶リソースのプールにおける記憶パーティションの大域的な使用状態、および、各々の記憶パーティションのメタデータを記録する。大域的な使用状態は、占有された記憶パーティションについての情報および空きの記憶パーティションについての情報を含む。各々の記憶パーティションのメタデータは各々の記憶パーティションの割り当て状態を示すために使用される。本発明のこの実施例において、記憶パーティションはブロックデータの記憶割り当ての形態で割り当てられる。すなわち、各々の記憶パーティションはデータブロック単位で使用され、記憶パーティションの使用は、読み出し、書き込み、割り当て、等を含む。例えば、記憶パーティションがユーザボリュームに割り当てられるとき、データブロックは割り当てのための単位として使用される。例えば、本発明のこの実施例において、各々の記憶パーティションはサイズで１０ＧＢであり、１０ＧＢの記憶パーティションは１０２４０個のデータブロック（Block）に等しく分割されることが可能である。データが各々の記憶パーティションから読み出される、またはデータが各々の記憶パーティションに書き込まれるとき、データブロックは読み出しおよび書き込みのための単位として使用される。従って、各々の記憶パーティションのメタデータは、具体的には、各々の記憶パーティションに割り当てられたＢｌｏｃｋ ＩＤとの間の対応関係を含み、ここで、複数のデータブロックが各々の記憶パーティションに割り当てられる。データブロックは統一サイズとすることが可能であり、またはサイズが制限されないことが可能である。本発明のこの実施例は、各々のデータブロックのサイズが１ＭＢである例を使用する。さらに本発明のこの実施例において、各々のデータブロックのＩＤはデータブロックに対応するユーザボリュームのＩＤを含むことが可能であり、またはデータブロックに対応するユーザボリュームのＩＤおよび論理ブロックアドレス（Logical Block Address、ＬＢＡ）を含むことが可能である。
【００５５】
各々の記憶パーティションのメタデータは、例えば、表４に表わされている。
【００５６】
【表４】
0006019513.tif 000005
【００５７】
記憶パーティションと割り当てられたデータブロックとの間の対応関係はＫｅｙ−Ｖａｌｕｅインデックス形式とすることが可能であり、ここで、データブロックのＩＤはＫｅｙ値である。例えば、Ｋｅｙ値はユーザボリュームの識別子およびデータブロックの論理ブロックアドレスに関し、記憶パーティションのＩＤはＶａｌｕｅ値である。Ｋｅｙ−Ｖａｌｕｅインデック形式が使用されるならば、ＶＢＳは上述の表４を維持することなくアルゴリズムを使用することによって対応関係を直接に決定することも可能であることに注意すべきである。開始されるとき、ＶＢＳはサーバノードのハードディスクおよびＳＡＮノードの記憶アレイの磁気ディスクを横断することによって記憶リソースの割り当て情報を取得し、ＭＤＣによって送出されたグローバルパーティション情報テーブルに従って記憶されたメタデータを初期化することが可能である。
【００５８】
分散記憶コントローラは読み出し・書き込み制御モジュール、例えば、サーバノードのハードディスクリソースにおける読み出し・書き込み制御を実行するＯＳＤ、およびネットワーク記憶ノードの記憶アレイの記憶リソースにおける読み出し・書き込み制御を実行するＳＳＡをさらに含む。
【００５９】
具体的には、ＯＳＤは、ＶＢＳから読み出し・書き込みコマンドを主に受信し、サーバノードのハードディスクにおけるデータ記憶およびサーバノードのハードディスクからのデータ取得を完了する。ＳＳＡは、ＶＢＳから読み出し・書き込みコマンドを主に受信し、ＳＡＮノードのハードディスクにおけるデータ記憶およびＳＡＮノードのハードディスクからのデータ取得を完了する。ＳＳＡはホストにおけるＳＡＮデバイスのエージェントを実現するように構成される。ＳＳＡにおいて、各々の物理ＳＡＮデバイスの記憶情報についてビューがセットアップされ、各々の物理ＳＡＮ／ＮＡＳデバイスへのアクセスはＳＳＡのエージェントを使用することによって実行され、ｉＳＣＳＩインタフェース機能がＳＳＡに追加される。
【００６０】
さらに、統一物理アドレスが共有記憶リソースのプールにおける記憶パーティションに割り当てられるならば、ＳＳＡは統一物理アドレスとＳＡＮノードにおける元のＬＵＮアドレスの間の対応関係をさらに維持することが可能であり、ここで、ＳＳＡは対応関係に従って、読み出し・書き込み要求に対応する元のＬＵＮのアドレスをさらに決定することが可能である。
【００６１】
上述のサーバ・クラスタ・システムは分散記憶コントローラを動作させ、ここで、分散記憶コントローラにおけるＭＤＣ、ＶＢＳ、ＯＳＤ、およびＳＳＡは、異種の記憶リソースを統合および使用し、各種の異種の記憶リソースを使用することによってクラスタ共有リソースのプールを形成し、統一された形態で全ての記憶リソースを割り当ておよび管理することができ、それによって、記憶リソースの利用を向上させる。さらに、複数の記憶パーティションは同時に読み出されまたは書き込まれることができ、それによって、読み出し・書き込みの性能を向上させ、システムの関与率を増加させる。
【００６２】
図１への参照とともに、図３は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザボリュームを生成する処理過程である。
【００６３】
Ｓ３０１：サーバ・クラスタ・システムにおけるサーバノードに配置されたＶＢＳは、アプリケーション側によって送信されたユーザボリューム生成コマンドを受信する。
【００６４】
具体的には、サーバ・クラスタ・システムにおいて動作するアプリケーション側のアプリケーションプログラム（例えば、仮想マシン）はユーザボリューム生成コマンドを開始し、ここで、コマンドは、アプリケーションマネージャによって、サーバ・クラスタ・システムにおけるいずれかのサーバノードに配置されたＶＢＳに転送される（好ましい形態において、サーバノードにおけるＶＢＳはユーザボリューム生成コマンドを受信し、ここで、コマンドを開始する仮想マシンのコンピューティング・リソースはサーバノードに配置される）。好ましくは、本発明のこの実施例におけるサーバ・クラスタ・システムが一次的なおよび二次的なＶＢＳの機能をさらに提供するならば、ユーザボリューム生成コマンドを受信した後、ＶＢＳは、ＶＢＳがサーバ・クラスタ・システムにおける一次的なＶＢＳであるかどうかをさらに決定することが可能である。そうでないならば、ＶＢＳはユーザボリューム生成コマンドを一次的なＶＢＳに転送する。実際、ＶＢＳの配置は比較的柔軟である。サーバ・クラスタ・システムにおける全てのサーバノードにインストールされたＶＢＳは等しい順位とすることが可能であり、この場合、全てのＶＢＳの構成定義および機能は同一である。サーバ・クラスタ・システムにおける１つのＶＢＳが一次的なＶＢＳとして選択され、他のＶＢＳが二次的なＶＢＳとして使用されることも可能である。一次的なＶＢＳは、ユーザボリューム／データブロックを割り当て、記憶パーティションのメタデータを管理するように構成され、二次的なＶＢＳは、一次的なＶＢＳにおけるメタデータを問い合わせ、一次的なＶＢＳのコマンドに従って操作を実行するように構成される。本発明のこの実施例は、サーバ・クラスタ・システムが一次的なおよび二次的なＶＢＳを実現する例を使用する。
【００６５】
Ｓ３０２：一次的なＶＢＳは、ユーザボリューム生成コマンドによって示されるボリュームのサイズ情報に従って、グローバル・メタデータを問い合わせ、共有記憶リソースのプールにおける残りのリソースが要求条件を満たすかどうかを決定し、満たすならば、ユーザボリュームを生成し、すなわち、ユーザボリュームのボリューム識別子（ＩＤ）を決定し、ユーザボリュームに初期記憶パーティションを割り当て、初期記憶パーティションのメタデータにおいて、ユーザボリュームの識別子、および、割り当てられた初期記憶パーティションについての情報を記録する。
【００６６】
具体的には、ユーザボリューム生成コマンドがユーザボリュームのＩＤを指定するならば、一次的なＶＢＳはユーザボリューム生成コマンドにおけるユーザボリュームのＩＤを直接に使用し、ユーザボリューム生成コマンドがユーザボリュームのＩＤを指定しないならば、ＶＢＳはユーザボリュームにユーザボリュームのＩＤを割り当てる。
【００６７】
ユーザボリュームを生成する過程において、ＶＢＳは、ユーザボリュームに初期記憶パーティションをさらに割り当てることが可能であり、すなわち、いくつかの記憶パーティションがユーザボリュームの初期記憶パーティションとして空きの記憶パーティションから選択される。ユーザボリュームの初期記憶リソースのサイズは、ユーザボリューム生成コマンドによって指定されるユーザボリュームの容量に従って柔軟に割り当てられることが可能である。ユーザボリューム生成コマンドによって指定されるユーザボリュームの全体の容量は、初期記憶パーティションの容量として使用されることが可能である。例えば、ユーザボリューム生成コマンドは５ＧＢのユーザボリュームを生成するように要求し、ＶＢＳは初期記憶パーティションとしてユーザボリュームに全体の５ＧＢを割り当てることが可能である。すなわち、５ＧＢは１ＭＢのサイズを有する５１２０個のデータブロックに分割され、５１２０個のデータブロックは分散された形態で記憶パーティションＰ１〜Ｐ３０において配置され、この場合、初期記憶パーティションのサイズは５ＧＢである。ＶＢＳは、薄い割り当て形態を使用して、共有記憶リソースのプールの実際の状態に従ってユーザボリュームに記憶リソースの一部を割り当てる、例えば、ユーザボリュームに１ＧＢの初期記憶リソースを割り当てることも可能である。１ＧＢの初期記憶リソースは１ＭＢのサイズを有する１０２４個のデータブロックに分割され、１０２４個のデータブロックは分散された形態で記憶パーティションＰ１〜Ｐ３０において配置され、この場合、初期記憶パーティションのサイズは１ＧＢである。
【００６８】
ＶＢＳは、ユーザボリュームのＩＤ、および、グローバル・メタデータにおける各々の初期記憶パーティションのメタデータ情報において割り当てられた初期記憶パーティションについての情報を記録する。
【００６９】
ユーザボリュームに初期記憶パーティションを割り当てるとき、ＶＢＳは、また、対応するソース物理アドレスを各々のユーザボリュームの各々のデータブロックに割り当てる。
【００７０】
Ｓ３０３：一次的なＶＢＳはユーザボリュームをマウントし、マウントが成功した後、仮想記憶デバイスを生成する。
【００７１】
Ｓ３０４：一次的なＶＢＳは仮想記憶デバイスについての情報をアプリケーション側に返信する。
【００７２】
Ｓ３０５：一次的なＶＢＳはグローバル・メタデータをサーバ・クラスタ・システムにおけるＭＤＣに返信し、それによって、ＭＤＣはグローバル・メタデータに従ってグローバルパーティション情報テーブルを更新する。
【００７３】
Ｓ３０５は任意選択のステップであり、柔軟な順序で実現されることが可能である。
【００７４】
図１への参照とともに、図４は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザがデータを書き込む処理過程である。
【００７５】
Ｓ４０１：サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムがデータ書き込み操作を開始した後、サーバ・クラスタ・システムにおけるＶＢＳはデータ書き込み操作要求を受信する。
【００７６】
データ書き込み操作要求は、ファイル名および書き込まれるデータを搬送する。
【００７７】
Ｓ４０２：ＶＢＳは、データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのＩＤを決定する。
【００７８】
ＶＢＳは、書き込まれるデータに従って、書き込まれるデータのサイズをさらに計算することが可能である。
【００７９】
ＶＢＳは書き込まれるデータにＬＢＡを割り当てる（このステップにおいてＬＢＡを割り当てることは任意選択であり、このステップにおいてＶＢＳは書き込まれるデータにＬＢＡを割り当てないことも可能である）。
【００８０】
例えば、ＶＢＳは、現在の書き込み操作について、Ｖｏｌｕｍｅ ＩＤ １、Ｓｉｚｅ＝１ＧＢ、ＬＢＡ：００１×−２２１×を決定する。
【００８１】
Ｓ４０３：ＶＢＳは書き込まれるデータを複数のデータブロックに区分し、各々のデータブロックにＬＢＡを割り当てる。
【００８２】
ＶＢＳは単位に従って書き込まれるデータを等しく区分することが可能であり、例えば、データを１ＭＢに従って区分し、すなわち、毎回、各々の記憶パーティションの使用単位に従ってデータを区分する。この実施例において、ＶＢＳは１ＧＢのサイズを有する書き込まれるデータを１０２４個のデータブロックに区分し、ここで、各々のデータブロックのサイズは１ＭＢである。残りの書き込まれるデータが１ＭＢより小さいならば、最後のデータブロックのサイズは残りの書き込まれるデータの実際のサイズである。ＶＢＳは、各々のデータブロックに、対応するＬＢＡをさらに割り当てる。
【００８３】
例えば、
Ｂｌｏｃｋ１ ＬＢＡ：００００−１０２４
Ｂｌｏｃｋ２ ＬＢＡ：１０２５−２０４８
・・・
【００８４】
Ｓ４０４：ＶＢＳは各々のデータブロックについて対応する記憶パーティションを決定する。
【００８５】
具体的には、ＶＢＳは、まず、各々の書き込まれるデータブロックの論理ブロックアドレス（ＬＢＡ）を決定し、そして、ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを各々のデータブロックのＫｅｙ値に結合し、ハッシュアルゴリズムのような分散記憶アルゴリズムに従って、各々のデータブロックに対応する記憶パーティションを決定する。ここで、ＬＢＡは元のＬＢＡが処理された後の値とすることが可能であり、例えば、Ｂｌｏｃｋ１に対応するＬＢＡ ００００−１０２４は１に対応し、Ｂｌｏｃｋ２に対応するＬＢＡ １０２５−２０４８は２に対応する。
【００８６】
Ｓ４０５：ＶＢＳは複数のデータブロック書き込みコマンドを生成し、ここで、各々のデータブロックは１つのデータブロック書き込みコマンドに対応し、各々のデータブロック書き込みコマンドは書き込まれるデータブロック、および書き込まれるデータブロックのＩＤを搬送する（例えば、Ｂｌｏｃｋ ＩＤはユーザボリュームのＩＤおよび書き込まれるデータブロックのＬＢＡを含む）。
【００８７】
このステップは続くステップが完了した後に実行されることも可能であり、具体的な実現は時間的な順序を限定しない。
【００８８】
Ｓ４０６：ＶＢＳは、各々のデータブロックに対応する記憶パーティションに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【００８９】
具体的には、ＶＢＳは、グローバルパーティション情報テーブルに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【００９０】
Ｓ４０７：ＶＢＳは、各々のデータブロック書き込みコマンドを、各々のデータブロックに対応する読み出し・書き込み制御モジュールに送信し、それによって、各々のデータブロックに対応する読み出し・書き込み制御モジュールは各々のデータブロックを記憶ハードウェアリソースに書き込む。
【００９１】
具体的には、ＯＳＤがデータブロック書き込みコマンドを受信したならば、ＯＳＤは、書き込まれるデータブロックのＩＤに従って、ＯＳＤによって記憶されたデータブロックのメタデータを問い合わせ、データブロックのＩＤについてＯＳＤによって実行される操作が第１の操作であるかどうかを決定する。それが第１の操作であるならば、ＯＳＤは実際の物理アドレスを書き込まれるデータブロックに割り当て、書き込まれるデータブロックを物理アドレスに対応する磁気ディスクに書き込み、ＯＳＤによって記憶されたデータブロックのメタデータを更新し、書き込まれるデータブロックのＩＤと物理アドレスの間の対応関係を記録する。それが第１の操作でないならば、ＯＳＤは、書き込まれるデータブロックのＩＤに従って、ＯＳＤによって記憶されたデータブロックのメタデータを問い合わせ、書き込まれるデータブロックに対応する物理アドレスを決定し、書き込まれるデータブロックを問い合わせによって得られた物理アドレスに書き込む。
【００９２】
ＳＳＡがデータブロック書き込みコマンドを受信したならば、ＳＳＡは、書き込まれるデータブロックのＩＤに従って、ＳＳＡによって記憶されたデータブロックのメタデータを問い合わせ、データブロックのＩＤについてＳＳＡによって実行される操作が第１の操作であるかどうかを決定する。それが第１の操作であるならば、ＳＳＡは実際のＳＡＮ記憶ノードの記憶アレイにおける論理アドレスすなわちＬＵＮアドレスを書き込まれるデータブロックに割り当て、書き込まれるデータブロックをＬＵＮアドレスに対応する磁気ディスクに書き込み、ＳＳＡによって記憶されたデータブロックのメタデータを更新し、書き込まれるデータブロックのＩＤとＬＵＮアドレスの間の対応関係を記録する。それが第１の操作でないならば、ＯＳＤは、書き込まれるデータブロックのＩＤに従って、ＯＳＤによって記憶されたデータブロックのメタデータを問い合わせ、書き込まれるデータブロックに対応するＬＵＮアドレスを決定し、書き込まれるデータブロックを問い合わせによって得られたＬＵＮアドレスに書き込む。
【００９３】
書き込み操作の間、ＯＳＤまたはＳＳＡは、まず、データブロックをローカルキャッシュ層に書き込む、すなわち、応答メッセージを返信することが可能であり、それによって記憶の効率を向上させる。
【００９４】
図１への参照とともに、図５は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザがデータを読み出す処理過程である。
【００９５】
Ｓ５０１：サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムがデータ読み出し操作を開始した後、サーバ・クラスタ・システムにおけるＶＢＳはデータ読み出し操作要求を受信する。
【００９６】
データ読み出し操作要求は、読み出されるデータのファイル名およびオフセット情報を搬送する。
【００９７】
Ｓ５０２：ＶＢＳは、データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのＩＤを決定し、読み出されるデータのオフセット情報に従って、読み出されるデータのＬＢＡを決定する。
【００９８】
Ｓ５０３：ＶＢＳは、ユーザボリュームのＩＤおよび読み出されるデータのＬＢＡに従って、複数の読み出されるデータブロックを決定する。
【００９９】
具体的には、各々の読み出されるデータブロックのＩＤはユーザボリュームおよび各々のデータブロックのＬＢＡを含み、ここで、各々のデータブロックのＬＢＡは読み出されるデータの量および読み出されるデータのオフセットに従って決定されることが可能である。
【０１００】
Ｓ５０４：ＶＢＳは各々の読み出されるデータブロックについて対応する記憶パーティションを決定する。
【０１０１】
具体的には、ＶＢＳは、まず、各々の読み出されるデータブロックの論理ブロックアドレス（ＬＢＡ）を決定し、そして、ユーザボリュームのＩＤおよび各々のデータブロックのＬＢＡを各々のデータブロックのｋｅｙ値に結合し、ハッシュアルゴリズムのような分散記憶アルゴリズムに従って、各々のデータブロックに対応する記憶パーティションを決定する。
【０１０２】
Ｓ５０５：ＶＢＳは複数のデータブロック読み出しコマンドを生成し、ここで、各々のデータブロックは１つのデータブロック読み出しコマンドに対応し、各々のデータブロック読み出しコマンドは読み出されるデータブロックのＩＤを搬送する（例えば、Ｂｌｏｃｋ ＩＤはユーザボリュームのＩＤおよび読み出されるデータブロックのＬＢＡを含む）。
【０１０３】
Ｓ５０６：ＶＢＳは、各々のデータブロックに対応する記憶パーティションに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【０１０４】
具体的には、ＶＢＳは、グローバルパーティション情報テーブルに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【０１０５】
Ｓ５０７：ＶＢＳは、各々のデータブロック読み出しコマンドを、各々のデータブロックに対応する読み出し・書き込み制御モジュールに送信し、それによって、各々のデータブロックに対応する読み出し・書き込み制御モジュールは記憶ハードウェアリソースから各々の読み出されるデータブロックを読み出す。
【０１０６】
具体的には、ＯＳＤがデータブロック読み出しコマンドを受信したならば、ＯＳＤは、読み出されるデータブロックのＩＤに従って、ＯＳＤによって記憶されたデータブロックのメタデータを問い合わせ、読み出されるデータブロックに割り当てられた実際の物理アドレスを決定し、物理アドレスに対応する磁気ディスクから読み出されるデータブロックを読み出す。
【０１０７】
ＳＳＡがデータブロック読み出しコマンドを受信したならば、ＳＳＡは、読み出されるデータブロックのＩＤに従って、ＳＳＡによって記憶されたデータブロックのメタデータを問い合わせ、読み出されるデータブロックに割り当てられた、ＳＡＮ記憶ノードの記憶アレイにおける実際の論理アドレスすなわちＬＵＮアドレスを決定し、ＬＵＮアドレスに対応する磁気ディスクから、読み出されるデータブロックを読み出す。
【０１０８】
本発明のこの実施例に従う、コンピューティング、記憶、および統合のためにクラスタシステムを使用することによって、先行技術における専用のＳＡＮの使用による複雑な操作および高いコストの問題がハードウェアに関して解決される。複数の記憶デバイスが存在することが可能であり、キャッシュが各々の記憶デバイスに配置されることが可能であり、それによって、ハードウェアに関してストレージ側におけるキャッシュの拡張能力を大きく向上させる。記憶リソースは、コンピューティング・リソースに依存せず、独立に増加および減少されることができ、それによって、システムのスケーラビリティを向上させる。システムにおける永続的な磁気ディスクおよびキャッシュリソースは共有リソースのプールに仮想化され、全てのコンピューティングによって共有され、全てのコンピューティングおよびストレージはデータの読み出しおよびデータの書き込みに参加することが可能であり、同時性の向上によってシステムの記憶性能は向上される。さらに、本発明のこの実施例に従う、コンピューティング、記憶、および統合のためのクラスタシステムは、高速データ交換ネットワークを使用して通信を実行し、従って、データ交換速度はさらに増加される。
【０１０９】
図６は、本発明の実施例に従う、サーバ・クラスタ・システムのもう１つの構成図である。サーバ・クラスタ・システムは、サーバノード１および２、およびネットワーク記憶ノード、すなわち、製造業者ＡのＳＡＮデバイスを含み、ここで、サーバノード１はハードディスク１および２を含み、サーバノード２はハードディスク３を含み、ネットワーク記憶ノードは、記憶アレイ、すなわち、ＬＵＮ１およびＬＵＮ２を含み、分散記憶コントローラはサーバノードにおいて動作し、分散記憶コントローラは、
この実施例において２つのサーバノードに配置されたメタデータ・コントローラであって、ここで、サーバノード１に配置されたメタデータ・コントローラは一次的なＭＤＣであり、サーバノード２に配置されたメタデータ・コントローラは二次的なＭＤＣであり、メタデータ・コントローラは、ハードディスクおよび記憶アレイの記憶リソースを複数の記憶パーティションに分割し、ここで、複数の記憶パーティションは共有記憶リソースのプールを形成し、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成し、ここで、グローバルパーティション情報は共有記憶リソースのプールにおける各々の記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を記録し、グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成された、メタデータ・コントローラと、
仮想ブロック・サービス・モジュールであって、ここで、ＶＢＳはこの実施例において各々のサーバノードに配置され、サービス層に向かい、記憶要求メッセージを受信し、記憶要求メッセージに対応する記憶パーティションを決定し、グローバルパーティション情報に従って、記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、決定された読み出し・書き込み制御モジュールに記憶要求メッセージを送信するように構成された、仮想ブロック・サービス・モジュールと、
ハードディスクまたはネットワーク記憶ノードに向かい、記憶要求メッセージによって要求される操作を実行するように構成された、読み出し・書き込み制御モジュールであって、この実施例における読み出し・書き込み制御モジュールは、サーバノード１に配置されたＯＳＤ１およびＯＳＤ２、および、サーバノード２に配置されたＯＳＤ３、ＳＳＡ１、およびＳＳＡ２を含み、ここで、ＯＳＤ１はハードディスク１における読み出し・書き込み制御を実行するように構成され、ＯＳＤ２はハードディスク２における読み出し・書き込み制御を実行するように構成され、ＯＳＤ３はハードディスク３における読み出し・書き込み制御を実行するように構成され、ＳＳＡ１はＬＵＮ１における読み出し・書き込み制御を実行するように構成され、ＳＳＡ２はＬＵＮ２における読み出し・書き込み制御を実行するように構成された、読み出し・書き込み制御モジュールと、を含む。
【０１１０】
メタデータ・コントローラは、サーバノードにおけるオブジェクト記憶デリゲートおよびＳＡＮ記憶エージェントの配置状態を個々に決定し、決定された配置状態に従って読み出し・書き込み制御モジュールのビュー情報を生成し、ここで、読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されたサーバノードについての情報を示すために使用され、読み出し・書き込み制御モジュールのビュー情報を仮想ブロック・サービス・モジュールに送出するようにさらに構成される。
【０１１１】
さらに、メタデータ・コントローラは、具体的には、サーバ・クラスタ・システムにおいてハードディスクリソースを有するサーバノードにオブジェクト記憶デリゲートを配置することを決定し、サーバ・クラスタ・システムにおいて少ない負荷を有するサーバノードにＳＡＮ記憶エージェントを配置することを決定するように構成される。
【０１１２】
例えば、この実施例において、メタデータ・コントローラはサーバノード２にＳＳＡ１およびＳＳＡ２を配置する。
【０１１３】
仮想ブロック・サービス・モジュールは、具体的には、読み出し・書き込み制御モジュールのビュー情報に従って読み出し・書き込み制御モジュールのルーティング情報を決定し、決定された読み出し・書き込み制御モジュールに記憶要求メッセージを送信するように構成される。
【０１１４】
図６に表わされているこの実施例において、図３から図５のいずれか１つにおいて説明された方法がさらに実行されることが可能であり、これは本発明のこの実施例において再度詳細には説明されない。
【０１１５】
図７は、本発明の実施例に従う、コンピュータの構成の概要の構成図である。本発明のこの実施例のコンピュータは、
プロセッサ７０１、メモリ７０２、システムバス７０３、および通信インタフェース７０４を含むことが可能であり、ここで、ＣＰＵ ７０１、メモリ７０２、および通信インタフェース７０４はシステムバス７０３を使用することによって接続され、相互通信を完了する。
【０１１６】
プロセッサ７０１は、シングル・コアまたはマルチ・コアの中央処理ユニット、または特定の集積回路とすることが可能であり、または本発明のこの実施例を実現する１つまたはより多くの集積回路として構成定義されることが可能である。
【０１１７】
メモリ７０２は、高速ＲＡＭメモリとすることが可能であり、または不揮発性メモリ（non-volatile memory）、例えば、少なくとも１つの磁気ディスクメモリとすることが可能である。
【０１１８】
メモリ７０２はコンピュータ実行命令７０５を記憶するように構成される。具体的には、コンピュータ実行命令７０５はプログラムコードを含むことが可能である。
【０１１９】
コンピュータが動作するとき、プロセッサ７０１はコンピュータ実行命令７０５を動作させ、本発明の実施例のうちのいずれか１つの実施例によって提供される方法を実行することが可能である。より具体的には、本発明の実施例において説明された分散記憶コントローラがコンピュータコードを使用することによって実現されるならば、コンピュータは本発明の実施例の分散記憶コントローラの機能を実行する。
【０１２０】
本発明の実施例において、「Ａに対応するＢ」は、ＢがＡと関連付けされ、ＢがＡに従って決定されることが可能であることを示すと理解すべきである。しかし、Ａに対応するＢを決定することは、ＢがＡのみに従って決定されることを意味せず、ＢはＡおよび／または他の情報に従って決定されることも可能であるとさらに理解すべきである。
【０１２１】
この技術分野の当業者は、この明細書に記載された実施例において説明された例と組み合わせて、ユニットおよびアルゴリズムのステップは、電子的なハードウェア、コンピュータソフトウェア、またはそれらの組み合わせによって実現されることが可能であることに気付くことが可能である。ハードウェアとソフトウェアの間の交換可能性を明確に説明するために、上記は、機能に従って各々の例の構成およびステップを広く説明した。機能がハードウェアによって実行されるか、またはソフトウェアによって実行されるかは、技術的解決手段の特定の適用および設計の制約条件に依存する。この技術分野の当業者は、各々の特定の適用のため、説明された機能を実現するために異なる方法を使用することが可能であるが、その実現は本発明の範囲を超えると考えるべきでない。
【０１２２】
この適用において提供される実施例において、記載されたシステムは他の形態で実現されることが可能であることを理解すべきである。例えば、説明されたシステムの実施例は単に例示である。例えば、ユニットの分割は単に論理的な機能の分割であり、実際の実現において他の分割とすることが可能である。例えば、複数のユニットまたは構成要素が他のシステムに組み合わされ、または統合されることが可能であり、またはいくつかの特徴は無視され、または実行されないことが可能である。さらに、表示された、または説明された相互の結合または直接の結合または通信接続は、いくつかのインタフェースを通して実現されることが可能である。装置間またはユニット間の間接的な結合または通信接続は、電子的、機械的、または他の形式で実現されることが可能である。
【０１２３】
別個の部分として説明されたユニットは、物理的に別個とし、または物理的に別個としないことが可能であり、ユニットとして表示された部分は、物理的なユニットとし、または物理的なユニットとしないことが可能であり、１つの位置に配置されることが可能であり、または複数のネットワークユニットに分散されることが可能である。ユニットのいくつかまたは全ては、本発明の実施例の解決手段の目的を達成するための実際の必要性に従って選択されることが可能である。
【０１２４】
さらに、本発明の実施例における機能ユニットは、１つの処理ユニットに統合されることが可能であり、またはユニットの各々は物理的に単独で存在することが可能であり、または２つまたはより多くのユニットが１つのユニットに統合される。統合されたユニットは、ハードウェアの形式で実現されることが可能であり、またはソフトウェアの機能ユニットの形式で実現されることが可能である。
【０１２５】
統合されたユニットが、ソフトウェアの機能ユニットの形式で実現され、独立の製品として販売または使用されるとき、統合されたユニットはコンピュータ読み取り可能な記憶媒体に記憶されることが可能である。そのような理解に基づいて、本質的に、本発明の技術的解決手段、または先行技術に貢献する部分、または技術的解決手段の全てまたは一部は、ソフトウェア製品の形式で実現されることが可能である。ソフトウェア製品は、記憶媒体に記憶され、本発明の実施例において説明された方法のステップの全てまたはいくつかを実行するように（パーソナルコンピュータ、サーバ、またはネットワークデバイスとすることが可能である）コンピュータデバイスに命令するためのいくつかの命令を含む。上述の記憶媒体は、ＵＳＢフラッシュドライブ、取り外し可能なハードディスク、リード・オンリ・メモリ（ＲＯＭ, Read-Only Memory）、ランダム・アクセス・メモリ（ＲＡＭ, Random Access Memory）、磁気ディスク、または光ディスクのような、プログラムコードを記憶できるどのような媒体も含む。
【０１２６】
上述した説明は、単に本発明の具体的な実施例であるが、本発明の保護範囲を限定することは意図されない。本発明において記載された技術的範囲内の、この技術分野の当業者によって容易に理解されるどのような修正または置換も本発明の保護範囲内にあるものである。従って、本発明の保護範囲は請求項の保護範囲に従うものである。
【符号の説明】
【０１２７】
７０１  プロセッサ
７０２  メモリ
７０３  システムバス
７０４  通信インタフェース
７０５  プログラム
【図１】
0006019513.tif 000006
【図２】
0006019513.tif 000007
【図３】
0006019513.tif 000008
【図４】
0006019513.tif 000009
【図５】
0006019513.tif 000010
【図６】
0006019513.tif 000011
【図７】
0006019513.tif 000012