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

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

▶ アリババ・グループ・ホールディング・リミテッドの特許一覧

特許5730271ネットワークデータストレージシステムおよびそのデータアクセス方法
<>
  • 特許5730271-ネットワークデータストレージシステムおよびそのデータアクセス方法 図000004
  • 特許5730271-ネットワークデータストレージシステムおよびそのデータアクセス方法 図000005
  • 特許5730271-ネットワークデータストレージシステムおよびそのデータアクセス方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5730271
(24)【登録日】2015年4月17日
(45)【発行日】2015年6月3日
(54)【発明の名称】ネットワークデータストレージシステムおよびそのデータアクセス方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150514BHJP
   G06F 13/10 20060101ALI20150514BHJP
   G06F 3/06 20060101ALI20150514BHJP
【FI】
   G06F12/00 545A
   G06F12/00 535Z
   G06F13/10 340A
   G06F3/06 301A
【請求項の数】12
【全頁数】14
(21)【出願番号】特願2012-243816(P2012-243816)
(22)【出願日】2012年11月5日
(62)【分割の表示】特願2009-534958(P2009-534958)の分割
【原出願日】2007年8月27日
(65)【公開番号】特開2013-61959(P2013-61959A)
(43)【公開日】2013年4月4日
【審査請求日】2012年11月5日
(31)【優先権主張番号】200610150325.3
(32)【優先日】2006年10月26日
(33)【優先権主張国】CN
【前置審査】
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】ヤン ジンシェン
(72)【発明者】
【氏名】タン チェンロン
(72)【発明者】
【氏名】パン レイ
【審査官】 池田 聡史
(56)【参考文献】
【文献】 特開2003−248611(JP,A)
【文献】 特開2003−167815(JP,A)
【文献】 特開2006−003962(JP,A)
【文献】 特開2003−256144(JP,A)
【文献】 山内雪路,UNIX(Solaris2.5)におけるサーバの構築 第2章 DNSサーバ,OPEN DESIGN,日本,CQ出版株式会社,1997年 2月 1日,第4巻 第1号,pp.14〜20
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 3/06
G06F 13/10
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
メタデータノードと、各データ管理ノードが、複数のデータユニットを保存している複数のデータノードを管理する複数のデータ管理ノードとを有するシステムにおいてネットワークデータにアクセスするための方法において、
第1のデータ要求をクライアントから前記メタデータノードにより受信するステップであって、前記第1のデータ要求は処理すべきデータユニットの名前を含む、受信するステップ(S301)と、
前記データユニットを保存しているデータノードを管理するデータ管理ノードについての第1の経路情報を前記メタデータノードにより前記クライアントに送信するステップ(S302)と、
前記データユニットにアクセスするために、前記第1の経路情報を使用するクライアントから第2のデータ要求を前記データ管理ノードにより受信するステップ(S303)と、
前記クライアントのIDおよび前記データユニットの情報にしたがって、前記データユニットの位置情報に関連する第3のデータ要求を前記データ管理ノードにより前記メタデータノードに送信するステップ(S304)と、
前記データユニットの位置についての第2の経路情報を、前記メタデータノードにより前記データ管理ノードに返すステップ(S305)と、
当該返された第2の経路情報に基づいて、前記データ管理ノードにより前記データユニットを処理するステップ(S306)と、
当該処理の結果を前記クライアントに前記データ管理ノードにより送信するステップ(S307)と
を備えることを特徴とする方法。
【請求項2】
前記クライアントから前記第1のデータ要求を受信した後、前記データ管理ノードについての第1の経路情報を送信するステップで、前記メタデータノードは、前記データ管理ノードの第1の経路情報を前記クライアントに、
前記メタデータノード内で、処理すべきデータユニットの名前であって、前記クライアントからの第1のデータ要求の中に含まれている名前を取得し、前記データユニットのIDおよび前記データユニットの名前との間のマッピング関係に基づき、処理すべきデータユニットのIDを取得するステップと、
前記データユニットの経路演算方法に基づき、前記データユニットのIDから前記データユニットを格納する前記データノードのIDを計算するステップと、
前記データノードのIDと前記データ管理ノードのIDとの間のマッピング関係に基づき、前記データ管理ノードのIDを取得し、前記クライアントに前記データ管理ノードのIDを提供するステップと
を備える過程を用いて、送信することを特徴とする請求項1に記載の方法。
【請求項3】
前記第2の経路情報を返すステップで、前記メタデータノードは、前記第2の経路情報を前記データ管理ノードに、
前記データ管理ノードから送信された第3のデータ要求から前記データユニットのIDを取得するステップと、
前記データユニットの経路演算方法に従い、前記データユニットの前記IDに基づいて、前記データユニットを格納する前記データノードのIDおよび前記データユニットの前記データノードにおける位置情報を計算するステップと、
前記データノードの前記IDおよび前記位置情報を前記データ管理ノードに提供するステップと
を備える手順を用いて提供することを特徴とする請求項1に記載の方法。
【請求項4】
前記データ管理ノードは、格納操作を計算操作から分離することを特徴とする請求項1に記載の方法。
【請求項5】
前記格納操作は、格納ジョブキューに対応するスレッドプールを使用して実行され、前記計算操作は、計算ジョブキューに対応するスレッドプールを使用して実行されることを特徴とする請求項4に記載の方法。
【請求項6】
前記方法は、前記データ管理ノードからデータ操作コマンドを受けたことに応答して、前記操作コマンドに従い、前記データノード内のローカルのファイルシステムを利用して、前記データノードで前記データユニットを処理するステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項7】
前記データユニットは一意のIDを有することを特徴とする請求項1に記載の方法。
【請求項8】
前記データユニットのIDは、前記データユニットを格納する前記データノードのIDおよび前記データユニットの前記データノードにおける位置情報を用いて、マッピングを介して計算されることを特徴とする請求項7に記載の方法。
【請求項9】
前記データノードにおける前記データユニットを処理するステップは、
書き込み用ブロックのコピーをログファイルに提示するステップと、
前記書き込み用ブロックのコピーを前記ログファイルに提示することの成功に応答して、前記データノードにおけるローカルのファイルシステムに前記書き込み用ブロックを提示するステップと、
前記書き込み用ブロックを前記ファイルシステムへ提示することが成功した場合、前記ログファイルから前記ブロックのコピーを消去するか、さもなければ前記コピーを保持するステップと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項10】
前記方法は、前記システムが異常状態から正常状態に復帰したときに、前記ログファイルに記録された前記ブロックのコピーに従い、データ復旧を実行することを特徴とする請求項9に記載の方法。
【請求項11】
前記方法は、前記データノードのファイルロックおよび/またはネットワークファイルシステムのファイルロックを利用して、前記データユニットへのアクセスをロック保護するステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項12】
前記複数のデータユニットは電子メールアカウントであることを特徴とする請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2006年10月26日、中国特許局に出願された出願番号200610150325.3号、発明の名称を「ネットワークデータストレージシステムおよびそのデータアクセス方法」とする中国特許出願の優先権を主張し、その全ての内容は、引用により本出願に取込んでいる。
【0002】
本開示は、データストレージと管理の分野に関し、特にネットワークデータを格納するシステム、およびネットワークデータにアクセスする方法に関する。
【背景技術】
【0003】
IT技術の発展の歴史は、コンピュータ技術を中心とするプロセッサの発展を原動力として進歩する段階から、伝送技術を中心とする段階への移行を経験した。この移行は、コンピュータネットワークの発展と普及を促進する。ますます多くの企業活動の情報が、デジタル化され、デジタル化された情報の爆発的な増加、およびIT技術のストレージ技術への増大する要求を誘発している。データストレージアプリケーションには、以下で述べるような新しい特徴が見られる。
(1)データが最も貴重な財産となる。データの紛失は、企業に計り知れない損失および壊滅的な損失さえもたらす。
(2)データの総量が爆発的に増えている。
(3)24時間対応のサービスが大勢を占めている。電子商取引および大部分のネットワークサービスアプリケーションにおいて、365×24時間のサービスが標準となり、優れたハイアベイラビリティが現在のデジタルストレージシステムに求められている。
(4)ストレージの管理と保守には集中化、自動化、インテリジェント化が要求されている。
(5)ストレージ技術はプラットフォーム独立である必要がある。
【0004】
従来のストレージシステムは、DAS(Direct Attached Storage,ダイレクトアタッチドストレージ)、すなわち直接接続を介して格納することを利用した。これは、SAS(Server−Attached Storage,サーバアタッチドストレージ)とも呼ばれる。この方式において、記憶装置は、ケーブル(通常はSCSI接続ケーブル)を介してサーバに直接接続される。I/O(入力/出力)要求は、記憶装置に直接送信される。こうしたストレージ方式はサーバに依存し、記憶装置はハードウェアを積み重ねたものでしかなく、いかなるストレージ操作システムも付帯していない。サーバのバス技術に対する制限のせいで、DASを使用するシステムは弱い拡張性を有する。ユーザ接続数が増えると、サーバは、下記の理由により全システムの性能のボトルネックとなる可能性がある。
(1)コンピュータの帯域幅の制限:コンピュータ技術の発展は、コンピュータのバス帯域幅の増加を誘引しているが、今日のストレージアプリケーションの帯域幅の要求には追いつかない。
(2)ホストのメモリ容量の制限:コンピュータのメモリ容量は限られており、大量のデータアクセス要求が連続した場合、コンピュータのメモリ容量がすぐに飽和になり、残されたデータ転送要求を処理できなくなる。
(3)ファイルシステムの管理へのオーバーヘッドもデータアクセス時間を増加させる可能性がある。
【0005】
多くの既存の企業アプリケーションは、データベース技術に強く依存し、集中型データストレージのため集中型データベースサーバを用いる。これらのアプリケーションは、一般的に関連システムのシングルポイントおよび性能のボトルネックである。加えて、コストも高く、拡張することが難しい。これらの企業アプリケーションはまた、オンラインで大量のデータを同時処理することにおいて特別な困難を有する。そのため、集中型のデータストレージ・管理を使用した従来の方式は、急速に増え続ける要求をもはや満足させることができない。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示は、既存のネットワークデータストレージシステムに特有の、乏しい拡張性、高い拡張コスト、および貧弱なデータアクセス性能の課題を解決するためのネットワークデータを格納するシステムを提供する。
【0007】
同一の技術的概念基づき、本開示は、ネットワークデータにアクセスする方法をさらに提供する。
【課題を解決するための手段】
【0008】
本開示は、ネットワークデータを格納するシステムを提供する。前記システムは、データユニットを格納するために用いられるデータノードと、経路情報を格納、および管理するために用いられ、クライアントのデータ処理要求に従って前記経路情報を提供するメタデータノードと、クライアントのデータアクセス要求に従って前記データノードにおける前記要求されたデータユニットを処理するために用いられるデータ管理ノードとを含む。
【0009】
前記メタデータノード、前記データ管理ノードおよび前記データノードは、ツリー構造内で互いに接続される。前記メタデータノードは、前記ツリー構造のルートノードである。前記ルートノードは、その下に接続された1つまたは複数のデータ管理ノードを有する。各データ管理ノードは、下で1つまたは複数のデータノードと接続する。
【0010】
上記システムにおいて、前記メタデータノードに格納された前記経路情報は、前記メタデータノードから前記データ管理ノードまでの経路情報と、前記データ管理ノードから前記データノードまでの経路情報とを含む。
【0011】
前記メタデータノードは、前記データユニットの経路演算方法をさらに格納する。前記経路演算方法は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を計算するためのものである。
【0012】
上記システムにおいて、前記データ管理ノードは、データアクセスサービスおよび/またはその中に配置された冗長性ストラテジーを有することができる。
【0013】
本明細書では、前記データノードに格納されたデータユニットは、アプリケーション向けの最小データセットである。
【0014】
前記データユニット内部は、複数のファイルおよび/またはディレクトリである。前記データユニット内部のファイルは、データファイルおよび/またはインデックスファイルを含むことができる。
【0015】
上記システムは、ログ管理ノードをさらに含み、これは、ログファイルを格納するために用いられ、ログ管理サービスを提供する。
【0016】
上記システムは、ロックノードをさらに含み、これは、ロックファイルを格納するために用いられ、ロック管理サービスを提供する。
【0017】
本開示はまた、ネットワークデータにアクセスする方法も提供する。前記方法は、クライアント内で、データユニットへのアクセスの要求をメタデータノードに送信し、前記メタデータノードからデータ管理ノードの経路情報を受信するステップと、前記クライアント内で、前記データ管理ノードの前記経路情報に従って、前記データユニットへのアクセスの要求を前記データ管理ノードに送信するステップと、前記データ管理ノード内で、前記要求を受信した後、前記データユニットを格納するデータノードの経路情報を前記メタデータノードから取得し、前記データノードの前記経路情報およびクライアントにより要求された操作に従い、前記データノードにおける前記データユニットを処理するステップとを含む。
【0018】
上記方法において、前記クライアントからの前記データユニットへのアクセスの要求を前記メタデータノードが受信した後、前記メタデータノードは、前記データ管理ノードの経路情報を下記のステップを有する過程を用いて前記クライアントに送信する。すなわち、前記メタデータノード内で、前記データユニットへアクセスする要求から前記データユニットの情報を取得し、前記データユニットの情報と前記データユニットの識別子との間の関係をマッピングすることに基づき、前記データユニットの識別子を取得するステップと、前記データユニットの経路演算方法に基づき、前記データユニットの識別子から前記データユニットを格納する前記データノードの識別子を計算するステップと、前記データノードの識別子と前記データ管理ノード識別子との間の関係をマッピングすることに基づき、前記データ管理ノードの識別子を取得し、前記クライアントに前記データ管理ノードの識別子を提供するステップとである。
【0019】
上記方法において、前記メタデータノードは、前記データ管理ノードに前記データノードの経路情報を下記のステップを有する手段を用いて提供する。すなわち、前記データ管理ノードから送信された要求から前記データユニットの識別子を取得するステップと、前記データユニットの経路演算方法に従い前記データユニット識別子に基づいて前記データユニットを格納する前記データノードの識別子と前記データユニットの前記データノードにおける位置情報とを計算するステップと、前記データノードの識別子と前記データ管理ノードへの位置情報とを提供するステップとである。
【0020】
上記方法において、前記データ管理ノードは、格納操作を計算操作から分離する。
【0021】
前記格納操作は、格納タスクキューに対応するスレッドプールを用いて実行され、前記計算操作は、計算タスクキューに対応するスレッドプールを用いて実行される。
【0022】
上記方法は、前記データ管理ノードからデータ操作コマンドを受けた後、前記データノードが前記操作コマンドに従って前記データノードのローカルのファイルシステムにより前記データユニットを処理するステップをさらに含む。
【0023】
上記方法において、前記データユニットは一意識別子を有する。前記データユニットの識別子は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を用いて、マッピングを介して計算される。
【0024】
上記方法において、前記データノードにおける前記データユニットを処理するステップは、書き込み用のブロックのコピーをログファイルに提示するステップと、前記ログファイルに前記書き込み用のブロックのコピーを成功して提示した後、前記データノードのローカルのファイルシステムに前記書き込み用のブロックを提示するステップと、前記ファイルシステムへの前記書き込み用のブロックを成功して提示した場合、前記ログファイルから前記ブロックのコピーを消去するか、または反対に前記ブロックのコピーを保持するステップとをさらに含む。
【0025】
前記システムが異常状態から正常状態に復帰したときに、前記ログファイルに記録されたブロックのコピーに従いデータ復旧が実行される。
【0026】
上記方法は、前記データノードのファイルロックおよび/または前記ネットワークファイルシステムのファイルロックを使用し、前記データユニットへのアクセスをロック保護するステップをさらに含む。
【発明の効果】
【0027】
本発明は下記の利益を有することができる。
(1)ネットワークデータを格納する本開示のシステムは、データを分散型の方法で三層構造のネットワークノードに格納し、統一されたアクセス管理とルーティングを提供することによって、リニアな拡張およびアップグレードをサポートする。従って、既存技術と比較すると、本開示のシステムは、より良い拡張性とより低い拡張コストとを有する。
(2)本開示のネットワークデータにアクセスするメカニズムは、上記分散型データ格納システムに基づき、二段階の経路演算方法を採用する。これにより、データファイルの位置をクライアントに対して透明化することができる。三層構造の分散型設計は、中間層のデータ管理ノードがデータアクセスに対する処理操作を共有することを可能にするので、巧みに三層構造を構成することにより、ネットワークデータのアクセス性能を改善することができる。
(3)本開示は、ジャーナリング技術をさらに採用して、トランザクション処理をサポートし、ネットワークデータアクセスの一貫性および完全性を改善する。
(4)本開示は、ロック管理機能をさらに採用して、ネットワークファイルシステム内のファイルロック失敗の問題を解決する。
【図面の簡単な説明】
【0028】
図1】本開示による典型的なネットワークデータを格納するシステムの概略構造図を示す図である。
図2】本開示による典型的なネットワークデータを格納するシステムのツリー構造を説明する概略図を示す図である。
図3】本開示による典型的なネットワークデータにアクセスするプロセスを説明する概略図を示す図である。
【発明を実施するための形態】
【0029】
例示的な実施形態および図面を用いて、本発明を詳細に説明する。
【実施例】
【0030】
図1は、本開示によるネットワークデータを格納する例示的なシステムの概略構造図である。このデータを格納するシステムは、下記を含む。
【0031】
データノード:データノードは、ネットワーク内のノードであり、生データおよびインデックスを格納するために用いられる。この生データは、データユニットの形式でデータノードに格納される。
【0032】
管理ノード:データ管理ノードは、ネットワーク内のノードであり、中間層として振る舞い、索引付け、冗長性ストラテジーなどのお決まりのサービスを提供するために用いられる。管理ノードは、1つのグループの関連するデータノードを管理する。
【0033】
メタノード:データノードの名称、空間および関係性マッピングを管理するメタデータノードは、ネットワーク内のノードであり、基礎的な経路情報を提供するために用いられる。メタノードによって主に保持される2つの経路の関係は、メタノードから管理ノードまでの経路(一次経路)および管理ノードからデータノードまでの経路(二次経路)である。
【0034】
トランザクションログ:ジャーナリング技術に基づくトランザクション管理ノードであり、一般的には、管理ノードに配置され、ログファイルを格納し、トランザクションデータ保護を実現するために用いられる。
【0035】
ロックノード:グローバルネットワークノードであり、ファイルの形式でデータロックを格納し、データアクセスのロック管理を実現するために用いられる。
【0036】
図1のネットワークデータストレージシステムのアーキテクチャは、図2に示すようにツリー構造に組織化される。
【0037】
図2は、本開示による格納するネットワークデータのための例示的なシステムのツリー構造を示す概略図である。
【0038】
図に示すように、ネットワークデータストレージシステムにおけるノードは論理的に三層に分けられる。最下層から最上層までは、データノード、管理ノード、およびメタノードである。メタノードはルートノードとして振る舞い、複数のリーフノードとして管理ノードを有し、さらに、各管理ノードは、リーフノードとして複数のデータノードを順に有する。
【0039】
前記の例示的な実施例のネットワークデータストレージシステムを、下記の手段を用いて構成することができる。
【0040】
ステップ1:データユニットを判定し、IDをデータユニットに割り当て、データノードの中にデータユニットを分散して格納する。
【0041】
この例示的な実施形態におけるデータユニットは、ファイルシステムの層を超える抽象的なデータセットのことをいう。業務の特徴および業務の必要性に基づき、単独で管理することができる最小データセットとしてデータユニットを定義することができる。企業データの大部分の要求および処理は、明確な局所性の特徴を有する。例えば、電子メールシステムにおいて、電子メールを分類すること、索引作成すること、受信することおよび送信することは、1つの電子メールアカウントのような固定名称の空間内で実現される。この場合では、電子メールアカウントをデータユニットとして取り扱うことができる。
【0042】
データユニットは、例えば、データファイル、インデックスファイル、およびファイルディレクトリなど、複数のファイルまたはディレクトリをその中に含むことができる。これらのファイルおよびディレクトリは、データユニットを格納するデータノード内のローカルのファイルシステムにより管理される。
【0043】
データユニットのIDは、データユニットを一意的に識別する。データユニットのIDは、2個の情報を含む。すなわち、データユニットを格納するデータノードのID、およびデータユニットのデータノードにおける具体的な位置情報である。これらの2個の情報を、データユニットの経路演算方法を用いてデータユニットのIDから計算することができる。従って、データユニットのIDは、データユニットとデータユニットを格納するデータノードとの間の対応関係を暗に含む。
【0044】
ステップ2:経路演算方法と経路情報を判定し、メタノードに情報を格納する。
【0045】
メタノードによって保持される経路情報は、以下を含む。すなわち、メタノードから管理ノードまでの経路の情報(すなわち、一次経路情報)、および管理ノードからデータノードまでの経路の情報(すなわち、二次経路情報)である。これらの2種類の経路情報は、下記のマッピング関係およびマッピング演算方法を用いて実装される。
【0046】
データユニット情報(例えば、データユニットの名称)と関連したデータユニットのIDとの間のマッピング関係テーブル、およびデータノードIDと管理ノードIDとの間のマッピング関係テーブルを確立し、経路演算方法を用いてデータユニットを格納するデータノードのIDとこのデータユニットのデータノードにおける具体的な位置情報とをデータユニットのIDから取得することができるように、データユニットの経路演算方法を設定する。
【0047】
一次経路を実装するプロセスは、下記を含むことができる。すなわち、データユニット情報とデータユニットのIDとの間のマッピング関係テーブル、データユニットの経路演算方法、およびデータノードIDと管理ノードIDとの間のマッピング関係テーブルを順に適用することにより、メタノードから管理ノードまでの経路を取得する。
【0048】
二次経路を実装するプロセスは、下記を含む。すなわち、管理ノードからメタノードに要求を送信し、管理ノードからメタデータによるデータユニットの経路演算方法に従い要求されたデータユニットを格納するデータノードまでの経路を取得する。
【0049】
ステップ3:管理ノードを下記のように配置する。
【0050】
管理データアクセスサービス(例えば、インデックスサービス)に配置し、場合によっては冗長性ストラテジーも配置する。そして、
【0051】
管理ノード内部で、格納(入出力制約タスク)と計算(CPU制約タスク)を分離する技術を採用し、タスクを2つのキューに分ける。すなわち、計算タスクキューと格納タスクキューは、2つの分かれたスレッドプールにより同時に完了し、CPUおよびI/Oリソースを充分に利用する。
【0052】
前述の例示的な実施形態におけるネットワークデータストレージシステムに基づき、ネットワークデータにアクセスする過程が、図3に示される。
【0053】
図3は、本開示によるネットワークデータにアクセスする例示的な過程を説明する概略図を示す。本プロセスは下記のステップを含む。
【0054】
S301で、クライアントは、メタノードへデータにアクセスする要求を送信し、アクセスを要求されているデータユニットの記述的情報(例えば、データユニットの名称)を提供する。
【0055】
S302で、メタノードは、クライアントに一次経路情報を返し、データユニットを管理する責任がある管理ノードの位置情報を提供する。
【0056】
メタノードは、クライアントの要求からデータユニットの記述的情報を取得し、データユニットの記述的情報とデータユニットIDとの間のマッピング関係テーブルに基づき、クライアントによって要求されたデータユニットのIDを取得する。データユニットの経路演算方法に基づき、データユニットを格納するデータノードのIDを、データユニットのIDから計算する。データノードIDと管理ノードIDとの間のマッピング関係テーブルを用いて、データノードを管理する管理ノードのIDを続けて取得する。獲得した管理ノードのIDは次いで、メタノードによりクライアントに送られる。
【0057】
S303で、クライアントは、一次経路情報を用いて管理ノードを探し出した後、データにアクセスする要求を管理ノードに送信する。
【0058】
S304で、管理ノードは、クライアントの識別および要求内のデータユニットの情報に従って、データユニットのネットワークにおける位置をメタノードに要求する。
【0059】
上記S302において、メタノードがクライアントに一次経路情報を返す場合に、メタノードはクライアントが要求したデータユニットのIDも同時に返すことができる。この場合、S303でデータにアクセスするクライアントの要求は、アクセスを要求されているデータユニットのIDを含み、ステップS304における管理ノードからメタノードへの要求もデータユニットのIDを含む。
【0060】
S305で、メタノードは、管理ノードに二次経路情報を返し、データユニットのネットワークにおける位置を知らせる。
【0061】
管理ノードにより送信された要求から、メタノードはデータユニットのIDを取得し、データユニットの経路演算方法を用いてデータユニットのIDから、データノードIDおよびデータノード内のデータユニットの具体的な位置を計算し、この情報を管理ノードに返す。
【0062】
S306で、管理ノードは、位置情報に基づき、データユニットを格納するデータノードおよびデータユニットのデータノードにおける位置を探し出し、クライアントの要求に従って、データユニット中のデータを処理する。
【0063】
データノードは、管理ノードの操作コマンドに従いローカルファイルシステムを介してデータユニットを処理する。
【0064】
S307で、管理ノードは、必要に応じて、データ処理結果をクライアントに返す。
【0065】
データにアクセスする上記過程において、管理ノードは格納(入出力制約タスク)と計算(CPU制約タスク)を内部で分離する技術を採用し、タスクを2つのキューに分け、計算タスクキューおよび格納タスクキューは、それぞれ2つの分かれたスレッドにより同時に完了する。
【0066】
データにアクセスする上記の過程は、また、本発明の例示的な実施形態の中でジャーナリングメカニズムおよびロック技術を含むトランザクション処理メカニズムを利用して、ネットワークデータアクセスの信頼性を保証している。
【0067】
多くのファイル操作は、非アトミックアクティビィティ(non-atomic activities)である。特に複数のファイルまたは複数のノードに渡る過程において、データの一貫性および完全性は損傷する傾向があり、異常なシステムのシャットダウンなど、異常な状態を誘引する。データベースおよびオペレーティングシステムのファイルシステムによって提供されるログ保護メカニズムの着想を取り入れて、本発明は、本発明の実施形態におけるような非データベース構造を有するデータにアクセスするためトランザクション保護メカニズムを提供する。
【0068】
本開示の例示的な実施形態におけるデータユニットがアクセスされる場合(例えば、アクセスまたは格納操作)、書き込み用ブロックのコピーがログファイルに書き込まれる。ログファイルに送られた関連した入出力データが完全に転送されたとき(すなわち、データはログファイルへ成功して提示された)、データノードのローカルのファイルシステムにブロックが書き込まれる。ファイルシステムへ送られている入出力データが完全に送信された場合(すなわち、ファイルシステムへデータが成功して提示された場合)、ログファイルからブロックのコピーが除去される。ファイルシステムへの入出力データの送信が失敗した場合、ログファイルはこのブロックのコピーを残す。
【0069】
システムがクラッシュした場合、または必要に応じてシステムを再起動する場合、システムは先ずログファイルを読み取り、ログファイル中に記録されたブロックのコピーに従い復旧を行い、例外の発生前の正常な状態にシステムは復旧することができる。
【0070】
トランザクションの分離性を強化するため、本発明の例示的な実施形態はさらに、ロックメカニズムを備える。トランザクションの分離性は、一般的には、トランザクションによってアクセスされているリソースをロックすることにより保証される。さらに、ロッキング技術は、ファイルトランザクションの特性、並行処理および高信頼性を保証するため、非常に有用なツールである。
【0071】
本発明の例示的な実施形態は、ローカルのハードディスク内で広く用いられるシングルノードのファイルロックであるDotlockおよびネットワークファイルシステムにより採用されているBSDベースのシステムのPOSIX−compliant Flock()またはFcntl()の組み合わせを使用する。具体的な実装は、下記のとおりである。
【0072】
先ず、DotLockを取得する。このステップで、複数のノードによる取得は、可能性がある。成功した取得の後で、Flock()またはFcntl()の取得を試みる。これらのロックは、ファイルの形式で、グローバルノード内に保存される。復旧の間、システムは、任意のサスペンデッドロックをチェックし、解放する。ロック粒度は、1つのデータブロック、1つのファイル、1つのディレクトリ、または1つのデータノードに対してさえ、1つのロックであってよい。
【0073】
下記では、説明のため、大容量の電子メールシステムにストレージ機能を追加した例を使用する。
【0074】
ステップ1:データプランを行い、システムによって管理される最小のデータユニットを判定する。
【0075】
電子メールアドレス(電子メールアカウント)は、一般的に、ユーザ名とドメイン名、それらの間の記号@から構成される。電子メールアカウントを最小のデータユニットとしてカウントすることや、ドメイン名をデータユニットとして取り扱うことができる。例示的な本実施形態は、電子メールアカウントをデータユニットとなるように選択する。
【0076】
ステップ2:経路演算方法およびルーティングテーブルを判定する。
【0077】
経路演算方法をプラニングする目的は、ユーザにより提供される電子メールアカウントに基づき、メールボックスの内容の格納場所をいかにして探し出すかという問題を解決することである。常時拡張するシステムの要領をサポートするため、例示的な実施形態は、ルーティングのために32ビットのアドレス空間を使用する。従って、最大1G(すなわち、約10億)のユーザをサポートすることができる。この32ビットのアドレス空間は、RID(Route ID)と呼ばれ、電子メールアカウントを一意的に識別することのために用いられる。例示的な本実施形態は、1つのデータノードは1M(220=1,048,576)のユーザまでをサポートすることができると仮定する。従って、データノードに対するアドレス空間のサイズは1Mであり、具体的なアドレスを、一般的にローカルのファイルシステムのディレクトリにより表すことができる。例示的な本実施形態は、具体的なディレクトリをマッピングすることのために下位20ビットを使用し、データノード内の内部アドレスデータIDと呼ばれる。各データノードは、一意の連続する番号NSN(Node Sequence Number)を有し、32ビットのRIDの上位12ビットにより、表される。具体的には、RID>>20=NSN、すなわち、RIDを20ビット右シフトするとNSNが得られる。
【0078】
メタノードに格納されたルーティングテーブルの例が、表1および表2に示される。
【0079】
【表1】
【0080】
【表2】
【0081】
表2は、各々の管理ノードが3つのノードを管理することを示す。アドレスxxx@yyy.comからの要求は、識別子worker−1を有する管理ノードによって処理される。
【0082】
ステップ3:データプランとルーティングストラテジーの制定後、容量プランを行う。
【0083】
ユーザが少ないときは、1台の管理ノードと1つのデータノード(0の連続番号を持ち、0−1Mのユーザを管理することに対して責任がある)を配置することができる。ユーザの数が増加するにつれて、1つのデータノードではもはや格納の要求を満足することができない場合に、新しいデータノードが追加される。新しいデータノードの連続番号を1、すなわち、関連したRIDの上位12ビットが000000000001と仮定する。この新しいデータノードは、RIDの下位20ビットの1Mと2Mとの間のユーザを管理することに対し責任がある。上記のように、業務が拡張し続けるにつれて、システムは直線的に拡張し続けることができるので、大量のデータの格納を実現することができる。
【0084】
ステップ4:メタノードを配置する。
【0085】
表1および表2のような経路情報テーブルを、メタノードのデータベースに格納することができ、または、ファイルの形式で格納することができる。経路情報テーブルはサイズにおいて大きくないため、サーバが起動した後、ルーティングテーブル全体を内部メモリに置くことができる。これは、クライアントの要求に対し迅速な応答を可能にする。異なるアプリケーションに対し、異なるストラテジーを採用することができる。例えば、良く組織化されたデータ規則を持つ簡単なアプリケーションに対しては、メタノードを、アプリケーションによって提供される一意のデータIDを用いて実装される2段階のハッシュアルゴリズムまで単純化することができる。
【0086】
ステップ5:管理ノードのサービスを配置し、インデックスを制定するように設定を指定する。
【0087】
格納する必要があるデータに索引付けをするために、管理ノードにデータ検索機能を追加する。関係のあるデータノードにインデックスファイルおよびデータファイルが格納される。業務に関係のあるデータ処理が要求された場合、サービス機能を果たす関係のある論理ジョブを、関連したサーバ内に配置する。管理ノードは、格納と計算とを分離する技術を使用して、システムの性能を充分に調査する。
【0088】
今後の業務の発展に伴い、システムは、要求されたように連続してその容量を拡張することができる。ユーザの数が増加するにつれて、データノードを連続的に追加することができる。3つのデータノードが追加される毎に、1つの新しい管理ノードを配置することができる。メタノードに関しては、一般的には、1台のサーバしか必要としない。代替的に、システムのシングルポイントとならないようにするため、バックアップメカニズムを採用し、バックアップ用の追加のメタノードサーバを追加することができる。
【産業上の利用可能性】
【0089】
前記の好ましい実施形態は、比較的簡単な電子メールシステムに照準をあてている。しかしながら、例示的な実施形態により示されるような本発明のネットワークデータストレージシステムのアプリケーションシナリオは、この特定の種類のアプリケーションに限られない。本開示の例示的な実施形態により示されるネットワークデータストレージシステムは、B2B電子商取引のプラットフォームおよびソフトウェアに特に適している。この種のアプリケーションは、一般的に、企業およびユーザが中心であり、大量のオンライントランザクション処理を有する。従って、1ユーザまたは1企業を、1つのデータユニットの集合として扱うことができる。データは、主に内部で所有されるため、他のユーザは、このデータにアクセスすることを許されない。管理のためにこのデータを1つのデータユニットの集合として取り扱うことは、企業データが物理的に独立し分離性することを保証し、他のユーザのデータと混ざることがなくなる。このことは、また、オンライン検索および業務処理を同時にサポートする。
【0090】
データベースと比較すると、この方法は明らかな利点を有する。データベースは、各企業ユーザに対し一組のデータベースを生成することができず、一般的には、同じ種類の全ての企業のアプリケーションのデータを、安全な分離は物理的に実装されていない1つのテーブルに置かなければならない。このため、不正アクセスなどの問題を処理する関連したアプリケーションを必要とする。多くの数のユーザがあるとき、このデータベースの方法は、深刻な性能の問題を引き起こす可能性がある。
【0091】
明らかに、当業者は、本発明の趣旨および範囲を逸脱せずに、多くの異なる方法で本発明に変更および修正を行うことができる。従って、本発明は、本発明の特許請求の範囲およびその均等の範囲に含まれる全ての変更および変形を網羅することが意図される。
図1
図2
図3