JP6260193B2 - ストレージシステム、及びストレージプログラム - Google Patents

ストレージシステム、及びストレージプログラム Download PDF

Info

Publication number
JP6260193B2
JP6260193B2 JP2013218706A JP2013218706A JP6260193B2 JP 6260193 B2 JP6260193 B2 JP 6260193B2 JP 2013218706 A JP2013218706 A JP 2013218706A JP 2013218706 A JP2013218706 A JP 2013218706A JP 6260193 B2 JP6260193 B2 JP 6260193B2
Authority
JP
Japan
Prior art keywords
data
disk
parity
disks
local
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
JP2013218706A
Other languages
English (en)
Other versions
JP2015082150A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013218706A priority Critical patent/JP6260193B2/ja
Priority to US14/488,419 priority patent/US9400620B2/en
Publication of JP2015082150A publication Critical patent/JP2015082150A/ja
Application granted granted Critical
Publication of JP6260193B2 publication Critical patent/JP6260193B2/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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、分散ストレージの信頼性向上技術に関する。
クラウドストレージの分野では、データを複製することによりディスク故障・ブロック故障によるデータロスを回避するレプリケーション技術が広く普及している。近年、データを効率的に符号化して最小限の冗長性を持たせることにより、更なる信頼性、容量効率の向上を実現するerasure codeの技術が盛んに研究開発されている。
しかし、その代表的な方式であるRAID(Redundant Arrays of Inexpensive Disks)では、冗長化する全てのディスクからパリティを計算する必要がある。そのため分散ストレージにおいてはノード間のデータ転送量が増大し、ネットワークがボトルネック化するという問題が存在ある。
そこで、クラウドストレージにおいて、一部のパリティを全てのディスクではなく一部のディスクのみから計算することによって、単一ディスク復旧時のネットワークデータ転送量を削減する技術がある。
特開2005−44182号公報 特開2007−257630号公報 特開平7−200187号公報
しかしながら、一部のパリティを一部のディスクから計算するようにパリティが配置されたシステムにおいては、ディスクの多重障害に対応した、適切なパリティの配置がなされていない。この場合、ディスクが多重障害を起こした場合はグローバルパリティ(全てのディスクのデータを使って計算するパリティ)を使って復旧する必要がある。また、データディスク数と同じ数のディスクから故障したディスクを管理するノードにデータを転送しなければならない。
そこで、1つの側面では、本発明は、故障ディスクの復旧に関して最適に配置されたパリティディスクを有するストレージシステムを提供することを目的とする。
一態様によるストレージシステムは、情報を格納する複数のデータディスクと、パリティディスクを備える。パリティディスクは、複数のデータディスクのうちの一部を含むディスクグループに対応し、対応するディスクグループに含まれるデータディスクのデータに基づいて生成されたパリティ情報を格納する。また、データディスクのいずれかは、複数のディスクグループに含まれる。
1実施態様によれば、故障ディスクの復旧に関して最適に配置されたパリティディスクを有するストレージシステムを提供することができる。
ストレージシステムの一実施例の構成を図解した機能ブロック図である。 情報処理システムの構成の一例を示す。 管理サーバの構成の一例を示す。 実施形態1に係るローカルパリティの計算範囲の一例を示す。 実施形態1に係るディスク故障発生時の処理を図解したフローチャートである。 管理サーバのハードウェア構成の一例を示す。 実施形態2に係るローカルパリティの計算範囲の一例を示す。 実施形態3に係るローカルパリティの計算範囲の一例を示す。 実施形態4に係るローカルパリティの計算範囲の一例を示す。 実施形態5に係るディスク故障発生時の処理を図解したフローチャートの前半である。 実施形態5に係るディスク故障発生時の処理を図解したフローチャートの後半である。 比較例1のデータ構成の一例を示す。 比較例2のデータ構成の一例を示す。 実施形態5と比較例との性能比較を示す図である。
図1は、ストレージシステムの一実施例の構成を図解した機能ブロック図である。図1においてストレージシステム1は、データディスク2、パリティディスク3、及び復元部4を備える。
データディスク2は、情報を格納する。パリティディスク3は、複数のデータディスク2のうちの一部を含むディスクグループに対応し、対応するディスクグループに含まれるデータディスク2のデータに基づいて生成されたパリティ情報を格納する。そして、データディスク2のいずれかは、複数のディスクグループに含まれる。
複数のデータディスク2のいずれも、ディスクグループのいずれかに含まれる。また、ディスクグループ間において、ディスクグループに含まれるデータディスク2の数が等しい。
複数のパリティディスク3は、各パリティグループ内の任意のパリティディスク3の対が、対応するディスクグループに同じデータディスク2を含まないように、複数のパリティグループに分類される。そして、複数のデータディスク2のいずれも、パリティグループのそれぞれに含まれるパリティディスク3に対応するディスクグループのいずれかに含まれる。
データディスク2のそれぞれはストライプのデータの格納順に昇順で識別番号が対応付けられており、各パリティディスク3に対応するディスクグループに含まれるデータディスク2の識別番号の最小値が、データディスク数をパリティディスク数で割った数だけずれている。
復元部4は、1以上のデータディスク2が故障した場合、故障したデータディスク2を含むディスクグループに対応するパリティディスク3を用いて、故障したデータディスク2のデータを復元する。また、復元部4は、すべての故障したデータディスク2が、選択する何れかのパリティディスク3に対応するディスクグループに含まれ、且つ、選択する全てのパリティディスク3に対応するディスクグループに1以上の故障したデータディスク2を含むように、故障したデータディスク2の数と等しい数のパリティディスク3を選択し、選択したパリティディスク3に基づいて、故障したデータディスク2のデータを復元する。さらに、復元部4は、すべての故障したデータディスク2が、選択する何れかのパリティディスク3のディスクグループに含まれ、且つ、選択する全てのパリティディスク3に対応するディスクグループに1以上の故障したデータディスク2を含み、さらに、選択するパリティディスク3に対応するディスクグループに含まれるデータディスク2の集合としての和が最小となるように、故障したデータディスク2の数と等しい数のパリティディスク3を選択し、選択したパリティディスク3に基づいて、故障したデータディスク2のデータを復元する。
(実施形態1)
図2は、実施形態1に係る情報処理システムの構成の一例を示す。図2において、情報処理システムは、クライアントサーバ21、及び複数の管理サーバ22(22a〜22c)を含む。クライアントサーバ21は複数の管理サーバ22とネットワーク又はバスを介して接続される。そして各管理サーバ22には、複数のディスク23(23a〜23l)が接続されており、各管理サーバ22によりディスクに対するデータの入出力が行われる。
情報処理システムには、複数のディスクのうちのいくつかのディスクを含むディスクアレイが構成される。例えば、一つのディスクアレイとして、ディスク23a、ディスク23e、ディスク23iが含まれるディスクアレイが考えられる。また、別のディスクアレイとして、例えば、ディスク23a、ディスク23b、ディスク23cが含まれるディスクアレイが考えられる。
クライアントサーバ21は、ユーザ端末からデータを受け付け、受け付けたデータを分割してディスクアレイを構成するディスクを管理する管理サーバ22に送信する。
管理サーバ22は、クライアントサーバ21からデータを受信し、受信したデータを管理サーバ22が管理するディスクに格納する。
ここで、ディスクアレイに格納されるデータは、所定のサイズずつ順番に、アレイ内の異なる物理ディスクに配置される。この所定のサイズの各ディスクに配置されたデータセットをストリップ(stlip)と呼ぶ。そして、複数のストリップを含むデータセットをストライプと呼ぶ。ディスクアレイの記憶スペースは、複数のストライプから構成される。
ディスクアレイは、データディスク、及びパリティディスクを含む。データディスクはディスクアレイを使用するユーザからのデータが格納されるディスクである。パリティディスクは、ディスク故障時にデータディスクのデータを復旧させるために用いられるパリティ情報が格納されるディスクである。
各パリティディスクは複数のデータディスクに対応付けられており、パリティディスクに格納されるパリティ情報は、そのパリティディスクに対応付けられた複数のデータディスクのデータを基に算出される。パリティディスクに対して対応付けられた複数のデータディスクのことを、以下の説明では、パリティディスクの計算範囲に含まれるデータディスクと記す場合がある。パリティ情報は、具体的には例えばリードソロモン符号であってよいし、種々のエラー訂正のための情報が用いられてもよい。
実施形態1においては、各パリティディスクの計算範囲に含まれるデータディスクは、ディスクアレイの全てのデータディスクではなく、一部のデータディスクとする。ここで、このように、計算範囲に含まれるデータディスクが、一部のデータディスクとなるパリティディスクを、以下の説明ではローカルパリティと記す場合がある。また、すべてのローカルパリティのうちの各々のローカルパリティは、互いに異なる計算範囲を有する。さらに各ローカルパリティは、少なくとも一つの他のローカルパリティの計算範囲に含まれるデータディスクと少なくとも一つの共通するデータディスクを計算範囲として含むものとする。さらに、ディスクアレイに含まれる各データディスクは、少なくともいずれかのローカルパリティの計算範囲に含まれるものとする。尚、各パリティディスクの計算範囲に含まれるデータディスクは、連続する複数のデータディスクであってもよい。データディスクが連続するとは、1つのストライプにおいて、一方のストリップの最後に書き込まれるデータの次に、他方のストリップの最初のデータとしてデータが書き込まれるようなデータディスク同士の関係を指す。
管理サーバ22は、制御部31、復元部32、パリティ生成部33、及び記憶部34を含む。制御部31は、クライアントサーバ21または他の管理サーバ22からの要求に応じて、ディスクのデータの読み込み及び書き込みを行い、その結果を要求元に返信する。復元部32は、管理サーバ22が管理するデータディスクが故障した場合に、故障したデータディスクのデータを、ローカルパリティのデータを用いて復元する。パリティ生成部33は、各ローカルパリティの計算範囲に含まれるデータディスクに格納されたデータを用いて、パリティ情報を算出し、算出したパリティ情報をローカルパリティに格納する。記憶部34は、ディスクアレイに含まれる各ローカルパリティと、ローカルパリティの計算範囲に含まれるデータディスクの情報を対応付けて、対応情報として記憶する。
以下の説明では、ディスクアレイに含まれる全ディスクの数をn、データディスク数をk、ローカルパリティのディスク数をp=n-kとすると、k=10、p=6の場合を説明する。
図4は、ローカルパリティの計算範囲の一例を示す。図4においては、10個のデータディスクと6個のローカルパリティが含まれるディスクアレイの例である。そして各データディスクはD1〜D10、各ローカルパリティはL1〜L6で示されている。
ローカルパリティL1は、D1〜D5の5つのデータディスクを計算範囲として含む。また、ローカルパリティL2、L3、L4、L5、L6はそれぞれ、D2〜D6、D4〜D7、D5〜D10、D8〜D2、D9〜D3のデータディスクを計算範囲として含む。ここで、L1〜L6はいずれも、他のローカルパリティと計算範囲が同じではなく、また、少なくとも一つの他のローカルパリティと、少なくとも一つの共通するデータディスクを計算範囲として含んでいる。すなわち例えばL1に関していえば、L1はL2に対してD2〜D5のデータディスクを共通して計算範囲に含み、L6に対してD1〜D3のデータディスクを共通して計算範囲に含んでいる。
次に、データディスクが故障した場合の復旧について説明する。ディスクが故障した場合、先ず、故障したディスクを管理する管理サーバ22は、他の装置(例えばクライアントサーバから)ディスクが故障したことの通知を受信する。すると管理サーバ22の制御部31は、故障したディスクの内容を復元したデータを格納するための、故障したディスクの代わりとなる予備のディスク(スタンバイディスク)を割り当てられる。
次に、管理サーバ22の復元部32は、ディスクアレイに含まれる複数のローカルパリティの中から、故障したディスクを復旧するために使用するローカルパリティを選択し、選択したローカルパリティのデータを用いて、故障したデータディスクのデータを復元する。
具体的には先ず、復元部32は、復旧に使用するローカルパリティとして、以下の3つの条件(以下、選択条件と記す)を満たすローカルパリティの組み合わせを選択する。1つ目の選択条件は、ローカルパリティの組み合わせの要素数が、故障したデータディスク数と同じであることである。例えば、故障したデータディスクの数が3つであれば、組み合わせに含むローカルパリティとして、3つのローカルパリティが選択されることとなる。2つ目の選択条件は、組み合わせに含まれるローカルパリティの各々が、計算範囲に少なくとも一つの故障したデータディスクを含むことである。すなわち、故障したデータディスクを計算範囲に一つも含まないローカルパリティは、組み合わせの要素としては選択されない。3つ目の選択条件は、故障したデータディスクが、組み合わせに含まれるローカルパリティのいずれかの計算範囲に含まれることである。
復旧に使用するローカルパリティの組み合わせの選択について、図4の例を用いて説明する。図4の例において、D2、D5、D8の3つのデータディスクが故障した場合を考える。復旧に使用するローカルパリティの組み合わせは、選択条件を満たす。図4の例では、故障したデータディスク数は3つであるので、復旧に使用するデータディスクとしては3つのローカルパリティが選択される。選択されるローカルパリティは、計算範囲として少なくとも一つの故障したデータディスクを含むものであるので、D2、D5、D8のうち少なくとも一つを計算範囲に含むローカルパリティである、L1〜L6の何れかから選択される。そしてさらに、選択された3つのローカルパリティの何れかの計算範囲に、故障した各データディスクが含まれるという条件を満たすローカルパリティの組み合わせが選択される。D2、D5、D8の各々が、3つのローカルパリティのいずれかの計算範囲に含まれるような、ローカルパリティの組み合わせは、例えば以下のように決定される。
D2、D5、D8の各々が、3つのローカルパリティのいずれかの計算範囲に含まれるためには、D2、D5、D8のそれぞれを計算範囲として含むローカルパリティの集合から、1つずつ、ローカルパリティが重複しないように選択されればよい。すなわち、図4において、D2を計算範囲として含むローカルパリティの集合は、{L1、L2、L5、L6}である。D5を計算範囲として含むローカルパリティの集合は、{L1、L2、L3、L4}である。D8を計算範囲として含むローカルパリティの集合は、{L4、L5}である。このとき、D2、D5、D8のそれぞれを計算範囲として含むローカルパリティの集合から、1つずつ、選択したローカルパリティが重複しないように選択すればよい。したがって、ローカルパリティの組み合わせは、(L1、L2、L4)、(L1、L2、L5)、(L1、L3、L4)、(L1、L3、L5)、(L1、L4、L5)、(L2、L3、L4)、(L2、L3、L5)、(L2、L4、L5)、(L5、L3、L4)、(L6、L1、L4)、(L6、L1、L5)、(L6、L2、L4)、(L6、L2、L5)、(L6、L3、L4)、(L6、L3、L5)、(L6、L4、L5)のうちのいずれかとなる。これらの組み合わせののうちの何れかを、復元部32は復旧に使用するローカルパリティの組み合わせとして選択する。
選択条件を満たすローカルパリティの組み合わせのうちの何れかを選択すると、復元部32は、選択したローカルパリティの組み合わせを用いて、パリティ計算式を使用して連立一次方程式を解くことにより、故障したデータディスクのデータを復元する。
具体的には先ず、復旧に使用するローカルパリティの組み合わせを選択すると、復元部32は、選択した組み合わせのローカルパリティのデータと、選択した組み合わせのローカルパリティの計算範囲に含まれるデータディスクのデータとを取得する。ただし、故障したデータディスクは取得の対象外とする。例えば、図4の例において、パリティの組み合わせとして、(L1、L2、L5)が選択された場合、復元部32は、先ずL1、L2、L5のデータを取得する。それとともに復元部32は、L1、L2、L5の計算範囲に含まれるデータディスクであって故障していないデータディスクである、D1、D3、D4、D6、D9、D10のデータを取得する。尚、組み合わせを選択した復元部32は、例えば取得対象のデータが格納されているディスクを管理する管理サーバ22に取得対象データの取得要求を送信し、取得要求に対する応答を受信することにより、取得対象データを取得してもよい。また、復元部32は、記憶部34に記憶された対応情報を参照することにより、ローカルパリティの計算範囲に含まれるデータディスクを特定することができる。
復元部32は、取得したローカルパリティのデータと、そのローカルパリティの計算範囲に含まれるデータディスクのデータとを用いて、パリティ計算式を使用して3元連立一次方程式を解くことによって、D2、D5、D8のデータを復元する。
そして復元部32は、復元したD2、D5、D8のデータを、各々に対応する新しく割り当てられたスタンバイディスクに格納し、復旧を完了する。
尚、図4の例のようにp=6、すなわちローカルパリティが6個存在する場合は、6個のローカルパリティのパリティ計算式を使用して、最高で、6元一次方程式を解くことによって6個のデータディスクを復旧することができる。
多元一次方程式は、例えば、掃き出し法などの種々の方法を用いて解を求めることができる。
次に、故障したディスクに、データディスクとローカルパリティとが含まれる場合の復旧について説明する。ここでは、故障したローカルパリティは、計算範囲に故障したデータディスクを含むものとする。尚、計算範囲に故障したデータディスクを含まないローカルパリティが故障した場合は、復元部32は、正常なデータディスクのデータを用いてローカルパリティの再作成を行う。
故障したディスクに、データディスクとローカルパリティとが含まれる場合には、データディスクのデータの復元には故障したローカルパリティのデータを使用できないため、復元部32は正常なローカルパリティを使用してデータディスクのデータを復元する。その後、復旧したデータディスクのデータを用いて、復元部32は故障したローカルパリティのデータを復旧(再作成)する。例えば図4の例において、L1、D5、D8が故障した場合、先ず、D5及びD8の復旧を正常なローカルパリティを用いて行う。その後、復旧したD5及びD1〜D4のデータを用いて、L1のパリティ情報が復旧(再作成)される。
尚、故障したディスクに、データディスクとローカルパリティとが含まれる場合の復旧方法は、復旧に使用するローカルパリティとして故障したローカルパリティを除外すること以外は、データディスクが故障した場合の復旧と同じである。
具体的には先ず、復元部32は、復旧に使用するローカルパリティの組み合わせの選択において、上述した3つの選択条件に加えて、選択されるローカルパリティは故障していないことを条件とする、ローカルパリティの組み合わせを選択する。
図4の例において、D5及びD8が故障した場合に、故障したデータディスク数は2つであるので、復旧に使用するデータディスクとしては2つのローカルパリティが選択される。選択されるローカルパリティは、故障していないローカルパリティであって、計算範囲として少なくとも一つの故障したデータディスクを含むものであるので、L2〜L5の何れかから選択される。そしてさらに、選択された2つのローカルパリティの何れかの計算範囲に、故障した各データディスクが含まれるという条件を満たすローカルパリティの組み合わせが選択される。このような組み合わせは、(L2、L4)、(L2、L5)、(L3、L4)、(L3、L5)、(L4、L5)のいずれかである。これらの組み合わせのうちの何れかを、復元部32は、復旧に使用するローカルパリティの組み合わせとして選択する。
そして復元部32は、選択した組み合わせのローカルパリティのデータと、選択された組み合わせのローカルパリティの計算範囲に含まれるデータディスクであって故障していないデータディスクのデータと、を取得する。取得したデータを用いて、復元部32は、パリティ計算式を使用して多元連立一次方程式を解くことによって、故障したデータディスクのデータを復元する。
故障したデータディスクの復旧が完了したら、復元部32は、復旧したデータディスクのデータ、及び計算範囲に含まれるそのほかの正常なデータディスクのデータを用いてローカルパリティの再作成を行う。
尚、ディスクが故障した場合、他の装置から通知を受信するとしたが、故障ディスクを管理する管理サーバ22の制御部31がディスクの故障を検知してもよい。
次に、復旧オーバヘッドについて説明する。実施形態1では、復旧オーバヘッドは、故障したディスクを管理するノードが復旧時に受信するデータのデータ転送量と定義する。尚、説明のために、1つのディスクに格納されたデータのデータ転送量は1とカウントする。
一重障害時は、復旧に使用するローカルパリティの計算範囲に含まれるデータディスクの数がそのまま復旧オーバヘッドとなる。尚、以下の説明では、ローカルパリティの計算範囲に含まれるデータディスクの数を、ローカルパリティの計算範囲のサイズと記す場合がある。例えば図4の例の場合、一重障害時の復旧オーバヘッドは最大で6となる。ここで、L4の一重障害時の復旧オーバヘッドについて説明する。L4の計算範囲は、D5〜D10の6個である。よって、D5〜D10のうちの何れかのデータディスクが故障した場合にL4を用いて復旧する場合、D5〜D10のうちの故障していない5個のデータディスクのデータとL4のデータの計6個のディスクのデータが転送されることとなる。従って、この場合復旧オーバヘッドは6となる。
多重障害時は、選択した組み合わせのローカルパリティのデータと、選択された組み合わせのローカルパリティの計算範囲に含まれるデータディスクであって故障していないデータディスクのデータと、の合計が復旧オーバヘッドとなる。例えば、二重障害時、図4において、D2とD5が故障して、L1とL6のデータを用いて復旧する場合は、D2、D5を管理する各管理サーバにそれぞれ、D1,D3,D4,D9、D10,L1,L6の7個のディスクのデータが転送される。従って、この場合の復旧オーバヘッドは7となる。図4の構成の場合は、データディスクの二重障害時の復旧オーバヘッドは6または7のいずれかとなる(平均で6.36)。
次に、初期パリティ生成時のオーバヘッド評価について説明する。実施形態1では、初期パリティ生成時のオーバヘッドは、ローカルパリティに格納されるパリティ情報を生成する際に、そのローカルパリティの管理サーバ22が受信するデータのデータ転送量と定義する。
初期パリティ生成時には、各ローカルパリティの管理サーバ22のパリティ生成部33は、ローカルパリティの計算範囲に含まれる全てのデータディスクのデータを取得して、パリティを生成する。従って、初期パリティ生成時のオーバヘッドは、ローカルパリティの計算範囲のデータディスクに格納されたデータ量となる。
例えば図4の例では、初期パリティ生成時は、D1〜D5のデータがL1の管理サーバ22へ、D2〜D6のデータがL2の管理サーバ22へ、という形で並列に多対多のデータ転送が行われる。尚、データディスクからのデータの読み込みは各管理サーバ22で1回のみ行われる(1回読み込んだデータをメモリ上にキャッシュして、複数ノードへ転送する)。
図4の例では、計算範囲が最大のローカルパリティはL4の6であるので、初期パリティ生成時には、最大で6個のデータディスクのデータが転送されることとなる。よって、図4のシステムにおける初期化オーバヘッドは6となる。
実施形態1における初期化オーバヘッドは、例えば、すべてのデータディスクを計算範囲に含むグローバルパリティを有するディスクアレイ装置における初期化オーバヘッドと比較すると、少なく抑えることができる。例えば、データディスク数が10のグローバルパリティを有するディスクアレイ装置では、初期化オーバヘッドは10となる。それに対して、例えば図4の例では初期化オーバヘッドは6であり、実施形態1では、初期化オーバヘッドを少なく抑えることができる。
次に、新規データディスクの追加時のオーバヘッド評価について説明する。実施形態1では、新規データディスクの追加時のオーバヘッドは、ディスクアレイに新規にデータディスクを追加する際に、パリティ情報の再計算が行われるローカルパリティの数とする。
新規データディスク追加時には、計算範囲が新規データディスクを含むように変更されるローカルパリティでは、パリティ情報の再計算が行われる。
例えば図4において、D5とD6の間に新規ディスクD’5を追加する場合を考える。この場合、L1、L2、L3、L4の計算範囲にD’5が加えられることとなる。これにより、L1〜L4の計算範囲のサイズは1増加する。計算範囲が変更されたL1〜L4を管理する管理サーバ22のパリティ生成部33は、変更後の計算範囲に含まれるすべてのデータディスクのデータを取得し、取得したデータを用いて、パリティ情報を算出する。そしてパリティ生成部33は、算出したパリティ情報を、対応するローカルパリティに格納する。
一方で、L5、L6は計算範囲が変わらないため、パリティ情報の再計算は行われない。よって、図4において、新規ディスクD’5を追加した場合は、L1〜L4の4つのパリティ情報の再計算が行われるので、新規データディスクの追加時のオーバヘッドは4となる。このように、実施形態1では、新規データディスクを追加する際に、計算範囲が変わらないローカルパリティが存在することから、新規データディスク追加時のオーバヘッドを少なく抑えることができる。
図5は、実施形態1に係るディスク故障発生時の処理を図解したフローチャートである。
図5において、先ず復元部32は、故障したディスクの中にローカルパリティが含まれるか否かを判定する(S101)。故障したディスクの中にローカルパリティが含まれる場合(S101でYes)、復元部32は、故障したローカルパリティを、復元に使用するローカルパリティの集合から除外する(S102)。そして、処理はS103に遷移する。
S101において、故障したディスクの中にローカルパリティが含まれない場合(S101でNo)、復元部32は、故障したデータディスクの数と同じ数のローカルパリティの組み合わせのうち、一つを選択する(S103)。ここで、復元部32が選択する組み合わせは、S103において未だ選択されたことのないローカルパリティの組合せとする。
次に、復元部32は、S103において選択した組み合わせが存在したか否かを判定する(S104)。組み合わせが存在しないと復元部32により判定された場合(S104でYes)、故障したデータディスクの復元ができないので、処理は異常終了する。
一方S104において、組み合わせが存在すると判定した場合(S104でNo)、復元部32は計算範囲に故障したデータディスクを全く含まないローカルパリティがS103で選択した組み合わせに存在するか否かを判定する(S105)。計算範囲に故障したデータディスクを全く含まないローカルパリティが存在する場合(S105でYes)、処理はS103に遷移する。
一方S105において、計算範囲に故障したデータディスクを全く含まないローカルパリティが存在しない場合(S105でNo)、復元部32は、故障したデータディスクが、選択した組み合わせのどのローカルパリティの計算範囲にも含まれないか否かを判定する(S106)。故障したデータディスクのいずれかが、選択した組み合わせのどのローカルパリティの計算範囲にも含まれないと判定された場合(S106でYes)、処理はS103に遷移し、新たなローカルパリティの組み合わせが選択される。
一方S106において、故障したすべてのデータディスクが、選択した組み合わせの何れかローカルパリティの計算範囲に含まれると判定した場合(S106でNo)、復元部32は、連立一次方程式を解くことにより、データディスクを復旧する(S107)。具体的には、復元部32はS103で選択した組み合わせのローカルパリティのデータと、選択した組み合わせのローカルパリティの計算範囲に含まれるデータディスクのデータとを取得する。ただし、故障したデータディスクは取得の対象外とする。そして復元部32は、取得したローカルパリティのデータと、そのローカルパリティの計算範囲に含まれるデータディスクのデータとを用いて、パリティ計算式を使用して連立一次方程式を解くことによって故障したデータディスクのデータを復元する。
そして、処理は正常終了する。
次に、管理サーバ22の構成について説明する。図6は、管理サーバ22のハードウェア構成の一例を示す。
管理サーバ22は、CPU(Central Processing Unit)401、メモリ402、記憶装置403、読取装置404、及び通信インターフェース405を含む。CPU401、メモリ402、記憶装置403、読取装置404、及び通信インターフェース405はバスを介して接続される。
CPU401は、メモリ402を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、制御部31、復元部32、及びパリティ生成部33の一部または全部の機能を提供する。
メモリ402は、例えば半導体メモリであり、RAM(Random Access Memory)領域およびROM(Read Only Memory)領域を含んで構成される。記憶装置403は、例えばハードディスクである。なお、記憶装置403は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置403は、外部記録装置であってもよい。記憶装置403は記憶部34の一部または全部の機能を提供する。
読取装置404は、CPU401の指示に従って着脱可能記憶媒体450にアクセスする。着脱可能記憶媒体450は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。尚、読取装置404は管理サーバ22に含まれなくてもよい。
通信インターフェース405は、クライアントサーバ21及び他の管理サーバ22との間でデータを送受信する。
実施形態のプログラムは、例えば、下記の形態で管理サーバ22に提供される。
(1)記憶装置403に予めインストールされている。
(2)着脱可能記憶媒体450により提供される。
(3)プログラムサーバ(図示せず)から通信インターフェース405を介して提供される。
さらに、実施形態の管理サーバ22の一部は、ハードウェアで実現してもよい。或いは、実施形態の管理サーバ22は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
尚、クライアントサーバ21と管理サーバ22は、同一筐体に含まれてもよく、クライアントサーバ21と管理サーバ22の機能は同じCPUにより提供されてもよい。また、管理サーバ22は、ストレージ装置に含まれるコントローラモジュールであってもよい。
また、本実施形態では、データディスクとパリティディスクを区別して記載したが、ストライプ毎にパリティ情報を格納する物理ディスクを変更してもよい。すなわち、1つのストライプのデータと、他のストライプのパリティ情報が同じ物理ディスクに格納されてもよい。
実施形態1では、グローバルパリティを使用せずローカルパリティを使用することによって、初期パリティ生成時やディスクの二重障害時においてもネットワークデータ転送量を削減できる。従って、データの復旧時間を短縮できる。また、同様の理由により、整合性チェック時のデータ転送量を削減できる。
また、実施形態1のストレージシステムは、パリティの計算範囲を部分的に重ね合わせることにより、ローカルパリティのみでありながら、一定個数までのディスクが故障した場合の復旧に対応している。また、新規ディスク追加時は、一部のパリティのみを再計算すればよいため、データ転送量を削減できる。
(実施形態2)
実施形態2では、各ローカルパリティの計算範囲に含まれるデータディスクの数(計算範囲のサイズ)が均一となるように構成される。これにより、故障したデータディスクのデータを復旧する際に、どのローカルパリティから復旧する場合でも、復旧オーバヘッドが均一となる。よって、ワーストケースで見積もったRTO(Recovery Time Objective)を最小にすることができる。RTOは、ディスクが故障してから、復旧が完了するまでにかかる時間の目標値である。
実施形態2に係る情報処理システムの構成は、各ローカルパリティの計算範囲のサイズが均一となるように構成されること以外は、実施形態1と同様である。
図7は、実施形態2に係るローカルパリティの計算範囲の一例を示す図である。図7においては、10個のデータディスクと6個のローカルパリティが含まれるディスクアレイの例である。そして各データディスクはD1〜D10、各ローカルパリティはL1〜L6で示されている。
ローカルパリティL1は、D1〜D5の5つのデータディスクを計算範囲として含む。また、ローカルパリティL2、L3、L4、L5、L6はそれぞれ、D2〜D6、D3〜D7、D6〜D10、D8〜D2、D9〜D3のデータディスクを計算範囲として含む。ここで、L1〜L6はいずれも、実施形態1と同様に、他のローカルパリティと計算範囲が同じではなく、また、少なくとも一つの他のローカルパリティと、少なくとも一つの共通するデータディスクを計算範囲として含んでいる。
実施形態1とは異なり図7の例では、L1〜L6のいずれも、計算範囲に含まれるデータディスクの数は5個となっており、均一になっている。
ディスクが故障した場合の復旧方法は、実施形態1と同様である。ただし、復旧に使用するローカルパリティの組み合わせの選択においては、選択条件を満たす複数の組み合わせのうちどれを選択したとしても、復旧オーバヘッドは等しくなる。
一重障害時は、復旧に使用するローカルパリティの計算範囲のサイズがそのまま復旧オーバヘッドとなる。よって、図7の例では、ローカルパリティの計算範囲のサイズは5であるので、一重障害時の復旧オーバヘッドは5となる。
多重障害時は、選択した組み合わせのローカルパリティのデータと、選択された組み合わせのローカルパリティの計算範囲に含まれるデータディスクであって故障していないデータディスクのデータと、の合計が復旧オーバヘッドとなる。よって、二重障害時、図7において、D2とD5が故障して、L1とL6のデータを用いて復旧する場合は、D2、D5を管理する各管理サーバにそれぞれ、D1,D3,D4,D9、D10,L1,L6の7個のディスクのデータが転送される。
実施形態2のシステムは、実施形態1と比較すると、ワーストケースで見積もった場合のRTOを最小にすることができる。
(実施形態3)
実施形態3では、ローカルパリティは、計算範囲に含まれるすべてのデータディスクが互いに異なるように、複数のグループに分類される。また、データディスクのいずれも、各グループに含まれるローカルパリティの計算範囲のいずれかに含まれるように、ローカルパリティは分類される。
実施形態3に係る情報処理システムの構成は、各ローカルパリティがグループに分類されるように構成されること以外は、実施形態2と同様である。
実施形態3では、全てのデータディスクが、グループ数と同じ数のローカルパリティの計算範囲に含まれることになり、グループ数と同じ数のディスク障害まで復旧可能となる。すなわち、最小ハミング距離が大きくなり、信頼性の評価が向上する。
図8は、実施形態3に係るローカルパリティの計算範囲の一例を示す図である。図8においては、10個のデータディスクと6個のローカルパリティが含まれるディスクアレイの例である。そして各データディスクはD1〜D10、各ローカルパリティはL1〜L6で示されている。
ローカルパリティL1は、D1〜D5の5つのデータディスクを計算範囲として含む。また、ローカルパリティL2、L3、L4、L5、L6はそれぞれ、D2〜D6、D3〜D7、D6〜D10、D7〜D1(D7、D8、D9、D10、D1)、D8〜D2(D8、D9、D10、D1、D2)のデータディスクを計算範囲として含む。ここで、L1〜L6はいずれも、実施形態1と同様に、他のローカルパリティと計算範囲が同じではなく、また、少なくとも一つの他のローカルパリティと、少なくとも一つの共通するデータディスクを計算範囲として含んでいる。
実施形態3では、各ローカルパリティは複数のグループに分類される。各ローカルパリティのグループの分類は、同一のグループに含まれる各ローカルパリティの計算範囲に含まれるすべてのデータディスクが互いに異なるように行われる。言い換えると各ローカルパリティは、グループ内の任意のローカルパリティの対が、計算範囲に同じデータディスクを含まないように、複数のグループに分類される。また、データディスクのいずれも、各グループに含まれるローカルパリティの計算範囲のいずれかに含まれるように、ローカルパリティは分類される。
図8の例では、ローカルパリティは3つのグループに分類され、L1とL4、L2とL5、L3とL6が同じグループに含まれるように分類される。
L1の計算範囲に含まれるデータディスクは、D1〜D5であり、L4の計算範囲に含まれるデータディスクはD6〜D10である。よって、L1とL4のグループは、各ローカルパリティの計算範囲に含まれる全てのデータディスクが互いに異なっている。言い換えると、L1とL4の計算範囲に含まれるデータディスクはL1とL4で重複していない。さらに、ディスクアレイを構成する全てのデータディスクD1〜D10のいずれもが、L1とL4の計算範囲の何れかに含まれている。
実施形態2において説明した図7の例では、計算範囲にD2とD3を含むローカルパリティの数は4である一方で、計算範囲にD7とD8を含むローカルパリティの数は2である。これは、データディスクによって、データ消失率が異なることを意味する。例えば、一重障害の場合、D2のデータディスクは、L1、L2、L5、L6の4つ全てが故障しなければ復旧可能であるが、D7のデータディスクは、L3とL4が故障すると復旧不可能となる。図7の例では、最小ハミング距離は3となり、信頼性の評価は低い。
それに比較して、実施形態3の図8の例では、全てのデータディスクがグループ数と同じ数のローカルパリティの計算範囲に含まれることになる。すなわち、D1〜D10のいずれも、データ消失率は等しくなる。例えば、一重障害の場合、D1〜D10の各データディスクは、各々を計算範囲に含む3つのローカルパリティが故障しなければ復旧可能であり、最小ハミング距離は4となる。よって、図7の例と比較すると、信頼性の評価が向上する。
(実施形態4)
実施形態4では、ディスクアレイに含まれる全てのローカルパリティの計算範囲が等間隔でずれるように構成される。すなわち、全てのローカルパリティの計算範囲の最初のデータディスクが、(データディスク数)/(ローカルパリティ数)だけずらすように構成される。尚、kがpで割り切れる場合は、パリティの計算範囲の開始位置をデータディスク上で等間隔に配置されるが、そうでない場合は、k/pの値の前後の整数を使用し、ほぼ等間隔を満たすように配置される。例えば、k=10、p=6の場合は、kがpで割り切れないため(k/p=1.67)、開始位置の間隔を1または2とする。
実施形態4に係る情報処理システムの構成は、ディスクアレイに含まれる全てのローカルパリティの計算範囲が等間隔でずれるように構成されること以外は、実施形態3と同様である。
図9は、実施形態4に係るローカルパリティの計算範囲の一例を示す図である。図9においては、10個のデータディスクと6個のローカルパリティが含まれるディスクアレイの例である。そして各データディスクはD1〜D10、各ローカルパリティはL1〜L6で示されている。尚、各データディスクは、ストライプのデータが格納される順に昇順でD1〜D10の識別番号が振られているものとする。
ローカルパリティL1は、D1〜D5の5つのデータディスクを計算範囲として含む。また、ローカルパリティL2、L3、L4、L5、L6はそれぞれ、D3〜D7、D5〜D9、D6〜D10、D8〜D2(D8、D9、D10、D1、D2)、D10〜D4(D10、D1、D2、D3、D4)のデータディスクを計算範囲として含む。ここで、L1〜L6はいずれも、実施形態1と同様に、他のローカルパリティと計算範囲が同じではなく、また、少なくとも一つの他のローカルパリティと、少なくとも一つの共通するデータディスクを計算範囲として含んでいる。
図9の例では、(データディスク数)/(ローカルパリティ数)=10/6=1.67であるので、各ローカルパリティの計算範囲の開始位置が、1または2だけずれている。これにより、複数のデータディスクの復旧時に計算範囲の開始位置が互いに近いローカルパリティを選択することが容易になる。その結果、ローカルパリティの計算範囲に含まれるデータディスクの数が小さくなり、復旧オーバヘッドを削減することができる。
ディスクが故障した場合の復旧方法は、実施形態1と同様である。ただし、例えば図9の例において、D3とD8が故障した場合、データディスクの復旧に使用するローカルパリティの組み合わせとして、L2とL3を選択することができる。L2とL3を用いてD3とD8のデータを復元する場合、復旧のために転送されるデータは、D4、D5、D6、D7、L2、L3の6個のディスクのデータとなる。よってこの場合の復旧オーバヘッドは6となる。
一方、例えば実施形態3の図8の例の場合、D3とD8が故障した場合、データディスクの復旧に使用するローカルパリティの組み合わせとして、L3とL4を選択することができる。L3とL4を用いてD3とD8のデータを復元する場合、復旧のために転送されるデータは、D4、D5、D6、D7、D9、D10、L2、L3の8個のディスクのデータとなる。よってこの場合の復旧オーバヘッドは8となる。よって、実施形態4は、実施形態3と比較した場合、復旧オーバヘッドを削減することができる。
このように実施形態4は、各ローカルパリティの計算範囲の開始位置が等間隔でずれるように構成されることにより、復旧オーバヘッドを削減することができる。
(実施形態5)
故障したディスク数がローカルパリティの数より少ない場合、復旧に使用するローカルパリティの組み合わせには任意性が生じる。実施形態5では、復旧に使用するローカルパリティの組み合わせの選択において、組み合わせに含まれる全てのローカルパリティの計算範囲に含まれるデータディスクの集合としての和が最小になるように、組み合わせが選択される。
例えば、図9の例において、D1とD2の2個のデータディスクが故障した場合を考える。この場合、選択条件を満たすローカルパリティの組み合わせは、(L1、L5)、(L1、L6)、(L5、L6)の3通りである。この3通りの組み合わせの何れの組み合わせを使用しても、D1及びD2の2個のデータディスクを復旧することは可能である。
実施形態5では、選択条件を満たすローカルパリティの組み合わせのうち、組み合わせに含まれる全てのローカルパリティの計算範囲に含まれるデータディスクの集合としての和が最小になるように、復旧に使用するローカルパリティの組み合わせが選択される。図9の例において、(L1、L5)の組み合わせの場合、L1とL5の計算範囲に含まれるデータディスクの集合としての和は、{D1、D2、D3、D4、D5、D8、D9、D10}の8個である。(L1、L6)の組み合わせの場合、L1とL6の計算範囲に含まれるデータディスクの集合としての和は、{D1、D2、D3、D4、D5、D10}の6個である。(L5、L6)の組み合わせの場合、L5とL6の計算範囲に含まれるデータディスクの集合としての和は、{D1、D2、D3、D4、D8、D9、D10}の7個である。よって、組み合わせに含まれるローカルパリティの計算範囲に含まれるデータディスクの集合としての和が最小になる組み合わせは、(L1、L6)となる。よって、復元部32は、復旧に使用するローカルパリティの組み合わせとして、(L1、L6)の組み合わせを選択する。
以下の説明では、組み合わせに含まれる全てのローカルパリティの計算範囲に含まれるデータディスクの集合としての和を、組み合わせの計算範囲の集合としての和と記す場合がある。
次に、実施形態5に係るディスク故障発生時の処理の動作について、図10及び図11を参照して説明する。図10は、実施形態5に係るディスク故障発生時の処理を図解したフローチャートの前半である。図11は、実施形態5に係るディスク故障発生時の処理を図解したフローチャートの後半である。
図10において、先ず復元部32は、故障したディスクの中にローカルパリティが含まれるか否かを判定する(S201)。故障したディスクの中にローカルパリティが含まれる場合(S201でYes)、復元部32は、故障したローカルパリティを、復元に使用するローカルパリティの集合から除外する(S202)。そして、処理はS203に遷移する。
S201において、故障したディスクの中にローカルパリティが含まれない場合(S201でNo)、復元部32は、故障したデータディスクの数と同じ数のローカルパリティの組み合わせのうち、一つを選択する(S203)。ここで、復元部32が選択する組み合わせは、S203において未だ選択されたことのないローカルパリティの組合せとする。
次に、復元部32は、S203において選択した組み合わせが存在したか否かを判定する(S204)。
S204において、組み合わせが存在すると判定した場合(S204でNo)、復元部32は、S203において選択した組み合わせにおいて計算範囲に故障したデータディスクを全く含まないローカルパリティが存在するか否かを判定する(S205)。計算範囲に故障したデータディスクを全く含まないローカルパリティが存在する場合(S205でYes)、処理はS203に遷移する。
一方S205において、計算範囲に故障したデータディスクを全く含まないローカルパリティが存在しない場合(S205でNo)、復元部32は、故障したデータディスクが、S203で選択した組み合わせのどのローカルパリティの計算範囲にも含まれないか否かを判定する(S206)。故障したすべてのデータディスクが、選択した組み合わせのどのローカルパリティの計算範囲にも含まれないと判定された場合(S206でYes)、処理はS203に遷移し、新たなローカルパリティの組み合わせが選択される。
一方S206において、故障したすべてのデータディスクが、S203で選択した組み合わせのいずれかのローカルパリティの計算範囲に含まれると判定した場合(S206でNo)、復元部32は、組み合わせの候補と、計算範囲の集合としての和の数の比較を行う(S207)。ここで、組み合わせの候補は、S208において設定されるものである。具体的には復元部32は、組み合わせの候補が存在する場合、直近のS203で選択された組み合わせの計算範囲の集合としての和が、組み合わせの候補の計算範囲の集合としての和より大きいか否かを判定する。直近のS203で選択された組み合わせの計算範囲の集合としての和が、組み合わせの候補の計算範囲の集合としての和より大きいと判定された場合(S207でYes)、処理はS203に遷移し、新たなローカルパリティの組み合わせが選択される。
一方S207において、直近のS203で選択された組み合わせの計算範囲の集合としての和が、組み合わせの候補の計算範囲の集合としての和より大きくないと判定された場合(S207でNo)、直近のS203で選択された組み合わせを組み合わせの候補として再設定する(S208)。そして、処理はS203に遷移し、新たなローカルパリティの組み合わせが選択される。
S204において、組み合わせが存在しないと判定した場合(S204でYes)、復元部32は、組み合わせの候補が存在するか否かを判定する(S209)(図11参照)。ここで、組み合わせの候補は、S208で設定される組み合わせである。組み合わせの候補が存在すると判定した場合(S209でYes)、復元部32は、組み合わせの候補を用いて、連立一次方程式を解くことにより、データディスクを復旧する(S210)。具体的には、復元部32は、組み合わせの候補のローカルパリティのデータと、組み合わせの候補のローカルパリティの計算範囲に含まれるデータディスクのデータとを取得する。ただし、故障したデータディスクは取得の対象外とする。そして復元部32は、取得したローカルパリティのデータと、そのローカルパリティの計算範囲に含まれるデータディスクのデータとを用いて、パリティ計算式を使用して連立一次方程式を解くことによって故障したデータディスクのデータを復元する。そして処理は正常終了する。
S209において、組み合わせの候補が存在しないと判定された場合(S209でNo)、故障したデータディスクの復元ができないので、処理は異常終了する。
次に、実施形態1〜5の利点の理解を助けるため、比較例1と比較例2について説明する。
図12は、比較例1のデータ構成の一例を示す。比較例1の分散ストレージにおいては、冗長化する全てのディスクのデータを用いて、パリティ情報が算出される。すなわち、図12において、パリティディスク(グローバルパリティ)G1〜G6は、計算範囲にすべてのデータディスクを含んで構成される。
図13は、比較例2のデータ構成の一例を示す。比較例2の分散ストレージにおいては、一部ローカルパリティを用いて、パリティ情報が算出される。すなわち、図13の例において、パリティディスク(グローバルパリティ)G1〜G4は、計算範囲にすべてのデータディスクを含み、ローカルパリティL1とL2は、計算範囲に互いに排他的なデータディスクを含んで構成される。ここで、比較例2においては、ローカルパリティL1とL2は、計算範囲に、共通するデータディスクを含んでいない。
図14は、本実施形態と比較例との性能比較を示す図である。図14において、比較例1(10,6)のレコードは、図12の構成のように、10個のデータディスクと、6個のパリティディスクを含む比較例1の性能情報を示している。比較例2(10,6,5)のレコードは、図13の構成のように、10個のデータディスクと6個のパリティディスクを含み、ローカルパリティの計算範囲に含まれるデータディスクの数は5個である比較例2の性能情報を示している。実施形態5(10,6,5)のレコードは、10個のデータディスクと6個のパリティディスクを含み、ローカルパリティの計算範囲に含まれるデータディスクの数は5個である実施形態5の性能情報を示している。尚、実施形態5(10,6,5)のパリティディスクの計算範囲は、実施形態4のように計算範囲の開始位置が均等に分散されているものとする。レプリケーション(10 x 3)のレコードは、データディスクが3重にレプリケーション(複製)された構成の情報処理システムの性能情報を示している。
容量効率は、ディスクアレイで使用されるすべてのディスク容量から冗長データを引いた、実際に利用可能なディスク容量を示す。容量効率は、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)、レプリケーション(10 x 3)はそれぞれ、0.625、0.625、0.625、0.33となる。
データディスク間の最小ハミング距離は、データディスクのみが故障した場合を対象とした最小ハミング距離の値を示す。データディスク間の最小ハミング距離は、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)はそれぞれ、7、7、7となる。
全ディスク間の最小ハミング距離は、パリティディスク(ローカルパリティ)を含めたすべてのディスクが故障した場合を対象とした最小ハミング距離の値を示す。全ディスク間の最小ハミング距離は、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)、レプリケーション(10 x 3)はそれぞれ、7、6、4、3となる。
書込み処理のオーバヘッドは、データディスクの1つのブロックに書き込み処理が発生した場合の、入出力数(読み込み及び書込み処理の数)の値を示す。比較例1(10,6)の場合、更新したいブロックのデータと、全てのパリティディスクG1〜G6のデータの読み込み及び書込みが発生するため、書込み処理のオーバヘッドは14となる。比較例2(10,6,5)の場合、更新したいブロックのデータとG1〜G4の5つと、L1またはL2のいずれかのデータの読み込み及び書込みが発生するため、書込み処理のオーバヘッドは12となる。実施形態5(10,6,5)の場合、更新したいブロックのデータとローカルパリティL1〜L6のうちのいずれか3つのデータの読み込み及び書込みが発生するため、書込み処理のオーバヘッドは8となる。レプリケーション(10 x 3)の場合、全てのデータディスクに書き込みが発生するため、書込み処理のオーバヘッドは3となる。よって、実施形態5では、比較例1、比較例2と比較すると、書込みオーバヘッドを削減することができる。
一重障害時のリカバリオーバヘッドは、一重障害が発生した際の復旧オーバヘッドの値を示す。ここで復旧オーバヘッドは、故障したディスクを管理する管理サーバが復旧時に受信するデータ転送量である。比較例1(10,6)の場合、何れかのパリティディスクと、故障していない9つのデータディスクの読み込みが発生するため、一重障害時のリカバリオーバヘッドは10となる。比較例2(10,6,5)の場合、何れかのローカルパリティと、ローカルパリティの計算範囲に含まれる故障していない4つのデータディスクの読み込みが発生するため、一重障害時のリカバリオーバヘッドは5となる。実施形態5(10,6,5)の場合、故障したデータディスクを計算範囲に含む何れかのローカルパリティと、ローカルパリティに含まれる故障していない4つのデータディスクの読み込みが発生するため、一重障害時のリカバリオーバヘッドは5になる。レプリケーション(10 x 3)の場合、正常なディスクの読み込みが発生するため、一重障害時のリカバリオーバヘッドは1になる。よって、実施形態5では、比較例1と比較すると、一重障害時のリカバリオーバヘッドを削減することができる。
同様に、二重障害時のリカバリオーバヘッドの値は、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)、レプリケーション(10 x 3)はそれぞれ、11、10または11、7または8(平均で7.36)、2となる。よって、実施形態5では、比較例1、比較例2と比較すると、二重障害時のリカバリオーバヘッドを削減することができる。
同様に、三重障害時のリカバリオーバヘッドは、二重障害時のリカバリオーバヘッドの値は、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)はそれぞれ、12、12、9となる。尚、三重障害時レプリケーション(10 x 3)においては、データの復旧は不可能である。よって、実施形態5では、比較例1、比較例2と比較すると、三重障害時のリカバリオーバヘッドを削減することができる。
scrub処理のオーバヘッドは、データ整合性(完全性)をチェックする処理において発生するデータ転送量である。scrub処理のオーバヘッドは、比較例1(10,6)、比較例2(10,6,5)、実施形態5(10,6,5)、レプリケーション(10 x 3)はそれぞれ、15、15、15、20となる。
図14に示すように、実施形態5は、全ての項目で最悪値がなく、バランスがとれている。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 ストレージシステム
2 データディスク
3 パリティディスク
4 復元部
21 クライアントサーバ
22 管理サーバ
23 ディスク
31 制御部
32 復元部
33 パリティ生成部
34 記憶部

