JP2008250767A - 分散ストレージシステム - Google Patents

分散ストレージシステム Download PDF

Info

Publication number
JP2008250767A
JP2008250767A JP2007092342A JP2007092342A JP2008250767A JP 2008250767 A JP2008250767 A JP 2008250767A JP 2007092342 A JP2007092342 A JP 2007092342A JP 2007092342 A JP2007092342 A JP 2007092342A JP 2008250767 A JP2008250767 A JP 2008250767A
Authority
JP
Japan
Prior art keywords
storage device
node list
interface
interface processor
storage
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.)
Granted
Application number
JP2007092342A
Other languages
English (en)
Other versions
JP4696089B2 (ja
Inventor
Yasuo Ishikawa
康雄 石川
Chiku Fukuda
築 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SPACE COMM CORP
SPACE COMMUNICATIONS CORP
Mitsubishi Electric Information Systems Corp
Mitsubishi Electric Information Technology Corp
Original Assignee
SPACE COMM CORP
SPACE COMMUNICATIONS CORP
Mitsubishi Electric Information Systems Corp
Mitsubishi Electric Information Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SPACE COMM CORP, SPACE COMMUNICATIONS CORP, Mitsubishi Electric Information Systems Corp, Mitsubishi Electric Information Technology Corp filed Critical SPACE COMM CORP
Priority to JP2007092342A priority Critical patent/JP4696089B2/ja
Priority to CN2007800523750A priority patent/CN101663651B/zh
Priority to PCT/JP2007/062508 priority patent/WO2008129686A1/ja
Priority to KR1020097018501A priority patent/KR101303989B1/ko
Priority to US12/531,625 priority patent/US20100115078A1/en
Publication of JP2008250767A publication Critical patent/JP2008250767A/ja
Application granted granted Critical
Publication of JP4696089B2 publication Critical patent/JP4696089B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】管理工数の増加を最低限に抑えつつ、信頼性および連続可動性を向上させることができる、分散ストレージシステムを提供する。
【解決手段】分散ストレージシステム100は、データを格納するストレージデバイス31〜39と、ユーザ端末10からの要求に従ってストレージデバイス31〜39を制御するインタフェースプロセッサ21〜25とを含む。これらはそれぞれ、ストレージデバイス31〜39のうち少なくとも1つのIPアドレスを含む、ノードリストを格納する。インタフェースプロセッサ21〜29は、このノードリストに応じてストレージデバイス31〜39を制御する。ストレージデバイス31〜39は毎回異なるインタフェースプロセッサにノードリストを要求し、要求を受けたインタフェースプロセッサは、要求してきたストレージデバイスのIPアドレスを自身のノードリストに追加する。
【選択図】図1

Description

本発明は、分散ストレージシステムに関する。
ネットワーク上でデータを管理するストレージシステムとして、一括管理型ネットワークファイルシステムが従来から知られている。図10に、従来から利用されてきた一括管理型ネットワークファイルシステムの概略図を示す。一括管理型ネットワークファイルシステムとは、複数のユーザ端末(クライアント)202とは別個にデータを保管するファイルサーバ201を設け、各ユーザ端末202はこのファイルサーバ201内のファイルを利用する方式である。管理機能、管理情報はファイルサーバ201が保有する。ファイルサーバ201とユーザ端末202とは通信ネットワーク203を介して接続される。
このような構成では、ファイルサーバ201に障害が発生した場合、復旧まであらゆるリソースにアクセスができず、障害に対して非常に脆くシステムとしての信頼性が低いといった問題がある。
このような問題を回避するためのシステムとして、分散ストレージシステムが知られている。分散ストレージシステムの例は、特許文献1に示される。図11にその構成例を示す。分散管理型ネットワークファイルシステムは、ネットワーク302とそれに接続する複数のユーザ端末(クライアント)301から構成される。
各ユーザ端末301は、自己のストレージ内にファイル共有領域301aを設け、当該ユーザ端末301が管理するマスターファイル、他のユーザ端末301が管理するマスターファイルのコピーであるキャッシュファイル、通信ネットワーク302上に点在する各々のファイルの情報を把握するために必要な管理情報が入っている管理情報テーブルを有する。各々のユーザ端末301は、他のユーザ端末301と少なくとも1つ以上の参照関係を結び、この参照関係を通し、管理情報を交換、修正を行なう。これらの作業をネットワーク上の全てのユーザ端末301が同様に行ない、情報が順次伝播することで時間が経てば収束し、全てのユーザ端末301が同じ管理情報を保持することができる。ユーザが実際にファイルにアクセスする際には、自己が保持している管理情報テーブルから管理情報を取得し、アクセスしたいファイルを所有しているユーザ端末301(キャッシュクライアント)を選択する。次に、マスタクライアントとなるユーザ端末301およびキャッシュクライアントからファイル情報を入手、比較し、一致すれば選択したユーザ端末から、不一致ならマスタクライアントから、当該ファイルを入手する。また、不一致の場合には、キャッシュクライアントに不一致であることを通知する。通知を受けたキャッシュクライアントは、当該ファイルの削除、マスタクライアントから当該ファイルの入手、管理情報テーブルの変更等の処理を行なう。
特開2002−324004号公報
しかしながら、従来の分散ストレージシステムでは、信頼性の向上と引き換えに管理が複雑となり、これに伴って様々な問題が発生していた。
たとえば、特許文献1のような構成では、信頼性向上のためファイルのコピーを複数格納しておく必要があることから、大容量ストレージを構築するためには多数のユーザ端末301が必要となり、ユーザ端末301の数が増えれば増えるほど管理情報が収束するまでの時間が増大する。また、各ユーザ端末301間で管理情報および実体ファイルのやり取りが発生するため、ユーザ端末301のハードウエアリソースを消費するとともに、ネットワーク負荷の増大となる。
この発明は、このような問題点を解決するためになされたものであり、管理工数の増加を最低限に抑えつつ、信頼性および連続可動性を向上させることができる分散ストレージシステムを提供することを目的とする。
上述の問題点を解決するため、この発明に係る分散ストレージシステムは、データを格納する、複数のストレージデバイスと、ストレージデバイスの制御を行う、複数のインタフェースプロセッサとを含み、インタフェースプロセッサおよびストレージデバイスは、通信ネットワークを介して、IPプロトコルに従って互いに通信可能であり、インタフェースプロセッサは、それぞれ、通信ネットワークにおけるストレージデバイスの少なくとも1つのIPアドレスを含む、ノードリストを格納し、ストレージデバイスは、複数の異なるインタフェースプロセッサに対して、ノードリストを要求し、要求されたインタフェースプロセッサは、要求したストレージデバイスに、ノードリストを送信するとともに、要求したストレージデバイスのIPアドレスをノードリストに追加する。
分散ストレージシステムは、さらに、通信ネットワークに接続されたDNSサーバを含み、DNSサーバは、所定のホスト名と、複数のインタフェースプロセッサのそれぞれのIPアドレスとを関連付けて記憶するとともに、所定のホスト名の照会に対し、複数のインタフェースプロセッサのIPアドレスの1つを巡回的に通知し、ストレージデバイスは、DNSサーバに対して所定のホスト名の照会を行い、通知されたインタフェースプロセッサのIPアドレスに基づいて、ノードリストの要求を行ってもよい。
インタフェースプロセッサは、ノードリストに含まれるストレージデバイスのIPアドレスと、時刻を表す情報とを関連付けて格納するとともに、所定の条件に応じて、最も古い時刻を表す情報が関連付けられたストレージデバイスのIPアドレスを、ノードリストから削除してもよい。
複数のストレージデバイスのそれぞれは、他のストレージデバイスの少なくとも1つのIPアドレスを含む、ノードリストを格納し、インタフェースプロセッサおよびストレージデバイスは、それぞれ自身のノードリストに含まれるストレージデバイスに対して、ストレージデバイスの制御に関する情報の送信を行ってもよい。
1つのストレージデバイスと、1つのストレージデバイスのノードリストに含まれる別のストレージデバイスとにおいて、1つのストレージデバイスは、自身のノードリストから別のストレージデバイスを削除し、別のストレージデバイスは、自身のノードリストに1つのストレージデバイスを追加し、1つのストレージデバイスおよび別のストレージデバイスは、それぞれのノードリストに含まれる、1つのストレージデバイスおよび別のストレージデバイスを除くすべてのストレージデバイスを交換してもよい。
ストレージデバイスは、インタフェースプロセッサから送信されたノードリストに応じて、自身のノードリストを更新してもよい。
インタフェースプロセッサは、外部からのデータの書込要求を受信すると、他のインタフェースプロセッサとの間で、そのデータの書込許可に関する情報の送受信を行い、書込要求を受信したインタフェースプロセッサは、書込許可に関する情報の送受信の結果に応じて、ストレージデバイスに対してデータの格納を指示し、あるいは指示しなくてもよい。
この発明に係る分散ストレージシステムによれば、各ストレージデバイスのIPアドレスが、それぞれ複数のインタフェースプロセッサのノードリストに含まれるので、インタフェースプロセッサのいずれかが稼動していない状態であっても、残りのインタフェースプロセッサを使用して、ファイルの書き込みおよび読み込みを行うことができ、管理工数の増加を最低限に抑えつつ信頼性および連続可動性を向上させることができる。
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態1.
図1に、本発明に係る分散ストレージシステム100を含む構成を示す。分散ストレージシステム100は、公衆通信ネットワークであるインターネット51を介して、分散ストレージシステム100の利用者が使用するコンピュータであるユーザ端末10と通信可能に接続されている。
分散ストレージシステム100は、データを格納するストレージデバイス群30と、ユーザ端末10からの要求に従ってストレージデバイス群30を制御するインタフェースプロセッサ群20とを含む。インタフェースプロセッサ群20およびストレージデバイス群30は、通信ネットワークであるLAN(ローカルエリアネットワーク)52を介して、互いに通信可能に接続される。
インタフェースプロセッサ群20は、複数のインタフェースプロセッサを含む。本実施の形態では5台のインタフェースプロセッサ21〜25が図示されているが、これとは異なる数であってもよい。
ストレージデバイス群30は、複数のストレージデバイスを含む。ストレージデバイスの数はたとえば1000台であるが、簡明のため本実施の形態では9台のストレージデバイス31〜39のみを使用して説明する。
ユーザ端末10、インタフェースプロセッサ21〜25、およびストレージデバイス31〜39は、それぞれ周知のコンピュータとしての構成を有し、外部からの入力を受け取る入力手段と、外部への出力を行う出力手段と、演算を行う演算手段と、情報を格納する記憶手段とを備える。入力手段はキーボードおよびマウスを含み、出力手段はディスプレイおよびプリンタを含み、演算手段はCPU(中央処理装置)を含み、記憶手段はメモリおよびHDD(ハードディスクドライブ)を含む。また、これらのコンピュータは、それぞれの記憶手段に格納されたプログラムを実行することによって、本明細書に説明される機能を実現する。
ユーザ端末10は、インターネット51に対する入出力手段であるネットワークカードを備える。ストレージデバイス31〜39は、それぞれ、LAN52に対する入出力手段であるネットワークカードを備える。インタフェースプロセッサ21〜25は、それぞれ2つのネットワークカードを備え、このうち一方はインターネット51に対する入出力手段であり、他方はLAN52に対する入出力手段である。
ユーザ端末10、インタフェースプロセッサ21〜25、およびストレージデバイス31〜39は、それぞれ、ネットワークカードに対応するIPアドレスを付与される。
例として、LAN52に対して、インタフェースプロセッサ21〜25およびストレージデバイス31〜39のIPアドレスは、次のように指定されている。
インタフェースプロセッサ21: 192.168.10.21
インタフェースプロセッサ22: 192.168.10.22
インタフェースプロセッサ23: 192.168.10.23
インタフェースプロセッサ24: 192.168.10.24
インタフェースプロセッサ25: 192.168.10.25
ストレージデバイス31: 192.168.10.31
ストレージデバイス32: 192.168.10.32
ストレージデバイス33: 192.168.10.33
ストレージデバイス34: 192.168.10.34
ストレージデバイス35: 192.168.10.35
ストレージデバイス36: 192.168.10.36
ストレージデバイス37: 192.168.10.37
ストレージデバイス38: 192.168.10.38
ストレージデバイス39: 192.168.10.39
同様に、インターネット51に対して、ユーザ端末10およびインタフェースプロセッサ21〜25にIPアドレスが指定される。具体例は省略するが、これらは互いに異なるものであればよい。
インターネット51には、周知の構成を有するDNSサーバであるDNSサーバ41が通信可能に接続される。DNSサーバ41は、単一のホスト名と、インタフェースプロセッサ21〜25それぞれのインターネット51におけるIPアドレスとを関連付けて記憶し、いわゆるラウンドロビンDNS方式に従って動作する。すなわち、ユーザ端末10からの、この単一のホスト名に関する照会に対し、インタフェースプロセッサ21〜25にそれぞれ対応する合計5つのIPアドレスを、順番に、巡回的に通知する。
同様に、LAN52には、周知の構成を有するDNSサーバであるDNSサーバ42が通信可能に接続される。DNSサーバ42は、単一のホスト名と、インタフェースプロセッサ21〜25それぞれのLAN52におけるIPアドレスとを関連付けて記憶する。DNSサーバ42は、ストレージデバイス31〜39からの、この単一のホスト名に関する照会に対し、ラウンドロビンDNS方式に従ってインタフェースプロセッサ21〜25のIPアドレスを順番に通知する。
図2は、図1のインタフェースプロセッサ21〜25およびストレージデバイス31〜39の論理的な接続状態を説明するグラフである。この論理的な接続状態は、インタフェースプロセッサ21〜25およびストレージデバイス31〜39を表すノードと、ノード間を連結する、向きを持った辺とからなる有向グラフとして示される。なお、簡明のため図2にはインタフェースプロセッサとしてインタフェースプロセッサ21のみを示すが、実際には他のインタフェースプロセッサ22〜25もこのグラフに含まれる。
このグラフは、インタフェースプロセッサ21(22〜25も同様である)から、ストレージデバイス31〜39の少なくとも1つ、たとえばストレージデバイス31、36、37、および38に向かう辺を持つ。一方、その逆、すなわちストレージデバイス31〜39からインタフェースプロセッサ21(22〜25も同様である)へと向かう辺は持たない。また、各ストレージデバイス間では、辺を持たない場合もあり、一方向のみの辺を持つ場合もあり、双方向の辺を持つ場合もある。
なお、このグラフは固定されたものではなく、分散ストレージシステム100の動作に従って変化するが、これについては後述する。
分散ストレージシステム100において、論理的な接続状態は、ノードごとに作成されるノードリストの集合として表される。
図3は、図2のグラフを表すノードリストの例である。あるノードから他のノードへと向かう辺が存在する場合、辺の始点となるノードのノードリストは、辺の終点となるノードを表す情報、たとえばLAN52におけるIPアドレスを含む。
図3(a)は、図2におけるインタフェースプロセッサ21(IPアドレス192.168.10.21を有する)について作成されたノードリストを示す。このノードリストは、インタフェースプロセッサ21の記憶手段に格納される。このノードリストには、ストレージデバイス31、36、37、および38を表すIPアドレスが含まれる。
同様に、図3(b)は、図2におけるストレージデバイス31(IPアドレス192.168.10.31を有する)について作成されたノードリストを示す。このノードリストは、ストレージデバイス31の記憶手段に格納される。このノードリストには、ストレージデバイス32、34、および35を表すIPアドレスが含まれる。
インタフェースプロセッサ21〜25は、それぞれ、周知の方法でデータを消失訂正符号化する機能を有する。
図4は、インタフェースプロセッサ21(22〜25も同様)がデータを消失訂正符号化する手順を示す。(a)は元データを表し、情報が1つのまとまりとして与えられた状態を示す。インタフェースプロセッサ21は、元データを分割して、複数の情報パケットを作成する。(b)はたとえば100個の情報パケットが作成された状態を示す。さらに、インタフェースプロセッサ21は、情報パケットを冗長化して、より多数の符号化データファイルを作成する。(c)は、たとえば150個の符号化データファイルが作成された状態を示す。
この150個の符号化データファイルは、たとえばそのうち任意の105個が収集されれば元データが復元可能となるように構成される。このような符号化および復号化の方法は、周知の消失訂正符号または誤り訂正符号等の技術に基づくものであり、符号化データファイルの数や、元データの復元に必要となる符号化データファイルの最小個数は適宜変更可能である。
インタフェースプロセッサ21は、その記憶手段に、このような符号化および復号化を行うためのプログラムを格納し、これを実行することによって符号化手段および復号化手段として機能する。
分散ストレージシステム100は、図2に例示される論理的な接続状態を、動的に更新する機能を有する。
図5および図6は、ストレージデバイス31〜39およびインタフェースプロセッサ21〜25が、それぞれのノードリストを更新する際の処理の流れを説明する図である。
各ストレージデバイス、以下例としてストレージデバイス31は、所定のタイミングで、たとえば2分おきに、図5のフローチャートの実行を開始する。この実行を開始したストレージデバイスが、更新処理を開始したストレージデバイスとなる。
まず、ストレージデバイス31は、自身のノードリストに存在するノードのうち1つを、更新処理の対象として選択する(ステップS101a)。ここでは、過去に一度も選択されていないノードまたは最も長時間選択されていないノードが1つ選択される。条件に適合するノードが複数存在する場合は、それらのうちからランダムに選択される。図示しないが、選択されたノードのIPアドレスは、その時点の時刻のタイムスタンプと関連付けて記憶され、次回の処理における選択基準として参照される。なお、変形例として、IPアドレスとタイムスタンプとの関連付けを行わない構成としてもよい。その場合は、ステップS101aにおけるノードの選択において、ノードリストに含まれるノードのうちからランダムに1つのノードが選択される。
ここでは、例として、ストレージデバイス32が選択されたものとする。
次に、ストレージデバイス31は、選択されたノードに、そのノードが更新処理の対象として選択されたことを示す、ノード交換メッセージを送信する(ステップS102a)。ストレージデバイス32はこのノード交換メッセージを受信し(ステップS102b)、ストレージデバイス31による更新処理の対象として選択されたことを認識する。
次に、ストレージデバイス31および32は、相互接続情報の刈り込みを実行して、ノードリストを更新する(ステップS103aおよびS103b)。
図6は、ステップS103aおよびS103bにおける更新処理を説明する図である。(x)は、これらのステップが開始される前の、ストレージデバイス31および32のノードリストを示す。これは図2の接続状態に対応する。ストレージデバイス31のノードリストにはストレージデバイス32、34、および35が含まれており、ストレージデバイス32のノードリストにはストレージデバイス33のみが含まれている。
ステップS103aおよびS103bにおいて、まずストレージデバイス31および32は、更新処理を開始したストレージデバイス31から、更新処理の対象として選択されたストレージデバイス32へと向かう辺の向きを逆転する。すなわち、ストレージデバイス31のノードリストからはストレージデバイス32が削除され、かつ、ストレージデバイス32のノードリストにはストレージデバイス31が追加される(ストレージデバイス31が以前から存在していた場合は変更されない)。この時点でノードリストは図6(y)に示す内容となる。
さらに、ストレージデバイス31および32は、ノードリストの他のノードを交換する。ストレージデバイス31のノードリストからはストレージデバイス34および35が削除され、これらはストレージデバイス32のノードリストに追加される。また、ストレージデバイス32のノードリストからはストレージデバイス33が削除され、これはストレージデバイス31のノードリストに追加される。この時点でノードリストは図6(z)に示す内容となる。
なお、ステップS103aおよびS103bにおける相互接続情報の刈り込みでは、全ストレージデバイスのノードリストに含まれるノードの総数、すなわち図2のグラフに示されるストレージデバイス間の辺の総数は、変化しない場合もあり、減少する場合もあるが、増加する場合はない。これは、更新処理を開始したストレージデバイスから、更新処理の対象として選択されたストレージデバイスへと向かう辺は必ず削除されるが、その逆の辺は追加される場合もあれば追加されない場合(すなわちそれ以前から存在している場合)もあるからである。
以上のようにして、ストレージデバイス31および32は、ステップS103aおよびS103bの相互接続情報の刈り込みを実行する。その後、選択されたストレージデバイス32はその処理を終了する。
次に、ストレージデバイス31は、自身のノードリストに含まれるノード数が、一定数以下、たとえば4以下となったかどうかを判定する(図5のステップS104a)。ノード数が一定数を超えている場合、ストレージデバイス31は処理を終了する。
ノード数が一定数以下である場合、ストレージデバイス31は、インタフェースプロセッサ21〜25のいずれかにノード情報すなわちノードリストの送信を要求してこれを取得し、これに含まれるノードを自身のノードリストに追加する(ステップS105a)。要求の対象となったインタフェースプロセッサは、この要求に応じ、自身のノードリストをストレージデバイス31に送信する(ステップS105c)。このノードリストは、図3(a)に示すように、ストレージデバイス31〜39のうち少なくとも1つのIPアドレスを含む。
ここで、ストレージデバイス31は、所定のホスト名を使用してDNSサーバ42に照会を行い、得られたIPアドレスを有するインタフェースプロセッサからノード情報を取得する。DNSサーバ42は上述のようにラウンドロビン方式に従って通知を行うので、ストレージデバイス31は、ステップS105aが実行されるごとに異なるインタフェースプロセッサからノード情報を取得することになる。ここでは例として、DNSサーバ42はインタフェースプロセッサ21のIPアドレスを通知したとする。
次に、ストレージデバイス31およびインタフェースプロセッサ21は、ステップS105aおよびS105cの結果に応じ、それぞれのノードリストを更新する(ステップS106aおよびS106b)。
ここで、ストレージデバイス31は、取得したノードのうち、ノードリストに存在しないノード(自分自身を除く)を、自身のノードリストに追加する。
また、インタフェースプロセッサ21は、要求元のノードであるストレージデバイス31を、自身のノードリストに追加する。ここで、インタフェースプロセッサ21は、追加されたノードに、それが追加された時刻を表す情報、たとえばタイムスタンプを関連付けて記憶する。そして、所定の条件が満たされると、たとえばノードリストのノードが一定数以上になると、最も古いタイムスタンプが関連付けられたものから順にノードリストから削除する。なお、変形例として、インタフェースプロセッサ21はノードとタイムスタンプとの関連付けを行わない構成としてもよい。その場合、ノードリストから削除されるべきノードの選択では、ノードリストに含まれるノードのうちからランダムに1つのノードが選択される。また、インタフェースプロセッサ21は、ノードリストを、順序を有するリストとして記憶してもよい。すなわち、各ノードがノードリストに追加された順序を判定できる構成としてもよい。その場合、ノードリストから削除されるべきノードの選択は、ノードリストに追加された順序に従って古いものから順に、すなわちFIFO方式で、行われてもよい。
このようにして、分散ストレージシステム100は、ノード間の論理的な接続状態を動的に更新する。
なお、図1に含まれない新たなストレージデバイスが分散ストレージシステム100に追加される場合、このストレージデバイスはまずインタフェースプロセッサのいずれかからノードリストを取得し、これを初期のノードリストとする。すなわち、この場合、追加されたストレージデバイスはノードリストが空であるために、ステップS101a、S102a、S102b、S103a、S103bは実行されず、ステップS104aにおいてはノード情報は0で、当然に一定数以下であるから、図5のステップS105aおよびS105cと、S106aおよびS106cが実行されることになる。
このように、図5および図6で説明したノードリストの更新を、各ストレージデバイスで所定のタイミングで繰り返して実行することにより、追加したばかりのストレージデバイスは辺を持たないが、やがて、一方向のみの辺を持つ場合、双方向の辺を持つ場合など、様々なパターンの有向グラフが構築される。
図7は、分散ストレージシステム100が、ユーザ端末10からファイルを受信して格納する際の動作を含む、処理の流れを説明するフローチャートである。
まず、ユーザ端末10が、ユーザの指示に応じて、分散ストレージシステム100に格納されるべき書込ファイルを分散ストレージシステム100に送信する(ステップS201a)。
ここで、ユーザ端末10は、所定のホスト名を使用してDNSサーバ41に照会を行い、得られたIPアドレスを有するインタフェースプロセッサに書込ファイルを送信する。DNSサーバ41は上述のようにラウンドロビン方式に従って通知を行うので、ユーザ端末10は、毎回異なるインタフェースプロセッサに書込ファイルを送信することになる。ここでは、例としてインタフェースプロセッサ21に書込ファイルが送信されたとする。
なお、ここで、当該ファイルの書き込み処理を担当すべきインタフェースプロセッサがすでに決定されており、ユーザ端末10がそのIPアドレスを記憶している場合は、ユーザ端末10はDNSサーバ41への照会を行わず、IPアドレスを直接使用して送信を行う。たとえば、排他制御処理(図9を使用して後述する)の結果、そのファイルの書き込みを許可するトークンを特定のインタフェースプロセッサが取得している状態がそのようなケースに相当する。
インタフェースプロセッサ21は、書込ファイルを受信すると(ステップS201b)、これを分割し、消失訂正符号化を行って、複数のサブファイルを作成する(ステップS202b)。これは図4を用いて説明した方法で行われる。
次に、インタフェースプロセッサ21は、ストレージデバイス31〜39に書込要求を送信し(ステップS203b)、ストレージデバイス31〜39はこれを受信する(ステップS203c)。この書込要求は、図2に示されるグラフに従って、インタフェースプロセッサ21からそのノードリストに示されるストレージデバイスに送信され、さらにそのストレージデバイスのノードリストに示されるノードリストに送信され、これを繰り返して、ストレージデバイス間で転送される。
この書込要求は、次のデータを含む。
‐その書込要求を送信したインタフェースプロセッサのIPアドレス
‐その書込要求を一意に識別するためのメッセージID
‐その書込要求が転送された回数を表すホップ数
‐各ストレージデバイスがその書込要求に応答すべき確率を表す応答確率
ここで、ホップ数の初期値はたとえば1である。また、応答確率は、インタフェースプロセッサ21が、全ストレージデバイスの数と、サブファイルの数とに基づいて、応答するストレージデバイスの数がサブファイルの数以上となる確率が十分高くなるように決定される。たとえば、ストレージデバイスの数(あらかじめ指定され、インタフェースプロセッサ21の記憶手段に格納されている)が1000台であり、サブファイルの数が150個である場合、応答するストレージデバイスの数の期待値がサブファイルの数に等しくなるようにするには、応答確率を150/1000=0.15とすればよいが、応答するストレージデバイスの数がサブファイルの数以上となる確率が十分高くなるようにするには、たとえば20%の余裕度を持ち、応答確率を0.15×1.2=0.18とすればよい。
なお、変形例として、書込要求はホップ数を含まないものであってもよい。
書込要求の送受信は、具体的には、たとえば次のようなアルゴリズムが使用される。
(1)送信ノード、たとえばインタフェースプロセッサ21は、自身のノードリストに含まれる全ノードに書込要求を送信する。
(2)受信ノード、たとえばストレージデバイス31は、受信した書込要求のメッセージIDを参照し、その書込要求が既知であるかどうか、すなわち既に受信されたものであるかどうかを判定する。
(3)受信ノードは、その書込要求が既知である場合、処理を終了する。
(4)受信ノードは、その書込要求が既知でない場合、送信ノードとして上記(1)と同様にその書込要求を送信する。なお、この際、書込要求のホップ数を1だけ増加させる。
以上のようにして、有向グラフで繋がったすべてのストレージデバイス31〜39が書込要求を受信する。
次に、ストレージデバイス31〜39は、それぞれ、受信した書込要求に応答するかどうかを決定する(ステップS204c)。この決定は応答確率に従ってランダムになされ、たとえば応答確率が0.18であれば、0.18の確率で応答すると決定し、1−0.18=0.82の確率で応答しないと決定する。
応答しないと決定した場合、そのストレージデバイスは、処理を終了する。
応答すると決定した場合、そのストレージデバイスは、書込要求に含まれているインタフェースプロセッサのIPアドレス、ここでは192.168.10.21に対して、応答を送信する(ステップS205c)。この応答は、そのストレージデバイスのIPアドレスを含む。
書込要求の送信元であるインタフェースプロセッサ21は、この応答を受信し(ステップS205b)、応答に含まれるIPアドレスに対して、すなわち応答したストレージデバイスに対して、サブファイルを送信する(ステップS206b)。ここで、1つのストレージデバイスに対しては1つのサブファイルが送信される。
応答したストレージデバイスの数がサブファイルの数よりも多い場合、インタフェースプロセッサ21は、所定の基準に従ってストレージデバイスを選択する。この基準は、たとえばデータがなるべく地理的に分散するように、すなわち同一の拠点に含まれるストレージデバイスの最大数を少なくするように設定される。
書込要求に応答したストレージデバイスは、サブファイルを受信する(ステップS206c)。図7には示されないが、応答したにもかかわらずサブファイルを受信しなかったストレージデバイスは、その処理を終了する。
サブファイルを受信したストレージデバイスは、そのサブファイルを自身の記憶手段に格納する(ステップS207c)。これによって、そのサブファイルは分散ストレージシステム100に書き込まれたことになる。
その後、各ストレージデバイスは、サブファイル書込終了通知をインタフェースプロセッサ21に送信する(ステップS208c)。インタフェースプロセッサ21は、サブファイルを送信したストレージデバイスのすべてからこれを受信する(ステップS208b)。これによって、元データの全量が、分散ストレージシステム100に書き込まれたことになる。
その後、インタフェースプロセッサ21は、ユーザ端末10にファイル書込終了通知を送信し(ステップS209b)、ユーザ端末10はこれを受信して(ステップS209a)、ファイル書込処理を終了する(ステップS210a)。
図8は、分散ストレージシステム100が、ユーザ端末10からファイル読込要求を受信してファイルを送信する際の動作を含む、処理の流れを説明するフローチャートである。
まず、ユーザ端末10が、特定のファイルを読み込む指示をユーザから受け取り、これに応じて、分散ストレージシステム100にファイル読込要求を送信する(ステップS301a)。
ここで、図7のステップS201aと同様に、ラウンドロビン方式のDNS照会が行われる。すなわち、ユーザ端末10は、毎回異なるインタフェースプロセッサにファイル読込要求を送信することになる。ここでは、例としてインタフェースプロセッサ21にファイル読込要求が送信されたとする。
インタフェースプロセッサ21は、ファイル読込要求を受信すると(ステップS301b)、ストレージデバイス31〜39にファイル存在確認要求を送信し(ステップS302b)、ストレージデバイス31〜39はこれを受信する(ステップS302c)。このファイル存在確認要求は、図7のステップS203bにおける書込要求と同様の方法で送受信される。すなわち、図2に示されるグラフに従って、インタフェースプロセッサ21からそのノードリストに示されるストレージデバイスに送信され、さらにそのストレージデバイスのノードリストに示されるノードリストに送信され、これを繰り返してストレージデバイス間で転送される。
このファイル存在確認要求は、次のデータを含む。
‐ファイル読込要求の対象となるファイルを特定する情報、たとえばファイル名
‐そのファイル存在確認要求を送信したインタフェースプロセッサのIPアドレス
‐そのファイル存在確認要求を一意に識別するためのメッセージID
‐そのファイル存在確認要求が転送された回数を表すホップ数
ここで、ホップ数の初期値はたとえば1である。なお、変形例として、ファイル存在確認要求はホップ数を含まないものであってもよい。
次に、ストレージデバイス31〜39は、それぞれ、該当するファイルのサブファイルを格納しているかどうかを判定する(ステップS303c)。
格納していない場合、そのストレージデバイスは、処理を終了する。
格納している場合、そのストレージデバイスは、ファイル存在確認要求に含まれているインタフェースプロセッサのIPアドレス、ここでは192.168.10.21に対して、ファイルが存在することを示す存在応答を送信する(ステップS304c)。この応答は、そのストレージデバイスのIPアドレスを含む。
ファイル存在確認要求の送信元であるインタフェースプロセッサ21は、この存在応答を受信し(ステップS304b)、存在応答に含まれるIPアドレスに対して、すなわち応答したストレージデバイスに対して、サブファイル読込要求を送信する(ステップS305b)。
存在応答を送信したストレージデバイスは、サブファイル読込要求を受信すると(ステップS305c)、そのサブファイルを自身の記憶手段から読み込み(ステップS306c)、インタフェースプロセッサ21に送信する(ステップS307c)。
インタフェースプロセッサ21は、サブファイルを送信したストレージデバイスの少なくとも一部からこれを受信する(ステップS307b)。さらに、受信した複数のサブファイルに基づいて、消失訂正符号の復号化を行って、ユーザ端末10から要求されているファイルを再構築する(ステップS308b)。この復号化は、図4を用いて説明した符号化方法に対応して、周知の方法で行われる。なお、この際、サブファイルは冗長化されているので、すべてのサブファイルが揃わなくても元ファイルを正確に復元することができる。
その後、インタフェースプロセッサ21は、ユーザ端末10に復号化されたファイルを送信し(ステップS309b)、ユーザ端末10はこれを受信して(ステップS309a)、ファイル読込処理を終了する(ステップS310a)。
図9は、分散ストレージシステム100が、ユーザ端末10からファイルを受信して格納する際に行う、排他制御処理の流れを説明するフローチャートである。この排他制御処理は、複数のインタフェースプロセッサが、同時に同一のファイルを書き込むことを防止するためのものである。
この制御では、各ファイルに関連付けられ、そのファイルの書込許可の状態を表すトークンを使用する。1つのファイルにつき、最大1台のインタフェースプロセッサがそのトークンを記憶手段に格納し、トークンを格納しているインタフェースプロセッサのみがそのファイルの書き込み(新規ファイルの格納および既存ファイルの更新を含む)を行うことができる。
まず、ユーザ端末10が、ユーザの指示に応じて、ファイルを書き込むための書込要求を分散ストレージシステム100に送信する(ステップS401a)。
ここで、図7のステップS203aと同様に、ラウンドロビン方式のDNS照会が行われる。ここでは、例としてインタフェースプロセッサ21にファイル書込要求が送信されたとする。
インタフェースプロセッサ21は、書込要求を受信すると(ステップS401b)、他のインタフェースプロセッサ22〜25に排他制御用のトークン取得要求を送信する(ステップS402b)。このトークン取得要求は、次のデータを含む。
‐そのトークン取得要求を送信したインタフェースプロセッサのIPアドレス
‐そのトークン取得要求の対象となるファイルを特定する情報、たとえばファイル名
‐そのトークン取得要求が作成された時刻を表すタイムスタンプ
他のインタフェースプロセッサ22〜25は、このトークン取得要求を受信し(ステップS402c)、自分自身が該当ファイルに対するトークンを取得しているかどうかを判定する(ステップS403c)。
他のインタフェースプロセッサ22〜25は、該当ファイルに対するトークンを取得していないと判定した場合、処理を終了する。
該当ファイルに対するトークンを取得していると判定した場合、トークン取得要求を送信してきたインタフェースプロセッサ21に対し、トークンが取得済みであることを表すトークン取得拒否応答を送信する(ステップS404c)。
インタフェースプロセッサ21は、トークン取得拒否応答を待ち、送信されたものがあれば受信する(ステップS404b)。ここで、インタフェースプロセッサ21は、ステップS402bの実行後所定時間、たとえば100msだけ待ち、その間にトークン取得拒否応答を受け付ける。
次に、インタフェースプロセッサ21は、ステップS404bにおいてトークン取得拒否応答を受信したかどうかを判定する(ステップS405b)。トークン取得拒否応答を受信したと判定された場合、ユーザ端末10に書込不可通知を送信し(ステップS411b)、ユーザ端末10はこの書込不可通知を受信する(ステップS411a)。この場合、ユーザ端末10はファイルの書き込みを実行せず、ユーザに対して周知の方法で書込不可の通知を行う。すなわち、ユーザ端末10は図7のステップS201aを実行しない。
ステップS405bにおいて、トークン取得拒否応答を受信していないと判定された場合、インタフェースプロセッサ21は、ステップS401bの実行開始からステップS405bの実行完了までの間に、他のインタフェースプロセッサ22〜25からトークン取得要求を受信していたかどうかを判定する(ステップS406b)。
他のインタフェースプロセッサ22〜25からトークン取得要求を受信していなかった場合、インタフェースプロセッサ21は、そのファイルに対するトークンを取得する(ステップS408b)。すなわち、トークンを作成して記憶手段に格納する。
他のインタフェースプロセッサ22〜25からトークン取得要求を受信していた場合、インタフェースプロセッサ21は、自身が送信したトークン取得要求と、他から受信したトークン取得要求すべてとの間で、時刻判定を行う(ステップS407b)。この判定は、各トークン取得要求に含まれるタイムスタンプを比較することによって行われる。
ステップS407bにおいて、自身のトークン取得要求が最も早いものであった場合、すなわちタイムスタンプが最も古いものであった場合、インタフェースプロセッサ21はステップS408bに進み、上述のようにトークンを取得する。そうでない場合、インタフェースプロセッサ21はステップS411bに進み、上述のように書込不可通知を送信する。
ステップS408bにおいてトークンを取得した後、インタフェースプロセッサ21は、ユーザ端末10に書き込み可能通知を送信し(ステップS409b)、ユーザ端末10はこの書込可能通知を受信する(ステップS409a)。この後ユーザ端末10は書込動作を実行する(ステップS410a)。すなわち、ユーザ端末10は図7のステップS201aを実行し、これに伴って図7のフローチャートが実行される。
なお、ステップS408bにおいて取得されたトークンは、たとえば図7のステップS208bが完了した時点で解放され、インタフェースプロセッサ21はその記憶手段からトークンを消去する。
以上のように動作する分散ストレージシステム100の処理の流れの例を、以下に説明する。
分散ストレージシステム100が構成され作動するに伴って、インタフェースプロセッサ21〜25およびストレージデバイス31〜39の間には図2に示す論理的な接続状態が形成される。この接続状態は、ユーザ端末10からの指示に関わらず、自動的に、随時、図5に示す処理によって動的に更新される。これによって、ノードのいずれかまたはノード間の通信経路に障害が発生した場合であっても、その障害を迂回するパスが生成でき、耐障害性の高いシステムとなる。
時間の経過に伴って図5の処理が繰り返され、従ってステップS103aおよびS103bにおける相互接続情報の刈り込みが繰り返されると、各ストレージデバイスのノードリストに含まれるノードの数は次第に減少する。すなわち、図2のグラフは次第に辺の数が減少して疎なものとなる。ここで、図5のステップS105aにおいて、各ストレージデバイスのノードリストに含まれるノード情報の数がある閾値(たとえば4)以下になると、ノード情報を追加取得してこれを増加させる。この閾値の設定によって、図2のグラフの平均最短パス長、すなわちインタフェースプロセッサ21〜25からストレージデバイス31〜39にメッセージが送信される際の平均ホップ数を調整することができる。この平均最短パス長は、
[{ln(N)−γ}/ln(<k>)]+1/2
で表される。ここで、Nはノード数、γはオイラー定数(約0.5772)、<k>はノードリストに含まれるノード情報の数の平均値であり、lnは自然対数を表す。
なお、平均最短パス長が測定によって求まる場合、上式をNについて解くことにより、ストレージデバイスの数を逆算して求めることができる。図7のステップS203bでは、書込要求に含まれる応答確率を決定するために、インタフェースプロセッサ21はストレージデバイスの数をあらかじめ記憶しているが、変形例としてこのような逆算によってストレージデバイスの数を求める構成としてもよい。なお、その場合は、図7のステップS203bにおける書込要求および図8のステップS302bにおけるファイル存在確認要求を転送する際に、各ストレージデバイスはインタフェースプロセッサ21にホップ数を通知し、インタフェースプロセッサ21はこのホップ数を全ストレージデバイスについて平均することによって平均最短パス長の実測値を得る。
また、ストレージデバイス31〜39が上述のようにノードリストを要求すると、要求を受けたインタフェースプロセッサは、ノードリストを送信するとともに、送信を要求してきたストレージデバイスのIPアドレスを自身のノードリストに追加する(ステップS106c)。ここで、ストレージデバイス31〜39からのインタフェースプロセッサのIPアドレスの照会に対し、DNSサーバ42は毎回異なるインタフェースプロセッサのIPアドレスを通知するので、ストレージデバイス31〜39は毎回異なるインタフェースプロセッサにノードリストを要求することになる。これによって、ストレージデバイス31〜39それぞれのIPアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれることになる。
ここで、たとえば、分散ストレージシステム100のユーザが、ユーザ端末10を介して、ファイル名「ABCD」を有するファイルを分散ストレージシステム100に格納することを指示したとする。これに応じて分散ストレージシステム100は図9に示す排他制御処理を実行し、たとえばインタフェースプロセッサ21がファイルABCDのトークンを取得する。ここで、インタフェースプロセッサ21〜25のそれぞれが自立的にトークン取得動作を行い、別個にトークンを管理する機構を持たない仕組みのため、一括管理機構を持たずに分散ストレージシステム100が構築できる。
インタフェースプロセッサ21がトークンを取得すると、これに続いて、ユーザ端末10および分散ストレージシステム100は、図7に示す書き込み処理を実行する。ここで、インタフェースプロセッサ21はファイルABCDを分割して100個の情報パケットとし、さらに冗長化して150個のサブファイルとする(ステップS202b)。さらに、インタフェースプロセッサ21は、応答確率として0.18を指定した書込要求を全ストレージデバイスに送信する(ステップS203b)。この書込要求は図2に示すようなグラフに従ってバケツリレー方式で転送される。ストレージデバイスは、それぞれ、指定された0.18の確率で応答を送信する(ステップS205c)。この際、インタフェースプロセッサ21のIPアドレスは書込要求に含まれているため、ストレージデバイスはインタフェースプロセッサ21(および他のインタフェースプロセッサ22〜25)のIPアドレスを事前に知っている必要がない。
インタフェースプロセッサ21は、受信した応答に従ってサブファイルの送信を行い、各ストレージデバイスは記憶手段にサブファイルを格納する(ステップS207c)。
ここで、インタフェースプロセッサ21〜25は、ファイルABCDのサブファイルがどのストレージデバイスに格納されているかという管理を行う必要がないため、一括管理機構を持たずに分散ストレージシステム100を構築することができる。
また、個々のストレージデバイスの故障、電源断、メンテナンス、ネットワーク回線の断線等の要因で、ストレージデバイスの一部が正常に稼動していない場合であっても、消失訂正符号化技術によって、稼動している残りのストレージデバイスから必要数のサブファイルを取得することができる。したがって、元ファイルを正確に復号化して生成することができ、高い信頼性および連続可動性を達成することができる。
また、分散ストレージシステム100のユーザは、所望の時点で、分散ストレージシステム100に格納したファイルABCDの読み込みを、ユーザ端末10を介して、分散ストレージシステム100に指示する。これに応じて、たとえばインタフェースプロセッサ21は、図8に示すようにファイル存在確認を送信し(ステップS302b)、応答があったストレージデバイスからサブファイルを受信する(ステップS307b)。ここで、書き込み処理時と同様に、インタフェースプロセッサ21のIPアドレスはファイル存在確認要求に含まれているため、ストレージデバイスはこれを事前に知っている必要がない。また、インタフェースプロセッサ21は、ファイルABCDのサブファイルがどのストレージデバイスに格納されているかという管理を行う必要がないため、一括管理機構を持たずに分散ストレージシステム100を構築することができる。
インタフェースプロセッサ21は、受信したサブファイルに基づいてファイルABCDを再構築し(ステップS308b)、これをユーザ端末10に送信する。
以上説明されるように、本発明に係る分散ストレージシステム100によれば、インタフェースプロセッサ21〜25およびストレージデバイス31〜39は、それぞれストレージデバイス31〜39のうち少なくとも1つのIPアドレスを含む、ノードリストを格納する。インタフェースプロセッサ21〜29は、このノードリストに応じてストレージデバイス31〜39を制御する。
ここで、ストレージデバイス31〜39は毎回異なるインタフェースプロセッサにノードリストを要求するので、ストレージデバイス31〜39それぞれのIPアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれることになる。よって、インタフェースプロセッサ21〜25のいずれかが稼動していない状態であっても、残りのインタフェースプロセッサを使用して、ファイルの書き込みおよび読み込みを行うことができ、管理工数の増加を最低限に抑えつつ信頼性および連続可動性を向上させることができる。
また、DNSラウンドロビン方式によって複数のインタフェースプロセッサ21〜25に負荷を分散させることができるので、特定のインタフェースプロセッサやその周辺のネットワークの負荷が突出して増大する事態を回避できる。
また、インタフェースプロセッサ21〜25が消失訂正符号化技術を用いて複数のサブファイルを作成し、複数のストレージデバイスが1つずつサブファイルを格納するので、ストレージデバイス31〜39のいずれかが稼動していない状態であっても、残りのストレージデバイスを使用してファイルの読み込みを行うことができ、信頼性および連続可動性をさらに向上させることができる。
また、ストレージデバイス31〜39および新たに追加されるストレージデバイスは、インタフェースプロセッサ21〜25のノードリストを要求して、これに従って自身のノードリストを自動的に更新または作成するので、新たなストレージデバイスの追加に伴う設定変更作業が不要となり、構成変更の工数を低減することができる。とくに、新たに追加されるストレージデバイスにはDNSサーバ42のIPアドレスとインタフェースプロセッサ21〜25が共有する単一のホスト名のみを記憶させておけばよく、インタフェースプロセッサ21〜25それぞれの異なるIPアドレスを記憶させる必要がない。
また、本発明に係る分散ストレージシステム100によれば、従来の分散ストレージシステムと比較して、以下のような効果を得ることができる。
サブファイルは、ユーザ端末からは独立した分散ストレージシステム100の内部に格納されるので、ユーザの悪意または誤操作による影響を抑えることができる。また、格納できるファイルの容量を大きくするにはストレージデバイスを追加すればよく、多数のユーザ端末を準備する必要がない。また、ストレージデバイス間で管理情報のような情報の伝播が収束するのを待つ必要がない。さらに、インタフェースプロセッサ21〜25は、ファイル存在確認要求(図8のステップS302b)によってどのストレージデバイスが該当するサブファイルを格納しているかを知ることができるので、ファイル(およびサブファイル)とストレージデバイスとの対応関係を管理する必要がない。
また、ユーザ端末10およびインターネット51は分散ストレージシステム100の外部にあるので、分散ストレージシステム100内部での情報の送受信によるネットワーク負荷の増大の影響を受けない。さらに、ユーザ端末10はストレージデバイス31〜39とは異なるハードウエアで構成されるので、ファイルやサブファイルの送受信がユーザ端末10のハードウエアリソースを奪ってしまうことがない。
また、インタフェースプロセッサ21〜25がトークンによる排他制御処理を行うので、同一のファイルについて二者以上が同時に書き込み処理を要求した場合でも、書き込まれるファイルの整合性を保つことができる。
上述の実施の形態1では、LAN52にはDNSサーバ42が接続され、ストレージデバイス31〜39はDNSサーバ42への照会によってインタフェースプロセッサ21〜29のIPアドレスを取得している。変形例として、DNSサーバ42を設けず、各ストレージデバイス31〜39が全インタフェースプロセッサ21〜25のIPアドレスを記憶していてもよい。また、インタフェースプロセッサ21〜25のIPアドレスの範囲、たとえば「192.168.10.21〜192.168.10.25」を表す情報を記憶していてもよい。この場合、各ストレージデバイス31〜39は、図5のステップS105aにおけるインタフェースプロセッサへの要求の際、インタフェースプロセッサ21〜25を巡回的に選択してもよい。このような構成であっても、ストレージデバイス31〜39それぞれのIPアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれるので、実施の形態1と同様に信頼性および連続可動性を向上させることができる。
本発明に係る分散ストレージシステムを含む構成を示す図である。 図1のインタフェースプロセッサおよびストレージデバイスの論理的な接続状態を説明するグラフである。 図2のグラフを表すノードリストの例である。 インタフェースプロセッサがデータを消失訂正符号化する手順を示す図である。 ストレージデバイスおよびインタフェースプロセッサが、それぞれのノードリストを更新する際の処理の流れを示すフローチャートである。 図5のステップS103aおよびS103bにおける更新処理を説明する図である。 図1の分散ストレージシステムが、ユーザ端末からファイルを受信して格納する際の動作を含む、処理の流れを示すフローチャートである。 図1の分散ストレージシステムが、ユーザ端末からファイル読込要求を受信してファイルを送信する際の動作を含む、処理の流れを示すフローチャートである。 図1の分散ストレージシステムが、ユーザ端末からファイルを受信して格納する際に行う、排他制御処理の流れを示すフローチャートである。 従来の一括管理型ネットワークファイルシステムの概略図である。 従来の分散管理型ネットワークファイルシステムの概略図である。
符号の説明
21〜25 インタフェースプロセッサ、31〜39 ストレージデバイス、42 DNSサーバ、52 LAN(通信ネットワーク)、100 分散ストレージシステム。

Claims (7)

  1. データを格納する、複数のストレージデバイスと、
    前記ストレージデバイスの制御を行う、複数のインタフェースプロセッサと
    を含み、
    前記インタフェースプロセッサおよび前記ストレージデバイスは、通信ネットワークを介して、IPプロトコルに従って互いに通信可能であり、
    前記インタフェースプロセッサは、それぞれ、前記通信ネットワークにおける前記ストレージデバイスの少なくとも1つのIPアドレスを含む、ノードリストを格納し、
    前記ストレージデバイスは、複数の異なる前記インタフェースプロセッサに対して、前記ノードリストを要求し、
    前記要求されたインタフェースプロセッサは、前記要求したストレージデバイスに、前記ノードリストを送信するとともに、前記要求したストレージデバイスの前記IPアドレスを前記ノードリストに追加する
    分散ストレージシステム。
  2. 前記分散ストレージシステムは、さらに、前記通信ネットワークに接続されたDNSサーバを含み、
    前記DNSサーバは、所定のホスト名と、前記複数のインタフェースプロセッサのそれぞれのIPアドレスとを関連付けて記憶するとともに、前記所定のホスト名の照会に対し、前記複数のインタフェースプロセッサの前記IPアドレスの1つを巡回的に通知し、
    前記ストレージデバイスは、前記DNSサーバに対して前記所定のホスト名の照会を行い、前記通知されたインタフェースプロセッサの前記IPアドレスに基づいて、前記ノードリストの前記要求を行う
    請求項1に記載の分散ストレージシステム。
  3. 前記インタフェースプロセッサは、前記ノードリストに含まれる前記ストレージデバイスの前記IPアドレスと、時刻を表す情報とを関連付けて格納するとともに、
    所定の条件に応じて、最も古い時刻を表す情報が関連付けられた前記ストレージデバイスの前記IPアドレスを、前記ノードリストから削除する
    請求項1または2に記載の分散ストレージシステム。
  4. 前記複数のストレージデバイスのそれぞれは、他の前記ストレージデバイスの少なくとも1つのIPアドレスを含む、ノードリストを格納し、
    前記インタフェースプロセッサおよび前記ストレージデバイスは、それぞれ自身のノードリストに含まれる前記ストレージデバイスに対して、前記ストレージデバイスの前記制御に関する情報の送信を行う
    請求項1〜3のいずれか一項に記載の分散ストレージシステム。
  5. 1つの前記ストレージデバイスと、前記1つのストレージデバイスのノードリストに含まれる別の前記ストレージデバイスとにおいて、
    前記1つのストレージデバイスは、自身のノードリストから前記別のストレージデバイスを削除し、
    前記別のストレージデバイスは、自身のノードリストに前記1つのストレージデバイスを追加し、
    前記1つのストレージデバイスおよび前記別のストレージデバイスは、それぞれのノードリストに含まれる、前記1つのストレージデバイスおよび前記別のストレージデバイスを除くすべてのストレージデバイスを交換する
    請求項4に記載の分散ストレージシステム。
  6. 前記ストレージデバイスは、前記インタフェースプロセッサから前記送信されたノードリストに応じて、自身のノードリストを更新する
    請求項1〜5のいずれか一項に記載の分散ストレージシステム。
  7. 前記インタフェースプロセッサは、外部からの前記データの書込要求を受信すると、他の前記インタフェースプロセッサとの間で、そのデータの書込許可に関する情報の送受信を行い、
    前記書込要求を受信した前記インタフェースプロセッサは、前記書込許可に関する前記情報の前記送受信の結果に応じて、前記ストレージデバイスに対して前記データの格納を指示し、あるいは指示しない
    請求項1〜6のいずれか一項に記載の分散ストレージシステム。
JP2007092342A 2007-03-30 2007-03-30 分散ストレージシステム Expired - Fee Related JP4696089B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007092342A JP4696089B2 (ja) 2007-03-30 2007-03-30 分散ストレージシステム
CN2007800523750A CN101663651B (zh) 2007-03-30 2007-06-21 分布式存储系统
PCT/JP2007/062508 WO2008129686A1 (ja) 2007-03-30 2007-06-21 分散ストレージシステム
KR1020097018501A KR101303989B1 (ko) 2007-03-30 2007-06-21 분산 스토리지 시스템
US12/531,625 US20100115078A1 (en) 2007-03-30 2007-07-21 Distributed storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007092342A JP4696089B2 (ja) 2007-03-30 2007-03-30 分散ストレージシステム

Publications (2)

Publication Number Publication Date
JP2008250767A true JP2008250767A (ja) 2008-10-16
JP4696089B2 JP4696089B2 (ja) 2011-06-08

Family

ID=39875231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007092342A Expired - Fee Related JP4696089B2 (ja) 2007-03-30 2007-03-30 分散ストレージシステム

Country Status (5)

Country Link
US (1) US20100115078A1 (ja)
JP (1) JP4696089B2 (ja)
KR (1) KR101303989B1 (ja)
CN (1) CN101663651B (ja)
WO (1) WO2008129686A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012506582A (ja) * 2008-10-24 2012-03-15 イーエルテー イノベイションズ アーベー 分散データストレージ
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US8850019B2 (en) 2010-04-23 2014-09-30 Ilt Innovations Ab Distributed data storage
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051205B2 (en) * 2008-10-13 2011-11-01 Applied Micro Circuits Corporation Peer-to-peer distributed storage
CN102013991B (zh) * 2009-09-08 2012-10-17 华为技术有限公司 自动扩容的方法、管理设备及系统
FR2961924A1 (fr) * 2010-06-29 2011-12-30 France Telecom Gestion du lieu de stockage de donnees dans un systeme de stockage distribue
WO2012089701A1 (en) * 2010-12-27 2012-07-05 Amplidata Nv A distributed object storage system comprising performance optimizations
CN103207867B (zh) * 2012-01-16 2019-04-26 联想(北京)有限公司 处理数据块的方法、发起恢复操作的方法和节点
WO2013107029A1 (zh) * 2012-01-19 2013-07-25 华为技术有限公司 一种基于块存储的数据处理方法、装置及系统
US20140122546A1 (en) * 2012-10-30 2014-05-01 Guangdeng D. Liao Tuning for distributed data storage and processing systems
EP2918038B1 (en) 2012-11-12 2017-10-25 Secured2 Corporation Systems and methods of transmitting data
CN103856511B (zh) * 2012-11-30 2018-07-17 腾讯科技(深圳)有限公司 数据包上传方法、客户端、节点、信息服务器及系统
US9727268B2 (en) 2013-01-08 2017-08-08 Lyve Minds, Inc. Management of storage in a storage network
US9201837B2 (en) 2013-03-13 2015-12-01 Futurewei Technologies, Inc. Disaggregated server architecture for data centers
JP6135226B2 (ja) 2013-03-21 2017-05-31 日本電気株式会社 情報処理装置、情報処理方法、ストレージシステム及びコンピュータプログラム
US9678678B2 (en) 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
JP6641813B2 (ja) * 2015-09-11 2020-02-05 富士通株式会社 制御装置、情報処理システム、及び制御プログラム
CN107181637B (zh) 2016-03-11 2021-01-29 华为技术有限公司 一种心跳信息发送方法、装置及心跳发送节点
CN107330061B (zh) * 2017-06-29 2021-02-02 苏州浪潮智能科技有限公司 一种基于分布式存储的文件删除方法及装置
CN107329707A (zh) * 2017-07-03 2017-11-07 郑州云海信息技术有限公司 统一存储的多存储设备管理方法、系统及gui管理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148710A (ja) * 1998-11-05 2000-05-30 Victor Co Of Japan Ltd 動画像サーバシステム
JP2002500393A (ja) * 1997-12-24 2002-01-08 アヴィッド・テクノロジー・インコーポレーテッド コンピュータ・システムおよび多数の記憶装置および多数のアプリケーション間でスケーラブルにかつ信頼性高く多数の高帯域データ・ストリームを転送するプロセス
JP2003067279A (ja) * 2001-08-28 2003-03-07 Nec Corp コンテンツ動的ミラーリングシステム、
JP2003108537A (ja) * 2001-09-13 2003-04-11 Internatl Business Mach Corp <Ibm> ネットワーク上のサーバに対するサービス要求の負荷分散の方法およびシステム
WO2004066277A2 (en) * 2003-01-20 2004-08-05 Equallogic, Inc. System and method for distributed block level storage
WO2005010767A1 (ja) * 2003-07-24 2005-02-03 Fujitsu Limited データ格納システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839750B1 (en) * 2001-03-03 2005-01-04 Emc Corporation Single management point for a storage system or storage area network
JP2002297447A (ja) * 2001-03-29 2002-10-11 Mitsubishi Heavy Ind Ltd コンテンツセキュリティ方式
US7194004B1 (en) * 2002-01-28 2007-03-20 3Com Corporation Method for managing network access
US7567566B2 (en) * 2003-08-29 2009-07-28 Intel Corporation Method and apparatus to perform aging
GB0322494D0 (en) * 2003-09-25 2003-10-29 British Telecomm Computer networks
JP2006119941A (ja) * 2004-10-22 2006-05-11 Hitachi Ltd 動画像蓄積方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002500393A (ja) * 1997-12-24 2002-01-08 アヴィッド・テクノロジー・インコーポレーテッド コンピュータ・システムおよび多数の記憶装置および多数のアプリケーション間でスケーラブルにかつ信頼性高く多数の高帯域データ・ストリームを転送するプロセス
JP2000148710A (ja) * 1998-11-05 2000-05-30 Victor Co Of Japan Ltd 動画像サーバシステム
JP2003067279A (ja) * 2001-08-28 2003-03-07 Nec Corp コンテンツ動的ミラーリングシステム、
JP2003108537A (ja) * 2001-09-13 2003-04-11 Internatl Business Mach Corp <Ibm> ネットワーク上のサーバに対するサービス要求の負荷分散の方法およびシステム
WO2004066277A2 (en) * 2003-01-20 2004-08-05 Equallogic, Inc. System and method for distributed block level storage
WO2005010767A1 (ja) * 2003-07-24 2005-02-03 Fujitsu Limited データ格納システム

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026559B2 (en) 2008-10-24 2015-05-05 Compuverde Ab Priority replication
US11907256B2 (en) 2008-10-24 2024-02-20 Pure Storage, Inc. Query-based selection of storage nodes
US11468088B2 (en) 2008-10-24 2022-10-11 Pure Storage, Inc. Selection of storage nodes for storage of data
US8688630B2 (en) 2008-10-24 2014-04-01 Compuverde Ab Distributed data storage
US10650022B2 (en) 2008-10-24 2020-05-12 Compuverde Ab Distributed data storage
US9495432B2 (en) 2008-10-24 2016-11-15 Compuverde Ab Distributed data storage
JP2012506582A (ja) * 2008-10-24 2012-03-15 イーエルテー イノベイションズ アーベー 分散データストレージ
US8850019B2 (en) 2010-04-23 2014-09-30 Ilt Innovations Ab Distributed data storage
US9503524B2 (en) 2010-04-23 2016-11-22 Compuverde Ab Distributed data storage
US9948716B2 (en) 2010-04-23 2018-04-17 Compuverde Ab Distributed data storage
US10430443B2 (en) 2011-09-02 2019-10-01 Compuverde Ab Method for data maintenance
US10579615B2 (en) 2011-09-02 2020-03-03 Compuverde Ab Method for data retrieval from a distributed data storage system
US9305012B2 (en) 2011-09-02 2016-04-05 Compuverde Ab Method for data maintenance
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US9965542B2 (en) 2011-09-02 2018-05-08 Compuverde Ab Method for data maintenance
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8843710B2 (en) 2011-09-02 2014-09-23 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US10769177B1 (en) 2011-09-02 2020-09-08 Pure Storage, Inc. Virtual file structure for data storage system
US10909110B1 (en) 2011-09-02 2021-02-02 Pure Storage, Inc. Data retrieval from a distributed data storage system
US11372897B1 (en) 2011-09-02 2022-06-28 Pure Storage, Inc. Writing of data to a storage system that implements a virtual file structure on an unstructured storage layer
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance

Also Published As

Publication number Publication date
CN101663651A (zh) 2010-03-03
CN101663651B (zh) 2012-06-27
KR101303989B1 (ko) 2013-09-04
US20100115078A1 (en) 2010-05-06
WO2008129686A1 (ja) 2008-10-30
JP4696089B2 (ja) 2011-06-08
KR20100014909A (ko) 2010-02-11

Similar Documents

Publication Publication Date Title
JP4696089B2 (ja) 分散ストレージシステム
US9971823B2 (en) Dynamic replica failure detection and healing
KR101905198B1 (ko) 분산 데이터 스토리지
US8463867B2 (en) Distributed storage network
US8661055B2 (en) File server system and storage control method
JP2006338666A (ja) 分散カーネルオペレーティングシステム
JP2006340354A (ja) 分散カーネルオペレーティングシステム
CA2923896C (en) Email webclient notification queuing
JPWO2004063928A1 (ja) データベース負荷軽減システムおよび負荷軽減プログラム
US7818390B2 (en) Method for transferring data between terminal apparatuses in a transparent computation system
US10747739B1 (en) Implicit checkpoint for generating a secondary index of a table
US9172744B2 (en) Scalable storage with programmable networks
US10382553B2 (en) Zone storage—resilient and efficient storage transactions
JP2008507016A (ja) ダウンロード可能なコンテンツを複数のエンタープライズ記憶システム(ess)セルに格納するための方法、システム及びプログラム製品
US7996359B2 (en) Managing multi-node multi-version systems
CN115065694B (zh) 一种云存储数据中转上传系统、方法、设备及介质
CN115933985A (zh) 一种分布式存储QoS控制方法及系统
US8997124B2 (en) Method for updating data in a distributed data storage system
EP3479550A1 (en) Constraint based controlled seeding
CN114731297A (zh) 用于计算设备对等方匹配的消息限制的自组织网络组
WO2024082773A1 (zh) 一种迁移文件系统的方法和相关设备
JP5754778B2 (ja) 記憶装置共用システム、管理装置、処理装置、記憶装置共用方法、管理方法、アクセス方法およびプログラム
CN116760850B (zh) 一种数据处理方法、装置、设备、介质及系统
WO2024104289A1 (zh) 一种消息处理方法、装置、设备及存储介质
Campos et al. Improving the scalability of DPWS-based networked infrastructures

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110215

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110228

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4696089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees