(57)【要約】  ネットワークデータを格納するシステムおよびネットワークデータアクセス方法を提供する。前記ネットワークデータを格納するシステムは、データユニットを格納するデータノードと、経路情報を格納、及び管理し、クライアントのデータ処理要求に基づき、前記クライアントに前記経路情報を提供するメタデータノードと、前記クライアントからのデータアクセス要求に基づき、前記データノードにおける要求されたデータユニットを処理するデータ管理ノードとを備える。
2010507876.tif 000002
【特許請求の範囲】
【請求項１】
データユニットを格納するために用いられるデータノードと、
経路情報を格納、管理するために用いられ、クライアントのデータ処理要求に従って、経路情報を提供するメタデータノードと、
前記クライアントのデータアクセス要求に従って、前記データノードにおける要求されたデータユニットを処理するために用いられるデータ管理ノードと
を備えることを特徴とするネットワークデータを格納するシステム。
【請求項２】
前記メタデータノード、前記データ管理ノード、および前記データノードは、互いにツリー構造内で接続され、
前記メタデータノードは、前記ツリー構造のルートノードであり、前記ルートノードは、下で１つまたは複数のデータ管理ノードと接続しており、
各データ管理ノードは、下で１つまたは複数のデータノードと接続することを特徴とする請求項１に記載のシステム。
【請求項３】
前記メタデータノードに格納された前記経路情報は、
前記メタデータノードから前記データ管理ノードまでの経路に関する経路情報と、
前記データ管理ノードから前記データノードまでの経路に関する経路情報と
を備えることを特徴とする請求項１に記載のシステム。
【請求項４】
前記メタデータノードは、前記データユニットの経路演算方法をさらに格納し、前記経路演算方法は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を計算するためのものであることを特徴とする請求項３に記載のシステム。
【請求項５】
前記データ管理ノードは、データアクセスサービスおよび／またはその中に配置された冗長性ストラテジーを有することを特徴とする請求項１に記載のシステム。
【請求項６】
前記データノードに格納された前記データユニットは、業務アプリケーション向けの最小データセットであることを特徴とする請求項１に記載のシステム。
【請求項７】
前記データユニットは、内部に複数のファイルおよび／またはディレクトリを含むことを特徴とする請求項６に記載のシステム。
【請求項８】
前記データユニット内のファイルは、データファイルおよび／またはインデックスファイルを含むことを特徴とする請求項７に記載のシステム。
【請求項９】
前記システムは、ログファイルを格納するために用いられ、ログ管理サービスを提供するログ管理ノードをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記システムは、ロックファイルを格納するために用いられ、ロック管理サービスを提供するロックノードをさらに備えることを特徴とする請求項１または９に記載のシステム。
【請求項１１】
クライアント内で、データユニットへのアクセスの要求をメタデータノードに送信し、前記メタデータノードからデータ管理ノードの経路情報を受信するステップと、
前記クライアント内で、前記データ管理ノードの前記経路情報に従って、前記データユニットへのアクセスの要求を前記データ管理ノードに送信するステップと、
前記データ管理ノード内で、前記要求を受信した後、前記データユニットを格納するデータノードの経路情報を前記メタデータノードから取得し、前記データノードの前記経路情報および前記クライアントにより要求された操作に従って、前記データノードにおける前記データユニットを処理するステップと
を備えることを特徴とするネットワークデータにアクセスする方法。
【請求項１２】
前記クライアントから前記データユニットへのアクセスの要求を受信した後、前記メタデータノードは、前記データ管理ノードの経路情報を前記クライアントに、
前記メタデータノード内で、前記データユニットへのアクセス要求から前記データユニットの情報を取得し、前記データユニットの情報および前記データユニットの識別子との間のマッピング関係に基づき、前記データユニットの識別子を取得するステップと、
前記データユニットの経路演算方法に基づき、前記データユニットの識別子から前記データユニットを格納する前記データノードの識別子を計算するステップと、
前記データノードの識別子と前記データ管理ノードの識別子との間のマッピング関係に基づき、前記データ管理ノードの識別子を取得し、前記クライアントに前記データ管理ノードの識別子を提供するステップと
を備える過程を用いて、送信することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記メタデータノードは、前記データノードの前記経路情報を前記データ管理ノードに、
前記管理ノードから送信された要求から前記データユニットの識別子を取得するステップと、
前記データユニットの経路演算方法に従い、前記データユニットの前記識別子に基づいて、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を計算するステップと、
前記データノードの前期識別子および前記位置情報を前記データ管理ノードに提供するステップと
を備える手順を用いて提供することを特徴とする請求項１１に記載の方法。
【請求項１４】
前記データ管理ノードは、格納操作を計算操作から分離することを特徴とする請求項１１に記載の方法。
【請求項１５】
前記格納操作は、格納ジョブキューに対応するスレッドプールを使用して実行され、前記計算操作は、計算ジョブキューに対応するスレッドプールを使用して実行されることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記方法は、前記データ管理ノードからデータ操作コマンドを受けた後、前記操作コマンドに従い、前記データノードのローカルのファイルシステムを利用して、前記データノードで前記データユニットを処理するステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１７】
前記データユニットは一意識別子を有することを特徴とする請求項１１乃至１６のいずれかに記載の方法。
【請求項１８】
前記データユニットの識別子は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を用いて、マッピングを介して計算されることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記データノードにおける前記データユニットを処理するステップは、
書き込み用ブロックのコピーをログファイルに提示するステップと、
前記書き込み用ブロックのコピーを前記ログファイルに成功して提示した後、前記データノードにおける前記ローカルのファイルシステムに前記書き込み用ブロックを提示するステップと、
前記書き込み用ブロックを前記ファイルシステムへ成功して提示した場合、前記ログファイルから前記ブロックのコピーを消去するか、さもなければ前記コピーを保持するステップと
をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項２０】
前記方法は、前記システムが異常状態から正常状態に復帰したときに、前記ログファイルに記録された前記ブロックのコピーに従い、データ復旧を実行することを特徴とする請求項１９に記載の方法。
【請求項２１】
前記方法は、前記データノードのファイルロックおよび／または前記ネットワークファイルシステムのファイルロックを利用して、前記データユニットへのアクセスをロック保護するステップをさらに備えることを特徴とする請求項１１または１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００６年１０月２６日、中国特許局に出願された出願番号２００６１０１５０３２５．３号、発明の名称を「ネットワークデータストレージシステムおよびそのデータアクセス方法」とする中国特許出願の優先権を主張し、その全ての内容は、引用により本出願に取込んでいる。
【０００２】
本開示は、データストレージと管理の分野に関し、特にネットワークデータを格納するシステム、およびネットワークデータにアクセスする方法に関する。
【背景技術】
【０００３】
ＩＴ技術の発展の歴史は、コンピュータ技術を中心とするプロセッサの発展を原動力として進歩する段階から、伝送技術を中心とする段階への移行を経験した。この移行は、コンピュータネットワークの発展と普及を促進する。ますます多くの企業活動の情報が、デジタル化され、デジタル化された情報の爆発的な増加、およびＩＴ技術のストレージ技術への増大する要求を誘発している。データストレージアプリケーションには、以下で述べるような新しい特徴が見られる。
（１）データが最も貴重な財産となる。データの紛失は、企業に計り知れない損失および壊滅的な損失さえもたらす。
（２）データの総量が爆発的に増えている。
（３）２４時間対応のサービスが大勢を占めている。電子商取引および大部分のネットワークサービスアプリケーションにおいて、３６５×２４時間のサービスが標準となり、優れたハイアベイラビリティが現在のデジタルストレージシステムに求められている。
（４）ストレージの管理と保守には集中化、自動化、インテリジェント化が要求されている。
（５）ストレージ技術はプラットフォーム独立である必要がある。
【０００４】
従来のストレージシステムは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ，ダイレクトアタッチドストレージ）、すなわち直接接続を介して格納することを利用した。これは、ＳＡＳ（Ｓｅｒｖｅｒ−Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ，サーバアタッチドストレージ）とも呼ばれる。この方式において、記憶装置は、ケーブル（通常はＳＣＳＩ接続ケーブル）を介してサーバに直接接続される。Ｉ／Ｏ（入力／出力）要求は、記憶装置に直接送信される。こうしたストレージ方式はサーバに依存し、記憶装置はハードウェアを積み重ねたものでしかなく、いかなるストレージ操作システムも付帯していない。サーバのバス技術に対する制限のせいで、ＤＡＳを使用するシステムは弱い拡張性を有する。ユーザ接続数が増えると、サーバは、下記の理由により全システムの性能のボトルネックとなる可能性がある。
（１）コンピュータの帯域幅の制限：コンピュータ技術の発展は、コンピュータのバス帯域幅の増加を誘引しているが、今日のストレージアプリケーションの帯域幅の要求には追いつかない。
（２）ホストのメモリ容量の制限：コンピュータのメモリ容量は限られており、大量のデータアクセス要求が連続した場合、コンピュータのメモリ容量がすぐに飽和になり、残されたデータ転送要求を処理できなくなる。
（３）ファイルシステムの管理へのオーバーヘッドもデータアクセス時間を増加させる可能性がある。
【０００５】
多くの既存の企業アプリケーションは、データベース技術に強く依存し、集中型データストレージのため集中型データベースサーバを用いる。これらのアプリケーションは、一般的に関連システムのシングルポイントおよび性能のボトルネックである。加えて、コストも高く、拡張することが難しい。これらの企業アプリケーションはまた、オンラインで大量のデータを同時処理することにおいて特別な困難を有する。そのため、集中型のデータストレージ・管理を使用した従来の方式は、急速に増え続ける要求をもはや満足させることができない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本開示は、既存のネットワークデータストレージシステムに特有の、乏しい拡張性、高い拡張コスト、および貧弱なデータアクセス性能の課題を解決するためのネットワークデータを格納するシステムを提供する。
【０００７】
同一の技術的概念基づき、本開示は、ネットワークデータにアクセスする方法をさらに提供する。
【課題を解決するための手段】
【０００８】
本開示は、ネットワークデータを格納するシステムを提供する。前記システムは、データユニットを格納するために用いられるデータノードと、経路情報を格納、および管理するために用いられ、クライアントのデータ処理要求に従って前記経路情報を提供するメタデータノードと、クライアントのデータアクセス要求に従って前記データノードにおける前記要求されたデータユニットを処理するために用いられるデータ管理ノードとを含む。
【０００９】
前記メタデータノード、前記データ管理ノードおよび前記データノードは、ツリー構造内で互いに接続される。前記メタデータノードは、前記ツリー構造のルートノードである。前記ルートノードは、その下に接続された１つまたは複数のデータ管理ノードを有する。各データ管理ノードは、下で１つまたは複数のデータノードと接続する。
【００１０】
上記システムにおいて、前記メタデータノードに格納された前記経路情報は、前記メタデータノードから前記データ管理ノードまでの経路情報と、前記データ管理ノードから前記データノードまでの経路情報とを含む。
【００１１】
前記メタデータノードは、前記データユニットの経路演算方法をさらに格納する。前記経路演算方法は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を計算するためのものである。
【００１２】
上記システムにおいて、前記データ管理ノードは、データアクセスサービスおよび／またはその中に配置された冗長性ストラテジーを有することができる。
【００１３】
本明細書では、前記データノードに格納されたデータユニットは、アプリケーション向けの最小データセットである。
【００１４】
前記データユニット内部は、複数のファイルおよび／またはディレクトリである。前記データユニット内部のファイルは、データファイルおよび／またはインデックスファイルを含むことができる。
【００１５】
上記システムは、ログ管理ノードをさらに含み、これは、ログファイルを格納するために用いられ、ログ管理サービスを提供する。
【００１６】
上記システムは、ロックノードをさらに含み、これは、ロックファイルを格納するために用いられ、ロック管理サービスを提供する。
【００１７】
本開示はまた、ネットワークデータにアクセスする方法も提供する。前記方法は、クライアント内で、データユニットへのアクセスの要求をメタデータノードに送信し、前記メタデータノードからデータ管理ノードの経路情報を受信するステップと、前記クライアント内で、前記データ管理ノードの前記経路情報に従って、前記データユニットへのアクセスの要求を前記データ管理ノードに送信するステップと、前記データ管理ノード内で、前記要求を受信した後、前記データユニットを格納するデータノードの経路情報を前記メタデータノードから取得し、前記データノードの前記経路情報およびクライアントにより要求された操作に従い、前記データノードにおける前記データユニットを処理するステップとを含む。
【００１８】
上記方法において、前記クライアントからの前記データユニットへのアクセスの要求を前記メタデータノードが受信した後、前記メタデータノードは、前記データ管理ノードの経路情報を下記のステップを有する過程を用いて前記クライアントに送信する。すなわち、前記メタデータノード内で、前記データユニットへアクセスする要求から前記データユニットの情報を取得し、前記データユニットの情報と前記データユニットの識別子との間の関係をマッピングすることに基づき、前記データユニットの識別子を取得するステップと、前記データユニットの経路演算方法に基づき、前記データユニットの識別子から前記データユニットを格納する前記データノードの識別子を計算するステップと、前記データノードの識別子と前記データ管理ノード識別子との間の関係をマッピングすることに基づき、前記データ管理ノードの識別子を取得し、前記クライアントに前記データ管理ノードの識別子を提供するステップとである。
【００１９】
上記方法において、前記メタデータノードは、前記データ管理ノードに前記データノードの経路情報を下記のステップを有する手段を用いて提供する。すなわち、前記データ管理ノードから送信された要求から前記データユニットの識別子を取得するステップと、前記データユニットの経路演算方法に従い前記データユニット識別子に基づいて前記データユニットを格納する前記データノードの識別子と前記データユニットの前記データノードにおける位置情報とを計算するステップと、前記データノードの識別子と前記データ管理ノードへの位置情報とを提供するステップとである。
【００２０】
上記方法において、前記データ管理ノードは、格納操作を計算操作から分離する。
【００２１】
前記格納操作は、格納タスクキューに対応するスレッドプールを用いて実行され、前記計算操作は、計算タスクキューに対応するスレッドプールを用いて実行される。
【００２２】
上記方法は、前記データ管理ノードからデータ操作コマンドを受けた後、前記データノードが前記操作コマンドに従って前記データノードのローカルのファイルシステムにより前記データユニットを処理するステップをさらに含む。
【００２３】
上記方法において、前記データユニットは一意識別子を有する。前記データユニットの識別子は、前記データユニットを格納する前記データノードの識別子および前記データユニットの前記データノードにおける位置情報を用いて、マッピングを介して計算される。
【００２４】
上記方法において、前記データノードにおける前記データユニットを処理するステップは、書き込み用のブロックのコピーをログファイルに提示するステップと、前記ログファイルに前記書き込み用のブロックのコピーを成功して提示した後、前記データノードのローカルのファイルシステムに前記書き込み用のブロックを提示するステップと、前記ファイルシステムへの前記書き込み用のブロックを成功して提示した場合、前記ログファイルから前記ブロックのコピーを消去するか、または反対に前記ブロックのコピーを保持するステップとをさらに含む。
【００２５】
前記システムが異常状態から正常状態に復帰したときに、前記ログファイルに記録されたブロックのコピーに従いデータ復旧が実行される。
【００２６】
上記方法は、前記データノードのファイルロックおよび／または前記ネットワークファイルシステムのファイルロックを使用し、前記データユニットへのアクセスをロック保護するステップをさらに含む。
【発明の効果】
【００２７】
本発明は下記の利益を有することができる。
（１）ネットワークデータを格納する本開示のシステムは、データを分散型の方法で三層構造のネットワークノードに格納し、統一されたアクセス管理とルーティングを提供することによって、リニアな拡張およびアップグレードをサポートする。従って、既存技術と比較すると、本開示のシステムは、より良い拡張性とより低い拡張コストとを有する。
（２）本開示のネットワークデータにアクセスするメカニズムは、上記分散型データ格納システムに基づき、二段階の経路演算方法を採用する。これにより、データファイルの位置をクライアントに対して透明化することができる。三層構造の分散型設計は、中間層のデータ管理ノードがデータアクセスに対する処理操作を共有することを可能にするので、巧みに三層構造を構成することにより、ネットワークデータのアクセス性能を改善することができる。
（３）本開示は、ジャーナリング技術をさらに採用して、トランザクション処理をサポートし、ネットワークデータアクセスの一貫性および完全性を改善する。
（４）本開示は、ロック管理機能をさらに採用して、ネットワークファイルシステム内のファイルロック失敗の問題を解決する。
【図面の簡単な説明】
【００２８】
【図１】本開示による典型的なネットワークデータを格納するシステムの概略構造図を示す図である。
【図２】本開示による典型的なネットワークデータを格納するシステムのツリー構造を説明する概略図を示す図である。
【図３】本開示による典型的なネットワークデータにアクセスするプロセスを説明する概略図を示す図である。
【発明を実施するための形態】
【００２９】
例示的な実施形態および図面を用いて、本発明を詳細に説明する。
【実施例】
【００３０】
図１は、本開示によるネットワークデータを格納する例示的なシステムの概略構造図である。このデータを格納するシステムは、下記を含む。
【００３１】
データノード：データノードは、ネットワーク内のノードであり、生データおよびインデックスを格納するために用いられる。この生データは、データユニットの形式でデータノードに格納される。
【００３２】
管理ノード：データ管理ノードは、ネットワーク内のノードであり、中間層として振る舞い、索引付け、冗長性ストラテジーなどのお決まりのサービスを提供するために用いられる。管理ノードは、１つのグループの関連するデータノードを管理する。
【００３３】
メタノード：データノードの名称、空間および関係性マッピングを管理するメタデータノードは、ネットワーク内のノードであり、基礎的な経路情報を提供するために用いられる。メタノードによって主に保持される２つの経路の関係は、メタノードから管理ノードまでの経路（一次経路）および管理ノードからデータノードまでの経路（二次経路）である。
【００３４】
トランザクションログ：ジャーナリング技術に基づくトランザクション管理ノードであり、一般的には、管理ノードに配置され、ログファイルを格納し、トランザクションデータ保護を実現するために用いられる。
【００３５】
ロックノード：グローバルネットワークノードであり、ファイルの形式でデータロックを格納し、データアクセスのロック管理を実現するために用いられる。
【００３６】
図１のネットワークデータストレージシステムのアーキテクチャは、図２に示すようにツリー構造に組織化される。
【００３７】
図２は、本開示による格納するネットワークデータのための例示的なシステムのツリー構造を示す概略図である。
【００３８】
図に示すように、ネットワークデータストレージシステムにおけるノードは論理的に三層に分けられる。最下層から最上層までは、データノード、管理ノード、およびメタノードである。メタノードはルートノードとして振る舞い、複数のリーフノードとして管理ノードを有し、さらに、各管理ノードは、リーフノードとして複数のデータノードを順に有する。
【００３９】
前記の例示的な実施例のネットワークデータストレージシステムを、下記の手段を用いて構成することができる。
【００４０】
ステップ１：データユニットを判定し、ＩＤをデータユニットに割り当て、データノードの中にデータユニットを分散して格納する。
【００４１】
この例示的な実施形態におけるデータユニットは、ファイルシステムの層を超える抽象的なデータセットのことをいう。業務の特徴および業務の必要性に基づき、単独で管理することができる最小データセットとしてデータユニットを定義することができる。企業データの大部分の要求および処理は、明確な局所性の特徴を有する。例えば、電子メールシステムにおいて、電子メールを分類すること、索引作成すること、受信することおよび送信することは、１つの電子メールアカウントのような固定名称の空間内で実現される。この場合では、電子メールアカウントをデータユニットとして取り扱うことができる。
【００４２】
データユニットは、例えば、データファイル、インデックスファイル、およびファイルディレクトリなど、複数のファイルまたはディレクトリをその中に含むことができる。これらのファイルおよびディレクトリは、データユニットを格納するデータノード内のローカルのファイルシステムにより管理される。
【００４３】
データユニットのＩＤは、データユニットを一意的に識別する。データユニットのＩＤは、２個の情報を含む。すなわち、データユニットを格納するデータノードのＩＤ、およびデータユニットのデータノードにおける具体的な位置情報である。これらの２個の情報を、データユニットの経路演算方法を用いてデータユニットのＩＤから計算することができる。従って、データユニットのＩＤは、データユニットとデータユニットを格納するデータノードとの間の対応関係を暗に含む。
【００４４】
ステップ２：経路演算方法と経路情報を判定し、メタノードに情報を格納する。
【００４５】
メタノードによって保持される経路情報は、以下を含む。すなわち、メタノードから管理ノードまでの経路の情報（すなわち、一次経路情報）、および管理ノードからデータノードまでの経路の情報（すなわち、二次経路情報）である。これらの２種類の経路情報は、下記のマッピング関係およびマッピング演算方法を用いて実装される。
【００４６】
データユニット情報（例えば、データユニットの名称）と関連したデータユニットのＩＤとの間のマッピング関係テーブル、およびデータノードＩＤと管理ノードＩＤとの間のマッピング関係テーブルを確立し、経路演算方法を用いてデータユニットを格納するデータノードのＩＤとこのデータユニットのデータノードにおける具体的な位置情報とをデータユニットのＩＤから取得することができるように、データユニットの経路演算方法を設定する。
【００４７】
一次経路を実装するプロセスは、下記を含むことができる。すなわち、データユニット情報とデータユニットのＩＤとの間のマッピング関係テーブル、データユニットの経路演算方法、およびデータノードＩＤと管理ノードＩＤとの間のマッピング関係テーブルを順に適用することにより、メタノードから管理ノードまでの経路を取得する。
【００４８】
二次経路を実装するプロセスは、下記を含む。すなわち、管理ノードからメタノードに要求を送信し、管理ノードからメタデータによるデータユニットの経路演算方法に従い要求されたデータユニットを格納するデータノードまでの経路を取得する。
【００４９】
ステップ３：管理ノードを下記のように配置する。
【００５０】
管理データアクセスサービス（例えば、インデックスサービス）に配置し、場合によっては冗長性ストラテジーも配置する。そして、
【００５１】
管理ノード内部で、格納（入出力制約タスク）と計算（ＣＰＵ制約タスク）を分離する技術を採用し、タスクを２つのキューに分ける。すなわち、計算タスクキューと格納タスクキューは、２つの分かれたスレッドプールにより同時に完了し、ＣＰＵおよびＩ／Ｏリソースを充分に利用する。
【００５２】
前述の例示的な実施形態におけるネットワークデータストレージシステムに基づき、ネットワークデータにアクセスする過程が、図３に示される。
【００５３】
図３は、本開示によるネットワークデータにアクセスする例示的な過程を説明する概略図を示す。本プロセスは下記のステップを含む。
【００５４】
Ｓ３０１で、クライアントは、メタノードへデータにアクセスする要求を送信し、アクセスを要求されているデータユニットの記述的情報（例えば、データユニットの名称）を提供する。
【００５５】
Ｓ３０２で、メタノードは、クライアントに一次経路情報を返し、データユニットを管理する責任がある管理ノードの位置情報を提供する。
【００５６】
メタノードは、クライアントの要求からデータユニットの記述的情報を取得し、データユニットの記述的情報とデータユニットＩＤとの間のマッピング関係テーブルに基づき、クライアントによって要求されたデータユニットのＩＤを取得する。データユニットの経路演算方法に基づき、データユニットを格納するデータノードのＩＤを、データユニットのＩＤから計算する。データノードＩＤと管理ノードＩＤとの間のマッピング関係テーブルを用いて、データノードを管理する管理ノードのＩＤを続けて取得する。獲得した管理ノードのＩＤは次いで、メタノードによりクライアントに送られる。
【００５７】
Ｓ３０３で、クライアントは、一次経路情報を用いて管理ノードを探し出した後、データにアクセスする要求を管理ノードに送信する。
【００５８】
Ｓ３０４で、管理ノードは、クライアントの識別および要求内のデータユニットの情報に従って、データユニットのネットワークにおける位置をメタノードに要求する。
【００５９】
上記Ｓ３０２において、メタノードがクライアントに一次経路情報を返す場合に、メタノードはクライアントが要求したデータユニットのＩＤも同時に返すことができる。この場合、Ｓ３０３でデータにアクセスするクライアントの要求は、アクセスを要求されているデータユニットのＩＤを含み、ステップＳ３０４における管理ノードからメタノードへの要求もデータユニットのＩＤを含む。
【００６０】
Ｓ３０５で、メタノードは、管理ノードに二次経路情報を返し、データユニットのネットワークにおける位置を知らせる。
【００６１】
管理ノードにより送信された要求から、メタノードはデータユニットのＩＤを取得し、データユニットの経路演算方法を用いてデータユニットのＩＤから、データノードＩＤおよびデータノード内のデータユニットの具体的な位置を計算し、この情報を管理ノードに返す。
【００６２】
Ｓ３０６で、管理ノードは、位置情報に基づき、データユニットを格納するデータノードおよびデータユニットのデータノードにおける位置を探し出し、クライアントの要求に従って、データユニット中のデータを処理する。
【００６３】
データノードは、管理ノードの操作コマンドに従いローカルファイルシステムを介してデータユニットを処理する。
【００６４】
Ｓ３０７で、管理ノードは、必要に応じて、データ処理結果をクライアントに返す。
【００６５】
データにアクセスする上記過程において、管理ノードは格納（入出力制約タスク）と計算（ＣＰＵ制約タスク）を内部で分離する技術を採用し、タスクを２つのキューに分け、計算タスクキューおよび格納タスクキューは、それぞれ２つの分かれたスレッドにより同時に完了する。
【００６６】
データにアクセスする上記の過程は、また、本発明の例示的な実施形態の中でジャーナリングメカニズムおよびロック技術を含むトランザクション処理メカニズムを利用して、ネットワークデータアクセスの信頼性を保証している。
【００６７】
多くのファイル操作は、非アトミックアクティビィティ（non-atomic activities）である。特に複数のファイルまたは複数のノードに渡る過程において、データの一貫性および完全性は損傷する傾向があり、異常なシステムのシャットダウンなど、異常な状態を誘引する。データベースおよびオペレーティングシステムのファイルシステムによって提供されるログ保護メカニズムの着想を取り入れて、本発明は、本発明の実施形態におけるような非データベース構造を有するデータにアクセスするためトランザクション保護メカニズムを提供する。
【００６８】
本開示の例示的な実施形態におけるデータユニットがアクセスされる場合（例えば、アクセスまたは格納操作）、書き込み用ブロックのコピーがログファイルに書き込まれる。ログファイルに送られた関連した入出力データが完全に転送されたとき（すなわち、データはログファイルへ成功して提示された）、データノードのローカルのファイルシステムにブロックが書き込まれる。ファイルシステムへ送られている入出力データが完全に送信された場合（すなわち、ファイルシステムへデータが成功して提示された場合）、ログファイルからブロックのコピーが除去される。ファイルシステムへの入出力データの送信が失敗した場合、ログファイルはこのブロックのコピーを残す。
【００６９】
システムがクラッシュした場合、または必要に応じてシステムを再起動する場合、システムは先ずログファイルを読み取り、ログファイル中に記録されたブロックのコピーに従い復旧を行い、例外の発生前の正常な状態にシステムは復旧することができる。
【００７０】
トランザクションの分離性を強化するため、本発明の例示的な実施形態はさらに、ロックメカニズムを備える。トランザクションの分離性は、一般的には、トランザクションによってアクセスされているリソースをロックすることにより保証される。さらに、ロッキング技術は、ファイルトランザクションの特性、並行処理および高信頼性を保証するため、非常に有用なツールである。
【００７１】
本発明の例示的な実施形態は、ローカルのハードディスク内で広く用いられるシングルノードのファイルロックであるＤｏｔｌｏｃｋおよびネットワークファイルシステムにより採用されているＢＳＤベースのシステムのＰＯＳＩＸ−ｃｏｍｐｌｉａｎｔ  Ｆｌｏｃｋ（）またはＦｃｎｔｌ（）の組み合わせを使用する。具体的な実装は、下記のとおりである。
【００７２】
先ず、ＤｏｔＬｏｃｋを取得する。このステップで、複数のノードによる取得は、可能性がある。成功した取得の後で、Ｆｌｏｃｋ（）またはＦｃｎｔｌ（）の取得を試みる。これらのロックは、ファイルの形式で、グローバルノード内に保存される。復旧の間、システムは、任意のサスペンデッドロックをチェックし、解放する。ロック粒度は、１つのデータブロック、１つのファイル、１つのディレクトリ、または１つのデータノードに対してさえ、１つのロックであってよい。
【００７３】
下記では、説明のため、大容量の電子メールシステムにストレージ機能を追加した例を使用する。
【００７４】
ステップ１：データプランを行い、システムによって管理される最小のデータユニットを判定する。
【００７５】
電子メールアドレス（電子メールアカウント）は、一般的に、ユーザ名とドメイン名、それらの間の記号＠から構成される。電子メールアカウントを最小のデータユニットとしてカウントすることや、ドメイン名をデータユニットとして取り扱うことができる。例示的な本実施形態は、電子メールアカウントをデータユニットとなるように選択する。
【００７６】
ステップ２：経路演算方法およびルーティングテーブルを判定する。
【００７７】
経路演算方法をプラニングする目的は、ユーザにより提供される電子メールアカウントに基づき、メールボックスの内容の格納場所をいかにして探し出すかという問題を解決することである。常時拡張するシステムの要領をサポートするため、例示的な実施形態は、ルーティングのために３２ビットのアドレス空間を使用する。従って、最大１Ｇ（すなわち、約１０億）のユーザをサポートすることができる。この３２ビットのアドレス空間は、ＲＩＤ（Ｒｏｕｔｅ  ＩＤ）と呼ばれ、電子メールアカウントを一意的に識別することのために用いられる。例示的な本実施形態は、１つのデータノードは１Ｍ（２20＝１，０４８，５７６）のユーザまでをサポートすることができると仮定する。従って、データノードに対するアドレス空間のサイズは１Ｍであり、具体的なアドレスを、一般的にローカルのファイルシステムのディレクトリにより表すことができる。例示的な本実施形態は、具体的なディレクトリをマッピングすることのために下位２０ビットを使用し、データノード内の内部アドレスデータＩＤと呼ばれる。各データノードは、一意の連続する番号ＮＳＮ（Ｎｏｄｅ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ）を有し、３２ビットのＲＩＤの上位１２ビットにより、表される。具体的には、ＲＩＤ＞＞２０＝ＮＳＮ、すなわち、ＲＩＤを２０ビット右シフトするとＮＳＮが得られる。
【００７８】
メタノードに格納されたルーティングテーブルの例が、表１および表２に示される。
【００７９】
【表１】
2010507876.tif 000003
【００８０】
【表２】
2010507876.tif 000004
【００８１】
表２は、各々の管理ノードが３つのノードを管理することを示す。アドレスｘｘｘ＠ｙｙｙ．ｃｏｍからの要求は、識別子ｗｏｒｋｅｒ−１を有する管理ノードによって処理される。
【００８２】
ステップ３：データプランとルーティングストラテジーの制定後、容量プランを行う。
【００８３】
ユーザが少ないときは、１台の管理ノードと１つのデータノード（０の連続番号を持ち、０−１Ｍのユーザを管理することに対して責任がある）を配置することができる。ユーザの数が増加するにつれて、１つのデータノードではもはや格納の要求を満足することができない場合に、新しいデータノードが追加される。新しいデータノードの連続番号を１、すなわち、関連したＲＩＤの上位１２ビットが０００００００００００１と仮定する。この新しいデータノードは、ＲＩＤの下位２０ビットの１Ｍと２Ｍとの間のユーザを管理することに対し責任がある。上記のように、業務が拡張し続けるにつれて、システムは直線的に拡張し続けることができるので、大量のデータの格納を実現することができる。
【００８４】
ステップ４：メタノードを配置する。
【００８５】
表１および表２のような経路情報テーブルを、メタノードのデータベースに格納することができ、または、ファイルの形式で格納することができる。経路情報テーブルはサイズにおいて大きくないため、サーバが起動した後、ルーティングテーブル全体を内部メモリに置くことができる。これは、クライアントの要求に対し迅速な応答を可能にする。異なるアプリケーションに対し、異なるストラテジーを採用することができる。例えば、良く組織化されたデータ規則を持つ簡単なアプリケーションに対しては、メタノードを、アプリケーションによって提供される一意のデータＩＤを用いて実装される２段階のハッシュアルゴリズムまで単純化することができる。
【００８６】
ステップ５：管理ノードのサービスを配置し、インデックスを制定するように設定を指定する。
【００８７】
格納する必要があるデータに索引付けをするために、管理ノードにデータ検索機能を追加する。関係のあるデータノードにインデックスファイルおよびデータファイルが格納される。業務に関係のあるデータ処理が要求された場合、サービス機能を果たす関係のある論理ジョブを、関連したサーバ内に配置する。管理ノードは、格納と計算とを分離する技術を使用して、システムの性能を充分に調査する。
【００８８】
今後の業務の発展に伴い、システムは、要求されたように連続してその容量を拡張することができる。ユーザの数が増加するにつれて、データノードを連続的に追加することができる。３つのデータノードが追加される毎に、１つの新しい管理ノードを配置することができる。メタノードに関しては、一般的には、１台のサーバしか必要としない。代替的に、システムのシングルポイントとならないようにするため、バックアップメカニズムを採用し、バックアップ用の追加のメタノードサーバを追加することができる。
【産業上の利用可能性】
【００８９】
前記の好ましい実施形態は、比較的簡単な電子メールシステムに照準をあてている。しかしながら、例示的な実施形態により示されるような本発明のネットワークデータストレージシステムのアプリケーションシナリオは、この特定の種類のアプリケーションに限られない。本開示の例示的な実施形態により示されるネットワークデータストレージシステムは、Ｂ２Ｂ電子商取引のプラットフォームおよびソフトウェアに特に適している。この種のアプリケーションは、一般的に、企業およびユーザが中心であり、大量のオンライントランザクション処理を有する。従って、１ユーザまたは１企業を、１つのデータユニットの集合として扱うことができる。データは、主に内部で所有されるため、他のユーザは、このデータにアクセスすることを許されない。管理のためにこのデータを１つのデータユニットの集合として取り扱うことは、企業データが物理的に独立し分離性することを保証し、他のユーザのデータと混ざることがなくなる。このことは、また、オンライン検索および業務処理を同時にサポートする。
【００９０】
データベースと比較すると、この方法は明らかな利点を有する。データベースは、各企業ユーザに対し一組のデータベースを生成することができず、一般的には、同じ種類の全ての企業のアプリケーションのデータを、安全な分離は物理的に実装されていない１つのテーブルに置かなければならない。このため、不正アクセスなどの問題を処理する関連したアプリケーションを必要とする。多くの数のユーザがあるとき、このデータベースの方法は、深刻な性能の問題を引き起こす可能性がある。
【００９１】
明らかに、当業者は、本発明の趣旨および範囲を逸脱せずに、多くの異なる方法で本発明に変更および修正を行うことができる。従って、本発明は、本発明の特許請求の範囲およびその均等の範囲に含まれる全ての変更および変形を網羅することが意図される。
【図１】
2010507876.tif 000005
【図２】
2010507876.tif 000006
【図３】
2010507876.tif 000007
【国際調査報告】
2010507876.tif 000008
2010507876.tif 000009
2010507876.tif 000010
2010507876.tif 000011