Claims (7)

  1. 情報を格納する複数のデータディスクと、
    前記複数のデータディスクのうちの一部を含むディスクグループに対応し、該対応するディスクグループに含まれる前記データディスクのデータに基づいて生成されたパリティ情報を格納するパリティディスクを備え、
    前記データディスクのいずれかは、複数の前記ディスクグループに含まれ、
    前記複数のパリティディスクは、各パリティグループ内の任意のパリティディスクの対が、前記対応するディスクグループに同じデータディスクを含まないように、複数の該パリティグループに分類され、
    前記複数のデータディスクのいずれも、前記パリティグループのそれぞれに含まれる前記パリティディスクに対応する前記ディスクグループのいずれかに含まれる
    ことを特徴とするストレージシステム。
  2. 前記ディスクグループ間において、該ディスクグループに含まれる前記データディスクの数が等しい
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記データディスクのそれぞれはストライプのデータの格納順に昇順で識別番号が対応付けられており、前記パリティディスクのそれぞれに対応する前記ディスクグループに含まれる前記データディスクの識別番号の最小値が、データディスク数をパリティディスク数で割った数だけずれている
    ことを特徴とする請求項1または2に記載のストレージシステム。
  4. 前記ストレージシステムは、さらに、
    1以上の前記データディスクが故障した場合、故障した前記データディスクを含む前記ディスクグループに対応する前記パリティディスクを用いて、前記故障したデータディスクのデータを復元する復元部
    を備えることを特徴とする請求項1〜のうちいずれか1項に記載のストレージシステム。
  5. 前記復元部は、すべての前記故障したデータディスクが、選択する何れかのパリティディスクに対応する前記ディスクグループに含まれ、且つ、選択する全てのパリティディスクに対応する前記ディスクグループに1以上の前記故障したデータディスクを含むように、前記故障したデータディスクの数と等しい数のパリティディスクを選択し、選択した前記パリティディスクに基づいて、前記故障したデータディスクのデータを復元する
    ことを特徴とする請求項項に記載のストレージシステム。
  6. 前記復元部は、前記すべての故障したデータディスクが、選択する何れかのパリティディスクの前記ディスクグループに含まれ、且つ、選択する全てのパリティディスクに対応する前記ディスクグループに1以上の前記故障したデータディスクを含み、さらに、選択するパリティディスクに対応する前記ディスクグループに含まれる前記データディスクの集合としての和が最小となるように、前記故障したデータディスクの数と等しい数のパリティディスクを選択し、選択した前記パリティディスクに基づいて、前記故障したデータディスクのデータを復元する
    ことを特徴とする請求項に記載のストレージシステム。
  7. コンピュータに、
    情報を格納する複数のデータディスクと、前記複数のデータディスクのうちの一部を含むディスクグループに対応し、該対応するディスクグループに含まれるデータディスクのデータに基づいて生成されたパリティ情報を格納するパリティディスクとを備え、前記データディスクのいずれかは、複数の前記ディスクグループに含まれるストレージシステムにおいて、1以上の前記データディスクが故障した場合、故障した前記データディスクを含むディスクグループに対応するパリティディスクを用いて、前記故障したデータディスクのデータを復元する
    処理を実行させ
    前記複数のパリティディスクは、各パリティグループ内の任意のパリティディスクの対が、前記対応するディスクグループに同じデータディスクを含まないように、複数の該パリティグループに分類され、
    前記複数のデータディスクのいずれも、前記パリティグループのそれぞれに含まれる前記パリティディスクに対応する前記ディスクグループのいずれかに含まれることを特徴とするストレージプログラム。

