JPWO2011027775A1 - 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード - Google Patents

分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード Download PDF

Info

Publication number
JPWO2011027775A1
JPWO2011027775A1 JP2011529914A JP2011529914A JPWO2011027775A1 JP WO2011027775 A1 JPWO2011027775 A1 JP WO2011027775A1 JP 2011529914 A JP2011529914 A JP 2011529914A JP 2011529914 A JP2011529914 A JP 2011529914A JP WO2011027775 A1 JPWO2011027775 A1 JP WO2011027775A1
Authority
JP
Japan
Prior art keywords
replication
storage
group
node
data
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
JP2011529914A
Other languages
English (en)
Other versions
JP5556816B2 (ja
Inventor
真樹 菅
真樹 菅
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2011529914A priority Critical patent/JP5556816B2/ja
Publication of JPWO2011027775A1 publication Critical patent/JPWO2011027775A1/ja
Application granted granted Critical
Publication of JP5556816B2 publication Critical patent/JP5556816B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0625Power saving in 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/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

分散ストレージシステムを構成する複数のストレージ装置を同時に停止できる、分散ストレージシステム、方法、プログラムとストレージノードの提供。システムの動作状態を指定する手段(3)と、データの複製作成手段(106、107、105)とを備え、あらかじめ分散ストレージシステムへの参加ノードをグループに分けておき、データ複製作成手段はハッシュリング上の参加ノード上に複製を作成するよう動作する。このような構成を採用し、システムの動作状態を定義する手段がグループごとにデータの複製作成数を決定し、データ複製手段はハッシュリングを辿り、グループごとの複製作成数に達成するまで複製を作成する。(図4)

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2009−202061号(2009年9月1日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラム及びストレージノードに関する。
<コンシステント・ハッシュ法>
近年、分散ストレージシステム、特にハッシュ関数を用いてデータの分散配置を行うことにより、スケーラブルな性能を持ったストレージシステムを実現する試みが増えている。ハッシュ関数を用いたデータの分散配置方法として、例えばコンシステント・ハッシュ法(非特許文献1、非特許文献2)がある。
コンシステント・ハッシュ法は、データを複数のストレージ装置(例えばIAサーバ(Intel社のマイクロプロセッサを搭載したサーバ)のようなCPUとメモリからなるコンピュータ装置が当てはまる)に分散して配置する。コンシステント・ハッシュ法を応用したシステムとしては、分散ハッシュテーブル等がある。
このような分散配置手法としてコンシステント・ハッシュ法を用いる理由として以下が挙げられる。
ストレージ装置を追加、削除しても、データの分散記録状態を維持するために、データ全体を分散配置し直す必要がないためである。
また複数のストレージ装置の一つに障害が発生しても、復旧が柔軟に行えるためである。
非特許文献3には、コンシステント・ハッシュ法により、データの分散配置を行っている分散ストレージシステムの一例が開示されている。図1は、非特許文献3のFigure2をそのまま引用して掲載したものである。
非特許文献3に開示される分散ストレージシステムは、概略次のように動作する。非特許文献3によると、キー(Key)がKであるデータ(Keyをハッシュ値で求めるとすると、データのハッシュ値がKであるデータ)の格納するノード(Node)は、コンシステント・ハッシュ法により、ノードBと決定される。これは、ハッシュリングをKの位置から時計回りに回って最初に存在するノードがBであるためである。この時、分散ストレージシステムを構成するストレージ装置は故障する可能性があることから、データを別のストレージ装置にも保存しておくことが望ましい。非特許文献3の分散ストレージシステムでは、キー(Key)がKのデータを3つのストレージ装置に保存する事としており、ノードBを更に時計回りに辿りノードC、ノードDにもデータを保存する。キーKを含めてAとBの範囲のキーは、ノードB、C、Dに保存される。
また、このようなハッシュ関数を用いた分散ストレージシステムの構築手法は、非特許文献3に記載されるように、マスタデータを格納するために利用されるだけでなく、マスタデータのキャッシュ(一時的な、消えても良いデータ)を格納するための仕組みとしても利用される。この場合、マスタデータを別のストレージシステム(例えばデータベースシステム等が挙げられる)に記録しておき、そのデータを読み出すクライアントがマスタデータのストレージシステムにアクセスするのではなく、キャッシュ用の分散ストレージシステムにアクセスする、といったように動作する。
David Karger, Eric Lehman, Tom Leighton, Matthew Levine, Daniel Lewin, Rina Panigrahy, "Consistent hashing and random trees: Distributed caching protocols for relieving hot spots on the World Wide Web", In ACM Symposium on Theory of Computing, 1997 Tom White’s Blog: Consistent Hashing, http://weblogs.java.net/blog/tomwhite/archive/2007/11/consistent_hash.html, 2009年2月27日アクセス Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels, "Dynamo: Amazon’s Highly Available Key−Value Store", in the Proceedings of the 21st ACM Symposium on Operating Systems Principles, Stevenson, WA, October 2007.
なお、上記非特許文献の全開示内容はその引用をもって本書に繰込み記載する。
以下に本発明による関連技術の分析を与える。
<分散ストレージシステムに求められる機能>
近年、例えばデータセンター等で運用されるITシステムの電力消費が問題となっている。電力代や地球環境への影響等を考慮して電力消費をコントロール出来るITシステムが求められている。分散ストレージシステムにおいて、電力消費をコントロールするためには、システムが必要とする性能や機能に応じて、分散ストレージシステムを構成するストレージ装置を柔軟に停止させたり、動作させたりことが必要となる。
<コンシステント・ハッシュ法を用いた分散ストレージシステムの問題点>
しかしながら、分散ストレージシステムにおいては、多数のストレージ装置をほぼ同時に、そして即時(一斉)に停止させることが出来ない、という問題がある。
その理由は、分散ストレージシステムにおいて、例えばシステムを構成する半分のストレージ装置等、多数のストレージ装置(「ストレージノード」ともいう)を即座に停止させると、アクセスできなくなるデータが存在するためである。また、多数のストレージ装置を停止させた後に、データがアクセス出来る状態にあったとしても、システムに要求される可用性・性能を満たさない可能性があるためである。
すなわち、コンシステント・ハッシュ法を用いた分散ストレージシステムにおいては、ある特定のストレージ装置を停止させると、データの冗長度や負荷分散を維持するためにデータの移動や再配置が行われる。
例えば図1に示したようなルールでデータの複製を作成するとする。このとき、ノードBに障害が発生し、ノードBをリングから取り除いた場合、キー(Key)=Kのデータは、ノードCおよびノードDにのみ記録されていることとなる。
この場合、2つのノードCとDにだけデータが記録されていることになるため、データの冗長度は、最初の状態(ノードBに障害が発生する前のリングに接続され、データの複製を3つのノードB、C、Dで保持するという状態)よりも低くなる。そのため、ノードBの取り外しにより、可用性やリードパフォーマンスが劣化する可能性がある。
そこで、データの複製を3つ保持するという状態を維持するために、ノードDからノードEに対してキー(Key)=Kのデータを複製するように、システムが動作する。
このように、ノードBをリングから取り除いた場合、ノードDからノードEにキー(Key)=Kのデータを複製することにより、可用性やリードパフォーマンスの劣化等は回避され、特に大きな問題は生じない。
しかしながら、上記したように、システムの省電力化のためには、分散ストレージシステムの動作ノードの半数を同時に停止させる動作が必要となる場合がある。例えば図1において、分散ストレージシステムの動作ノードを半数にする際に、ノードB、C、Dが停止されたとする。
すると、キー(Key)=Kのデータを冗長保存しているすべてのノードが停止されてしまうことになり、その結果、キー(Key)=Kのデータに対してアクセスできなくなる。
クライアントが、キー(Key)=Kのデータにアクセスする際に、ノードB、C、Dのいずれかを再開させないと、当該データへのアクセスはできない。ノードの再開により電力消費が上がり、省電力化の実現には、問題となる。
また、データを冗長保存しているノードが全て停止されなかったとしても、動作ノードの半分程度や9割を同時に停止させたりすると、データの冗長度を維持するために、稼動している残りのノード間で、データの複製が大量に発生することになる。このため、データアクセスの可用性や性能が劣化することになる。
したがって、本発明の目的は、分散ストレージシステムを構成する複数のストレージ装置を同時に停止できる、分散ストレージシステム、方法、プログラムとストレージノードを提供することにある。
また、本発明は上記目的を達成するとともに、複数のストレージ装置を停止させても、データに対する所定の可用性・性能を維持し続ける分散ストレージシステム、方法、プログラムとストレージノードを提供することもその目的の1つとしている。
本発明によれば、システムの動作状態を指定する手段と、データ複製作成手段とを備え、前記システムの動作状態を指定する手段は、分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、前記データ複製作成手段は、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する分散ストレージシステムが提供される。
本発明によれば、分散ストレージシステムへ参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、
データの書き込み要求を受けたストレージノードは、分散ストレージシステムへ参加する複数のストレージノードに対してグループごとに規定されるデータ複製数分、データの複製を作成する、分散ストレージ方法が提供される。
本発明によれば、システムの動作状態を指定する処理と、データ複製作成処理とをストレージノードを構成するコンピュータに実行させるプログラムであって、前記システムの動作状態を指定する処理は、分散ストレージシステムへ参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、前記データ複製作成処理は、分散ストレージシステムへ参加する複数のストレージノードに対してグループごとに規定されるデータ複製数分、データの複製を作成するプログラムが提供される。
本発明によれば、分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する分散ストレージシステムを構成するストレージノードであって、前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで複製先を探索し、複製先ストレージノードのリストを作成するデータ複製作成手段を備えたストレージノードが提供される。
本発明によれば、分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する分散ストレージシステムを構成するストレージノードであって、
前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、ハッシュリング上、所属するグループに対応した隣接ストレージノードに複製命令を発行し、
複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成したか否かを確認し、前記複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成していなければ、更なる前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、達成していれば複製処理を終了するストレージノードが提供される。
本発明によれば、分散ストレージシステムを構成する複数のストレージ装置を同時に停止できる。また本発明によれば、複数のストレージ装置を停止させても、データに対する所定の可用性・性能を維持し続けることができる。
非特許文献3のFigure.2より引用した図で、コンシステント・ハッシング法による分散ストレージシステムにおけるデータ複製方法を示す図である。 本発明の一実施形態の構成を示す図である。 本発明の一実施形態の構成を示す図である。 本発明の一実施形態におけるクライアント、ストレージノードの構成の一例を示す図である。 本発明の一実施形態におけるPUT処理の全体動作を説明する流れ図である。 本発明の一実施形態における複製処理動作を説明する流れ図である。 本発明の一実施形態における複製先算出手順を説明する流れ図である。
<発明の基本原理>
本発明の分散ストレージシステムは、システムの動作状態を定義する手段と、データの複製作成手段を備えている。分散ストレージシステムへ参加する複数のストレージノード(ストレージ装置)を予めグループに分けておき、データ複製作成手段は、分散ストレージシステムのストレージノードに、それぞれのグループに対応させて、データの複製を作成する。
本発明において、システムの動作状態を定義する手段は、グループに対応してデータの複製数を設定する。データ複製作成手段は、複数のストレージノードが配置されるハッシュリングを辿り、グループごとの複製数に達成するまでデータの複製を作成する。
このように、本発明によれば、分散ストレージシステムに参加する複数のストレージノードを、システム動作状態に対応したグループに分け、グループ毎に規定のデータ複製数を満たすようにデータを複製して保持する構成としたことにより、分散ストレージシステムにおいて、複数のストレージノードを一度に停止させても、データに対する所定の可用性・性能を維持し続けることを可能としている。
そして、本発明によれば、分散ストレージシステムにおいて複数のストレージノードを一斉に停止することができることから、大規模分散システムの運用時において、負荷や用件に応じて、稼動ストレージノードの数を現在の稼動数等から、例えば半分に減らしたりするといった切替制御が可能となる。これにより、省電力化の分散ストレージシステムを実現することができる。しかも、分散ストレージシステムにおいて、省電力を優先して動作するストレージノード数を減らした場合にも、データの冗長度(複製数)を維持することができることから、予め定められた可用性やデータの読み出し性能を確保することができる。
本発明において、データの冗長度(複製数)を維持することができるのは、システムの状態に対応したグループ毎にデータの複製数が指定され、ハッシュリング上で、複製先を決定しているためである。データ書き込み時、分散ストレージシステムを構成するストレージノードの論理的に配置されるハッシュリング上を、例えば時計回りに、隣接ノードを次々に辿り、該隣接ノードがどのグループであるか識別し、識別されたグループに対して予め指定された複製数に達していない場合、当該ノードを識別されたグループに対応した複製先として決定し、ハッシュリング上のストレージノードが所属するグループの全てに対して、予め指定された複製数の複製先が検出された場合、各グループに対応して決定された複製先に対して、当該データの複製を作成する。
本発明においても、コンシステント・ハッシング法の基本的な効果である、ランダムな負荷分散、ノード障害時におけるノード除去等において、データの再配置が必要無く、少ないデータ複製量でノードの追加・除去が可能という効果を保持し続けることが可能である。次に、本発明の実施形態について図面を参照して詳細に説明する。
<実施形態>
図2を参照すると、本発明の第1の実施の形態は、任意の数のストレージノード1と任意の数のクライアント2とを含む。ストレージノード1とクライアント2はネットワーク装置で接続されている。ストレージノード1は、分散ストレージシステムにおいて、データの格納先となるノード(計算機)であり、クライアント2は分散ストレージシステムに対してデータアクセスを行うノード(計算機)である。ネットワークは、LAN(Local Area Network)、WAN(Wide Area Network)、パケット網あるいは回線網、専用線、無線・有線等、任意の通信ネットワーク装置であってよい。
ストレージノード1はプロセッサ等の演算装置と、半導体メモリや磁気記憶装置等の記憶装置、ネットワーク接続機器等を備えた計算機(サーバ)である。また、クライアント2も同様に、プロセッサ等の演算装置とネットワーク接続機器を備えた計算機(サーバ)である。
本実施の形態における分散ストレージシステムは、図3に示すような、リング構造を論理的に保持する(物理的にリング構造である必要はない)。ストレージノード10〜19は、分散ストレージシステムを構成するノードである。
クライアント2は、データにアクセスする際に、コンシステント・ハッシュ法により算出されたストレージノードに対してデータアクセスを行う。例えば、ハッシュ空間上で、ストレージノード19とストレージノード10の間のデータ(オブジェクト)に対しては、ストレージノード10(ハッシュリング上で時計回りに最も近いストレージノード)に対してアクセス(読み出しおよび書き込み)するという動作を行う。
<クライアントとストレージノードの構成>
図4は、本実施の形態におけるクライアントとストレージノードの構成を示す図である。図4には、クライアント2と、ストレージノード10〜11、動作状態指定手段3を備えている。なお、図4では、簡単のため1つのクライアントと2つのストレージノードが示されているが、これらの個数は任意である。
ストレージノード10〜11は、同一構成とされる。ストレージノード1は、アクセス要求受信手段101と、アクセス要求処理手段102と、データアクセス手段103と、データ記憶部104と、複製命令受信手段105と、複製命令発行手段106と、アクセスノード算出手段107と、ルーティング情報記憶部108と、ノード環境情報記憶部109とを含む。これらの手段はそれぞれ概略次のように動作する。
アクセス要求受信手段101は、クライアント2からのアクセス要求を受け取り、受け取ったアクセス要求をアクセス要求処理手段102に渡す。
アクセス要求処理手段102は、アクセス要求を解釈し、データアクセス手段103に対して渡す。また、アクセス要求処理手段102は、アクセス要求を解釈した結果、複製を作成する必要がある場合には、複製命令発行手段106に対して複製処理命令の発行を依頼する。
データアクセス手段103は、データ記憶部104に対してデータの読み出しおよび書き込みの処理を行う。
データアクセス手段103は、クライアント2からのアクセス要求をアクセス要求受信手段101およびアクセス要求処理手段102を介して受け取り、アクセス要求に応じた処理を行い、クライアント2に対して応答を行う。
またデータアクセス手段103は、他のストレージノードの複製命令発行手段106からの複製命令を複製命令受信手段105で受け取った場合、データの複製を、データ記憶部104に作成する。
データ記憶部104は、分散ストレージシステムのデータを記録する記憶装置である。データ記憶部104は、半導体メモリやHDD(ハードディスクドライブ)等の磁気記憶装置によって実現される。
複製命令受信手段105は、他のストレージノードの複製命令発行手段106からの複製命令を受信し、データアクセス手段103に対して処理を依頼する。
複製命令発行手段106は、アクセス要求処理手段102からのアクセス要求を受け取り、複製先のストレージノードに対して複製命令を発行し、必要な複製データを転送する。複製先のストレージノードの情報はアクセスノード算出手段107に依頼して取得する。
アクセスノード算出手段107は、複製先のストレージノードを求める。複製先のストレージノードの算出は、概略次のように行う。
(A)アクセスノード算出手段107は、複製先のルーティング情報記憶部108に記憶されている情報とハッシュ関数を用いて、ハッシュリング上における隣接ノードを求める。
(B)次に、アクセスノード算出手段107は、ノード環境情報記憶部109に記憶されている情報を用いて隣接ノードが複製先であるか否かを判定する。
(C)アクセスノード算出手段107は、さらに隣のストレージノードを算出し、算出した更に隣のストレージノードが複製先であるか否かを判定する、
という処理を繰り返す。
アクセスノード算出手段107は、ノード環境情報記憶部109に記録されているデータの複製数の規定値に達するまで、処理(A)、(B)、(C)を繰り返すことにより、複製先ノードを決定する。この処理手順は、図7を参照して後述される。
ルーティング情報記憶部108には、データ配置のルーティングに必要な情報を記憶する。具体的には、ストレージノードの名称およびアクセスするのに必要十分な情報(例えばIPアドレスとポート番号)が記憶保持される。また、ルーティング情報記憶部108には、ハッシュリングを構成するためのハッシュ関数の種類、アルゴリズム、プログラム等も記憶保持される。なお、アクセスノード算出手段107のプログラムに、データ配置のルーティングに必要な情報を組み込む場合、ルーティング情報記憶部108にはこれらの情報を記憶していなくてもよい。
ノード環境情報記憶部109には、ストレージノード毎の所属するグループの情報や、グループ毎に定められた冗長度(複製数:number-of-Replicas)が記録保持される。ストレージノード毎の所属するグループの情報は、ルーティング情報記憶部108にともに記録するようにしてもよい。例えば、ストレージノードの名称で所属するグループが判明するようにしてもよい。
クライアント2は、アクセスノード算出手段21と、ルーティング情報記憶部22と、アクセス手段23とを含む。
アクセスノード算出手段21は、クライアント2が任意のデータに対するアクセスを行う際に、そのデータにおけるアクセス先のストレージノードを算出する手段である。おおむね、ストレージノードにおけるアクセスノード算出手段107と同じ機能を持ち、ルーティング情報記憶部22に記憶される情報とハッシュ関数を用いて、アクセス先のストレージノードを算出する。
ルーティング情報記憶部22は、データ配置のルーティングに必要な情報を記憶する。具体的には、ストレージノードの名称およびアクセスするのに十分な情報(例えばIPアドレスとポート番号)が記憶される。おおむねストレージノードにおけるルーティング情報記憶部108と同等の機能を持つ。
アクセス手段23は、クライアント2において分散ストレージシステムに対するデータのアクセスを行う。アクセス手段23は、アクセスノード算出手段21によって算出されたストレージノードに対してアクセス要求を発行し、当該ストレージノードからアクセス要求に対するアクセス結果を受け取る。
動作状態指定手段3は、システム全体の動作状態の指定を行う。図4に示す例では、説明のため、動作状態指定手段3は、クライアント2およびストレージノード10〜19とは別の要素として示されているが、物理的には、任意のクライアント2やストレージノード10〜19上で動作するソフトウェア(コンピュータ・プログラム)として実現してもよい。
<システムの動作状態>
分散ストレージシステムにおけるシステム全体の動作状態として、下記の表1は、システム全体の動作状態情報の例を示す。
Figure 2011027775
この例において、分散ストレージシステムは、1000個のストレージノードから構成される。そして、状態Aは1000ノード全てを用いて分散ストレージシステムを動作させ(最大利用)、状態Bは1000個のノードのうちの半分の500個のノードを動作させ(標準利用)、状態Cは1000個のノードのうちの100個のノードを動作させる(節電利用)。
また、状態Aでは、データは6つのノードに複製され、状態Bではデータは4つのノードに複製され、状態Cではデータは2つのノードに複製されるよう動作する。表1の「冗長度」は、状態に対応するグループにおけるデータ複製数に対応する。
本実施形態の分散ストレージシステムは、状態をAから状態B、状態Bから状態C等、状態を切り替えた際にも、動作状態毎に定義された可用性を保証しつつ動作する。
分散ストレージシステムを構成する各々のストレージノードは、それぞれの状態を示すグループのうちのいずれか(グループA、グループB、グループCのいずれか)に所属する。
<ストレージノード集合>
状態Xの際に動作するストレージノードの集合をNodes(X)と表記すると、表1に関して、以下の関係が成り立つ。
Nodes(A)⊃Nodes(B)⊃Nodes(C)
すなわち、状態Aのストレージノード集合(グループ)は、状態Bのストレージノード集合(グループ)を含む。また、状態Bのストレージノード集合(グループ)は、状態Cのストレージノード集合(グループ)を含む。
システムの動作状態として、状態Cで動作しているストレージノードは状態A(分散ストレージシステムの全ノードが動作する動作状態)の場合にも、動作する。
本実施の形態における動作状態指定手段3は、システムの動作状態を切り替える指示を与える。各状態の動作状態情報(状態A、B、Cの設定内容)は予め指定されているものとする。また、各ストレージノードがいずれかのグループに所属するかについても予め決められているものとする。ただし、動作状態指定手段3において、動作状態情報およびストレージノードの構成等を変更するようにしてもよいことは勿論である。例えば、動作状態情報の冗長度について、動作状態指定手段3は、各ストレージノードのノード環境情報記憶部109の情報を書き換え、冗長度の変更に基づいて、各ストレージノードでデータの複製や削除の動作を行えばよい。
また、ストレージノードの所属グループの変更や、各動作状態のストレージノードの構成数等の変更についても同様であるが、いずれも、本発明の主題に直接関係しない部分であるため、説明を省略する。
動作状態指定手段3は、状態変更により、各ストレージノードのノード環境情報記憶部109の更新(変更指示)を行う。例えば、それまでのシステムの状態が、上記表1の状態Aであったものを、現在の状態として、状態Bに変更する。この場合、1000ノードのうちの半分の500ノードを、冗長度=4(データ複製数)で動作させることになる。
また、動作状態指定手段3は、必要があれば、グループAに所属するが、グループBとグループCのいずれにも所属さないストレージノード(Node(A∩not(B)∩not(C))に対して、ノードの停止命令を発行してもよい。各々のストレージノードは停止命令に応じてシステムを停止する。
<動作の説明>
次に、図5、図6、図7のフローチャートを用いて、本実施形態の動作例について説明する。
分散ストレージシステムに対するデータのアクセス動作について説明する。本実施形態においては、Write処理(データのPUT処理)が、一般的なストレージシステムとは異なるため、この点について主に説明する。リードについては、一般的なコンシステント・ハッシング法を用いた分散ストレージシステムと同様であるため、説明を省略する。
<PUT処理>
図5は、本実施形態におけるデータのPUT処理の全体の手続きを示すフローチャートである。
まず、クライアント2のアクセス手段23が分散ストレージシステムを構成するストレージノードのうちアクセス先のストレージノードに対してデータのPUT命令を発行する(図5のステップS101)。
クライアント2によるPUT命令の発行先のストレージノードは、PUTするデータのKeyに応じて決定される。PUT命令の発行先のストレージノードは、クライアント2においてアクセスノード算出手段21が算出する。特に制限されないが、データのKey値のハッシュ値から、リングを時計回りに辿り、最初に到達するストレージノードをPUT命令の発行先とする(コンシステント・ハッシュ法)。なお、データのKey値は、任意の方法で決めてよい。本実施形態では、データのKey値は、分散ストレージシステムを利用するクライアント2のアプリケーションが決めるか、データの内容のハッシュ値等で決定する。
次に、クライアント2からのデータPUT命令を受け取ったストレージノードのアクセス要求処理手段102は、アクセス要求受信手段101からアクセス要求(PUT命令)を受け取り、このPUT命令を解釈して、データアクセス手段103と複製命令発行手段106に対して渡す(ステップS102)。
図5のステップS102以降、ステップS103のデータアクセス処理と、ステップS104の複製処理フローに分かれる。ステップS103とステップS104は、並行して実行するようにしてもよい。
次のデータアクセス処理は、データアクセス手段103がデータ記憶部104に対してPUT命令のデータの書き込み処理を行う(ステップS103)。
複製命令発行手段106は、他のストレージノードに対して、複製処理を依頼する(ステップS104)。この複製処理フローについては、後に詳述される。
ステップS103の次に、必要があれば、複製処理の完了を待つ(ウエイト)(ステップS105)。
ただし、ステップS105のウエイト処理は、
(a)他のストレージノードに対するデータの複製処理が完了してから、クライアント2に応答する、又は、
(b)自身(クライアント2からのデータPUT命令を受け取ったストレージノード)のデータ記憶部104へのデータの書き込みが完了した時点で、クライアント2に応答する等、
分散ストレージシステムの動作ポリシーに依存する。本実施形態では、いずれかのポリシーにしたがったストレージシステムでもよい。ステップS105は、必要に応じて実行されるものであるため、ポリシー如何では省略してもよい。
クライアント2からのデータPUT命令を受け取ったストレージノードは、クライアント2に対して、PUT処理の完了通知を発行する(ステップS106)。
<複製処理>
図6は、図5のステップS104の複製処理の処理手順を示す流れ図(フローチャート)である。
まず、ストレージノード(クライアント2からのデータPUT命令を受け取ったストレージノード)において、複製命令発行手段106が、アクセス要求処理手段102からのPUT命令の複製処理命令を受け取る(図6のステップS201)。
次に、複製命令発行手段106は、アクセスノード算出手段107に対して、複製先ノードの情報算出を依頼する(ステップS202)。
アクセスノード算出手段107が複製先ノードを算出し、複製命令発行手段106に複製先ストレージノードのリスト(複製先ノードリスト)を渡す(ステップS203)。アクセスノード算出手段107における複製先ノードリストの算出については後述される。
次に、複製命令発行手段106は、算出された複製先ノードリストに対して複製命令を発行する(ステップS204)。
複製命令の発行方法は、
・複製先ノードリストにマルチキャストする、
・複製先ノードリストのうちの任意数のストレージノードに発行し伝搬させる
等、様々な手法で行われる。
そして、最後に、必要であれば、複製処理の完了を待った後に、データアクセス手段103に複製終了の通知を発行する(ステップS205)。
ステップS205は、図5のステップS105に関して説明した通り、分散ストレージシステムの動作ポリシーにしたがって行われるステップであり、複製処理の完了を待ってもよい。あるいは、複製処理の完了を待たないで、PUT処理を完了するようにしてもよい。
<グループごとの複製先の算出手順>
図7は、図6の複製先算出フロー(ステップS203)における複製先算出の手順を示す流れ図である。
ストレージノードのアクセスノード算出手段107は、ルーティング情報記憶部108からルーティング情報、ノード環境情報記憶部109から状態情報を取得する(図7のステップS301)。ここで、ルーティング情報は、ストレージノードの名称等のストレージノードのハッシュ値を求めるための情報および、そのノードに対してアクセスするための情報(IPアドレスとポート番号等)である。
ノード状態情報には、システムの動作状態(例えば、A動作状態であるか、B動作状態であるか等)と、状態毎のデータの複製数(冗長度)の情報が含まれる。
次に、ルーティング情報を用いて構築したハッシュリングを用いて、現在のストレージノード、最初は自身のストレージノード(クライアント2からのデータPUT命令を受け取ったストレージノード)から時計回りに隣接したストレージノードを一つ取得する(ステップS302)。
なお、ハッシュリング上での隣接ストレージノードを反時計回りに算出してもよいことは勿論である。なお、ハッシュリングは、分散ストレージシステムに参加するストレージノードの構成が変わらない限り、何回でも使い回すことも可能である。このため、予めアクセスノード算出手段107で事前に作成しておいてもよい(この場合、ステップS301の処理はスキップされる)。
次に、取得した隣接ストレージノードの所属グループを識別する(ステップS303)。ストレージノードの所属グループの識別にあたり、ノード環境情報記憶部109に、グループ識別のための情報(例えば、ストレージノード11はグループCに属する等の情報を管理する管理テーブル)を保持しておき、ノード環境情報記憶部109から所属グループを識別するようにしてもよい。あるいは、予めストレージノードの名称からグループが識別できるような形を取ってもよい。例えばストレージノード11の名称を「11C」等として、末尾をグループ名「C」とし、ストレージノード11の所属グループはCと識別する。
次に、所属グループの複製先のノード数が、該所属グループに対応して指定されているデータ複製数(表1の冗長度)に達しているか判定する(ステップS304)。なお、ステップS304における所属グループはステップS303で識別された隣接ストレージノードの所属グループに対応する。
ステップS304の判定の結果、所属グループの複製先のノード数が、該所属グループに対応して指定されているデータ複製数に達している場合には、ステップS302に進む。その際、前回のステップS302で取得された隣接ストレージノードが、現在のストレージノードに更新され、現在のストレージノードの隣接ストレージノードが取得される。
一方、ステップS304において、複製先ノードリストのノードの数が、所属グループの指定複製数に達していない場合、ステップS302で取得した隣接ストレージノードを複製先ノードリストに追加する(ステップS305)。この結果、複製先ノードリストのノード数は1つ増加する。なお、複製先ノードリストは、例えば図6の複製先算出フロー(ステップS203)の読み出し前に空にリセットされる。
つづいてステップS306において、全ての所属グループに対して、必要な複製数の複製先が発見されたか否かを確認する。全ての所属グループに対して、必要な複製数の複製先が発見されていない場合、ステップS302に戻る。その際、前回のステップS302で取得された隣接ストレージノードが、現在のストレージノードに更新され、ハッシュリング上の次の隣接ストレージノードを辿ることになる。
ステップS306の判定の結果、全ての所属グループに対して、必要な複製数の複製先が発見された場合、複製先ノードリストを、複製命令発行手段106に送る(ステップS307)。
以下、図3のハッシュリングを参照して動作を説明する。最初の現在のストレージノードは、クライアント2からのデータPUT命令を受け取ったストレージノードである。ステップS302で隣接ストレージノード11を取得する。ステップS303で隣接ストレージノード11の所属グループをCと識別する。ステップS304において、複製先ノードの数は現在0であり(リセット状態であり複製先ノードリストは空)、所属グループCの指定複製数2に達していないため、ステップS305で、複製先ノードリストに当該隣接ストレージノード12を追加する。ステップS306において、全ての所属グループに対して、必要な複製数の複製先が発見されていないものと判定される。その結果、再び、ステップS302の処理が行われる。ステップS302では、隣接ストレージノード11(図3)を現在のストレージノードとし、現在のストレージノードの時計回りに隣に位置するストレージノード12(図3)を隣接ストレージノードとして取得する。ここで、ステップS303において、当該隣接ストレージノード12の所属グループがCであると判定されたとする。ステップS304の判定では、所属グループCの複製先ノードの数は1つであり、所属グループCの指定複製数2に達していないため、ステップS305で、複製先ノードリストに当該隣接ストレージノード12を追加する。
この結果、複製先ノードリストにおいて、所属グループCに関するノード数は2となり、ステップS306の判定の結果、所属グループCについては、必要な複製数の複製先は発見されたが、他の所属グループに対して必要な複製数の複製先は発見されていないことになる。このため、再びステップS302の処理に戻り、当該隣接ストレージノード12(図3)を現在のストレージノードとして、現在のストレージノードの時計回りに隣に位置するストレージノード13(図3)を隣接ストレージノードとして取得する。
ステップS302で取得した隣接ノードの所属グループがCの場合、ステップS304の判定で、所属グループCは必要な複製数に達しているため、ステップS302に戻る。当該隣接ストレージノードを現在のストレージノードとして次の隣接ストレージノードを取得する。この隣接ストレージノードが例えばグループBの場合、ステップS304、S305、S306、S302、S302の処理を繰り返し、複製ノードリストにノードを追加し、所属グループCと同様にして、所属グループBの指定複製数4に対応した複製先を確保する。
なお、表1の場合、前述したように、状態Cとして動作するストレージノードは、状態Aの場合にも動作する。すなわち、グループCのストレージノードはグループAにも属する。このため、ハッシュリング(ハッシュリングのノード数は100)を辿り、グループCに対して、複製数が2個の複製先が決定されたのち、さらにステップS302〜S306の処理を繰り返し、4個の複製先を複製先ノードリストに追加し、合計6個の複製先が決定された場合、所属グループAとCに対して必要な複製数が発見されたことになる。
ステップS306の判定で、ハッシュリング上のノードが所属するノードの全ての所属グループに対してそれぞれ必要な複製数を発見した場合、複製先ストレージノードリストを、複製命令発行手段106に送る(ステップS307)。
なお、実装の如何によっては、図7のフローチャートにおいて、ステップS302のハッシュノード上の隣接ノードの取得処理において、隣接ノードを求める際の基準となる現在のストレージノードが一番目のストレージノードに戻った場合(すなわち、ハッシュリング上のストレージノードの隣接ノードの探索がハッシュリング上を一巡した場合)、ステップS307に移行するようにしてもよい。
複製命令発行手段106では、複製先ノードリストに対して複製命令を発行する(図6のS204)。
本実施例の変形例として、グループに対応してデータの複製先を決定しておき、クライアント2からのデータPUT命令を受け取ったストレージノードは、データの複製作成にあたり、ハッシュリング上のストレージノードが所属するグループに対応した隣接ストレージノードに複製命令を発行し、複製先ストレージノードが該所属グループに対応して規定されるデータ複製数に達成したか否かを確認し、複製先のストレージノードが所属グループに対応して規定されるデータ複製数に達成していなければ、更にハッシュリング上の所属グループに対応した隣接ストレージノードに複製命令を発行するようにしてもよい。複製先のストレージノードが所属グループに対応して規定されるデータ複製数に達成していれば、複製処理を終了する。
本実施例において、省電力のために、動作ノード数を減らす(停止させる)場合においても、大量のデータ複製を必要としない。ハッシュリング上のストレージノードが所属するグループの全てに対して、各グループ毎の指定複製数分、データを複製することで、システム動作状態の切替時におけるグループの切替にあたり、大量のデータ複製の発生を抑止し、場合によっては、データ複製は不要とされる。
省電力のために、動作ノード数を減らす(停止させる)場合として、表1の状態Aから状態Cへの切り替えについて説明する。状態AからCへの切り替えで停止させる900ノードは予め決められたノードが停止し、Cグループに最低限2つの複製をもっていることを保証するように複製が行われる。このため、状態Aから状態Cに切り替えると、Cグループの100ノードの中2つに必ず複製が存在する。例えば、ハッシュリング上にマップされた状態Aの1000個のノードを、10個おきに間引いて状態Cとした場合、一番目のストレージノード10(これがCに含まれるとすると)に置くべきデータはストレージノード10と20に格納される。状態A→状態Cに移行する場合、ストレージノード11〜19(21〜29、31〜39、41〜49、...,)は停止される。例えば状態Aのときストレージノード13に置くべきデータは、状態Cではストレージノード20と30に複製が置かれることが保証される(すなわち、状態Aのとき1つ目のデータ(プライマリデータ)がストレージノード11〜19に置かれるべきデータは、いずれも、状態Cで動作する時、2のデータが置かれることを保証するため、ストレージノード20と30に置かれる)。
また、本実施例において、ノード障害等の発生により、障害ノードを除去した場合においても、大量のデータ複製を必要としない。任意の方法でノード障害を検知し、障害が起きたノードが保持しているデータを持っているノード(非特許文献3の方法であればハッシュ隣接ノード)に通知し、ノード障害によりデータの冗長数が減った分だけ、さらに、隣接ノードへのデータの複製が行われる。以下に、データの耐障害性について、比較例と本実施例とについて説明する。
<データの耐障害性:比較例1>
コンシステント・ハッシング法(データ複製を持たない)の場合、単純なノードの除去は可能であるが、データの耐障害性はない。ただし、各ストレージノードが、データをキャッシュに格納して利用する場合、マスタデータを格納したデータベース等が存在する。データはマスタデータベースにアクセスすれば再度取得することができるため、ノード除去は、システム全体としては、必ずしも、データ障害とはならない。障害復旧はマスタデータベースにアクセスして、除去されたノードが保持しているデータを再度コンシステント・ハッシングによりストレージノードにPUTする。ただし、ストレージノードの除去により、ストレージノードが持っていたキャッシュに該当するデータは、マスタデータベースに対するアクセスに切り替えられるため、マスタデータベースに対する負荷が増大する。
<データの耐障害性:比較例2>
非特許文献3等に記載される複製を持ったコンシステント・ハッシング法の場合、データの耐障害性はあるものの、同時に多数のノードが除去されてしまうと失われるデータが出現する可能性がある。すなわち、ノード障害が起きたとき、障害ノード数がデータの冗長数未満であれば、何もしなくても、クライアントは、データに引き続きアクセスできる。しかし、障害ノードが保持していたデータについてはその冗長数が減少する。このため、冗長数を元に戻す復旧処理が必要とされる。データの冗長数を元に戻す復旧処理は、ノード障害を検知し、障害が起きたノードが保持しているデータを冗長保持するストレージノードに対してデータの複製を命令し、さらハッシュリング上における隣接のストレージノードにデータを複製することになる。
<データの耐障害性:本発明>
本発明によれば、データの耐障害性を具備する。予め決められたルールでの一斉停止であれば、ノード障害時に、データは失われることはない。ただし、予め決められたルールに従ってノードを除去するのではなく、例えばランダムに多数のストレージノードを選択して同時に除去すると、データが失われる可能性がある。本実施例においても、ノード障害発生時、データの冗長数を復旧する処理が行われる。ノード障害が検知された場合、データ復旧処理において、障害が起きたストレージノードが持っているデータが、当該ストレージノードが所属するグループの全てのグループに関して、グループ毎のデータ複製数(冗長数)の条件を満たしているか否か確認する。この確認作業を行うノードは、リング上の任意のノードであってよい。
当該ストレージノードが所属するグループの全てのグループに関して、グループ毎のデータ複製数(冗長数)の条件を満たしていないグループが1つでもある場合、当該グループのデータ複製数(冗長数)の条件を満たすように、複製先ストレージノードを算出する。この算出手順は、図7のフローチャートと同様の手順で行われる。
複製先のストレージノード(複製先ノードリスト)が決まると、該複製先のストレージノードへのデータ複製を行うように指示する命令を、当該複製データを持っているストレージノードのいずれかに対して送信する。本実施例によれば、グループ毎にデータ複製数が規定されており、グループに対して規定された複製数分、データの複製が存在するか確認し、不足する場合、複製を行う。このため、ノード障害時にも、動作状態(グループ)の切替を行う場合、データの耐障害性は保証される。
本発明によれば、分散ストレージシステム、分散キャッシュシステムといった用途に適用できる。また、これらを用いたコンピュータシステム全般といった用途にも適用可能である。
なお、上記非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1 ストレージノード
2 クライアント
3 動作状態指定手段
10〜19 ストレージノード
21 アクセスノード算出手段
22 ルーティング情報記憶部
23 アクセス手段
101 アクセス要求受信手段
102 アクセス要求処理手段
103 データアクセス手段
104 データ記憶部
105 複製命令受信手段
106 複製命令発行手段
107 アクセスノード算出手段
108 ルーティング情報記憶部
109 ノード環境情報記憶部

Claims (23)

  1. システムの動作状態を指定する手段と、
    データ複製作成手段と、
    を備え、
    前記システムの動作状態を指定する手段は、分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、
    前記データ複製作成手段は、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する、ことを特徴とする分散ストレージシステム。
  2. 前記システムの動作状態を指定する手段が、前記グループに対応してデータの複製作成数を決定し、
    前記データ複製作成手段は、前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで複製先を探索し、複製先ストレージノードのリストを作成する、ことを特徴とする請求項1記載の分散ストレージシステム。
  3. 前記データ複製作成手段は、前記複製先ストレージノードのリストを受け、前記リストの各ストレージノードに対して複製命令を発行する手段を備えたことを特徴とする請求項1記載の分散ストレージシステム。
  4. クライアントからのデータの書き込み要求に受けた場合、
    前記データ複製作成手段は、複製先ストレージノードのリストを作成し、
    前記ハッシュリング上の複数のストレージノードが属する所属グループに対応して、各所属グループに対応するデータ複製数のデータを複製する、ことを特徴とする請求項2記載の分散ストレージシステム。
  5. 前記ストレージノードが、
    システムの動作の状態情報と、該状態に対応したデータの複製数の情報と、を含む記憶部を備え、
    (a)前記複数のストレージノードが論理的に配置されたハッシュリング上で、現在のストレージノードに隣接するストレージノードを取得し、
    (b)前記取得した隣接ストレージノードの所属グループを識別し、前記所属グループに指定されているデータの複製数と、複製先ノードリストに含まれているノードの数とを比較し、
    (c)前記所属するグループの複製先のストレージノードの数が指定複製数に達している場合には、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (d)前記所属するグループの複製先のストレージノードの数が指定複製数に達していない場合には、(a)で取得した隣接ストレージノードを複製先ノードリストに追加し、
    (e)前記ハッシュリング上のストレージノードが所属するグループの全てに対して必要な複製数に達しているか判定し、
    (f)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達していない場合、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (g)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達している場合、複製先ノードリストを複製命令発行手段に送る、
    前記(a)乃至(g)を実行するアクセスノード算出手段と、
    前記複製先ノードリストに含まれるストレージノードに対して複製命令を発行する前記複製命令発行手段と、
    を備えた、請求項1又は2記載の分散ストレージシステム。
  6. 前記システムの動作状態を指定する手段が、前記グループに対応してデータの複製先を決定し、
    前記データ複製作成手段は、前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、
    複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成したか否かを確認し、
    前記複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成していなければ、更なる前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、達成していれば複製処理を終了する、ことを特徴とする請求項1記載の分散ストレージシステム。
  7. 分散ストレージシステムへ参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、
    データの書き込み要求を受けたストレージノードは、分散ストレージシステムへ参加する複数のストレージノードに対してグループごとに規定されるデータ複製数分、データの複製を作成する、ことを特徴とする分散ストレージ方法。
  8. 前記グループに対応してデータの複製作成数を決定し、
    前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで、複製先を探索し、複製先ストレージノードのリストを作成する、ことを特徴とする請求項7記載の分散ストレージ方法。
  9. 前記複製先ストレージノードのリストを受け、前記リストの各ストレージノードに対して複製命令を発行する、ことを特徴とする請求項7記載の分散ストレージ方法。
  10. クライアントからのデータの書き込み要求に対して、複製先ストレージノードのリストを作成し、
    ハッシュリング上の複数のストレージノードが属する所属グループに対応して、各所属グループに対応するデータ複製数のデータを複製する、ことを特徴とする請求項8記載の分散ストレージ方法。
  11. データの複製を作成するにあたり、
    (a)前記複数のストレージノードが論理的に配置されたハッシュリング上で、現在のストレージノードに隣接するストレージノードを取得し、
    (b)前記取得した隣接ストレージノードの所属グループを識別し、前記所属グループに指定されているデータの複製数と、複製先ノードリストに含まれているノードの数とを比較し、
    (c)前記所属するグループの複製先のストレージノードの数が指定複製数に達している場合には、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (d)前記所属するグループの複製先のストレージノードの数が指定複製数に達していない場合には、(a)で取得した隣接ストレージノードを複製先ノードリストに追加し、
    (e)前記ハッシュリング上のストレージノードが所属するグループの全てに対して必要な複製数に達しているか判定し、
    (f)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達していない場合、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (g)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達している場合、複製先ノードリストを複製命令発行手段に送り、
    前記複製命令発行手段は、前記複製先ノードリストに含まれるストレージノード対して複製命令を発行する、請求項7又は8記載の分散ストレージ方法。
  12. 前記グループに対応してデータの複製先を決定し、
    前記データの複製作成にあたり、前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、
    複製先ストレージノードが前記グループに対応して規定されるデータ複製数に達成したか否かを確認し、
    前記複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成していなければ、更なる前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、達成していれば複製処理を終了する、ことを特徴とする請求項7記載の分散ストレージ方法。
  13. システムの動作状態を指定する処理と、
    データ複製作成処理と、
    をストレージノードを構成するコンピュータに実行させるプログラムであって、
    前記システムの動作状態を指定する処理は、分散ストレージシステムへ参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、
    前記データ複製作成処理は、分散ストレージシステムへ参加する複数のストレージノードに対してグループごとに規定されるデータ複製数分、データの複製を作成する、ことを特徴とするプログラム。
  14. 前記システムの動作状態を指定する処理が、前記グループに対応してデータの複製作成数を決定し、
    前記データ複製作成処理は、前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで、複製先を探索し、複製先ストレージノードのリストを作成する、ことを特徴とする請求項13記載のプログラム。
  15. 前記データ複製作成処理は、前記複製先ストレージノードのリストを受け、前記リストの各ストレージノードに対して複製命令を発行する処理を備えたことを特徴とする請求項13記載のプログラム。
  16. クライアントからのデータの書き込み要求を受けた場合、前記データ複製作成処理は、複製先ストレージノードのリストを作成し、ハッシュリング上の複数のストレージノードが属する所属グループに対応して、各所属グループに対応するデータ複製数のデータを複製する、ことを特徴とする請求項14記載のプログラム。
  17. 前記ストレージノードが、
    (a)前記複数のストレージノードが論理的に配置されたハッシュリング上で、現在のストレージノードに隣接するストレージノードを取得し、
    (b)前記取得した隣接ストレージノードの所属グループを識別し、前記所属グループに指定されているデータの複製数と、複製先ノードリストに含まれているノードの数とを比較し、
    (c)前記所属するグループの複製先のストレージノードの数が指定複製数に達している場合には、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (d)前記所属するグループの複製先のストレージノードの数が指定複製数に達していない場合には、(a)で取得した隣接ストレージノードを複製先ノードリストに追加し、
    (e)前記ハッシュリング上のストレージノードが所属するグループの全てに対して必要な複製数に達しているか判定し、
    (f)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達していない場合、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (g)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達している場合、複製先ノードリストを複製命令発行処理に送る、
    前記(a)乃至(g)を実行するアクセスノード算出処理と、
    複製先ノードリストに含まれるストレージノード対して複製命令を発行する前記複製命令発行処理と、を前記コンピュータに実行させる、請求項13又は14記載のプログラム。
  18. 前記グループに対応してデータの複製先を決定する処理と、
    前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、
    複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成したか否かを確認し、
    複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成していなければ、更なる前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、達成していれば複製処理を終了する処理と、を前記コンピュータに実行させる、請求項13又は14記載のプログラム。
  19. 分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する分散ストレージシステムを構成するストレージノードであって、
    前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで複製先を探索し、複製先ストレージノードのリストを作成するデータ複製作成手段を備えた、ことを特徴とするストレージノード。
  20. 前記データ複製作成手段は、前記複製先ストレージノードの各ストレージノードに対して複製命令を発行することを特徴とする請求項19記載のストレージノード。
  21. 前記データ複製作成手段は、クライアントからのデータの書き込み要求を受けた場合、
    複製先ストレージノードのリストを作成し、
    前記ハッシュリング上の複数のストレージノードが属する所属グループに対応して、各所属グループに対応するデータ複製数のデータを複製する、ことを特徴とする請求項19記載のストレージノード。
  22. システムの動作の状態情報と、該状態に対応したデータの複製数の情報と、を含む記憶部を備え、
    (a)前記複数のストレージノードが論理的に配置されたハッシュリング上で、現在のストレージノードに隣接するストレージノードを取得し、
    (b)前記取得した隣接ストレージノードの所属グループを識別し、前記所属グループに指定されているデータの複製数と、複製先ノードリストに含まれているノードの数とを比較し、
    (c)前記所属するグループの複製先のストレージノードの数が指定複製数に達している場合には、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (d)前記所属するグループの複製先のストレージノードの数が指定複製数に達していない場合には、(a)で取得した隣接ストレージノードを複製先ノードリストに追加し、
    (e)前記ハッシュリング上のストレージノードが所属するグループの全てに対して必要な複製数に達しているか判定し、
    (f)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達していない場合、前記隣接ストレージノードを前記現在のストレージノードとして、(a)の前記ハッシュリング上の隣接ストレージノードの取得処理に戻り、
    (g)前記判定の結果、前記ハッシュリング上のストレージノードが属する全ての所属グループに対して必要な複製数に達している場合、複製先ノードリストを複製命令発行手段に送る、
    前記(a)乃至(g)を実行するアクセスノード算出手段と、
    前記複製先ノードリストに含まれるストレージノードに対して複製命令を発行する前記複製命令発行手段と、
    を備えた、請求項19記載のストレージノード。
  23. 分散ストレージシステムに参加する複数のストレージノードをシステムの動作状態に対応したグループに分け、分散ストレージシステムへ参加する複数のストレージノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成する分散ストレージシステムを構成するストレージノードであって、
    前記複数のストレージノードが論理的に配置されたハッシュリングを辿り、ハッシュリング上、所属するグループに対応した隣接ストレージノードに複製命令を発行し、
    複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成したか否かを確認し、前記複製先のストレージノードが前記グループに対応して規定されるデータ複製数に達成していなければ、更なる前記ハッシュリング上の前記グループに対応した隣接ストレージノードに複製命令を発行し、達成していれば複製処理を終了する、ことを特徴とするストレージノード。
JP2011529914A 2009-09-01 2010-09-01 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード Active JP5556816B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011529914A JP5556816B2 (ja) 2009-09-01 2010-09-01 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009202061 2009-09-01
JP2009202061 2009-09-01
PCT/JP2010/064912 WO2011027775A1 (ja) 2009-09-01 2010-09-01 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード
JP2011529914A JP5556816B2 (ja) 2009-09-01 2010-09-01 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード

Publications (2)

Publication Number Publication Date
JPWO2011027775A1 true JPWO2011027775A1 (ja) 2013-02-04
JP5556816B2 JP5556816B2 (ja) 2014-07-23

Family

ID=43649311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011529914A Active JP5556816B2 (ja) 2009-09-01 2010-09-01 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード

Country Status (3)

Country Link
US (1) US9395933B2 (ja)
JP (1) JP5556816B2 (ja)
WO (1) WO2011027775A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201890B2 (en) * 2010-10-04 2015-12-01 Dell Products L.P. Storage optimization manager
JP5733124B2 (ja) * 2011-09-12 2015-06-10 富士通株式会社 データ管理装置、データ管理システム、データ管理方法、及びプログラム
US9069835B2 (en) * 2012-05-21 2015-06-30 Google Inc. Organizing data in a distributed storage system
US9774676B2 (en) 2012-05-21 2017-09-26 Google Inc. Storing and moving data in a distributed storage system
US9449006B2 (en) 2012-06-04 2016-09-20 Google Inc. Method and system for deleting obsolete files from a file system
US9230000B1 (en) 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US9298576B2 (en) 2012-06-04 2016-03-29 Google Inc. Collecting processor usage statistics
US9195611B2 (en) 2012-06-04 2015-11-24 Google Inc. Efficiently updating and deleting data in a data storage system
US9659038B2 (en) 2012-06-04 2017-05-23 Google Inc. Efficient snapshot read of a database in a distributed storage system
WO2013184712A2 (en) 2012-06-04 2013-12-12 Google Inc. Systems and methods of increasing database access concurrency using granular timestamps
WO2014041781A1 (ja) * 2012-09-11 2014-03-20 日本電気株式会社 オブジェクト移動判定装置、方法、及びプログラム、オブジェクト配置装置、並びにストレージシステム
WO2014077918A1 (en) * 2012-11-19 2014-05-22 Board Of Regents, The University Of Texas System Robustness in a scalable block storage system
CN103455372B (zh) * 2013-08-31 2017-05-10 华为技术有限公司 一种服务器中内存模块的数据迁移方法及服务器
JP6197666B2 (ja) * 2014-01-27 2017-09-20 富士通株式会社 記憶装置、複製方法及び複製プログラム
JP6127005B2 (ja) * 2014-02-27 2017-05-10 日本電信電話株式会社 クラスタシステムのサーバ装置およびプログラム
US9600203B2 (en) * 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US9720620B1 (en) 2014-03-11 2017-08-01 Amazon Technologies, Inc. Efficient data volume replication for block-based storage
EP2947579A1 (en) * 2014-05-22 2015-11-25 Deutsche Telekom AG Method for generating a backup copy of a distributed data structure, system for generating a backup copy of a distributed data structure, program and computer program product
CN105704173B (zh) * 2014-11-25 2019-06-21 中国移动通信集团福建有限公司 一种集群系统数据分布方法及服务器
JP6770244B2 (ja) * 2015-03-30 2020-10-14 日本電気株式会社 ストレージシステム
WO2017065209A1 (ja) * 2015-10-16 2017-04-20 国立大学法人東北大学 情報処理システム、情報処理装置、情報処理方法、及び、プログラム
JP7132531B2 (ja) * 2018-05-28 2022-09-07 日本電信電話株式会社 転送制御装置、転送制御方法、サービス提供システムおよび転送制御プログラム
WO2020010502A1 (zh) * 2018-07-10 2020-01-16 深圳花儿数据技术有限公司 一种基于一致性哈希算法的分布式数据冗余存储方法
US10895997B2 (en) 2019-02-20 2021-01-19 Nutanix, Inc. Durable client-side caching for distributed storage
WO2021052230A1 (zh) * 2019-09-18 2021-03-25 华为技术有限公司 一种存储系统、存储节点和数据存储方法
CN114138737B (zh) * 2022-02-08 2022-07-12 亿次网联(杭州)科技有限公司 文件存储方法、装置、设备及存储介质
CN114676118B (zh) * 2022-05-30 2022-08-12 深圳市科力锐科技有限公司 数据库切换方法、装置、设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925624B2 (en) 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
JP4417997B2 (ja) * 2007-12-13 2010-02-17 株式会社東芝 オーバーレイネットワークシステム、同システムにおけるオーバーレイネットワーク構築・維持方法、及びプログラム

Also Published As

Publication number Publication date
US20120159102A1 (en) 2012-06-21
JP5556816B2 (ja) 2014-07-23
US9395933B2 (en) 2016-07-19
WO2011027775A1 (ja) 2011-03-10

Similar Documents

Publication Publication Date Title
JP5556816B2 (ja) 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード
JP5411250B2 (ja) 冗長データ記憶システムへの指示に従ってのデータ配置
US8918392B1 (en) Data storage mapping and management
JP5479490B2 (ja) 複製ストレージクラスタのための非同期式分散ガーベッジコレクション
JP2019101703A (ja) 記憶システム及び制御ソフトウェア配置方法
US8935203B1 (en) Environment-sensitive distributed data management
US8930364B1 (en) Intelligent data integration
JP2010079886A (ja) 拡張可能な2次ストレージシステムと方法
US10387273B2 (en) Hierarchical fault tolerance in system storage
WO2018054079A1 (zh) 一种存储文件的方法、第一虚拟机及名称节点
US20190303035A1 (en) Copying garbage collector for geographically distributed data storage environment
JP2003296035A (ja) ストレージ装置及びストレージ方法
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
JP6033420B2 (ja) ストレージシステムおよびストレージシステムの制御方法
JP2012008934A (ja) 分散ファイルシステム及び分散ファイルシステムにおける冗長化方法
JP4572581B2 (ja) データベース処理方法およびシステム並びにその処理プログラム
JP2010026965A (ja) アーカイブシステムおよびコンテンツの管理方法
WO2016088372A1 (ja) アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びコンピュータ読み取り可能記録媒体
JP2014149625A (ja) ストレージシステム、ディスクアレイ装置及びストレージシステムの制御方法
JP2006146661A (ja) レプリケーションシステム、方法、レプリカストレージ、およびプログラム
JP6291977B2 (ja) 分散ファイルシステム、バックアップファイル取得方法、制御装置及び管理装置
JP2019046180A (ja) 計算機システム、データ管理方法、及びデータ管理プログラム
JP2009157880A (ja) サーバ装置及びファイルシステム
JP5071518B2 (ja) データベース処理方法、データベース処理システム及びデータベース管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

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: 20140507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140520

R150 Certificate of patent or registration of utility model

Ref document number: 5556816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150