JP6653370B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP6653370B2
JP6653370B2 JP2018501544A JP2018501544A JP6653370B2 JP 6653370 B2 JP6653370 B2 JP 6653370B2 JP 2018501544 A JP2018501544 A JP 2018501544A JP 2018501544 A JP2018501544 A JP 2018501544A JP 6653370 B2 JP6653370 B2 JP 6653370B2
Authority
JP
Japan
Prior art keywords
data
storage node
storage
node
distributed
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
JP2018501544A
Other languages
English (en)
Other versions
JPWO2017145375A1 (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 JPWO2017145375A1 publication Critical patent/JPWO2017145375A1/ja
Application granted granted Critical
Publication of JP6653370B2 publication Critical patent/JP6653370B2/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージシステムに関する。
ITシステムで取り扱うべきデータ量が急激に増大しており、それに対応可能なストレージシステムが求められている。そのようなストレージシステムとして、複数のストレージ装置(サーバを含む)をネットワークで接続してストレージプールを作成し、分散してデータを処理し格納する、分散型ストレージシステム技術が存在する。これにより、スケーラブルな容量と性能を提供する。
分散ストレージシステムの例は、例えば、米国特許7546342号に開示されている。具体的には、要約に記載されるように、以下の構成が開示されている。Webサイトに関連付けられる各ファイルの相対的重要度を計算する。この相対的重要度を用い、サーバ・アレイ、ピア・ツー・ピア・ネットワークなどの、コンピュータ・クラスタ内の複数デバイスに分配されるコンテンツの複数の部分集合を計算する。この部分集合は、1つまたは複数のファイルの一部分を含むパケットにイレージャコーディング方式を使用して作成された符号化メッセージを含むことができる。ファイル取得時、一定数のはっきりと識別可能な符号化メッセージがこの方式に基づいてデバイスから取得される。ファイルはこのメッセージを使用して再作成される。
米国特許第7546342号
従来の分散ストレージシステムは、ホストから受信したライトデータを、複数ストレージノードに分散させる。従って、アプリケーションプログラムが、分散ストレージシステムからデータを読み出すとき、そのデータを構成するデータブロックを複数のストレージノードの間において、ネットワークを介して転送する必要がある。よって、ネットワークのスループットがボトルネックとなって、データへのアクセスレイテンシが、ネットワークを介さない場合よりも増加する場合がある。
上記課題を解決するために、例えば特許請求項の範囲に記載の構成を採用する。
本発明の代表的な一例は、ネットワークを介して接続された複数ストレージノード、を含むストレージシステムであって、第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み前記第1ストレージノードは、オブジェクトのライトデータを受信し、前記第1ストレージノードは、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、前記第1ストレージノードは、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、前記第2ストレージノードは、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、前記選択された複数の分散配置ライトデータブロックから生成される第2冗長データブロックの配置先が前記第3ストレージノードであり、前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックから前記第2冗長データブロックを生成し、前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置 することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数ストレージノードの何れかに再配置される。
本発明によれば、ストレージシステムにおいて、高い信頼性と高い性能を両立することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
実施例1の概略を示す。 実施例1の概略を示す。 分散ストレージシステムのハードウェア構成例を示す。 分散ストレージシステムのソフトウェア構成の概略を示す。 メタデータ管理表の構成例を示す。 分散データ管理表の構成例を示す。 実施例3で用いられるメタデータ構造T構成例を示す。 実施例4で用いられるコピー保持ノード管理表の構成例を示す。 一つのストレージノードによるデータ格納処理の概要のフローチャートを示す。 再配置処理の概要のフローチャートを示す。 データリード処理の概要のラダーチャートを示す。 実施例2の概要を示す。 実施例2の概要を示す。 図7のフローチャートにおけるステップS21の詳細のフローチャートを示す。 実施例3の概要を示す。 分散ストレージシステムのソフトウェア構成の概略を示す。 非同期で実施する最新データによる冗長データ再生成処理の概要のフローチャートを示す。 実施例4において、アプリケーションプログラム/仮想マシンを割り当てる際のシステム構成図を示す。 アプリケーションプログラム/仮想マシンの割当に伴うデータコピー処理の概要のフローチャートを示す。
幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「XXテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために、「XXテーブル」を「XX情報」と呼ぶことができる。
以下の説明では、プログラムを主語として処理を説明する場合があるが、プログラムは、ハードウェア自体、またはハードウェアが有するプロセッサ(例えば、MP(Micro Processor))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がハードウェア又はプロセッサとされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
以下において、分散ストレージシステムにおいて、高信頼データ再配置により性能を向上する方式が開示される。ストレージノードは、データを格納する1以上の記憶デバイスを含む。以下において、1以上の記憶デバイスが与える記憶領域をメディア領域と呼ぶ。記憶デバイスは、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、複数ドライブからなるRAID等である。
図1A及び図1Bは、本実施例の概略を示す。分散ストレージシステムは、ネットワークを介して接続された複数のストレージノード(単にノードとも呼ぶ)を含み、そのうちの一部のストレージノード20_0〜20_3が示されている。図1Aは、分散ストレージシステムによる、受信データの分散配置処理の例を示す。図1Bは、分散配置されたデータの再配置処理の例を示す。
分散ストレージシステムは、データを、論理的にまとまったデータであるオブジェクトごとに管理する。また、データへのアクセスは、オブジェクトごとに発生する。オブジェクトとしては、通常のファイルの他、アーカイブファイル、バックアップファイル、ディレクトリ情報を格納するオブジェクト、空きブロックを管理するオブジェクト、仮想ボリューム、仮想計算機のボリュームファイルがある。オブジェクトは、ファイルの一部やボリュームの一部でもあり得る。
分散配置処理は、各オブジェクトのライトデータ(ダミーデータを含み得る)及び当該ライトデータから生成した冗長データを、複数のストレージノードに分散して配置する。再配置処理は、複数のストレージノードに分散配置されている1又は複数オブジェクトそれぞれのデータを、オブジェクトそれぞれに関連付けられているストレージノード(ローカルノードと呼ぶ)に移動する。一つのオブジェクトのローカルノードの数は、1以上である。
再配置処理は、さらに、一つのストレージノードに格納されている異なるローカルノードのデータから冗長データを生成し、当該一つのストレージノードと異なるストレージノードであって、それらローカルノードと異なるストレージノードに配置する。
このように、冗長データを伴うライトデータ(ホストデータ)の分散配置処理と、冗長データを伴うローカルノードへのライトデータ(ホストデータ)の再配置処理と、によって、分散ストレージシステムの高い信頼性と高い性能とを実現することができる。
図1Aに示すように、例えば、分散ストレージシステムは、1又は複数のホストから、ライトデータA、B、及びCを受信する。ライトデータA、B、及びCは、それぞれ、不図示のA、B及びCオブジェクトに対するライトデータである。
ライトデータを受信したストレージノードは、受信したライトデータに対してデータブロック分割処理及び冗長データブロック生成処理を実行する。ライトデータは分割され、規定分割サイズのホストデータブロック(分散配置ライトデータブロック)が生成される。分割サイズは、オブジェクト毎に規定されている。生成されるホストデータブロックはダミーデータブロックを含み得る。
さらに、冗長データブロックが、イレージャコーディングにより、ホストデータブロックを使用して生成される。図1A及び1Bに示す冗長構成は、一つの冗長データブロックのみを含むが、ホストデータブロック及び冗長データブロックそれぞれの数は、設計に依存する。
図1Aにおいて、ライトデータAから、ホストデータブロックa0、a1、a2及び冗長データブロックPa012が生成される。ライトデータBから、ホストデータブロックb0、b1、b2及び冗長データブロックPb012が生成される。ライトデータCから、ホストデータブロックc0、c1、c2及び冗長データブロックPc012が生成される。
同一の受信データから生成されたホストデータブロック及び冗長データブロックは、ストライプを構成する。ストライプは、複数のホストデータブロックと、当該複数のホストデータブロックから生成される1又は複数の冗長データブロックで構成され、ホストデータブロックと冗長データブロックの数は、システムにおける冗長構成の設計に依存する。
ホストデータブロックは、例えば、オブジェクト内のオフセット(オブジェクト内アドレス)に従って生成される。例えば、ライトデータの分割位置は、オブジェクト内オフセットと規定サイズ(分割サイズ)から計算される。オブジェクト内のオフセットに代えて、受信データ内のオフセットを使用し、受信データの先頭から規定サイズのデータブロックに分割してもよい。
受信データから、オブジェクトの冗長構成に依存する規定数の整数倍のホストデータブロックが生成される。図1の例において、A、B及びCオブジェクトの規定数は3であり、冗長構成のストライプにおけるホストデータブロック数に一致する。
図1Aにおいて、同一受信データから生成されたホストデータブロック及び冗長データブロックは、それぞれ異なるストレージノードに分散して配置される。ストレージノードは、データブロックをキャッシュに一旦格納した後、ストレージデバイスに格納する。ストレージデバイスはSSDやHDD、不揮発性メモリ及びそれらのデバイスで構成したRAIDであり、キャッシュは省略してもよい。
ストレージノードは、管理しているストレージデバイスにデータを格納し、管理されているストレージデバイスは、他のストレージノードを介することなくアクセスされる。ストレージデバイスは、例えば、コントローラから直接アクセスされる又はスイッチを介して接続される。
図1Aの例において、受信データA、B及びCのホストデータブロックは、ストレージノード20_0、20_1及び20_2に分散して格納される。同一の受信データのホストデータブロックは、先頭から順にストレージノード20_0、20_1及び20_2に配置される。受信データA、B及びCの冗長データブロックは、ストレージノード20_3に格納される。図1Aは、冗長データブロックが1個だけの例を示す。複数の冗長データブロックが生成される構成においては、それぞれの冗長データブロックを格納するためのストレージノードが用意される。
ストレージノード20_0〜20_3は、E、F及びGオブジェクトの受信データE、F及びGを既に格納している。ホストデータブロックe0〜e2及び冗長データブロックPe012は、受信データEのデータブロックである。ホストデータブロックf0〜f2及び冗長データブロックPf012は、受信データFのデータブロックである。ホストデータブロックg0〜g2及び冗長データブロックPg012は、受信データGのデータブロックである。ストレージノード20_0〜20_3にホストデータブロック及び冗長データブロックを分散配置する方法は、受信データA、B及びCと同様である。
オブジェクトのデータブロックを格納するストレージノードの組は、予め設定されている。オブジェクトIDに対して、ホストデータブロックを格納する複数のストレージノードと冗長データブロック(パリティデータブロックとも呼ぶ)を格納する1又は複数のストレージノードとの組が定義されている。図1Aの例において、A〜Eオブジェクトのストレージノードの組は同一であり、ストレージノード20_0〜20_3で構成されている。
ホストデータブロックを格納するストレージノード(データノードとも呼ぶ)は、ホストデータブロックのオブジェクトIDとオフセットとの組に対して割り当てられている。オフセットは、オブジェクト内又は受信データ内のオフセットである。
冗長データブロックを格納するノード(パリティノードと呼ぶ)は、例えば、オブジェクトに対して固定である。つまり、パリティノードは、オブジェクトIDのみに対して割り当てられ、データのオフセット(アドレス)に依存しない。一つのストライプが複数の冗長データブロックを含む場合、複数のパリティノードがオブジェクトIDに対して規定され、冗長データブロックの種類に応じて格納するパリティノードが定義される。図1Aの例において、パリティノードは一つのみであり、オブジェクトIDのみに関連付けられ、オブジェクト内の全てのデータブロック(ストライプ)に共通である。具体的には、A〜Eオブジェクトのパリティノードは、ストレージノード20_3である。
他の例において、パリティノードは、オブジェクトIDとオブジェクト内又は受信データ内のオフセットとの組に対して割り当てられてもよい。冗長データブロックは、オブジェクトにおいて同一のパリティノードが割り当てられている複数のホストデータブロックから生成される。例えば、オブジェクトに対して複数ストレージノードが割り当てられており、ホストデータブロックのオフセットに応じて、それらの中から当該ホストデータブロックのためのパリティノードが選択される。
データブロックの分散配置先ノードの組は、他のアルゴリズムを利用して指定されていてもよい。例えば、CRUSH(Controlled Replication Under Scalable Hashing)等のコンシステントハッシュアルゴリズムや分散ハッシュテーブルを使用して、オブジェクトIDとノード数とから、ホストデータと冗長データを含むデータブロックの分散配置先ノードの組が指定されてもよい。いずれかのアルゴリズムによってオブジェクトIDから分散配置先ノードを決定することで、容易かつ適切に分散配置先ノードを決定できる。
図1Bは、分散配置されているホストデータブロック(ダミーデータを含み得る)の再配置処理の例を示す。一つのオブジェクトに対して1又は複数のローカルノードが割り当てられている。オブジェクトの分散配置されているホストデータブロックは、再配置後に、対応するローカルノードに格納される。一つのオブジェクトに対して複数のローカルノードが割り当てられている場合、ホストデータブロックのローカルノードは、オブジェクトID及びオフセットの組に対して関連づけられている。
一つのオブジェクトに対して1又は複数のパリティノードが割り当てられている。パリティノードは、再配置処理において新たに生成される冗長データを格納する。新たに生成される冗長データブロックは、異なるローカルノードに格納され共通のパリティノードが割り当てられているホストデータブロックから、生成される。各冗長データブロックは、一つのストレージノードに格納されているホストデータブロックから生成される。
パリティノードは、例えば、オブジェクトIDのみに対して割り当てられており、データのオフセット(アドレス)に依存せず、分散配置処理におけるパリティノードと、再配置処理におけるパリティノードとは、同一である。
他の例において、複数パリティノードが指定されており、各パリティノードは、オブジェクトIDとオブジェクト内又は受信データ内のオフセットとの組に対して割り当てられてもよい。再配置におけるパリティノードの組と分散配置におけるパリティノードの組は同一又は異なる。
例えば、一つのノード構成が複数のオブジェクトからなるオブジェクト群と予め関連付けられており、再配置処理は、分散配置処理における同一ノード構成を有するオブジェクトのデータの間で実行される。これにより、効率的なデータ管理が可能となる。分散配置処理におけるホストデータ(ダミーデータを含み得る)又は冗長データを格納するノードがそれぞれ共通であるオブジェクトのデータの間で実行される。再配置処理は、分散配置処理における異なるノード構成を有するオブジェクトのデータの間で実行されてもよい。
図1Bの例において、A〜Eオブジェクトは、分散配置における同一ノード構成を有しており、これらの間で再配置処理が実行される。A〜Eオブジェクトにおいて、ローカルノードが異なる三つのオブジェクトのホストデータブロックから、新たな冗長データブロックが生成される。
図1Bの例においては、各オブジェクトに対して一つのローカルノードが割り当てられている。ストレージノード20_0は、ライトデータA及びライトデータEのローカルノードである。ストレージノード20_1は、ライトデータB及びライトデータFのローカルノードである。ストレージノード20_2は、ライトデータC及びライトデータGのローカルノードである。
図1Bの例においては、各オブジェクトに対して一つのパリティノードが割り当てらており、A〜Eオブジェクトに共通である。ストレージノード20_3は、データ再配置において新たに生成される冗長データブロックを格納する。各冗長データブロックは、再配置後にそれぞれ異なるストレージノードに格納されるホストデータブロックから生成される。
図1Bにおいて、ホストデータブロックa0、b0、c0から、冗長データブロックPabc0が生成される。ホストデータブロックa1、b1、c1から、冗長データブロックPabc1が生成される。ホストデータブロックa2、b2、c2から、冗長データブロックPabc2が生成される。
ホストデータブロックe0、f0、g0から、冗長データブロックPefg0が生成される。ホストデータブロックe1、f1、g1から、冗長データブロックPefg1が生成される。ホストデータブロックe2、f2、g2から、冗長データブロックPefg2が生成される。
ローカルノードが異なれば、冗長データブロックを生成するための任意のオブジェクトの組み合わせが可能である。例えば、Aオブジェクトのホストデータブロックは、Eオブジェクト以外の任意の二つのオブジェクトのホストデータブロックと共に冗長データを生成し得、Bオブジェクトのホストデータブロックは、Fオブジェクト以外の任意の二つのオブジェクトのホストデータブロックと共に冗長データを生成し得る。冗長データブロックを生成するホストデータブロックのオフセットの組み合わせは限定されず、任意である。
図1Bにおいて、ホストデータブロックのサイズは同一である。冗長データブロックを生成するためのホストデータブロックの組み合わせにおいて、異なるオブジェクトのホストデータブロックのサイズ(分割サイズ)は異なっていてもよい。例えば、あるオブジェクトの分割サイズは、他のオブジェクトの分割サイズの整数倍であってもよい。
Aオブジェクトの分割サイズが、B及びCオブジェクトの分割サイズのN倍(Nは整数)である場合、Aオブジェクトの一つのホストデータブロックと、BオブジェクトのN個のホストデータブロックと、CオブジェクトのN個のホストデータブロックと、から、一つの冗長データブロックを生成することができる。
冗長データPABCは、冗長データブロックPabc0、Pabc1、Pabc2で構成されている。冗長データPEFGは、冗長データブロックPefg0、Pefg1、Pefg2で構成されている。
各ストレージノードは、再配置処理を実行可能なホストデータブロックを保持している場合、ホストデータブロックの再配置を開始する。ストレージノードは、冗長データ生成に必要な数の、パリティノードが同一で、ローカルノードが異なる、ホストデータブロック、を保持している場合、ストレージノードは再配置処理を実行することができる。再配置処理の開始の条件は、再配置対象のデータ量が規定値に達していることを含んでもよい。
図1Bにおいて、冗長データを生成するためには、ローカルノードがそれぞれ異なる三つのホストデータブロックが必要である。また、一つのストレージノードにおいて、2ストライプのホストデータが格納済みであることが、再配置処理開始の条件であってもよい。
図1Bにおいて、各ストレージノードは、再配置対象のホストデータブロックから、冗長データを生成する。ストレージノード20_0は、ホストデータブロックa0、b0、c0から冗長データブロックPabc0を生成し、ホストデータブロックe0、f0、g0から冗長データブロックPefg0を生成する。
ストレージノード20_1は、ホストデータブロックa1、b1、c1から冗長データブロックPabc1を生成し、ホストデータブロックe1、f1、g1から冗長データブロックPefg1を生成する。ストレージノード20_2は、ホストデータブロックa2、b2、c2から冗長データブロックPabc2を生成し、ホストデータブロックe2、f2、g2から冗長データブロックPefg2を生成する。
上述のように、冗長データを生成するために、他のホストデータブロックの組み合わせも可能である。例えば、一つのストレージノードは、A、B、Cオブジェクトの組み合わせ及びE、F、Gオブジェクトの組み合わせを選択し、他の一つのストレージノードは、A、F、Cオブジェクトの組み合わせ及びE、B、Gオブジェクトの組み合わせを選択してもよい。
ストレージノード20_0〜20_2は、それぞれ、生成した冗長データブロックをまとめて、ストレージノード20_3に送信し、さらに、同一ローカルノードのホストデータブロックをまとめて、当該ローカルノードに送信する。これにより、ネットワーク上のデータ通信回数を低減する。
例えば、ストレージノード20_0は、冗長データブロックPabc0、Pefg0を一つの通信データユニットに含めて、ストレージノード20_3に送信する。また、ストレージノード20_0は、ホストデータブロックb0、f0を一つの通信データユニットに含めて、ストレージノード20_1に送信し、ホストデータブロックc0、g0を一つのデータユニットに含めて、ストレージノード20_2に送信する。
ローカルノード(ストレージノード20_0〜20_2)は、受信したホストデータブロックによって、保持している対応オブジェクトを更新する。ストレージノード(ストレージノード20_0〜20_2)は、再配置処理において他のストレージノードに送信した後に冗長性が確保されて不要になったホストデータブロックを、削除する。例えば、ホストデータブロックが再配置され、さらに、当該ホストデータブロックから再配置のために生成された冗長データブロックがパリティノードに格納された後に、当該ホストデータブロックの旧データは削除される。
パリティノード(ストレージノード20_3)は、他のストレージノードから冗長データを受信した後、冗長性が確保されて不要になった冗長データブロックを削除する。図1Bの例において、ストレージノード20_3は、冗長データブロックPa012、Pb012、Pc012、Pe012、Pf012、Pg012を削除する。例えば、冗長データブロックの生成要素で全てのホストデータブロックが再配置され、全てのホストデータブロックの新たな冗長データブロックが格納された後、冗長データブロックは削除される。
再配置処理により、アプリケーション(ホスト)がオブジェクトのデータを必要とした場合に、ストレージノード間でのネットワークにおけるデータブロックの転送無しに、ローカルリードを実現し、性能を向上することができる。
図2は、分散ストレージシステムのハードウェア構成例を示す。図2の例において、分散ストレージシステムは、複数のストレージノード20_0〜20_N及び管理システム50を含む。ストレージノード20_0〜20_Nは、インターナルネットワーク102を介して互いに接続され、さらに、管理システム50に接続されている。
ストレージノード20_0〜20_Nの管理を行うために、独立したネットワークを作成してもよい。ストレージノード20_0〜20_Nは、データネットワーク100を介して、1又は複数のホスト10(一つのホストのみ例示)に接続されている。一つのホスト10は、例えば、サーバ計算機、支社のファイルストレージ装置、PC又はスマートフォン等である。
管理システム50は、1又は複数の計算機で構成される。管理システム50は、例えば、サーバ計算機と当該サーバ計算機にネットワークを介してアクセスする端末とを含む。管理者は、端末の表示デバイス及び入力デバイスを介して、ストレージノード20_0〜20_Nを管理及び制御する。
インターナルネットワーク102及びデータネットワーク100は、それぞれ、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、インターネット、SAN(Storage Area Network)、公衆回線、又は専用回線などである。インターナルネットワーク102及びデータネットワーク100は、同一ネットワークでもよい。
ストレージノードは、汎用的な計算機の構成を有することができる。図2において、ストレージノード20_0は、メモリ21、補助記憶装置22、プロセッサ24、データネットワークとのインタフェース(I/F)26、及び補助記憶装置22との他のデバイスとの間のI/F28を含む。メモリ21、プロセッサ24、I/F26、及びI/F28はバス29に接続されている。メモリ21及び補助記憶装置22は、共にプロセッサ24により管理される記憶装置である。補助記憶装置22は、直接アクセスストレージでもよく、スイッチ装置を介してアクセスされてもよい。他のストレージノードも、同様の構成を有してよい。
メモリ21に格納されるデータは、典型的には、ネットワーク100若しくは102を介して転送されてきたデータ、又は、補助記憶装置22からロードされたデータである。補助記憶装置22は、例えば、1以上のHDD、SSD又はRAIDで構成されている。補助記憶装置22は、再配置後のオブジェクト又は冗長データを格納する他、再配置処理が終了する前のオブジェクトや制御情報を一時的に格納する領域も提供する。
メモリ21は、補助記憶装置22から読み出された情報を記憶するために用いられるほか、ホスト10から受信したデータを一時的に格納するキャッシュメモリとして用いられる。メモリ21は、さらに、プロセッサ24のワークメモリとして用いられる。メモリ21には、DRAM等の揮発性メモリまたはFlash Memory等の不揮発性メモリが使用される。メモリ21は、補助記憶装置22よりも高速にデータの読み書きができる。補助記憶装置22は省略されてもよい。
プロセッサ24は、メモリ21に記憶されているプログラムや演算パラメータ等に従って動作する。プロセッサ24は、プログラムに従って動作することで、特定の機能部として働く。例えば、プロセッサ24は、後述するデータ分割・再構成プログラム220に従って動作することで、データ分割・再構成部として機能する。他のプログラムについても同様である。
図3は、分散ストレージシステムのソフトウェア構成の概略を示す。図3の例において、ストレージノード20_0〜20_Nは、同様のソフトウェア構成を有する。メモリ21は、データ分割・再構成プログラム220、冗長データ生成・損失データ回復プログラム221、メタデータ情報分散管理プログラム222、及びメタデータ管理表T20を格納している。これらは、例えば、補助記憶装置22からロードされている。
メタデータ管理表T20は、オブジェクトの受信データのホストデータブロック及びそれらの1以上の冗長データブロックそれぞれの、格納先ストレージノードを示す。これらは、オブジェクトのノード構成情報に含まれる。メタデータ管理表T20に代えて、メタデータ情報分散管理プログラム222が、CRUSH等に基づく計算によって、データブロックそれぞれの格納先を決定するために必要な情報を生成してもよい。
一例において、ストレージノード20_0〜20_Nのメタデータ管理表T20は、情報を、オブジェクトIDに従って、分散管理する。例えば、メタデータ情報分散管理プログラム222は、データを受信したオブジェクトのノード構成情報を入手するため、オブジェクトIDから一つのストレージノードIDを計算し、当該ストレージノードから当該オブジェクトIDに対するノード構成情報を入手する。分散管理により、メタデータ情報の保持に必要な記憶リソースを低減する。
これに代えて、各ストレージノードのメタデータ管理表T20が、全てのオブジェクトの情報を格納していてもよい。メタデータ管理表T20を使用することなく、メタデータ情報分散管理プログラム222が、オブジェクトIDに対するノード構成情報を計算により求めてもよい。
ホスト10は、分散ストレージシステムへ、ネットワーク100を介して、オブジェクトのライトデータを送信する。例えば、ストレージノード20_0は、ライトデータを受信する。メタデータ情報分散管理プログラム222は、受信データのオブジェクトIDに対応する情報を、いずれかのストレージノードに格納されているメタデータ管理表T20から取得する。
ストレージノード20_0は、受信データの、オブジェクトID、オフセット及びメタデータから、受信データ及び冗長データを格納する複数のストレージノードを決定する。オブジェクトIDに関連付けられているノード構成情報は、オブジェクトのデータ(ホストデータ)及び冗長データを格納する複数のストレージノードIDを示す。
上述のように、ホストデータブロックを格納するストレージノードは、オブジェクトIDとホストデータブロックのオフセットとの組と関連づけられている。冗長データブロックを格納するストレージノードは、オブジェクトIDのみ又はオブジェクトIDとホストデータブロックのオフセットとの組と関連づけられている。また、一つのストレージノードが、複数オブジェクトのホストデータブロック又は複数オブジェクトの冗長データブロックを格納するように、定義されている。
データ分割・再構成プログラム220は、受信データから規定サイズのホストデータブロックを生成する。必要な場合、ダミーデータが追加される。冗長データ生成・損失データ回復プログラム221は、生成したホストデータブロックから、冗長データを生成する。
データ分割・再構成プログラム220は、決定した複数ストレージノードへ、生成したデータブロックそれぞれを、ネットワーク102を介して分散配置する。ホストデータブロックと共に、そのオブジェクトID及びオフセットを含むアドレス情報が転送される。分散配置において転送されたデータブロックを受信したストレージノードは、応答を返し、さらに、受信したデータを補助記憶装置22へ格納する。その後、ホスト10からデータを受信したデータ分割・再構成プログラム220は、ホスト10へ、ネットワーク100を介して完了応答を返す。
メタデータ情報分散管理プログラム222は、該当オブジェクトの管理情報を更新する。管理情報は、メタデータ管理表T22及び後述する分散データ管理表T40の情報を含む。メタデータ情報分散管理プログラム222は、該当オブジェクトの管理情報を保持するストレージノードに更新情報を通知し、通知を受けたストレージノードのメタデータ情報分散管理プログラム222が、テーブルを更新(作成を含む)する。
メタデータ情報分散管理プログラム222は、再配置処理を開始するのに必要な分散配置されたデータが格納されたと判定すると、再配置処理を開始する。メタデータ情報分散管理プログラム222は、冗長データ生成に必要な数(規定条件を満たす数)の、パリティノードが同一で、ローカルノードが異なる、ホストデータブロック、が格納された後、再配置処理を実行する。冗長データは、1又は複数のオブジェクトの複数ホストデータブロックから生成される。
再配置処理の開始は、上述のように、再配置するデータ量が規定量に達していることも条件であってもよい。再配置処理は、図1Bの例のように、分散配置の構成ノードが全て同一のオブジェクト間においてのみ行ってもよい。
メタデータ情報分散管理プログラム222は、再配置する1又は複数のオブジェクトを決定し、その決定したオブジェクトの情報を、当該オブジェクトが関連するストレージノード、具体的には、当該オブジェクトの分散ホストデータ又は分散冗長データを格納するストレージノード、及び、当該オブジェクトのローカルノードのメタデータ情報分散管理プログラム222へ通知する。
オブジェクトの分散ホストデータ又は分散冗長データを格納するストレージノードは、分散配置における当該オブジェクトの構成ノードであり、メタデータ管理表T20に含まれている。
再配置処理を行う各ストレージノードにおいて、冗長データ生成・損失データ回復プログラム221は、自ノードで保持するホストデータブロックから、再配置用の冗長データを生成する。データ分割・再構成プログラム220は、ストレージノード毎に再配置すべきホストデータブロック又は冗長データブロックをまとめて、一回のコネクションで各ストレージノードへ転送する。
データ分割・再構成プログラム220は、他のストレージノードから受信したホストデータにより補助記憶装置22のオブジェクトを更新する(ローカルノード)、又は、冗長データを補助記憶装置22に格納する(パリティノード)。
再配置に関連したストレージノードそれぞれのデータ分割・再構成プログラム220は、再配置のために選択されたオブジェクトの全ての関連ストレージノード間でのデータ転送(データ再配置)が完了したことを相互に通知することで確認すると、メタデータ情報分散管理プログラム222経由で、再配置処理を行ったオブジェクトそれぞれの管理情報を更新する。データ分割・再構成プログラム220は、データ再配置で不要となった分散配置データを消去する。
分散ストレージ間の相互通知方法は、例えば以下である。(1)ある1ノードが再配置処理を完了したら、その完了通知を関連する各ノードへ送信する。(2)例えば、再配置の状態管理を行うメインノード(例えばパリティノード)を決定し、そのメインノードが状態を管理する。例えば、ある1ノードが再配置処理を完了したら、その完了通知をメインノードへ通知する。メインノードは再配置に関連する全てのノードから完了通知を受信すると、各ノードへ旧データ削除命令を通知する。
本構成により、信頼性を維持したままデータの再配置を行い、ローカルリードによる性能向上を実現できる。なお、メタデータ情報分散管理プログラム222、データ分割・再構成プログラム220は、ストレージノードの削除・追加に合わせて、リバランス処理を行ってもよい。
図4A、4Bは、分散ストレージシステムにおける管理情報の例を示す。図4Aは、メタデータ管理表T20の構成例を示す。メタデータ管理表T20は、オブジェクトID欄C2、優先度欄C4、構成ノード欄C6、再配置処理状態欄C7、及び分割サイズ欄C8を有する。
オブジェクトID欄C2は、当該テーブルが管理しているオブジェクトのオブジェクトIDを格納する。メタデータが分散管理されている場合には、システムが格納するオブジェクトの一部のみの情報が一つのメタデータ管理表T20に格納されている。優先度欄C4は、オブジェクトID(欄C2)に対応した優先度を示す。優先度は、例えば、管理システム50を介して、ユーザにより予め設定される。
構成ノード欄C6は、オブジェクトID(欄C2)により同定されるオブジェクトの分散処理におけるホストデータ又は冗長データを格納する各ストレージノード、及び、再配置後にオブジェクト又は冗長データを格納する各ストレージノードの情報を示す。パリティノードがオフセットに依存する場合、その情報も示される。
再配置処理状態欄C7は、オブジェクトID(欄C2)により同定されるオブジェクトの再配置処理状態を示す。状態は、未、再配置中、又は済のいずれかである。状態「未」は、再配置がされていない状態を示す。状態「再配置中」は、現在、再配置処理中であることを示す。状態「済」は、再配置処理が完了した状態を示す。再配置処理状態は、ビットマップを用いて管理されてもよい。
分割サイズ欄C8は、オブジェクトID(欄C2)により同定されるオブジェクトを、分割し複数のストレージノードへ分散配置する際の分割サイズを示す。つまり、分散処理におけるホストデータブロックのサイズを示す。サイズ0は、分割しないことを示す。オブジェクトの分割サイズが複数の規定値から選択された値である場合、ビットマップを用いて管理しても良い。
図4Bは、分散データ管理表T40の構成例を示す。分散データ管理表T40は、再配置処理中のオブジェクト毎に作成され、例えば、オブジェクトの担当ストレージノードが、メタデータ管理表T20と共に保持する。分散データ管理表T40は、オブジェクト内の再配置中のデータの管理情報を保持する。
分散データ管理表T40は、範囲(LBA)欄C22、構成ノード欄C24、分割サイズ欄C26を有する。範囲(LBA)欄C22は、再配置中データのオブジェクトにおけるアドレス範囲(LBA)を示す。構成ノード欄C24は、再配置中データを格納しているストレージノードを示す。分割サイズ欄C26は、再配置中データの分割サイズ(ホストデータブロックサイズ)を示す。
図5A及び5Bは、分散ストレージシステムにおける管理情報の例を示す。図5Aは、実施例3で用いられるメタデータ構造T27の構成例を示す。図5Bは、実施例4で用いられるコピー保持ノード管理表T28の構成例を示す。メタデータ構造T27及びコピー保持ノード管理表T28の詳細は、対応する実施例において説明する。
図6は、一つのストレージノードによるデータ格納処理の概要のフローチャートを示す。ストレージノードは、ホスト10から受信したデータを、複数ノードに分散して格納する。ホスト10からデータを受信したストレージノードは、受信したデータの格納先ノードを決定する(S11)。
具体的には、メタデータ情報分散管理プログラム222は、受信したデータのオブジェクトIDから、当該オブジェクトのメタデータ管理表T20を含む管理情報を格納するストレージノードを特定する。メタデータ情報分散管理プログラム222は、特定したストレージノードから、分散処理における構成ノードの情報と、分割サイズの情報を取得する。
メタデータ情報分散管理プログラム222は、取得した情報から、ホストデータと冗長データを格納するストレージノードを決定する。メタデータ情報分散管理プログラム222は、受信データのオブジェクトIDから、CRUSH等のアルゴリズムに基づき構成ノードを算出してもよい。
分割サイズが規定値より大きく、再配置処理が不要である場合、メタデータ情報分散管理プログラム222は、受信したデータのオブジェクトの再配置処理状態を「済み」と設定し、そうではない場合には「未」と設定する。メタデータ情報分散管理プログラム222は、当該オブジェクトの管理情報を保持するストレージノードに、再配置処理状態の判定結果を通知する。分割サイズが大きい場合、一回のリードアクセスが分割サイズ内のデータあることが多く、ローカルリードのための再配置不要である。再配置処理省略により、システム負荷を低減する。なお、分割サイズに拠らず再配置処理が必要であると判定してもよい。
データ分割・再構成プログラム220は、受信データを、当該オブジェクトの分割サイズに従って分割し、複数ホストデータブロックを生成する(S12)。データ分割・再構成プログラム220は、必要に応じてダミーデータを追加してデータブロックを生成し、又は、ダミーデータブロックを追加する。生成されるホストデータブロックの数は、冗長構成におけるデータノード数の整数倍である。
次に、冗長データ生成・損失データ回復プログラム221は、冗長データを生成する(S13)。冗長データ生成・損失データ回復プログラム221は、アドレス順で規定数のホストデータブロックを選択し、それらから、規定数(1以上)の冗長データブロックを生成する。冗長データブロックは異なるストレージノード格納されるホストデータブロックから生成される。
データ分割・再構成プログラム220は、当該オブジェクトの構成ノードである、格納先ノードのそれぞれに、ホストデータブロック又は冗長データブロックを分散配置する(S14)。具体的には、データ分割・再構成プログラム220は、対応するストレージノードそれぞれに、データブロックを送信し、送信先のデータ分割・再構成プログラム220は、受信データを補助記憶装置22に格納した後、完了を送信元ストレージノードに返す。
さらに、受信データのオブジェクトの再配置状態が「再配置中」である場合には、ホスト10からデータを受信したストレージノードのメタデータ情報分散管理プログラム222は、分散データ管理表T40を更新(作成を含む)する。具体的には、メタデータ情報分散管理プログラム222は、当該オブジェクトの分散データ管理表T40を管理するストレージノードに、新たに生成したホストデータブロックのアドレス情報と格納先ノードの情報を送信する。送信先のメタデータ情報分散管理プログラム222は、受信した情報に従って、当該オブジェクトの分散データ管理表T40を更新する。
図7は、再配置処理の概要のフローチャートを示す。図7は、一つのストレージノードの処理を示す。メタデータ情報分散管理プログラム222は、データ再配置を行うオブジェクトの候補を決定する(S21)。たとえば、メタデータ情報分散管理プログラム222は、そのストレージノードが保持しているホストデータブロックの全てのオブジェクトを選択する。
次に、メタデータ情報分散管理プログラム222は、選択したオブジェクトそれぞれのデータ再配置に必要なデータセット(ホストデータブロック)が存在するか否かを判定する(S22)。再配置に必要なホストデータブロックは、冗長構成及び予め設定された条件に依存する。たとえば、再配置に必要なホストデータブロックは、冗長データを生成可能であって、規定量以上のホストデータブロックである。データ量の条件は設定されていなくてもよい。
冗長データの生成に必要なデータホストブロックは、同一のパリティノード、異なる再配置先ノードのホストデータブロックの組であって、その数が冗長構成のデータノード数を満たすものである。冗長データを生成するオブジェクトの組は予め設定されていてよく、冗長データを生成するオブジェクトは、分散配置における同一ノード構成のオブジェクトに限定されてもよい。たとえば、図1Bの例において、冗長データは、A、B、C、E、F、Gオブジェクトの組内で生成されてもよい。
いずれのオブジェクトの再配置のためにも必要なホストデータブロックが存在していない場合(S22:NO)、メタデータ情報分散管理プログラム222は、再配置に必要なホストデータブロックが揃うのを待つため、ステップS21に戻る。いずれかのオブジェクトの再配置を実行するためのホストデータブロックが保持されている場合(S22:YES)、フローはステップS23Aに進む。
メタデータ情報分散管理プログラム222は、オブジェクト毎に、今回の処理フローで再配置を実行する回数Nを計算する(S23)。一つのオブジェクトについての一回の再配置は、一つのストライプの再配置であり、ホストデータブロックから冗長データを生成し、複数ローカルノード及び1以上のパリティノードに格納する。オブジェクトの再配置を実行する回数は、当該ストレージノードから当該オブジェクトの一つのローカルノードにホストデータを送信する最大回数である。
上述のように、同一ストレージノードに送信するデータブロックは、まとめて送信することが通信トラヒックの点から好ましい。しかし、1回の再配置処理で対象の全てのデータの再配置をしない方がよい場合がある。例えば、再配置対象データのサイズが大きい場合や、再配置を実施するために割り当てることができる物理リソース(CPU、メモリ、ネットワーク、I/O)が少ない場合である。
例えば、メタデータ情報分散管理プログラム222は、送信データ量及び/又は現在の処理負荷等の状態情報を参照に、予め設定された条件に従って、各オブジェクトのホストデータの送信回数を決定する。
例えば、オブジェクトの再配置回数が多い場合、全てのデータの再配置が終わってから再配置後のデータを有効にすると、多くの時間がかかる場合がある。メタデータ情報分散管理プログラム222は、いずれかの回数Nが規定数に達しているか(規定数以上であるか)否か判定してもよい。規定数は1より大きい値であり、2でもよい。回数Nが規定数に達している場合、分散ストレージシステムは、全ての対象データの再配置前に、再配置処理の対象データを送信後に逐次的に有効にしてもよい。例えば、メタデータ情報分散管理プログラム222は、ホストデータブロックの送信と共に、当該ブロックを有効にすることの指示を送信し、ローカルノードはその指示に従う。
メタデータ情報分散管理プログラム222は、メタデータ管理表T20において、再配置を開始するオブジェクトの再配置状態を「再配置中」へ変更する。再配置対象オブジェクトの管理情報を保持している管理担当ストレージノードに、再配置を実行することを決定したノードから当該通知がなされる。
メタデータ情報分散管理プログラム222は、再配置対象のオブジェクトそれぞれの再配置回数Nが0より大きい否かを判定する(S24)。全てのオブジェクトの回数Nが0である場合(S34:NO)、フローはステップS33に進む。いずれかのオブジェクトの回数Nが1より大きい場合、フローはステップS25に進む。
冗長データ生成・損失データ回復プログラム221は、ストレージノードに格納されており、冗長データ生成の要件を満たす同一又は異なるオブジェクトのホストデータブロックから、冗長データを作成する(S25)。
冗長データ生成の要件は、設計に依存する。例えば、生成される冗長データを格納するパリティノードが同一であり、再配置後に格納されるローカルノードが異なる、規定数のホストデータブロックから冗長コードブロックが生成される。分散配置における同一構成ノードのホストデータブロックの組に限定されてもよく、予め定められたオブジェクト間においてのみ冗長データが生成されてもよい。
データ分割・再構成プログラム220は、宛先ノード毎に、送信データを決定し(S26)、各宛先ノードにデータをまとめて送信する(S27)。上述のように、まとめられるデータ量はデータサイズや処理負荷に応じて決定されてもよい。オブジェクトデータ(ホストデータ)はローカルノードに送信され、冗長データはパリティノードに送信される。データを受信したストレージノードは、受信データを一時領域に格納する(S28)。一時領域は、メモリ21上でもよく、補助記憶装置22上の一時的な格納領域でもよい。
データ分割・再構成プログラム220は、生成した冗長データ及びそれを生成したホストデータの再配置が終了すると、関係するストレージノード、具体的には、再配置を実行したオブジェクトそれぞれの構成ノード(メタデータ管理表T20に示されている)に通知する。データ分割・再構成プログラム220は、再配置に関係する全ストレージノードからの通知により、再配置に関係する全ストレージノードが再配置データの受信を完了したこと確認した(S29)後、再配置された旧データを削除する(S30)。これにより、再配置処理におけるデータの冗長性が維持される。分散ストレージ間の相互通知方法は上述の通りである。
データ分割・再構成プログラム220は、一時領域に格納されているデータを補助記憶装置22の領域に格納する(S31)。ホストデータは、旧データの格納位置に格納される。このステップは、一時領域を継続して利用する場合は不要である。
データ分割・再構成プログラム220は、再配置を実行した各オブジェクトの分散データ管理表T40を更新する。メタデータ情報分散管理プログラム222は、オブジェクトの分散データ管理表T40を保持する管理担当ストレージノードに、再配置したデータの情報を通知し、管理担当ストレージノードのメタデータ情報分散管理プログラム222が、受信データに従ってオブジェクトの分散データ管理表T40のデータ格納位置情報を更新する(S32)。全てのエントリが削除された分散データ管理表T40は削除される。その後、シーケンスはS23に戻る。
ステップS24において全てのオブジェクトの再配置回数が0である場合(S24:NO)、メタデータ情報分散管理プログラム222は、再配置を実行したオブジェクトそれぞれの分散データ管理表T40を保持する管理担当ストレージノードに、再配置の終了を通知する。管理担当ノードのメタデータ情報分散管理プログラム222は、全ての関連ノードから再配置の終了通知を受けると、当該オブジェクトのメタデータ管理表T20の情報を更新する(S33)。再配置処理状態欄C7の値が「済」に更新される。分散ストレージ間の相互通知方法は上述の通りである。
以上の処理から、ホストデータブロックからオブジェクトデータが再構成され、異なるオブジェクト間で、冗長データによるデータ保護がされる。
図8は、データリード処理の概要のラダーチャートを示す。ホスト10又はリード要求を受信した受信ノードのメタデータ情報分散管理プログラム222は、リード要求からオブジェクトIDを決定し、当該オブジェクトの管理情報を保持する管理担当ノードを決定する。受信ノードは、管理担当ノードへリード要求の指定オブジェクト及びアドレスを転送し、指定アドレスの格納先の情報を問い合わせる(S40)。
管理担当ノードは、指定オブジェクトの分散データ管理表T40及び存在する場合にはメタデータ管理表T20を参照して、指定アドレスのデータを格納しているストレージノードを特定する。管理担当ノードは、特定したストレージノードの情報を、受信ノードに返す(S42)。
受信ノードは、指定されたストレージノードに、オブジェクトIDとアドレス指定して、データの転送を要求する(S44、S45)。データ転送要求を受けたストレージノードは、受信ノードに要求されたデータを返す(S45、S47)。受付ノードは、ホスト10へリード要求に対するデータを応答し、リード処理が完了する。データは再配置処理により特定のローカルノードに格納されるため、リード要求時のノード間転送回数及び転送データ量が低減され、データリード性能を向上できる。
なお、ノード障害が発生した時は以下のように障害回復を行う。メタデータ情報分散管理プログラム222は、障害が起きたノードの回復処理後のデータを格納するノードを決定する。その後、データ分割・再構成プログラム220は、冗長データ生成・損失データ回復プログラム221と連携して、データの取得およびデータの回復を行い、回復後のデータを決定した格納先ノードへ格納する。その後、メタデータ情報分散管理プログラム222は、格納先ノード情報を更新して障害回復処理を終了する。
実施例2は、データ再配置処理を適用するオブジェクトを選択することにより、再配置処理に伴うオーバヘッドを削減する。以下において、実施例1と異なる部分を主に説明する。
図9A及び図9Bは、本実施例の概要を示す。本実施例は、データ再構成処理を行うオブジェクトを限定する。図9の例において、B、E、Gオブジェクトが、再配置処理の対象として選択される。A、C、Fオブジェクトのホストデータブロックは再配置されない。
図10は、本実施例における、図7のフローチャートにおける、ステップS21の詳細のフローチャートを示す。ステップS21は、データ再配置を行うオブジェクトの候補を選択する。図10において、メタデータ情報分散管理プログラム222は、メタデータ管理表T20の優先度欄C4と、再配置処理状態欄C7とを参照し、再配置処理状態が「未」であり、優先度が最も高いオブジェクトを選択する(S51)。優先度による他の選択基準が使用されてもよい。例えば、優先度が規定レベルに達しているオブジェクトが選択されてもよい。
メタデータ情報分散管理プログラム222は、再配置処理状態が「未」であり、アクセス頻度が規定値を超えるオブジェクトを選択する(S52)。オブジェクトのアクセス頻度は、例えば、当該オブジェクトの管理情報を保持するストレージノードにより管理されている。アクセス頻度による他の選択基準が使用されてもよい。例えば、アクセス頻度が最も高いオブジェクトが選択されてもよい。
もし、アクセス頻度の高い範囲が、オブジェクト全体でなく、オブジェクト中のある限定された範囲である場合は、アクセス頻度が高いアドレス範囲のデータのみを再配置候補として選択してもよい。なお、当該範囲を含むオブジェクトは、再配置候補のオブジェクトである。分散ストレージシステムは、次の手順を実施する。
(1)該当オブジェクトのメタデータ管理表T20の再配置処理状態を再配置中に設定する。
(2)対象データの再配置処理を実行する。分散データ管理表T40を作成、更新する。
(3)再配置完了後も、メタデータ管理表T20の再配置状態を変更せず、維持する。
これにより、オブジェクトの一部だけ配置方法が異なる場合も、分散データ管理表T40により管理することができる。本処理は、オブジェクトのサイズが非常に大きく、その一部のデータ部分のみの再配置処理が必要な場合に特に有効である。
本実施例は、データ再配置処理を適用するオブジェクト又はオブジェクト内データを選択することにより、再配置処理に伴うオーバヘッドを削減する。また、データの優先度又はアクセス頻度に基づいて再配置処理を実施するオブジェクトの候補を選択することにより、効率よく再配置処理を実施し、性能向上を実現できる。
実施例3において、ストレージノードは、旧データを消去することなく、ライトデータ(更新データ)を追記し、メタデータによりデータ更新を管理する、追記書き機能を有する。分散配置されているデータに対する更新データを受信すると、分散ストレージシステムは、フルストライプによる冗長データの生成及び分散配置(フルストライプライト)を行うことで、書き込み性能を向上する。
図11は、本実施例の概要を示す。通常、冗長構成のストライプに部分更新が起きた場合、その更新が発生した部分に関する新旧データ及びそれに関連するパリティを更新する必要がある。これにより、ストレージノード間のネットワーク通信がデータブロックを転送する度に発生し、ライト性能が低下する。
本実施例の分散ストレージシステムは、ライトデータを受信すると、ストライプを構成する他のデータが0データ(ダミーデータの一例)であると仮定し、フルストライプライトを行う。
図11において、Aオブジェクトの受信データ151は、a0**更新データブロック130及びa2*更新データブロック132からなる。分散先のノード数に受信データ151が満たない場合には、0データブロック131が仮定され、データブロック130、131及び132から、Pa012**冗長データブロック133が生成される。
冗長データの生成に使用された0データブロックは、担当ストレージノードに転送されず、その担当ストレージノードへ新規に0データがライトされたことのみが通知される。図11において、例えば、ストレージノード20_0は、0データブロック131をストレージノード20_1に転送せず、当該アドレスに対する0データのライトがあったことを通知する。
担当ストレージノード20_1は、当該アドレスのメタデータのみ更新する。本処理における0データは、フルストライプライトを実現する穴埋めのために、一時的に使用されるデータである。各ストレージノードは、0データを実際に記憶領域に格納せず、ユーザデータ位置を管理するメタデータにおいて、一時的な0領域であることを、ビットフラグ等を用いて、管理する。
データ一貫性は、ストレージノードのログライトにより維持される。ログライトは、更新データ及び更新メタデータを追記書きする。追記書きする更新時点をチェックポイントと呼ぶ。ログライトは、過去のチェックポイントから選択した一部又は全部のチェックポイントの更新データを、スナップショットとして保存する。これにより、更新データのスナップショットが自動かつ連続的に生成される。新規にチェックポイントを設定する時、ログライトは、チェックポイントを識別するチェックポイント番号をインクリメントする。
ログライトは、データを更新する時、データの更新箇所に対応する記憶メディア上のデータに更新データを上書きせず、更新データを記憶メディア領域上の別の領域に書き込む。これにより、任意チェックポイントのデータを復元できる。
図11の例において、AオブジェクトのチェックポイントN−2において、分散ストレージシステムは、ストレージノード20_0〜20_3へ、a0更新データブロック110、a1更新データブロック111、a2更新データブロック112、Pa012冗長データブロック113を分散配置する。
チェックポイントN−1において、a0データブロック110とa1データブロック111の更新データである、a0*更新データブロック120とa1*更新データブロック121がホストから書き込まれる。分散ストレージシステムは、0データブロック122が書き込まれたと仮定し、データブロック120、121、122からPa012*冗長データブロック123を作成する。
分散ストレージシステムは、データブロック120、121、123を、ストレージノード20_0、20_1、20_3に格納する。分散ストレージシステムは、ストレージノード20_2には0データブロック122が書き込まれたと仮定する。
チェックポイントNにおいて、a0**更新データブロック130とa2*更新データブロック132がホストから書き込まれる。分散ストレージシステムは、0データブロック131が書き込まれたと仮定し、データブロック130、131、132からPa012**冗長データブロック133を作成する。
分散ストレージシステムは、データブロック130、132、133を、ストレージノード20_0、20_2、20_3に格納する。分散ストレージシステムは、ストレージノード20_1には0データブロック131が書き込まれたと仮定する。
その後、分散ストレージシステムは、非同期で、最新データ(a0**データブロック130、a1*データブロック121、a2*データブロック132)から、冗長データを再生成する。ここでは、最新データから冗長データが生成された前回のチェックポイントから、本非同期処理を実施するチェックポイント数Xが2である例を説明する。
チェックポイントN−2は、前回の最新データから冗長データが生成されたチェックポイントである。したがって、チェックポイントN−1とNが、冗長データを生成する対象である。Aオブジェクトにおいて、チェックポイントN−1のa1*データブロックで、ストレージノード20_3のPa012**を更新するため、ストレージノード20_1は、a1*データブロックのコピー141を、ストレージノード20_3へ転送する。
Pa012***冗長データブロック153は、a1*データブロック141とPa012**冗長データブロック133から生成された冗長データである。分散ストレージシステムは、Pa012***冗長データブロック153を生成後、補助記憶装置22へ書き込み、チェックポイントN−1とNに関して不要なデータを削除する。以上の手順により、信頼性を維持したまま、最新データの冗長データを再生成できる。なお、分散ストレージシステムは、Cオブジェクトに対しても、Aオブジェクトと同様の処理を実行する。
このように、本実施例の分散ストレージシステムは、更新データを分散配置する時、ストライプを構成するために不足しているデータを0データと仮定し、フルストライプライトを行う。その後、分散ストレージシステムは、非同期処理において、最新データの冗長データを生成することで、冗長データの更新に伴うストレージノード間のデータ通信を低減し、性能を向上する。
図12は、本実施例における分散ストレージシステムのソフトウェア構成の概略を示す。実施例1及び実施例2との相違点は、追記書きプログラム225である。追記書きプログラム225は、データを記憶装置へ書き込む時に追記書きを行う。
ここで、図5Aの追記書き用メタデータ構造T27は、追記書きプログラム225において、データ追記書き込み先アドレスを管理するメタデータである。追記書き用メタデータ構造T27は、ストレージノード毎に用意され、保持される。追記書き用メタデータ構造T27は、チェックポイント番号欄C46、フラグ欄C47、アドレス欄C48を有する。
チェックポイント番号欄C46は、データが書き込まれた時のチェックポイント番号を格納する。フラグ欄C47は、ゼロ領域か、スパース領域か、一時書き込みか等を示すビットマップを格納する。ゼロ領域は、データがゼロである領域であり、実際にデータはゼロデータを書かなくてもよい。スパース領域は、何もデータが書かれていない領域である。一時書き込み領域は、前述したとおりである。アドレス欄C48は、データが書き込まれたアドレスを格納する。
例えば、フルストライプライトのために0データを格納した領域に対して、フラグ欄C47は、一時書き込みフラグとゼロ領域フラグを示す。また、アドレス欄C48は、0埋めによる一時書き込み前のアドレスを保持する。一時書き込みかつゼロ領域フラグは、非同期書き込み処理時に、最新のデータかどうかを判定するためのビットフラグであり、実際にゼロデータが書き込まれたわけではない。そのため、アドレス欄C48は、0埋めによる一時書き込み前のアドレスを保持し、データ整合性を維持する。
以下において、実施例1との相違点を主に説明する。図6の分散配置処理の冗長データ生成ステップS13において、追記書きプログラム225は、冗長データを生成するために、一時的な0データが必要か否かを判定し、必要であれば0データを追加して冗長データを生成する。データブロック分散配置ステップS14において、追記書きプログラム225は、一時的な0データの領域に割り当てられているストレージノードへ、0データの情報を通知する。
図13は、非同期で実施する最新データによる冗長データ再生成処理の概要を示すフローチャートである。ホストデータブロックを保持する各ストレージノードの追記書きプログラム225は、現在のチェックポイント(CP)番号と当時の最新データ間で冗長データ生成が完了しているCP番号との差が、本非同期処理を実施するチェックポイント数Xに達しているか判定する(S71)。
Xはチューニングパラメータであり、例えば、管理システム50から予め設定されている。Xが大きければ大きい程、非同期処理が走る回数が減り、システム負荷が減少する。一方、システムが一時的な0埋め情報を保持する期間が、長くなる。システム負荷やネットワーク負荷が軽い時に冗長データ再生成処理が実施されるように、Xは、動的に変更されてもよい。冗長データ再生成処理を即時に実行する場合には、Xの値は0に設定される。
ステップS71の判定結果がNOの場合、追記書きプログラム225は、非同期処理を実行しない。ステップS71の判定結果がYESの場合、追記書きプログラム225は、ステップS72に進む。
パリティノードの追記書きプログラム225は、一時書き込み状態のストライプを保持する複数のチェックポイント内で、一つのストライプ(チェックポイント)を選定し、そのチェックポイント番号を決定する(S72)。決定されたストライプは、関連データノードに通知される。例えば、追記書きプログラム225は、最新の冗長データへの更新のためにノード間データ移動が最小になるストライプ列を選択する。本例において、ストライプ内で最も多くの最新データブロックを保持するストライプが選択される。これにより、冗長データ更新に伴うネットワークデータ転送を最小化する。
一部のデータノードの追記書きプログラム225は、中間冗長データを生成する(S74)。本ステップは、選択されたストライプに最新ホストデータブロックが含まれていないデータノードにより実行される。
追記書きプログラム225は、異なるチェックポイントのホストデータブロックから、冗長データを更新するためのデータブロックを選択する。追記書きプログラム225は、最新ホストデータブロックと選択されたストライプ内のホストデータブロックとを選択する。選択されたストライプ内のホストデータブロックが0データである場合は、最新データブロックのみ選択される。
冗長データ生成・損失データ回復プログラム221は、選択されたホストデータブロックから、中間冗長データを生成する(S74)。選択されたストライプ内のホストデータブロックが0データである場合、中間冗長データは、最新のホストデータブロックである。データ分割・再構成プログラム220は、中間冗長データをパリティノードへ転送する(S75)。
パリティノードにおいて、データ分割・再構成プログラム220は、転送されてきた中間冗長データを受信すると、冗長データ生成・損失データ回復プログラム221と連携して、中間冗長データとステップS72で決定したストライプの冗長データとから、新冗長データを生成する(S76)。ストライプの各追記書きプログラム225は、新冗長データが新規LBAへ書き込まれると、不要となった旧ホストデータを削除する(S77)。ストライプの各追記書きプログラム225は、追記書き用メタデータ構造T27において、最新データ間冗長データ生成CP番号を現在のCP番号で更新し、処理を完了する。
更に、図13に示す最新データによる冗長データ再生成処理と図7に示す再配置処理を組み合わせることが可能である。例えば、各ストレージノードが更新データの追記書き処理を行うことを前提とする。図7のステップS25において、各ストレージノードは、関係するホストデータブロック間で冗長データを生成する際に、最新データを選択する。再配置処理により冗長データの更新も完了するため、図13に示す最新データによる冗長データ再生成処理も完了する。
以上のように、本実施例は、更新データを分散配置する時、ストライプを構成する穴あきデータが0埋めデータと仮定して、フルストライプライトを行い、その後、非同期処理において、冗長データに最新更新データを反映する。更に、本処理を、実施例1又は2で示した再配置処理と組み合わせる。これらにより、冗長データの更新に伴うノード間データ通信を低減し、性能を向上する。
本実施例は、アプリケーションプログラム(アプリ)や仮想マシン(VM)を、オブジェクトの再配置先ストレージノード又はオブジェクトのコピーデータを保持するストレージノードへ配置する例、及び、それらノードへ割り当てられなかった場合に実行されるデータコピー方法を説明する。
アプリ/VMを実行するストレージノードは、動的に割り当てることが可能である。例えば、アプリ/VMは、データを保持するノードへ割り当ててもいいし、それ以外のノードへ割り当ててもよい。図14は、アプリ/VMを割り当てる際のシステム構成図を示す。実施例1との相違点として、各ストレージノードは、リソース管理(割当・解放)プログラム225、コピー解放プログラム228及びコピー保持ノード管理表T28を保持する。
再配置処理を行う前にアプリ/VMが配置されると、アプリ/VMは、複数のストレージノードに分散された分割データを、内部ネットワーク102を介して取得し、元のオブジェクトまたはその一部を再構成する。これは、元のオブジェクトまたはその一部のコピーを保持することを意味する。
そこで、アプリ/VMの割当先ノードは、一例として、アプリ/VMが使用するデータのローカルノードが選択される。分散データの再配置処理は、アプリ/VMによる再構成済みオブジェクトが存在することを利用する。
図7のステップS26〜S31は、再配置のためのデータ移動を、アプリ/VMによる再構成済みデータを除いて実施する。この方法は、再構成済みデータを、コピー保持ノード管理表で管理する。つまり、データのコピーを作成する時に、コピー保持ノード管理表へコピー保持ノードの情報を登録し、再配置処理を実施する時に、コピー保持ノード管理表を参照し、利用する。これにより、再配置処理に伴うノード間ネットワーク通信データ量を削減する。また、コピーデータが既に存在する場合には、そのコピーデータ保持ノードへアプリ/VMを割り当て、データ移動しないことによる性能向上を狙う。
図5Bは、コピー保持ノード管理表T28を示している。コピー保持ノード管理表T28は、コピーを保持するオブジェクト毎に作成され、例えば、オブジェクトの担当ストレージノードが、メタデータ管理表T20と共に保持する。コピー保持ノード管理表T28は、オブジェクト内のデータブロック単位のコピー保持ノードを保持する。
コピー保持ノード管理表T28は、範囲(LBA)欄C42、コピー先構成ノード欄C44を有する。範囲(LBA)欄C42は、他ノードへコピーされたデータブロックのアドレス範囲(LBA)を示す。コピー先構成ノード欄C44は、データブロックのコピーを保持するストレージノードを示す。
分散ストレージシステムは、アプリ/VMを割り当てる際、コピー保持ノード管理表T28を参照し、コピーが存在するストレージノードへ優先的にアプリ/VMを割り当て、ローカルリードによる性能向上を図る。
コピーが存在しないストレージノードへアプリ/VMを割り当てる場合が考えられる。例えば、データおよびそのコピーを保持するノードの、CPUやメモリ等のリソースが少ない場合である。
この場合、アプリ/VMを割り当てた後に、データ保持ノードからアプリ/VMを割り当てたノードに、アプリ/VMのアクセスに従って、データをコピーする。このデータコピー方法は、既存のコピーデータを保持するノード毎に異なるデータコピー範囲(アドレス)を決めて、データコピーを行う。これより、データコピーを高速化する。データコピー処理は、優先度の高いオブジェクトのデータを優先してコピーしてもよい。
図15は、アプリ/VMの割当に伴うデータコピー処理の概要のフローチャートを示す。アプリ/VMのノード割当要求に応じて、複数のストレージノードのリソース管理(割当・解放)プログラム225が、連携して、割当ノードを決定する(S61)。割当ノードの選択の最優先はローカルノードであり、ローカルノードへの割り当てが不適切と判定されると、その他のストレージノードが選択される。
例えば、ローカルノードのリソースに余裕がない場合、他のストレージを選択する。選択される他のストレージノードは、リソースに余裕があるストレージノードである。リソースは、例えば、CPU、メモリ及び/又は通信インタフェースであり、選択は、それらの利用率と閾値との比較結果に基づく。割当要求は、アプリ/VMが参照するオブジェクトの情報を含む。
アプリ/VM割当要求を受けたノードのリソース管理(割当・解放)プログラム225は、アプリ/VM割当先ノードが、コピーを含んだデータ保持ノードかどうかを、コピー保持ノード管理表T28を使用して確認する(S62)。ステップS62の確認結果がYESの場合、リソース管理(割当・解放)プログラム225は、コピー保持ノードへ、アプリ/VMを割り当て(S64)、処理を終了する。
ステップS62の確認結果がNOの場合、リソース管理(割当・解放)プログラム225は、アプリ/VMを新規ノードへ割り当て(S63)、メタデータ管理表T20を参照して、コピー処理が必要なオブジェクト間の優先度を決定する(S65)。
コピー解放プログラム228が、コピーが必要なデータブロック毎に、コピー保持ノード間のリソース使用状況及び/又はネットワーク負荷を考慮しながら、データコピー範囲を決定する(S66)。例えば、各ストレージノードのCPU使用率、メモリ使用量、及び又はネットワーク負荷から、各ストレージノードの比率を決定する。この比率に従って、各ストレージノードのデータコピー範囲(コピーデータ量)を決定する。
例えば、三つのデータコピー保持ノードが存在し、それらの間の比率が3:2:1と決定された場合、そのデータコピー範囲(アドレス範囲)は、3:2:1の割合と決定される。その後、コピー解放プログラム228は、データコピー処理を行う(S67)。
最後に、コピー解放プログラム228が、コピー保持ノード管理表T28において、当該オブジェクトIDに対して新規ノードを追加して、処理を完了する。コピー解放プログラム228は、コピーデータの削除を、LRUなどのアルゴリズムを用いて削除する。この時、コピー保持ノード管理表T28からのノードIDの削除、全てのコピーが無くなればそのオブジェクトIDのエントリの削除を先に行い、その後にデータの削除を行う。
本実施例によれば、アプリ/VMの割当を、再配置処理を行ったノードまたはコピーデータを保持するストレージノードへ配置し、更に、前記ストレージノードへ割り当てられなかった場合には、データコピーを、コピー保持ノードからデータコピー範囲を決めてから、実施する。更に、オブジェクト毎の優先度を考慮することで、優先度の高いオブジェクトの性能低下を回避する。
また、データ再配置時に、データコピーを考慮して実施し、コピーデータの高信頼データ再配置時のデータ移動を止めることで、高信頼データ再配置時のネットワーク負荷を回避する。以上により、アプリ/VMのリード性能を向上させる。
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示すとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。

Claims (13)

  1. ネットワークを介して接続された複数のストレージノード、を含むストレージシステムであって、
    第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み
    前記第1ストレージノードは、オブジェクトのライトデータを受信し、
    前記第1ストレージノードは、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、
    前記第1ストレージノードは、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、
    前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、
    前記第2ストレージノードは、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、
    前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックから第2冗長データブロックを生成し、
    前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数のストレージノードの何れか1つに再配置される、ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記第1ストレージノードは、前記オブジェクトの識別子に基づいて前記異なるストレージノードを決定し、
    前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれのオブジェクトの識別子に基づいて、前記再配置先ストレージノードと前記第2冗長データブロックを配置する前記ストレージノードとを決定する、ストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記異なるストレージノードは、複数のオブジェクトからなるオブジェクト群と予め関連付けられている、ストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    分散配置ライトデータブロックを保持しているストレージノードは、前記分散配置ライトデータブロックが再配置され、前記分散配置ライトデータブロックから生成される冗長データブロックが配置された後に、前記分散配置ライトデータブロックを削除する、ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記第2ストレージノードは、同一ストレージノードに送信する複数の分散配置ライトデータブロックを1回で送信する、ストレージシステム。
  6. 請求項1に記載のストレージシステムであって、
    前記第2ストレージノードは、前記再配置をオブジェクトの予め定められた優先度に基づいて選択した1又は複数のオブジェクトの分散配置ライトデータブロックについて実行する、ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記第2ストレージノードは、前記再配置を、オブジェクトのアクセス頻度に基づいて選択した1又は複数のオブジェクトの分散配置ライトデータブロックについて実行する、ストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記複数のストレージノードは、それぞれ、旧データを消去することなく更新データを追記し、メタデータによりデータ更新を管理し、
    前記第1ストレージノードは、
    前記受信したライトデータの更新データを受信し、
    前記ライトデータを削除することなく、前記更新データから複数の更新ライトデータブロックを生成し、前記複数の更新ライトデータブロックから第3冗長データブロックを生成し、
    前記第3冗長データブロックを前記第3ストレージノードに配置し、
    前記更新ライトデータブロックそれぞれを、前記異なるストレージノードにおける、前記第3ストレージノード以外のストレージノードに配置し、
    前記第3ストレージノードは、前記異なるストレージノードの少なくとも一部から受信した、最新ライトデータを使用して生成された中間冗長データにより、前記第3冗長データブロックを更新し、最新冗長データブロックを生成する、ストレージシステム。
  9. 請求項8に記載のストレージシステムであって、
    前記更新データが、前記受信したライトデータの一部の更新データである場合、
    前記第1ストレージノードは、前記更新データ内のデータからなるデータブロックと、ダミーデータからなるダミーデータブロックと、を含むように、前記複数の更新ライトデータブロックを生成し、
    前記ダミーデータブロックの配置において、前記ダミーデータブロックを配置先ストレージノードに送信することなく前記ダミーデータブロックの通知を行い、
    前記ダミーデータブロックの配置先ストレージノードは、前記ダミーデータブロックを格納することなく管理情報により管理する、ストレージシステム。
  10. 請求項9に記載のストレージシステムであって、
    前記第3冗長データブロックは、複数チェックポイントのストライプにおいて、最も多くの最新データブロックを含むストライプの冗長データブロックである、ストレージシステム。
  11. 請求項8に記載のストレージシステムであって、
    前記第2ストレージノードは、最新データから前記複数の分散配置ライトデータブロックを選択する、ストレージシステム。
  12. 請求項1に記載のストレージシステムであって、
    ホストプログラムを配置するためのストレージノードとして、当該ホストプログラムが使用するオブジェクトの再配置先ストレージノードの優先度は、当該ホストプログラムが使用するオブジェクトを保持しないストレージノードよりも高い、ストレージシステム。
  13. コードを含む、計算機読み取り可能な非一時的記憶媒体であって、前記コードは、ストレージシステムにおけるプロセッサにより実行されることで、前記ストレージシステムに処理を実行させ、
    前記ストレージシステムは、ネットワークを介して接続された第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み、
    前記処理は、
    前記第1ストレージノードが、オブジェクトのライトデータを受信し、
    前記第1ストレージノードが、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、
    前記第1ストレージノードが、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、
    前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、
    前記第2ストレージノードが、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、前記選択された複数の分散配置ライトデータブロックから生成される第2冗長データブロックの配置先が前記第3ストレージノードであり、
    前記第2ストレージノードが、前記選択された複数の分散配置ライトデータブロックから前記第2冗長データブロックを生成し、
    前記第2ストレージノードが、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数のストレージノードの何れかに1つ再配置される、記憶媒体。
JP2018501544A 2016-02-26 2016-02-26 ストレージシステム Active JP6653370B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/055873 WO2017145375A1 (ja) 2016-02-26 2016-02-26 ストレージシステム

Publications (2)

Publication Number Publication Date
JPWO2017145375A1 JPWO2017145375A1 (ja) 2018-08-30
JP6653370B2 true JP6653370B2 (ja) 2020-02-26

Family

ID=59684991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018501544A Active JP6653370B2 (ja) 2016-02-26 2016-02-26 ストレージシステム

Country Status (3)

Country Link
US (1) US10394484B2 (ja)
JP (1) JP6653370B2 (ja)
WO (1) WO2017145375A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021046693A1 (zh) * 2019-09-09 2021-03-18 华为技术有限公司 存储系统中数据处理方法、装置以及存储系统
US11416356B2 (en) 2020-04-22 2022-08-16 Netapp, Inc. Network storage failover systems and associated methods
US11768775B2 (en) * 2021-07-28 2023-09-26 Netapp, Inc. Methods and systems for managing race conditions during usage of a remote storage location cache in a networked storage system
US11537613B1 (en) * 2021-10-29 2022-12-27 Snowflake Inc. Merge small file consolidation
US11593306B1 (en) 2021-10-29 2023-02-28 Snowflake Inc. File defragmentation service

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3427763B2 (ja) * 1999-01-26 2003-07-22 日本電気株式会社 ディスクアレイ装置
US6609176B1 (en) * 1999-12-27 2003-08-19 Kabushiki Kaisha Toshiba Disk control system and data rearrangement method
WO2002027501A1 (fr) * 2000-09-20 2002-04-04 Yutaka Yasukura Methode d'edition/retablissement d'information electronique
JP3950720B2 (ja) * 2002-03-18 2007-08-01 株式会社日立製作所 ディスクアレイサブシステム
JP2005148854A (ja) * 2003-11-11 2005-06-09 Hitachi Ltd ファイルシステム及びプログラム
JP4146380B2 (ja) * 2004-03-29 2008-09-10 東芝ソリューション株式会社 ストレージシステム、ブロック再配置制御方法及びプログラム
US8019799B1 (en) * 2004-04-12 2011-09-13 Symantec Operating Corporation Computer system operable to automatically reorganize files to avoid fragmentation
US7546342B2 (en) 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US8825980B2 (en) * 2012-03-21 2014-09-02 International Business Machines Corporation Consideration of adjacent track interference and wide area adjacent track erasure during disk defragmentation
IN2013MU03094A (ja) * 2013-09-27 2015-07-17 Tata Consultancy Services Ltd

Also Published As

Publication number Publication date
JPWO2017145375A1 (ja) 2018-08-30
WO2017145375A1 (ja) 2017-08-31
US20180373435A1 (en) 2018-12-27
US10394484B2 (en) 2019-08-27

Similar Documents

Publication Publication Date Title
US11487619B2 (en) Distributed storage system
US10977124B2 (en) Distributed storage system, data storage method, and software program
JP7312251B2 (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US6912537B2 (en) Dynamically changeable virtual mapping scheme
JP6653370B2 (ja) ストレージシステム
US10459638B2 (en) Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium
US20090077327A1 (en) Method and apparatus for enabling a NAS system to utilize thin provisioning
JP2022504790A (ja) データブロックのイレイジャーコーディングコンテンツ主導分散
US11301137B2 (en) Storage system and data arrangement method of storage system
JPWO2015052798A1 (ja) ストレージシステム及び記憶制御方法
WO2017112166A1 (en) Dynamic storage transitions employing tiered range volumes
US20220182445A1 (en) Method and apparatus for performing simple storage service seamless migration using index objects
US11899533B2 (en) Stripe reassembling method in storage system and stripe server
US20180307426A1 (en) Storage apparatus and storage control method
US20220365692A1 (en) Techniques for storage management
US20210103400A1 (en) Storage system and data migration method
WO2016013075A1 (ja) ストレージ、計算機およびその制御方法
WO2018055686A1 (ja) 情報処理システム
WO2017212515A1 (ja) ストレージシステム、計算機、およびストレージ制御方法
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
JP2022020744A (ja) ストレージシステム及びストレージ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190828

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200127

R150 Certificate of patent or registration of utility model

Ref document number: 6653370

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150