JP2013218706A 2013-10-21 2013-10-21 ストレージシステム、及びストレージプログラム Active JP6260193B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013218706A JP6260193B2 (ja) 2013-10-21 2013-10-21 ストレージシステム、及びストレージプログラム
US14/488,419 US9400620B2 (en) 2013-10-21 2014-09-17 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013218706A JP6260193B2 (ja) 2013-10-21 2013-10-21 ストレージシステム、及びストレージプログラム

Publications (2)

Publication Number Publication Date
JP2015082150A JP2015082150A (ja) 2015-04-27
JP6260193B2 true JP6260193B2 (ja) 2018-01-17

Family

ID=52827274

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013218706A Active JP6260193B2 (ja) 2013-10-21 2013-10-21 ストレージシステム、及びストレージプログラム

Country Status (2)

Country Link
US (1) US9400620B2 (ja)
JP (1) JP6260193B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10055278B2 (en) * 2015-10-30 2018-08-21 International Business Machines Corporation Autonomic parity exchange in data storage systems
US10108470B2 (en) * 2015-12-28 2018-10-23 Sandisk Technologies Llc Parity storage management
US10372334B2 (en) 2016-02-11 2019-08-06 International Business Machines Corporation Reclaiming free space in a storage system
US10146652B2 (en) * 2016-02-11 2018-12-04 International Business Machines Corporation Resilient distributed storage system
CN109150398B (zh) * 2018-08-06 2020-08-18 华南理工大学 基于udp自适应冗余编码的无线p2p传输方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200187A (ja) 1993-12-30 1995-08-04 Hitachi Ltd ディスクアレイ装置
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7080278B1 (en) * 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
JP3766079B2 (ja) * 2003-07-23 2006-04-12 株式会社エヌ・ティ・ティ・データ ディスクアレイ装置およびプログラム
US7516354B2 (en) * 2004-08-25 2009-04-07 International Business Machines Corporation Storing parity information for data recovery
US7496785B2 (en) 2006-03-21 2009-02-24 International Business Machines Corporation Enclosure-based raid parity assist
US9122699B2 (en) * 2012-12-14 2015-09-01 Datadirect Networks, Inc. Failure resilient distributed replicated data storage system
US9244761B2 (en) * 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones

