特許第6019513号(P6019513)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲ホア▼▲ウェイ▼技術有限公司の特許一覧

特許6019513記憶リソースを共有する方法およびシステム
<>
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000006
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000007
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000008
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000009
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000010
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000011
  • 特許6019513-記憶リソースを共有する方法およびシステム 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6019513
(24)【登録日】2016年10月14日
(45)【発行日】2016年11月2日
(54)【発明の名称】記憶リソースを共有する方法およびシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20161020BHJP
   G06F 13/10 20060101ALI20161020BHJP
   G06F 3/06 20060101ALI20161020BHJP
【FI】
   G06F12/00 545A
   G06F12/00 514E
   G06F13/10 340A
   G06F13/10 330C
   G06F3/06 301Z
【請求項の数】22
【全頁数】30
(21)【出願番号】特願2015-549981(P2015-549981)
(86)(22)【出願日】2013年12月31日
(65)【公表番号】特表2016-507814(P2016-507814A)
(43)【公表日】2016年3月10日
(86)【国際出願番号】CN2013091253
(87)【国際公開番号】WO2014101896
(87)【国際公開日】20140703
【審査請求日】2015年8月13日
(31)【優先権主張番号】PCT/CN2012/088109
(32)【優先日】2012年12月31日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】504277388
【氏名又は名称】▲ホア▼▲ウェイ▼技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(74)【代理人】
【識別番号】100140534
【弁理士】
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】▲グ▼ 炯炯
(72)【発明者】
【氏名】▲ミン▼ 小勇
【審査官】 大塚 俊範
(56)【参考文献】
【文献】 特表2005−512232(JP,A)
【文献】 特開2001−337850(JP,A)
【文献】 特開2007−087102(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 3/06
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
サーバ・クラスタ・システムに適用される、記憶リソースを共有するための方法であって、
前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記方法は、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するステップであって、前記複数の記憶パーティションは共有記憶リソースのプールを形成する、ステップと、
各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当てるステップと、
グローバルパーティション情報を生成するステップであって、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録する、ステップと、
記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、
を含む方法。
【請求項2】
前記記憶要求メッセージに対応する記憶パーティションを決定するステップは、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定するステップと、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項1に記載の方法。
【請求項3】
前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするステップであって、各々の記憶パーティションのメタデータは、前記記憶パーティションのIDと、前記記憶パーティションに割り当てられたデータブロックのIDとの間の対応関係を記録する、ステップをさらに含み、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックのIDを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも1つのデータブロックに対応する記憶パーティションのIDを決定するステップ
を含む請求項2に記載の方法。
【請求項4】
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのIDおよび各々のデータブロックのLBAを使用することによって、各々のデータブロックのkey値を形成し、各々のデータブロックの前記key値に対応するvalue値を計算し、前記value値に従って各々のデータブロックに対応する記憶パーティションを決定するステップ
を含む請求項2に記載の方法。
【請求項5】
記憶要求メッセージを受信することは、データ書き込み操作要求を受信することを含み、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定するステップと、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのIDを決定するステップと、
書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにLBAを割り当てるステップと、
前記現在の書き込み操作に対応するユーザボリュームのID、および、各々の書き込まれるデータブロックのLBAに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項2または3または4に記載の方法。
【請求項6】
前記書き込まれるデータは、統一サイズの複数の書き込まれるデータブロックに分割される請求項に記載の方法。
【請求項7】
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する読み出し・書き込み制御モジュールを決定するステップと、前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、は、
前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック書き込みコマンドを生成するステップであって、各々のデータブロック書き込みコマンドは1つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのIDを搬送する、ステップと、
各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールが記憶ハードウェアリソースに各々の書き込まれるデータブロックを書き込むように、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するステップと、
を含む請求項に記載の方法。
【請求項8】
記憶要求メッセージを受信することは、データ読み出し操作要求を受信することを含み、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定するステップと、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのIDを決定するステップと、
前記読み出されるデータのオフセットに従って複数の読み出されるデータブロックのLBAを決定するステップと、
前記現在の読み出し操作に対応するユーザボリュームのID、および、各々の読み出されるデータブロックのLBAに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定するステップと、
を含む請求項2、3または4に記載の方法。
【請求項9】
統一サイズの複数の読み出されるデータブロックは、前記読み出されるデータのオフセットに従って決定される請求項に記載の方法。
【請求項10】
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する読み出し・書き込み制御モジュールを決定するステップと、前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、は、
前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック読み出しコマンドを生成するステップであって、各々のデータブロック読み出しコマンドは1つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのIDを搬送する、ステップと、
各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールが各々の読み出されるデータブロックを読み出すように、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するステップと、
を含む請求項に記載の方法。
【請求項11】
サーバ・クラスタ・システムであって、前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記サーバノードにおいて分散記憶コントローラが動作し、前記分散記憶コントローラは、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成されたメタデータ・コントローラを含み、前記複数の記憶パーティションは共有記憶リソースのプールを形成し、前記メタデータ・コントローラは、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成するように構成され、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録し、前記メタデータ・コントローラは、前記グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成され、
前記分散記憶コントローラは、
サービス層に向かい、記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように構成された前記仮想ブロック・サービス・モジュールと、
前記ハードディスクまたは前記ネットワーク記憶ノードに向かい、前記記憶要求メッセージによって要求される操作を実行するように構成された前記読み出し・書き込み制御モジュールと、
を含むサーバ・クラスタ・システム。
【請求項12】
前記読み出し・書き込み制御モジュールはオブジェクト記憶デリゲートおよびSAN記憶エージェントを含み、
前記メタデータ・コントローラは、読み出し・書き込み制御モジュールとして前記オブジェクト記憶デリゲートをローカル・ハードディスクの記憶パーティションに割り当て、読み出し・書き込み制御モジュールとして前記SAN記憶エージェントを前記記憶アレイの記憶パーティションに割り当てるように特に構成され、
前記オブジェクト記憶デリゲートは、前記記憶要求メッセージを受信し、前記記憶要求メッセージに対応する物理アドレスを決定し、前記物理アドレスに従って前記ハードディスクにおいて前記記憶要求メッセージによって要求される操作を実行するように構成され、
前記SAN記憶エージェントは、前記記憶要求メッセージを受信し、前記ネットワーク記憶ノードの、前記記憶要求メッセージに対応する論理アドレスを決定し、前記論理アドレスに従って前記記憶アレイにおいて前記記憶要求メッセージによって要求される操作を実行するように構成された請求項1に記載のシステム。
【請求項13】
前記仮想ブロック・サービス・モジュールは、前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定し、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するように構成された請求項1に記載のシステム。
【請求項14】
前記仮想ブロック・サービス・モジュールは、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするように特に構成され、各々の記憶パーティションのメタデータは、前記記憶パーティションのIDと、前記記憶パーティションに割り当てられたデータブロックのIDとの間の対応関係を記録し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックのIDを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも1つのデータブロックに対応する記憶パーティションのIDを決定するように特に構成された請求項1に記載のシステム。
【請求項15】
前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのIDおよび各々のデータブロックのLBAを使用することによって、各々のデータブロックのkey値を形成し、各々のデータブロックの前記key値に対応するvalue値を計算し、前記value値に従って各々のデータブロックに対応する記憶パーティションを決定するように特に構成された請求項1に記載のシステム。
【請求項16】
前記仮想ブロック・サービス・モジュールは、データ書き込み操作要求を受信し、前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのIDを決定し、書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにLBAを割り当て、前記現在の書き込み操作に対応するユーザボリュームのID、および、各々の書き込まれるデータブロックのLBAに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック書き込みコマンドを生成するように特に構成され、各々のデータブロック書き込みコマンドは1つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのIDを搬送し、前記仮想ブロック・サービス・モジュールは、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するように特に構成された請求項1から1のいずれか一項に記載のシステム。
【請求項17】
前記仮想ブロック・サービス・モジュールは、データ読み出し操作要求を受信するように特に構成され、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、前記仮想ブロック・サービス・モジュールは、前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのIDを決定し、前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのLBAを決定し、前記現在の読み出し操作に対応するユーザボリュームのID、および、各々の読み出されるデータブロックのLBAに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック読み出しコマンドを生成するように特に構成され、各々のデータブロック読み出しコマンドは1つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのIDを搬送し、前記仮想ブロック・サービス・モジュールは、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するように特に構成された請求項1から1のいずれか一項に記載のシステム。
【請求項18】
前記メタデータ・コントローラは、前記サーバノードにおけるオブジェクト記憶デリゲートおよびSAN記憶エージェントの配置状態を個々に決定し、前記決定された配置状態に従って前記読み出し・書き込み制御モジュールのビュー情報を生成するようにさらに構成され、前記読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されるサーバノードについての情報を示すために使用され、前記メタデータ・コントローラは、前記読み出し・書き込み制御モジュールのビュー情報を前記仮想ブロック・サービス・モジュールに送出するようにさらに構成され、
前記仮想ブロック・サービス・モジュールは、前記読み出し・書き込み制御モジュールのビュー情報に従って、前記読み出し・書き込み制御モジュールのルーティング情報を決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように特に構成された請求項1から1のいずれか一項に記載のシステム。
【請求項19】
前記メタデータ・コントローラは、前記サーバ・クラスタ・システムにおける、ハードディスクリソースを有するサーバノードにおいて前記オブジェクト記憶デリゲートを配置することを決定し、前記サーバ・クラスタ・システムにおける、少ない負荷を有するサーバノードにおいて前記SAN記憶エージェントを配置することを決定するように特に構成された請求項18に記載のシステム。
【請求項20】
前記メタデータ・コントローラは、前記サーバノードのハードディスクの利用可能な記憶リソースおよび前記ネットワーク記憶ノードの記憶アレイの利用可能な記憶リソースを集め、前記ハードディスクおよび前記記憶アレイの利用可能な記憶リソースを複数の記憶パーティションに分割するようにさらに構成された請求項18に記載のシステム。
【請求項21】
プロセッサ、メモリ、バス、および通信インタフェースを含むコンピュータであって、
前記メモリはコンピュータ実行命令を記憶するように構成され、前記プロセッサは前記バスを使用することによって前記メモリに接続され、前記コンピュータが動作するとき、前記コンピュータが、請求項1から1のいずれか一項に記載の、記憶リソースを共有するための方法を実行するように、前記プロセッサが前記メモリによって記憶されたコンピュータ実行命令を実行する、コンピュータ。
【請求項22】
コンピュータ実行命令を含むコンピュータ読み取り可能な媒体であって、コンピュータのプロセッサが前記コンピュータ実行命令を実行するとき、前記コンピュータが、請求項1から1のいずれか一項に記載の、記憶リソース共有するための方法を実行するコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信技術の分野、特に、記憶リソースを共有する方法およびシステムに関する。
【背景技術】
【0002】
クラウド・コンピューティング・アプリケーションにおいて、サーバ・クラスタ・システムは、コンピューティング・リソース、記憶リソース、およびネットワーク・リソースを統合し、仮想化のような技術を使用することによって、ネットワークを介して、使用のためにユーザにリソースを提供する。アプリケーションの形式は、例えば、仮想マシン(Virtual Machine、略して“VM”)、コンピューティング能力、記憶能力貸し、等である。
【0003】
現在、異なる種類のリソース需要のような理由のため、サーバ・クラスタ・システムは一般に異なるデバイスを使用して記憶デバイスを提供し、記憶リソースのソースは多様化され、例えば、サーバノードに組み込まれた記憶リソース、および独立に配置された記憶リソースであり、ここで、独立に配置された記憶リソースは、例えば、ストレージ・エリア・ネットワーク(Storage Area Network、略して“SAN”)のような専用記憶アレイまたは記憶サーバとすることが可能である。
【0004】
先行技術において、サーバ・クラスタ・システムの記憶デバイスは外部記憶サービスを独立に提供し、結果として、記憶リソースの低く結合された利用となる。さらに、企業によって本来蓄積された、ネットワーク記憶デバイスの、記憶リソースは、サーバ・クラスタ・システムによって再利用されることができず、途方もなく大きい浪費を引き起こす。
【発明の概要】
【課題を解決するための手段】
【0005】
本発明の実施例は、記憶リソースを共有する方法およびシステムを提供し、これは、異種の記憶リソースを統合、共有、および利用するために使用され、それによって、記憶リソースの利用を向上させる。
【0006】
第1の態様に従って、本発明の実施例は、サーバ・クラスタ・システムに適用される、記憶リソースを共有するための方法であって、
前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記方法は、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するステップであって、前記複数の記憶パーティションは共有記憶リソースのプールを形成する、ステップと、
各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当てるステップと、
グローバルパーティション情報を生成するステップであって、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録する、ステップと、
記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
前記読み出し・書き込み制御モジュールが前記記憶要求メッセージによって要求される操作を実行するように、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するステップと、
を含む方法を提供する。
【0007】
第1の態様を参照して、第1の可能な実現形態において、前記記憶要求メッセージに対応する記憶パーティションを決定するステップは、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定するステップと、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む。
【0008】
第1の態様の第1の可能な実現形態を参照して、第2の可能な実現形態において、前記方法は、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするステップであって、各々の記憶パーティションのメタデータは、前記記憶パーティションのIDと、前記記憶パーティションに割り当てられたデータブロックのIDとの間の対応関係を記録する、ステップをさらに含み、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックのIDを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも1つのデータブロックに対応する記憶パーティションのIDを決定するステップ
を含む。
【0009】
第1の態様または第1の態様の第1の可能な実現形態を参照して、第3の可能な実現形態において、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップは、
前記ユーザボリュームのIDおよび各々のデータブロックのLBAを使用することによって、各々のデータブロックのkey値を形成し、各々のデータブロックの前記key値に対応するvalue値を計算し、前記value値に従って各々のデータブロックに対応する記憶パーティションを決定するステップ
を含む。
【0010】
第1の態様の第1の可能な実現形態、第1の態様の第2の可能な実現形態、または第1の態様の第3の可能な実現形態を参照して、第4の可能な実現形態において、記憶要求メッセージを受信することは、ユーザボリューム生成コマンドを受信することを含み、前記ユーザボリューム生成コマンドは前記ユーザボリュームのサイズを示し、
前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定するステップと、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、は、
前記ユーザボリュームに前記ユーザボリュームのIDを割り当てるステップと、
前記ユーザボリュームのサイズに従って、前記ユーザボリュームに割り当てられる初期記憶リソースのサイズを決定し、前記初期記憶リソースのサイズに従って、前記少なくとも1つのデータブロックのLBAを決定するステップと、
前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するステップと、
を含む。
【0011】
第1の態様の第1の可能な実現形態、第1の態様の第2の可能な実現形態、または第1の態様の第3の可能な実現形態を参照して、第5の可能な実現形態において、記憶要求メッセージを受信することは、データ書き込み操作要求を受信することを含み、
前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのIDを決定するステップと、
書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにLBAを割り当てるステップと、
前記現在の書き込み操作に対応するユーザボリュームのID、および、各々の書き込まれるデータブロックのLBAに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック書き込みコマンドを生成するステップであって、各々のデータブロック書き込みコマンドは1つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのIDを搬送する、ステップと、
各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールが記憶ハードウェアリソースに各々の書き込まれるデータブロックを書き込むように、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するステップと、
を含む。
【0012】
第1の態様の第1の可能な実現形態、第1の態様の第2の可能な実現形態、または第1の態様の第3の可能な実現形態を参照して、第5の可能な実現形態において、記憶要求メッセージを受信することは、データ読み出し操作要求を受信することを含み、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、
前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのIDを決定するステップと、
前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのLBAを決定するステップと、
前記現在の読み出し操作に対応するユーザボリュームのID、および、各々の読み出されるデータブロックのLBAに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定するステップと、
前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定するステップと、
複数のデータブロック読み出しコマンドを生成するステップであって、各々のデータブロック読み出しコマンドは1つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのIDを搬送する、ステップと、
各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールが各々の読み出されるデータブロックを読み出すように、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するステップと、
を含む。
【0013】
第2の態様に従って、本発明の実施例は、サーバ・クラスタ・システムであって、前記サーバ・クラスタ・システムはサーバノードおよびネットワーク記憶ノードを含み、前記サーバノードはハードディスクを含み、前記ネットワーク記憶ノードは記憶アレイを含み、前記サーバノードにおいて分散記憶コントローラが動作し、前記分散記憶コントローラは、
前記ハードディスクおよび前記記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成されたメタデータ・コントローラを含み、前記複数の記憶パーティションは共有記憶リソースのプールを形成し、前記メタデータ・コントローラは、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成するように構成され、前記グローバルパーティション情報は、前記共有記憶リソースのプールにおける各々の記憶パーティションと前記読み出し・書き込み制御モジュールとの間の対応関係を記録し、前記メタデータ・コントローラは、前記グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成され、
前記分散記憶コントローラは、
サービス層に向かい、記憶要求メッセージを受信し、前記記憶要求メッセージに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように構成された前記仮想ブロック・サービス・モジュールと、
前記ハードディスクまたは前記ネットワーク記憶ノードに向かい、前記記憶要求メッセージによって要求される操作を実行するように構成された前記読み出し・書き込み制御モジュールと、
を含むサーバ・クラスタ・システムを提供する。
【0014】
第2の態様を参照して、第1の可能な実現形態において、前記読み出し・書き込み制御モジュールはオブジェクト記憶デリゲートおよびSAN記憶エージェントを含み、
前記メタデータ・コントローラは、読み出し・書き込み制御モジュールとして前記オブジェクト記憶デリゲートをローカル・ハードディスクの記憶パーティションに割り当て、読み出し・書き込み制御モジュールとして前記SAN記憶エージェントを前記記憶アレイの記憶パーティションに割り当てるように特に構成され、
前記オブジェクト記憶デリゲートは、前記記憶要求メッセージを受信し、前記記憶要求メッセージに対応する物理アドレスを決定し、前記物理アドレスに従って前記ハードディスクにおいて前記記憶要求メッセージによって要求される操作を実行するように構成され、
前記SAN記憶エージェントは、前記記憶要求メッセージを受信し、前記ネットワーク記憶ノードの、前記記憶要求メッセージに対応する論理アドレスを決定し、前記論理アドレスに従って前記記憶アレイにおいて前記記憶要求メッセージによって要求される操作を実行するように構成される。
【0015】
第2の態様を参照して、第2の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記記憶要求メッセージに従って操作されるデータが配置されるユーザボリュームのID、および、前記操作されるデータの少なくとも1つのデータブロックの論理ブロックアドレスLBAを決定し、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するように特に構成される。
【0016】
第2の態様の第2の可能な実現形態を参照して、第3の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記共有記憶リソースのプールにおいて各々の記憶パーティションのメタデータをセットアップするように特に構成され、各々の記憶パーティションのメタデータは、前記記憶パーティションのIDと、前記記憶パーティションに割り当てられたデータブロックのIDとの間の対応関係を記録し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックのIDを決定し、各々の記憶パーティションのメタデータを問い合わせ、前記少なくとも1つのデータブロックに対応する記憶パーティションのIDを決定するように特に構成される。
【0017】
第2の態様の第2の可能な実現形態を参照して、第4の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームのIDおよび各々のデータブロックのLBAを使用することによって、各々のデータブロックのkey値を形成し、各々のデータブロックの前記key値に対応するvalue値を計算し、前記value値に従って各々のデータブロックに対応する記憶パーティションを決定するように特に構成される。
【0018】
第2の態様および第2の態様のいずれか1つの可能な実現形態を参照して、第5の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、ユーザボリューム生成コマンドを受信するように特に構成され、前記ユーザボリューム生成コマンドは前記ユーザボリュームのサイズを示し、前記仮想ブロック・サービス・モジュールは、前記ユーザボリュームに前記ユーザボリュームのIDを割り当て、前記ユーザボリュームのサイズに従って、前記ユーザボリュームに割り当てられる初期記憶リソースのサイズを決定し、前記初期記憶リソースのサイズに従って、前記少なくとも1つのデータブロックのLBAを決定し、前記ユーザボリュームのIDおよび前記少なくとも1つのデータブロックのLBAに従って、前記少なくとも1つのデータブロックに対応する記憶パーティションを決定するように特に構成される。
【0019】
第2の態様および第2の態様のいずれか1つの可能な実現形態を参照して、第6の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、データ書き込み操作要求を受信し、前記データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのIDを決定し、書き込まれるデータを複数の書き込まれるデータブロックに分割し、各々の書き込まれるデータブロックにLBAを割り当て、前記現在の書き込み操作に対応するユーザボリュームのID、および、各々の書き込まれるデータブロックのLBAに従って、各々の書き込まれるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、各々の書き込まれるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック書き込みコマンドを生成するように特に構成され、各々のデータブロック書き込みコマンドは1つの書き込まれるデータブロックに対応し、各々のデータブロック書き込みコマンドは、前記書き込まれるデータブロック、および、前記書き込まれるデータブロックのIDを搬送し、前記仮想ブロック・サービス・モジュールは、各々の書き込まれるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック書き込みコマンドを個々に送信するように特に構成される。
【0020】
第2の態様および第2の態様のいずれか1つの可能な実現形態を参照して、第7の可能な実現形態において、前記仮想ブロック・サービス・モジュールは、データ読み出し操作要求を受信するように特に構成され、前記データ読み出し操作要求はファイル名および読み出されるデータのオフセットを搬送し、前記仮想ブロック・サービス・モジュールは、前記データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのIDを決定し、前記読み出されるデータのオフセット情報に従って複数の読み出されるデータブロックのLBAを決定し、前記現在の読み出し操作に対応するユーザボリュームのID、および、各々の読み出されるデータブロックのLBAに従って、各々の読み出されるデータブロックに対応する記憶パーティションを決定し、前記グローバルパーティション情報に従って、前記複数の読み出されるデータブロックに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、複数のデータブロック読み出しコマンドを生成するように特に構成され、各々のデータブロック読み出しコマンドは1つの読み出されるデータブロックに対応し、各々のデータブロック読み出しコマンドは、前記読み出されるデータブロック、および、前記読み出されるデータブロックのIDを搬送し、前記仮想ブロック・サービス・モジュールは、各々の読み出されるデータブロックに対応する読み出し・書き込み制御モジュールに各々のデータブロック読み出しコマンドを個々に送信するように特に構成される。
【0021】
第2の態様および第2の態様のいずれか1つの可能な実現形態を参照して、第8の可能な実現形態において、前記メタデータ・コントローラは、前記サーバノードにおけるオブジェクト記憶デリゲートおよびSAN記憶エージェントの配置状態を個々に決定し、前記決定された配置状態に従って前記読み出し・書き込み制御モジュールのビュー情報を生成するようにさらに構成され、前記読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されるサーバノードについての情報を示すために使用され、前記メタデータ・コントローラは、前記読み出し・書き込み制御モジュールのビュー情報を前記仮想ブロック・サービス・モジュールに送出するようにさらに構成され、
前記仮想ブロック・サービス・モジュールは、前記読み出し・書き込み制御モジュールのビュー情報に従って、前記読み出し・書き込み制御モジュールのルーティング情報を決定し、前記決定された読み出し・書き込み制御モジュールに前記記憶要求メッセージを送信するように特に構成される。
【0022】
第2の態様の第8の可能な実現形態を参照して、第9の可能な実現形態において、前記メタデータ・コントローラは、前記サーバ・クラスタ・システムにおける、ハードディスクリソースを有するサーバノードにおいて前記オブジェクト記憶デリゲートを配置することを決定し、前記サーバ・クラスタ・システムにおける、少ない負荷を有するサーバノードにおいて前記SAN記憶エージェントを配置することを決定するように特に構成される。
【0023】
第2の態様の第8の可能な実現形態を参照して、第10の可能な実現形態において、前記メタデータ・コントローラは、前記サーバノードのハードディスクの利用可能な記憶リソースおよび前記ネットワーク記憶ノードの記憶アレイの利用可能な記憶リソースを集め、前記ハードディスクおよび前記記憶アレイの利用可能な記憶リソースを複数の記憶パーティションに分割するようにさらに構成される。
【0024】
第3の態様に従って、本発明の実施例は、コンピュータを提供する。
【0025】
第4の態様に従って、本発明の実施例は、コンピュータ記憶媒体を提供する。
【0026】
本発明の実施例において、ハードディスクおよび記憶アレイの記憶リソースは複数の記憶パーティションに分割され、複数の記憶パーティションは共有記憶リソースのプールを形成し、読み出し・書き込み制御モジュールが各々の記憶パーティションに割り当てられ、共有記憶リソースのプールにおける各々の記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を記録するためにグローバルパーティション情報が生成されることが上述の技術的解決手段から分かる。このようにして、記憶要求メッセージが続いて受信されるとき、記憶要求メッセージに対応する記憶パーティションが決定でき、記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールがグローバルパーティション情報に従って決定でき、最後に、記憶要求メッセージが、決定された読み出し・書き込み制御モジュールに送信でき、それによって、読み出し・書き込み制御モジュールは記憶要求メッセージによって要求される操作を実行する。本発明の実施例は異種の記憶リソースの迅速で簡単な統合を実現し、従って、各種の記憶リソースを効率的に使用し、コストを節約し、リソースの浪費を避けることができる。
【0027】
本発明の実施例または先行技術における技術的解決手段をより明確に説明するために、下記は、実施例または先行技術を説明するために必要な添付図面を簡単に導入する。明らかに、下記の説明における添付図面は本発明のいくつかの実施例を表わす。
【図面の簡単な説明】
【0028】
図1】本発明の実施例に従う、サーバ・クラスタ・システムの概要のブロック図である。
図2】本発明の実施例に従う、共有記憶リソースの分割を表わす概要図である。
図3】本発明の実施例に従う、共有記憶リソースを使用するフローチャートである。
図4】本発明の実施例に従う、共有記憶リソースを使用するもう1つのフローチャートである。
図5】本発明の実施例に従う、共有記憶リソースを使用するもう1つのフローチャートである。
図6】本発明の実施例に従う、サーバ・クラスタ・システムのもう1つの概要のブロック図である。
図7】本発明の実施例に従う、コンピュータの構成図である。
【発明を実施するための形態】
【0029】
本発明の実施例の目的、技術的解決手段、および利点をより明確にするために、以下は、本発明の実施例における添付図面を参照して、本発明の実施例における技術的解決手段を明確かつ十分に説明する。明らかに、説明された実施例は本発明の実施例のいくつかであるが全てではない。
【0030】
さらに、この明細書における用語「および/または」は、関連付けされた対象を説明するために関連付けの関係のみを説明し、3つの関係が存在することが可能であることを表現する。例えば、Aおよび/またはBは次の3つの場合、Aのみが存在する、AとBの両方が存在する、Bのみが存在する、を表現することが可能である。さらに、この明細書における記号「/」は、この記号の前および後の関連付けされた対象が「または」の関係にあることを一般に表現する。
【0031】
本発明の実施例によって提供される技術的解決手段において、分散コントローラは異種記憶リソースの統合を実現するためにサーバに配置され、それによって、異種の記憶および統合デバイスをさらに購入する必要なしで、異種の記憶リソースの統合および使用が実現でき、それによって、システムの価格/性能の比を向上させる。
【0032】
本発明の実施例において、コンピューティング・リソースおよび記憶リソースが垂直に統合された後、各種の記憶リソースがそして水平に統合され、特に、異種の記憶リソースが統合および使用される。本発明の実施例において、分散記憶コントローラはサーバに配置され、各種の異種の記憶リソースは、統一された形態で記憶リソースを割り当ておよび管理するため、クラスタ共有記憶リソースのプールを形成するために使用される。この方法は、異種の記憶リソースの迅速で簡単な統合を実現でき、従って、各種の記憶リソースを効率的に使用し、コストを節約し、リソースの浪費を避けることができる。
【0033】
本発明の実施例において言及される異種の記憶リソースは、2つまたはより多くの異なる種類の記憶デバイスを指す。具体的には、第1の種類の記憶デバイスは、ソリッド・ステート・ディスク(Solid State Disk、SSD)、機械的ハードディスク(Hard Disk、HD)、またはハイブリッド・ハードディスク(Hybrid Hard Disk、HHD)のようなサーバノードに組み込まれたローカル・ハードディスクを指し、第2の種類の記憶デバイスは、ネットワーク記憶ノードを指し、ここで、ネットワーク記憶ノードは、ストレージ・エリア・ネットワーク(Storage Area Network、SAN)記憶デバイスとすることが可能であり、ネットワーク接続ストレージ(Network Attached Storage、NAS)記憶デバイスとすることも可能であり、ネットワーク記憶ノードはサーバの外部ハードウェアデバイスであるが、サーバに組み込まれたデバイスではない。
【0034】
図1は、本発明の実施例に従う、サーバ・クラスタ・システムの構成図である。サーバ・クラスタ・システムは、ネットワーク層を使用することによって、アプリケーションクライアントまたは記憶管理センターと通信する。サーバ・クラスタ・システムは、サーバノードおよびネットワーク記憶ノードを含み(この実施例は例としてSAN記憶デバイスを使用する)、1つまたはより多くのサーバノードおよび1つまたはより多くのネットワーク記憶ノードが存在することが可能であり、この実施例は例として2個のSAN記憶ノードを使用する。各々のサーバノードの物理デバイスは、CPU、メモリ、ネットワーク、ハードディスク、等を含み、ネットワーク記憶ノードの物理デバイスは、記憶アレイおよび記憶アレイのコントローラを含む。この実施例において、サーバ・クラスタ・システムに接続されるアプリケーションプログラムのためのコンピューティング・リソースを提供するために使用される、サーバノードのCPUおよびメモリのような物理デバイスは、サーバ・クラスタ・システムのコンピューティング・リソースと集合的に呼ばれ、コンピューティング層を形成する基礎を提供し、記憶リソース層に存在するサーバノードのハードディスクおよびネットワーク記憶ノードの記憶アレイは、サーバ・クラスタ・システムの記憶リソースと集合的に呼ばれる。
【0035】
サーバ・クラスタ・システムは、使用のために異なるアプリケーションプログラムにコンピューティング・リソースを外部的に提供するために使用される。例えば、ウェブアプリケーションまたはHADOOP分散クラスタシステムはサーバ・クラスタ・システムにおいて動作することが可能である。サーバ・クラスタ・システムのコンピューティング・リソースは、複数の仮想マシンにさらに分離されることが可能であり、異なるアプリケーションプログラムは各々の仮想マシンにおいて動作し、または複数の仮想マシンは仮想マシンクラスタを形成して同じアプリケーションプログラムのためにサービスを提供する。この実施例は具体的な実現形式に限定を課さない。アプリケーションプログラムがサーバ・クラスタ・システムにおいて動作するとき、アプリケーションプログラムの関連するデータはサーバ・クラスタ・システムの記憶リソースにおいて記憶され、すなわち、サーバノードのハードディスクまたはSANノードの記憶アレイに記憶されることが可能であり、またはサーバノードのハードディスクおよびSANノードの記憶アレイの両方に記憶されることが可能である。
【0036】
本発明のこの実施例におけるサーバ・クラスタ・システムは分散記憶コントローラをさらに動作させ、ここで、分散記憶コントローラは、サーバノードのハードディスクおよび(SANのような)ネットワーク記憶ノードによって提供される記憶アレイの記憶リソースを複数の記憶パーティションに分割するように構成され、ここで、複数の記憶パーティションはサーバ・クラスタ・システムの共有記憶リソースのプールを形成し、それによって、サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムは共有記憶リソースのプールから分散記憶リソースのブロックを取得し、分散記憶リソースブロックを使用することが可能であり、それによって、記憶リソース、さらに記憶の分散の、より高い利用を保証し、記憶リソースの読み出し・書き込みの効率を向上させる。本発明のこの実施例において、分散記憶コントローラは、サーバのハードウェアデバイスにインストールされたソフトウェアモジュールを使用することによって実現され、従って、記憶制御デバイスとして追加のハードウェアデバイスを購入することを避けることができる。この解決手段はより経済的でコスト節約である。
【0037】
本発明のこの実施例において説明される分散記憶コントローラは、各々のサーバノードにおいて動作する記憶制御機能モジュールのための一般的な用語であり、解決手段によって提供される分散記憶コントローラは異なる機能モジュールを含むことが可能である。しかし、実際の配置の間、各々のサーバノードは、サーバノードの機能および配置ポリシーに従って分散記憶コントローラの異なる機能モジュールを動作させることが可能である。すなわち、サーバ・クラスタ・システムの配置ポリシーに従って、分散記憶コントローラの異なる機能モジュールは、異なるサーバノードにおいて動作することが可能であり、各々のサーバノードは分散記憶コントローラの全ての機能モジュールを動作させることが可能であり、または分散記憶コントローラのいくつかの機能モジュールを動作させることが可能である。具体的な配置の形態は、以下で詳細に説明される。
【0038】
分散記憶コントローラは、サーバ・クラスタ・システムのコンピューティング・リソースのためのデータ・アクセス・インタフェースを提供し、サーバ・クラスタ・システムの共有記憶リソースにおける管理および読み出し・書き込み制御を実行するように主に構成される。
【0039】
具体的には、分散記憶コントローラは、次のモジュールに機能的に分割されることが可能である。
サーバノードのローカル・ハードディスクの記憶リソースおよびネットワーク記憶ノードの記憶アレイの記憶リソースを取得し、サーバノードの記憶リソースおよびネットワーク記憶ノードの記憶リソースを複数の記憶パーティション(partition)に分割し、各々の記憶パーティションに記憶パーティション識別子を割り当て、そして複数の記憶パーティションを使用することによって共有記憶リソースのプールを形成するように構成され、それによって、サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムが共有記憶リソースを使用する、メタデータ・コントローラMDC。
【0040】
具体的には、MDCは、サーバノードのハードディスクリソースおよびネットワーク記憶ノードの記憶アレイにおいてヘルスチェックをまず実行し、その利用可能な記憶リソースを収集して共有記憶リソースのプールを形成することが可能である。パーティション分割の間、MDCは、リソースを同じサイズの記憶パーティションに分割すること、例えば10GB単位での分割、が可能である。MDCによって収集される記憶リソースについての情報は、各々のハードディスクの容量およびID、各々のハードディスクが配置されたサーバのID、各々の記憶アレイに含まれる各々の論理記憶ユニットLUNの容量およびID、および各々のLUNが配置されたネットワーク記憶ノードのIDを含むことが可能である。
【0041】
MDCによって収集される記憶リソースについての情報は、例えば次の通りである。
Disk ID=1,Disk Capacity=50GB,Server ID=1,
Disk ID=2,Disk Capacity=50GB,Server ID=1,
Disk ID=3,Disk Capacity=50GB,Server ID=2,
LUN=1,LUN Capacity=50GB,SAN ID=1,
LUN=2,LUN Capacity=50GB,SAN ID=1,
LUN=3,LUN Capacity=50GB,SAN ID=1
【0042】
記憶リソースについての上述の情報を取集した後、MDCは、Disk1〜3およびLUN1〜3の記憶リソースを複数の記憶パーティションに分割し、ここで、記憶パーティションはサイズが等しいことが可能であり、またはサイズが等しくないことが可能である。例えば、記憶リソースは10GB単位で等しく分割され、DISKおよびLUNの記憶リソースは30個の記憶パーティションに分割され、ここで、各々の記憶パーティションのサイズは10GBであり、記憶パーティションのパーティション識別子は1〜30、すなわち、P1〜P30である。MDCは、記憶パーディションP1〜P30を使用することによって共有記憶リソースのプールを形成し、ここで、記憶パーティションP1〜P15は、サーバノードに組み込まれたハードディスクの記憶リソースを含み、記憶パーティションP16〜P30は、SANノードの記憶アレイの記憶リソースを含む。すなわち、共有記憶リソースは2種類の記憶パーティションを含み、ここで、第1の種類の記憶パーティションはP1〜P15であり、第2の種類の記憶パーティションはP16〜P30である。
【0043】
分散記憶コントローラは読み出し・書き込み制御モジュールをさらに含み、ここで、この実施例における読み出し・書き込み制御モジュールはオブジェクト記憶デリゲート(Object Storage Delegate、OSD)およびSAN記憶エージェント(SAN Storage Agent、SSA)を含む。OSDは、サーバノードに組み込まれたハードディスクの記憶リソースにおける読み出し・書き込み制御を実行し、すなわち、サーバノードのローカル・ハードディスクにおけるデータ記憶およびサーバノードのローカル・ハードディスクからのデータ取得を実現するように構成され、例えば、この実施例においてOSDは記憶パーティションP1〜P15における読み出し・書き込み制御を実行する。SSAはSANノードの記憶アレイの記憶リソースにおける読み出し・書き込み制御を実行し、すなわち、SANノードの記憶アレイにおけるデータ記憶およびSANノードの記憶アレイからのデータ取得を実現し、例えば、この実施例においてSSAは記憶パーティションP16〜P30における読み出し・書き込み制御を実行する。OSDおよびSSAの両方は、分散記憶コントローラの機能モジュールであり、サーバ・クラスタ・システムの記憶リソースについての情報を収集した後、MDCは、記憶リソースの配置状態に従って、サーバ・クラスタ・システムにおいてOSDおよびSSAをどのように配置するかをさらに決定することが可能である。具体的には、MDCは、サーバ・クラスタ・システムにおける、ローカル・ハードディスクを有する各々のサーバノードにおいてOSDを動作させることが可能であり、MDCは、サーバ・クラスタ・システムにおける各々のサーバノードにおいてSSAを動作させることが可能であり、各々のサーバノードの負荷状態に従って、少ない負荷を有するサーバノードにおいてSSAを配置することも可能である。例えば、MDCは、統一された形態で、全てのサーバノードにおいてコンピューティング・リソースの負荷状態を計算し、各々のSAN記憶ノードの記憶アレイの容量および負荷に従って、大域的なSSA配置情報を生成することが可能である。この実施例において、例えば、MDCは、サーバノード1においてOSD1を動作させ、サーバノード2においてOSD2を動作させ、サーバノード2においてSSA1を動作させる。
【0044】
OSDおよびSSAの配置状態を決定した後、MDCはOSDビュー情報およびSSAビュー情報をさらに記録することが可能である。OSDビュー情報は、OSDが対応して配置されたサーバを含み、これはOSDのルーティング情報を示すために使用され、さらに、OSDビューは、各々のOSD、各々のOSDに対応するステータス、および各々のOSDによって対応して管理されるDISKをさらに含むことが可能である。SSAビュー情報は、SSAが対応して配置されたサーバを含み、これはSSAのルーティング情報を示すために使用され、さらに、SSAビュー情報は、各々のSSAによって対応して管理される、SSA記憶アレイの、各々のSSAおよびLUNのステータスをさらに含む。例えば、次の表1および表2はそれぞれOSDビュー情報およびSSAビュー情報を表わす。
【0045】
【表1】
【0046】
【表2】
【0047】
上述の表1および表2はそれぞれOSDビュー情報およびSSAビュー情報を記述し、この技術分野の当業者は、また、上述の表1および表2を1つの読み出し・書き込み制御モジュールのビュー情報に結合することが可能である。
【0048】
記憶リソースを記憶パーティションに分割し、読み出し・書き込み制御モジュールの配置を決定した後、MDCは、各々の記憶パーティションについての対応する読み出し・書き込み制御モジュールをさらに構成定義することが可能である。割り当ての過程は、比較的柔軟とすることが可能であり、記憶パーティションの分割状態および実際の動作負荷に従ってMDCによって決定されることが可能である。例えば、記憶パーティションP1〜10はサーバノード1において対応して配置され、サーバノード1において動作するOSD1はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たし、記憶パーティションP11〜20はサーバノード2において対応して配置され、サーバノード2において動作するOSD2はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たし、記憶パーティションP21〜30はサーバノード2において対応して配置され、サーバノード2において動作するSSA1はその記憶パーティションのための読み出し・書き込み制御モジュールとしての役割を果たす。
【0049】
さらに、MDCは、グローバルパーティション情報をさらに生成することが可能であり(グローバルパーティション情報テーブルは、本発明のこの実施例において例として使用される)、ここで、グローバルパーティション情報テーブルはサーバ・クラスタ・システムにおいて記憶パーティションの分散状態を記録する。図2および表3に表わされているように、グローバルパーティション情報テーブルは、各々の記憶パーティションに対応する読み出し・書き込み制御モジュール(OSDまたはSSA)を記録する。グローバルパーティション情報テーブルは各々の記憶パーティションに対応するソース記憶デバイスについての情報、例えば、磁気ディスク番号または物理アドレス情報をさらに記録することが可能である。
【0050】
表3に表わされているように、P1に対応する読み出し・書き込み制御モジュールはOSD1であり、P1に対応するソース記憶ユニットはSERVER1におけるDISK1であり、P1に対応するソース物理アドレスは100〜199である。
【0051】
【表3】
【0052】
分散記憶コントローラは、仮想ブロックサービスVBSをさらに含む。記憶パーティションおよび読み出し・書き込み制御モジュールの配置を完了した後、MDCは、上述のグローバルパーティション情報テーブルおよび読み出し・書き込み制御モジュールのビュー情報をVBSにさらに送出することが可能である。VBSはMDCによって送出された情報に従ってI/Oビューを取得し、ここで、I/Oビューはグローバルパーティション情報テーブルの下位テーブルであり、各々の記憶パーティションに対応する実際の読み出し・書き込み制御モジュールを示すために使用され、記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を含む。I/OビューはMDCによってVBSに直接に送出されることが可能であり、MDCモジュールによって送出されるグローバルパーティション情報テーブルに従ってVBSによって生成されることも可能である。
【0053】
VBSはサーバ・クラスタ・システムにおける各々のサーバノードにおいて動作することが可能であり、記憶ドライバ層として、サーバ・クラスタ・システムのアプリケーションモジュールのためのブロック・アクセス・インタフェース、例えば、SCSIに基づくブロック・デバイス・アクセス・インタフェースを提供するように構成される。上位層のアプリケーションによって送出されるデータ読み出し・書き込み要求を受信した後、VBSはデータ読み出し・書き込み要求に従って読み出され書き込まれる必要がある記憶パーティションを決定し、I/Oビューのビュー規則に従って現在のデータ読み出し・書き込み要求によって要求された記憶パーティションに対応する読み出し・書き込み制御モジュール(OSDおよびSSA)を決定し、対応する読み出し・書き込み制御モジュールに読み出し・書き込みデータ要求を送出してデータの読み出しおよび書き込みを完了する。
【0054】
具体的には、VBSはグローバル・メタデータの管理をさらにサポートすることが可能であり、ここで、グローバル・メタデータは、サーバ・クラスタ・システムにおける共有記憶リソースのプールにおける記憶パーティションの大域的な使用状態、および、各々の記憶パーティションのメタデータを記録する。大域的な使用状態は、占有された記憶パーティションについての情報および空きの記憶パーティションについての情報を含む。各々の記憶パーティションのメタデータは各々の記憶パーティションの割り当て状態を示すために使用される。本発明のこの実施例において、記憶パーティションはブロックデータの記憶割り当ての形態で割り当てられる。すなわち、各々の記憶パーティションはデータブロック単位で使用され、記憶パーティションの使用は、読み出し、書き込み、割り当て、等を含む。例えば、記憶パーティションがユーザボリュームに割り当てられるとき、データブロックは割り当てのための単位として使用される。例えば、本発明のこの実施例において、各々の記憶パーティションはサイズで10GBであり、10GBの記憶パーティションは10240個のデータブロック(Block)に等しく分割されることが可能である。データが各々の記憶パーティションから読み出される、またはデータが各々の記憶パーティションに書き込まれるとき、データブロックは読み出しおよび書き込みのための単位として使用される。従って、各々の記憶パーティションのメタデータは、具体的には、各々の記憶パーティションに割り当てられたBlock IDとの間の対応関係を含み、ここで、複数のデータブロックが各々の記憶パーティションに割り当てられる。データブロックは統一サイズとすることが可能であり、またはサイズが制限されないことが可能である。本発明のこの実施例は、各々のデータブロックのサイズが1MBである例を使用する。さらに本発明のこの実施例において、各々のデータブロックのIDはデータブロックに対応するユーザボリュームのIDを含むことが可能であり、またはデータブロックに対応するユーザボリュームのIDおよび論理ブロックアドレス(Logical Block Address、LBA)を含むことが可能である。
【0055】
各々の記憶パーティションのメタデータは、例えば、表4に表わされている。
【0056】
【表4】
【0057】
記憶パーティションと割り当てられたデータブロックとの間の対応関係はKey−Valueインデックス形式とすることが可能であり、ここで、データブロックのIDはKey値である。例えば、Key値はユーザボリュームの識別子およびデータブロックの論理ブロックアドレスに関し、記憶パーティションのIDはValue値である。Key−Valueインデック形式が使用されるならば、VBSは上述の表4を維持することなくアルゴリズムを使用することによって対応関係を直接に決定することも可能であることに注意すべきである。開始されるとき、VBSはサーバノードのハードディスクおよびSANノードの記憶アレイの磁気ディスクを横断することによって記憶リソースの割り当て情報を取得し、MDCによって送出されたグローバルパーティション情報テーブルに従って記憶されたメタデータを初期化することが可能である。
【0058】
分散記憶コントローラは読み出し・書き込み制御モジュール、例えば、サーバノードのハードディスクリソースにおける読み出し・書き込み制御を実行するOSD、およびネットワーク記憶ノードの記憶アレイの記憶リソースにおける読み出し・書き込み制御を実行するSSAをさらに含む。
【0059】
具体的には、OSDは、VBSから読み出し・書き込みコマンドを主に受信し、サーバノードのハードディスクにおけるデータ記憶およびサーバノードのハードディスクからのデータ取得を完了する。SSAは、VBSから読み出し・書き込みコマンドを主に受信し、SANノードのハードディスクにおけるデータ記憶およびSANノードのハードディスクからのデータ取得を完了する。SSAはホストにおけるSANデバイスのエージェントを実現するように構成される。SSAにおいて、各々の物理SANデバイスの記憶情報についてビューがセットアップされ、各々の物理SAN/NASデバイスへのアクセスはSSAのエージェントを使用することによって実行され、iSCSIインタフェース機能がSSAに追加される。
【0060】
さらに、統一物理アドレスが共有記憶リソースのプールにおける記憶パーティションに割り当てられるならば、SSAは統一物理アドレスとSANノードにおける元のLUNアドレスの間の対応関係をさらに維持することが可能であり、ここで、SSAは対応関係に従って、読み出し・書き込み要求に対応する元のLUNのアドレスをさらに決定することが可能である。
【0061】
上述のサーバ・クラスタ・システムは分散記憶コントローラを動作させ、ここで、分散記憶コントローラにおけるMDC、VBS、OSD、およびSSAは、異種の記憶リソースを統合および使用し、各種の異種の記憶リソースを使用することによってクラスタ共有リソースのプールを形成し、統一された形態で全ての記憶リソースを割り当ておよび管理することができ、それによって、記憶リソースの利用を向上させる。さらに、複数の記憶パーティションは同時に読み出されまたは書き込まれることができ、それによって、読み出し・書き込みの性能を向上させ、システムの関与率を増加させる。
【0062】
図1への参照とともに、図3は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザボリュームを生成する処理過程である。
【0063】
S301:サーバ・クラスタ・システムにおけるサーバノードに配置されたVBSは、アプリケーション側によって送信されたユーザボリューム生成コマンドを受信する。
【0064】
具体的には、サーバ・クラスタ・システムにおいて動作するアプリケーション側のアプリケーションプログラム(例えば、仮想マシン)はユーザボリューム生成コマンドを開始し、ここで、コマンドは、アプリケーションマネージャによって、サーバ・クラスタ・システムにおけるいずれかのサーバノードに配置されたVBSに転送される(好ましい形態において、サーバノードにおけるVBSはユーザボリューム生成コマンドを受信し、ここで、コマンドを開始する仮想マシンのコンピューティング・リソースはサーバノードに配置される)。好ましくは、本発明のこの実施例におけるサーバ・クラスタ・システムが一次的なおよび二次的なVBSの機能をさらに提供するならば、ユーザボリューム生成コマンドを受信した後、VBSは、VBSがサーバ・クラスタ・システムにおける一次的なVBSであるかどうかをさらに決定することが可能である。そうでないならば、VBSはユーザボリューム生成コマンドを一次的なVBSに転送する。実際、VBSの配置は比較的柔軟である。サーバ・クラスタ・システムにおける全てのサーバノードにインストールされたVBSは等しい順位とすることが可能であり、この場合、全てのVBSの構成定義および機能は同一である。サーバ・クラスタ・システムにおける1つのVBSが一次的なVBSとして選択され、他のVBSが二次的なVBSとして使用されることも可能である。一次的なVBSは、ユーザボリューム/データブロックを割り当て、記憶パーティションのメタデータを管理するように構成され、二次的なVBSは、一次的なVBSにおけるメタデータを問い合わせ、一次的なVBSのコマンドに従って操作を実行するように構成される。本発明のこの実施例は、サーバ・クラスタ・システムが一次的なおよび二次的なVBSを実現する例を使用する。
【0065】
S302:一次的なVBSは、ユーザボリューム生成コマンドによって示されるボリュームのサイズ情報に従って、グローバル・メタデータを問い合わせ、共有記憶リソースのプールにおける残りのリソースが要求条件を満たすかどうかを決定し、満たすならば、ユーザボリュームを生成し、すなわち、ユーザボリュームのボリューム識別子(ID)を決定し、ユーザボリュームに初期記憶パーティションを割り当て、初期記憶パーティションのメタデータにおいて、ユーザボリュームの識別子、および、割り当てられた初期記憶パーティションについての情報を記録する。
【0066】
具体的には、ユーザボリューム生成コマンドがユーザボリュームのIDを指定するならば、一次的なVBSはユーザボリューム生成コマンドにおけるユーザボリュームのIDを直接に使用し、ユーザボリューム生成コマンドがユーザボリュームのIDを指定しないならば、VBSはユーザボリュームにユーザボリュームのIDを割り当てる。
【0067】
ユーザボリュームを生成する過程において、VBSは、ユーザボリュームに初期記憶パーティションをさらに割り当てることが可能であり、すなわち、いくつかの記憶パーティションがユーザボリュームの初期記憶パーティションとして空きの記憶パーティションから選択される。ユーザボリュームの初期記憶リソースのサイズは、ユーザボリューム生成コマンドによって指定されるユーザボリュームの容量に従って柔軟に割り当てられることが可能である。ユーザボリューム生成コマンドによって指定されるユーザボリュームの全体の容量は、初期記憶パーティションの容量として使用されることが可能である。例えば、ユーザボリューム生成コマンドは5GBのユーザボリュームを生成するように要求し、VBSは初期記憶パーティションとしてユーザボリュームに全体の5GBを割り当てることが可能である。すなわち、5GBは1MBのサイズを有する5120個のデータブロックに分割され、5120個のデータブロックは分散された形態で記憶パーティションP1〜P30において配置され、この場合、初期記憶パーティションのサイズは5GBである。VBSは、薄い割り当て形態を使用して、共有記憶リソースのプールの実際の状態に従ってユーザボリュームに記憶リソースの一部を割り当てる、例えば、ユーザボリュームに1GBの初期記憶リソースを割り当てることも可能である。1GBの初期記憶リソースは1MBのサイズを有する1024個のデータブロックに分割され、1024個のデータブロックは分散された形態で記憶パーティションP1〜P30において配置され、この場合、初期記憶パーティションのサイズは1GBである。
【0068】
VBSは、ユーザボリュームのID、および、グローバル・メタデータにおける各々の初期記憶パーティションのメタデータ情報において割り当てられた初期記憶パーティションについての情報を記録する。
【0069】
ユーザボリュームに初期記憶パーティションを割り当てるとき、VBSは、また、対応するソース物理アドレスを各々のユーザボリュームの各々のデータブロックに割り当てる。
【0070】
S303:一次的なVBSはユーザボリュームをマウントし、マウントが成功した後、仮想記憶デバイスを生成する。
【0071】
S304:一次的なVBSは仮想記憶デバイスについての情報をアプリケーション側に返信する。
【0072】
S305:一次的なVBSはグローバル・メタデータをサーバ・クラスタ・システムにおけるMDCに返信し、それによって、MDCはグローバル・メタデータに従ってグローバルパーティション情報テーブルを更新する。
【0073】
S305は任意選択のステップであり、柔軟な順序で実現されることが可能である。
【0074】
図1への参照とともに、図4は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザがデータを書き込む処理過程である。
【0075】
S401:サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムがデータ書き込み操作を開始した後、サーバ・クラスタ・システムにおけるVBSはデータ書き込み操作要求を受信する。
【0076】
データ書き込み操作要求は、ファイル名および書き込まれるデータを搬送する。
【0077】
S402:VBSは、データ書き込み操作要求において搬送されたファイル名に従って、現在の書き込み操作に対応するユーザボリュームのIDを決定する。
【0078】
VBSは、書き込まれるデータに従って、書き込まれるデータのサイズをさらに計算することが可能である。
【0079】
VBSは書き込まれるデータにLBAを割り当てる(このステップにおいてLBAを割り当てることは任意選択であり、このステップにおいてVBSは書き込まれるデータにLBAを割り当てないことも可能である)。
【0080】
例えば、VBSは、現在の書き込み操作について、Volume ID 1、Size=1GB、LBA:001×−221×を決定する。
【0081】
S403:VBSは書き込まれるデータを複数のデータブロックに区分し、各々のデータブロックにLBAを割り当てる。
【0082】
VBSは単位に従って書き込まれるデータを等しく区分することが可能であり、例えば、データを1MBに従って区分し、すなわち、毎回、各々の記憶パーティションの使用単位に従ってデータを区分する。この実施例において、VBSは1GBのサイズを有する書き込まれるデータを1024個のデータブロックに区分し、ここで、各々のデータブロックのサイズは1MBである。残りの書き込まれるデータが1MBより小さいならば、最後のデータブロックのサイズは残りの書き込まれるデータの実際のサイズである。VBSは、各々のデータブロックに、対応するLBAをさらに割り当てる。
【0083】
例えば、
Block1 LBA:0000−1024
Block2 LBA:1025−2048
・・・
【0084】
S404:VBSは各々のデータブロックについて対応する記憶パーティションを決定する。
【0085】
具体的には、VBSは、まず、各々の書き込まれるデータブロックの論理ブロックアドレス(LBA)を決定し、そして、ユーザボリュームのIDおよび各々のデータブロックのLBAを各々のデータブロックのKey値に結合し、ハッシュアルゴリズムのような分散記憶アルゴリズムに従って、各々のデータブロックに対応する記憶パーティションを決定する。ここで、LBAは元のLBAが処理された後の値とすることが可能であり、例えば、Block1に対応するLBA 0000−1024は1に対応し、Block2に対応するLBA 1025−2048は2に対応する。
【0086】
S405:VBSは複数のデータブロック書き込みコマンドを生成し、ここで、各々のデータブロックは1つのデータブロック書き込みコマンドに対応し、各々のデータブロック書き込みコマンドは書き込まれるデータブロック、および書き込まれるデータブロックのIDを搬送する(例えば、Block IDはユーザボリュームのIDおよび書き込まれるデータブロックのLBAを含む)。
【0087】
このステップは続くステップが完了した後に実行されることも可能であり、具体的な実現は時間的な順序を限定しない。
【0088】
S406:VBSは、各々のデータブロックに対応する記憶パーティションに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【0089】
具体的には、VBSは、グローバルパーティション情報テーブルに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【0090】
S407:VBSは、各々のデータブロック書き込みコマンドを、各々のデータブロックに対応する読み出し・書き込み制御モジュールに送信し、それによって、各々のデータブロックに対応する読み出し・書き込み制御モジュールは各々のデータブロックを記憶ハードウェアリソースに書き込む。
【0091】
具体的には、OSDがデータブロック書き込みコマンドを受信したならば、OSDは、書き込まれるデータブロックのIDに従って、OSDによって記憶されたデータブロックのメタデータを問い合わせ、データブロックのIDについてOSDによって実行される操作が第1の操作であるかどうかを決定する。それが第1の操作であるならば、OSDは実際の物理アドレスを書き込まれるデータブロックに割り当て、書き込まれるデータブロックを物理アドレスに対応する磁気ディスクに書き込み、OSDによって記憶されたデータブロックのメタデータを更新し、書き込まれるデータブロックのIDと物理アドレスの間の対応関係を記録する。それが第1の操作でないならば、OSDは、書き込まれるデータブロックのIDに従って、OSDによって記憶されたデータブロックのメタデータを問い合わせ、書き込まれるデータブロックに対応する物理アドレスを決定し、書き込まれるデータブロックを問い合わせによって得られた物理アドレスに書き込む。
【0092】
SSAがデータブロック書き込みコマンドを受信したならば、SSAは、書き込まれるデータブロックのIDに従って、SSAによって記憶されたデータブロックのメタデータを問い合わせ、データブロックのIDについてSSAによって実行される操作が第1の操作であるかどうかを決定する。それが第1の操作であるならば、SSAは実際のSAN記憶ノードの記憶アレイにおける論理アドレスすなわちLUNアドレスを書き込まれるデータブロックに割り当て、書き込まれるデータブロックをLUNアドレスに対応する磁気ディスクに書き込み、SSAによって記憶されたデータブロックのメタデータを更新し、書き込まれるデータブロックのIDとLUNアドレスの間の対応関係を記録する。それが第1の操作でないならば、OSDは、書き込まれるデータブロックのIDに従って、OSDによって記憶されたデータブロックのメタデータを問い合わせ、書き込まれるデータブロックに対応するLUNアドレスを決定し、書き込まれるデータブロックを問い合わせによって得られたLUNアドレスに書き込む。
【0093】
書き込み操作の間、OSDまたはSSAは、まず、データブロックをローカルキャッシュ層に書き込む、すなわち、応答メッセージを返信することが可能であり、それによって記憶の効率を向上させる。
【0094】
図1への参照とともに、図5は、本発明の実施例に従う、異種の記憶リソースの統合を使用するサーバ・クラスタ・システムにおいてユーザがデータを読み出す処理過程である。
【0095】
S501:サーバ・クラスタ・システムにおいて動作するアプリケーションプログラムがデータ読み出し操作を開始した後、サーバ・クラスタ・システムにおけるVBSはデータ読み出し操作要求を受信する。
【0096】
データ読み出し操作要求は、読み出されるデータのファイル名およびオフセット情報を搬送する。
【0097】
S502:VBSは、データ読み出し操作要求において搬送されたファイル名に従って、現在の読み出し操作に対応するユーザボリュームのIDを決定し、読み出されるデータのオフセット情報に従って、読み出されるデータのLBAを決定する。
【0098】
S503:VBSは、ユーザボリュームのIDおよび読み出されるデータのLBAに従って、複数の読み出されるデータブロックを決定する。
【0099】
具体的には、各々の読み出されるデータブロックのIDはユーザボリュームおよび各々のデータブロックのLBAを含み、ここで、各々のデータブロックのLBAは読み出されるデータの量および読み出されるデータのオフセットに従って決定されることが可能である。
【0100】
S504:VBSは各々の読み出されるデータブロックについて対応する記憶パーティションを決定する。
【0101】
具体的には、VBSは、まず、各々の読み出されるデータブロックの論理ブロックアドレス(LBA)を決定し、そして、ユーザボリュームのIDおよび各々のデータブロックのLBAを各々のデータブロックのkey値に結合し、ハッシュアルゴリズムのような分散記憶アルゴリズムに従って、各々のデータブロックに対応する記憶パーティションを決定する。
【0102】
S505:VBSは複数のデータブロック読み出しコマンドを生成し、ここで、各々のデータブロックは1つのデータブロック読み出しコマンドに対応し、各々のデータブロック読み出しコマンドは読み出されるデータブロックのIDを搬送する(例えば、Block IDはユーザボリュームのIDおよび読み出されるデータブロックのLBAを含む)。
【0103】
S506:VBSは、各々のデータブロックに対応する記憶パーティションに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【0104】
具体的には、VBSは、グローバルパーティション情報テーブルに従って、各々のデータブロックに対応する読み出し・書き込み制御モジュールを決定する。
【0105】
S507:VBSは、各々のデータブロック読み出しコマンドを、各々のデータブロックに対応する読み出し・書き込み制御モジュールに送信し、それによって、各々のデータブロックに対応する読み出し・書き込み制御モジュールは記憶ハードウェアリソースから各々の読み出されるデータブロックを読み出す。
【0106】
具体的には、OSDがデータブロック読み出しコマンドを受信したならば、OSDは、読み出されるデータブロックのIDに従って、OSDによって記憶されたデータブロックのメタデータを問い合わせ、読み出されるデータブロックに割り当てられた実際の物理アドレスを決定し、物理アドレスに対応する磁気ディスクから読み出されるデータブロックを読み出す。
【0107】
SSAがデータブロック読み出しコマンドを受信したならば、SSAは、読み出されるデータブロックのIDに従って、SSAによって記憶されたデータブロックのメタデータを問い合わせ、読み出されるデータブロックに割り当てられた、SAN記憶ノードの記憶アレイにおける実際の論理アドレスすなわちLUNアドレスを決定し、LUNアドレスに対応する磁気ディスクから、読み出されるデータブロックを読み出す。
【0108】
本発明のこの実施例に従う、コンピューティング、記憶、および統合のためにクラスタシステムを使用することによって、先行技術における専用のSANの使用による複雑な操作および高いコストの問題がハードウェアに関して解決される。複数の記憶デバイスが存在することが可能であり、キャッシュが各々の記憶デバイスに配置されることが可能であり、それによって、ハードウェアに関してストレージ側におけるキャッシュの拡張能力を大きく向上させる。記憶リソースは、コンピューティング・リソースに依存せず、独立に増加および減少されることができ、それによって、システムのスケーラビリティを向上させる。システムにおける永続的な磁気ディスクおよびキャッシュリソースは共有リソースのプールに仮想化され、全てのコンピューティングによって共有され、全てのコンピューティングおよびストレージはデータの読み出しおよびデータの書き込みに参加することが可能であり、同時性の向上によってシステムの記憶性能は向上される。さらに、本発明のこの実施例に従う、コンピューティング、記憶、および統合のためのクラスタシステムは、高速データ交換ネットワークを使用して通信を実行し、従って、データ交換速度はさらに増加される。
【0109】
図6は、本発明の実施例に従う、サーバ・クラスタ・システムのもう1つの構成図である。サーバ・クラスタ・システムは、サーバノード1および2、およびネットワーク記憶ノード、すなわち、製造業者AのSANデバイスを含み、ここで、サーバノード1はハードディスク1および2を含み、サーバノード2はハードディスク3を含み、ネットワーク記憶ノードは、記憶アレイ、すなわち、LUN1およびLUN2を含み、分散記憶コントローラはサーバノードにおいて動作し、分散記憶コントローラは、
この実施例において2つのサーバノードに配置されたメタデータ・コントローラであって、ここで、サーバノード1に配置されたメタデータ・コントローラは一次的なMDCであり、サーバノード2に配置されたメタデータ・コントローラは二次的なMDCであり、メタデータ・コントローラは、ハードディスクおよび記憶アレイの記憶リソースを複数の記憶パーティションに分割し、ここで、複数の記憶パーティションは共有記憶リソースのプールを形成し、各々の記憶パーティションに読み出し・書き込み制御モジュールを割り当て、グローバルパーティション情報を生成し、ここで、グローバルパーティション情報は共有記憶リソースのプールにおける各々の記憶パーティションと読み出し・書き込み制御モジュールの間の対応関係を記録し、グローバルパーティション情報を仮想ブロック・サービス・モジュールに送出するように構成された、メタデータ・コントローラと、
仮想ブロック・サービス・モジュールであって、ここで、VBSはこの実施例において各々のサーバノードに配置され、サービス層に向かい、記憶要求メッセージを受信し、記憶要求メッセージに対応する記憶パーティションを決定し、グローバルパーティション情報に従って、記憶要求メッセージに対応する記憶パーティションに対応する読み出し・書き込み制御モジュールを決定し、決定された読み出し・書き込み制御モジュールに記憶要求メッセージを送信するように構成された、仮想ブロック・サービス・モジュールと、
ハードディスクまたはネットワーク記憶ノードに向かい、記憶要求メッセージによって要求される操作を実行するように構成された、読み出し・書き込み制御モジュールであって、この実施例における読み出し・書き込み制御モジュールは、サーバノード1に配置されたOSD1およびOSD2、および、サーバノード2に配置されたOSD3、SSA1、およびSSA2を含み、ここで、OSD1はハードディスク1における読み出し・書き込み制御を実行するように構成され、OSD2はハードディスク2における読み出し・書き込み制御を実行するように構成され、OSD3はハードディスク3における読み出し・書き込み制御を実行するように構成され、SSA1はLUN1における読み出し・書き込み制御を実行するように構成され、SSA2はLUN2における読み出し・書き込み制御を実行するように構成された、読み出し・書き込み制御モジュールと、を含む。
【0110】
メタデータ・コントローラは、サーバノードにおけるオブジェクト記憶デリゲートおよびSAN記憶エージェントの配置状態を個々に決定し、決定された配置状態に従って読み出し・書き込み制御モジュールのビュー情報を生成し、ここで、読み出し・書き込み制御モジュールのビュー情報は、各々の読み出し・書き込み制御モジュールが配置されたサーバノードについての情報を示すために使用され、読み出し・書き込み制御モジュールのビュー情報を仮想ブロック・サービス・モジュールに送出するようにさらに構成される。
【0111】
さらに、メタデータ・コントローラは、具体的には、サーバ・クラスタ・システムにおいてハードディスクリソースを有するサーバノードにオブジェクト記憶デリゲートを配置することを決定し、サーバ・クラスタ・システムにおいて少ない負荷を有するサーバノードにSAN記憶エージェントを配置することを決定するように構成される。
【0112】
例えば、この実施例において、メタデータ・コントローラはサーバノード2にSSA1およびSSA2を配置する。
【0113】
仮想ブロック・サービス・モジュールは、具体的には、読み出し・書き込み制御モジュールのビュー情報に従って読み出し・書き込み制御モジュールのルーティング情報を決定し、決定された読み出し・書き込み制御モジュールに記憶要求メッセージを送信するように構成される。
【0114】
図6に表わされているこの実施例において、図3から図5のいずれか1つにおいて説明された方法がさらに実行されることが可能であり、これは本発明のこの実施例において再度詳細には説明されない。
【0115】
図7は、本発明の実施例に従う、コンピュータの構成の概要の構成図である。本発明のこの実施例のコンピュータは、
プロセッサ701、メモリ702、システムバス70、および通信インタフェース70を含むことが可能であり、ここで、CPU 701、メモリ702、および通信インタフェース70はシステムバス70を使用することによって接続され、相互通信を完了する。
【0116】
プロセッサ701は、シングル・コアまたはマルチ・コアの中央処理ユニット、または特定の集積回路とすることが可能であり、または本発明のこの実施例を実現する1つまたはより多くの集積回路として構成定義されることが可能である。
【0117】
メモリ702は、高速RAMメモリとすることが可能であり、または不揮発性メモリ(non-volatile memory)、例えば、少なくとも1つの磁気ディスクメモリとすることが可能である。
【0118】
メモリ702はコンピュータ実行命令70を記憶するように構成される。具体的には、コンピュータ実行命令70はプログラムコードを含むことが可能である。
【0119】
コンピュータが動作するとき、プロセッサ701はコンピュータ実行命令70を動作させ、本発明の実施例のうちのいずれか1つの実施例によって提供される方法を実行することが可能である。より具体的には、本発明の実施例において説明された分散記憶コントローラがコンピュータコードを使用することによって実現されるならば、コンピュータは本発明の実施例の分散記憶コントローラの機能を実行する。
【0120】
本発明の実施例において、「Aに対応するB」は、BがAと関連付けされ、BがAに従って決定されることが可能であることを示すと理解すべきである。しかし、Aに対応するBを決定することは、BがAのみに従って決定されることを意味せず、BはAおよび/または他の情報に従って決定されることも可能であるとさらに理解すべきである。
【0121】
この技術分野の当業者は、この明細書に記載された実施例において説明された例と組み合わせて、ユニットおよびアルゴリズムのステップは、電子的なハードウェア、コンピュータソフトウェア、またはそれらの組み合わせによって実現されることが可能であることに気付くことが可能である。ハードウェアとソフトウェアの間の交換可能性を明確に説明するために、上記は、機能に従って各々の例の構成およびステップを広く説明した。機能がハードウェアによって実行されるか、またはソフトウェアによって実行されるかは、技術的解決手段の特定の適用および設計の制約条件に依存する。この技術分野の当業者は、各々の特定の適用のため、説明された機能を実現するために異なる方法を使用することが可能であるが、その実現は本発明の範囲を超えると考えるべきでない。
【0122】
この適用において提供される実施例において、記載されたシステムは他の形態で実現されることが可能であることを理解すべきである。例えば、説明されたシステムの実施例は単に例示である。例えば、ユニットの分割は単に論理的な機能の分割であり、実際の実現において他の分割とすることが可能である。例えば、複数のユニットまたは構成要素が他のシステムに組み合わされ、または統合されることが可能であり、またはいくつかの特徴は無視され、または実行されないことが可能である。さらに、表示された、または説明された相互の結合または直接の結合または通信接続は、いくつかのインタフェースを通して実現されることが可能である。装置間またはユニット間の間接的な結合または通信接続は、電子的、機械的、または他の形式で実現されることが可能である。
【0123】
別個の部分として説明されたユニットは、物理的に別個とし、または物理的に別個としないことが可能であり、ユニットとして表示された部分は、物理的なユニットとし、または物理的なユニットとしないことが可能であり、1つの位置に配置されることが可能であり、または複数のネットワークユニットに分散されることが可能である。ユニットのいくつかまたは全ては、本発明の実施例の解決手段の目的を達成するための実際の必要性に従って選択されることが可能である。
【0124】
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されることが可能であり、またはユニットの各々は物理的に単独で存在することが可能であり、または2つまたはより多くのユニットが1つのユニットに統合される。統合されたユニットは、ハードウェアの形式で実現されることが可能であり、またはソフトウェアの機能ユニットの形式で実現されることが可能である。
【0125】
統合されたユニットが、ソフトウェアの機能ユニットの形式で実現され、独立の製品として販売または使用されるとき、統合されたユニットはコンピュータ読み取り可能な記憶媒体に記憶されることが可能である。そのような理解に基づいて、本質的に、本発明の技術的解決手段、または先行技術に貢献する部分、または技術的解決手段の全てまたは一部は、ソフトウェア製品の形式で実現されることが可能である。ソフトウェア製品は、記憶媒体に記憶され、本発明の実施例において説明された方法のステップの全てまたはいくつかを実行するように(パーソナルコンピュータ、サーバ、またはネットワークデバイスとすることが可能である)コンピュータデバイスに命令するためのいくつかの命令を含む。上述の記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リード・オンリ・メモリ(ROM, Read-Only Memory)、ランダム・アクセス・メモリ(RAM, Random Access Memory)、磁気ディスク、または光ディスクのような、プログラムコードを記憶できるどのような媒体も含む。
【0126】
上述した説明は、単に本発明の具体的な実施例であるが、本発明の保護範囲を限定することは意図されない。本発明において記載された技術的範囲内の、この技術分野の当業者によって容易に理解されるどのような修正または置換も本発明の保護範囲内にあるものである。従って、本発明の保護範囲は請求項の保護範囲に従うものである。
【符号の説明】
【0127】
701 プロセッサ
702 メモリ
703 システムバス
704 通信インタフェース
705 プログラム
図1
図2
図3
図4
図5
図6
図7