JP7113832B2 - 分散ストレージシステム及び分散記憶制御方法 - Google Patents

分散ストレージシステム及び分散記憶制御方法 Download PDF

Info

Publication number
JP7113832B2
JP7113832B2 JP2019540170A JP2019540170A JP7113832B2 JP 7113832 B2 JP7113832 B2 JP 7113832B2 JP 2019540170 A JP2019540170 A JP 2019540170A JP 2019540170 A JP2019540170 A JP 2019540170A JP 7113832 B2 JP7113832 B2 JP 7113832B2
Authority
JP
Japan
Prior art keywords
computer
parity
data
node
update 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.)
Active
Application number
JP2019540170A
Other languages
English (en)
Other versions
JPWO2019049224A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2019049224A1 publication Critical patent/JPWO2019049224A1/ja
Application granted granted Critical
Publication of JP7113832B2 publication Critical patent/JP7113832B2/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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、概して、分散ストレージシステムでの記憶制御に関する。
複数の計算機(ノード)を、ストレージ機能を提供するソフトウェアを用いて連携することにより、分散ストレージシステムを構成するSDS(Software Defined Storage)が知られている。
SDSに関する技術として、特許文献1には、複数のノード間でデータの複製を不揮発な記憶デバイスであるSSD(Solid State Drive)上に保持することで、データ書き込み処理におけるノード間のデータの冗長化を実現する手法が開示されている。
米国特許第9336132号
分散ストレージシステムは、データを冗長化することで、データ保護を行う。この時、ノード間でデータ転送を実施し、かつノード毎にデータを永続化してから(つまり、データを不揮発記憶装置に書き込んでから)、クライアントへ応答する。そのため、クライアントへの書き込み応答性能の悪化が問題となる。
また、例えば、特許文献1のようなストレージシステムの場合、データを冗長化するために、更新データとその複製を、SSDをキャッシュとして持つ複数のノードに二重化する。そのため、ライトスルー書き込み(SSDのような不揮発記憶デバイスにデータを書き込んでからライト完了を応答する書き込み)と同等の書き込み応答性能の悪化が問題となる。
書き込み応答性能の悪化は、SDSを利用する分散ストレージシステム以外の分散ストレージシステムについてもあり得る。
クライアントからライト要求を受信する分散ストレージシステムが、複数の電源部から電力供給を受ける複数の計算機を有する。複数の計算機のうち、クライアントからライト要求を受信した計算機である第1計算機が、ライト要求に付随したデータの少なくとも一部である更新データをキャッシュし、当該更新データの転送先として、第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちのn個の計算機(nは自然数)であるn個の第2計算機を選択し、選択したn個の第2計算機に、更新データをそれぞれ転送する。n個の第2計算機のうちの少なくとも1つが、第1計算機からの更新データをキャッシュした場合に結果を第1計算機に返す。すなわち、第1計算機は、n個の第2計算機の全てにおいて更新データがキャッシュされたことを待たなくてよい。
電源部の障害等による電断が生じてもデータ消失を防ぐことと、クライアントに対する書き込み応答時間を短縮することとの両方を実現できる。
実施例1におけるデータ書き込み処理の概要を示す。 分散ストレージシステムの構成を示す。 ドメインの構成を示す。 ノードの構成を示す。 管理情報内のテーブルを示す。 ライトスルー書き込み処理の概要を示す。 フルストライプ書き込み処理の概要を示す。 データ書き込み処理の処理フローを示す。 ライトバック書き込みの処理フローを示す。 旧データ転送処理の処理フローを示す。 データノードのデステージ処理の処理フローを示す。 パリティノードのデステージ処理の処理フローを示す。 ライトスルー書き込み処理の処理フローを示す。 フルストライプライトバック書き込み処理の処理フローを示す。 フルストライプライトスルー書き込み処理の処理フローを示す。 ノード追加処理の処理フローを示す。 ノード削除処理の処理フローを示す。 実施例2におけるドメインの構成を示す。 実施例2における電源系統構成管理テーブルを示す。 実施例3における旧データ転送処理の概要を示す。 実施例4におけるデータ書き込み処理の概要を示す。
以下では、幾つかの実施例を、図面を参照して説明する。
なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶこともできる。
また、以下の説明では、「インターフェース部」は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、以下の説明では、「PDEV」は、物理的な不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えば、不揮発性メモリ、HDD(Hard Disk Drive)またはSSD(Solid State Drive)である。
また、以下の説明では、「記憶部」は、メモリ部およびPDEV部のうちの少なくともメモリ部を含む。「PDEV部」は、1以上のPDEVを含む。「メモリ部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、CPU(Central Processing Unit)でよい。プロセッサ部は、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェース部(例えばポート)を用いながら行うため、処理の主語がプログラムとされてもよい。プログラムを主語として説明された処理は、プロセッサ部或いはそのプロセッサ部を有する計算機(例えば、ノード)が行う処理としてもよい。また、コントローラ(ストレージコントローラ)は、プロセッサ部それ自体であってもよいし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又はコンピュータ読取可能な(例えば非一時的な)記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用することがある。
また、以下の説明では、分散ストレージシステムは、1以上の物理的な計算機(ノード)を含む。1以上の物理的な計算機は、物理的なサーバと物理的なストレージとのうちの少なくとも1つを含んでよい。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)またはSDDC(Software-defined Datacenter)を採用することができる。
また、以下の説明では、複数のノードで冗長構成グループを形成することができる。冗長構成の例としては、Erasure Coding、RAIN(Redundant Array of Independent Nodes)、ノード間ミラーリング、ノードを1つのドライブとみなしたRAID(Redundant Array of Independent (or Inexpensive) Disks)などがあり、いずれでもよい。その他の方式(ノード間で冗長構成グループを構成する方式)が採用されてもよい。従って、以下の説明では、「冗長構成グループ」は、2以上のノードがそれぞれ提供する2以上の記憶領域で構成されデータを記憶するグループでよい。
また、以下の説明における複数種類の記憶領域の各々の定義は、下記の通りである。
・「冗長構成領域」とは、冗長構成グループが提供する論理記憶領域である。
・「ノード領域」とは、複数のノードの各々が提供する論理記憶領域である。複数のノードがそれぞれ提供する複数のノード領域が、冗長構成領域を構成する。
・「ストリップ」とは、ノード領域の一部である。ストリップは、ユーザデータセットまたはパリティを格納する。ユーザデータセットが格納されるストリップを「ユーザストリップ」と言うことができ、パリティが格納されるストリップを「パリティストリップ」と言うことができる。なお、「ユーザデータセット」は、ライト要求に付随するユーザデータ(ライト対象データ)の少なくとも一部としてのユーザデータユニットの一部である。「ユーザデータユニット」は、ストライプに対応した全ユーザデータセットの集合である。「データセット」とは、1つのストリップに格納されるデータであり、以下の説明では、ユーザデータセットまたはパリティである。つまり、データセットとは、ストリップ単位のデータである。
・「ストライプ」とは、冗長構成領域における2以上のノード領域にそれぞれ存在する2以上のストリップ(例えば同一論理アドレスの2以上のストリップ)で構成された記憶領域である。ストライプ毎に1以上のパリティが用意されてよい。
以下の説明において、「ユーザデータ」及び「パリティ」は、データセットの意味で使用するが、データセットよりも大きなサイズのデータ(例えばファイル)であってもよい。
また、以下の説明において、「キャッシュメモリ」は、典型的には揮発性であり、プログラムや管理情報が格納されるメモリ(典型的には揮発性メモリ)上に設けられた一部領域であるが、当該メモリとは別に設けられたメモリであってもよい。
図1は、実施例1におけるデータ書き込み処理の概要を示すブロック図である。なお、本実施例において、「複製元」および「複製先」は、「転送元」および「転送先」の一例である。また、複製先は、更新データに対応したパリティの格納先とされているノードでよい。
クライアント(101)は、ユーザがストレージ機能を利用するためのデバイス(計算機)である。クライアント(101)は、例えば、デスクトップ計算機でもよいし、サーバでもよいし、スマートフォンのような携帯端末でもよい。クライアント(101)は、ストレージクラスタを構成する全ノードとネットワーク経由で接続される。
ノード(203)は、データ管理機能とパリティ管理機能を有する。データ管理機能は、クライアントのデータを格納する機能である。データ管理機能は、例えば、ノードのもつ記憶装置にデータを書き込みことでデータを永続化する処理や、データを他のノードに転送し複製することで冗長化する処理を行う。パリティ管理機能は、RAIDやErasure Cordingのようなデータ保護を実現する機能である。パリティ管理機能は、例えば、クライアント(101)からのデータをもとにパリティを生成し、生成したパリティを格納する。また、パリティ管理機能は、例えば、そのノードのもつデータや他のノードから受信したデータをもとに、パリティを生成し、生成したパリティをノードのもつ記憶装置に書き込みことで、データ保護を実現する。本実施例では、あるノードがデータ管理機能を実行するとき、そのノードに対応するパリティ管理機能を実行するノードが存在する。また、全ノード(203)の各々は、データ管理機能とパリティ管理機能の両方を有してもよい。なお、ノード(203)は、ストレージクラスタ、およびドメインと呼ばれる複数のノードの集合に属する。ストレージクラスタと、ドメインとの詳細は後述する。
また、ノード(203)は、電源(241)をもつ。電源(241)は、ノード(203)内の要素のうち少なくともキャッシュメモリ(121)に電力を供給する。従って、電源(241)が故障する等によって電断が生じると、キャッシュメモリ(121)内のデータが消失する。
いずれの電源(241)がいずれのドメインに存在するかといったような電源配置構成は、ノード(203)が有する管理情報(284)により管理される。本実施例では、クライアント(101)からデータのライト要求を受信したノード(203A)は、当該ノード(203A)が有する管理情報(284A)をもとに、当該データの複製先ノードとして、当該データを受信したノード(203A)の電源(241A)と異なる(別の)電源(241B)を持つノード(203B)を選択する。選択された複製先ノード(203B)は、転送されたデータを受信し当該データをキャッシュメモリ(121B)に書き込んだときに、完了応答を、複製元(転送元)のノード(203A)に返す。ノード(101A)は、完了応答を受信した場合、ライト要求に対する完了応答をクライアント101に返す。これにより、書き込み応答性能を向上できる。また、更新データ(D1´)の永続化の前にノード(203A)および(203B)の一方で電断が生じても、当該更新データ(D1´)の消失を防ぐことができる。なぜなら、ノード(203A)および(203B)の電源(241)は異なっているので、一方のノードで電断が生じても他方のノードで当該データが消失せず残っているためである。
クライアント、データノード、およびパリティノードは、SAN(Storage Area Network)やLAN(Local Area Network)等のネットワークを介して接続される。なお、「データノード」は、ユーザデータを格納するノードである。「パリティノード」は、パリティを格納するノードである。データノードとなるノードや、パリティノードとなるノードは、ストライプに関わらず同じであってもよいし(例えば、いずれのストライプについてもノード(203B)がパリティノードであってもよいし)、ストライプによって異なっていてもよい(例えば、あるストライプについてはノード(203B)がパリティノードであって、別のストライプについてはノード(203A)がパリティノードであってもよい)。
データ書き込み処理は、ライトバック書き込み処理、旧データ先行転送処理、およびデステージ処理の3つの処理からなる。図1を用いて、各処理の処理流れの一例を説明する。なお、図1のノード(203A)はデータ管理機能の処理を、ノード(203B)はパリティ管理機能の処理を実行する。
<ライトバック書き込み処理>
ライトバック書き込み処理は、クライアント(101)からの更新データ(D1´)を、複製元ノード(203A)内のキャッシュメモリ(121A)と、複製先ノード(203B)内のキャッシュメモリ(121B)とに格納する処理、つまり、異なるノード(203)において二重化する処理である。ライトバック書き込み処理は、クライアント(101)が、更新データ(D1´)のライト要求を、ノード(203A)に対しネットワーク経由で転送し(151)、ノード(203A)がそのライト要求を受信したことを契機に開始する。なお、「更新データ」は、更新後のユーザデータである。ライト要求は、更新データを管理するノードを一意に識別するノードIDと、ノードIDのノードがもつ記憶装置(206)を一意に識別する記憶装置IDと、更新データのサイズと、更新データの書き込み位置といった、データ書き込み処理に必要な情報を含んでいる。
ライトバック書き込み処理は、以下の処理を含む。
すなわち、ノード(203A)は、クライアント(101)からのライト要求中の情報(データ書き込み処理に必要な情報)を元に、ノード(203A)のもつキャッシュメモリ(121A)へ更新データ(D1´)を登録(132)する。
その後、ノード(203A)は、管理情報(284A)を参照し、その更新データ(D1´)の複製先ノードとして、電源(241A)と異なる電源(241B)から電力供給を受けるノード(203B)を選択する。ノード(203A)は、選択したノード(203B)へ更新データ(D1´)を転送(152)する。管理情報(284)は、ドメイン毎の全ノードのノードIDと、ストライプ毎のデータ配置(データ及びパリティの位置)といった情報を含む。本実施例では、ドメイン毎に電源(241)が存在するため、ドメインが異なれば、電源(241)も異なる。言い換えれば、本実施例では、ドメインが電源(241)の電力供給範囲に相当する。
次に、ノード(203B)は、ノード(203A)から転送された更新データ(D1´)を受信し、キャッシュメモリ(121B)へ更新データ(D1´)を登録(133)する。更新データ(D1´)をキャッシュメモリ(121B)に登録した場合に、ノード(203B)は、結果(完了応答)をノード(203A)へ返却(153)する。
最後に、ノード(203A)は、ノード(203)からの結果を受信する。その結果を受信した場合に、ノード(203A)は、クライアント(101)へ、受信したライト要求の結果(完了応答)を返却(154)する。
以上により、クライアント(101)からの更新データ(D1´)が、データノード(203A)内のキャッシュメモリ(121A)と、パリティノード(203B)内のキャッシュメモリ(121B)とに二重化されるが、キャッシュメモリ(121B)に更新データ(D1´)が書かれた場合に結果が返るので、クライアント(101)への書き込み応答時間を短縮できる。また、データノード(203A)の電源(241A)と、パリティノード(203B)の電源(241B)は、分離された異なる電源であるため、更新データ(D1´)の永続化の前に一方のノードで電断が生じても他方のノードに更新データ(D1´)が存在する。
<旧データ先行転送処理>
旧データ先行転送処理は、更新データの複製先ノードに更新データに対応した旧データをデステージ処理の前に転送する処理である
旧データ先行転送処理は、以下の処理を含む。
すなわち、ノード(203A)が、適切なタイミングで、ノード(203A)のもつ更新データ(D´)の旧データ(更新前のデータ)(D1)を、記憶装置(206A)から読み込み(155)、読み込んだ旧データ(D1)をキャッシュメモリ(121A)に登録(135)する。ノード(203A)は、当該旧データ(D1)を、更新データ(D1´)の複製先ノード(203B)へ転送(156)する。旧データ(D1)を転送する適切なタイミングの例として、更新データ(D1´)の複製元ノード(203A)のもつキャッシュメモリ(121A)の使用領域が閾値を超過するなどが原因でメモリ解放行う必要がある場合や、キャッシュメモリ(121A)の更新データ(D1´)を記憶装置(206A)にデステージする場合などがある。
次に、ノード(203B)は、ノード(203A)から旧データ(D1)を受信し、キャッシュメモリ(121B)に旧データ(D1)を登録(136)する。
以上により、複製元ノード(203A)のキャッシュメモリ(121A)に登録されている更新データ(D1´)を記憶装置(206A)にデステージ(格納)する処理において、更新データ(D1´)に対応する旧パリティ(P)の更新処理に必要な旧データ(D1)の転送が不要となるため、そのデステージ処理の処理時間を短縮でき、パリティノード(203B)のキャッシュメモリ(121B)に登録されている更新データ(D1´)のメモリ解放時間を短縮できる。なお、「旧パリティ」とは、旧データに対応した更新前のパリティである。
<デステージ処理>
デステージ処理は、クライアント(101)からのライト要求に応答して行うデータ書き込み処理とは非同期に行われる処理でよく、キャッシュメモリ(121)内のダーティデータ(記憶装置(206)に格納されていないデータ)を記憶装置(206)に格納する処理である。ノード(203A)が、適切なタイミングでデステージ処理を開始する。
デステージ処理は、以下の処理を含む。
ノード(203A)が、キャッシュメモリ(121A)内の更新データ(D1´)を、記憶装置(206A)に書き込み(157)、キャッシュメモリ(121A)から更新データ(D1´)の使用領域を解放する。
次に、ノード(203A)は、管理情報(284A)を参照し、その更新データ(D1´)の格納先ストライプに対応する旧パリティ(P)をもつノード(203B)を特定し、特定したノード(203B)へパリティ更新依頼を転送する(50)。パリティ更新依頼は、更新データ(D1´)の格納先ストライプのIDと、旧パリティ(P)の位置とのうちの少なくとも1つを含む。
次に、ノード(203B)は、ノード(203A)からのパリティ更新依頼を受信する。ノード(203B)は、そのパリティ更新依頼に応答して、更新データ(D1´)に対応する旧パリティ(P)を、記憶装置(206B)から読み込み(158)、その旧パリティ(P)をキャッシュに登録(139)する。ノード(203B)は、キャッシュメモリ(121B)上の更新データ(D1´)、旧データ(D1)、および、旧パリティ(P)の3つのデータから、旧パリティ(P)の更新後のパリティである更新パリティ(P´)を生成(159)し、更新パリティ(P´)を、記憶装置(206B)に格納する(141)。その後、ノード(203B)は、パリティ更新依頼の結果(完了応答)を、ノード(203A)に返却する(51)。
以上が、データ書き込み処理の概要である。以下、本実施例を詳細に説明する。
図2は、本実施例における分散ストレージシステムの概略構成を示すブロック図である。
分散ストレージシステムは、少なくとも1つのストレージクラスタ(201)を有する。少なくとも1つのクライアント(101)が、ネットワーク(211)経由で、ストレージクラスタ(201)に接続される。2以上のストレージクラスタがある場合は、複数のストレージクラスタ間でシステムの冗長化を実現できる。
クライアント(101)は、ストレージクラスタ(201)が提供するストレージサービスを利用するために、ユーザが使用する計算機である。クライアント(101)は、ストレージサービスをネットワーク(211)経由で利用するために必要なソフトウェアとハードウェアとを含む。
ネットワーク(211)は、クライアント(101)と、ストレージクラスタ(201)とを相互に接続する通信網である。例えば、ネットワーク(211)は、LAN、SAN、Ethernet(登録商標)、InfiniBand(登録商標)、Fibre Channel、などなんでもよい。
ストレージクラスタ(201)は、クライアント(101)に対してストレージサービスを提供するシステムである。ストレージクラスタ(201)は、少なくとも1つのドメイン(202)と、少なくとも1つの管理用サーバ(221)を含む。
ドメイン(202)は、少なくとも1つのネットワークにより相互接続される。図示の例では、フロントエンドネットワーク(212)とバックエンドネットワーク(213)の2つのネットワークにより相互接続されている。ドメインの構成は、後述する。
フロントエンドネットワーク(212)は、クライアント(101)とストレージクラスタ(201)を接続するネットワーク(211)と接続される通信網である。これにより、クライアント(101)は、ストレージクラスタ(201)内の全ドメイン(202)とネットワーク接続される。フロントエンドネットワーク(212)は、ネットワーク(211)と同じ種類の通信網でよい。
バックエンドネットワーク(213)は、ドメイン間のみで接続される通信網である。バックエンドネットワーク(213)は、ネットワーク(211)と同じ種類の通信網でよい。
管理用サーバ(221)は、ストレージクラスタ(201)を管理するための計算機である。管理用サーバ(221)は、ストレージクラスタ(201)に存在するすべてのドメイン(202)とフロントエンドネットワーク(212)を介し接続される。管理用サーバ(221)とドメイン(202)を接続するネットワークは、フロントエンドネットワーク(212)に代えてまたは加えて、バックエンドネットワーク(213)、専用回線、または他の通信回線や通信デバイスでもよい。管理用サーバ(221)は、管理システムの一例でよい。「管理システム」は、1以上の計算機で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システムでよい。また、例えば、管理計算機(例えばサーバ)が表示用情報を遠隔の表示用計算機(例えばクライアント)に送信し表示用計算機がその情報を表示する場合(管理計算機が表示用計算機に情報を表示する場合)、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システムでよい。管理用サーバ(221)は、インターフェース部と、記憶部と、それらに接続されたプロセッサ部とを有してよい。記憶部が、ノード管理プログラム(20)を記憶し、プロセッサ部が、ノード管理プログラム(20)を実行してよい。管理用サーバ(221)(管理システムの一例)は、ストレージクラスタ(201)のドメイン(202)に属してもよいし、ドメイン(202)に属するノード(203)であってもよい。これにより、ストレージクラスタ(201)に、管理用の専用サーバを設置する必要がなく、ストレージクラスタ(202)内の全ノード(203)について、専用機能を意識せずに透過的に構成できるようになる。
上述したノード(203A)は、ドメイン(202A)内のノードであり、上述したノード(203B)は、ドメイン(202B)内のノードである。以下の説明では、いずれのノードやノード内要素が、いずれのドメインやいずれのノードに存在するかを分かり易くするために、ドメイン(202α)(αは、A、B、C、…)内のノードの参照符号の末尾を、“α”とし、ノード(203α)内の要素の参照符号の末尾も、“α”とすることがある。
図3は、ドメインの構成を示すブロック図である。
ドメイン(202)は、少なくとも1つの電源(241)と、少なくとも1つのノード(203)と、を含む。
電源(241)は、同ドメイン(202)内のノード(203)に電力を供給する。電源(241)は、ドメイン(202)毎に少なくとも1つ用意される。ドメイン(202)内のすべてのノード(203)は、そのノード(203)の属するドメイン(202)のもつ電源(241)に接続される。このため、ドメイン(202)の使用する電源(241)が障害等を理由に機能不能となった場合でも、他のドメイン(202)の使用する電源はその影響を受けない。これにより、異なるドメイン(202)に属するノード間のキャッシュメモリ上にデータを二重化することで、データを冗長化できる。
ノード(203)は、ストレージサービスを実現する計算機である。本実施例では、ノード(203)は、物理計算機であるが、ノードは、VMなどの仮想計算機であってもよい。ノードは、そのノードが属するドメイン(202)の電源(241)と接続される。ノード(203)は、ネットワークを介して、クライアント(101)と、ストレージクラスタ(201)内の全ドメイン内の全ノードと、相互接続される。本実施例では、ノード(203)は、フロントエンドネットワーク(212)と、バックエンドネットワーク(213)とを介して相互接続されている。ノードは、データ管理機能を有するノードと、パリティ管理機能を有するノードの二種類がある。なお、ノード(203)としては、データ管理機能のみを有するノード、パリティ管理機能のみを有するノード、または、データ管理機能とパリティ管理機能の両方の機能を有するノードがあってもよい。少なくとも1つのノード(203)が管理用サーバ(221)としての機能を有してもよい。
図4は、ノードの構成を示すブロック図である。
ノード(203)は、ストレージコントローラ(205)と、記憶装置(206)と、電源系統IF(207)から構成される。ストレージコントローラ(205)、記憶装置(206)および電源系統IF(207)の少なくとも1つは、2つ以上の冗長化構成でもよい。
ストレージコントローラ(205)は、フロントエンドNW-IF(251)と、バックエンドNW-IF(252)と、メモリ(254)と、記憶装置IF(255)と、それらに接続されたCPU(253)とを含む。
フロントエンドNW-IF(251)は、ノード(203)とフロントエンドネットワーク(212)との接続に利用される通信インターフェースデバイスである。バックエンドNW-IF(252)は、ノード(203)とバックエンドネットワーク(213)との接続に利用される通信インターフェースデバイスである。
メモリ(254)は、ノードがストレージクラスタの提供するストレージサービスを実現するために必要なプログラムおよび管理情報(284)を記憶する。プログラムとしては、例えば、ノード間で協調して処理を実行するために必要な機能を有するノード間連携プログラム(281)、データ管理機能に必要な処理を実行するデータ管理プログラム(282)、および、パリティ管理機能に必要な処理を実行するパリティ管理プログラム(283)といったプログラムがある。これらのプログラム(281)、(282)および(283)を含んだプログラムが、SDS(Software Defined Storage)でよい。管理情報(284)は、上記プログラムが処理を実行するために必要なテーブルを含む。
また、メモリ(254)は、キャッシュメモリ(121)を含む。本実施例において、キャッシュメモリ(121)は、メモリ(254)上に設けられた一部領域である。
CPU(253)は、メモリ(254)内のプログラムを実行する。
記憶装置IF(255)は、ストレージコントローラ(205)と記憶装置(206)との接続に利用される通信インターフェースデバイスである。
記憶装置(206)は、記憶装置IF(265)と、メモリ(262)と、スイッチ(263)と、複数(又は1)の記憶デバイス(264)と、それらに接続されたCPU(261)とを含む。記憶装置IF(265)は、記憶装置IF(255)に接続される通信インターフェースデバイスである。メモリ(262)は、記憶装置206に入出力されるデータや、CPU(261)に実行されるプログラムを格納する。スイッチ(263)は、CPU(261)またはメモリ(262)に対する接続先記憶デバイス(264)を切り替える。記憶デバイス(264)と、PDEVであり、例えば、HDDまたはSSDである。
電源系統IF(207)は、ノード(203)と、そのノードの属するドメインの電源(241)とを接続するために利用されるインターフェースデバイスである。
IF(251)および(252)のうちの少なくとも1つが、インターフェース部の一例である。メモリ(254)が、メモリ部の一例である。記憶装置(206)が、PDEV部の一例である。CPU(253)が、プロセッサ部の一例である。キャッシュメモリ(121)にデータを格納することを「キャッシュする」と言い、記憶装置(206)にデータを格納することを「永続化する」と言うことができる。
図5は、管理情報(284)内のテーブルを示す。
管理情報(284)は、構成管理テーブル(T101)と、ストライプ管理テーブル(T201)とを含む。
構成管理テーブル(T101)は、ドメインとノードの関係を示す。構成管理テーブル(T101)は、ドメイン(202)毎にエントリを有する。各エントリは、ドメインID(C101)と、ノードID(C102)といった情報を格納する。ドメインID(C101)は、ドメイン(202)を一意に特定できるドメインIDを示す。ノードID(C112)は、ノードを一意に特定できるノードIDを示す。
ストライプ管理テーブル(T201)は、ストライプ毎にデータとパリティの位置を示す。具体的には、例えば、ストライプ管理テーブル(T201)は、ストライプ毎にエントリを有する。各エントリは、ストライプID(C201)、データ位置(C202)、およびパリティ位置(C203)といった情報を格納する。図5の例によれば、各ストライプについて、データストリップとパリティストリップは3対1で構成されている。
ストライプID(C201)は、ストライプを一意に特定できるストライプIDを示す。
データ位置(C202)は、当該ストライプ内の全データの各々の位置情報である。例えば、各データに対して、位置情報は、(ノードID、ノード内の記憶装置位置)で表現される。「ノード内の記憶装置位置」は、LBA(Logical Block Address)のような論理アドレス(例えば、ノード領域における論理アドレス)と、当該論理アドレスに対応する物理アドレス(例えば、記憶デバイス(264)のIDと、当該記憶デバイス(264)が提供する論理アドレス空間における論理アドレス)とのうちの少なくとも1つを含んでもよい。
パリティ位置(C203)は、当該ストライプ内の全パリティの各々の位置情報である。その位置情報も、(ノードID、ノード内の記憶装置位置)で表現される。
図6は、ライトスルー書き込み処理の概要を示すブロック図である。ライトスルー書き込み処理は、図1を参照して説明したライトバック書き込み処理といくつかの共通(例えば、転送先として、電源(241)が異なるノードを選択すること)がある。ここでは、ライトバック書き込み処理との差分を主に説明する。
ライトスルー書き込み処理は、例えばノード(203A)がクライアント(101)から更新データ(D1´)のライト要求をネットワーク経由で受信(351)した場合に開始する。
ノード(203A)は、クライアント(101)からの更新データ(D1´)を、キャッシュメモリ(121A)へ更新データを登録(332)する。その後、ノード(203A)は、記憶装置(206A)に更新データ(D1´)を格納(352)する。
次に、ノード(203A)は、更新データ(D1´)に対応した旧データ(D1)を、記憶装置(206A)から読み込み(353)、当該旧データ(D1)をキャッシュメモリ(121A)に登録(335)する。ノード(203A)は、更新データ(D1´)と旧データ(D1)から、中間パリティ(Q)を生成(354)し、中間パリティ(Q)を、キャッシュメモリ(121A)に登録(336)する。その後、ノード(203A)は、管理情報(284A)を参照し、更新データ(D1´)に対応するパリティノード(203B)を特定し、特定したノード(203B)へ中間パリティ(Q)を転送(356)する。
次に、ノード(203B)は、ノード(203A)から転送された中間パリティ(Q)を受信し、キャッシュメモリ(121B)へ当該中間パリティ(Q)を登録(337)する。その後、ノード(203B)は、中間パリティ(Q)に対応する旧パリティ(P)を、記憶装置(206B)から読み込み(357)、当該旧パリティ(P)をキャッシュメモリ(121B)に登録(339)する。ノード(203B)は、キャッシュメモリ(121B)上の中間パリティ(Q)と旧パリティ(P)から更新パリティ(P´)を生成(358)し、当該更新パリティ(P´)をキャッシュメモリ(121B)に登録(340)する。その後、ノード(203B)は、当該更新パリティ(P´)を、記憶装置(124)に格納(359)し、ノード(203A)に結果を返却(360)する。
最後に、ノード(203A)は、ノード(103)からの結果を受信し、クライアント(101)へ結果を返却(361)する。
以上のように、ライトスルー書き込み処理において、中間パリティ(Q)の転送先は、更新データ(D1´)をクライアント(101)から受信したノード(203A)の電源(241A)と異なる電源(241B)から電力供給を受けるノード(203B)である。
図7は、フルストライプ書き込み処理の概要を示すブロック図である。図7は、3つのユーザストリップと1つのパリティストリップで1つのストライプが構成されている場合の例を示す。
フルストライプ書き込み処理は、1つのストライプにユーザデータユニット(1つのストライプに書き込まれる全ての更新データ)を書き込む処理である。フルストライプ書き込み処理は、1つのストライプに書き込まれる全ての更新データ(D1´)、(D2´)および(D3´)のライト要求を、例えばノード(203A)がネットワーク経由で受信(451)したことを契機とし、開始する。
ノード(203A)は、クライアント(101)からの更新データ(D1´)、(D2´)および(D3´)を、キャッシュメモリ(121A)へ登録(432)する。その後、ノード(203A)は、更新データ(D1´)、(D2´)および(D3´)から更新パリティ(P´)を生成(456)し、更新パリティ(P´)をキャッシュメモリ(121A)に登録(433)する。
以降の処理は、ライトバック(キャッシュメモリにデータを書き込んだ場合に結果を返す方式)とライトスルー(記憶装置にデータを書き込んだ場合に結果を返す方式)によって、その処理内容が異なる。
まずは、フルストライプ書き込み処理をライトバックで実施した場合の処理を説明する。
ノード(203A)は、管理情報(284A)を参照し、その更新データ(D1´)、(D2´)および(D3´)の格納先ストライプを特定し、特定したストライプについて、データ位置およびパリティ位置(つまり、転送先ノード)を特定する。図7の例によれば、転送先ノードとして、データ管理機能を行うノード(203C)および(203D)と、パリティ管理機能を行うノード(203B)とが特定される。ノード(203A)は、転送先ノード(203C)および(203D)に対し、更新データ(D2´)および(D3´)をそれぞれ転送((452)および(454))し、転送先ノード(203B)に対し、更新パリティ(P´)を転送(457)する。ノード(203C)および(203D)は、キャッシュメモリ(121C)および(121D)にそれぞれ受信した更新データ(D2´)および(D3´)を登録((434)および(435))し、ノード(203A)に結果をそれぞれ返却((453)および(455))する。ノード(203B)は、キャッシュメモリ(121B)に受信した更新パリティ(P´)を登録(436)し、ノード(203A)に結果を返却(486)する。最後に、ノード(203A)は、3つのノード(203B)、(203C)および(203D)からそれぞれ結果を受信した場合、クライアント(101)へ結果を返却(459)する。以降、ノード(203A)~(203D)の各々は、適切なタイミングで、キャッシュメモリ内の更新データ(または更新パリティ)のデステージ処理を実行する。
次に、フルストライプ書き込み処理をライトスルーで実施した場合の処理を説明する。
ライトスルーの場合、ノード(203A)は、更新データ(D1´)、(D2´)および(D3´)のうち、ノード(203A)が管理する更新データ(D1´)を記憶装置(206A)に格納(460)する。その後、ノード(203A)は、転送先ノード(203C)および(203D)に対し、更新データ(D2´)および(D3´)をそれぞれ転送((452)および(454))し、転送先ノード(203B)に対し、更新パリティ(P´)を転送(457)する。
ノード(203C)および(203D)は、それぞれ、キャッシュメモリ(121C)および(121D)に受信した更新データ(D2´)および(D3´)を登録((434)および(435))し、記憶装置(206C)および(206D)に更新データ(D2´)および(D3´)を格納((461)および(462))し、ノード(203A)に結果を返却((453)および(455))する。また、ノード(203Bは、キャッシュメモリ(121B)に受信した更新パリティ(P´)を登録(436)し、記憶装置(206B)に更新パリティ(P´)を格納(463)し、ノード(203A)に結果を返却(486)する。最後に、ノード(203A)は、3つのノード(203B)、(203C)および(203D)からそれぞれ結果を受信した場合、クライアント(101)へ結果を返却(459)する。
ライトバックおよびライトスルーのいずれでも、更新データ(D1´)、(D2´)および(D3´)のうち、ノード(203A)に永続化される更新データ(D1´)以外の更新データ(D2´)および(D3´)の各々について、ノード(203A)は、当該更新データの複製先として、ノード(203A)の電源(241A)と異なる電源から電力供給を受けるn個のノード(nは自然数)のを選択し、選択したn個のノードの各々に更新データを転送してよい。
図8は、データ書き込み処理のフローチャートの一例である。データ書き込み処理は、例えば、クライアント(101)からのライト要求を契機として、データ管理機能を実行するノードのもつストレージコントローラ(205)のCPU(253)により実行される。
データ管理プログラム(282)は、受信したライト要求を参照する(S101)。例えば、データ管理プログラム(282)は、ライト要求から、データ書き込み処理に必要な情報(ノードIDと、記憶装置IDと、更新データのサイズと、更新データの書き込み位置とを含んだ情報)を特定する。
データ管理プログラム(282)は、特定した情報をもとに、書き込み処理の種類がフルストライプ書き込み処理か否かを判定する(S102)。
S102の判定結果が偽の場合、データ管理プログラム(282)は、書き込み処理の種類がライトバック書き込み処理か否かを判定する(S103)。例えば、ライト要求に、ライトバックとライトスルーのうち採用する方式が指定されていて、その指定を基に、S103の判定が行われてよい。ライトバックとライトスルーの切り替えは、手動、または、自動(例えば、管理用サーバ(221)またはデータ管理プログラム(282)による判断)により実行されてよい。例えば、下記のように、ライトバックとライトスルーとを切り替えることが可能である。
・ストレージクラスタ(201)内に一定量以上のドメイン(つまり、多くの電源)が存在する場合(例えば通常運用時に)、ライトバックが採用される。ライトバックによる冗長化でも、データ保護に問題ないと考えられるためである。
・ストレージクラスタ(201)内に一定量以上のドメインが存在しない場合(例えば障害発生時に)、ライトスルーが採用される。データ消失を防止するためである。
・ユーザ(ストレージを使用するソフトウェアなど)の要件が、レイテンシ性能重視の場合は、ライトバックが採用される。
・ユーザの要件が、データ保護重視(例えば、アーカイブ目的など)の場合は、ライトスルーが採用される。
S103の判定結果が真の場合、ライトバック書き込み処理(図9)が実行される(S104)。S103の判定結果が偽の場合、ライトスルー書き込み処理(図13)が実行される(S105)。
S102の判定結果が真の場合、データ管理プログラム(282)は、フルストライプ書き込みの種類がライトバックか否かを判定する(S106)。S106の判定方法は、S103の判定方法と同じでよい。
S106の判定結果が真の場合、フルストライプライトバック書き込み処理(図14)が実行される(S107)。S106の判定結果が偽の場合、フルストライプライトスルー書き込み処理(図15)が実行される(S108)。
最後に、データ管理プログラム(282)は、クライアント(101)へ結果を返却し(S109)、データ書き込み処理を終了する。
図9は、ライトバック書き込み処理(図8のS104)のフローチャートの一例である。
まず、データノードのノード間連携プログラム(281)は、クライアント(101)からのライト要求中の情報と、管理情報(284)とをもとに、更新データの複製先ノードを選択する(S201)。更新データの複製先ノードとして、例えば、更新データの格納先ストライプに対応したパリティの格納先のパリティノードが選択される。その後、データノードのノード間連携プログラム(281)は、複製先のパリティノードへネットワーク経由で、更新データの複製を転送する(S202)。この転送処理は、同期処理(ライト要求に応答して行われる処理中の処理)でもよいし非同期処理(ライト要求に応答して行われる処理とは別の処理)のどちらでもよい。
次に、パリティノードのノード間連携プログラム(281)は、データノードよりネットワーク経由で更新データの複製を受信する(S203)。その後、パリティノードのパリティ管理プログラム(283)は、更新データの複製をキャッシュメモリ(121)に登録する(S204)。最後に、パリティノードのノード間連携プログラム(281)は、データノードへネットワーク経由で処理の結果を返却する(S205)。
データノードのノード間連携プログラム(281)は、複製先のパリティノードからネットワーク経由で処理の結果を受信し(S206)、ライトバック書き込み処理を終了する。
図10は、旧データ転送処理のフローチャートの一例である。
まず、データノードのデータ管理プログラム(282)は、データノードの記憶装置(206)から旧データを読み込む(S301)。次に、データノードのノード間連携プログラム(281)は、データノードの保持する管理情報(284)をもとに、旧データの転送先ノードを特定する(S302)。データノードのノード間連携プログラム(281)は、旧データを、S302で特定した転送先ノードへ転送する(S303)。
パリティノードのノード間連携プログラム(281)は、データノードより旧データを受信する(S304)。次に、パリティノードのパリティ管理プログラム(283)は、受信した旧データをキャッシュメモリ(121)に登録する(S305)。その後、パリティノードのノード間連携プログラム(281)は、データノードに結果を返却する(S306)。
データノードのノード間連携プログラム(281)は、パリティノードから結果を受信し(S307)、旧データ転送処理を終了する。
図11は、データノードのデステージ処理のフローチャートの一例である。
まず、データノードのデータ管理プログラム(282)は、管理情報(284)をもとに、デステージ対象データを選択する(S401)。次に、データ管理プログラム(282)は、デステージ対象データを、データノードの記憶装置(206)に格納する(S402)。その後、データ管理プログラム(282)は、デステージ対象データの使用領域をキャッシュメモリ(121)から解放する(S403)。最後に、ノード間連携プログラム(281)は、デステージ対象データを示す情報(例えば、デステージ対象データの位置と格納先ストリップのID)を含んだパリティ更新依頼をパリティノードへ転送し(S404)、データノードのデステージ処理を終了する。
図12は、パリティノードのデステージ処理のフローチャートの一例である。
まず、パリティノードのノード間連携プログラム(281)は、データノードからデステージ対象データの情報を含んだパリティ更新依頼を受信する(S501)。次に、パリティ管理プログラム(283)は、受信した依頼に応答して、デステージ対象データの旧パリティを特定し、特定した旧パリティを記憶装置(206)から読み込む(S502)。次に、パリティ管理プログラム(283)は、キャッシュメモリ(121)にあるデステージ対象データと、デステージ対象データの旧データと、旧パリティとを用いて、更新パリティの生成(パリティの更新)を行う(S503)。その後、パリティ管理プログラム(283)は、作成した更新パリティを、パリティノードの記憶装置(206)に書き込む(S504)。最後に、パリティ管理プログラム(283)は、デステージ対象データと、デステージ対象データの旧データとの使用領域をキャッシュメモリ(121)から解放し(S505)、パリティノードのデステージ処理を終了する。S505では、依頼に対する結果が返却されてよい。
図13は、ライトスルー書き込み処理(図8のS105)のフローチャートの一例である。
データノードのデータ管理プログラム(282)は、更新データをデータノードの記憶装置(206)へ格納する(S601)。次に、データノードのパリティ管理プログラム(283)は、更新データの旧データをデータノードの記憶装置(206)からキャッシュメモリ(121)に読み込む(S602)。次に、データノードのパリティ管理プログラム(283)は、更新データとS602で読み込んだ旧データとを用いて、中間パリティを生成する(S603)。次に、データノードのノード間連携プログラム(281)は、S603で生成した中間パリティの送信先ノード(パリティノード)を選択する(S604)。その後、データノードのノード間連携プログラム(281)は、S604で選択したパリティノードへ、中間パリティを転送する(S605)。
パリティノードのノード間連携プログラム(281)は、データノードから中間パリティを受信し(S606)、その中間パリティをキャッシュメモリ(121)に登録する。パリティノードのパリティ管理プログラム(283)は、中間パリティに対応する旧パリティをパリティノードの記憶装置(206)からキャッシュメモリ(121)に読み込む(S607)。パリティノードのパリティ管理プログラム(283)は、中間パリティと旧パリティとを用いて、更新パリティを生成する(S608)。パリティノードは、更新パリティをパリティノードの記憶装置(206)に格納する(S609)。パリティノードのノード間連携プログラム(281)は、データノードに結果を返却する(S610)。
データノードのノード間連携プログラム(281)は、パリティノードから結果を受信(S611)し、ライトスルー書き込み処理を終了する。
図14は、フルストライプライトバック書き込み処理(図8のS107)のフローチャートの一例である。当該処理では、ストライプを構成するユーザストリップの数と同数のデータノードが必要である。
データノードのパリティ管理プログラム(283)は、ストライプ分の更新データを用いて更新パリティを生成する(S700)。データノードのノード間連携プログラム(281)は、管理情報(284)をもとに、複製先のデータノードおよびパリティノードを特定する(S701)。その後、データノードのノード間連携プログラム(281)は、複製先のデータノードとパリティノードに対して、更新データおよび更新パリティを転送する(S702)。
複製先データノードのノード間連携プログラム(281)と複製先パリティノードのノード間連携プログラム(281)は、データノードから更新データおよび更新パリティを受信する(S703)。複製先データノードのデータ管理プログラム(282)と、複製先パリティノードのパリティ管理プログラム(283)は、キャッシュメモリ(121)に受信した更新データおよび更新パリティを登録する(S704)。複製先データノードのノード間連携プログラム(281)と複製先パリティノードのノード間連携プログラム(281)は、データノードに結果を返却する(S705)。
データノードのノード間連携プログラム(281)は、全複製先ノードから結果を受信し(S706)、フルストライプライトバック書き込み処理を終了する。
図15は、フルストライプライトスルー書き込み処理(図8のS108)のフローチャートの一例である。当該処理でも、ストライプを構成するユーザストリップの数と同数のデータノードが必要である。
データノードのパリティ管理プログラム(283)は、ストライプ分の更新データを用いて更新パリティを生成し、データノードのデータ管理プログラム(282)は、更新データをデータノードの記憶装置(206)へ格納する(S800)。データノードのノード間連携プログラム(281)は、管理情報(284)をもとに、複製先のデータノードおよびパリティノードを特定する(S801)。その後、データノードのノード間連携プログラム(281)は、複製先のデータノードとパリティノードに対して、更新データおよび更新パリティを転送する(S802)。
複製先データノードのノード間連携プログラム(281)と複製先パリティノードのノード間連携プログラム(281)は、データノードから更新データおよび更新パリティを受信する(S803)。複製先データノードのデータ管理プログラム(282)と、複製先パリティノードのパリティ管理プログラム(283)は、キャッシュメモリ(121)に受信した更新データおよび更新パリティを登録し、かつ、更新データおよび更新パリティを記憶装置(206)に格納する(S804)。複製先データノードのノード間連携プログラム(281)と複製先パリティノードのノード間連携プログラム(281)は、データノードに結果を返却する(S805)。
データノードのノード間連携プログラム(281)は、全複製先ノードから結果を受信し(S806)、フルストライプライトスルー書き込み処理を終了する。
図16は、ノード追加処理のフローチャートの一例である。
ノード追加処理は、分散ストレージシステムにノードを追加する処理である。管理者が新しいノードをストレージクラスタ(201)に物理的に接続し、その後、管理者が、全追加対象ノードのIDを引数として、そのストレージクラスタ(201)の管理用サーバ(221)のノード追加プログラム(20)にノード追加処理の実行命令を入力する。当該実行命令に応答して、管理用サーバ(221)のノード管理プログラム(20)が、ノード追加処理を開始する。
ノード管理プログラム(20)は、実行命令内の引数から追加先のドメインを決定する(S901)。ノード管理プログラム(20)は、追加するノードをストレージクラスタ(201)のネットワーク(212)および(213)に接続し、通信可能な状態にする(S902)。ノード管理プログラム(20)は、少なくとも1つのノード(203)の構成管理テーブル(T101)(追加先ドメインに対応したノードID(C102))に、追加対象ノードのIDを追加する(S903)。ノード管理プログラム(20)は、同クラスタ(201)内の全ノード(203)に対して、構成管理テーブル(T101)の同期を依頼する(S905)。当該依頼に応答して、同クラスタ(201)内の全ノード(203)は、構成管理テーブル(T101)の同期を取る(内容を同一とする)。ノード管理プログラム(20)は、同クラスタ(201)内の全ノード(203)に対して、データ再配置処理を依頼する(S904)。当該依頼に応答して、同クラスタ(201)内の全ノード(203)は、ノード間連携プログラム(281)を実行することによって、データ再配置処理を実行し、当該処理に応じてストライプ管理テーブル(T201)を更新する。この再配置処理により、追加対象ノード以外の少なくとも一部のノードから追加対象ノードにデータまたはパリティが移動する。
ノード管理プログラム(20)は、新たに追加するすべてのノードについて処理を完了したかを判断する(S906)。S906の判断結果が真の場合に、ノード追加処理が終了する。S906の判断結果が偽の場合、未処理のノードについてS901が行われる。
S905は、ノード間での同期に代えて、ノード管理プログラム(20)が、全ノードに、更新後の構成管理テーブル(T101)を配信することであってもよい。
図17は、ノード削除処理のフローチャートの一例である。
ノード削除処理は、分散ストレージシステムからノードを削除する処理である。管理者が、全削除対象ノードのIDを引数として、ノード管理プログラム(20)にノード削除処理の実行命令を入力する。当該実行命令に応答して、ノード管理プログラム(20)が、ノード削除処理を開始する。
ノード管理プログラム(20)は、少なくとも1つのノード(203)の構成管理テーブル(T101)(削除対象ノードが属するドメイン(202)に対応したノードID(C102))から、削除対象ノードのIDを削除する(S1001)。ノード管理プログラム(20)は、同クラスタ(201)内の全ノード(203)に対して、構成管理テーブル(T101)の同期を依頼する(S1002)。当該依頼に応答して、同クラスタ(201)内の全ノード(203)は、構成管理テーブル(T101)の同期を取る。ノード管理プログラム(20)は、同クラスタ(201)内の全ノード(203)に対して、データ再配置処理を依頼する(S1003)。当該依頼に応答して、同クラスタ(201)内の全ノード(203)は、ノード間連携プログラム(281)を実行することによって、データ再配置処理を実行し、当該処理に応じてストライプ管理テーブル(T201)を更新する。この再配置処理により、削除対象ノード内の全てのデータ(およびパリティ)が、削除対象ノード以外の少なくとも一部のノードに移動する。
ノード管理プログラム(20)は、削除対象ノードに停止要求を送信する(S1004)。この要求に応答して、削除対象ノードは、当該クラスタ(201)から切断される。
ノード管理プログラム(20)は、全ての削除対象ノードについて処理を完了したか否かを判断する(S1005)。S1005の判断結果が真の場合は、ノード削除処理が終了する。S1005の判断結果が偽の場合は、未処理の削除対象ノードについてS1001が行われる。
S1002は、ノード間での同期に代えて、ノード管理プログラム(20)が、全ノードに、更新後の構成管理テーブル(T101)を配信することであってもよい。
ノード追加処理およびノード削減処理の少なくとも1つは、例えば次のように行われてよい。ドメイン(202)は、ノード(例えばブレードサーバ)203が搭載されるラックでよい。ドメイン(202)の追加および削除は、既存のドメイン(202)に対するノード(203)の追加および削除に比べて、処理コスト(例えば、コンピューティングリソースの負荷)が大きい。そこで、クラスタ(201)に搭載可能な最大数のドメイン(202)が予めクラスタ(201)に用意されている。複製元ノードと複製先ノードの電源が異なるため、ノード(203)は、全ドメイン(202)になるべく均等に分散するように追加または削除される。具体的には、例えば、管理者が追加対象または削除対象のノードを決定することに代えて、ノード管理プログラム(20)が、全ドメイン(202)になるべく均等に分散するように、下記を決定してよい。
・追加先または削除元のドメイン(202)。
・追加先または削除元のドメイン(202)毎に、追加されるまたは削除されるノード(203)の数。(追加先または削除元のドメイン(202)毎に、追加されるまたは削除されるノードは、決定されたノード数分、ランダムで決定されてよい。)
また、実施例1では、ストライプ毎に、データノードとなるべきノードとパリティノードとなるべきノードが予め決められていてもよいし、全ストライプについて、パリティノードが同一ノードであってもよい。また、更新データの転送先は、パリティノードを含むn個のノード(nは自然数)であってもよい。これにより、更新データのn重化が可能である。なお、「更新データ」は、RAIDやErasure Cordingのようなデータ保護技術に従うデータであって、ライト要求に従うデータの少なくとも一部のデータでよい。
次に、本発明の実施例2について説明する。以下、実施例1との相違点を主に説明し、実施例1との共通点については、説明を省略又は簡略する。
図18は、実施例2におけるドメインの構成を示したブロック図である。
実施例2では、少なくとも1つのドメイン(202)が、電源(241)に対して複数のサブドメイン(501)を有する。
各サブドメイン(501)は、少なくとも1つのノード(203)と、少なくとも1つのUPS(Uninterruptible Power Supply)(502)とを含む。UPS(502)は、サブ電源の一例である。サブドメイン(501)内の全ノード(203)は、同サブドメイン(501)が有するUPS(502)に接続される。
実施例2では、UPS(502)を有するサブドメイン(501)があるため、ドメインの電源(241)が障害等でその機能が利用できなくなった場合においても、サブドメイン(501)内の全ノード(203)内のデータは保護できる。このため、電源(241)の障害耐性の向上が期待できる。例えば、異なるドメイン(202)に属するノード(203)間でのデータ冗長化に加え、異なるサブドメイン(501)に属するノード(203)間でもデータを冗長化することが可能となる。
図19は、実施例2における構成管理テーブルの構成を示す。
構成管理テーブル(T101)は、サブドメイン(501)毎にエントリを有する。各エントリは、ドメインID(C101)、サブドメインID(C301)およびノードID(C102)を有する。ドメインID(C101)は、サブドメインが属するドメインのIDを示す。サブドメインID(C301)は、サブドメインのIDを示す。ノードID(C302)は、サブドメインに属する全ノードのIDを示す。
実施例2では、例えば、複製元(転送元)のノードのノード間連携プログラム(281)は、複製先(転送先)のノードを、下記のようにして決定してよい。下記のように、電源(241)が異なるノードを優先的に複製先として選択することで、データ保護の維持の確実性を向上することが期待できる。下記(x1)乃至(x3)は、例えば図9のS201で行われてよい。
(x1)複製元ノードの電源(241)(ドメイン(202))と異なる電源(241)のノードのうち、複製先として選択可能なノード(例えば、空き容量が所定条件を満たすノード)が少なくとも1つあるか否かを判断する。
(x2)(x1)の判断結果が真の場合、複製元ノードの電源(241)と異なる電源(241)のノードから、複製先とするノードを選択する。
(x3)(x1)の判断結果が偽の場合、または、(x2)で選択されたノード数が、複製先のノード数として必要なノード数n(nは自然数)に満たない場合、複製元ノードの電源(241)と同じ電源(241)のノードではあるが、UPS(502)(サブドメイン(501))が複製元ノードと異なるノードを、複製先として、複製先ノード数がnとなるように、選択する。
また、実施例2では、ノード追加処理およびノード削減処理の少なくとも1つは、例えば次のように行われてよい。すなわち、ノード(203)は、全ドメイン(202)になるべく均等に分散するように追加または削除されることに加えて、同一ドメイン(202)内については、全サブドメイン(501)になるべく均等に分散するように追加または削除される。サブドメイン(501)の追加および削除は、既存のサブドメイン(501)に対するノード(203)の追加および削除に比べて、処理コストが大きいためである。具体的には、例えば、管理者が追加対象または削除対象のノードを決定することに代えて、ノード管理プログラム(20)が、追加先または削除元のドメイン(202)内の全サブドメイン(501)になるべくノード(203)が均等に分散するように、下記を決定してよい。
・追加先または削除元のサブドメイン(501)。
・追加先または削除元のサブドメイン(501)毎に、追加されるまたは削除されるノード(203)の数。(追加先または削除元のサブドメイン(501)毎に、追加されるまたは削除されるノードは、決定されたノード数分、ランダムで決定されてよい。)
電源(241)とUPS(502)とを「電源部」と総称することができる。言い換えれば、「電源部」は、電源(241)とUPS(502)とのいずれであってもよい。
本発明の実施例3について説明する。以下、実施例1と、実施例2との相違点を主に説明し、実施例1と、実施例2との共通点については、説明を省略又は簡略する。
実施例3では、旧データの送信タイミングは、データノードのI/O(Input/Output)負荷をもとに推定された、データノードでの更新データのデステージのタイミング、よりも前のタイミングである。すなわち、データノードは、推定されたデステージタイミングよりも先行して、更新データの旧データを、当該旧データに対応した旧パリティをもつパリティノードへ転送する。
図20は、実施例3における旧データ転送処理の概要を示すブロック図である。
図20の例によれば、データノード(203A)とパリティノード(203B)において、いくつか更新データ転送が実施されている状態にある。具体的には、更新データ(D1´)および(E1´)がデータノード(203A)のキャッシュメモリ(121A)に格納されており、これらの更新前データの旧データ(D1)および(E1)と、旧データ(F1)とが、データノード(203A)の記憶装置(206A)に格納されている。また、更新データの複製としての更新データ(D1´)および(E1´)がパリティノード(203B)のキャッシュメモリ(121B)に格納されており、旧データ(D1)、(E1)および(F1)にそれぞれ対応するパリティ(P)、(R)および(S)が、パリティノードの記憶装置(206B)に格納されている。
この状態で、データノード(203A)が、クライアント(101)から、旧データ(F1)の更新データ(F1´)のライト要求を受信(551)したとする。
データノード(203A)は、更新データ(F1´)をキャッシュメモリ(121A)に登録する(532)。その後、データノード(203A)は、更新データ(F1´)をパリティノード(203B)へ転送する(552)。パリティノード(203B)は、受信した更新データ(F1´)をキャッシュメモリ(121B)に登録(533)し、結果を返却(553)する。データノード(203A)は、結果を受けたら、クライアント(101)へ結果を返却する(554)。
データノード(203A)(例えばデータ管理プログラム(282))は、クライアント(101)から受信したデータの量であるデータ転送量と、キャッシュメモリ(121A)の登録状況となどを元に、I/O負荷を監視する(581)。このI/O負荷を元に、データノード(203A)(例えばデータ管理プログラム(282))は、次のデステージ処理のタイミングを推定し、当該推定されたタイミングよりも先行して旧データを転送する。例えば、データノード(203A)は、キャッシュメモリ(121A)のメモリ使用量の増加量から、デステージ処理開始を決定する閾値までの到達時刻を推定する。図20では、キャッシュメモリ(121A)に登録された更新データ(D1´)、(E1´)および(F1´)のうち、次のデステージ対象が、更新データ(D1´)であるとする。この時、I/O負荷の監視結果を基に推定された次のデステージタイミングに先行して、データノード(203A)は、次のデステージ対象の更新データ(D1´)の旧データ(D1)を転送する。すなわち、データノード(203A)は、記憶装置(206A)から旧データ(D1)を読み込み(555)、当該旧データ(D1)をキャッシュメモリ(121A)に登録し(539)、当該旧データ(D1)を、パリティノード(203B)へ転送する(556)。パリティノード(203B)は、キャッシュメモリ(121B)に旧データ(D1)を登録する(540)。これにより、パリティノード(203B)において、次のデステージ対象の更新データ(D1´)とその旧データ(D1)の組(582)をもつことができる。
以上の処理により、デステージ処理において、デステージ対象の更新データに対応する旧データの転送処理を削減することができ、デステージ処理の処理時間を短縮できる。
本発明の実施例4について説明する。以下、実施例1と、実施例2と、および実施例3と、の相違点を主に説明し、実施例1と、実施例2と、および実施例3との共通点については、説明を省略又は簡略する。
実施例4は、本発明におけるノード間を跨いだストライプ生成処理の一例を説明する。
図21は、実施例4におけるデータ書き込み処理の一例を示したブロック図である。図21の例では、1つのストライプは、3つのデータストリップと1つのパリティストリップとから構成されている。このため、1つのストライプについて、3つのデータノード(203A)、(203C)および(203D)と、1つのパリティノード(203B)とが存在する。3つのデータノード(203A)、(203C)および(203D)には、1以上のクライアント(101)が接続される。本実施例では、3つのデータノード(203A)、(203C)および(203D)に、それぞれ、3つのクライアント(101A)、(101C)および(101D)が接続されている。
まず、クライアント(101)とデータノード(203)との組毎に、データノードからパリティノードへデータが複製される。例えば、クライアント(101A)とデータノード(203A)の組において、以下の処理が行われる。
(v1)クライアント(101A)は、更新データ(D1)のライト要求をデータノード(203A)に転送する(651)。
(v2)データノード(203A)は、更新データ(D1)をキャッシュメモリ(121A)に登録する(634)。
(v3)データノード(203A)は、更新データ(D1)を、パリティノード(203B)へ転送する(652)。
(v4)パリティノード(203B)から、受信した更新データ(D1)をキャッシュメモリ(121B)に登録する(641)。
(v5)パリティノード(203B)が、データノード(203A)へ結果を返却する(653)。
(v6)データノード(203A)は、パリティノード(203B)から結果を受信した場合に、クライアント(101A)へ結果を返却する(654)。
(v1)~(v6)のような処理が、クライアント(101C)とデータノード(203C)との組、および、クライアント(101D)とデータノード(203D)との組の各々においても、行われる。その後、データノード(203A)、(203C)および(203D)の各々は、適切なタイミングで、更新データを、当該データノードの記憶装置へデステージする。
次に、パリティノード(203B)は、適切なタイミングで、クライアント(101A)の更新データ(D1)、クライアント(101C)の更新データ(E1)、および、クライアント(101D)の更新データ(F1)から、パリティ(P)を生成し(666)、パリティ(P)を、記憶装置(206B)に格納する(667)。
実施例4によれば、ストライプ毎に、動的に、パリティノードを決定することができる。例えば、ノード間通信により、ある1つのストライプについて、全ユーザデータが異なるノードに存在することがわかった場合、当該異なるノード以外のうちのいずれかのノード(例えばノード(203B)が、当該異なるノードのうちのいずれか(例えばノード(201A))によって、パリティノードとして決定されてよい。
実施例4では、ノード(203A)、(203C)および(203D)の各々が、転送元ノードとして、例えば図1を参照して説明したノード(203A)と同様の処理を実行してよい。ノード(203B)が、旧パリティをキャッシュメモリ(121B)に読み込み旧パリティを用いることに代えて、1つのストライプ分の更新データ(D1)、(E1)および(F1)を用いてパリティを生成してよい。
以上、本発明の幾つかの実施例を説明したが、以上の実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある例の構成の一部を他の例の構成に置き換えることが可能であり、ある例の構成に他の例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。図の構成は説明上必要と考えられるものを示しており、製品上必ずしも全ての構成を示しているとは限らない。
203:ノード

Claims (7)

  1. クライアントからライト要求を受信する分散ストレージシステムであって、
    複数の電源部から電力供給を受ける複数の計算機を有し、
    前記複数の計算機のうち、前記クライアントからライト要求を受信した計算機である第1計算機が、
    (A)前記ライト要求に付随したデータの少なくとも一部である更新データをキャッシュし、
    (B)前記更新データの二重化のための転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちの当該更新データに対応したパリティを格納する計算機であるパリティ計算機を選択し、
    (C)キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記選択したパリティ計算機に、前記更新データを転送し、
    前記パリティ計算機が、
    (D)前記第1計算機からの二重化のための更新データをキャッシュした場合に結果を前記第1計算機に返し、
    前記第1計算機が、
    (E)前記パリティ計算機から前記更新データをキャッシュした結果を受信した場合に、キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記クライアントに前記ライト要求の結果を返却し、
    (F)前記更新データの旧データを前記パリティ計算機に転送し、
    前記パリティ計算機が、
    (G)当該パリティ計算機において、前記旧データと、前記クライアントに前記ライト要求の結果を送信するためにキャッシュされている二重化のための前記更新データと、当該更新データに対応する旧パリティとを用いて、当該旧パリティの更新後のパリティである更新後パリティを生成する、分散ストレージシステム。
  2. クライアントからライト要求を受信する分散ストレージシステムであって、
    複数の電源部から電力供給を受ける複数の計算機を有し、
    前記複数の計算機のうち、前記クライアントからライト要求を受信した計算機である第1計算機が、
    (A)前記ライト要求に付随したデータの少なくとも一部である更新データをキャッシュし、
    (B)前記更新データの転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちのn個の計算機(nは自然数)であるn個の第2計算機を選択し、
    (C)前記選択したn個の第2計算機に、前記更新データをそれぞれ転送し、
    前記n個の第2計算機の少なくとも1つが、
    (D)前記第1計算機からの更新データをキャッシュした場合に結果を前記第1計算機に返し、
    (A)でキャッシュされた更新データが、1つのストライプに格納される全ての更新データの場合、当該全ての更新データの各々について、(B)乃至(D)が行われ、
    前記第1計算機は、更に、
    (K)前記全ての更新データを用いてパリティを生成し、
    (L)前記パリティを、前記全ての更新データに対応したパリティを格納する第2計算機であるパリティ第2計算機に転送し、
    前記パリティ第2計算機が、
    (M)前記第1計算機からの前記パリティをキャッシュした場合に結果を前記第1計算機に返し、
    (A)でキャッシュされた更新データが、1つのストライプに格納される全ての更新データであり、第1の方式であるライトバックが採用される場合、当該全ての更新データの各々について(B)乃至(D)が行われ、かつ、(K)乃至(M)が行われ、
    (A)でキャッシュされた更新データが、1つのストライプに格納される全ての更新データであり、第2の方式であるライトスルーが採用される場合、当該全ての更新データの各々について(B)乃至(D)が行われ、かつ、(K)乃至(M)が行われることに代えて、
    前記第1計算機は、
    (N)前記全ての更新データのうちの一の更新データを永続化し、
    (O)前記全ての更新データのうちの前記一の更新データ以外の更新データの各々について、
    (o1)当該更新データの転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちのn個の計算機(nは自然数)であるn個の第2計算機を選択し、
    (o2)前記選択したn個の第2計算機に、前記更新データをそれぞれ転送し、
    前記n個の第2計算機のうちの少なくとも1つが、
    (o3)前記第1計算機からの前記更新データを永続化した場合に結果を前記第1計算機に返し、
    前記第1計算機が、
    (P)前記全ての更新データを用いてパリティを生成し、
    (Q)前記パリティを、前記全ての更新データに対応したパリティを格納する第2計算機であるパリティ第2計算機に転送し、
    前記パリティ第2計算機が、
    (R)前記第1計算機からの前記パリティを永続化した場合に結果を前記第1計算機に返す、
    分散ストレージシステム。
  3. クライアントからライト要求を受信する分散ストレージシステムであって、
    複数の電源部から電力供給を受ける複数の計算機を有し、
    前記複数の計算機のうち、前記クライアントからライト要求を受信した計算機である第1計算機が、
    (A)前記ライト要求に付随したデータの少なくとも一部である更新データをキャッシュし、
    (B)前記更新データの転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちのn個の計算機(nは自然数)であるn個の第2計算機を選択し、
    (C)前記選択したn個の第2計算機に、前記更新データをそれぞれ転送し、
    前記n個の第2計算機の少なくとも1つが、
    (D)前記第1計算機からの更新データをキャッシュした場合に結果を前記第1計算機に返し、
    (B)は、下記(b1)乃至(b3)である、
    (b1)前記第1計算機の電源と異なる電源から電力供給を受ける計算機のうち、前記更新データの転送先として選択可能な計算機が少なくとも1つあるか否かを判断すること、
    (b2)(b1)の判断結果が真の場合、前記第1計算機の電源と異なる電源から電力供給を受けるノードから、転送先とするノードを選択すること、および、
    (b3)(b1)の判断結果が偽の場合、または、(b2)で選択されたノード数がnに満たない場合、前記第1計算機の電源と同じ電源の計算機ではあるが、サブ電源が前記第1計算機と異なる計算機を、転送先として、転送先ノード数がnとなるように、選択する、
    分散ストレージシステム。
  4. クライアントからライト要求を受信する分散ストレージシステムであって、
    複数の電源部から電力供給を受ける複数の計算機を有し、
    前記複数の計算機のうち、前記クライアントからライト要求を受信した計算機である第1計算機が、
    (A)前記ライト要求に付随したデータの少なくとも一部である更新データをキャッシュし、
    (B)前記更新データの転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちのn個の計算機(nは自然数)であるn個の第2計算機を選択し、
    (C)前記選択したn個の第2計算機に、前記更新データをそれぞれ転送し、
    前記n個の第2計算機の少なくとも1つが、
    (D)前記第1計算機からの更新データをキャッシュした場合に結果を前記第1計算機に返し、
    1つのストライプに対応した全ての更新データを異なる複数の第1計算機がキャッシュしている場合、前記複数の第1計算機の各々が、(B)乃至(C)を行い、
    前記複数の第1計算機の各々について、前記n個の第2計算機が、当該ストライプに対応したパリティを格納する第2計算機であり、前記複数の第1計算機のいずれとも電源部が異なる第2計算機であるパリティ第2計算機を含み、
    前記パリティ第2計算機が、前記全ての更新データを用いてパリティを生成する、
    分散ストレージシステム。
  5. ストライプによって異なる計算機がパリティ第2計算機である、
    請求項4記載の分散ストレージシステム。
  6. クライアントからライト要求を受信する分散ストレージシステムを構成する複数の計算機のうちのいずれかの計算機である第1計算機で実行されるプログラムであって、
    (A)前記クライアントからのライト要求に付随したデータの少なくとも一部である更新データをそのメモリ部にキャッシュし、
    (B)前記更新データの二重化のための転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちの当該更新データに対応したパリティを格納する計算機であるパリティ計算機を選択し、
    (C)キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記選択したパリティ計算機に、前記更新データを転送し、
    (D)前記パリティ計算機に転送された二重化のための更新データが当該パリティ計算機においてキャッシュされた場合に、当該パリティ計算機から結果を受信し、
    (E)前記パリティ計算機から前記更新データをキャッシュした結果を受信した場合に、キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記クライアントに前記ライト要求の結果を返却し、
    (F)前記更新データの旧データを前記パリティ計算機に転送する、
    ことを前記第1計算機に実行させるコンピュータプログラム。
  7. クライアントからライト要求を受信する分散ストレージシステムで行われる分散記憶制御方法であって、
    (A)第1計算機が、前記クライアントからのライト要求に付随したデータの少なくとも一部である更新データをそのメモリ部にキャッシュし、
    (B)前記第1計算機が、前記更新データの二重化のための転送先として、前記第1計算機の電源部と異なる電源部から電力供給を受ける計算機のうちの当該更新データに対応したパリティを格納する計算機であるパリティ計算機を選択し、
    (C)前記第1計算機が、キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記選択したパリティ計算機に、前記更新データを転送し、
    (D)前記パリティ計算機が、前記第1計算機からの二重化のための更新データをキャッシュした場合に結果を前記第1計算機に返し、
    (E)前記第1計算機が、前記パリティ計算機から前記更新データをキャッシュした結果を受信した場合に、キャッシュした前記更新データを前記第1計算機の記憶装置に格納することを待たずに、前記クライアントに前記ライト要求の結果を返却し、
    (F)前記第1計算機が、前記更新データの旧データを前記パリティ計算機に転送し、
    (G)前記パリティ計算機が、前記旧データと、当該パリティ計算機において前記クライアントに前記ライト要求の結果を送信するためにキャッシュされている二重化のための前記更新データと、当該更新データに対応する旧パリティとを用いて、当該旧パリティの更新後のパリティである更新後パリティを生成する、
    分散記憶制御方法。
JP2019540170A 2017-09-06 2017-09-06 分散ストレージシステム及び分散記憶制御方法 Active JP7113832B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/032024 WO2019049224A1 (ja) 2017-09-06 2017-09-06 分散ストレージシステム及び分散記憶制御方法

Publications (2)

Publication Number Publication Date
JPWO2019049224A1 JPWO2019049224A1 (ja) 2019-11-07
JP7113832B2 true JP7113832B2 (ja) 2022-08-05

Family

ID=65633777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019540170A Active JP7113832B2 (ja) 2017-09-06 2017-09-06 分散ストレージシステム及び分散記憶制御方法

Country Status (4)

Country Link
US (1) US11321208B2 (ja)
JP (1) JP7113832B2 (ja)
CN (1) CN111052090B (ja)
WO (1) WO2019049224A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7290046B2 (ja) 2019-03-05 2023-06-13 中国電力株式会社 整定試験装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838805B2 (en) * 2018-02-23 2020-11-17 Micron Technology, Inc. Generating parity data based on a characteristic of a stream of data
JP2022191854A (ja) * 2021-06-16 2022-12-28 株式会社日立製作所 記憶システムおよびデータ処理方法
JP2023136323A (ja) * 2022-03-16 2023-09-29 株式会社日立製作所 ストレージシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527062A (ja) 2006-02-14 2009-07-23 ヨッタヨッタ インコーポレイテッド 超高度データ可用性および地理的災害許容性を得るためのシステムおよび方法
WO2016194095A1 (ja) 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
WO2017119091A1 (ja) 2016-01-07 2017-07-13 株式会社日立製作所 分散型ストレージシステム、データ格納方法、およびソフトウェアプログラム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4506323A (en) * 1982-03-03 1985-03-19 Sperry Corporation Cache/disk file status indicator with data protection feature
US5640530A (en) * 1992-12-17 1997-06-17 International Business Machines Corporation Use of configuration registers to control access to multiple caches and nonvolatile stores
US5623595A (en) * 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US5784548A (en) * 1996-03-08 1998-07-21 Mylex Corporation Modular mirrored cache memory battery backup system
US5991852A (en) * 1996-10-28 1999-11-23 Mti Technology Corporation Cache ram using a secondary controller and switching circuit and improved chassis arrangement
JPH10312246A (ja) 1997-05-12 1998-11-24 Hitachi Ltd 記憶装置サブシステム
US6065102A (en) * 1997-09-12 2000-05-16 Adaptec, Inc. Fault tolerant multiple client memory arbitration system capable of operating multiple configuration types
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US7836339B2 (en) * 2003-03-31 2010-11-16 Intel Corporation Computer memory power backup
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
JP4450609B2 (ja) * 2003-11-28 2010-04-14 株式会社日立製作所 記憶装置
US20080313364A1 (en) * 2006-12-06 2008-12-18 David Flynn Apparatus, system, and method for remote direct memory access to a solid-state storage device
JP5466953B2 (ja) * 2008-02-08 2014-04-09 富士通株式会社 バックアップ方法及びディスクアレイシステム
US8103904B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US9348696B2 (en) * 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
JP5742362B2 (ja) * 2011-03-28 2015-07-01 富士通株式会社 退避処理装置
US9336132B1 (en) 2012-02-06 2016-05-10 Nutanix, Inc. Method and system for implementing a distributed operations log
CN104756092A (zh) * 2012-10-19 2015-07-01 富士通株式会社 记录再生装置、错误订正方法以及控制装置
JP5924819B2 (ja) * 2013-06-10 2016-05-25 日本電気株式会社 データ保全処理装置及びデータ保全処理プログラム
JP6291776B2 (ja) * 2013-10-11 2018-03-14 富士通株式会社 情報処理システム、情報処理システムの制御方法及び情報処理装置の制御プログラム
CN105681070A (zh) * 2014-11-21 2016-06-15 中芯国际集成电路制造(天津)有限公司 一种自动收集计算机集群节点信息并分析的方法及系统
US9588857B2 (en) * 2015-06-22 2017-03-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Raid logical stripe backup to non-volatile memory in response to raid storage device media errors
US10877956B2 (en) * 2015-11-24 2020-12-29 Sap Se Transactional cache invalidation for inter-node caching
US20170220249A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
CN107506016B (zh) * 2016-06-14 2020-04-21 伊姆西Ip控股有限责任公司 存储设备和对存储设备供电的方法
US11132258B2 (en) * 2019-01-31 2021-09-28 EMC IP Holding Company, LLC In-place RAID conversion system and method
US10481660B1 (en) * 2019-04-25 2019-11-19 Michael Feldman Batteryless data logger with backup status indication and method therefor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527062A (ja) 2006-02-14 2009-07-23 ヨッタヨッタ インコーポレイテッド 超高度データ可用性および地理的災害許容性を得るためのシステムおよび方法
WO2016194095A1 (ja) 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
WO2017119091A1 (ja) 2016-01-07 2017-07-13 株式会社日立製作所 分散型ストレージシステム、データ格納方法、およびソフトウェアプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7290046B2 (ja) 2019-03-05 2023-06-13 中国電力株式会社 整定試験装置

Also Published As

Publication number Publication date
CN111052090A (zh) 2020-04-21
WO2019049224A1 (ja) 2019-03-14
CN111052090B (zh) 2023-09-29
US11321208B2 (en) 2022-05-03
US20200034263A1 (en) 2020-01-30
JPWO2019049224A1 (ja) 2019-11-07

Similar Documents

Publication Publication Date Title
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
JP7113832B2 (ja) 分散ストレージシステム及び分散記憶制御方法
US20160371186A1 (en) Access-based eviction of blocks from solid state drive cache memory
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US10359967B2 (en) Computer system
US20180322024A1 (en) Storage apparatus, storage system, and control method of storage system
JP2022512064A (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US10657062B2 (en) Distributed storage system and distributed storage control method wherein data stored in cache matrix, that is to be stored in said distributed storage, is tracked by columns and rows
US11086562B2 (en) Computer system having data amount reduction function and storage control method
CN113360082B (zh) 存储系统及其控制方法
JP6974281B2 (ja) ストレージシステム及びストレージ制御方法
US10884924B2 (en) Storage system and data writing control method
US20210271393A1 (en) Method and apparatus for performing data access management of all flash array server
US11941253B2 (en) Storage system and method using persistent memory
WO2018055686A1 (ja) 情報処理システム
JPWO2016088372A1 (ja) アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びプログラム
US11789613B2 (en) Storage system and data processing method
CN112256657A (zh) 日志镜像方法及系统
JP2020077248A (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
JP7179947B2 (ja) ストレージシステム及びストレージ制御方法
US11755249B2 (en) Storage system including storage nodes to determine cache allocations to implement cache control
WO2017134795A1 (ja) ストレージシステム及びキャッシュ制御方法
WO2014115184A1 (en) Storage system and control method for storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210824

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210824

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210907

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210914

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20211119

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20211124

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20220125

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20220517

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20220524

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20220628

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20220628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220726

R150 Certificate of patent or registration of utility model

Ref document number: 7113832

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150