Also Published As

Publication number Publication date
US9400620B2 (en) 2016-07-26
US20150113319A1 (en) 2015-04-23
JP2015082150A (ja) 2015-04-27

Similar Documents

Publication Publication Date Title
Greenan et al. Flat XOR-based erasure codes in storage systems: Constructions, efficient recovery, and tradeoffs
US10191676B2 (en) Scalable storage protection
CA2532766C (en) Data storage array
US9552258B2 (en) Method and system for storing data in raid memory devices
US7934120B2 (en) Storing data redundantly
US9063910B1 (en) Data recovery after triple disk failure
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system
KR101448192B1 (ko) 메모리 관리 시스템 및 방법
JP6260193B2 (ja) ストレージシステム、及びストレージプログラム
US9063869B2 (en) Method and system for storing and rebuilding data
US11748197B2 (en) Data storage methods and systems
US20120198195A1 (en) Data storage system and method
CN109358980B (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
US7870464B2 (en) System and method for recovery of data for a lost sector in a storage system
US20050283652A1 (en) Fault tolerance system and method for one or two failed disks in a disk array
JP2012518231A (ja) 複数のディスクアレイのi/o動作を実行する方法及びシステム
Fu et al. Device and placement aware framework to optimize single failure recoveries and reads for erasure coded storage system with heterogeneous storage devices
US7788525B2 (en) Fault tolerance system and method for multiple failed disks in a disk array
JP3991947B2 (ja) 2種類のパリティと複数のデータ復旧方式とを有するディスクアレイ装置
JP2005209227A (ja) ディスクアレイ装置
CN104881252A (zh) 一种基于e码的磁盘阵列布局结构
CN116249969A (zh) 具有内置冗余的数据存储系统以及恢复和存储数据的方法
Deng et al. Erasure codes in big data era
KR20220124182A (ko) 저장 시스템에서의 데이터 복구를 위한 인코딩
CN114153393A (zh) 一种数据编码方法、系统、设备以及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171026

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171127

R150 Certificate of patent or registration of utility model

Ref document number: 6260193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150