JP2004126716A - 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 - Google Patents
広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 Download PDFInfo
- Publication number
- JP2004126716A JP2004126716A JP2002286528A JP2002286528A JP2004126716A JP 2004126716 A JP2004126716 A JP 2004126716A JP 2002286528 A JP2002286528 A JP 2002286528A JP 2002286528 A JP2002286528 A JP 2002286528A JP 2004126716 A JP2004126716 A JP 2004126716A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- node
- data
- volume
- storages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】データの冗長化に要するストレージ容量を低減しつつも、データのセキュリティを向上させ、且つ、回線を効率的に利用することが可能なRAIDを提供する。
【解決手段】データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージSに分散して格納する制御を行う制御装置Cは、経路管理部504と、ストレージセット管理部505を備える。経路管理部504は、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出する。ストレージセット管理部505は、前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する。
【選択図】 図3
【解決手段】データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージSに分散して格納する制御を行う制御装置Cは、経路管理部504と、ストレージセット管理部505を備える。経路管理部504は、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出する。ストレージセット管理部505は、前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、システム内の格納装置を多重化することにより、データの冗長性や格納装置の性能の改善を図る技術、つまりRAID(Redundant Array of Inexpensive Disks)に係わる技術に関する。
【0002】
【従来の技術】
従来、RAIDを用いて、1つのデータを複数に分割し、分割されたデータを複数のストレージへ分散して格納することにより、システムの耐障害性(フォールトトレランス性)を向上させることが行われている。RAIDには、レベル0からレベル6までの7レベルがあり、さらに、複数のRAIDのレベルを組み合わせたレベルや共通化されていない独自レベルもある。このうち、レベル5は、データを複数に分割し、それらの分割されたデータの各々にパリティデータを付加し、それぞれの分割されたデータを複数のストレージに分散させて格納する。レベル5は、1台のネットワーク端末もしくは処理サーバと、ファイルサーバのように、比較的密な関係を持った装置間で採用されることが好ましい。
【0003】
図33に、RAIDを採用したシステムの構成図を示す。まず、図33において、ルータR(中継器)を用いて、ストレージサービスセンタSC、バックアップセンタBC、ミラーセンタMC及び利用者(ネットワーク端末あるいは処理サーバ)が接続され、これによって広域分散ストレージシステムが形成されている。
【0004】
以下、利用者が本社と支社とに分かれており、本社の利用者UHがデータを広域分散ストレージシステムにデータを格納し、そのデータを支社の利用者UBが利用すると仮定して、この広域分散ストレージシステムにおいて行われる処理について説明する。
【0005】
まず、本社の利用者UHは、格納したいデータをストレージサービスセンタSC内のストレージに格納させる。ストレージサービスセンタSCは、データを複製し、複製されたデータをバックアップセンタBC内のストレージに格納させる。なお、災害等によってストレージサービスセンタSCとバックアップセンタBCの双方が損害を受ける可能性を低くするために、ストレージサービスセンタSCとバックアップセンタBCとの物理的な距離は遠隔であることが望ましい。
【0006】
さらに、支社の利用者UBがデータをストレージから読み出す際のレスポンスを改善するために、ストレージサービスセンタSCはデータを複製し、複製されたデータを、支社に最寄りの接続地点となっているミラーセンタMC内のストレージに格納させる、又は、支社の利用者UBからストレージサービスセンタSCまでの回線に割り当てる帯域を広くする。なお、バックアップセンタBCがミラーセンタMCを兼ねることとしてもよい。
【0007】
また、RAIDに関する技術として、データをセグメントに分割し、そのセグメントごとに複数のストレージにランダムに分散格納する、つまり、ストライピング先となるストレージをランダムに決定する第1の発明がある。第1の発明により、一次ストレージが故障した場合その負荷全体が二次バックアップストレージにかかるという問題、及びコンボイ効果の確度が高くなるという問題を解決することが可能となる(例えば、特許文献1参照)。
【0008】
また、さらなるRAIDに関する技術として、ストレージに格納されたデータをミラーリングする際に、そのデータを複数に分割し、分割されたデータを複数のストレージに分散して格納する第2の発明がある。第2の発明により、元となったストレージに障害が生じた場合でも、複数のストレージに分散格納されていたデータを読み出して、これらのデータを用いて、元となったストレージに格納されていたデータを復元することが可能となる(例えば、特許文献2参照)。
【0009】
また、さらなるRAIDに関する技術として、バッファに格納されたデータをストレージに書き出す際に、送出先となるストレージが同一であるデータが複数存在する場合、それらのデータを1つの複合パケットにまとめて送出する第3の発明がある。第3の発明により、RAIDのI/Oスループット性能を向上させることが可能となる(例えば、特許文献3参照)。
【0010】
【特許文献1】
特表2002−500393号公報(段落0005から段落0007、図1)
【0011】
【特許文献2】
特開平9−171479号公報(段落0018から段落0020、段落031から段落0034、図1)
【0012】
【特許文献3】
特開平10−333836号公報(段落0024から段落0027、図3)
【0013】
【発明が解決しようとする課題】
しかし、上記の図33に示した従来に係わる広域ネットワークシステムには、以下に挙げる問題があった。
【0014】
1) バックアップセンタ及び・又はミラーセンタに、ストレージサービスセンタSCと同容量のストレージを備えることが必要であるため、システムが高コストとなる。
【0015】
2) バックアップ又はミラーリングを行う場合、そのために回線を利用することとなり効率的ではない。
3) 利用者が利用するネットワーク端末或いは処理サーバが、マルチホーミングされている場合であっても、それによって利用可能となっている複数の回線を効率的に使用できない。
【0016】
4) 各センタSC、BC又はMC内のストレージ等が盗難された場合、ストレージに格納されていたデータが損害を受けるため、セキュリティがよくない。また、上記に記載の第1の発明から第3の発明においても、上述の1)から4)の問題が解決されていない。
【0017】
以上の問題に鑑み、データの冗長化に要するストレージ容量を低減しつつも、データのセキュリティを向上させ、且つ、回線を効率的に利用することが可能なRAIDを提供することが、本発明が解決しようとする課題である。
【0018】
【課題を解決するための手段】
上記問題を解決するために、本発明の1態様によれば、コンピュータが、データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージに分散して格納するデータ格納方法において、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択することを含む。
【0019】
データを複数のボリウムに分割して複数のストレージに分散して格納することによりデータのセキュリティを向上させつつ、さらに、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離を考慮してそのノードから見て最適なストレージを選択することにより、回線効率と災害時のデータの安全性も向上させることが可能となる。
【0020】
上記方法における、前記評価値の算出の際に、更に、前記書き込みを依頼するノードから各ストレージまでのホップ数を考慮する事としても良い。ホップ数がが高い場合は、回線効率が低下するからである。
【0021】
また、上記方法において、前記システムの利用者に対して、前記ストレージセットを仮想的な1つのストレージとして提供することを更に含むこととしてもよい。これにより、データの分散格納によって、利用者にとって操作が複雑化することを避けることが可能となる。
【0022】
また、上記方法において、前記データを前記ストレージセットから読み込む際には、前記ストレージセットに書きこまれた前記複数のボリウムのうち冗長化部分を含まないボリウムを各ストレージから読み出し、前記読み出されたボリウムを用いて前記データを復元する、ことを更に含むこととしてもよい。これにより、使用する回線帯域を抑制することが可能となる。
【0023】
また、上記方法において、前記データを読み込む際には、前記帯域幅及び前記コストに基づいてレスポンスの良さを示す利用優先度を算出し、前記利用優先度に基づいて、冗長化部分を含まないボリウムとして、前記複数のボリウムのうちいずれのボリウムを各ストレージから読み出すか決定することを更に含むこととしてもよい。例えば、データを3データ+1パリティで冗長化して4つのボリウムに分割している場合、冗長化部分を含まないボリウムとして、3つのボリウムを任意に選択することができる。この選択の際に、帯域幅及びコストを考慮する事により、回線の利用効率を向上させることが可能となる。
【0024】
また、上記方法において、前記ストレージセットとして選択されなかったストレージに、前記複数のボリウムうちの第1のボリウムの複製を格納することを更に含むこととしてもよい。この複製はバックアップとして用いることができる。従来、バックアップとしてデータの複製を備えていたため、バックアップを備えるためには元データの2倍の容量が必要であった。しかし、この態様によれば、バックアップのために必要なストレージ容量は、たかだか1ボリウム分の容量となる。これにより、ストレージの使用効率を向上させることが可能となる。
【0025】
また、上記方法において、前記第1のボリウムの複製を作成する際に、前記評価値に基づいて、前記第1のボリウムを格納するストレージから前記第1のボリウムを複写するのか、前記複数のボリウムのうちの前記第1のボリウム以外のボリウムから冗長を利用して前記第1のボリウムを再現するのか、2つの作成方法のうちのいずれかを選択することを更に含むこととしてもよい。ここで、この選択において前記評価値を考慮することとしてもよい。
【0026】
また、上記方法において、同一のボリウムを格納するべき複数のストレージに対して、マルチキャストでボリウムを書き込むこととしてもよい。これにより、同じ内容をもつパケットを複数回にわたり送信することを回避する。
【0027】
また、上記方法において、前記第1のボリウムの複製をストレージに書き込む際に、多数回に分けて書き込み処理を行うこととしてもよい。多数回に分けることにより、一度につき回線にかける負荷を軽減する事が可能となる。
【0028】
また、上記方法において、前記ストレージセットのうちの第1のストレージに障害が発生した場合、前記ストレージセットのうちの他のストレージへの書き込みを制限することを更に含むこととしてもよい。例えば、第1のストレージの復旧前に他のストレージ内のボリウムが更新されてしまう事がありうるが、これにより、障害が発生したストレージの復旧後、システム内に異なるバージョンのボリウムが並存する事を防止する。
【0029】
また、上記方法において、前記ストレージセットのうち第3のストレージに障害が発生した場合、前記評価値に基づいて、前記ストレージセットとして選択されているストレージ以外の第4のストレージを、前記第3のストレージの代わりに選択することとしてもよい。これにより、障害が発生したストレージの代わりとして最適なストレージを選択することが可能となる。
【0030】
また、上記方法において、前記ストレージセットの選択後、一定のタイミングで、各ノードにおけるストレージセットを再選択し、再選択の結果、どのノードからも利用されていないボリウムがあった場合、該ボリウムをストレージから削除することを更に含むこととしてもよい。ここで、一定のタイミングとは、前回の選択から一定期間後、又はボリウムの状態が変更される毎である。システムの使用状況が変化するタイミングにおいて、ボリウムの使用状況に基づいて不要なボリウムを削除する事により、ストレージの利用効率を向上させることが可能となる。
【0031】
また、上記方法において、前記データを読み込んだ後に、前記データを一定期間、任意の1つのストレージ内に一時格納し、前記一定期間内にデータの読み出しを行う際には、一時格納されたデータを前記1つのストレージから読み出すことを更に含むこととしてもよい。このようなキャッシュ機能を備える事により、データの読み出しレスポンスを向上させることが可能となる。
【0032】
また、上記方法において、一定期間内に書き込み要求されたデータを一時記憶領域に保持し、前記一定期間経過後に一時格納領域からデータを取出し、データを複数のボリウムに分割し、該複数のボリウムを前記ストレージセットに書き込むことを更に含むこととしてもよい。これにより、書き込み要求を出すノードから他のストレージへボリウムを転送する回数を低減する事が可能となるため、トラフィックの効率を上げることが可能となる。
【0033】
また、上記方法において、前記複数のストレージに前記複数のボリウムを書き込む際に、前記書き込みを依頼するノードは、書き込みが終了するまで前記複数のストレージへの書き込み処理を禁止することを更に含むこととしてもよい。ここで、同一のボリウムを格納するべき複数のストレージがある場合、それらのストレージの中から、1つのストレージを代表ストレージとして決定し、前記複数のストレージへの書き込み処理の禁止において、前記代表ストレージへの書き込み処理の禁止は、前記書き込みを依頼するノードによって行われ、前記代表ストレージ以外のストレージへの書き込み処理の禁止は、前記代表ストレージによって行われることとしてもよい。また、前記代表ストレージは、原本となるボリウムを格納するべきストレージであることとしてもよい。
【0034】
また、上記方法に含まれる手順を含む制御をコンピュータに行わせるコンピュータ・プログラムも、コンピュータによって上記コンピュータ・プログラムを実行させる事によって、上記方法と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【0035】
また、上記コンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体から、そのプログラムをコンピュータに読み出させて実行させることによっても、上記課題を解決することができる。
【0036】
また、上記データ格納方法において行われる手順と同様の処理を行う、ネットワークを介して分散配置されたストレージを備えるシステムにデータを分散格納させる制御を行う制御装置によっても、上記データ格納方法と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【0037】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。なお、同じ装置等には同じ参照番号をつけ、説明を省略する。なお、以下の説明において、「ノードに備えられるストレージ」をいう際に「ノード」という場合がある。これは、文が長くなるために意味が分かりにくくなる事を防ぐためである。例えば、「ノードにボリウムを格納する」という表現は、「ノードに備えられるストレージにボリウムを格納する」ということを意味する。
【0038】
本発明は、データにパリティを付加し、これらを複数のストレージに分散格納する技術、例えばRAID5等の技術を前提とする。図1に、本発明の各実施形態に係わる広域分散ストレージシステムの構成を示す。図1に示すように、広域分散ストレージシステムにおいて、ネットワークを介して複数のノードが接続されている。ノード間で通信されるデータは、ルータRで中継される。各ノードは、ストレージS及び制御装置Cを備える。
【0039】
利用者本社や利用者支店等に備えられた端末の利用者は、広域分散ストレージシステムにアクセスし、ストレージSにデータを格納させたり、ストレージSからデータを読み出したり等を行う。
【0040】
制御装置Cは、端末からデータをストレージに格納するよう指示された場合、格納すべきデータのデータブロック単位(読み出し/書き込みの単位)にECC(Error Check and Correct)/パリティを付し、複数のストレージSにデータを分散させて格納させる。以下、分割されてパリティを付加されたデータをボリウムという。
【0041】
端末からストレージ内に格納されたデータを読み出すよう指示された際には、制御装置Cは、複数のストレージSから分散されて格納されているデータ、つまりボリウムを読み出して、データを復元して端末に送信する。
【0042】
データの格納及び読み出しの際、データの分散格納及び復元を制御装置Cが行うため、端末の利用者は、データが分散されていることを意識することなく、1つの仮想ディスクにデータを格納し、その仮想ディスクからデータを読み出す際と同様に、データを分散格納したり復元したりすることができる。
【0043】
また、ボリウムを読み出してデータを復元する際に、制御装置Cは、そのデータを構成する全てのボリウムを複数のストレージから読み出してそのデータを復元する。或いは、制御装置Cは、冗長化された分のボリウムを除いたボリウムを複数のストレージSから読み出してそのデータを復元する事としても良い。この場合、ネットワークにかかる負荷を低減する事ができる。より具体的には、2データ+1パリティで冗長化されて分割されたデータを復元する場合、制御装置Cは、3つのボリウムのうち2つのボリウムを読み出してデータを復元する。
【0044】
図2に、制御装置Cの構成を示す。図2に示すように、制御装置Cは、ユーザインタフェース(以下、ユーザIF)(受信側)1、ユーザIF(送信側)2、データ変換部3、パケット生成部4、制御部5、データ組立部6、パケット解析部7、ストレージインタフェース(以下、ストレージIF)8、ネットワークインタフェース(以下、ネットワークIF)(送信側)9及びネットワークIF(受信側)10を備える。
【0045】
ユーザIF(受信側)1は、利用者からストレージSへアクセスするパケットを受信し、制御情報を制御部5に、データをデータ変換部3へ振り分ける。
データ変換部3は、データをデータブロックに分割し、各ブロックにパリティを付加する。
【0046】
パケット生成部4は、広域ネットワークに送信するために、ブロック単位に分割されたデータ又は制御情報をパケット化する。
ネットワークIF(送信側)9は、パケット生成部4によって生成されたパケットをネットワークに送信する。
【0047】
ネットワークIF(受信側)10は、広域ネットワークからデータ又は制御情報を受信する。
パケット解析部7は、ネットワークIF(受信側)10から出力されたパケットを解析し、ストレージSからのデータ読み出し又はストレージSへのデータ書き込み処理を行う。
【0048】
データ組立部6は、ストレージSから読み出された信号を組み立てて、利用者からのデータアクセス指示に対して、制御情報を含む適正なパケットを生成する。
【0049】
制御部5は、利用者からのアクセスに基づいて、ストレージS及びデータの管理及び送受信パケットを処理する。
ユーザIF(送信側)2は、利用者に、データ組立部6によって組み立てられたパケットを送信する。
【0050】
次に、図3に、制御装置Cの詳細構成図を示す。以下、図3に示す詳細構成図にそって、データ変換部3、パケット生成部4、制御部5及びデータ組立部6の動作について詳しく説明する。
【0051】
上記データ変換部3は、パケット解析部301、データ分割部302及びパリティ計算部303を備える。パケット解析部301は、受信されたパケットを解析し、そのパケットからデータを取得する。データ分割部302は、データをデータブロック単位に分割する、パリティ計算部303は、パリティを計算し、データブロックに付加する。
【0052】
上記パケット生成部4は、データ管理情報付加部401、制御/経路情報負荷部402、データ転送部403及び転送パケット構築部404を備える。データ管理情報付加部401は、データブロックに制御部5からの出力されたデータ管理情報を付加する。なお、データ管理情報は、ストレージセット構成情報(後述)等であり、そのパケットに基づいて行われる処理の内容によって異なる。各処理において送信されるデータ管理情報については、後述する。
【0053】
制御/経路情報付加部402は、データブロックに、制御情報や経路情報を付加する。なお、経路情報は、そのデータブロックの宛先となるノードまでの経路及びその経路の評価値を示す情報であり、制御部5によって生成される。制御情報は制御の内容、例えばデータの書き込みであるのか、読み込みであるのか、ストレージへの書き込みを制御するのか等を示す情報であり、制御部5によって生成される。
【0054】
データ転送部403は、データ管理情報及び制御/経路情報が付加されたデータパケット又は、制御部5から出力された制御パケットを転送する。転送する際に、データ転送部403は、パケットの宛先となるノードのアドレス、例えばIP(Internet Protocol)アドレス等をパケットに付加する。このアドレスは、制御部5から出力される。なお、制御/経路情報に基づいて、データが、そのノード内のストレージに書き込まれるべきデータ(ローカルデータ)であると判定された場合、データ転送部403は、そのデータをパケット解析部7に出力する。
【0055】
転送パケット構築部404は、ストレージIF8を介してストレージSから読み出されたデータを他のノードの制御装置Cに転送するための転送パケットを構築し、データ転送部403に出力する。パケットを構築する際に、転送パケット構築部404は、上記のデータ管理情報付加部401及び制御経路情報付加部402と同様の処理を行う。
【0056】
上記制御部5は、ストレージ制御部501、制御パケット生成部502、ネットワーク制御部503、経路管理部504、ストレージセット管理部505、ローカルボリウム管理部506、経路評価テーブル507、ストレージ評価テーブル508、ストレージセット管理テーブル509、アクセス管理テーブル510及びローカルボリウム管理テーブル511を備える。ストレージ制御部501は、パケット解析部301から出力された制御情報に基づいて、ストレージSへのデータ書き込み、読み出し及びロック等を制御する。また、ストレージ制御部501は、制御パケット生成部502、ネットワーク制御部503、経路管理部504、ストレージセット管理部505及びローカルボリウム管理部506の動作の連携も制御する。
【0057】
制御パケット生成部502は、データ書き込み、データ読み込み、ストレージSのロック等の制御の内容を示す制御パケットを生成する。この制御パケットは他のストレージへ送信される。ネットワーク制御部503は、経路管理部504からの出力に基づいて、パケットの宛先となるノードを示す経路情報及びそのノードのアドレス等を生成する。なお、ノードのアドレスは、不図示のアドレステーブルに登録されているとする。アドレステーブルについては自明であるため、ここでは説明しない。
【0058】
経路管理部504は、経路評価テーブル507及びストレージ評価テーブル508に格納された情報に基づいて、ブロック単位に分割されたデータの宛先つまり、データの格納先又は転送先等を決定する。ストレージセット管理部505は、ストレージセット管理テーブル509を用いて、データを構成する複数のボリウムを管理する。また、ストレージセット管理部505は、各ノードのストレージSに格納されたボリウムが更新される際に、アクセス管理テーブル510を用いて各ストレージへのアクセスを管理する。ローカルボリウム管理部506は、ローカルボリウム管理テーブル511を用いて、ローカルストレージの利用状況を管理する。各テーブルの構造について詳しくは後述する。
【0059】
上記データ組立部6は、パケット構築部601、データ組立部602及びパリティ計算部603を備える。パリティ計算部603は、パリティを計算する。データ組立部6は、パリティ及びボリウムがどのボリウムであるのかを示すボリウム番号に基づいて、ローカルストレージSから読み出されたボリウムのデータ(ボリウムデータ)やその他のノードから受信したパケット内のボリウムデータを用いて、分割される前のデータを復元する。なお、ボリウム番号は、ボリウムデータに付されている。パケット構築部601は、データアクセス指示を出した利用者に、復元されたデータを送信するためにパケットを生成する。
【0060】
次に、図4に、広域分散ストレージシステムの具体的な構成例を示す。以下、図4に示す具体的な構成を用いて各テーブルの構成や制御装置の動作等を説明するが、これは具体的に説明するために図4に示すような構成を仮定しているのであり、ストレージシステムの構成を限定する趣旨ではない。
【0061】
図4に示すように、広域ネットワークを介して、ノードAからノードGから接続されている。各ノードには制御装置C及びストレージSが備えられている。ノードAとノードBの間(以下、区間A−B)、ノードEとノードFの間(以下、区間E−F)及び「ノードFとノードGの間(以下、区間F−G)の帯域幅は、150Mbpsである。ノードBとノードCの間(以下、区間B−C)、ノードCとノードDの間(以下、区間C−D)及びノードDとノードEの間(以下、区間D−E)の帯域幅は、50Mpbsである。ノードGとノードAの間(以下、区間G−A)の帯域幅は1Gbpsである。ノードBとノードEの間(以下、区間B−E)の帯域幅は、600Mbpsである。
【0062】
以下、図5から9を用いて、制御装置Cに備えられるテーブルの構造について説明する。まず、図5を用いて、経路評価テーブル507の構造について説明する。経路評価テーブル507は、広域分散ストレージシステムを構成する各ノードについての経路評価情報を格納する。経路評価テーブル507は、各ノード間を接続する経路の優位性を評価する際に参照される。図5に示すように、経路評価情報は、区間を識別する記号、その区間での帯域幅、その区間での通信コスト、その区間の物理的距離(ディスタンス)、及びストレージの利用優先度等を項目として含む。また、経路評価情報は、さらに区間の利用優先度を更に含むこととしても良い。なお、ローカルノード、つまり、その経路評価テーブル507を備える制御装置Cが属するノードについては、ネットワークを介して通信する必要がないため、帯域幅、コスト及びディスタンスは空である。
【0063】
帯域幅、通信コスト及び物理的距離は、広域分散ストレージシステムの構成に基づいて決定され、どのノードに備えられた制御装置であっても、基本的に同じ値となる。ストレージの利用優先度及び区間の利用優先度は、制御装置Cによって計算される値である。利用優先度は、帯域幅及びコストに加えて、災害等が発生した際のデータバックアップの安全性を評価するためにディスタンスに基づいて決定される。
【0064】
ストレージ利用優先度の計算式は以下のとおりである。
ストレージ利用優先度
=(帯域幅×A)÷(コスト×B)+(ディスタンス×C)
なお、A、B及びCは、重み付け定数である。以下の説明では、例として、A、B及びCをそれぞれ、2、1及び0.1と仮定する。各重み付け定数は、システムにおいて優先すべき性能、例えば通信速度を優先するのか、又はコストを優先するのか等を考慮して、変更することとしても良い。
【0065】
図5は、図4にシステムのノードAについての経路評価テーブル507を示している。以下、具体的に、区間A−Bについてストレージの利用優先度を算出する。
【0066】
区間A−Bについてのストレージの利用優先度
=(150×2)÷(100×1)+(80×0.1)=11
従って、図5に示す経路評価テーブル507において、区間A−Bについてのストレージの利用優先度として、「11」が格納されている。
【0067】
なお、区間の利用優先度は、帯域幅÷コストを正規化した値である。
次に、図6を用いて、ストレージ評価テーブル508の構造について説明する。ストレージ評価テーブル508は、広域分散ストレージシステムを構成する各ノードに備えられたストレージについてのストレージ評価情報を格納する。ストレージ評価テーブル508は、ストレージセットの作成及び追加等を行う際に、どのノードのストレージを使用すべきか決定する際に参照される。図6に示すように、ストレージ評価情報は、ノードを識別する記号、ローカルノードからそのノードへの経路、ストレージ評価値及びホップ数等を項目として含む。ここで、ローカルノードとは、そのストレージ評価テーブル508を備える制御装置Cのノードをいう。ホップ数とは、あるノードに到達するまでの経路に介在するノード数をいう。ストレージ評価値は、制御装置Cによって計算され、その計算式は以下の通りである。
【0068】
ストレージ評価値=
Σ{(経路上のノードのストレージの利用優先度)×(重み付け定数)}/(その経路の最終ノードまでのホップ数)
ここで、重み付け定数をホップ数の逆数とすると、ストレージ評価値の計算式は以下のようになる。
【0069】
ストレージ評価値
=Σ{(経路上のノードのストレージの利用優先度)÷(そのノードまでのホップ数)}/(その経路の最終ノードまでのホップ数)
図6は、図4に示すシステム内のノードAに備えられるストレージ評価テーブル508を例示している。以下、例として、具体的に、ノードAから見たノードBのストレージの評価値及びノードCのストレージの評価値を算出する。
【0070】
ノードBのストレージ評価値
=(区間A−Bのストレージの利用優先度÷1)/1
=11
ノードCのストレージ評価値
={(区間A−Bのストレージの利用優先度÷1)+(区間B−Cのストレージの利用優先度÷2)}/2
={11÷1+17÷2}/2
=9.75
また、ストレージ評価情報は、さらに、経路評価値を項目として含むこととしても良い。経路評価値は、最終ノードに到達するまでに経由する区間の利用優先度の和をホップ数で割算する事により計算される。
【0071】
次に、図7を用いて、ストレージセット管理テーブル509の構造について説明する。ストレージセット管理テーブル509は、それぞれのストレージセットに関する情報を管理するためのテーブルである。ストレージセット管理テーブル509は、ストレージセット構成情報を格納する。ストレージセット構成情報は、ストレージセットを識別するストレージセット番号と、その番号に対応するストレージセットに関する情報、つまりプロパティを含む。
【0072】
ここで、ストレージセットとは、システム全体から見ると、データを分割されたことにより得られた複数のボリウムを分散格納するストレージをいう。しかし、後述のように、通常、各ノードにおいて、ボリウムを分散格納するストレージの全てを使用(書き込み、読み出し等行う)するのではなく、使用するストレージはこれらのうちの少なくとも一部である。各ノードで使用するストレージは、後述のプロパティに含まれる使用状況情報によって管理される。使用するストレージ以外は、バックアップ等の機能を果たす。従って、各ノードから見ると、ストレージセットとは、使用状況情報によって使用が許可されているストレージである。
【0073】
ストレージセット番号は、ストレージセットを識別するために用いられるが、データを識別する情報としても利用される。例えば、システムの利用者は、読み出したいデータを特定するためにストレージセット番号を用いる。これは、ストレージセットは、利用者に対して1つの仮想的なストレージとして提供されるからである。
【0074】
プロパティには、広域分散ストレージシステム全体のプロパティと、各ノードのプロパティとがある。システム全体のプロパティは、データが分割されたノード数及びストレージの状態(良好であるか、異常があるのか等)を示す情報を含む。なお、データが分割されたノード数は、読み出しの場合と書き込みの場合のそれぞれについて格納される。なお、図7において、ストレージの状態として「G」が格納されている場合、状態が「良好」であり、「R」が格納されている場合、状態が「異常」である。
【0075】
ノードのプロパティは、そのノードのストレージがストレージセット中のどのボリウムを格納するのかを示すボリウム番号、そのボリウムが原本であるのか複製であるのかを示すフラグ及び、ローカルノードから各ノードが読み出し可能なのか書き込み可能なのか等の使用状況を示す使用状況情報を含む。ストレージセット管理テーブル509内の情報は、各ノードに備えられた制御装置Cの間で交換される。なお、図7ではボリウムが原本であるのか複製であるのかを示すフラグが「O」である場合ボリウムは原本であり、「C」である場合ボリウムは複製である。なお、後述の逐次格納の場合、格納途中の不完全なボリウムデータがストレージSに格納され得る。この不完全データを示すフラグを、「O」と「C」とは区別できるように、例えば「Q」とすることとしてもよい。
【0076】
例として、図7中のストレージセット番号が「00000001」であるストレージセット構造情報について説明する。このストレージセット構造情報の全体プロパティの読み出しノード数として「3」が格納されているため、データを復元するためには3つのボリウムが必要である。また、同様に、書き込みのノード数として「4」が格納されているため、データは4つのボリウムに分割されている。また、このストレージセット構造情報においてノードA、B、C、E及びGについてのプロパティが書き込まれているため、これらのノードにボリウムが格納されている。例えば、ノードAのプロパティによると、ノードAにはボリウム番号が「1」であるボリウムが格納され、それは原本であり、読み出し(Read)及び書き込み(Write)が可能な状況であることがわかる。
【0077】
また、ストレージセット構造情報中の使用状況情報は、そのストレージセット管理テーブル509を備えるノードにおいて通常使用されるストレージS、つまりそのノードから見たストレージセットを示す。本実施形態では、ローカルノードから見たストレージセットは、使用状況情報が「RW」つまり、読み出し及び書き込みが可能となっている複数のストレージであるとして仮定する。図7には、例としてノードAに備えられるストレージセット管理テーブル509を示す。この図7によると、ストレージセット番号が「00000001」であるデータについては、ノードAから見たストレージセットは、ノードA、B、及びEに備えられたストレージSである。
【0078】
次に、図8を用いて、アクセス管理テーブル510のデータ構造について説明する。アクセス管理テーブル510は、アクセス単位ごとにアクセス管理情報を格納する。制御装置Cは、アクセス管理情報に基づいて、利用者からの各ノード内のストレージSへのアクセスを制御する。同じストレージセットを共有する利用者からのアクセスは、同じ情報に基づいて制御される。アクセス管理情報は、ストレージセットアクセス番号及び、そのアクセス単位のプロパティを項目として含む。ストレージセットアクセス番号は、ストレージセットへの論理的なアクセス単位(論理ブロック)を示す番号であり、プロパティは、ストレージセットアクセス番号によって示される論理ブロックの状態、例えば、読み出し可能状態であるのか、書き込み可能状態であるのか、ロック状態であるのか、データが完全データであるのか。生成データであるのか等を示す。図8では、読み出し可能状態を「R」で例示し、書き込み可能状態を「W」で例示し、ロック状態を「L」で例示し、原本データを「O」で例示している。なお、ロック状態とは、書き込みが制限される状態をいい、例えばストレージ上のデータが更新される場合等に、制御装置Cによって設定される(後述)。図8には、例として、ストレージセット番号が「000010001」であるストレージセットについてのアクセス管理テーブルが示されている。また、完全データとは、ストレージから読み出したボリウムから復元されるデータであり、生成データとは、一部のボリウムが足りない状態で冗長化を利用して生成されたボリウムをいう。
【0079】
なお、アクセス管理情報は、さらに、ロックキーを項目として含むこととしてもよい。ロックキーは、ストレージセット番号によって識別されるデータの更新を要求した利用者を識別するための情報であり、更新要求を受信した制御装置Cによって生成される。
【0080】
次に、図9を用いて、ローカルボリウム管理テーブル511のデータ構造について説明する。ローカルボリウム管理テーブル511は、そのテーブルを備える制御装置Cに接続されているストレージS、つまりローカルストレージに格納されているボリウムの利用状況を管理するためのテーブルである。ローカルボリウム管理テーブル511は、各ノードの制御装置Cに個別に存在する。
【0081】
ローカルボリウム管理テーブル511は、ローカルストレージへのアクセス単位ごとにボリウム管理情報を格納する。図9に示すように、ボリウム管理情報は、ローカルストレージへのアクセス単位を示すストレージアクセス番号、そのストレージアクセス番号が示す論理ブロックの状態を示すプロパティ、ストレージセットを識別するストレージセット番号、そのストレージアクセス番号に対応するストレージセットアクセス番号を項目として含む。
【0082】
以下、広域分散ストレージシステムにおける動作について説明する。以下の説明において、データは、2データ+1パリティの冗長構成をとって3つに分割されて、広域分散ストレージシステムに分散格納されると仮定する。しかし、これは説明を分かり易く、且つ、具体的にするためであり、データの冗長構成を限定する趣旨ではない。
【0083】
広域分散システムの利用者は、通常、ネットワーク的に最も近くに位置するノードを介して、広域分散システムにアクセスする。
以下、図10を用いて、利用者AがノードAを介して広域分散システムにアクセスする場合のデータの流れについて説明する。図10において、実線の矢印は利用者が感じるデータの流れを示し、破線の矢印は、実際のデータの流れを示す。利用者Aが、ノードAを介して広域分散システムにアクセスし、データの格納指示を出したと仮定する。
【0084】
利用者Aから見た場合、ノードAに備えられた1つの仮想ディスクにデータが格納されたように感じられる。しかし、実際は、ノードAの制御装置Cは、データにパリティを付して複数のボリウムに分割し、広域分散システムを構成する複数のノードに備えられたストレージSに、ボリウムを分散させて書き込む。図10の場合、ノードAの制御装置Cは、データを3つのボリウムに分割し、それぞれを、ノードAのストレージS(A)、ノードBのストレージS(B)及びノードGのストレージS(G)に書き込む。
【0085】
以下、データ書き込みの際の制御装置Cの動作についてより詳しく説明する。1)制御装置Cのパケット解析部301は、受信されたパケットを解析し、そのパケットから書き込み指示を示す制御情報とデータを取得する。
【0086】
2)データ分割部302は、データをデータブロック単位に分割する。
3)パリティ計算部303は、パリティを計算し、データブロックに付加する。
【0087】
4)制御部5の経路管理部504は、データブロックを3つのボリウムに割り振る事によってデータを3分割し、任意の方法で3つのノードをそれぞれのボリウムを分散格納するべきストレージセットとして決定する。この説明では、ノードA、ノードB及びノードGがストレージセットとして決定される。
【0088】
5)ストレージセット管理部505は、ストレージセットの決定結果に基づいて、ストレージセット構成情報を作成し、ストレージセット管理テーブル509に書き込む。
【0089】
6)制御パケット生成部502は、データ書き込み制御を指示する制御パケットを生成する。ネットワーク制御部503は、経路管理部504からの出力に基づいて、パケットの宛先となるノードA、B及びGを示す経路情報及びそのノードのアドレス等を生成する。
【0090】
7)データ管理情報付加部401は、3つのボリウムのデータブロックにストレージセット構成情報を付加し、制御経路情報付加部402は、データブロックに、書き込み制御を指示する制御情報及び経路情報を付加する。データ転送部403は、データパケット又は、制御部5から出力された制御パケットを転送する。
【0091】
なお、制御/経路情報に基づいて、データがローカルストレージ、つまり、そのノードA内のストレージS(A)に書き込まれるべきデータ(ローカルデータ)であると判定される場合、データ転送部403は、そのデータをパケット解析部7に出力する。
【0092】
8)パケット解析部7は、複数のボリウムのうちの1つをローカルストレージS(A)へ書き込む制御を行う。書き込み後、ローカルボリウム管理部506は、ボリウム管理情報を生成し、ローカルボリウム管理テーブル511に格納する。なお、ボリウム管理情報に含まれる値の内、プロパティ、ストレージセット番号は、パケットから読み出すことにより取得される。
【0093】
9)転送されたボリウムは、各転送先のノードのパケット解析部7によってそのノードのストレージSに書き込まれる。格納先のノードのローカルボリウム管理部506は、上記と同様にしてボリウム管理情報を生成し、ローカルボリウム管理テーブル511に格納する。
【0094】
一方、利用者が分散格納されたデータを読み出す場合、利用者Aから見た場合、ノードAに備えられた1つの仮想ディスクからデータが読み出されたされたように感じられる。しかし、実際は、ノードAの制御装置Cは、複数のノードから3つのボリウムを読み出して、データを復元する。以下、データを読み出す場合の制御装置Cの動作についてより詳しく説明する。
【0095】
1)制御装置Cのパケット解析部301は、受信されたパケットを解析し、そのパケットから読み出し指示を示す制御情報を取出す。
2)ストレージセット管理部505は、ストレージセット管理テーブル509から読み出し指示がされたデータのストレージセット構成情報を取得し、これにより、利用者がアクセスしているノードから見てストレージセットとなっているノードのノード名を取得する。この場合は、ノードA、B及びGである。
【0096】
3)ノードAのデータ組立部602は、ローカルストレージSからボリウムを取得する。
4)ノードB及びGに格納されている残りの2つのボリウムを取得するために、制御パケット生成部502は、データ読み出し制御を指示する制御パケットを生成する。ネットワーク制御部503は、パケットの宛先となるノードB及びGを示す経路情報及びそのノードのアドレス等を生成する。
【0097】
5)データ管理情報付加部401は、制御パケットにストレージセット構成情報を付加し、制御経路情報付加部402は、データブロックに、書き込み制御を指示する制御情報及び経路情報を付加する。データ転送部403は制御パケットを転送する。
【0098】
6)ノードB及びノードGのそれぞれにおいて、転送パケット構築部404は、制御パケットに基づいてストレージSからボリウムを読み出し読み出されたデータをノードAの制御装置Cに転送するための転送パケットを構築し、データ転送部403に出力する。データ転送部403はパケットをノードAに転送する。
【0099】
7)ノードAのパケット解析部7は、受信したパケットから、ノードBのストレージ及びノードGのストレージから読み出された各ボリウムを取得する。
8)パリティ計算部603は、パリティを計算し、データ組立部602は、パリティ及びボリウム番号に基づいて、3つのボリウムから分割される前のデータを組み立てる。パケット構築部601は、データの読み出し指示を出した利用者に、組み立てられたデータを送信するためにパケットを生成する。
【0100】
このようにしてデータを複数のボリウムに分割し、ネットワークを介して分散して存在する複数のストレージに各ボリウムを格納させることにより、以下の効果が得られる。
【0101】
・1つストレージが盗難にあった場合でも、そのストレージに格納されている1つのボリウムだけでは分割前の元のデータを復元することができないため、データの安全性が高くなる。
【0102】
・各ノード宛てのパケットはデータの一部でしかないため、ネットワーク経路においてパケットキャプチャリングを行っても、分割前の元のデータを復元することができない。
【0103】
・ストレージが分散配置されるため、ネットワーク的に負荷分散を行う事ができる。このため、従来の技術と同一の速度でバックボーンが構成されている場合は、データアクセスにかかる時間を短縮する事ができる。また、従来の技術と同一のレスポンスを維持する場合は、バックボーンに必要な帯域幅を低減することができる。
【0104】
・分散配置と保管が同時に行われるため、バックアップセンタを設けるより、ストレージの使用効率がよい。
上記において、複数のボリウムに分散して格納されたデータを構成する全てのボリウムを複数のノードのストレージSから読み出してデータを復元する際の処理について説明した。しかし、複数のボリウムのうち冗長化された分のボリウムが無くともデータを復元する事ができるため、冗長化された分のボリウムを除いたボリウムを複数のノードのストレージSから読み出すこととしても良い。より具体的には、2データ+1パリティで冗長化されて3つのボリウムに分割されたデータの場合、3つのボリウムのうち2つのボリウムがあればデータを復元できるため、3つのボリウムのうち2つのボリウムをストレージSから読み出して、データを復元することとしてもよい。この場合、ネットワークにかかる負荷をさらに低減する事ができる。
【0105】
ここで、冗長化された分のボリウムを除いたボリウムを複数のノードのストレージSから読み出す場合、読み出されるボリウムの組合せは幾通りも考えられる。以下、このような場合に、最適なボリウムの組合せを決定する方法について説明する。
【0106】
この場合、読み出すべきストレージを決定するために、制御装置C内の経路評価テーブル507に格納される経路評価情報に区間の利用優先度を更に含み、ストレージ評価テーブル508に格納されるストレージ評価情報に経路評価値をさらに含む。
【0107】
以下、図11を用いて利用優先度及び評価値の計算処理の手順について説明する。利用優先度(区間の利用優先度とストレージの利用優先度)及び評価値(経路評価値とストレージ評価値)は、ネットワーク構成が変更されたり、回線が断絶したり、ノードが追加・削除されたりして経路評価テーブル507に格納される情報が変更された場合に、全てのノードについて計算される。
【0108】
図11に示すように、まず、経路管理部504は、利用優先度及び評価値の計算対象として1つのノードを取出し、そのノードがローカルノード(自ノード)であるか否か判定する(S11)。計算対象のノードがローカルノードで無い場合(S11:No)、S12に進み、計算対象のノードがローカルノードである場合(S11:Yes)、S16に進む。
【0109】
S12において、経路管理部504は、計算対象ノードからそのノードに隣接する他のノードまでの各区間について、その区間の帯域幅、コスト、距離を経路評価テーブル507から取得する。さらに、経路管理部504は、区間の利用優先度及びストレージの利用優先度を計算し、その計算結果に基づいて経路評価テーブル507を更新する(S13)。なお、区間の利用優先度及びストレージの利用優先度の計算方法については既に説明した。
【0110】
経路管理部504は、計算対象ノードから他のノードまでの各経路について、経路評価値及びストレージ評価値を計算し、その計算結果に基づいてストレージ評価テーブル508を更新する(S14)。さらに、経路管理部504は、全てのノードについて利用優先度及び評価値を計算したか否か判定する(S15)。全てのノードについて計算を行った場合(S15:Yes)、処理を終了し、そうでない場合、S11にもどる。
【0111】
S16において、経路管理部504は、利用優先度及び評価値を最大値に設定し(S16)、S15に進む。このように、利用優先度及び評価値を最大値に設定することにより、ボリウムの書き込み又は読み出しにおいて、ローカルノードのストレージSは最優先されることになる。
【0112】
図12(a)に、区間の利用優先度を含む、ノードAについての経路評価テーブル507の一例を、図12(b)に、経路評価値を含む、ノードAについてのストレージ評価テーブル508の一例を示す。図12に示すテーブルがノードAについてのテーブルであることは、ノードAが「ローカル」として示されていることから分かる。なお、図12(a)に示す経路評価テーブル507において、区間C−Dについての区間の利用優先度を基準として、他の区間の利用優先度は正規化されている。
【0113】
以下、図12を用いて、経路評価値の計算方法について具体的に説明する。図12(a)に示すように、区間A−B及び区間B−Cについての区間の利用優先度は、それぞれ3及び2である。この場合、経路A−B−Cについての経路評価値は以下のようにして算出される。
【0114】
経路A−B−Cについての経路評価値
={(区間A−Bの区間の利用優先度)+(区間B−Cの区間の利用優先度)}÷(ホップ数)
=(3+2)÷2
=2.5
従って、図12(b)において、経路A−B−Cについての経路評価値として「2.5」が格納されている。
【0115】
データを復元する際に、経路管理部504は、ストレージセット管理テーブル509から復元すべきデータのボリウムを格納するストレージSを備えるノードのノード名を取得し、それらのノードのうち、ストレージ評価テーブル508内の経路評価値が大きいノードのストレージSから優先してボリウムを読み出す事として決定する。読み出しボリウムの読み出しの際は、保管の安全性を考慮する必要は無いため、ディスタンスが考慮されていない経路評価値に基づいてボリウムを読み出すべきストレージを決定することは合理的である。
【0116】
以下、より具体的に、ノードA、B及びGのストレージに3つのボリウムを分散格納した場合に、経路管理部504がボリウムを読み出すべきストレージを決定する方法について図12(b)を用いて説明する。ここで、ノードAにアクセスした利用者に復元したデータを送信すると仮定する。
【0117】
図12(b)に示すように、ノードA、B及びGについての経路評価値は、それぞれ「最大」、「3」及び「10」である。3つのボリウムのうち2つのボリウムがあればデータを復元する事ができるので、この場合、ノードAに備えられた制御装置C内の経路管理部504は、ノードAのストレージ及びノードGのストレージから1つずつボリウムを読み出すことを決定する。これにより、ネットワーク上の使用帯域を削減しつつ、良いレスポンスでボリウムをストレージから読み出して、データを復元することが可能となる。
【0118】
上記広域分散ストレージシステムにデータを分散させて格納する場合に、ノードの数がボリウムの数よりも多いことがよくある。この場合、いずれのノードのストレージSにボリウムを格納するのか選択することが可能である。以下、最適なストレージセットを決定する方法について説明する。
【0119】
まず、基本的な考え方について説明する。
ボリウムをネットワーク上に分散されたストレージに格納する場合、帯域幅、コスト及びノード間のディスタンスを考慮することが望ましい。つまり、回線帯域が広く、コストが安いことに加えて、災害からの早期復旧のためにノード間の物理的な距離が離れていることが望ましい。近接したノードの場合、1つの災害のため同時に障害が発生する事がありうるからである。経路評価テーブル507に格納されるストレージ利用優先度及びストレージ評価テーブル508に格納されるストレージ評価値は、上記の考え方に基づいて、回線帯域が広い程大きな値となり、コストが安い程大きな値となり、ノード間の物理的な距離が離れている程大きな値となるように定義されている。なお、ストレージ利用優先度及びストレージ評価値の計算方法については既に説明した。
【0120】
以下、図13を用いて、上記ストレージ評価値に基づいてボリウムを格納するストレージセットを決定する処理について説明する。この処理は利用単位ごとに行われる。なお、以下の説明において、ストレージ評価テーブル508に経路評価値が項目として含まれていると仮定する。
【0121】
利用者から新規のデータの格納指示を受けた場合、ストレージセットを新規に決定することが必要となる。なお、ここでいうストレージセットとは、利用者がアクセスしているノード、つまりローカルノードから見たストレージセットである。ストレージセットとして決定されるべきノードの数は、通常、データを分割する事により得られたボリウムの数と同数である。
【0122】
ストレージセットを決定するために、まず、ローカルノードの経路管理部504は、ストレージセット番号を割り当て、ストレージセット構成情報をストレージセット管理テーブル509に格納する(S21)。なお、この時点では、ストレージセット構成情報にはストレージセット番号が割り当てられているだけであり、中身は空である。
【0123】
つづいて、経路管理部504は、ストレージ評価テーブル508を参照し、まだストレージセットを構成するノードとして決定されていないノードの中から、最大のストレージ評価値と、その評価値を持つノードのノード名を取得する(S22)。
【0124】
経路管理部504は、S22において同一のストレージ評価値を持つ複数のノードを取得したか否か判定する(S23)。同一のストレージ評価値を持つ複数のノードを取得した場合(S23:Yes)、S24に進み、そうでない場合(S23:No)、S30に進む。
【0125】
S24において、経路管理部504は、更に、同一のストレージ評価値を持つノードの数は、不足しているノードの数以上であるか否か判定する。同一のストレージ評価値を持つノードの数が、不足しているノードの数以上である場合(S24:Yes)、S25に進み、そうでない場合(S24:No)、S31に進む。なお、不足しているノード数とは、ストレージセットを構成するノードとして決定されるべきノードの数から、ストレージセットを構成するノードとして決定されたノードの数を減算した後に残る数である。つまり、不足しているノード数とは、ストレージセットを構成するノードとして決定すべきノードの総数のうち、まだ決定されていないノードの数をいう。
【0126】
S25において、経路管理部504は、S22で取得された複数のノードについて、ローカルノードからそのノードに至るまでのホップ数が互いに同じであるか否か判定する。ホップ数が互いに同じである場合(S25:Yes)、S26に進み、そうでない場合(S25:No)、S32に進む。
【0127】
S26において、経路管理部504は、ストレージセット管理テーブル509からS22で取得された複数のノードの経路評価値を取得し、これらのノードの経路評価値が互いに同じであるか否か判定する。複数のノードの経路評価値が互いに同じである場合(S26:Yes)、S27に進み、そうでない場合(S26:No)、S33に進む。
【0128】
S27において、経路管理部504は、S22で取得した複数のノードから不足しているノード数と同数のノードを任意に選択し、各ノードのストレージに格納するボリウムを決定する。そして、経路管理部504は、ストレージセット構成情報中の各ノードに対応するフィールドに決定したボリウム番号を書き込む。その際に、経路管理部504は、ボリウムが原本であるか否かを示すフラグ(この場合は原本)及び使用状況情報(書き込み可能及び読み込み可能)も書き込む。これにより、S22で取得されたノードはストレージセットを構成するノードとして決定され、ノードの状態は利用状態となる。
【0129】
続いて、経路管理部504は、ストレージセットを構成するために必要な数だけノードを決定したか否か判定する(S28)。必要な数の分だけノードを決定した場合(S28:Yes)、処理を終了し、そうでない場合(S28:No)、S22にもどる。
【0130】
S30において、経路管理部504は、S22で取得されたノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、そのノードに備えられたストレージに書き込むボリウムのボリウム番号を決定し、決定結果、ボリウムが原本であるか否かを示すフラグ及び使用状況情報をS21で作成したストレージセット構成情報に書き込む。その後、S28に進む。
【0131】
S31において、経路管理部504は、S22で取得された複数のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0132】
S32において、経路管理部504は、S22で取得された複数のノードのうち、ホップ数が少ない方のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0133】
S33において、経路管理部504は、S22で取得された複数のノードのうち、経路評価値が大きい方のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0134】
上記のようにして経路管理部504はストレージセットを構成するノードを決定し、ストレージセット構成情報が作成される。決定結果に基づいて、複数のボリウムは、ストレージセットとして決定されたノードに備えられたストレージに分散格納される。また、このストレージセット構成情報は、各ノードの制御装置Cに送信され、ストレージセット管理テーブル509に格納される。なお、ストレージ評価テーブル508に経路評価値が含まれていない場合、上記処理において、S26及びS33は行われない。ストレージセットは、ネットワーク構成が変化した際等に、更新することが可能である。この場合、経路管理部504は、更新されるストレージセットについてのストレージセット構造情報の使用状況情報をクリアした後、S22以降を行う。
【0135】
上記のように、制御装置Cは、データを複数のボリウムに分割し、帯域幅やコストだけでなく、ノード間の物理的距離に基づいて選択されたストレージにそれらのボリウムを格納する。これにより、災害により1つのボリウムを格納するストレージが破壊等された場合であっても、他のストレージに格納されたボリウムが無事であれば、データを復元する事が可能となる。従って、十分にノード間の物理的距離があれば、特にデータをバックアップするためのバックアップセンタを備える必要が無くなるという効果が得られる。
【0136】
以下、3データ+1パリティで冗長化したデータを複数のストレージに分散格納する場合を例として、ストレージセットの決定方法について具体的に説明する。なお、利用者はノードAにアクセスしていると仮定する。
【0137】
この場合、格納されるべきデータは、4つのボリウムに分割される。従って、ノードAに備えられた制御装置C内の経路管理部504は、ストレージ評価テーブル508に格納されたストレージ評価値に基づいて、これらのボリウムを分割格納するべき4つのストレージを決定する。図14(a)に、経路評価テーブル507の一例を、図14(b)に、図14(a)に示す経路評価テーブル507中のデータに基づいて算出されたストレージ評価値を示す。
【0138】
図14に即して説明すると、経路管理部504は、最も大きなストレージ評価値を持つノードのストレージから順に4つのストレージ、つまり、ノードA、B、E及びGのストレージを、ボリウムを格納するべきストレージとして決定する。経路管理部504は、決定結果に基づいてストレージセット構成情報を作成する。
【0139】
上記のように、冗長化され分割されたデータを構成する各ボリウムは、広域分散ストレージシステムに分散して格納される。さらに、各ボリウムの複製を作成し、ストレージに格納することとしても良いことはいうまでも無い。
【0140】
次に、ストレージセットを決定する際にローカルノードとなったノード以外のノードにアクセスする利用者が、そのストレージセットに格納されるデータを利用する場合について説明する。
【0141】
以下、データの格納を指示し、ストレージセットを決定する際にアクセスした利用者を利用者A、その利用者AがアクセスするノードをノードA、そのストレージセットに格納されるデータを利用する新たな利用者を利用者E、その利用者EがアクセスするノードをノードEと仮定して説明する。
【0142】
利用者Eは、ノードEを介して、広域分散ストレージシステムからデータを取得することができるが、上記のストレージセットは、ノードAから見て利用効率が良いように最適化されている。そこで、新たな利用者Eが利用するノードEから見ても良好な利用効率が得られるように、ボリウムの複製を作成することが可能である。以下、この処理を利用者の追加処理という。
【0143】
図15に、ストレージセットを利用する利用者を追加する処理の手順を示す。以下、図15を用いて利用者の追加処理について説明する。以下の処理は、利用者が追加されるノードの経路管理部504が行う。なお、以下の説明において、ストレージ評価テーブル508に経路評価値が項目として含まれていると仮定する。
【0144】
まず、経路管理部504は、利用者が追加されるストレージセットを特定するストレージセット番号を取得する。このストレージセット番号は、例えば追加される利用者がアクセスした際に入力することとしても良い。
【0145】
経路管理部504は、ストレージセット管理テーブル509から、そのストレージセット番号に対応するストレージセット構成情報を取得する(S41)。続いて、経路管理部504は、ストレージセットの決定処理を行う(S42)。この処理は、図13を用いて説明した処理と同様である。
【0146】
経路管理部504は、S41で取得したストレージセット構成情報に基づいて、S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されているか否か判定する(S43)。例えば、データが4つのボリウムに分割されている場合、S42でストレージセットとして4つのノードが決定されるが、これらの4つのノードに、既に4つのボリウムが格納されているか否か判定する。
【0147】
S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されている場合(S43:Yes)、処理を終了する。この場合、新たに追加される利用者が利用するノードにおいても、良好な利用効率が得られるからである。
【0148】
S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されていない場合(S43:No)、経路管理部504は、ストレージセット構造情報に基づいて、S42で決定されたストレージセットを構成するノードのうちでボリウムを格納していないノード(以下、未使用ノード)のノード名及び、不足しているボリウムを格納しているノード(以下、既存ノード)のノード名を取得する(S44)。
【0149】
経路管理部504は、ストレージ評価テーブル508から、未使用ノードおよび既存ノードについてのストレージ評価情報を取得し、各ストレージ評価情報に含まれるホップ数を比較する(S45)。未使用ノードのホップ数の方が、既存のノードのホップ数よりも小さい場合(S45:Yes)、S48に進み、そうでない場合(S45:No)、S46に進む。
【0150】
S46において、経路管理部504は、更に、各ストレージ評価情報に含まれる経路評価値を比較する(S46)。未使用ノードの経路評価値に定数a(1以上)を掛算した値の方が、既存のノードの経路評価値よりも小さい場合(S46:Yes)、S48に進み、そうでない場合(S46:No)、S47に進む。
【0151】
S47において、経路管理部504は、更に、各ストレージ評価情報に含まれるストレージ評価値を比較する(S46)。未使用ノードのストレージ評価値に定数b(1以上)を掛算した値の方が、既存のノードのストレージ評価値よりも小さい場合(S47:Yes)、S48に進み、そうでない場合(S47:No)、処理を終了する。現在の状態でも、追加される利用者にとって良好な利用効率が得られるからである。
【0152】
S48において、経路管理部504は、不足しているボリウムを既存ノードのストレージから複製し、その複製を未使用ノードのストレージに書き込むことと決定する。この結果に基づいて、制御パケット生成部501は、決定結果に基づいて、既存ノード宛てに、ストレージセット番号、ボリウム番号、及び未使用ノードのノード名を含み、制御内容が「ボリウムの複写」である制御パケットを生成し、そのパケットは制御装置Cから送信される。このパケットに基づいて、ボリウムの複製が、未使用ノードに生成される。
【0153】
続いて、経路管理部504は、S41で取得されたストレージセット構造情報中の未使用ノードのプロパティに、複写されたボリウムのボリウム番号、ボリウムが複写であることを示すフラグ及び使用状況情報を追記し、処理を終了する。これにより、追加される利用者にとっても良好な利用効率が得られるようになる。
【0154】
なお、ストレージ評価テーブル508に経路評価値が含まれていない場合、上記処理において、S46は行われない。また、評価の順を、構成によって変更することとしても良い。
【0155】
以下、4つのボリウムにデータを複数のストレージに分散格納する場合を例として、利用者の追加処理について具体的に説明する。説明において、既存の利用者AはノードAにアクセスし、追加される利用者EはノードEにアクセスすると仮定する。
【0156】
図16は、利用者の追加処理を説明する図である。図16には、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、右側に、ノードEから見たそれらを示す表が記載されている。図16において、左向きの矢印は、「左の表と同じ」ことを示す。
【0157】
図16に即して説明すると、図16の左側のノードAから見た表において、最もストレージ評価値が高い4つのノードA、B、E、Gにそれぞれボリウムa、b、c及びdが格納されている。このことから、ストレージセットはノードAから見て利用効率が良いように最適化されていることがわかる。一方、追加される利用者EのノードEから見て最もストレージ評価値が高い4つのノードは、ノードA、B、D及びEである。上記の通り、ノードA、B及びEには、既にボリウムa、b及びcが格納されているが、ノードEには、ボリウムが格納されていない。
【0158】
この場合、未使用ノードはノードDとなり、既存ノードはノードGとなり、不足するボリウムはdとなる。
ここで、図16によると、ノードEからノードDまでのホップ数は「1」であり、ノードEからノードGまでのホップ数は「2」である。従って、ノードEの経路管理部504は、ノードEにボリウムdの複製d’を複写する事により、ノードEから見ても利用効率が良いようにストレージセットを最適化することに決定する。
【0159】
利用者の追加処理についてさらに説明する。上記の図16の説明において、既存の利用者AがノードAにアクセスにするように最適化された広域分散ストレージシステムに、ノードEを利用する利用者Eを追加する処理について説明した。次に、さらに第3の利用者としてノードCを利用する利用者Cを追加する処理について説明する。図17は、第3の利用者の追加処理を説明する図である。図17には、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、中心に、ノードEから見たそれらを示す表、右側に、ノードCから見たそれらを示す表が記載されている。図17において、左向きの矢印は、「左の表と同じ」ことを示す。また、この説明においても、格納されるべきデータは、4つのボリウムに分割されると仮定する。
【0160】
第3の利用者を追加する場合も、図17で説明した処理と基本的に同様の処理を行う。つまり、経路管理部504は、ストレージセット管理テーブル509から、利用者が追加されることになるストレージセット番号に対応するストレージセット構成情報を取得し、ストレージセット構成情報に含まれるストレージ評価値が最も高い4つのノードを選択する。図17によると、選択されるノードは、ノードB、C、D及びEである。これらのノードがノードCから見て、ストレージセットを構成するノードとして決定される。
【0161】
続いて、経路管理部504は、決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されているか否か判定する。図17によれば、ノードBにボリウムb、ノードDにボリウムd’(dの複製)、ノードEにボリウムcが書き込まれているが、決定されたストレージセットを構成するいずれのノードにもボリウムaは書き込まれていない事が分かる。また、未使用ノードはノードCであり、既存ノード、つまりボリウムa又はa’(aの複製)を格納しているノードは、ノードA及びノードFであることが分かる。
【0162】
図17の場合、ノードCから見た、未使用ノードと既存ノードのホップ数を比較した結果、既存ノードA及びFのホップ数(それぞれ2及び3)は、未使用ノードCのホップ数(0)よりも大きいため、経路管理部504は、既存ノードからボリウムaを複写して未使用ノードCに格納することとして決定する。
【0163】
ここで、既存ノードはノードA及びノードFの2つあるため、複写の方法は以下の2通り考えられる。いずれの方法を採用することとしても良い。
方法1)ホップ数が少なく、且つ評価値が高いノードから不足ボリウムを複写して未使用ノードに格納することとする。図17の場合、ノードAからボリウムaを複写する。
【0164】
方法2)既存のノードのうちから2以上のノードを選択し、それらのノードから不足ボリウムを分散させて読み出して複写し、未使用ノードに格納する。図17の場合、ノードA及びノードFからボリウムcを分散させて読み出す。
【0165】
次に、分散配置ストレージシステムを構成する各ストレージの状態の確認方法について説明する。各ストレージの状態が正常であるか異常であるかを常時確認することが可能なように、分散配置ストレージシステムを構成することも可能である。この場合、各ノードの制御装置Cはローカルノードのストレージに対して状態を問い合わせ、ストレージはそれに対して正常な状態を示すキープアライブ(keep alive)信号を発信する。ストレージからのキープアライブ信号が途絶えた場合、そのノードの制御装置Cは、ストレージセット管理テーブル509を参照して、そのノードを用いて構成されているストレージセットを特定する。そして、特定されたストレージセットを構成する他のノードに対して、異常が生じたことを通知する。異常を検出した制御装置C及び異常を通知された制御装置C、つまり全ての制御装置Cは、ストレージセット構造情報内の全体プロパティ中の状態情報を、異常状態を示す値「R(Red)」とする。さらに、全ての制御装置Cは、そのストレージセットへの書き込みを遮断するように設定する。但し、利用者からのデータ読み出し要求に対しては、各制御装置Cは継続して処理を行う。
【0166】
次に、書き込みデータ及び復元データの一時保管について説明する。利用者から格納を指示されたデータは、利用者がアクセスしているローカルノードで冗長化された後に複数のボリウムに分割され、そのローカルノードからストレージセットを構成する各ノードに転送される。この際に、ローカルノードの制御装置Cは、そのデータのストレージセット番号と対応付けて、そのデータを一時記憶領域に保管することとしてもよい。
【0167】
この場合、ローカルノードの制御装置Cは、利用者から、ストレージセット番号とともにデータの読み出し要求を受信した際に、まず、そのストレージセット番号に対応するデータが一時記憶領域に格納されているか否か判定する。
【0168】
データが一時記憶領域に格納されていた場合、制御装置Cは、そのデータを利用者に送信する。そうでない場合、制御装置Cは、ストレージセット番号に対応するストレージセット構造情報をストレージセット管理テーブル509から取得し、そのストレージセット構造情報に基づいて各ノードからデータを復元するために必要なボリウムを取得し、それらのボリウムを用いて復元されたデータを利用者に送信する。このとき、復元されたデータは、制御装置Cの一時記憶領域に格納される。一時記憶領域が一杯になった場合、制御装置Cは、使用頻度の低いデータを削除し、そのデータに使用されていた領域を再利用する。これにより、データ読み出し時のレスポンスを向上させることが可能となる。
【0169】
次に、データをストレージに書き込むタイミングについて説明する。データの格納要求があった場合に、制御装置Cは、すぐにデータを複数のボリウムに分割して複数のノードのストレージに分散格納するのではなく、一旦、データを一時記憶領域に格納した後に、ストレージに分散格納することとしても良い。
【0170】
より具体的には、制御装置Cは、利用者からデータの格納要求を所定回数受信するのを待ち、その間に格納要求されたデータを一時記憶領域に格納する。データの格納要求を所定回数受信した場合、制御装置Cは、一時記憶領域に格納された各データを複数のボリウムに分割して、ボリウムの1つをローカルノードのストレージに格納させ、他のボリウムそれぞれについては、ストレージセットを構成する他のノードに転送し、各ノードのストレージに格納させる。その後、一時格納領域に書きこまれたデータを消去する。これにより、ローカルノード以外の他のノードにボリウムを転送する回数を低減する事が可能となるため、トラフィックの効率を上げることが可能となる。
【0171】
なお、上記において、制御装置Cは、データの格納要求を所定回数受信するまでデータを一時記憶領域に格納するとして説明したが、データの格納要求を所定回数受信するまで待つ代わりに、所定時間、データを一時記憶領域に格納することとしてもよい。この場合も、上記と同様の効果を得ることが可能である。
【0172】
次に、広域分散ストレージシステムを構成するストレージ上に格納されたボリウムを更新する場合の処理について説明する。上記のように、ストレージ上には、データが複数のボリウムに分割されて格納されている。このようなデータを更新する際に、マルチキャストパケットを利用する事としても良い。以下、この場合の処理について説明する。
【0173】
1)まず、ストレージセットを構成するノードを、ボリウムごとにグループ化する。例えば、図17の右側の表に示すようなストレージセットの場合、ストレージセット管理部505は、ボリウムaのグループとしてノードA、C及びF、ボリウムbのグループとしてノードB、ボリウムcのグループとしてノードE、ボリウムdのグループとしてノードD及びGを定義する。このグループは、不図示のグループテーブルに格納することとしても良い。
【0174】
2)続いて、利用者が各ボリウムを更新する際には、利用者が利用するローカルノードからマルチキャストパケットを用いて、ボリウムa、b、c及びdの各グループに分けられたノードのストレージに対して書き込みを行う。
【0175】
3)ローカルノードのストレージセット管理部505は、各ボリウムのグループに分けられたノードから正常に更新が完了した旨の通知を受けると、更新が完了したこととする。
【0176】
4)更新の際に異常が発生した場合、ローカルノードのストレージセット管理部505は、異常が発生したノード内のボリウムに対して再度の更新処理を行う。
【0177】
さらに、ストレージ上に分割して格納されたデータが利用者によって更新される場合、その更新処理の間、他の利用者がそのデータを構成するボリウムの原本或いは複製を更新することを禁止することとしても良い。これにより、更新されるデータについて原本と複製の内容の統一を図ることが可能となる。以下、この場合の処理について説明する。
【0178】
行われる処理の手順の概要は以下のとおりである。
1)まず、利用者はノードにアクセスし、更新したいデータのストレージセット番号を指定し、更新要求をそのノードに送信する。以下、この利用者がアクセスするノードをローカルノードという。ローカルノードの制御装置C内のストレージセット管理部505は、その利用者に対してロックキーを発行する。ロックキーは、データの更新を要求した利用者を識別するために使用され、広域分散ストレージシステムの利用者及びセッションごとにユニークなものである。図22に、このロックキーの機能を追加したアクセス管理テーブル510及びローカルボリウム管理テーブル511の一例を示す。
【0179】
2)ローカルノードの制御装置C内のストレージセット管理部505は、そのストレージセット番号によって特定されるボリウムを他の利用者が更新する事を禁止し(以下、ロックという)、さらに、そのストレージセットを構成する他のノードに、対応するボリウムをロックするよう依頼する。
【0180】
3)依頼を受信した各ノードの制御装置C内のストレージセット管理部505は、各ボリウムをロックする。
4)ローカルノードの制御装置C内のストレージセット管理部505は、各ボリウムがロックされていることを確認する。
【0181】
5)ローカルノードの制御装置Cは、更新するべきデータを冗長化して複数のボリウムに分割し、各ボリウムを、それぞれを格納するべきノードに送信する。6)ボリウムの送信及び更新が終了すると、各ノードの制御装置C内のストレージセット管理部505は、ロックを解除する。
【0182】
以下、上記の手順2)から6)を順に詳しく説明する。まず、手順2)について、図18を用いて詳しく説明する。図18に示す手順は、利用者からストレージセット番号の指定と、更新要求を受信したローカルノードの制御装置C内のストレージセット管理部505によって行われる。
【0183】
まず、ストレージセット管理部505は、利用者から受信したストレージセット番号に対応するアクセス管理情報を取得し、そのアクセス管理情報に基づいて、更新要求が出されたアクセス単位(論理ブロック)の状態が、「ロック状態」であるのか否か判定する(S51)。そのアクセス単位の状態が「ロック状態」であると判定された場合(S51:Yes)。S52に進み、そのアクセス単位の状態が「ロック状態」以外の状態である場合、S57に進む。S57において、ストレージセット管理部505は、ロックに失敗した旨を利用者に通知し、処理を終了する(終了パターン2:異常終了)。異常終了の場合、更新を行う事はできない。
【0184】
S52において、ストレージセット管理部505は、ロックキーを生成する。続いて、ストレージセット管理部505は、ストレージセット番号に対応するストレージセットについてのストレージセット構造情報をストレージセット管理テーブル509から取得し、そのストレージセットを構成するノードに、そのストレージセットをロックする依頼を通知する(S53)。なお、ロック依頼には、ストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。なお、ストレージセットを構成するノードにローカルノードが含まれる場合もあることをいうまでもない。
【0185】
通知を受けた各ノードは、ロック処理を行う(S54)。この処理については後述する。
さらに、ローカルノードのストレージセット管理部505は、S53で通知した各ノード全てからロックが完了した旨の通知を待つ(S55)。全ノードからロックが完了した旨の通知を受信した場合(S55:Yes)、S58に進む。そうでない場合(S55:No)、S56に進む。
【0186】
S56において、ストレージセット管理部505は、利用者に対してロックに失敗した事を通知し、処理を終了する(終了パターン2:異常終了)。
S58において、ストレージセット管理部505は、更新要求が出されたアクセス単位についてのアクセス管理情報にふくまれるプロパティを「ロック状態」に更新し、さらに、S52で生成されたロックキーを追加するように、アクセス管理テーブル510を更新する(S58)。さらに、ストレージセット管理部505は、その利用者に対してロックキーを発行して(S59)、処理を終了する(終了パターン1:正常終了)。
【0187】
続いて、手順3)について、図19を用いて説明する。この手順3)は、図18のS54において、ロックの依頼を受信した各ノードの制御装置Cによって行われる処理に相当する。
【0188】
まず、ローカルボリウム管理部506は、ロック依頼と共に受信したストレージセット番号及びストレージセットアクセス番号に対応するボリウム管理情報をローカルボリウム管理テーブル511から取得し、そのボリウム管理情報に基づいて、更新要求が出されたアクセス単位(論理ブロック)の状態が、「ロック状態」であるのか否か判定する(S61)。そのアクセス単位の状態が「ロック状態」であると判定された場合(S61:Yes)。S62に進み、そのアクセス単位の状態が「ロック状態」以外の状態である場合、S66に進む。S66において、ローカルボリウム管理部506は、ロックに失敗した旨を利用者に通知し、処理を終了する(終了パターン2:異常終了)。異常終了の場合、更新を行う事はできない。
【0189】
S62において、ローカルボリウム管理部506は、更新要求が出されたアクセス単位についてのボリウム管理情報にふくまれるプロパティに「ロック状態」を示すフラグを追加し、さらにロックキーを追加する。続いて、ストレージセット管理部505は、ロックが完了した旨を、ロック依頼を通知してきたノードの制御装置Cに通知する(S63)。
【0190】
さらに、ストレージセット管理部505は、アクセス管理テーブル510に、ロック対象となっている論理ブロックについてのアクセス管理情報が格納されているか否か判定する(S64)。アクセス管理情報が格納されている場合(S65:Yes)、ストレージセット管理部505は、そのアクセス管理情報のプロパティを「ロック状態」に更新する。アクセス管理情報がアクセス管理テーブル510に格納されていない場合(S65:No)、処理を終了する(終了パターン1:正常終了)。
【0191】
続いて、手順4)から6)までについて図20及び21を用いて説明する。まず、更新要求を出した利用者は、発行されたロックキーとともに、更新したいデータの内容をローカルノードに送信する(不図示)。まず、図20について説明する。図20に示す処理は、ローカルノードの制御装置Cによって行われる。
【0192】
ローカルノードのストレージセット管理部505は、更新対象となる論理ブロック(ロック対象の論理ブロックでもある)についてのアクセス管理情報をアクセス管理テーブル510から取得する。(S71)。続いて、ストレージ管理部505は、S71で取得したアクセス管理情報に含まれるプロパティに基づいて、更新対象となるブロックはロックされているか否か判定する(S72)。更新対象となるブロックがロックされている場合(S72:Yes)、S73に進み、更新対象となるブロックがロックされていない場合(S72:No)、S78に進む。
【0193】
S73において、ストレージセット管理部505は、利用者から受信したロックキーが、アクセス管理情報に含まれるロックキーと一致するか否か判定する。2つのロックキーが位置しない場合(S73:No)、ストレージセット管理部505は、利用者に対し、書き込み(更新)に失敗した旨を通知し(S79)、処理を終了する(終了パターン2:異常終了)。
【0194】
2つのロックキーが一致した場合(S73:Yes)、データ変換部3は、利用者から取得したデータを冗長化し、複数のボリウムに分割する。さらに、ストレージセット制御部501、ストレージセット管理テーブル509から、アクセス対象となっているストレージセットについてのストレージセット構造情報を取得する。経路管理部504は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのストレージセットを構成する各ノードに、書き込み依頼と共にボリウムを送信するように制御情報及び経路情報を生成し、パケット生成部4は、制御情報及び経路情報を付加したパケットを各ノードに送信する。なお、書き込み依頼にはストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。これを受けて、各ノードでは、データをストレージSに書き込む処理が行われる(S74)。この処理については図21を用いて後述する。
【0195】
続いて、ストレージセット管理部505は、書き込み依頼を送信した全てのノードから書き込み完了の通知を受信するまで待つ(S75)。全てのノードから書き込み完了の通知を受信しなかった場合(S75:No)、ローカルノードの制御装置Cは、そのストレージセットを構成する各ノードに、書き込み依頼と共にボリウムを再び送信する。これを受けて、各ノードでは、データをストレージSに書き込む処理が再び行われる(S80)。この処理は、S74と同じである。
【0196】
全てのノードから書き込み完了の通知を受信した場合(S75:Yes)、制御装置Cは、書き込みの要求を出した利用者に書き込み完了の通知を送信する(S76)。ストレージセット管理部505は、更新対象となる論理ブロックについてのアクセス管理情報をアクセス管理テーブル510から取得し、アクセス管理情報に含まれるプロパティから「ロック状態」を示すフラグを削除し(S77)、処理を終了する(終了パターン1:正常終了)。
【0197】
S78において、制御装置Cはロック処理を行う。ロック処理について、上記において図18及び19を用いて既に説明したため、ここでは説明をしない。S78のロック処理が正常終了した場合(終了パターン1)、S74に進み、S78のロック処理が異常終了した場合(終了パターン2)、S79に進む。
【0198】
次に、図21について説明する。図21の処理は、上記の図20のS74の処理に相当し、書き込み依頼を受信した各ノードの制御装置Cによって行われる。まず、ローカルボリウム管理部506は、ローカルボリウム管理テーブル511から書き込み依頼と共に受信したストレージセット番号及びストレージセットアクセス番号に対応するボリウム管理情報をローカルボリウム管理テーブル511から取得する(S81)。続いて、ローカルボリウム管理部506は、そのボリウム管理情報に含まれるロックキーが、書き込み依頼に含まれるロックキーと一致するか否か判定する(S82)。2つのロックキーが一致する場合(S82:Yes)、S83に進み、一致しない場合(S82:No)、ローカルボリウム管理部506は、書き込みに失敗した旨を、書き込み依頼を送信してきたノードの制御装置Cに送信し、処理を終了する(終了パターン2:異常終了)。
【0199】
S83において、パケット解析部7は、書き込み依頼と共に受信したパケットからボリウムを取出して、ストレージIF8を介してそのボリウムをストレージSに書き込む。続いて、制御パケット生成部502は、書き込みが完了した旨の通知を、書き込み依頼を送信してきたノードの制御装置Cに送信する(S84)。続いて、ローカルボリウム管理部506は、S81で取得したボリウム管理情報に含まれるプロパティから、「ロック状態」を示すフラグ及びロックキーを削除し(S85)、処理を終了する。
【0200】
次に、上記のロック処理において、更新の際にマルチキャストパケットを用いる場合について説明する。この場合の処理の手順の概要は以下のとおりである。なお、上記のマルチキャストを用いる更新処理の場合と同様に、処理の前にストレージセットを構成するノードを、ボリウムごとにグループ化することが必要である。各ノードの制御装置Cには、各ボリウムのグループを構成するノードとそのグループの代表ノードを示す情報を含む不図示のノードグループテーブルが備えられている。
【0201】
1)ストレージセット中で、各ボリウムを格納するノードを代表する代表ノード(例えば、原本を格納するノード)に対して、データ更新の前にデータアクセス単位でロック処理を行う。
【0202】
2)原本は同じグループに属するノードに対して、上記更新要求を送信した利用者を確認できるようにして(ロックキーを使用)ロック処理を行う。なお、1)及び2)の手順は、上記のロック処理と同様である。
【0203】
3)更新要求を送信した利用者は、マルチキャストパケットを用いて各ボリウムの更新内容を送信する。
4)更新内容を含むパケットを受信した各ノードは、ロックキーを用いて更新要求を送信した利用者と、そのパケットを送信した利用者とが同一であることを確認し、確認できた場合、ボリウムの更新を行う。
【0204】
5)上記4)における更新の際、ボリウムのグループの代表ノードは、更新完了を示すパケットを利用者がアクセスしているノードに送信する。代表ノード以外のノードは、そのグループの代表ノードに更新完了を示すパケットを送信する。
【0205】
6)代表ノードは、自ノードに格納されたボリウムに対するロックを解除する。また、代表ノードは、自グループに属する他のノードから更新完了を示すパケットを受信した場合、そのノードに格納されたボリウムに対するロックを解除する。
【0206】
7)代表ノードは、自グループに属する他のノードのうちで、更新完了を示すパケットを送信してこないノードがある場合、そのノードに対して更新処理を実行する。
【0207】
以下、図23から図25を用いて、上記3)からの手順についてより詳しく説明する。なお、図23から図25に示す処理は、図20及び図21に示す処理と同様の手順を含むため、図23から図25において図20及び図21と同様の手順には同じ番号を付し、説明を省略する。まず、図23を用いて、更新要求を出した利用者がアクセスするノードで行われる処理について説明する。以下において、利用者がアクセスするノードをローカルノードという。
【0208】
図23では、図20のS74からS77及びS80の代わりに、S91からS95を行う点が図20に示す処理と異なる。以下、S91からS95について説明する。なお、S91からS95は、上記3)から7)に示す手順のうち、ローカルノードの制御装置Cによって行われる手順を示す。
【0209】
S71からS73の後、経路管理部504は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのストレージセットを構成する各ノードに、書き込み依頼と共にそのノードに書き込むべきボリウムを送信するように制御情報及び経路情報を生成し、パケット生成部4は、制御情報及び経路情報を付加したパケットを各ノードにマルチキャストで送信する。なお、書き込み依頼にはストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。これを受けて、各ノードでは、ボリウムをストレージSに書き込む処理が行われる(S91)。この処理については図24及び図25を用いて後述する。
【0210】
続いて、ストレージセット管理部505は、書き込み依頼を送信したノードのうち、代表ノードから書き込み完了の通知を受信するまで待つ(S92)。ここで、ストレージセット管理部505は、不図示のノードグループテーブルに基づいて、全ての代表ノードから書き込み完了の通知を受信したか否か判定する。なお、図23から図25において原本を格納するノードを代表ノードと仮定している。
【0211】
全ての代表ノードから書き込み完了の通知を受信しなかった場合(S92:No)、ローカルノードの制御装置Cは、その代表ノードに、書き込み依頼と共に書き込むべきボリウムを再び送信する。これを受けて、各ノードでは、データをストレージSに書き込み処理が再び行われる(S80)。この処理は、S91と同じである。
【0212】
全てのノードから書き込み完了の通知を受信した場合(S92:Yes)、ローカルノードのストレージセット管理部505は、書き込みが完了した旨を利用者に通知する(S93)。続いて、ストレージセット管理部505は、更新対象となる論理ブロックについてのアクセス管理情報をアクセス管理テーブル510から取得し、アクセス管理情報に含まれるプロパティから「ロック状態」を示すフラグを削除し、処理を終了する(終了パターン1:正常終了)。
【0213】
また、ローカルノードの制御装置Cは、S78及びS79も行う。S78及びS79の処理については図20と同様であるため説明を省略する。
次に、図24を用いて、図23のS91において行われる処理について説明する。図24の処理は、各ボリウムのグループにおける代表ノードによって行われる。
【0214】
図24では、図21のS85の後に、更に、S101及びS102を行う点が図21に示す処理と異なる。以下、S101及びS102について説明する。
S81からS85の後、代表ノードのストレージセット管理部505は、その代表ノードが属するグループ内の他のノードの全てから書き込み完了の通知を受信するまで待つ(S101)。この代表ノードはノードグループテーブル(不図示)に基づいて、S101の判定を行う。全てのノードから書き込み完了の通知を受信しなかった場合(S101:No)、代表ノードの制御装置Cは、書き込み完了の通知を送信してこなかったノード対するボリウムの書き込みを、そのノードに代わって実行し(S102)、S101に戻る。
【0215】
全てのノードから書き込み完了の通知を受信した場合(S101:Yes)、処理を正常終了する(終了パターン1)。
次に、図25を用いて、図23のS91において行われる処理について説明する。図25の処理は、ストレージセットを構成するノードのうちで、代表ノード以外のノードによって行われる。
【0216】
図25では、図21のS83の後に、S84の代わりに、S111を行う点が図21に示す処理と異なる。以下、S111について説明する。
S81からS83の後、代表ノード以外のノードのストレージセット管理部505は、そのノードが属するグループの代表ノードへ書き込み完了の通知送信する(S111)。
【0217】
次に、新規のボリウムの作成手順について説明する。新規のボリウムは、たとえば、ボリウムの複製を作成する際や障害からの復旧の際等において作成される。
【0218】
以下、ボリウムの複製を作成する際を例にとって、新規のボリウムの作成手順について説明する。図26は、向かって左から順に、ノードAにアクセスする利用者A、ノードBにアクセスする利用者B及びノードCにアクセスする利用者が、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図26を用いて、複製の作成方法の決定について説明する。なお、この説明において、データは4つのボリウムに分割されていると仮定する。
【0219】
図26によると、利用者Cが使用するべきストレージセットは、ノードB、C、D及びEであり、利用者Cを広域分散ストレージシステムに追加する際に、ノードCにボリウムaの複製が作成される。このボリウムaの複製は、以下の2通りの方法で作成することができる。
【0220】
1)ノードA又はFにのいずれかに格納されたボリウムaから作成する。
2)ボリウムaの複製を他のボリウムb、c及びdから冗長を用いて再現する。
【0221】
複製が作成されるボリウムを格納するノードと、その他のボリウムを格納するノードのノードCから見たストレージ評価値を比較し、複製が作成されるボリウムを格納するノードの最高ストレージ評価値を、他の各ボリウムを格納するノードの最高ストレージ評価値のそれぞれが上回っていた場合、上記のうち2)の方法を採用し、そうでない場合、1)の方法を採用する。
【0222】
例えば、図26の場合、上位4つのストレージ評価値は以下のようになる。
ボリウムaを格納するノードの最高ストレージ評価値:11.3(ノードA)
ボリウムbを格納するノードの最高ストレージ評価値:17.0(ノードB)
ボリウムcを格納するノードの最高ストレージ評価値:14.8(ノードE)
ボリウムdを格納するノードの最高ストレージ評価値:21.8(ノードD)
ボリウムaを格納するノードAのストレージ評価値は、他のボリウムを格納するノードのストレージ評価値のいずれよりも低い。従って、この場合、ノードCの経路管理部504は、ノードC作成されるボリウムaの複製を、それぞれノードB、D及びEに格納されるボリウムb、d及びcから冗長を利用して再現することと決定し、この決定に基づいて、各ノードからボリウムb、c及びdはノードCに転送され、ノードCのパケット解析部7は、受信したボリウムb、c、dからボリウムaを再現して、ストレージIF8を介してストレージSにボリウムaを書き込む。
【0223】
次に、広域分散ストレージシステムを構成するノードの一部に障害が発生した場合の処理について説明する。まず、ノードに障害が発生した場合に、残っているノードから見て最適なストレージセットを再設定する処理について説明する。説明において、データは4つのボリウムに分割されていると仮定する。また、障害発生前後の各ノードの状態を図27(a)及び(b)に示すような状態として仮定する。なお、図27(a)及び(b)において、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、中心に、ノードEから見たそれらを示す表、右側に、ノードCから見たそれらを示す表が記載されている。図27(a)及び(b)において、左向きの矢印は、「左の表と同じ」ことを示す。
【0224】
まず、図27(a)に示すような状態において、ノードAの利用者Aは、ノードA、B、E及びGからそれぞれボリウムa、b、c及びdを取得する。ノードEの利用者Eは、ノードA、B、D及びEからそれぞれボリウムa、b、d’及びcを取得する。ノードCの利用者Cは、ノードB、C、D及びEからそれぞれボリウムb、a’、d’及びcを取得する。なお、「’」は、そのボリウムが複製である事を示す。
【0225】
このような状態で、ノードAのストレージに障害が発生した場合、利用者A及び利用者Eは、ノードAからボリウムaを取得する事ができなくなる。この場合、ボリウムaは、ノードC及Fにも存在するため、ノードA及びノードEのストレージセット管理部は、ノードAの代わりにノードC又はFのいずれかからボリウムaを取得する事に決定する。
【0226】
どのノードからボリウムaを取得するのか決定する方法は、基本的に、ストレージセットの決定処理と同様に、以下のように決定する。
1)ストレージ評価値が高い方を採用する。
【0227】
2)ストレージ評価値が同じ場合にホップ数が少ない方を採用する。
図27(b)において、ノードAから見て、ノードCとノードFのストレージ評価値は、それぞれ、「10.8」及び「8.3」である。従って、ノードAのストレージセット管理部505は、ノードAのストレージの代わりにノードCのストレージからボリウムaを取得する事として決定する。同様に、ノードEから見て、ノードCとノードFのストレージ評価値はそれぞれ、「16.3」及び「13.0」である。従って、ノードEのストレージセット管理部505は、ノードAのストレージの代わりにノードCのストレージからボリウムaを取得する事として決定する。
【0228】
さらに、障害が生じたノードAのストレージに格納されていたボリウムaは原本であったが、今回の障害の結果、ボリウムaの原本が存在しない事となってしまうため、ノードCとノードFのいずれかを代表ノードとして扱う事と決定する。なお、図27(b)においては、各ノードからのノードC及びノードFに対するストレージ評価値のうち、より平均値が大きいノードCを代表ノードとしている。
【0229】
さらに、障害からの復旧の際の、新規ボリウムの作成手順について説明する。図28は、図27と同様に、向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図28を用いてノードAのストレージが障害から普及した場合、ノードAのストレージにボリウムを格納する際に、どのボリウムの複製をどうやって作成するのか、その決定手順について説明する。なお、この説明においても、データは4つのボリウムに分割されていると仮定する。
【0230】
1)まず、ストレージセット管理部505は、復旧するノードのストレージ評価値は、復旧前に使用されていたノードのストレージ評価値よりも高いか否か判定する。復旧するノードのストレージ評価値の方が復旧前に使用されていたノードのストレージ評価値よりも高い場合、ストレージセット管理部505は、復旧するノードのストレージSにボリウムの複製を書き込むことと決定する。複製されるボリウムは、復旧前に使用されていたノードのうち、最低のストレージ評価値を持つノードのストレージに格納されていたボリウムとする。
【0231】
例えば、図28に示すように、ノードAでは、ノードAのストレージSの復旧前に、ノードB、C、E及びGのストレージが使用されていたが、ノードAのストレージ評価値の方がこれらより高い。また、ノードB、C、E及びGのうち最低のストレージ評価値を持つノードはノードCであり、そのノードCのストレージSに格納されているボリウムはボリウムaである。同様に、ノードEでは、ノードAのストレージSの復旧前に、ノードB、C、D及びEのストレージが使用されていたが、このうちの最低のストレージ評価値を持つノードCよりもノードAのストレージ評価値の方が高い。ノードCでは、ノードAの復旧前後において、追加されるボリウムを格納するノードのストレージ評価値は、使用するノードの変更を要するほど高くないため、何もしない。
【0232】
2)複製の作成は、最もストレージ評価値の高いノードで行われる。通常、ボリウムの複製が書き込まれるストレージに直接接続されているノードで行われる。図28の場合、ノードA(つまり、複製が作成されるストレージに接続されているノード)の制御装置Cは、ノードAのストレージSにボリウムaの複製を書き込む。
【0233】
3)複製を作成する際、ノードAのストレージセット管理部505は、複製される元となるボリウムを格納するノードのストレージ評価値と、その他のボリウムを格納するノードのストレージ評価値とを比較し、比較結果に基づいて、ストレージに格納されたボリウムを元にして複製を作成するか、それとも他のボリウムから冗長を利用してボリウムを再現するか、決定する。この決定方法は、上記の複製の作成方法と同様であるため、詳しい説明は省略する。
【0234】
図28の場合、ボリウムaを格納するノードのうち最大のストレージ評価値を持つノードはノードCであり、その値は10.8であり、この値は、他のボリウムを格納するノードのストレージ評価値よりも低い、従って、ストレージセット管理部505は、他のボリウムb、c及びdから冗長を利用してボリウムaを再現する事と決定する。
【0235】
次に、ストレージセットの管理について説明する。ノードの追加や削除を繰り替えすと、利用されないボリウム等が存在するようになる。このような場合、利用されないボリウムを削除することにより、ストレージの利用効率を向上させるようにストレージセットを管理ことが可能である。以下、ストレージセットの管理について説明する。
【0236】
以下において、データは4つのボリウムに分割され、ノードの追加や削除の結果、図29に示すようなボリウム構成になっていると仮定する。なお、図29(a)及び(b)は、それぞれ向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表であり、これは、図28と同様である。ここで、図29(a)は、使用されていないボリウムの削除前の状態を示し、図29(b)は、使用されていないボリウムの削除後の状態を示す。
【0237】
1)一定時間経過ごと、或いは、各ノードのストレージSに格納されるボリウムの状態が変更されるごとに、各ノードにおいて使用されるストレージセットを示す情報を各ノードで交換する。あるいは、任意の1つのノードに、その情報を集める。
【0238】
2)交換された情報に基づいて、どのノードによっても使用されていないボリウムが合った場合、1つのノードのストレージセット管理部505は、そのノードのボリウムを削除する事と決定し、そのノードに対してそのボリウムを削除するよう指示する制御パケットを送信する。
【0239】
例えば、図29において、ノードAにおいてストレージセットとして使用されているノードはノードA、B、E及びGであり、ノードEにおいてストレージセットとして使用されているノードはノードA、B、D及びEであり、ノードCにおいてストレージセットとして使用されているノードは、ノードB、C、D及びEである。(使用されているノードは最もストレージ評価値が高い4ノードである) 従って、ノードFは、どのノードの利用者によっても使用されていないことがわかる。従って、ノードFのストレージSに格納されるボリウムa’は削除される(図29(b)参照)。
【0240】
次に、データの複製の再生又はデータの再生を逐次に行う処理について説明する。データの複製又は再生は、利用者が追加された場合や新たなノードが追加された場合等において行われるが、緊急に行う必要が無いことも多い。この場合、データの複製又は再生は、ネットワークの空き時間等を利用して逐次に行われることとしてもよい。これにより、トラフィックの有効利用を可能とする。以下、この場合の処理について説明する。以下の処理は、利用者からデータの読み込み要求又は書き込み要求を受信したノード(以下、ローカルノード)によって行われる。
【0241】
図30に、逐次にデータの複製の作成又は再生を行う場合に、処理についてのフローチャートを示す。図30に示すように、まず、利用者は、読み出したいデータのストレージセット番号を指定して読み込み要求又は書き込み要求をアクセス先となっているノードに送信する。ローカルノードのストレージセット管理部505は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されているか否か判定する(S121)。
【0242】
ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されている場合(S121:Yes)、データの読み込み・書き込み処理が行われる(S126)。この読み込み・書き込み処理については、既に説明した。
【0243】
ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されていない場合(S121:No)、ストレージセット管理部505は、読み出し要求を受信した場合は、各ノードから取得したボリウムから冗長化によって要求されたデータを生成する。書き込み要求を受信した場合は、ストレージセット管理部505は、受信したデータを冗長化し、複数のボリウムに分割して各ノードに書き込む。その際に、ストレージセット管理部505は、読み出し又は書き込みアクセス管理テーブル510から該当するストレージセット番号を持つアクセス管理情報を取得し、そのアクセス管理情報に含まれるそのボリウムへのアクセスに関するプロパティに、アクセスされたデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付す(S122)。
【0244】
続いて、利用者から読み出し要求を受信した場合、ストレージセット管理部505は、S121で取得したストレージセット構造情報に基づいて、ストレージセットを構成するノードのうちでボリウムを格納していないノード(不完全ノード)を特定し、そのノードに格納するためのボリウムを、ストレージセットを構成する他のノードから読み出されたボリウムから生成する(S123)。
【0245】
ローカルストレージの制御装置Cは、生成されたボリウムを書き込むように指示して、不完全ノードのストレージSにそのボリウムを転送する。これを受けて、不完全ノードでは、ボリウムの書き込み処理が行われる(S124)。この書き込み処理は、逐次にネットワークの空き時間を利用して行われる。なお、ストレージセット管理部505は、このボリウムが完全データでないことを示すフラグをS121で取得したストレージセット構造情報に含まれる不完全ノードについてのプロパティに付す。
【0246】
逐次書き込みにおいて、その書き込みによるアクセスを示すアクセス管理情報中のプロパティに、アクセスされたデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付される。逐次書き込みが完了すると、アクセス管理情報中のプロパティには、生成データであることを示すフラグは付されないことになる。なお、2度目以降の逐次書き込みにおいて、ローカルノードの制御装置Cは、ストレージセット構造情報及びアクセス管理情報内の生成データを示すフラグに基づいて、不完全ノードと、それに格納すべきボリウムを特定することができる。
【0247】
書き込み処理が終了すると、ストレージセット管理部505は、アクセス管理テーブル510を参照し、ストレージセット番号に対応するアクセス管理情報に、生成データであることを示すフラグが付されているか否か判定する。生成データであることを示すフラグが付されたアクセス管理情報が無ければ、ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されていることとなる(S125:Yes)。この場合、ローカルノードのストレージセット管理部505は、このボリウムが完全データでないことを示すフラグをストレージセット構造情報に含まれる不完全ノードについてのプロパティから取り除く(S127)。生成データであることを示すフラグが付されたアクセス管理情報がある場合、まだ逐次書き込みが終了していない(S125:No)。この場合、一旦処理を終了し、S125を繰り返す。S125の判定がYesとなるまで、又は、一定回数S125を繰り返すまで、S125は繰り返されることとしてもよい。
【0248】
図31は、それぞれ向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図31を用いてデータの複製又は再生を逐次に行う場合について具体的に説明する。この図31は、ノードCにアクセスする利用者が追加された際の状態を示す。なお、以下の説明においてデータは4つのボリウムに分割されて分散して格納されると仮定する。また、以下の説明において、利用者CがアクセスするノードCをローカルノードという。
【0249】
まず、図31に示すように、利用者Cが使用するストレージセット(つまり、ノードCから見たストレージセット)は、ノードB、C、D及びEである。ノードD以外のノードには既にボリウムが格納されている。不足しているボリウムはボリウムdである。しかし、ノードB、C及びEに格納されているボリウムb、a及びcから、データを復元することは可能であるため、ノードDへのボリウムdの書き込みを即時に行う事は不要である。
【0250】
そこで、ノードDのストレージセット管理部505は、アクセス管理テーブル510から該当するストレージセット番号を持つアクセス管理情報を取得し、そのアクセス管理情報において、そのボリウムdへのアクセスに関するプロパティに、アクセスされるデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付す。
【0251】
利用者Cからデータの読み出し要求を受信した場合、ローカルノードの制御装置Cは、ノードB、C及びEからそれぞれボリウムb、a及びcを受信し、それらのボリウムから冗長化を利用してデータを再現して利用者に転送する。その際に、ローカルノードの制御装置Cはボリウムdを作成し、ノードDのストレージSにそのボリウムdを逐次に格納させる。
【0252】
図32に、制御装置の配置方法の変形例を示す。上記説明において、制御装置Cは各ノードに備えられるとした。しかし、制御装置Cは、利用者の端末に備えられる事としても良い。この場合、利用者の端末が、データを複数のボリウムに分割し、各ボリウムの格納先となるストレージを選択してデータを書き込む。さらに、利用者の端末が、複数のボリウムを各ストレージから読み出してデータを復元する。この場合でも、上記の広域分散ストレージシステムと同様の効果を得ることができる。図32には、ノードAを利用する利用者Aの端末が、データを3つのボリウムに分割し、ノードA、B及びGの3つのノードのストレージSに格納させる場合を示す。この場合、利用者Aの端末は、データを読み出す際には、ノードA、B及びGから3つのボリウムを読み出してデータを復元する。なお、この場合でも、上記の変形例に対応して様々な変形例が考え得る。
【0253】
上記において説明した制御装置C内の制御部5は、コンピュータを用いて構成することができる。コンピュータは、少なくとも、CPUとそのCPUに接続されたメモリを備え、さらに、外部記憶装置、媒体駆動装置を備えてもよい。それらはバスにより互いに接続されている。
【0254】
メモリは、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等であり、処理に用いられるプログラムとデータを格納する。制御部5を構成する各部及び各テーブルは、コンピュータのメモリの特定のプログラムコードセグメントにプログラムとして格納される。なお、制御装置Cによって行われる処理は、図を用いて既に説明した。
【0255】
CPUは、メモリを利用して上述のプログラムを実行することにより、必要な処理を行う。
外部記憶装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。外部記憶装置は、各テーブルを実現する。さらに、上述のプログラムをコンピュータの外部記憶装置に保存しておき、必要に応じて、それらをメモリにロードして使用することもできる。
【0256】
媒体駆動装置は、可搬記録媒体を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、メモリスティック、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、光ディスク、光磁気ディスク、DVD(Digital Versatile Disk)等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体に上述のプログラムを格納しておき、必要に応じて、それをコンピュータのメモリにロードして使用することもできる。
【0257】
また、ネットワークIFを介して、上述のプログラムを、ネットワークIFを介して、プログラムをダウンロードすることとしてもよい。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態及び変形例に限定されるものではなく、その他の様々な変更が可能である。
【0258】
(付記1) コンピュータが、データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージに分散して格納するデータ格納方法であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを特徴とするデータ格納方法。
【0259】
(付記2) 前記評価値の算出において、前記書き込みを依頼するノードから各ストレージまでのホップ数をさらに用いる、
ことを特徴とする付記1記載のデータ格納方法。
【0260】
(付記3) 前記システムの利用者に対して、前記ストレージセットを仮想的な1つのストレージとして提供する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0261】
(付記4) 前記データを前記ストレージセットから読み込む際には、前記ストレージセットに書きこまれた前記複数のボリウムのうち冗長化部分を含まないボリウムを各ストレージから読み出し、
前記読み出されたボリウムを用いて前記データを復元する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0262】
(付記5) 前記データを読み込む際には、各ストレージについて、前記帯域幅及び前記コストに基づいてレスポンスの良さを示す利用優先度を算出し、
前記利用優先度に基づいて、冗長化部分を含まないボリウムとして、前記複数のボリウムのうちいずれのボリウムを各ストレージから読み出すか決定する、
ことを更に含むことを特徴とする付記3に記載のデータ格納方法。
【0263】
(付記6) 前記ストレージセットとして選択されなかったストレージに、前記複数のボリウムうちの第1のボリウムの複製を格納する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0264】
(付記7) 前記第1のボリウムの複製を作成する際に、前記評価値に基づいて、前記第1のボリウムを格納するストレージから前記第1のボリウムを複写するのか、前記複数のボリウムのうちの前記第1のボリウム以外のボリウムから冗長を利用して前記第1のボリウムを再現するのか、2つの作成方法のうちのいずれかを選択する、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0265】
(付記8) 前記評価値に基づいて、前記ストレージセットとして選択されなかったストレージの中から前記ボリウムの複製を格納するストレージを選択する、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0266】
(付記9) 同一のボリウムを格納するべき複数のストレージに対して、マルチキャストでボリウムを書き込む、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0267】
(付記10) 前記第1のボリウムの複製をストレージに書き込む際に、多数回に分けて書き込み処理を行う、
ことを特徴とする付記6に記載のデータ格納方法。
【0268】
(付記11) 前記ストレージセットのうちの第1のストレージに障害が発生した場合、前記ストレージセットのうちの他のストレージへの書き込みを制限する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0269】
(付記12) 前記ストレージセットのうち第3のストレージに障害が発生した場合、前記評価値に基づいて、前記ストレージセットとして選択されているストレージ以外の第4のストレージを、前記第3のストレージの代わりに選択する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0270】
(付記13) 前記ストレージセットの選択後、一定のタイミングで、各ノードにおけるストレージセットを再選択し、
再選択の結果、どのノードからも利用されていないボリウムがあった場合、該ボリウムをストレージから削除する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0271】
(付記14) 前記一定のタイミングとは、前回の選択から一定期間後、又はボリウムの状態が変更される毎である、
ことを特徴とする付記13に記載のデータ格納方法。
【0272】
(付記15) 前記データを読み込んだ後に、前記データを一定期間、任意の1つのストレージ内に一時格納し、
前記一定期間内にデータの読み出しを行う際には、一時格納されたデータを前記1つのストレージから読み出す、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0273】
(付記16) 一定期間内に書き込み要求されたデータを一時格納領域に一時格納し、
前記一定期間経過後に前記一時格納領域からデータを取出し、
該データを複数のボリウムに分割し、
該複数のボリウムを前記ストレージセットに書き込む、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0274】
(付記17) 前記一時格納したデータを含むデータに対し、読み出し又は書き込みを行う際に、前記一時格納したデータを含まない部分のデータについてのみ、読み出し又は書き込むを行う、
ことを更に含むことを特徴とする付記15又は16に記載のデータ格納方法。
【0275】
(付記18) 前記ストレージセットに前記複数のボリウムを書き込む際に、前記書き込みを依頼するノードは、書き込みが終了するまで前記ストレージセットへの書き込み処理を禁止する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0276】
(付記19) 同一のボリウムを格納するべき複数のストレージの中から、1つのストレージを代表ストレージとして決定することを更に含み、
前記複数のストレージへの書き込み処理の禁止において、
前記代表ストレージへの書き込み処理の禁止は、前記書き込みを依頼するノードによって行われ、
前記代表ストレージ以外のストレージへの書き込み処理の禁止は、前記代表ストレージによって行われる、
ことを特徴とする付記18に記載のデータ格納方法。
【0277】
(付記20) 前記代表ストレージは、原本となるボリウムを格納するべきストレージである、
ことを特徴とする付記19に記載のデータ格納方法。
【0278】
(付記21) ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御をコンピュータに行われるコンピュータ・プログラムであって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを含む制御を前記コンピュータに行わせることを特徴とするコンピュータ・プログラム。
【0279】
(付記22) ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御をコンピュータに行わせるプログラムを記録した記録媒体であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを含む制御を前記コンピュータに行わせるプログラムを記録した記録媒体。
【0280】
(付記23) ネットワークを介して分散配置されたストレージを備えるシステムに使用される、データを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御を行う制御装置であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出する経路管理手段と、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択するストレージセット管理手段と、
を備えることを特徴とする制御装置。
【0281】
【発明の効果】
以上詳細に説明したように、本発明によれば、データを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納することによりデータのセキュリティを向上させつつも、さらに、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離を考慮して、そのノードから見て最適なストレージを選択することにより、回線効率と災害時のデータの安全性も向上させることが可能となる。
【図面の簡単な説明】
【図1】広域分散ストレージシステムの構成図である。
【図2】制御装置の構成図である。
【図3】制御装置の詳細構成図である。
【図4】具体的な広域分散ストレージシステムの構成例を示す図である。
【図5】経路評価テーブルの一例をす図である。
【図6】ストレージ評価テーブルの一例を示す図である。
【図7】ストレージセット管理テーブルの一例を示す図である。
【図8】アクセス管理テーブルの一例を示す図である。
【図9】ローカルボリウム管理テーブル一例を示す図である。
【図10】広域分散ストレージシステムにおけるデータの流れを説明する図である。
【図11】利用優先度及び評価値の計算処理を示すフローチャートである。
【図12】データ復元時にボリウムを読み出すべきストレージの決定方法を説明する図である。
【図13】ストレージセット管理テーブルの更新処理を示すフローチャートである。
【図14】冗長化したデータの分散書き込み先となるストレージの決定方法を説明する図である。
【図15】ノードへの利用者の追加処理を示すフローチャートである。
【図16】冗長化したデータの複製を格納するストレージの決定方法を説明する図である。
【図17】利用可能な複数のストレージから最適なストレージセットを選択する処理を説明する図である。
【図18】ロック処理を示すフローチャート(その1)である。
【図19】ロック処理を示すフローチャート(その2)である。
【図20】書き込み処理を示すフローチャート(その1)である。
【図21】書き込み処理を示すフローチャート(その2)である。
【図22】ストレージ内のデータ更新の際のロック処理を説明する図である。
【図23】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その1)である。
【図24】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その2)である。
【図25】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その3)である。
【図26】ボリウムの複製の作成方法を選択する処理を説明する図である。
【図27】一部のストレージに障害が発生した場合に、残りのストレージの中から最適なストレージを選択しなおす処理を説明する図である。
【図28】ストレージが障害から復旧した際にボリウムの複製の作成方法を選択する処理を説明する図である。
【図29】不要となったボリウムを削除する処理を説明する図である。
【図30】逐次にデータを書き込み又は再生する処理を示すフローチャートである。
【図31】データの複製の作成又は再生を逐次に行う場合の処理を説明する図である。
【図32】制御装置の機能を利用者端末が備える場合を説明する図である。
【図33】従来の技術に係わる広域分散ストレージシステムの構成図である。
【符号の説明】
1 ユーザインタフェース(受信側)
2 ユーザインタフェース(送信側)
3 データ変換部
4 パケット生成部
5 制御部
6 データ組立部
7、301 パケット解析部
8 ストレージインタフェース
9 ネットワークインタフェース(送信側)
10 ネットワークインタフェース(受信側)
302 データ分割部
303、603 パリティ計算部
401 データ管理情報付加部
402 制御/経路情報付加部
403 データ転送部
404 転送パケット構築部
501 ストレージ制御部
502 制御パケット生成部
503 ネットワーク制御部
504 経路管理部
505 ストレージセット管理部
506 ローカルボリウム管理部
507 経路評価テーブル
508 ストレージ評価テーブル
509 ストレージセット管理テーブル
510 アクセス管理テーブル
511 ローカルボリウム管理テーブル
601 パケット構築部
602 データ組立部
C 制御装置
R ルータ
S ストレージ
【発明の属する技術分野】
本発明は、システム内の格納装置を多重化することにより、データの冗長性や格納装置の性能の改善を図る技術、つまりRAID(Redundant Array of Inexpensive Disks)に係わる技術に関する。
【0002】
【従来の技術】
従来、RAIDを用いて、1つのデータを複数に分割し、分割されたデータを複数のストレージへ分散して格納することにより、システムの耐障害性(フォールトトレランス性)を向上させることが行われている。RAIDには、レベル0からレベル6までの7レベルがあり、さらに、複数のRAIDのレベルを組み合わせたレベルや共通化されていない独自レベルもある。このうち、レベル5は、データを複数に分割し、それらの分割されたデータの各々にパリティデータを付加し、それぞれの分割されたデータを複数のストレージに分散させて格納する。レベル5は、1台のネットワーク端末もしくは処理サーバと、ファイルサーバのように、比較的密な関係を持った装置間で採用されることが好ましい。
【0003】
図33に、RAIDを採用したシステムの構成図を示す。まず、図33において、ルータR(中継器)を用いて、ストレージサービスセンタSC、バックアップセンタBC、ミラーセンタMC及び利用者(ネットワーク端末あるいは処理サーバ)が接続され、これによって広域分散ストレージシステムが形成されている。
【0004】
以下、利用者が本社と支社とに分かれており、本社の利用者UHがデータを広域分散ストレージシステムにデータを格納し、そのデータを支社の利用者UBが利用すると仮定して、この広域分散ストレージシステムにおいて行われる処理について説明する。
【0005】
まず、本社の利用者UHは、格納したいデータをストレージサービスセンタSC内のストレージに格納させる。ストレージサービスセンタSCは、データを複製し、複製されたデータをバックアップセンタBC内のストレージに格納させる。なお、災害等によってストレージサービスセンタSCとバックアップセンタBCの双方が損害を受ける可能性を低くするために、ストレージサービスセンタSCとバックアップセンタBCとの物理的な距離は遠隔であることが望ましい。
【0006】
さらに、支社の利用者UBがデータをストレージから読み出す際のレスポンスを改善するために、ストレージサービスセンタSCはデータを複製し、複製されたデータを、支社に最寄りの接続地点となっているミラーセンタMC内のストレージに格納させる、又は、支社の利用者UBからストレージサービスセンタSCまでの回線に割り当てる帯域を広くする。なお、バックアップセンタBCがミラーセンタMCを兼ねることとしてもよい。
【0007】
また、RAIDに関する技術として、データをセグメントに分割し、そのセグメントごとに複数のストレージにランダムに分散格納する、つまり、ストライピング先となるストレージをランダムに決定する第1の発明がある。第1の発明により、一次ストレージが故障した場合その負荷全体が二次バックアップストレージにかかるという問題、及びコンボイ効果の確度が高くなるという問題を解決することが可能となる(例えば、特許文献1参照)。
【0008】
また、さらなるRAIDに関する技術として、ストレージに格納されたデータをミラーリングする際に、そのデータを複数に分割し、分割されたデータを複数のストレージに分散して格納する第2の発明がある。第2の発明により、元となったストレージに障害が生じた場合でも、複数のストレージに分散格納されていたデータを読み出して、これらのデータを用いて、元となったストレージに格納されていたデータを復元することが可能となる(例えば、特許文献2参照)。
【0009】
また、さらなるRAIDに関する技術として、バッファに格納されたデータをストレージに書き出す際に、送出先となるストレージが同一であるデータが複数存在する場合、それらのデータを1つの複合パケットにまとめて送出する第3の発明がある。第3の発明により、RAIDのI/Oスループット性能を向上させることが可能となる(例えば、特許文献3参照)。
【0010】
【特許文献1】
特表2002−500393号公報(段落0005から段落0007、図1)
【0011】
【特許文献2】
特開平9−171479号公報(段落0018から段落0020、段落031から段落0034、図1)
【0012】
【特許文献3】
特開平10−333836号公報(段落0024から段落0027、図3)
【0013】
【発明が解決しようとする課題】
しかし、上記の図33に示した従来に係わる広域ネットワークシステムには、以下に挙げる問題があった。
【0014】
1) バックアップセンタ及び・又はミラーセンタに、ストレージサービスセンタSCと同容量のストレージを備えることが必要であるため、システムが高コストとなる。
【0015】
2) バックアップ又はミラーリングを行う場合、そのために回線を利用することとなり効率的ではない。
3) 利用者が利用するネットワーク端末或いは処理サーバが、マルチホーミングされている場合であっても、それによって利用可能となっている複数の回線を効率的に使用できない。
【0016】
4) 各センタSC、BC又はMC内のストレージ等が盗難された場合、ストレージに格納されていたデータが損害を受けるため、セキュリティがよくない。また、上記に記載の第1の発明から第3の発明においても、上述の1)から4)の問題が解決されていない。
【0017】
以上の問題に鑑み、データの冗長化に要するストレージ容量を低減しつつも、データのセキュリティを向上させ、且つ、回線を効率的に利用することが可能なRAIDを提供することが、本発明が解決しようとする課題である。
【0018】
【課題を解決するための手段】
上記問題を解決するために、本発明の1態様によれば、コンピュータが、データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージに分散して格納するデータ格納方法において、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択することを含む。
【0019】
データを複数のボリウムに分割して複数のストレージに分散して格納することによりデータのセキュリティを向上させつつ、さらに、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離を考慮してそのノードから見て最適なストレージを選択することにより、回線効率と災害時のデータの安全性も向上させることが可能となる。
【0020】
上記方法における、前記評価値の算出の際に、更に、前記書き込みを依頼するノードから各ストレージまでのホップ数を考慮する事としても良い。ホップ数がが高い場合は、回線効率が低下するからである。
【0021】
また、上記方法において、前記システムの利用者に対して、前記ストレージセットを仮想的な1つのストレージとして提供することを更に含むこととしてもよい。これにより、データの分散格納によって、利用者にとって操作が複雑化することを避けることが可能となる。
【0022】
また、上記方法において、前記データを前記ストレージセットから読み込む際には、前記ストレージセットに書きこまれた前記複数のボリウムのうち冗長化部分を含まないボリウムを各ストレージから読み出し、前記読み出されたボリウムを用いて前記データを復元する、ことを更に含むこととしてもよい。これにより、使用する回線帯域を抑制することが可能となる。
【0023】
また、上記方法において、前記データを読み込む際には、前記帯域幅及び前記コストに基づいてレスポンスの良さを示す利用優先度を算出し、前記利用優先度に基づいて、冗長化部分を含まないボリウムとして、前記複数のボリウムのうちいずれのボリウムを各ストレージから読み出すか決定することを更に含むこととしてもよい。例えば、データを3データ+1パリティで冗長化して4つのボリウムに分割している場合、冗長化部分を含まないボリウムとして、3つのボリウムを任意に選択することができる。この選択の際に、帯域幅及びコストを考慮する事により、回線の利用効率を向上させることが可能となる。
【0024】
また、上記方法において、前記ストレージセットとして選択されなかったストレージに、前記複数のボリウムうちの第1のボリウムの複製を格納することを更に含むこととしてもよい。この複製はバックアップとして用いることができる。従来、バックアップとしてデータの複製を備えていたため、バックアップを備えるためには元データの2倍の容量が必要であった。しかし、この態様によれば、バックアップのために必要なストレージ容量は、たかだか1ボリウム分の容量となる。これにより、ストレージの使用効率を向上させることが可能となる。
【0025】
また、上記方法において、前記第1のボリウムの複製を作成する際に、前記評価値に基づいて、前記第1のボリウムを格納するストレージから前記第1のボリウムを複写するのか、前記複数のボリウムのうちの前記第1のボリウム以外のボリウムから冗長を利用して前記第1のボリウムを再現するのか、2つの作成方法のうちのいずれかを選択することを更に含むこととしてもよい。ここで、この選択において前記評価値を考慮することとしてもよい。
【0026】
また、上記方法において、同一のボリウムを格納するべき複数のストレージに対して、マルチキャストでボリウムを書き込むこととしてもよい。これにより、同じ内容をもつパケットを複数回にわたり送信することを回避する。
【0027】
また、上記方法において、前記第1のボリウムの複製をストレージに書き込む際に、多数回に分けて書き込み処理を行うこととしてもよい。多数回に分けることにより、一度につき回線にかける負荷を軽減する事が可能となる。
【0028】
また、上記方法において、前記ストレージセットのうちの第1のストレージに障害が発生した場合、前記ストレージセットのうちの他のストレージへの書き込みを制限することを更に含むこととしてもよい。例えば、第1のストレージの復旧前に他のストレージ内のボリウムが更新されてしまう事がありうるが、これにより、障害が発生したストレージの復旧後、システム内に異なるバージョンのボリウムが並存する事を防止する。
【0029】
また、上記方法において、前記ストレージセットのうち第3のストレージに障害が発生した場合、前記評価値に基づいて、前記ストレージセットとして選択されているストレージ以外の第4のストレージを、前記第3のストレージの代わりに選択することとしてもよい。これにより、障害が発生したストレージの代わりとして最適なストレージを選択することが可能となる。
【0030】
また、上記方法において、前記ストレージセットの選択後、一定のタイミングで、各ノードにおけるストレージセットを再選択し、再選択の結果、どのノードからも利用されていないボリウムがあった場合、該ボリウムをストレージから削除することを更に含むこととしてもよい。ここで、一定のタイミングとは、前回の選択から一定期間後、又はボリウムの状態が変更される毎である。システムの使用状況が変化するタイミングにおいて、ボリウムの使用状況に基づいて不要なボリウムを削除する事により、ストレージの利用効率を向上させることが可能となる。
【0031】
また、上記方法において、前記データを読み込んだ後に、前記データを一定期間、任意の1つのストレージ内に一時格納し、前記一定期間内にデータの読み出しを行う際には、一時格納されたデータを前記1つのストレージから読み出すことを更に含むこととしてもよい。このようなキャッシュ機能を備える事により、データの読み出しレスポンスを向上させることが可能となる。
【0032】
また、上記方法において、一定期間内に書き込み要求されたデータを一時記憶領域に保持し、前記一定期間経過後に一時格納領域からデータを取出し、データを複数のボリウムに分割し、該複数のボリウムを前記ストレージセットに書き込むことを更に含むこととしてもよい。これにより、書き込み要求を出すノードから他のストレージへボリウムを転送する回数を低減する事が可能となるため、トラフィックの効率を上げることが可能となる。
【0033】
また、上記方法において、前記複数のストレージに前記複数のボリウムを書き込む際に、前記書き込みを依頼するノードは、書き込みが終了するまで前記複数のストレージへの書き込み処理を禁止することを更に含むこととしてもよい。ここで、同一のボリウムを格納するべき複数のストレージがある場合、それらのストレージの中から、1つのストレージを代表ストレージとして決定し、前記複数のストレージへの書き込み処理の禁止において、前記代表ストレージへの書き込み処理の禁止は、前記書き込みを依頼するノードによって行われ、前記代表ストレージ以外のストレージへの書き込み処理の禁止は、前記代表ストレージによって行われることとしてもよい。また、前記代表ストレージは、原本となるボリウムを格納するべきストレージであることとしてもよい。
【0034】
また、上記方法に含まれる手順を含む制御をコンピュータに行わせるコンピュータ・プログラムも、コンピュータによって上記コンピュータ・プログラムを実行させる事によって、上記方法と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【0035】
また、上記コンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体から、そのプログラムをコンピュータに読み出させて実行させることによっても、上記課題を解決することができる。
【0036】
また、上記データ格納方法において行われる手順と同様の処理を行う、ネットワークを介して分散配置されたストレージを備えるシステムにデータを分散格納させる制御を行う制御装置によっても、上記データ格納方法と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【0037】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。なお、同じ装置等には同じ参照番号をつけ、説明を省略する。なお、以下の説明において、「ノードに備えられるストレージ」をいう際に「ノード」という場合がある。これは、文が長くなるために意味が分かりにくくなる事を防ぐためである。例えば、「ノードにボリウムを格納する」という表現は、「ノードに備えられるストレージにボリウムを格納する」ということを意味する。
【0038】
本発明は、データにパリティを付加し、これらを複数のストレージに分散格納する技術、例えばRAID5等の技術を前提とする。図1に、本発明の各実施形態に係わる広域分散ストレージシステムの構成を示す。図1に示すように、広域分散ストレージシステムにおいて、ネットワークを介して複数のノードが接続されている。ノード間で通信されるデータは、ルータRで中継される。各ノードは、ストレージS及び制御装置Cを備える。
【0039】
利用者本社や利用者支店等に備えられた端末の利用者は、広域分散ストレージシステムにアクセスし、ストレージSにデータを格納させたり、ストレージSからデータを読み出したり等を行う。
【0040】
制御装置Cは、端末からデータをストレージに格納するよう指示された場合、格納すべきデータのデータブロック単位(読み出し/書き込みの単位)にECC(Error Check and Correct)/パリティを付し、複数のストレージSにデータを分散させて格納させる。以下、分割されてパリティを付加されたデータをボリウムという。
【0041】
端末からストレージ内に格納されたデータを読み出すよう指示された際には、制御装置Cは、複数のストレージSから分散されて格納されているデータ、つまりボリウムを読み出して、データを復元して端末に送信する。
【0042】
データの格納及び読み出しの際、データの分散格納及び復元を制御装置Cが行うため、端末の利用者は、データが分散されていることを意識することなく、1つの仮想ディスクにデータを格納し、その仮想ディスクからデータを読み出す際と同様に、データを分散格納したり復元したりすることができる。
【0043】
また、ボリウムを読み出してデータを復元する際に、制御装置Cは、そのデータを構成する全てのボリウムを複数のストレージから読み出してそのデータを復元する。或いは、制御装置Cは、冗長化された分のボリウムを除いたボリウムを複数のストレージSから読み出してそのデータを復元する事としても良い。この場合、ネットワークにかかる負荷を低減する事ができる。より具体的には、2データ+1パリティで冗長化されて分割されたデータを復元する場合、制御装置Cは、3つのボリウムのうち2つのボリウムを読み出してデータを復元する。
【0044】
図2に、制御装置Cの構成を示す。図2に示すように、制御装置Cは、ユーザインタフェース(以下、ユーザIF)(受信側)1、ユーザIF(送信側)2、データ変換部3、パケット生成部4、制御部5、データ組立部6、パケット解析部7、ストレージインタフェース(以下、ストレージIF)8、ネットワークインタフェース(以下、ネットワークIF)(送信側)9及びネットワークIF(受信側)10を備える。
【0045】
ユーザIF(受信側)1は、利用者からストレージSへアクセスするパケットを受信し、制御情報を制御部5に、データをデータ変換部3へ振り分ける。
データ変換部3は、データをデータブロックに分割し、各ブロックにパリティを付加する。
【0046】
パケット生成部4は、広域ネットワークに送信するために、ブロック単位に分割されたデータ又は制御情報をパケット化する。
ネットワークIF(送信側)9は、パケット生成部4によって生成されたパケットをネットワークに送信する。
【0047】
ネットワークIF(受信側)10は、広域ネットワークからデータ又は制御情報を受信する。
パケット解析部7は、ネットワークIF(受信側)10から出力されたパケットを解析し、ストレージSからのデータ読み出し又はストレージSへのデータ書き込み処理を行う。
【0048】
データ組立部6は、ストレージSから読み出された信号を組み立てて、利用者からのデータアクセス指示に対して、制御情報を含む適正なパケットを生成する。
【0049】
制御部5は、利用者からのアクセスに基づいて、ストレージS及びデータの管理及び送受信パケットを処理する。
ユーザIF(送信側)2は、利用者に、データ組立部6によって組み立てられたパケットを送信する。
【0050】
次に、図3に、制御装置Cの詳細構成図を示す。以下、図3に示す詳細構成図にそって、データ変換部3、パケット生成部4、制御部5及びデータ組立部6の動作について詳しく説明する。
【0051】
上記データ変換部3は、パケット解析部301、データ分割部302及びパリティ計算部303を備える。パケット解析部301は、受信されたパケットを解析し、そのパケットからデータを取得する。データ分割部302は、データをデータブロック単位に分割する、パリティ計算部303は、パリティを計算し、データブロックに付加する。
【0052】
上記パケット生成部4は、データ管理情報付加部401、制御/経路情報負荷部402、データ転送部403及び転送パケット構築部404を備える。データ管理情報付加部401は、データブロックに制御部5からの出力されたデータ管理情報を付加する。なお、データ管理情報は、ストレージセット構成情報(後述)等であり、そのパケットに基づいて行われる処理の内容によって異なる。各処理において送信されるデータ管理情報については、後述する。
【0053】
制御/経路情報付加部402は、データブロックに、制御情報や経路情報を付加する。なお、経路情報は、そのデータブロックの宛先となるノードまでの経路及びその経路の評価値を示す情報であり、制御部5によって生成される。制御情報は制御の内容、例えばデータの書き込みであるのか、読み込みであるのか、ストレージへの書き込みを制御するのか等を示す情報であり、制御部5によって生成される。
【0054】
データ転送部403は、データ管理情報及び制御/経路情報が付加されたデータパケット又は、制御部5から出力された制御パケットを転送する。転送する際に、データ転送部403は、パケットの宛先となるノードのアドレス、例えばIP(Internet Protocol)アドレス等をパケットに付加する。このアドレスは、制御部5から出力される。なお、制御/経路情報に基づいて、データが、そのノード内のストレージに書き込まれるべきデータ(ローカルデータ)であると判定された場合、データ転送部403は、そのデータをパケット解析部7に出力する。
【0055】
転送パケット構築部404は、ストレージIF8を介してストレージSから読み出されたデータを他のノードの制御装置Cに転送するための転送パケットを構築し、データ転送部403に出力する。パケットを構築する際に、転送パケット構築部404は、上記のデータ管理情報付加部401及び制御経路情報付加部402と同様の処理を行う。
【0056】
上記制御部5は、ストレージ制御部501、制御パケット生成部502、ネットワーク制御部503、経路管理部504、ストレージセット管理部505、ローカルボリウム管理部506、経路評価テーブル507、ストレージ評価テーブル508、ストレージセット管理テーブル509、アクセス管理テーブル510及びローカルボリウム管理テーブル511を備える。ストレージ制御部501は、パケット解析部301から出力された制御情報に基づいて、ストレージSへのデータ書き込み、読み出し及びロック等を制御する。また、ストレージ制御部501は、制御パケット生成部502、ネットワーク制御部503、経路管理部504、ストレージセット管理部505及びローカルボリウム管理部506の動作の連携も制御する。
【0057】
制御パケット生成部502は、データ書き込み、データ読み込み、ストレージSのロック等の制御の内容を示す制御パケットを生成する。この制御パケットは他のストレージへ送信される。ネットワーク制御部503は、経路管理部504からの出力に基づいて、パケットの宛先となるノードを示す経路情報及びそのノードのアドレス等を生成する。なお、ノードのアドレスは、不図示のアドレステーブルに登録されているとする。アドレステーブルについては自明であるため、ここでは説明しない。
【0058】
経路管理部504は、経路評価テーブル507及びストレージ評価テーブル508に格納された情報に基づいて、ブロック単位に分割されたデータの宛先つまり、データの格納先又は転送先等を決定する。ストレージセット管理部505は、ストレージセット管理テーブル509を用いて、データを構成する複数のボリウムを管理する。また、ストレージセット管理部505は、各ノードのストレージSに格納されたボリウムが更新される際に、アクセス管理テーブル510を用いて各ストレージへのアクセスを管理する。ローカルボリウム管理部506は、ローカルボリウム管理テーブル511を用いて、ローカルストレージの利用状況を管理する。各テーブルの構造について詳しくは後述する。
【0059】
上記データ組立部6は、パケット構築部601、データ組立部602及びパリティ計算部603を備える。パリティ計算部603は、パリティを計算する。データ組立部6は、パリティ及びボリウムがどのボリウムであるのかを示すボリウム番号に基づいて、ローカルストレージSから読み出されたボリウムのデータ(ボリウムデータ)やその他のノードから受信したパケット内のボリウムデータを用いて、分割される前のデータを復元する。なお、ボリウム番号は、ボリウムデータに付されている。パケット構築部601は、データアクセス指示を出した利用者に、復元されたデータを送信するためにパケットを生成する。
【0060】
次に、図4に、広域分散ストレージシステムの具体的な構成例を示す。以下、図4に示す具体的な構成を用いて各テーブルの構成や制御装置の動作等を説明するが、これは具体的に説明するために図4に示すような構成を仮定しているのであり、ストレージシステムの構成を限定する趣旨ではない。
【0061】
図4に示すように、広域ネットワークを介して、ノードAからノードGから接続されている。各ノードには制御装置C及びストレージSが備えられている。ノードAとノードBの間(以下、区間A−B)、ノードEとノードFの間(以下、区間E−F)及び「ノードFとノードGの間(以下、区間F−G)の帯域幅は、150Mbpsである。ノードBとノードCの間(以下、区間B−C)、ノードCとノードDの間(以下、区間C−D)及びノードDとノードEの間(以下、区間D−E)の帯域幅は、50Mpbsである。ノードGとノードAの間(以下、区間G−A)の帯域幅は1Gbpsである。ノードBとノードEの間(以下、区間B−E)の帯域幅は、600Mbpsである。
【0062】
以下、図5から9を用いて、制御装置Cに備えられるテーブルの構造について説明する。まず、図5を用いて、経路評価テーブル507の構造について説明する。経路評価テーブル507は、広域分散ストレージシステムを構成する各ノードについての経路評価情報を格納する。経路評価テーブル507は、各ノード間を接続する経路の優位性を評価する際に参照される。図5に示すように、経路評価情報は、区間を識別する記号、その区間での帯域幅、その区間での通信コスト、その区間の物理的距離(ディスタンス)、及びストレージの利用優先度等を項目として含む。また、経路評価情報は、さらに区間の利用優先度を更に含むこととしても良い。なお、ローカルノード、つまり、その経路評価テーブル507を備える制御装置Cが属するノードについては、ネットワークを介して通信する必要がないため、帯域幅、コスト及びディスタンスは空である。
【0063】
帯域幅、通信コスト及び物理的距離は、広域分散ストレージシステムの構成に基づいて決定され、どのノードに備えられた制御装置であっても、基本的に同じ値となる。ストレージの利用優先度及び区間の利用優先度は、制御装置Cによって計算される値である。利用優先度は、帯域幅及びコストに加えて、災害等が発生した際のデータバックアップの安全性を評価するためにディスタンスに基づいて決定される。
【0064】
ストレージ利用優先度の計算式は以下のとおりである。
ストレージ利用優先度
=(帯域幅×A)÷(コスト×B)+(ディスタンス×C)
なお、A、B及びCは、重み付け定数である。以下の説明では、例として、A、B及びCをそれぞれ、2、1及び0.1と仮定する。各重み付け定数は、システムにおいて優先すべき性能、例えば通信速度を優先するのか、又はコストを優先するのか等を考慮して、変更することとしても良い。
【0065】
図5は、図4にシステムのノードAについての経路評価テーブル507を示している。以下、具体的に、区間A−Bについてストレージの利用優先度を算出する。
【0066】
区間A−Bについてのストレージの利用優先度
=(150×2)÷(100×1)+(80×0.1)=11
従って、図5に示す経路評価テーブル507において、区間A−Bについてのストレージの利用優先度として、「11」が格納されている。
【0067】
なお、区間の利用優先度は、帯域幅÷コストを正規化した値である。
次に、図6を用いて、ストレージ評価テーブル508の構造について説明する。ストレージ評価テーブル508は、広域分散ストレージシステムを構成する各ノードに備えられたストレージについてのストレージ評価情報を格納する。ストレージ評価テーブル508は、ストレージセットの作成及び追加等を行う際に、どのノードのストレージを使用すべきか決定する際に参照される。図6に示すように、ストレージ評価情報は、ノードを識別する記号、ローカルノードからそのノードへの経路、ストレージ評価値及びホップ数等を項目として含む。ここで、ローカルノードとは、そのストレージ評価テーブル508を備える制御装置Cのノードをいう。ホップ数とは、あるノードに到達するまでの経路に介在するノード数をいう。ストレージ評価値は、制御装置Cによって計算され、その計算式は以下の通りである。
【0068】
ストレージ評価値=
Σ{(経路上のノードのストレージの利用優先度)×(重み付け定数)}/(その経路の最終ノードまでのホップ数)
ここで、重み付け定数をホップ数の逆数とすると、ストレージ評価値の計算式は以下のようになる。
【0069】
ストレージ評価値
=Σ{(経路上のノードのストレージの利用優先度)÷(そのノードまでのホップ数)}/(その経路の最終ノードまでのホップ数)
図6は、図4に示すシステム内のノードAに備えられるストレージ評価テーブル508を例示している。以下、例として、具体的に、ノードAから見たノードBのストレージの評価値及びノードCのストレージの評価値を算出する。
【0070】
ノードBのストレージ評価値
=(区間A−Bのストレージの利用優先度÷1)/1
=11
ノードCのストレージ評価値
={(区間A−Bのストレージの利用優先度÷1)+(区間B−Cのストレージの利用優先度÷2)}/2
={11÷1+17÷2}/2
=9.75
また、ストレージ評価情報は、さらに、経路評価値を項目として含むこととしても良い。経路評価値は、最終ノードに到達するまでに経由する区間の利用優先度の和をホップ数で割算する事により計算される。
【0071】
次に、図7を用いて、ストレージセット管理テーブル509の構造について説明する。ストレージセット管理テーブル509は、それぞれのストレージセットに関する情報を管理するためのテーブルである。ストレージセット管理テーブル509は、ストレージセット構成情報を格納する。ストレージセット構成情報は、ストレージセットを識別するストレージセット番号と、その番号に対応するストレージセットに関する情報、つまりプロパティを含む。
【0072】
ここで、ストレージセットとは、システム全体から見ると、データを分割されたことにより得られた複数のボリウムを分散格納するストレージをいう。しかし、後述のように、通常、各ノードにおいて、ボリウムを分散格納するストレージの全てを使用(書き込み、読み出し等行う)するのではなく、使用するストレージはこれらのうちの少なくとも一部である。各ノードで使用するストレージは、後述のプロパティに含まれる使用状況情報によって管理される。使用するストレージ以外は、バックアップ等の機能を果たす。従って、各ノードから見ると、ストレージセットとは、使用状況情報によって使用が許可されているストレージである。
【0073】
ストレージセット番号は、ストレージセットを識別するために用いられるが、データを識別する情報としても利用される。例えば、システムの利用者は、読み出したいデータを特定するためにストレージセット番号を用いる。これは、ストレージセットは、利用者に対して1つの仮想的なストレージとして提供されるからである。
【0074】
プロパティには、広域分散ストレージシステム全体のプロパティと、各ノードのプロパティとがある。システム全体のプロパティは、データが分割されたノード数及びストレージの状態(良好であるか、異常があるのか等)を示す情報を含む。なお、データが分割されたノード数は、読み出しの場合と書き込みの場合のそれぞれについて格納される。なお、図7において、ストレージの状態として「G」が格納されている場合、状態が「良好」であり、「R」が格納されている場合、状態が「異常」である。
【0075】
ノードのプロパティは、そのノードのストレージがストレージセット中のどのボリウムを格納するのかを示すボリウム番号、そのボリウムが原本であるのか複製であるのかを示すフラグ及び、ローカルノードから各ノードが読み出し可能なのか書き込み可能なのか等の使用状況を示す使用状況情報を含む。ストレージセット管理テーブル509内の情報は、各ノードに備えられた制御装置Cの間で交換される。なお、図7ではボリウムが原本であるのか複製であるのかを示すフラグが「O」である場合ボリウムは原本であり、「C」である場合ボリウムは複製である。なお、後述の逐次格納の場合、格納途中の不完全なボリウムデータがストレージSに格納され得る。この不完全データを示すフラグを、「O」と「C」とは区別できるように、例えば「Q」とすることとしてもよい。
【0076】
例として、図7中のストレージセット番号が「00000001」であるストレージセット構造情報について説明する。このストレージセット構造情報の全体プロパティの読み出しノード数として「3」が格納されているため、データを復元するためには3つのボリウムが必要である。また、同様に、書き込みのノード数として「4」が格納されているため、データは4つのボリウムに分割されている。また、このストレージセット構造情報においてノードA、B、C、E及びGについてのプロパティが書き込まれているため、これらのノードにボリウムが格納されている。例えば、ノードAのプロパティによると、ノードAにはボリウム番号が「1」であるボリウムが格納され、それは原本であり、読み出し(Read)及び書き込み(Write)が可能な状況であることがわかる。
【0077】
また、ストレージセット構造情報中の使用状況情報は、そのストレージセット管理テーブル509を備えるノードにおいて通常使用されるストレージS、つまりそのノードから見たストレージセットを示す。本実施形態では、ローカルノードから見たストレージセットは、使用状況情報が「RW」つまり、読み出し及び書き込みが可能となっている複数のストレージであるとして仮定する。図7には、例としてノードAに備えられるストレージセット管理テーブル509を示す。この図7によると、ストレージセット番号が「00000001」であるデータについては、ノードAから見たストレージセットは、ノードA、B、及びEに備えられたストレージSである。
【0078】
次に、図8を用いて、アクセス管理テーブル510のデータ構造について説明する。アクセス管理テーブル510は、アクセス単位ごとにアクセス管理情報を格納する。制御装置Cは、アクセス管理情報に基づいて、利用者からの各ノード内のストレージSへのアクセスを制御する。同じストレージセットを共有する利用者からのアクセスは、同じ情報に基づいて制御される。アクセス管理情報は、ストレージセットアクセス番号及び、そのアクセス単位のプロパティを項目として含む。ストレージセットアクセス番号は、ストレージセットへの論理的なアクセス単位(論理ブロック)を示す番号であり、プロパティは、ストレージセットアクセス番号によって示される論理ブロックの状態、例えば、読み出し可能状態であるのか、書き込み可能状態であるのか、ロック状態であるのか、データが完全データであるのか。生成データであるのか等を示す。図8では、読み出し可能状態を「R」で例示し、書き込み可能状態を「W」で例示し、ロック状態を「L」で例示し、原本データを「O」で例示している。なお、ロック状態とは、書き込みが制限される状態をいい、例えばストレージ上のデータが更新される場合等に、制御装置Cによって設定される(後述)。図8には、例として、ストレージセット番号が「000010001」であるストレージセットについてのアクセス管理テーブルが示されている。また、完全データとは、ストレージから読み出したボリウムから復元されるデータであり、生成データとは、一部のボリウムが足りない状態で冗長化を利用して生成されたボリウムをいう。
【0079】
なお、アクセス管理情報は、さらに、ロックキーを項目として含むこととしてもよい。ロックキーは、ストレージセット番号によって識別されるデータの更新を要求した利用者を識別するための情報であり、更新要求を受信した制御装置Cによって生成される。
【0080】
次に、図9を用いて、ローカルボリウム管理テーブル511のデータ構造について説明する。ローカルボリウム管理テーブル511は、そのテーブルを備える制御装置Cに接続されているストレージS、つまりローカルストレージに格納されているボリウムの利用状況を管理するためのテーブルである。ローカルボリウム管理テーブル511は、各ノードの制御装置Cに個別に存在する。
【0081】
ローカルボリウム管理テーブル511は、ローカルストレージへのアクセス単位ごとにボリウム管理情報を格納する。図9に示すように、ボリウム管理情報は、ローカルストレージへのアクセス単位を示すストレージアクセス番号、そのストレージアクセス番号が示す論理ブロックの状態を示すプロパティ、ストレージセットを識別するストレージセット番号、そのストレージアクセス番号に対応するストレージセットアクセス番号を項目として含む。
【0082】
以下、広域分散ストレージシステムにおける動作について説明する。以下の説明において、データは、2データ+1パリティの冗長構成をとって3つに分割されて、広域分散ストレージシステムに分散格納されると仮定する。しかし、これは説明を分かり易く、且つ、具体的にするためであり、データの冗長構成を限定する趣旨ではない。
【0083】
広域分散システムの利用者は、通常、ネットワーク的に最も近くに位置するノードを介して、広域分散システムにアクセスする。
以下、図10を用いて、利用者AがノードAを介して広域分散システムにアクセスする場合のデータの流れについて説明する。図10において、実線の矢印は利用者が感じるデータの流れを示し、破線の矢印は、実際のデータの流れを示す。利用者Aが、ノードAを介して広域分散システムにアクセスし、データの格納指示を出したと仮定する。
【0084】
利用者Aから見た場合、ノードAに備えられた1つの仮想ディスクにデータが格納されたように感じられる。しかし、実際は、ノードAの制御装置Cは、データにパリティを付して複数のボリウムに分割し、広域分散システムを構成する複数のノードに備えられたストレージSに、ボリウムを分散させて書き込む。図10の場合、ノードAの制御装置Cは、データを3つのボリウムに分割し、それぞれを、ノードAのストレージS(A)、ノードBのストレージS(B)及びノードGのストレージS(G)に書き込む。
【0085】
以下、データ書き込みの際の制御装置Cの動作についてより詳しく説明する。1)制御装置Cのパケット解析部301は、受信されたパケットを解析し、そのパケットから書き込み指示を示す制御情報とデータを取得する。
【0086】
2)データ分割部302は、データをデータブロック単位に分割する。
3)パリティ計算部303は、パリティを計算し、データブロックに付加する。
【0087】
4)制御部5の経路管理部504は、データブロックを3つのボリウムに割り振る事によってデータを3分割し、任意の方法で3つのノードをそれぞれのボリウムを分散格納するべきストレージセットとして決定する。この説明では、ノードA、ノードB及びノードGがストレージセットとして決定される。
【0088】
5)ストレージセット管理部505は、ストレージセットの決定結果に基づいて、ストレージセット構成情報を作成し、ストレージセット管理テーブル509に書き込む。
【0089】
6)制御パケット生成部502は、データ書き込み制御を指示する制御パケットを生成する。ネットワーク制御部503は、経路管理部504からの出力に基づいて、パケットの宛先となるノードA、B及びGを示す経路情報及びそのノードのアドレス等を生成する。
【0090】
7)データ管理情報付加部401は、3つのボリウムのデータブロックにストレージセット構成情報を付加し、制御経路情報付加部402は、データブロックに、書き込み制御を指示する制御情報及び経路情報を付加する。データ転送部403は、データパケット又は、制御部5から出力された制御パケットを転送する。
【0091】
なお、制御/経路情報に基づいて、データがローカルストレージ、つまり、そのノードA内のストレージS(A)に書き込まれるべきデータ(ローカルデータ)であると判定される場合、データ転送部403は、そのデータをパケット解析部7に出力する。
【0092】
8)パケット解析部7は、複数のボリウムのうちの1つをローカルストレージS(A)へ書き込む制御を行う。書き込み後、ローカルボリウム管理部506は、ボリウム管理情報を生成し、ローカルボリウム管理テーブル511に格納する。なお、ボリウム管理情報に含まれる値の内、プロパティ、ストレージセット番号は、パケットから読み出すことにより取得される。
【0093】
9)転送されたボリウムは、各転送先のノードのパケット解析部7によってそのノードのストレージSに書き込まれる。格納先のノードのローカルボリウム管理部506は、上記と同様にしてボリウム管理情報を生成し、ローカルボリウム管理テーブル511に格納する。
【0094】
一方、利用者が分散格納されたデータを読み出す場合、利用者Aから見た場合、ノードAに備えられた1つの仮想ディスクからデータが読み出されたされたように感じられる。しかし、実際は、ノードAの制御装置Cは、複数のノードから3つのボリウムを読み出して、データを復元する。以下、データを読み出す場合の制御装置Cの動作についてより詳しく説明する。
【0095】
1)制御装置Cのパケット解析部301は、受信されたパケットを解析し、そのパケットから読み出し指示を示す制御情報を取出す。
2)ストレージセット管理部505は、ストレージセット管理テーブル509から読み出し指示がされたデータのストレージセット構成情報を取得し、これにより、利用者がアクセスしているノードから見てストレージセットとなっているノードのノード名を取得する。この場合は、ノードA、B及びGである。
【0096】
3)ノードAのデータ組立部602は、ローカルストレージSからボリウムを取得する。
4)ノードB及びGに格納されている残りの2つのボリウムを取得するために、制御パケット生成部502は、データ読み出し制御を指示する制御パケットを生成する。ネットワーク制御部503は、パケットの宛先となるノードB及びGを示す経路情報及びそのノードのアドレス等を生成する。
【0097】
5)データ管理情報付加部401は、制御パケットにストレージセット構成情報を付加し、制御経路情報付加部402は、データブロックに、書き込み制御を指示する制御情報及び経路情報を付加する。データ転送部403は制御パケットを転送する。
【0098】
6)ノードB及びノードGのそれぞれにおいて、転送パケット構築部404は、制御パケットに基づいてストレージSからボリウムを読み出し読み出されたデータをノードAの制御装置Cに転送するための転送パケットを構築し、データ転送部403に出力する。データ転送部403はパケットをノードAに転送する。
【0099】
7)ノードAのパケット解析部7は、受信したパケットから、ノードBのストレージ及びノードGのストレージから読み出された各ボリウムを取得する。
8)パリティ計算部603は、パリティを計算し、データ組立部602は、パリティ及びボリウム番号に基づいて、3つのボリウムから分割される前のデータを組み立てる。パケット構築部601は、データの読み出し指示を出した利用者に、組み立てられたデータを送信するためにパケットを生成する。
【0100】
このようにしてデータを複数のボリウムに分割し、ネットワークを介して分散して存在する複数のストレージに各ボリウムを格納させることにより、以下の効果が得られる。
【0101】
・1つストレージが盗難にあった場合でも、そのストレージに格納されている1つのボリウムだけでは分割前の元のデータを復元することができないため、データの安全性が高くなる。
【0102】
・各ノード宛てのパケットはデータの一部でしかないため、ネットワーク経路においてパケットキャプチャリングを行っても、分割前の元のデータを復元することができない。
【0103】
・ストレージが分散配置されるため、ネットワーク的に負荷分散を行う事ができる。このため、従来の技術と同一の速度でバックボーンが構成されている場合は、データアクセスにかかる時間を短縮する事ができる。また、従来の技術と同一のレスポンスを維持する場合は、バックボーンに必要な帯域幅を低減することができる。
【0104】
・分散配置と保管が同時に行われるため、バックアップセンタを設けるより、ストレージの使用効率がよい。
上記において、複数のボリウムに分散して格納されたデータを構成する全てのボリウムを複数のノードのストレージSから読み出してデータを復元する際の処理について説明した。しかし、複数のボリウムのうち冗長化された分のボリウムが無くともデータを復元する事ができるため、冗長化された分のボリウムを除いたボリウムを複数のノードのストレージSから読み出すこととしても良い。より具体的には、2データ+1パリティで冗長化されて3つのボリウムに分割されたデータの場合、3つのボリウムのうち2つのボリウムがあればデータを復元できるため、3つのボリウムのうち2つのボリウムをストレージSから読み出して、データを復元することとしてもよい。この場合、ネットワークにかかる負荷をさらに低減する事ができる。
【0105】
ここで、冗長化された分のボリウムを除いたボリウムを複数のノードのストレージSから読み出す場合、読み出されるボリウムの組合せは幾通りも考えられる。以下、このような場合に、最適なボリウムの組合せを決定する方法について説明する。
【0106】
この場合、読み出すべきストレージを決定するために、制御装置C内の経路評価テーブル507に格納される経路評価情報に区間の利用優先度を更に含み、ストレージ評価テーブル508に格納されるストレージ評価情報に経路評価値をさらに含む。
【0107】
以下、図11を用いて利用優先度及び評価値の計算処理の手順について説明する。利用優先度(区間の利用優先度とストレージの利用優先度)及び評価値(経路評価値とストレージ評価値)は、ネットワーク構成が変更されたり、回線が断絶したり、ノードが追加・削除されたりして経路評価テーブル507に格納される情報が変更された場合に、全てのノードについて計算される。
【0108】
図11に示すように、まず、経路管理部504は、利用優先度及び評価値の計算対象として1つのノードを取出し、そのノードがローカルノード(自ノード)であるか否か判定する(S11)。計算対象のノードがローカルノードで無い場合(S11:No)、S12に進み、計算対象のノードがローカルノードである場合(S11:Yes)、S16に進む。
【0109】
S12において、経路管理部504は、計算対象ノードからそのノードに隣接する他のノードまでの各区間について、その区間の帯域幅、コスト、距離を経路評価テーブル507から取得する。さらに、経路管理部504は、区間の利用優先度及びストレージの利用優先度を計算し、その計算結果に基づいて経路評価テーブル507を更新する(S13)。なお、区間の利用優先度及びストレージの利用優先度の計算方法については既に説明した。
【0110】
経路管理部504は、計算対象ノードから他のノードまでの各経路について、経路評価値及びストレージ評価値を計算し、その計算結果に基づいてストレージ評価テーブル508を更新する(S14)。さらに、経路管理部504は、全てのノードについて利用優先度及び評価値を計算したか否か判定する(S15)。全てのノードについて計算を行った場合(S15:Yes)、処理を終了し、そうでない場合、S11にもどる。
【0111】
S16において、経路管理部504は、利用優先度及び評価値を最大値に設定し(S16)、S15に進む。このように、利用優先度及び評価値を最大値に設定することにより、ボリウムの書き込み又は読み出しにおいて、ローカルノードのストレージSは最優先されることになる。
【0112】
図12(a)に、区間の利用優先度を含む、ノードAについての経路評価テーブル507の一例を、図12(b)に、経路評価値を含む、ノードAについてのストレージ評価テーブル508の一例を示す。図12に示すテーブルがノードAについてのテーブルであることは、ノードAが「ローカル」として示されていることから分かる。なお、図12(a)に示す経路評価テーブル507において、区間C−Dについての区間の利用優先度を基準として、他の区間の利用優先度は正規化されている。
【0113】
以下、図12を用いて、経路評価値の計算方法について具体的に説明する。図12(a)に示すように、区間A−B及び区間B−Cについての区間の利用優先度は、それぞれ3及び2である。この場合、経路A−B−Cについての経路評価値は以下のようにして算出される。
【0114】
経路A−B−Cについての経路評価値
={(区間A−Bの区間の利用優先度)+(区間B−Cの区間の利用優先度)}÷(ホップ数)
=(3+2)÷2
=2.5
従って、図12(b)において、経路A−B−Cについての経路評価値として「2.5」が格納されている。
【0115】
データを復元する際に、経路管理部504は、ストレージセット管理テーブル509から復元すべきデータのボリウムを格納するストレージSを備えるノードのノード名を取得し、それらのノードのうち、ストレージ評価テーブル508内の経路評価値が大きいノードのストレージSから優先してボリウムを読み出す事として決定する。読み出しボリウムの読み出しの際は、保管の安全性を考慮する必要は無いため、ディスタンスが考慮されていない経路評価値に基づいてボリウムを読み出すべきストレージを決定することは合理的である。
【0116】
以下、より具体的に、ノードA、B及びGのストレージに3つのボリウムを分散格納した場合に、経路管理部504がボリウムを読み出すべきストレージを決定する方法について図12(b)を用いて説明する。ここで、ノードAにアクセスした利用者に復元したデータを送信すると仮定する。
【0117】
図12(b)に示すように、ノードA、B及びGについての経路評価値は、それぞれ「最大」、「3」及び「10」である。3つのボリウムのうち2つのボリウムがあればデータを復元する事ができるので、この場合、ノードAに備えられた制御装置C内の経路管理部504は、ノードAのストレージ及びノードGのストレージから1つずつボリウムを読み出すことを決定する。これにより、ネットワーク上の使用帯域を削減しつつ、良いレスポンスでボリウムをストレージから読み出して、データを復元することが可能となる。
【0118】
上記広域分散ストレージシステムにデータを分散させて格納する場合に、ノードの数がボリウムの数よりも多いことがよくある。この場合、いずれのノードのストレージSにボリウムを格納するのか選択することが可能である。以下、最適なストレージセットを決定する方法について説明する。
【0119】
まず、基本的な考え方について説明する。
ボリウムをネットワーク上に分散されたストレージに格納する場合、帯域幅、コスト及びノード間のディスタンスを考慮することが望ましい。つまり、回線帯域が広く、コストが安いことに加えて、災害からの早期復旧のためにノード間の物理的な距離が離れていることが望ましい。近接したノードの場合、1つの災害のため同時に障害が発生する事がありうるからである。経路評価テーブル507に格納されるストレージ利用優先度及びストレージ評価テーブル508に格納されるストレージ評価値は、上記の考え方に基づいて、回線帯域が広い程大きな値となり、コストが安い程大きな値となり、ノード間の物理的な距離が離れている程大きな値となるように定義されている。なお、ストレージ利用優先度及びストレージ評価値の計算方法については既に説明した。
【0120】
以下、図13を用いて、上記ストレージ評価値に基づいてボリウムを格納するストレージセットを決定する処理について説明する。この処理は利用単位ごとに行われる。なお、以下の説明において、ストレージ評価テーブル508に経路評価値が項目として含まれていると仮定する。
【0121】
利用者から新規のデータの格納指示を受けた場合、ストレージセットを新規に決定することが必要となる。なお、ここでいうストレージセットとは、利用者がアクセスしているノード、つまりローカルノードから見たストレージセットである。ストレージセットとして決定されるべきノードの数は、通常、データを分割する事により得られたボリウムの数と同数である。
【0122】
ストレージセットを決定するために、まず、ローカルノードの経路管理部504は、ストレージセット番号を割り当て、ストレージセット構成情報をストレージセット管理テーブル509に格納する(S21)。なお、この時点では、ストレージセット構成情報にはストレージセット番号が割り当てられているだけであり、中身は空である。
【0123】
つづいて、経路管理部504は、ストレージ評価テーブル508を参照し、まだストレージセットを構成するノードとして決定されていないノードの中から、最大のストレージ評価値と、その評価値を持つノードのノード名を取得する(S22)。
【0124】
経路管理部504は、S22において同一のストレージ評価値を持つ複数のノードを取得したか否か判定する(S23)。同一のストレージ評価値を持つ複数のノードを取得した場合(S23:Yes)、S24に進み、そうでない場合(S23:No)、S30に進む。
【0125】
S24において、経路管理部504は、更に、同一のストレージ評価値を持つノードの数は、不足しているノードの数以上であるか否か判定する。同一のストレージ評価値を持つノードの数が、不足しているノードの数以上である場合(S24:Yes)、S25に進み、そうでない場合(S24:No)、S31に進む。なお、不足しているノード数とは、ストレージセットを構成するノードとして決定されるべきノードの数から、ストレージセットを構成するノードとして決定されたノードの数を減算した後に残る数である。つまり、不足しているノード数とは、ストレージセットを構成するノードとして決定すべきノードの総数のうち、まだ決定されていないノードの数をいう。
【0126】
S25において、経路管理部504は、S22で取得された複数のノードについて、ローカルノードからそのノードに至るまでのホップ数が互いに同じであるか否か判定する。ホップ数が互いに同じである場合(S25:Yes)、S26に進み、そうでない場合(S25:No)、S32に進む。
【0127】
S26において、経路管理部504は、ストレージセット管理テーブル509からS22で取得された複数のノードの経路評価値を取得し、これらのノードの経路評価値が互いに同じであるか否か判定する。複数のノードの経路評価値が互いに同じである場合(S26:Yes)、S27に進み、そうでない場合(S26:No)、S33に進む。
【0128】
S27において、経路管理部504は、S22で取得した複数のノードから不足しているノード数と同数のノードを任意に選択し、各ノードのストレージに格納するボリウムを決定する。そして、経路管理部504は、ストレージセット構成情報中の各ノードに対応するフィールドに決定したボリウム番号を書き込む。その際に、経路管理部504は、ボリウムが原本であるか否かを示すフラグ(この場合は原本)及び使用状況情報(書き込み可能及び読み込み可能)も書き込む。これにより、S22で取得されたノードはストレージセットを構成するノードとして決定され、ノードの状態は利用状態となる。
【0129】
続いて、経路管理部504は、ストレージセットを構成するために必要な数だけノードを決定したか否か判定する(S28)。必要な数の分だけノードを決定した場合(S28:Yes)、処理を終了し、そうでない場合(S28:No)、S22にもどる。
【0130】
S30において、経路管理部504は、S22で取得されたノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、そのノードに備えられたストレージに書き込むボリウムのボリウム番号を決定し、決定結果、ボリウムが原本であるか否かを示すフラグ及び使用状況情報をS21で作成したストレージセット構成情報に書き込む。その後、S28に進む。
【0131】
S31において、経路管理部504は、S22で取得された複数のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0132】
S32において、経路管理部504は、S22で取得された複数のノードのうち、ホップ数が少ない方のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0133】
S33において、経路管理部504は、S22で取得された複数のノードのうち、経路評価値が大きい方のノードを、ストレージセットを構成するノードとして決定する。経路管理部504は、S27と同様にして、S21で作成したストレージセット構成情報に決定結果、フラグ及び使用状況情報を書き込む。その後、S28に進む。
【0134】
上記のようにして経路管理部504はストレージセットを構成するノードを決定し、ストレージセット構成情報が作成される。決定結果に基づいて、複数のボリウムは、ストレージセットとして決定されたノードに備えられたストレージに分散格納される。また、このストレージセット構成情報は、各ノードの制御装置Cに送信され、ストレージセット管理テーブル509に格納される。なお、ストレージ評価テーブル508に経路評価値が含まれていない場合、上記処理において、S26及びS33は行われない。ストレージセットは、ネットワーク構成が変化した際等に、更新することが可能である。この場合、経路管理部504は、更新されるストレージセットについてのストレージセット構造情報の使用状況情報をクリアした後、S22以降を行う。
【0135】
上記のように、制御装置Cは、データを複数のボリウムに分割し、帯域幅やコストだけでなく、ノード間の物理的距離に基づいて選択されたストレージにそれらのボリウムを格納する。これにより、災害により1つのボリウムを格納するストレージが破壊等された場合であっても、他のストレージに格納されたボリウムが無事であれば、データを復元する事が可能となる。従って、十分にノード間の物理的距離があれば、特にデータをバックアップするためのバックアップセンタを備える必要が無くなるという効果が得られる。
【0136】
以下、3データ+1パリティで冗長化したデータを複数のストレージに分散格納する場合を例として、ストレージセットの決定方法について具体的に説明する。なお、利用者はノードAにアクセスしていると仮定する。
【0137】
この場合、格納されるべきデータは、4つのボリウムに分割される。従って、ノードAに備えられた制御装置C内の経路管理部504は、ストレージ評価テーブル508に格納されたストレージ評価値に基づいて、これらのボリウムを分割格納するべき4つのストレージを決定する。図14(a)に、経路評価テーブル507の一例を、図14(b)に、図14(a)に示す経路評価テーブル507中のデータに基づいて算出されたストレージ評価値を示す。
【0138】
図14に即して説明すると、経路管理部504は、最も大きなストレージ評価値を持つノードのストレージから順に4つのストレージ、つまり、ノードA、B、E及びGのストレージを、ボリウムを格納するべきストレージとして決定する。経路管理部504は、決定結果に基づいてストレージセット構成情報を作成する。
【0139】
上記のように、冗長化され分割されたデータを構成する各ボリウムは、広域分散ストレージシステムに分散して格納される。さらに、各ボリウムの複製を作成し、ストレージに格納することとしても良いことはいうまでも無い。
【0140】
次に、ストレージセットを決定する際にローカルノードとなったノード以外のノードにアクセスする利用者が、そのストレージセットに格納されるデータを利用する場合について説明する。
【0141】
以下、データの格納を指示し、ストレージセットを決定する際にアクセスした利用者を利用者A、その利用者AがアクセスするノードをノードA、そのストレージセットに格納されるデータを利用する新たな利用者を利用者E、その利用者EがアクセスするノードをノードEと仮定して説明する。
【0142】
利用者Eは、ノードEを介して、広域分散ストレージシステムからデータを取得することができるが、上記のストレージセットは、ノードAから見て利用効率が良いように最適化されている。そこで、新たな利用者Eが利用するノードEから見ても良好な利用効率が得られるように、ボリウムの複製を作成することが可能である。以下、この処理を利用者の追加処理という。
【0143】
図15に、ストレージセットを利用する利用者を追加する処理の手順を示す。以下、図15を用いて利用者の追加処理について説明する。以下の処理は、利用者が追加されるノードの経路管理部504が行う。なお、以下の説明において、ストレージ評価テーブル508に経路評価値が項目として含まれていると仮定する。
【0144】
まず、経路管理部504は、利用者が追加されるストレージセットを特定するストレージセット番号を取得する。このストレージセット番号は、例えば追加される利用者がアクセスした際に入力することとしても良い。
【0145】
経路管理部504は、ストレージセット管理テーブル509から、そのストレージセット番号に対応するストレージセット構成情報を取得する(S41)。続いて、経路管理部504は、ストレージセットの決定処理を行う(S42)。この処理は、図13を用いて説明した処理と同様である。
【0146】
経路管理部504は、S41で取得したストレージセット構成情報に基づいて、S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されているか否か判定する(S43)。例えば、データが4つのボリウムに分割されている場合、S42でストレージセットとして4つのノードが決定されるが、これらの4つのノードに、既に4つのボリウムが格納されているか否か判定する。
【0147】
S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されている場合(S43:Yes)、処理を終了する。この場合、新たに追加される利用者が利用するノードにおいても、良好な利用効率が得られるからである。
【0148】
S42で決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されていない場合(S43:No)、経路管理部504は、ストレージセット構造情報に基づいて、S42で決定されたストレージセットを構成するノードのうちでボリウムを格納していないノード(以下、未使用ノード)のノード名及び、不足しているボリウムを格納しているノード(以下、既存ノード)のノード名を取得する(S44)。
【0149】
経路管理部504は、ストレージ評価テーブル508から、未使用ノードおよび既存ノードについてのストレージ評価情報を取得し、各ストレージ評価情報に含まれるホップ数を比較する(S45)。未使用ノードのホップ数の方が、既存のノードのホップ数よりも小さい場合(S45:Yes)、S48に進み、そうでない場合(S45:No)、S46に進む。
【0150】
S46において、経路管理部504は、更に、各ストレージ評価情報に含まれる経路評価値を比較する(S46)。未使用ノードの経路評価値に定数a(1以上)を掛算した値の方が、既存のノードの経路評価値よりも小さい場合(S46:Yes)、S48に進み、そうでない場合(S46:No)、S47に進む。
【0151】
S47において、経路管理部504は、更に、各ストレージ評価情報に含まれるストレージ評価値を比較する(S46)。未使用ノードのストレージ評価値に定数b(1以上)を掛算した値の方が、既存のノードのストレージ評価値よりも小さい場合(S47:Yes)、S48に進み、そうでない場合(S47:No)、処理を終了する。現在の状態でも、追加される利用者にとって良好な利用効率が得られるからである。
【0152】
S48において、経路管理部504は、不足しているボリウムを既存ノードのストレージから複製し、その複製を未使用ノードのストレージに書き込むことと決定する。この結果に基づいて、制御パケット生成部501は、決定結果に基づいて、既存ノード宛てに、ストレージセット番号、ボリウム番号、及び未使用ノードのノード名を含み、制御内容が「ボリウムの複写」である制御パケットを生成し、そのパケットは制御装置Cから送信される。このパケットに基づいて、ボリウムの複製が、未使用ノードに生成される。
【0153】
続いて、経路管理部504は、S41で取得されたストレージセット構造情報中の未使用ノードのプロパティに、複写されたボリウムのボリウム番号、ボリウムが複写であることを示すフラグ及び使用状況情報を追記し、処理を終了する。これにより、追加される利用者にとっても良好な利用効率が得られるようになる。
【0154】
なお、ストレージ評価テーブル508に経路評価値が含まれていない場合、上記処理において、S46は行われない。また、評価の順を、構成によって変更することとしても良い。
【0155】
以下、4つのボリウムにデータを複数のストレージに分散格納する場合を例として、利用者の追加処理について具体的に説明する。説明において、既存の利用者AはノードAにアクセスし、追加される利用者EはノードEにアクセスすると仮定する。
【0156】
図16は、利用者の追加処理を説明する図である。図16には、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、右側に、ノードEから見たそれらを示す表が記載されている。図16において、左向きの矢印は、「左の表と同じ」ことを示す。
【0157】
図16に即して説明すると、図16の左側のノードAから見た表において、最もストレージ評価値が高い4つのノードA、B、E、Gにそれぞれボリウムa、b、c及びdが格納されている。このことから、ストレージセットはノードAから見て利用効率が良いように最適化されていることがわかる。一方、追加される利用者EのノードEから見て最もストレージ評価値が高い4つのノードは、ノードA、B、D及びEである。上記の通り、ノードA、B及びEには、既にボリウムa、b及びcが格納されているが、ノードEには、ボリウムが格納されていない。
【0158】
この場合、未使用ノードはノードDとなり、既存ノードはノードGとなり、不足するボリウムはdとなる。
ここで、図16によると、ノードEからノードDまでのホップ数は「1」であり、ノードEからノードGまでのホップ数は「2」である。従って、ノードEの経路管理部504は、ノードEにボリウムdの複製d’を複写する事により、ノードEから見ても利用効率が良いようにストレージセットを最適化することに決定する。
【0159】
利用者の追加処理についてさらに説明する。上記の図16の説明において、既存の利用者AがノードAにアクセスにするように最適化された広域分散ストレージシステムに、ノードEを利用する利用者Eを追加する処理について説明した。次に、さらに第3の利用者としてノードCを利用する利用者Cを追加する処理について説明する。図17は、第3の利用者の追加処理を説明する図である。図17には、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、中心に、ノードEから見たそれらを示す表、右側に、ノードCから見たそれらを示す表が記載されている。図17において、左向きの矢印は、「左の表と同じ」ことを示す。また、この説明においても、格納されるべきデータは、4つのボリウムに分割されると仮定する。
【0160】
第3の利用者を追加する場合も、図17で説明した処理と基本的に同様の処理を行う。つまり、経路管理部504は、ストレージセット管理テーブル509から、利用者が追加されることになるストレージセット番号に対応するストレージセット構成情報を取得し、ストレージセット構成情報に含まれるストレージ評価値が最も高い4つのノードを選択する。図17によると、選択されるノードは、ノードB、C、D及びEである。これらのノードがノードCから見て、ストレージセットを構成するノードとして決定される。
【0161】
続いて、経路管理部504は、決定されたストレージセットを構成するノードに、データを構成するボリウムが全て格納されているか否か判定する。図17によれば、ノードBにボリウムb、ノードDにボリウムd’(dの複製)、ノードEにボリウムcが書き込まれているが、決定されたストレージセットを構成するいずれのノードにもボリウムaは書き込まれていない事が分かる。また、未使用ノードはノードCであり、既存ノード、つまりボリウムa又はa’(aの複製)を格納しているノードは、ノードA及びノードFであることが分かる。
【0162】
図17の場合、ノードCから見た、未使用ノードと既存ノードのホップ数を比較した結果、既存ノードA及びFのホップ数(それぞれ2及び3)は、未使用ノードCのホップ数(0)よりも大きいため、経路管理部504は、既存ノードからボリウムaを複写して未使用ノードCに格納することとして決定する。
【0163】
ここで、既存ノードはノードA及びノードFの2つあるため、複写の方法は以下の2通り考えられる。いずれの方法を採用することとしても良い。
方法1)ホップ数が少なく、且つ評価値が高いノードから不足ボリウムを複写して未使用ノードに格納することとする。図17の場合、ノードAからボリウムaを複写する。
【0164】
方法2)既存のノードのうちから2以上のノードを選択し、それらのノードから不足ボリウムを分散させて読み出して複写し、未使用ノードに格納する。図17の場合、ノードA及びノードFからボリウムcを分散させて読み出す。
【0165】
次に、分散配置ストレージシステムを構成する各ストレージの状態の確認方法について説明する。各ストレージの状態が正常であるか異常であるかを常時確認することが可能なように、分散配置ストレージシステムを構成することも可能である。この場合、各ノードの制御装置Cはローカルノードのストレージに対して状態を問い合わせ、ストレージはそれに対して正常な状態を示すキープアライブ(keep alive)信号を発信する。ストレージからのキープアライブ信号が途絶えた場合、そのノードの制御装置Cは、ストレージセット管理テーブル509を参照して、そのノードを用いて構成されているストレージセットを特定する。そして、特定されたストレージセットを構成する他のノードに対して、異常が生じたことを通知する。異常を検出した制御装置C及び異常を通知された制御装置C、つまり全ての制御装置Cは、ストレージセット構造情報内の全体プロパティ中の状態情報を、異常状態を示す値「R(Red)」とする。さらに、全ての制御装置Cは、そのストレージセットへの書き込みを遮断するように設定する。但し、利用者からのデータ読み出し要求に対しては、各制御装置Cは継続して処理を行う。
【0166】
次に、書き込みデータ及び復元データの一時保管について説明する。利用者から格納を指示されたデータは、利用者がアクセスしているローカルノードで冗長化された後に複数のボリウムに分割され、そのローカルノードからストレージセットを構成する各ノードに転送される。この際に、ローカルノードの制御装置Cは、そのデータのストレージセット番号と対応付けて、そのデータを一時記憶領域に保管することとしてもよい。
【0167】
この場合、ローカルノードの制御装置Cは、利用者から、ストレージセット番号とともにデータの読み出し要求を受信した際に、まず、そのストレージセット番号に対応するデータが一時記憶領域に格納されているか否か判定する。
【0168】
データが一時記憶領域に格納されていた場合、制御装置Cは、そのデータを利用者に送信する。そうでない場合、制御装置Cは、ストレージセット番号に対応するストレージセット構造情報をストレージセット管理テーブル509から取得し、そのストレージセット構造情報に基づいて各ノードからデータを復元するために必要なボリウムを取得し、それらのボリウムを用いて復元されたデータを利用者に送信する。このとき、復元されたデータは、制御装置Cの一時記憶領域に格納される。一時記憶領域が一杯になった場合、制御装置Cは、使用頻度の低いデータを削除し、そのデータに使用されていた領域を再利用する。これにより、データ読み出し時のレスポンスを向上させることが可能となる。
【0169】
次に、データをストレージに書き込むタイミングについて説明する。データの格納要求があった場合に、制御装置Cは、すぐにデータを複数のボリウムに分割して複数のノードのストレージに分散格納するのではなく、一旦、データを一時記憶領域に格納した後に、ストレージに分散格納することとしても良い。
【0170】
より具体的には、制御装置Cは、利用者からデータの格納要求を所定回数受信するのを待ち、その間に格納要求されたデータを一時記憶領域に格納する。データの格納要求を所定回数受信した場合、制御装置Cは、一時記憶領域に格納された各データを複数のボリウムに分割して、ボリウムの1つをローカルノードのストレージに格納させ、他のボリウムそれぞれについては、ストレージセットを構成する他のノードに転送し、各ノードのストレージに格納させる。その後、一時格納領域に書きこまれたデータを消去する。これにより、ローカルノード以外の他のノードにボリウムを転送する回数を低減する事が可能となるため、トラフィックの効率を上げることが可能となる。
【0171】
なお、上記において、制御装置Cは、データの格納要求を所定回数受信するまでデータを一時記憶領域に格納するとして説明したが、データの格納要求を所定回数受信するまで待つ代わりに、所定時間、データを一時記憶領域に格納することとしてもよい。この場合も、上記と同様の効果を得ることが可能である。
【0172】
次に、広域分散ストレージシステムを構成するストレージ上に格納されたボリウムを更新する場合の処理について説明する。上記のように、ストレージ上には、データが複数のボリウムに分割されて格納されている。このようなデータを更新する際に、マルチキャストパケットを利用する事としても良い。以下、この場合の処理について説明する。
【0173】
1)まず、ストレージセットを構成するノードを、ボリウムごとにグループ化する。例えば、図17の右側の表に示すようなストレージセットの場合、ストレージセット管理部505は、ボリウムaのグループとしてノードA、C及びF、ボリウムbのグループとしてノードB、ボリウムcのグループとしてノードE、ボリウムdのグループとしてノードD及びGを定義する。このグループは、不図示のグループテーブルに格納することとしても良い。
【0174】
2)続いて、利用者が各ボリウムを更新する際には、利用者が利用するローカルノードからマルチキャストパケットを用いて、ボリウムa、b、c及びdの各グループに分けられたノードのストレージに対して書き込みを行う。
【0175】
3)ローカルノードのストレージセット管理部505は、各ボリウムのグループに分けられたノードから正常に更新が完了した旨の通知を受けると、更新が完了したこととする。
【0176】
4)更新の際に異常が発生した場合、ローカルノードのストレージセット管理部505は、異常が発生したノード内のボリウムに対して再度の更新処理を行う。
【0177】
さらに、ストレージ上に分割して格納されたデータが利用者によって更新される場合、その更新処理の間、他の利用者がそのデータを構成するボリウムの原本或いは複製を更新することを禁止することとしても良い。これにより、更新されるデータについて原本と複製の内容の統一を図ることが可能となる。以下、この場合の処理について説明する。
【0178】
行われる処理の手順の概要は以下のとおりである。
1)まず、利用者はノードにアクセスし、更新したいデータのストレージセット番号を指定し、更新要求をそのノードに送信する。以下、この利用者がアクセスするノードをローカルノードという。ローカルノードの制御装置C内のストレージセット管理部505は、その利用者に対してロックキーを発行する。ロックキーは、データの更新を要求した利用者を識別するために使用され、広域分散ストレージシステムの利用者及びセッションごとにユニークなものである。図22に、このロックキーの機能を追加したアクセス管理テーブル510及びローカルボリウム管理テーブル511の一例を示す。
【0179】
2)ローカルノードの制御装置C内のストレージセット管理部505は、そのストレージセット番号によって特定されるボリウムを他の利用者が更新する事を禁止し(以下、ロックという)、さらに、そのストレージセットを構成する他のノードに、対応するボリウムをロックするよう依頼する。
【0180】
3)依頼を受信した各ノードの制御装置C内のストレージセット管理部505は、各ボリウムをロックする。
4)ローカルノードの制御装置C内のストレージセット管理部505は、各ボリウムがロックされていることを確認する。
【0181】
5)ローカルノードの制御装置Cは、更新するべきデータを冗長化して複数のボリウムに分割し、各ボリウムを、それぞれを格納するべきノードに送信する。6)ボリウムの送信及び更新が終了すると、各ノードの制御装置C内のストレージセット管理部505は、ロックを解除する。
【0182】
以下、上記の手順2)から6)を順に詳しく説明する。まず、手順2)について、図18を用いて詳しく説明する。図18に示す手順は、利用者からストレージセット番号の指定と、更新要求を受信したローカルノードの制御装置C内のストレージセット管理部505によって行われる。
【0183】
まず、ストレージセット管理部505は、利用者から受信したストレージセット番号に対応するアクセス管理情報を取得し、そのアクセス管理情報に基づいて、更新要求が出されたアクセス単位(論理ブロック)の状態が、「ロック状態」であるのか否か判定する(S51)。そのアクセス単位の状態が「ロック状態」であると判定された場合(S51:Yes)。S52に進み、そのアクセス単位の状態が「ロック状態」以外の状態である場合、S57に進む。S57において、ストレージセット管理部505は、ロックに失敗した旨を利用者に通知し、処理を終了する(終了パターン2:異常終了)。異常終了の場合、更新を行う事はできない。
【0184】
S52において、ストレージセット管理部505は、ロックキーを生成する。続いて、ストレージセット管理部505は、ストレージセット番号に対応するストレージセットについてのストレージセット構造情報をストレージセット管理テーブル509から取得し、そのストレージセットを構成するノードに、そのストレージセットをロックする依頼を通知する(S53)。なお、ロック依頼には、ストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。なお、ストレージセットを構成するノードにローカルノードが含まれる場合もあることをいうまでもない。
【0185】
通知を受けた各ノードは、ロック処理を行う(S54)。この処理については後述する。
さらに、ローカルノードのストレージセット管理部505は、S53で通知した各ノード全てからロックが完了した旨の通知を待つ(S55)。全ノードからロックが完了した旨の通知を受信した場合(S55:Yes)、S58に進む。そうでない場合(S55:No)、S56に進む。
【0186】
S56において、ストレージセット管理部505は、利用者に対してロックに失敗した事を通知し、処理を終了する(終了パターン2:異常終了)。
S58において、ストレージセット管理部505は、更新要求が出されたアクセス単位についてのアクセス管理情報にふくまれるプロパティを「ロック状態」に更新し、さらに、S52で生成されたロックキーを追加するように、アクセス管理テーブル510を更新する(S58)。さらに、ストレージセット管理部505は、その利用者に対してロックキーを発行して(S59)、処理を終了する(終了パターン1:正常終了)。
【0187】
続いて、手順3)について、図19を用いて説明する。この手順3)は、図18のS54において、ロックの依頼を受信した各ノードの制御装置Cによって行われる処理に相当する。
【0188】
まず、ローカルボリウム管理部506は、ロック依頼と共に受信したストレージセット番号及びストレージセットアクセス番号に対応するボリウム管理情報をローカルボリウム管理テーブル511から取得し、そのボリウム管理情報に基づいて、更新要求が出されたアクセス単位(論理ブロック)の状態が、「ロック状態」であるのか否か判定する(S61)。そのアクセス単位の状態が「ロック状態」であると判定された場合(S61:Yes)。S62に進み、そのアクセス単位の状態が「ロック状態」以外の状態である場合、S66に進む。S66において、ローカルボリウム管理部506は、ロックに失敗した旨を利用者に通知し、処理を終了する(終了パターン2:異常終了)。異常終了の場合、更新を行う事はできない。
【0189】
S62において、ローカルボリウム管理部506は、更新要求が出されたアクセス単位についてのボリウム管理情報にふくまれるプロパティに「ロック状態」を示すフラグを追加し、さらにロックキーを追加する。続いて、ストレージセット管理部505は、ロックが完了した旨を、ロック依頼を通知してきたノードの制御装置Cに通知する(S63)。
【0190】
さらに、ストレージセット管理部505は、アクセス管理テーブル510に、ロック対象となっている論理ブロックについてのアクセス管理情報が格納されているか否か判定する(S64)。アクセス管理情報が格納されている場合(S65:Yes)、ストレージセット管理部505は、そのアクセス管理情報のプロパティを「ロック状態」に更新する。アクセス管理情報がアクセス管理テーブル510に格納されていない場合(S65:No)、処理を終了する(終了パターン1:正常終了)。
【0191】
続いて、手順4)から6)までについて図20及び21を用いて説明する。まず、更新要求を出した利用者は、発行されたロックキーとともに、更新したいデータの内容をローカルノードに送信する(不図示)。まず、図20について説明する。図20に示す処理は、ローカルノードの制御装置Cによって行われる。
【0192】
ローカルノードのストレージセット管理部505は、更新対象となる論理ブロック(ロック対象の論理ブロックでもある)についてのアクセス管理情報をアクセス管理テーブル510から取得する。(S71)。続いて、ストレージ管理部505は、S71で取得したアクセス管理情報に含まれるプロパティに基づいて、更新対象となるブロックはロックされているか否か判定する(S72)。更新対象となるブロックがロックされている場合(S72:Yes)、S73に進み、更新対象となるブロックがロックされていない場合(S72:No)、S78に進む。
【0193】
S73において、ストレージセット管理部505は、利用者から受信したロックキーが、アクセス管理情報に含まれるロックキーと一致するか否か判定する。2つのロックキーが位置しない場合(S73:No)、ストレージセット管理部505は、利用者に対し、書き込み(更新)に失敗した旨を通知し(S79)、処理を終了する(終了パターン2:異常終了)。
【0194】
2つのロックキーが一致した場合(S73:Yes)、データ変換部3は、利用者から取得したデータを冗長化し、複数のボリウムに分割する。さらに、ストレージセット制御部501、ストレージセット管理テーブル509から、アクセス対象となっているストレージセットについてのストレージセット構造情報を取得する。経路管理部504は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのストレージセットを構成する各ノードに、書き込み依頼と共にボリウムを送信するように制御情報及び経路情報を生成し、パケット生成部4は、制御情報及び経路情報を付加したパケットを各ノードに送信する。なお、書き込み依頼にはストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。これを受けて、各ノードでは、データをストレージSに書き込む処理が行われる(S74)。この処理については図21を用いて後述する。
【0195】
続いて、ストレージセット管理部505は、書き込み依頼を送信した全てのノードから書き込み完了の通知を受信するまで待つ(S75)。全てのノードから書き込み完了の通知を受信しなかった場合(S75:No)、ローカルノードの制御装置Cは、そのストレージセットを構成する各ノードに、書き込み依頼と共にボリウムを再び送信する。これを受けて、各ノードでは、データをストレージSに書き込む処理が再び行われる(S80)。この処理は、S74と同じである。
【0196】
全てのノードから書き込み完了の通知を受信した場合(S75:Yes)、制御装置Cは、書き込みの要求を出した利用者に書き込み完了の通知を送信する(S76)。ストレージセット管理部505は、更新対象となる論理ブロックについてのアクセス管理情報をアクセス管理テーブル510から取得し、アクセス管理情報に含まれるプロパティから「ロック状態」を示すフラグを削除し(S77)、処理を終了する(終了パターン1:正常終了)。
【0197】
S78において、制御装置Cはロック処理を行う。ロック処理について、上記において図18及び19を用いて既に説明したため、ここでは説明をしない。S78のロック処理が正常終了した場合(終了パターン1)、S74に進み、S78のロック処理が異常終了した場合(終了パターン2)、S79に進む。
【0198】
次に、図21について説明する。図21の処理は、上記の図20のS74の処理に相当し、書き込み依頼を受信した各ノードの制御装置Cによって行われる。まず、ローカルボリウム管理部506は、ローカルボリウム管理テーブル511から書き込み依頼と共に受信したストレージセット番号及びストレージセットアクセス番号に対応するボリウム管理情報をローカルボリウム管理テーブル511から取得する(S81)。続いて、ローカルボリウム管理部506は、そのボリウム管理情報に含まれるロックキーが、書き込み依頼に含まれるロックキーと一致するか否か判定する(S82)。2つのロックキーが一致する場合(S82:Yes)、S83に進み、一致しない場合(S82:No)、ローカルボリウム管理部506は、書き込みに失敗した旨を、書き込み依頼を送信してきたノードの制御装置Cに送信し、処理を終了する(終了パターン2:異常終了)。
【0199】
S83において、パケット解析部7は、書き込み依頼と共に受信したパケットからボリウムを取出して、ストレージIF8を介してそのボリウムをストレージSに書き込む。続いて、制御パケット生成部502は、書き込みが完了した旨の通知を、書き込み依頼を送信してきたノードの制御装置Cに送信する(S84)。続いて、ローカルボリウム管理部506は、S81で取得したボリウム管理情報に含まれるプロパティから、「ロック状態」を示すフラグ及びロックキーを削除し(S85)、処理を終了する。
【0200】
次に、上記のロック処理において、更新の際にマルチキャストパケットを用いる場合について説明する。この場合の処理の手順の概要は以下のとおりである。なお、上記のマルチキャストを用いる更新処理の場合と同様に、処理の前にストレージセットを構成するノードを、ボリウムごとにグループ化することが必要である。各ノードの制御装置Cには、各ボリウムのグループを構成するノードとそのグループの代表ノードを示す情報を含む不図示のノードグループテーブルが備えられている。
【0201】
1)ストレージセット中で、各ボリウムを格納するノードを代表する代表ノード(例えば、原本を格納するノード)に対して、データ更新の前にデータアクセス単位でロック処理を行う。
【0202】
2)原本は同じグループに属するノードに対して、上記更新要求を送信した利用者を確認できるようにして(ロックキーを使用)ロック処理を行う。なお、1)及び2)の手順は、上記のロック処理と同様である。
【0203】
3)更新要求を送信した利用者は、マルチキャストパケットを用いて各ボリウムの更新内容を送信する。
4)更新内容を含むパケットを受信した各ノードは、ロックキーを用いて更新要求を送信した利用者と、そのパケットを送信した利用者とが同一であることを確認し、確認できた場合、ボリウムの更新を行う。
【0204】
5)上記4)における更新の際、ボリウムのグループの代表ノードは、更新完了を示すパケットを利用者がアクセスしているノードに送信する。代表ノード以外のノードは、そのグループの代表ノードに更新完了を示すパケットを送信する。
【0205】
6)代表ノードは、自ノードに格納されたボリウムに対するロックを解除する。また、代表ノードは、自グループに属する他のノードから更新完了を示すパケットを受信した場合、そのノードに格納されたボリウムに対するロックを解除する。
【0206】
7)代表ノードは、自グループに属する他のノードのうちで、更新完了を示すパケットを送信してこないノードがある場合、そのノードに対して更新処理を実行する。
【0207】
以下、図23から図25を用いて、上記3)からの手順についてより詳しく説明する。なお、図23から図25に示す処理は、図20及び図21に示す処理と同様の手順を含むため、図23から図25において図20及び図21と同様の手順には同じ番号を付し、説明を省略する。まず、図23を用いて、更新要求を出した利用者がアクセスするノードで行われる処理について説明する。以下において、利用者がアクセスするノードをローカルノードという。
【0208】
図23では、図20のS74からS77及びS80の代わりに、S91からS95を行う点が図20に示す処理と異なる。以下、S91からS95について説明する。なお、S91からS95は、上記3)から7)に示す手順のうち、ローカルノードの制御装置Cによって行われる手順を示す。
【0209】
S71からS73の後、経路管理部504は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのストレージセットを構成する各ノードに、書き込み依頼と共にそのノードに書き込むべきボリウムを送信するように制御情報及び経路情報を生成し、パケット生成部4は、制御情報及び経路情報を付加したパケットを各ノードにマルチキャストで送信する。なお、書き込み依頼にはストレージセット番号、ストレージセットアクセス番号及びロックキーが含まれる。これを受けて、各ノードでは、ボリウムをストレージSに書き込む処理が行われる(S91)。この処理については図24及び図25を用いて後述する。
【0210】
続いて、ストレージセット管理部505は、書き込み依頼を送信したノードのうち、代表ノードから書き込み完了の通知を受信するまで待つ(S92)。ここで、ストレージセット管理部505は、不図示のノードグループテーブルに基づいて、全ての代表ノードから書き込み完了の通知を受信したか否か判定する。なお、図23から図25において原本を格納するノードを代表ノードと仮定している。
【0211】
全ての代表ノードから書き込み完了の通知を受信しなかった場合(S92:No)、ローカルノードの制御装置Cは、その代表ノードに、書き込み依頼と共に書き込むべきボリウムを再び送信する。これを受けて、各ノードでは、データをストレージSに書き込み処理が再び行われる(S80)。この処理は、S91と同じである。
【0212】
全てのノードから書き込み完了の通知を受信した場合(S92:Yes)、ローカルノードのストレージセット管理部505は、書き込みが完了した旨を利用者に通知する(S93)。続いて、ストレージセット管理部505は、更新対象となる論理ブロックについてのアクセス管理情報をアクセス管理テーブル510から取得し、アクセス管理情報に含まれるプロパティから「ロック状態」を示すフラグを削除し、処理を終了する(終了パターン1:正常終了)。
【0213】
また、ローカルノードの制御装置Cは、S78及びS79も行う。S78及びS79の処理については図20と同様であるため説明を省略する。
次に、図24を用いて、図23のS91において行われる処理について説明する。図24の処理は、各ボリウムのグループにおける代表ノードによって行われる。
【0214】
図24では、図21のS85の後に、更に、S101及びS102を行う点が図21に示す処理と異なる。以下、S101及びS102について説明する。
S81からS85の後、代表ノードのストレージセット管理部505は、その代表ノードが属するグループ内の他のノードの全てから書き込み完了の通知を受信するまで待つ(S101)。この代表ノードはノードグループテーブル(不図示)に基づいて、S101の判定を行う。全てのノードから書き込み完了の通知を受信しなかった場合(S101:No)、代表ノードの制御装置Cは、書き込み完了の通知を送信してこなかったノード対するボリウムの書き込みを、そのノードに代わって実行し(S102)、S101に戻る。
【0215】
全てのノードから書き込み完了の通知を受信した場合(S101:Yes)、処理を正常終了する(終了パターン1)。
次に、図25を用いて、図23のS91において行われる処理について説明する。図25の処理は、ストレージセットを構成するノードのうちで、代表ノード以外のノードによって行われる。
【0216】
図25では、図21のS83の後に、S84の代わりに、S111を行う点が図21に示す処理と異なる。以下、S111について説明する。
S81からS83の後、代表ノード以外のノードのストレージセット管理部505は、そのノードが属するグループの代表ノードへ書き込み完了の通知送信する(S111)。
【0217】
次に、新規のボリウムの作成手順について説明する。新規のボリウムは、たとえば、ボリウムの複製を作成する際や障害からの復旧の際等において作成される。
【0218】
以下、ボリウムの複製を作成する際を例にとって、新規のボリウムの作成手順について説明する。図26は、向かって左から順に、ノードAにアクセスする利用者A、ノードBにアクセスする利用者B及びノードCにアクセスする利用者が、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図26を用いて、複製の作成方法の決定について説明する。なお、この説明において、データは4つのボリウムに分割されていると仮定する。
【0219】
図26によると、利用者Cが使用するべきストレージセットは、ノードB、C、D及びEであり、利用者Cを広域分散ストレージシステムに追加する際に、ノードCにボリウムaの複製が作成される。このボリウムaの複製は、以下の2通りの方法で作成することができる。
【0220】
1)ノードA又はFにのいずれかに格納されたボリウムaから作成する。
2)ボリウムaの複製を他のボリウムb、c及びdから冗長を用いて再現する。
【0221】
複製が作成されるボリウムを格納するノードと、その他のボリウムを格納するノードのノードCから見たストレージ評価値を比較し、複製が作成されるボリウムを格納するノードの最高ストレージ評価値を、他の各ボリウムを格納するノードの最高ストレージ評価値のそれぞれが上回っていた場合、上記のうち2)の方法を採用し、そうでない場合、1)の方法を採用する。
【0222】
例えば、図26の場合、上位4つのストレージ評価値は以下のようになる。
ボリウムaを格納するノードの最高ストレージ評価値:11.3(ノードA)
ボリウムbを格納するノードの最高ストレージ評価値:17.0(ノードB)
ボリウムcを格納するノードの最高ストレージ評価値:14.8(ノードE)
ボリウムdを格納するノードの最高ストレージ評価値:21.8(ノードD)
ボリウムaを格納するノードAのストレージ評価値は、他のボリウムを格納するノードのストレージ評価値のいずれよりも低い。従って、この場合、ノードCの経路管理部504は、ノードC作成されるボリウムaの複製を、それぞれノードB、D及びEに格納されるボリウムb、d及びcから冗長を利用して再現することと決定し、この決定に基づいて、各ノードからボリウムb、c及びdはノードCに転送され、ノードCのパケット解析部7は、受信したボリウムb、c、dからボリウムaを再現して、ストレージIF8を介してストレージSにボリウムaを書き込む。
【0223】
次に、広域分散ストレージシステムを構成するノードの一部に障害が発生した場合の処理について説明する。まず、ノードに障害が発生した場合に、残っているノードから見て最適なストレージセットを再設定する処理について説明する。説明において、データは4つのボリウムに分割されていると仮定する。また、障害発生前後の各ノードの状態を図27(a)及び(b)に示すような状態として仮定する。なお、図27(a)及び(b)において、向かって左側に、ノードAから見た、各ノードについてのストレージ評価値、ホップ数、各ノードのストレージに格納されているボリウムを示す表が、中心に、ノードEから見たそれらを示す表、右側に、ノードCから見たそれらを示す表が記載されている。図27(a)及び(b)において、左向きの矢印は、「左の表と同じ」ことを示す。
【0224】
まず、図27(a)に示すような状態において、ノードAの利用者Aは、ノードA、B、E及びGからそれぞれボリウムa、b、c及びdを取得する。ノードEの利用者Eは、ノードA、B、D及びEからそれぞれボリウムa、b、d’及びcを取得する。ノードCの利用者Cは、ノードB、C、D及びEからそれぞれボリウムb、a’、d’及びcを取得する。なお、「’」は、そのボリウムが複製である事を示す。
【0225】
このような状態で、ノードAのストレージに障害が発生した場合、利用者A及び利用者Eは、ノードAからボリウムaを取得する事ができなくなる。この場合、ボリウムaは、ノードC及Fにも存在するため、ノードA及びノードEのストレージセット管理部は、ノードAの代わりにノードC又はFのいずれかからボリウムaを取得する事に決定する。
【0226】
どのノードからボリウムaを取得するのか決定する方法は、基本的に、ストレージセットの決定処理と同様に、以下のように決定する。
1)ストレージ評価値が高い方を採用する。
【0227】
2)ストレージ評価値が同じ場合にホップ数が少ない方を採用する。
図27(b)において、ノードAから見て、ノードCとノードFのストレージ評価値は、それぞれ、「10.8」及び「8.3」である。従って、ノードAのストレージセット管理部505は、ノードAのストレージの代わりにノードCのストレージからボリウムaを取得する事として決定する。同様に、ノードEから見て、ノードCとノードFのストレージ評価値はそれぞれ、「16.3」及び「13.0」である。従って、ノードEのストレージセット管理部505は、ノードAのストレージの代わりにノードCのストレージからボリウムaを取得する事として決定する。
【0228】
さらに、障害が生じたノードAのストレージに格納されていたボリウムaは原本であったが、今回の障害の結果、ボリウムaの原本が存在しない事となってしまうため、ノードCとノードFのいずれかを代表ノードとして扱う事と決定する。なお、図27(b)においては、各ノードからのノードC及びノードFに対するストレージ評価値のうち、より平均値が大きいノードCを代表ノードとしている。
【0229】
さらに、障害からの復旧の際の、新規ボリウムの作成手順について説明する。図28は、図27と同様に、向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図28を用いてノードAのストレージが障害から普及した場合、ノードAのストレージにボリウムを格納する際に、どのボリウムの複製をどうやって作成するのか、その決定手順について説明する。なお、この説明においても、データは4つのボリウムに分割されていると仮定する。
【0230】
1)まず、ストレージセット管理部505は、復旧するノードのストレージ評価値は、復旧前に使用されていたノードのストレージ評価値よりも高いか否か判定する。復旧するノードのストレージ評価値の方が復旧前に使用されていたノードのストレージ評価値よりも高い場合、ストレージセット管理部505は、復旧するノードのストレージSにボリウムの複製を書き込むことと決定する。複製されるボリウムは、復旧前に使用されていたノードのうち、最低のストレージ評価値を持つノードのストレージに格納されていたボリウムとする。
【0231】
例えば、図28に示すように、ノードAでは、ノードAのストレージSの復旧前に、ノードB、C、E及びGのストレージが使用されていたが、ノードAのストレージ評価値の方がこれらより高い。また、ノードB、C、E及びGのうち最低のストレージ評価値を持つノードはノードCであり、そのノードCのストレージSに格納されているボリウムはボリウムaである。同様に、ノードEでは、ノードAのストレージSの復旧前に、ノードB、C、D及びEのストレージが使用されていたが、このうちの最低のストレージ評価値を持つノードCよりもノードAのストレージ評価値の方が高い。ノードCでは、ノードAの復旧前後において、追加されるボリウムを格納するノードのストレージ評価値は、使用するノードの変更を要するほど高くないため、何もしない。
【0232】
2)複製の作成は、最もストレージ評価値の高いノードで行われる。通常、ボリウムの複製が書き込まれるストレージに直接接続されているノードで行われる。図28の場合、ノードA(つまり、複製が作成されるストレージに接続されているノード)の制御装置Cは、ノードAのストレージSにボリウムaの複製を書き込む。
【0233】
3)複製を作成する際、ノードAのストレージセット管理部505は、複製される元となるボリウムを格納するノードのストレージ評価値と、その他のボリウムを格納するノードのストレージ評価値とを比較し、比較結果に基づいて、ストレージに格納されたボリウムを元にして複製を作成するか、それとも他のボリウムから冗長を利用してボリウムを再現するか、決定する。この決定方法は、上記の複製の作成方法と同様であるため、詳しい説明は省略する。
【0234】
図28の場合、ボリウムaを格納するノードのうち最大のストレージ評価値を持つノードはノードCであり、その値は10.8であり、この値は、他のボリウムを格納するノードのストレージ評価値よりも低い、従って、ストレージセット管理部505は、他のボリウムb、c及びdから冗長を利用してボリウムaを再現する事と決定する。
【0235】
次に、ストレージセットの管理について説明する。ノードの追加や削除を繰り替えすと、利用されないボリウム等が存在するようになる。このような場合、利用されないボリウムを削除することにより、ストレージの利用効率を向上させるようにストレージセットを管理ことが可能である。以下、ストレージセットの管理について説明する。
【0236】
以下において、データは4つのボリウムに分割され、ノードの追加や削除の結果、図29に示すようなボリウム構成になっていると仮定する。なお、図29(a)及び(b)は、それぞれ向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表であり、これは、図28と同様である。ここで、図29(a)は、使用されていないボリウムの削除前の状態を示し、図29(b)は、使用されていないボリウムの削除後の状態を示す。
【0237】
1)一定時間経過ごと、或いは、各ノードのストレージSに格納されるボリウムの状態が変更されるごとに、各ノードにおいて使用されるストレージセットを示す情報を各ノードで交換する。あるいは、任意の1つのノードに、その情報を集める。
【0238】
2)交換された情報に基づいて、どのノードによっても使用されていないボリウムが合った場合、1つのノードのストレージセット管理部505は、そのノードのボリウムを削除する事と決定し、そのノードに対してそのボリウムを削除するよう指示する制御パケットを送信する。
【0239】
例えば、図29において、ノードAにおいてストレージセットとして使用されているノードはノードA、B、E及びGであり、ノードEにおいてストレージセットとして使用されているノードはノードA、B、D及びEであり、ノードCにおいてストレージセットとして使用されているノードは、ノードB、C、D及びEである。(使用されているノードは最もストレージ評価値が高い4ノードである) 従って、ノードFは、どのノードの利用者によっても使用されていないことがわかる。従って、ノードFのストレージSに格納されるボリウムa’は削除される(図29(b)参照)。
【0240】
次に、データの複製の再生又はデータの再生を逐次に行う処理について説明する。データの複製又は再生は、利用者が追加された場合や新たなノードが追加された場合等において行われるが、緊急に行う必要が無いことも多い。この場合、データの複製又は再生は、ネットワークの空き時間等を利用して逐次に行われることとしてもよい。これにより、トラフィックの有効利用を可能とする。以下、この場合の処理について説明する。以下の処理は、利用者からデータの読み込み要求又は書き込み要求を受信したノード(以下、ローカルノード)によって行われる。
【0241】
図30に、逐次にデータの複製の作成又は再生を行う場合に、処理についてのフローチャートを示す。図30に示すように、まず、利用者は、読み出したいデータのストレージセット番号を指定して読み込み要求又は書き込み要求をアクセス先となっているノードに送信する。ローカルノードのストレージセット管理部505は、ストレージセット管理テーブル509からストレージセット番号に対応するストレージセット構造情報を取得し、そのストレージセット構造情報に基づいてそのローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されているか否か判定する(S121)。
【0242】
ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されている場合(S121:Yes)、データの読み込み・書き込み処理が行われる(S126)。この読み込み・書き込み処理については、既に説明した。
【0243】
ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されていない場合(S121:No)、ストレージセット管理部505は、読み出し要求を受信した場合は、各ノードから取得したボリウムから冗長化によって要求されたデータを生成する。書き込み要求を受信した場合は、ストレージセット管理部505は、受信したデータを冗長化し、複数のボリウムに分割して各ノードに書き込む。その際に、ストレージセット管理部505は、読み出し又は書き込みアクセス管理テーブル510から該当するストレージセット番号を持つアクセス管理情報を取得し、そのアクセス管理情報に含まれるそのボリウムへのアクセスに関するプロパティに、アクセスされたデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付す(S122)。
【0244】
続いて、利用者から読み出し要求を受信した場合、ストレージセット管理部505は、S121で取得したストレージセット構造情報に基づいて、ストレージセットを構成するノードのうちでボリウムを格納していないノード(不完全ノード)を特定し、そのノードに格納するためのボリウムを、ストレージセットを構成する他のノードから読み出されたボリウムから生成する(S123)。
【0245】
ローカルストレージの制御装置Cは、生成されたボリウムを書き込むように指示して、不完全ノードのストレージSにそのボリウムを転送する。これを受けて、不完全ノードでは、ボリウムの書き込み処理が行われる(S124)。この書き込み処理は、逐次にネットワークの空き時間を利用して行われる。なお、ストレージセット管理部505は、このボリウムが完全データでないことを示すフラグをS121で取得したストレージセット構造情報に含まれる不完全ノードについてのプロパティに付す。
【0246】
逐次書き込みにおいて、その書き込みによるアクセスを示すアクセス管理情報中のプロパティに、アクセスされたデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付される。逐次書き込みが完了すると、アクセス管理情報中のプロパティには、生成データであることを示すフラグは付されないことになる。なお、2度目以降の逐次書き込みにおいて、ローカルノードの制御装置Cは、ストレージセット構造情報及びアクセス管理情報内の生成データを示すフラグに基づいて、不完全ノードと、それに格納すべきボリウムを特定することができる。
【0247】
書き込み処理が終了すると、ストレージセット管理部505は、アクセス管理テーブル510を参照し、ストレージセット番号に対応するアクセス管理情報に、生成データであることを示すフラグが付されているか否か判定する。生成データであることを示すフラグが付されたアクセス管理情報が無ければ、ローカルノードが使用するストレージセットに、データを構成する全てのボリウムが格納されていることとなる(S125:Yes)。この場合、ローカルノードのストレージセット管理部505は、このボリウムが完全データでないことを示すフラグをストレージセット構造情報に含まれる不完全ノードについてのプロパティから取り除く(S127)。生成データであることを示すフラグが付されたアクセス管理情報がある場合、まだ逐次書き込みが終了していない(S125:No)。この場合、一旦処理を終了し、S125を繰り返す。S125の判定がYesとなるまで、又は、一定回数S125を繰り返すまで、S125は繰り返されることとしてもよい。
【0248】
図31は、それぞれ向かって左から順に、ノードAにアクセスする利用者A、ノードEにアクセスする利用者E及びノードCにアクセスする利用者Cが、広域分散ストレージシステムを利用する場合に、それぞれのノードから見た、ストレージ評価値、ホップ数及び各ノードのストレージに格納されているボリウムを示す表である。以下、図31を用いてデータの複製又は再生を逐次に行う場合について具体的に説明する。この図31は、ノードCにアクセスする利用者が追加された際の状態を示す。なお、以下の説明においてデータは4つのボリウムに分割されて分散して格納されると仮定する。また、以下の説明において、利用者CがアクセスするノードCをローカルノードという。
【0249】
まず、図31に示すように、利用者Cが使用するストレージセット(つまり、ノードCから見たストレージセット)は、ノードB、C、D及びEである。ノードD以外のノードには既にボリウムが格納されている。不足しているボリウムはボリウムdである。しかし、ノードB、C及びEに格納されているボリウムb、a及びcから、データを復元することは可能であるため、ノードDへのボリウムdの書き込みを即時に行う事は不要である。
【0250】
そこで、ノードDのストレージセット管理部505は、アクセス管理テーブル510から該当するストレージセット番号を持つアクセス管理情報を取得し、そのアクセス管理情報において、そのボリウムdへのアクセスに関するプロパティに、アクセスされるデータが、ストレージSから読み出された完全データであるのか、冗長化を利用して生成された生成データであるのかを示すフラグを付す。
【0251】
利用者Cからデータの読み出し要求を受信した場合、ローカルノードの制御装置Cは、ノードB、C及びEからそれぞれボリウムb、a及びcを受信し、それらのボリウムから冗長化を利用してデータを再現して利用者に転送する。その際に、ローカルノードの制御装置Cはボリウムdを作成し、ノードDのストレージSにそのボリウムdを逐次に格納させる。
【0252】
図32に、制御装置の配置方法の変形例を示す。上記説明において、制御装置Cは各ノードに備えられるとした。しかし、制御装置Cは、利用者の端末に備えられる事としても良い。この場合、利用者の端末が、データを複数のボリウムに分割し、各ボリウムの格納先となるストレージを選択してデータを書き込む。さらに、利用者の端末が、複数のボリウムを各ストレージから読み出してデータを復元する。この場合でも、上記の広域分散ストレージシステムと同様の効果を得ることができる。図32には、ノードAを利用する利用者Aの端末が、データを3つのボリウムに分割し、ノードA、B及びGの3つのノードのストレージSに格納させる場合を示す。この場合、利用者Aの端末は、データを読み出す際には、ノードA、B及びGから3つのボリウムを読み出してデータを復元する。なお、この場合でも、上記の変形例に対応して様々な変形例が考え得る。
【0253】
上記において説明した制御装置C内の制御部5は、コンピュータを用いて構成することができる。コンピュータは、少なくとも、CPUとそのCPUに接続されたメモリを備え、さらに、外部記憶装置、媒体駆動装置を備えてもよい。それらはバスにより互いに接続されている。
【0254】
メモリは、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等であり、処理に用いられるプログラムとデータを格納する。制御部5を構成する各部及び各テーブルは、コンピュータのメモリの特定のプログラムコードセグメントにプログラムとして格納される。なお、制御装置Cによって行われる処理は、図を用いて既に説明した。
【0255】
CPUは、メモリを利用して上述のプログラムを実行することにより、必要な処理を行う。
外部記憶装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。外部記憶装置は、各テーブルを実現する。さらに、上述のプログラムをコンピュータの外部記憶装置に保存しておき、必要に応じて、それらをメモリにロードして使用することもできる。
【0256】
媒体駆動装置は、可搬記録媒体を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、メモリスティック、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、光ディスク、光磁気ディスク、DVD(Digital Versatile Disk)等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体に上述のプログラムを格納しておき、必要に応じて、それをコンピュータのメモリにロードして使用することもできる。
【0257】
また、ネットワークIFを介して、上述のプログラムを、ネットワークIFを介して、プログラムをダウンロードすることとしてもよい。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態及び変形例に限定されるものではなく、その他の様々な変更が可能である。
【0258】
(付記1) コンピュータが、データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージに分散して格納するデータ格納方法であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを特徴とするデータ格納方法。
【0259】
(付記2) 前記評価値の算出において、前記書き込みを依頼するノードから各ストレージまでのホップ数をさらに用いる、
ことを特徴とする付記1記載のデータ格納方法。
【0260】
(付記3) 前記システムの利用者に対して、前記ストレージセットを仮想的な1つのストレージとして提供する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0261】
(付記4) 前記データを前記ストレージセットから読み込む際には、前記ストレージセットに書きこまれた前記複数のボリウムのうち冗長化部分を含まないボリウムを各ストレージから読み出し、
前記読み出されたボリウムを用いて前記データを復元する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0262】
(付記5) 前記データを読み込む際には、各ストレージについて、前記帯域幅及び前記コストに基づいてレスポンスの良さを示す利用優先度を算出し、
前記利用優先度に基づいて、冗長化部分を含まないボリウムとして、前記複数のボリウムのうちいずれのボリウムを各ストレージから読み出すか決定する、
ことを更に含むことを特徴とする付記3に記載のデータ格納方法。
【0263】
(付記6) 前記ストレージセットとして選択されなかったストレージに、前記複数のボリウムうちの第1のボリウムの複製を格納する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0264】
(付記7) 前記第1のボリウムの複製を作成する際に、前記評価値に基づいて、前記第1のボリウムを格納するストレージから前記第1のボリウムを複写するのか、前記複数のボリウムのうちの前記第1のボリウム以外のボリウムから冗長を利用して前記第1のボリウムを再現するのか、2つの作成方法のうちのいずれかを選択する、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0265】
(付記8) 前記評価値に基づいて、前記ストレージセットとして選択されなかったストレージの中から前記ボリウムの複製を格納するストレージを選択する、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0266】
(付記9) 同一のボリウムを格納するべき複数のストレージに対して、マルチキャストでボリウムを書き込む、
ことを更に含むことを特徴とする付記6に記載のデータ格納方法。
【0267】
(付記10) 前記第1のボリウムの複製をストレージに書き込む際に、多数回に分けて書き込み処理を行う、
ことを特徴とする付記6に記載のデータ格納方法。
【0268】
(付記11) 前記ストレージセットのうちの第1のストレージに障害が発生した場合、前記ストレージセットのうちの他のストレージへの書き込みを制限する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0269】
(付記12) 前記ストレージセットのうち第3のストレージに障害が発生した場合、前記評価値に基づいて、前記ストレージセットとして選択されているストレージ以外の第4のストレージを、前記第3のストレージの代わりに選択する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0270】
(付記13) 前記ストレージセットの選択後、一定のタイミングで、各ノードにおけるストレージセットを再選択し、
再選択の結果、どのノードからも利用されていないボリウムがあった場合、該ボリウムをストレージから削除する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0271】
(付記14) 前記一定のタイミングとは、前回の選択から一定期間後、又はボリウムの状態が変更される毎である、
ことを特徴とする付記13に記載のデータ格納方法。
【0272】
(付記15) 前記データを読み込んだ後に、前記データを一定期間、任意の1つのストレージ内に一時格納し、
前記一定期間内にデータの読み出しを行う際には、一時格納されたデータを前記1つのストレージから読み出す、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0273】
(付記16) 一定期間内に書き込み要求されたデータを一時格納領域に一時格納し、
前記一定期間経過後に前記一時格納領域からデータを取出し、
該データを複数のボリウムに分割し、
該複数のボリウムを前記ストレージセットに書き込む、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0274】
(付記17) 前記一時格納したデータを含むデータに対し、読み出し又は書き込みを行う際に、前記一時格納したデータを含まない部分のデータについてのみ、読み出し又は書き込むを行う、
ことを更に含むことを特徴とする付記15又は16に記載のデータ格納方法。
【0275】
(付記18) 前記ストレージセットに前記複数のボリウムを書き込む際に、前記書き込みを依頼するノードは、書き込みが終了するまで前記ストレージセットへの書き込み処理を禁止する、
ことを更に含むことを特徴とする付記1に記載のデータ格納方法。
【0276】
(付記19) 同一のボリウムを格納するべき複数のストレージの中から、1つのストレージを代表ストレージとして決定することを更に含み、
前記複数のストレージへの書き込み処理の禁止において、
前記代表ストレージへの書き込み処理の禁止は、前記書き込みを依頼するノードによって行われ、
前記代表ストレージ以外のストレージへの書き込み処理の禁止は、前記代表ストレージによって行われる、
ことを特徴とする付記18に記載のデータ格納方法。
【0277】
(付記20) 前記代表ストレージは、原本となるボリウムを格納するべきストレージである、
ことを特徴とする付記19に記載のデータ格納方法。
【0278】
(付記21) ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御をコンピュータに行われるコンピュータ・プログラムであって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを含む制御を前記コンピュータに行わせることを特徴とするコンピュータ・プログラム。
【0279】
(付記22) ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御をコンピュータに行わせるプログラムを記録した記録媒体であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを含む制御を前記コンピュータに行わせるプログラムを記録した記録媒体。
【0280】
(付記23) ネットワークを介して分散配置されたストレージを備えるシステムに使用される、データを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御を行う制御装置であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出する経路管理手段と、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択するストレージセット管理手段と、
を備えることを特徴とする制御装置。
【0281】
【発明の効果】
以上詳細に説明したように、本発明によれば、データを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納することによりデータのセキュリティを向上させつつも、さらに、帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離を考慮して、そのノードから見て最適なストレージを選択することにより、回線効率と災害時のデータの安全性も向上させることが可能となる。
【図面の簡単な説明】
【図1】広域分散ストレージシステムの構成図である。
【図2】制御装置の構成図である。
【図3】制御装置の詳細構成図である。
【図4】具体的な広域分散ストレージシステムの構成例を示す図である。
【図5】経路評価テーブルの一例をす図である。
【図6】ストレージ評価テーブルの一例を示す図である。
【図7】ストレージセット管理テーブルの一例を示す図である。
【図8】アクセス管理テーブルの一例を示す図である。
【図9】ローカルボリウム管理テーブル一例を示す図である。
【図10】広域分散ストレージシステムにおけるデータの流れを説明する図である。
【図11】利用優先度及び評価値の計算処理を示すフローチャートである。
【図12】データ復元時にボリウムを読み出すべきストレージの決定方法を説明する図である。
【図13】ストレージセット管理テーブルの更新処理を示すフローチャートである。
【図14】冗長化したデータの分散書き込み先となるストレージの決定方法を説明する図である。
【図15】ノードへの利用者の追加処理を示すフローチャートである。
【図16】冗長化したデータの複製を格納するストレージの決定方法を説明する図である。
【図17】利用可能な複数のストレージから最適なストレージセットを選択する処理を説明する図である。
【図18】ロック処理を示すフローチャート(その1)である。
【図19】ロック処理を示すフローチャート(その2)である。
【図20】書き込み処理を示すフローチャート(その1)である。
【図21】書き込み処理を示すフローチャート(その2)である。
【図22】ストレージ内のデータ更新の際のロック処理を説明する図である。
【図23】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その1)である。
【図24】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その2)である。
【図25】マルチキャストパケットを用いた書き込み処理を示すフローチャート(その3)である。
【図26】ボリウムの複製の作成方法を選択する処理を説明する図である。
【図27】一部のストレージに障害が発生した場合に、残りのストレージの中から最適なストレージを選択しなおす処理を説明する図である。
【図28】ストレージが障害から復旧した際にボリウムの複製の作成方法を選択する処理を説明する図である。
【図29】不要となったボリウムを削除する処理を説明する図である。
【図30】逐次にデータを書き込み又は再生する処理を示すフローチャートである。
【図31】データの複製の作成又は再生を逐次に行う場合の処理を説明する図である。
【図32】制御装置の機能を利用者端末が備える場合を説明する図である。
【図33】従来の技術に係わる広域分散ストレージシステムの構成図である。
【符号の説明】
1 ユーザインタフェース(受信側)
2 ユーザインタフェース(送信側)
3 データ変換部
4 パケット生成部
5 制御部
6 データ組立部
7、301 パケット解析部
8 ストレージインタフェース
9 ネットワークインタフェース(送信側)
10 ネットワークインタフェース(受信側)
302 データ分割部
303、603 パリティ計算部
401 データ管理情報付加部
402 制御/経路情報付加部
403 データ転送部
404 転送パケット構築部
501 ストレージ制御部
502 制御パケット生成部
503 ネットワーク制御部
504 経路管理部
505 ストレージセット管理部
506 ローカルボリウム管理部
507 経路評価テーブル
508 ストレージ評価テーブル
509 ストレージセット管理テーブル
510 アクセス管理テーブル
511 ローカルボリウム管理テーブル
601 パケット構築部
602 データ組立部
C 制御装置
R ルータ
S ストレージ
Claims (5)
- コンピュータが、データを冗長化して複数のボリウムに分割し、各ボリウムを、ネットワークを介して分散配置された複数のストレージに分散して格納するデータ格納方法であって、
帯域幅、通信コスト及び書き込みを依頼するノードからストレージまでの経路の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを特徴とするデータ格納方法。 - 前記データを読み込む際には、各ストレージについて、前記帯域幅及び前記コストに基づいてレスポンスの良さを示す利用優先度を算出し、
前記利用優先度に基づいて冗長化部分を含まないボリウムとして、前記複数のボリウムのうちいずれのボリウムを各ストレージから読み出すか決定する、
ことを更に含むことを特徴とする請求項1に記載のデータ格納方法。 - 前記ストレージセットとして選択されなかったストレージに、前記複数のボリウムうちの第1のボリウムの複製を格納する、
ことを更に含むことを特徴とする請求項1に記載のデータ格納方法。 - ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御をコンピュータに行われるコンピュータ・プログラムであって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択する、
ことを含む制御を前記コンピュータに行わせることを特徴とするコンピュータ・プログラム。 - ネットワークを介して分散配置されたストレージを備えるシステムにデータを冗長化して複数のボリウムに分割し、各ボリウムを複数のストレージに分散して格納する制御を行う制御装置であって、
帯域幅、通信コスト及び書き込みを依頼するノードとストレージの間の物理的距離に基づいて、前記分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出する経路管理手段と、
前記評価値に基づいて前記分散配置されたストレージの中から複数のストレージを最適のストレージセットとして選択するストレージセット管理手段と、
を備えることを特徴とする制御装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002286528A JP2004126716A (ja) | 2002-09-30 | 2002-09-30 | 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 |
US10/665,133 US20040064633A1 (en) | 2002-09-30 | 2003-09-22 | Method for storing data using globally distributed storage system, and program and storage medium for allowing computer to realize the method, and control apparatus in globally distributed storage system |
KR1020030067485A KR20040028594A (ko) | 2002-09-30 | 2003-09-29 | 광역 분산 스토리지 시스템을 이용한 데이터 저장 방법,그 방법을 컴퓨터에 실현시키는 프로그램, 기록 매체 및광역 분산 스토리지 시스템에서의 제어 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002286528A JP2004126716A (ja) | 2002-09-30 | 2002-09-30 | 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004126716A true JP2004126716A (ja) | 2004-04-22 |
Family
ID=32025377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002286528A Pending JP2004126716A (ja) | 2002-09-30 | 2002-09-30 | 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040064633A1 (ja) |
JP (1) | JP2004126716A (ja) |
KR (1) | KR20040028594A (ja) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352844A (ja) * | 2004-06-11 | 2005-12-22 | Nippon Telegr & Teleph Corp <Ntt> | ストレージ接続方法およびストレージシステム |
JP2006108955A (ja) * | 2004-10-04 | 2006-04-20 | Hitachi Ltd | 帯域制御装置 |
JP2008509489A (ja) * | 2004-08-12 | 2008-03-27 | テレコム・イタリア・エッセ・ピー・アー | 通信網を介してデータセットを更新するためのシステム、方法及び装置 |
WO2008056507A1 (fr) * | 2006-11-09 | 2008-05-15 | Konica Minolta Holdings, Inc. | Procédé de gestion d'informations et dispositif de traitement d'informations |
JP2008537258A (ja) * | 2005-04-20 | 2008-09-11 | マイクロソフト コーポレーション | 分散型で非集中型のデータ格納および検索を行うシステムおよび方法 |
WO2008114441A1 (ja) * | 2007-03-20 | 2008-09-25 | Fujitsu Limited | ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置 |
JP2009515278A (ja) * | 2005-11-04 | 2009-04-09 | トムソン ライセンシング | メディア記憶デバイスを管理する方法および装置 |
US7739465B2 (en) | 2005-11-17 | 2010-06-15 | Fujitsu Limited | Backup system, method, and program |
US7739579B2 (en) | 2006-02-02 | 2010-06-15 | Fujitsu Limited | Storage system, control method, and program for enhancing reliability by storing data redundantly encoded |
JP2010250477A (ja) * | 2009-04-14 | 2010-11-04 | Fujitsu Ltd | ストレージ制御プログラム、ストレージシステム、ストレージ制御装置、およびストレージ制御方法 |
JP2010262551A (ja) * | 2009-05-11 | 2010-11-18 | Hitachi Ltd | リモートスキャンをサポートする計算機 |
JP2011505617A (ja) * | 2007-11-22 | 2011-02-24 | 中国移▲動▼通信集▲団▼公司 | データ・ストレージ方法、管理サーバ、ストレージ設備及びシステム |
US8209296B2 (en) | 2008-12-03 | 2012-06-26 | Sony Corporation | Information processing apparatus, divided management server, information processing method, divided management method, program and information processing system |
JP2012185801A (ja) * | 2011-03-07 | 2012-09-27 | Denso Corp | 運転記録装置 |
JP2014032578A (ja) * | 2012-08-06 | 2014-02-20 | Nec Corp | 分散ストレージシステム、分散ストレージデータ配置制御方法及び分散ストレージデータ配置制御用プログラム |
JP2015512534A (ja) * | 2012-03-23 | 2015-04-27 | アルカテル−ルーセント | ファイルチャンキング及びレプリケーションを用いるクラウドネットワーク内の分散ファイルシステムのための方法及び装置 |
JP2015166988A (ja) * | 2014-03-04 | 2015-09-24 | 日本電気株式会社 | データ管理装置およびデータ管理方法 |
WO2016052665A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9781023B2 (en) | 2012-12-26 | 2017-10-03 | Fujitsu Limited | Information processing device, information processing method, and recording medium |
JP2018057045A (ja) * | 2013-07-01 | 2018-04-05 | アマゾン テクノロジーズ インコーポレイテッド | 仮想サービスプロバイダゾーン |
US10474829B2 (en) | 2012-06-07 | 2019-11-12 | Amazon Technologies, Inc. | Virtual service provider zones |
US10834139B2 (en) | 2012-06-07 | 2020-11-10 | Amazon Technologies, Inc. | Flexibly configurable data modification services |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4452438B2 (ja) * | 2002-11-11 | 2010-04-21 | 株式会社日立製作所 | 記憶システム |
JP4226350B2 (ja) | 2003-02-17 | 2009-02-18 | 株式会社日立製作所 | データ移行方法 |
US20040167868A1 (en) * | 2003-02-20 | 2004-08-26 | Bea Systems, Inc. | System and method for a virtual content repository |
US7310703B2 (en) * | 2003-10-23 | 2007-12-18 | Hewlett-Packard Development Company, L.P. | Methods of reading and writing data |
JP4601969B2 (ja) | 2004-01-27 | 2010-12-22 | 株式会社日立製作所 | ファイル入出力制御装置 |
US8412822B1 (en) | 2004-01-27 | 2013-04-02 | At&T Intellectual Property Ii, L.P. | Optimized job scheduling and execution in a distributed computing grid |
US20060036908A1 (en) * | 2004-08-10 | 2006-02-16 | Fabrice Helliker | System for backup storage device selection |
US7913043B2 (en) | 2004-05-14 | 2011-03-22 | Bakbone Software, Inc. | Method for backup storage device selection |
US20060080574A1 (en) * | 2004-10-08 | 2006-04-13 | Yasushi Saito | Redundant data storage reconfiguration |
JP2006133989A (ja) * | 2004-11-04 | 2006-05-25 | Hitachi Ltd | ストレージシステムの管理方法、及び装置 |
US20060143505A1 (en) * | 2004-12-22 | 2006-06-29 | Dell Products L.P. | Method of providing data security between raid controller and disk drives |
US20070027989A1 (en) * | 2005-08-01 | 2007-02-01 | Dot Hill Systems Corp. | Management of storage resource devices |
US7818344B2 (en) * | 2005-09-26 | 2010-10-19 | Bea Systems, Inc. | System and method for providing nested types for content management |
US20070073674A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for providing federated events for content management systems |
US7917537B2 (en) * | 2005-09-26 | 2011-03-29 | Oracle International Corporation | System and method for providing link property types for content management |
US20070073673A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for content management security |
US20070073784A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for type inheritance for content management |
US7483893B2 (en) * | 2005-09-26 | 2009-01-27 | Bae Systems, Inc. | System and method for lightweight loading for managing content |
US7953734B2 (en) | 2005-09-26 | 2011-05-31 | Oracle International Corporation | System and method for providing SPI extensions for content management system |
US7752205B2 (en) | 2005-09-26 | 2010-07-06 | Bea Systems, Inc. | Method and system for interacting with a virtual content repository |
EP1949214B1 (en) * | 2005-10-28 | 2012-12-19 | Network Appliance, Inc. | System and method for optimizing multi-pathing support in a distributed storage system environment |
US7565498B1 (en) * | 2005-11-07 | 2009-07-21 | Symantec Operating Corporation | System and method for maintaining write order fidelity in a distributed environment |
US8463852B2 (en) | 2006-10-06 | 2013-06-11 | Oracle International Corporation | Groupware portlets for integrating a portal with groupware systems |
US7430584B1 (en) * | 2008-03-12 | 2008-09-30 | Gene Fein | Data forwarding storage |
US7636759B1 (en) * | 2008-09-29 | 2009-12-22 | Gene Fein | Rotating encryption in data forwarding storage |
US7599997B1 (en) | 2008-08-01 | 2009-10-06 | Gene Fein | Multi-homed data forwarding storage |
US9203928B2 (en) | 2008-03-20 | 2015-12-01 | Callahan Cellular L.L.C. | Data storage and retrieval |
US7636761B1 (en) * | 2008-09-29 | 2009-12-22 | Gene Fein | Measurement in data forwarding storage |
US8458285B2 (en) * | 2008-03-20 | 2013-06-04 | Post Dahl Co. Limited Liability Company | Redundant data forwarding storage |
US7877456B2 (en) * | 2008-04-08 | 2011-01-25 | Post Dahl Co. Limited Liability Company | Data file forwarding storage and search |
US8386585B2 (en) * | 2008-04-25 | 2013-02-26 | Tajitshu Transfer Limited Liability Company | Real-time communications over data forwarding framework |
US8452844B2 (en) * | 2008-05-07 | 2013-05-28 | Tajitshu Transfer Limited Liability Company | Deletion in data file forwarding framework |
US8599678B2 (en) | 2008-07-10 | 2013-12-03 | Tajitshu Transfer Limited Liability Company | Media delivery in data forwarding storage network |
US8370446B2 (en) | 2008-07-10 | 2013-02-05 | Tajitshu Transfer Limited Liability Company | Advertisement forwarding storage and retrieval network |
US8478823B2 (en) * | 2008-09-29 | 2013-07-02 | Tajitshu Transfer Limited Liability Company | Selective data forwarding storage |
US8352635B2 (en) * | 2008-09-29 | 2013-01-08 | Tajitshu Transfer Limited Liability Company | Geolocation assisted data forwarding storage |
US8769049B2 (en) * | 2009-04-24 | 2014-07-01 | Microsoft Corporation | Intelligent tiers of backup data |
US8560639B2 (en) * | 2009-04-24 | 2013-10-15 | Microsoft Corporation | Dynamic placement of replica data |
US8935366B2 (en) * | 2009-04-24 | 2015-01-13 | Microsoft Corporation | Hybrid distributed and cloud backup architecture |
US8769055B2 (en) * | 2009-04-24 | 2014-07-01 | Microsoft Corporation | Distributed backup and versioning |
US8352719B2 (en) | 2009-07-31 | 2013-01-08 | Cleversafe, Inc. | Computing device booting utilizing dispersed storage |
US8326799B2 (en) * | 2009-10-09 | 2012-12-04 | Seagate Technology Llc | Data distribution in systems with multiple storage entities |
US9389926B2 (en) | 2010-05-05 | 2016-07-12 | Red Hat, Inc. | Distributed resource contention detection |
KR101502895B1 (ko) | 2010-12-22 | 2015-03-17 | 주식회사 케이티 | 복수의 오류 복제본으로부터 오류를 복구하는 방법 및 상기 방법을 이용하는 스토리지 시스템 |
KR101544480B1 (ko) | 2010-12-24 | 2015-08-13 | 주식회사 케이티 | 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 |
KR101585146B1 (ko) | 2010-12-24 | 2016-01-14 | 주식회사 케이티 | 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체 |
KR101365562B1 (ko) * | 2011-01-28 | 2014-02-21 | 주식회사 디케이아이테크놀로지 | 메타데이터를 이용한 절전기능을 갖는 다중 데이터저장시스템 및 그 절전방법 |
KR101483127B1 (ko) | 2011-03-31 | 2015-01-22 | 주식회사 케이티 | 클라우드 스토리지 시스템에서 리소스를 고려한 자료분배방법 및 장치 |
KR101544483B1 (ko) | 2011-04-13 | 2015-08-17 | 주식회사 케이티 | 분산 저장 시스템의 복제 서버 장치 및 복제본 생성 방법 |
KR101544485B1 (ko) * | 2011-04-25 | 2015-08-17 | 주식회사 케이티 | 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치 |
US20140201268A1 (en) * | 2011-09-06 | 2014-07-17 | Nec Corporation | Data placement system, distributed access node, data placement method and program |
US9203900B2 (en) | 2011-09-23 | 2015-12-01 | Netapp, Inc. | Storage area network attached clustered storage system |
US8683170B1 (en) * | 2011-09-23 | 2014-03-25 | Netapp, Inc. | Consistent distributed storage communication protocol semantics in a clustered storage system |
KR101351237B1 (ko) * | 2011-09-28 | 2014-01-13 | 권주현 | 네트워크의 파일 분산 처리 시스템 |
EP2600311A1 (en) * | 2011-11-30 | 2013-06-05 | Thomson Licensing | Method and apparatus for visualizing a data set |
US8868505B1 (en) * | 2012-03-20 | 2014-10-21 | Emc Corporation | Systems and methods for protecting data in a network host environment |
US10061628B2 (en) * | 2014-03-13 | 2018-08-28 | Open Text Sa Ulc | System and method for data access and replication in a distributed environment utilizing data derived from data access within the distributed environment |
JP6233279B2 (ja) * | 2014-11-07 | 2017-11-22 | コニカミノルタ株式会社 | 画像形成装置、画像形成装置の制御プログラム、およびコントローラー |
CN106209926B (zh) * | 2015-04-30 | 2019-06-21 | 阿里巴巴集团控股有限公司 | 一种数据更新方法和设备 |
US10031668B2 (en) * | 2016-02-29 | 2018-07-24 | Red Hat Israel, Ltd. | Determining status of a host operation without accessing the host in a shared storage environment |
US9934092B2 (en) * | 2016-07-12 | 2018-04-03 | International Business Machines Corporation | Manipulating a distributed agreement protocol to identify a desired set of storage units |
CN115174591B (zh) * | 2022-07-01 | 2023-10-13 | 深圳市玄羽科技有限公司 | 一种智能制造***及其数据安全管理方法 |
KR102673726B1 (ko) * | 2023-07-28 | 2024-06-10 | 주식회사 워크스타일 | 분산 저장 자동 버전 관리 시스템 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606694B2 (en) * | 2000-12-22 | 2003-08-12 | Bull Hn Information Systems Inc. | Write logging in mirrored disk subsystems |
US6948089B2 (en) * | 2002-01-10 | 2005-09-20 | Hitachi, Ltd. | Apparatus and method for multiple generation remote backup and fast restore |
US6865643B2 (en) * | 2002-03-29 | 2005-03-08 | Emc Corporation | Communications architecture for a high throughput storage processor providing user data priority on shared channels |
US7035207B2 (en) * | 2002-06-05 | 2006-04-25 | Eka Systems, Inc | System and method for forming, maintaining and dynamic reconfigurable routing in an ad-hoc network |
US7580370B2 (en) * | 2002-06-21 | 2009-08-25 | International Business Machines Corporation | Method and structure for autoconfiguration of network destinations |
-
2002
- 2002-09-30 JP JP2002286528A patent/JP2004126716A/ja active Pending
-
2003
- 2003-09-22 US US10/665,133 patent/US20040064633A1/en not_active Abandoned
- 2003-09-29 KR KR1020030067485A patent/KR20040028594A/ko not_active Application Discontinuation
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352844A (ja) * | 2004-06-11 | 2005-12-22 | Nippon Telegr & Teleph Corp <Ntt> | ストレージ接続方法およびストレージシステム |
JP4902538B2 (ja) * | 2004-08-12 | 2012-03-21 | テレコム・イタリア・エッセ・ピー・アー | 通信網を介してデータセットを更新するためのシステム、方法及び装置 |
JP2008509489A (ja) * | 2004-08-12 | 2008-03-27 | テレコム・イタリア・エッセ・ピー・アー | 通信網を介してデータセットを更新するためのシステム、方法及び装置 |
JP2006108955A (ja) * | 2004-10-04 | 2006-04-20 | Hitachi Ltd | 帯域制御装置 |
JP2008537258A (ja) * | 2005-04-20 | 2008-09-11 | マイクロソフト コーポレーション | 分散型で非集中型のデータ格納および検索を行うシステムおよび方法 |
US8549095B2 (en) | 2005-04-20 | 2013-10-01 | Microsoft Corporation | Distributed decentralized data storage and retrieval |
US8266237B2 (en) | 2005-04-20 | 2012-09-11 | Microsoft Corporation | Systems and methods for providing distributed, decentralized data storage and retrieval |
JP4913128B2 (ja) * | 2005-04-20 | 2012-04-11 | マイクロソフト コーポレーション | 分散型で非集中型のデータ格納および検索を行うシステムおよび方法 |
JP2009515278A (ja) * | 2005-11-04 | 2009-04-09 | トムソン ライセンシング | メディア記憶デバイスを管理する方法および装置 |
US7739465B2 (en) | 2005-11-17 | 2010-06-15 | Fujitsu Limited | Backup system, method, and program |
US7739579B2 (en) | 2006-02-02 | 2010-06-15 | Fujitsu Limited | Storage system, control method, and program for enhancing reliability by storing data redundantly encoded |
WO2008056507A1 (fr) * | 2006-11-09 | 2008-05-15 | Konica Minolta Holdings, Inc. | Procédé de gestion d'informations et dispositif de traitement d'informations |
JP5158074B2 (ja) * | 2007-03-20 | 2013-03-06 | 富士通株式会社 | ストレージ管理プログラム、ストレージ管理方法、ストレージ管理装置およびストレージシステム |
WO2008114441A1 (ja) * | 2007-03-20 | 2008-09-25 | Fujitsu Limited | ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置 |
JPWO2008114441A1 (ja) * | 2007-03-20 | 2010-07-01 | 富士通株式会社 | ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置 |
US8429369B2 (en) | 2007-03-20 | 2013-04-23 | Fujitsu Limited | Storage management program, storage management method, and storage management apparatus |
JP2011505617A (ja) * | 2007-11-22 | 2011-02-24 | 中国移▲動▼通信集▲団▼公司 | データ・ストレージ方法、管理サーバ、ストレージ設備及びシステム |
US8209296B2 (en) | 2008-12-03 | 2012-06-26 | Sony Corporation | Information processing apparatus, divided management server, information processing method, divided management method, program and information processing system |
JP2010250477A (ja) * | 2009-04-14 | 2010-11-04 | Fujitsu Ltd | ストレージ制御プログラム、ストレージシステム、ストレージ制御装置、およびストレージ制御方法 |
JP2010262551A (ja) * | 2009-05-11 | 2010-11-18 | Hitachi Ltd | リモートスキャンをサポートする計算機 |
JP2012185801A (ja) * | 2011-03-07 | 2012-09-27 | Denso Corp | 運転記録装置 |
US9235939B2 (en) | 2011-03-07 | 2016-01-12 | Denso International America, Inc. | Driver recording apparatus |
JP2015512534A (ja) * | 2012-03-23 | 2015-04-27 | アルカテル−ルーセント | ファイルチャンキング及びレプリケーションを用いるクラウドネットワーク内の分散ファイルシステムのための方法及び装置 |
US10834139B2 (en) | 2012-06-07 | 2020-11-10 | Amazon Technologies, Inc. | Flexibly configurable data modification services |
US10474829B2 (en) | 2012-06-07 | 2019-11-12 | Amazon Technologies, Inc. | Virtual service provider zones |
JP2014032578A (ja) * | 2012-08-06 | 2014-02-20 | Nec Corp | 分散ストレージシステム、分散ストレージデータ配置制御方法及び分散ストレージデータ配置制御用プログラム |
US9781023B2 (en) | 2012-12-26 | 2017-10-03 | Fujitsu Limited | Information processing device, information processing method, and recording medium |
JP2020141424A (ja) * | 2013-07-01 | 2020-09-03 | アマゾン テクノロジーズ インコーポレイテッド | 仮想サービスプロバイダゾーン |
US11323479B2 (en) | 2013-07-01 | 2022-05-03 | Amazon Technologies, Inc. | Data loss prevention techniques |
JP2018057045A (ja) * | 2013-07-01 | 2018-04-05 | アマゾン テクノロジーズ インコーポレイテッド | 仮想サービスプロバイダゾーン |
JP2015166988A (ja) * | 2014-03-04 | 2015-09-24 | 日本電気株式会社 | データ管理装置およびデータ管理方法 |
WO2016052665A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US10496479B2 (en) | 2014-09-30 | 2019-12-03 | Hitachi, Ltd. | Distributed storage system |
US10185624B2 (en) | 2014-09-30 | 2019-01-22 | Hitachi, Ltd. | Distributed storage system |
US11036585B2 (en) | 2014-09-30 | 2021-06-15 | Hitachi, Ltd. | Distributed storage system |
GB2545290B (en) * | 2014-09-30 | 2021-07-07 | Hitachi Ltd | Distributed storage system |
GB2545290A (en) * | 2014-09-30 | 2017-06-14 | Hitachi Ltd | Distributed storage system |
US11487619B2 (en) | 2014-09-30 | 2022-11-01 | Hitachi, Ltd. | Distributed storage system |
US11886294B2 (en) | 2014-09-30 | 2024-01-30 | Hitachi, Ltd. | Distributed storage system |
Also Published As
Publication number | Publication date |
---|---|
US20040064633A1 (en) | 2004-04-01 |
KR20040028594A (ko) | 2004-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004126716A (ja) | 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置 | |
JP4237515B2 (ja) | ネットワークストレージ仮想化方法およびネットワークストレージシステム | |
JP4477370B2 (ja) | データ処理システム | |
US8103630B2 (en) | Data processing system and storage subsystem provided in data processing system | |
JP4068473B2 (ja) | ストレージ装置、分担範囲決定方法及びプログラム | |
US20050273686A1 (en) | Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes | |
JP5381336B2 (ja) | 管理プログラム、管理装置および管理方法 | |
US9785498B2 (en) | Archival storage and retrieval system | |
US8775375B2 (en) | Higher efficiency storage replication using compression | |
JP4696089B2 (ja) | 分散ストレージシステム | |
JP2005327283A (ja) | ミラーリングストレージインタフェース | |
JP2019532440A (ja) | 分散型ストレージシステムにアクセスするための方法、関係する装置及び関係するシステム | |
US20140032960A1 (en) | Information processing system and access control method | |
JP2000207370A (ja) | 分散ファイル管理装置及び分散ファイル管理システム | |
WO2005072179A2 (en) | Multicast protocol for a redundant array of storage areas | |
JP2020154587A (ja) | 計算機システム及びデータ管理方法 | |
KR20100073154A (ko) | 메타데이터 서버, 데이터 서버의 데이터 처리 방법 및 이를이용한 비대칭 클러스터 분산 파일 시스템 | |
JP2005056200A (ja) | データ管理方法、ディスク記憶装置およびディスク記憶システム | |
WO2024148824A1 (zh) | 数据处理方法、***、装置、存储介质及电子设备 | |
JP6671708B2 (ja) | バックアップリストアシステム及びバックアップリストア方法 | |
JP4997784B2 (ja) | データ記憶システム、データ記憶方法、データ記憶プログラム | |
JP4519573B2 (ja) | データ処理システム及び方法 | |
CN111752892A (zh) | 分布式文件***及其实现方法、管理***、设备及介质 | |
JP3636163B2 (ja) | 疎結合システムにおけるリカバリ方式及び排他制御装置 | |
JP4618777B2 (ja) | データ処理システム及びそのデータ処理システムに備えられる記憶サブシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041026 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080205 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080603 |