JP2011128917A - データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置 - Google Patents

データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置 Download PDF

Info

Publication number
JP2011128917A
JP2011128917A JP2009287068A JP2009287068A JP2011128917A JP 2011128917 A JP2011128917 A JP 2011128917A JP 2009287068 A JP2009287068 A JP 2009287068A JP 2009287068 A JP2009287068 A JP 2009287068A JP 2011128917 A JP2011128917 A JP 2011128917A
Authority
JP
Japan
Prior art keywords
data
slice
disk
metadata
node
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.)
Pending
Application number
JP2009287068A
Other languages
English (en)
Inventor
Yasuo Noguchi
泰生 野口
Hideki Sakurai
英樹 櫻井
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 JP2009287068A priority Critical patent/JP2011128917A/ja
Priority to US12/966,713 priority patent/US8433947B2/en
Publication of JP2011128917A publication Critical patent/JP2011128917A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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/2056Error 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 by mirroring
    • G06F11/2069Management of state, configuration or failover
    • 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/2056Error 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 by mirroring
    • G06F11/2082Data synchronisation
    • 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

Abstract

【課題】ディスクノードの障害発生時のデータの喪失を抑制する。
【解決手段】二重化復旧手段1aは、二重化欠損データのコピーをディスクノードに指示し、二重化復旧処理を行う。エラー情報受信手段1cは、二重化復旧処理中に、ストレージ装置2aにおけるライトエラーの発生を示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置2aの識別情報をエラー記憶手段1dに格納する。コピー指示手段1eは、ライトエラーが発生したストレージ装置2a内のアクセスが行われたデータに冗長データが存在しない場合、ディスクノード2に対してアクセスが行われたデータのコピーを指示する。
【選択図】図1

Description

本発明は複数のディスクノードに対する管理対象データの割り当てを行うデータ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置に関する。
データを複数のコンピュータで分散管理するシステムとして、マルチノードストレージシステムがある。マルチノードストレージシステムは、ネットワークに接続した複数のディスクノードと制御ノードとを有している。マルチノードストレージシステムでは、例えば制御ノードの管理の下、仮想的なディスク(論理ディスク)に格納するデータを複数のディスクノードに分散格納される。
マルチノードストレージシステムでは、例えば論理ディスクがセグメント単位に分割されている。この場合、ディスクノードが有するストレージデバイスの記憶領域はスライス単位に分割される。このスライスは、例えば、セグメントと同サイズとされる。制御ノードによって、論理ディスクの各セグメントに対して、ストレージデバイスのスライスが割り当てられる。セグメントへのスライスの割り当て関係は、制御ノードからデータアクセスを行うコンピュータ(アクセスノード)に通知される。そして、アクセスノードから、セグメントを格納先として指定したデータが、そのセグメントに割り当てられたスライスを有するディスクノードに送られる。ディスクノードは、自己の管理するスライスが割り当てられたセグメントのデータを受け取り、ストレージ装置内の該当スライスに格納する。
このようなマルチノードストレージシステムによれば、ネットワークにディスクノードを追加することで管理可能なデータ容量を増やすことができる。そのため、システムの拡張が容易になる。
また、マルチノードストレージシステムでは、セグメントに対して複数のスライスを割り当てることができる。1つのセグメントに2つのスライスを割り当てた場合、一方をプライマリスライス、他方をセカンダリスライスとする。プライマリスライスは、アクセスノードが直接リードまたはライトするスライスである。セカンダリスライスは、プライマリスライスへのライト時にライトデータのミラーリング先となるスライスである。このように、2つのスライスを用いたミラーリングによりデータを二重化することで、データの冗長性が確保される。
なお、ストレージ装置の故障などでディスクノードの異常が検出されると、データの二重化復旧処理が実行される。例えば、1つのノードが異常となった場合、まず異常ノードがシステムから切り離される。次に異常ノードが持っていたデータと同じデータを持つ別のノードをコピー元とし、別のノードをコピー先として、データの冗長性が復元される。
国際公開第2004/104845号 特開2005−301594号公報
しかし、システムから切り離されたディスクノードへは、他のノードからアクセスできなくなる。そのためストレージ装置の故障が発生したディスクノードの切り離しを常に行うと、データの二重化復旧処理中に新たに別のディスクノードに接続されたストレージ装置で故障が発生した場合に、データを失う可能性がある。例えば、最初に故障したストレージ装置と、二重化復旧処理中に新たに故障したストレージ装置とのそれぞれに二重化して格納されていたデータは、新たに故障したストレージ装置が接続されたディスクノードの切り離しにより失われる可能性がある。
本発明はこのような点に鑑みてなされたものであり、ディスクノードの障害発生時のデータの喪失を抑制することができるデータ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置を提供することを目的とする。
上記課題を解決するために、接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示を、コンピュータに実行させるデータ割当制御プログラムが提供される。このデータ割当制御プログラムは、コンピュータに以下の処理を実行させる。
コンピュータは、複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行う。コンピュータは、二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納する。コンピュータは、エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内にコピー対象データの冗長データが存在しない場合、コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置へのコピー対象データのコピーを指示する。
また上記課題を解決するために、上記データ割当制御プログラムに基づいてコンピュータが実行する処理と同様の処理を行うデータ割当制御方法が提供される。さらに上記課題を解決するために、上記データ割当制御プログラムを実行するコンピュータが有する機能と同様の機能を有するデータ割当制御装置が提供される。
二重化復旧処理中にライトエラーとなったストレージ装置内のデータの喪失を抑制することができる。
実施の形態の概要を示す図である。 第2の形態のマルチノードストレージシステム構成の一例を示す図である。 第2の形態に用いる制御ノードのハードウェアの一構成例を示す図である。 論理ディスクのデータ構造の一例を示す図である。 第2の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。 ストレージ装置のデータ構造の一例を示す図である。 メタデータ記憶部のデータ構造例を示す図である。 論理ディスクメタデータ記憶部のデータ構造の一例を示す図である。 エラー記憶部のデータ構造の一例を示す図である。 ディスクノードでのライトエラー検出時に装置間で送受信される情報の例を示す図である。 故障したディスクノードの切り離し処理の一例を示す図である。 リカバリ処理手順の一例を示すシーケンス図である。 リカバリ処理実行中のライトエラー発生時の処理手順の一例を示すシーケンス図である。 ディスクノードでのライトエラー検出および通知処理の手順の一例を示すフローチャートである。 エラーメッセージを受信したときのエラー処理手順の一例を示すフローチャートである。 リカバリ処理手順の一例を示すフローチャートである。 ライトエラーが発生したディスクノードへのアクセス要求時の処理手順を示すシーケンス図である。 アクセス処理手順の一例を示すフローチャートである。 ライトエラーが発生したディスクノードへのミラーライト処理の手順を示すシーケンス図である。 ライトエラーが発生したディスクノードへのスライスコピー処理時の処理手順を示すシーケンス図である。 スライスコピーのデータを受信したディスクノードの処理手順の一例を示すフローチャートである。 メタデータ照会要求時のスライス割当処理手順の一例を示すフローチャートである。 スライスコピーエラー時のスライス割り当て処理手順の一例を示すフローチャートである。 プライマリスライスとセカンダリスライスとが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。 プライマリスライスとセカンダリスライスとが割り当てられているセグメントの割り当て変更処理例を示す図である。 プライマリスライスとリザーブスライスとが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。 プライマリスライスとリザーブスライスとが割り当てられているセグメントの割り当て変更処理例を示す図である。 シングルプライマリスライスが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。 シングルプライマリスライスが割り当てられているセグメントの割り当て変更処理例を示す図である。 スライスコピーを伴うスライス割当処理手順の一例を示すシーケンス図である。 スライスコピーを伴わないスライス割当処理手順の一例を示すシーケンス図である。
以下、本実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、実施の形態の概要を示す図である。複数のディスクノード2〜5には、それぞれストレージ装置2a,3a,4a,5aが接続されている。ディスクノード2〜5は、接続されたストレージ装置2a,3a,4a,5a内のデータを管理する。データ割当制御装置1は、ディスクノード2〜5に対する管理対象データの割り当て指示を行う。例えば、データ割当制御装置1は、ネットワークを介してディスクノード2〜5に接続されている。
データ割当制御装置1は、既に割り当てられているデータの割り当て先を変更する場合、データのコピーをディスクノードに指示する。データ割り当て先の変更は、例えば、ストレージ装置に対するデータ書き込み時のライトエラーに応じて行われる。ライトエラー発生時のデータコピーを適切に指示するため、データ割当制御装置1は、二重化復旧手段1a、管理情報記憶手段1b、エラー情報受信手段1c、エラー記憶手段1d、およびコピー指示手段1eを有している。
二重化復旧手段1aは、複数のストレージ装置2a,3a,4a,5aに格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行う。例えば二重化復旧手段1aは、複数のストレージ装置2a,3a,4a,5a内の二重化欠損データを調査し、二重化欠損データの格納場所を示す管理情報を管理情報記憶手段1bに格納する。二重化復旧手段1aは、管理情報記憶手段1b内の管理情報に示される二重化欠損データを順次選択して、選択した二重化欠損データを管理するディスクノードに対して選択した二重化欠損データのコピーを指示する。選択した二重化欠損データのコピーの指示は、例えば、選択した二重化欠損データが格納されているストレージ装置と異なるストレージ装置であり、かつライトエラーが発生していないストレージ装置が、コピー先として指定される。
なお二重化復旧手段1aは、管理情報記憶手段1b内の管理情報で示されるすべての二重化欠損データのコピーが完了すると、ライトエラーが発生したストレージ装置を切り離し、その結果生じる二重化欠損データのコピーを行うことができる。例えば、二重化復旧手段1aは、管理情報記憶手段1b内の管理情報で示されるすべての二重化欠損データのコピーが完了すると、エラー記憶手段1dを参照してライトエラーが発生したストレージ装置の有無を判断する。ライトエラーが発生したストレージ装置がある場合、二重化復旧手段1aは、ライトエラーが発生したストレージ装置へのアクセスを停止することにより生じる二重化欠損データの管理情報を管理情報記憶手段1bに追加する。そして、二重化復旧手段1aは、管理情報記憶手段1bに追加された二重化復旧処理の管理情報に基づいて、二重化復旧処理を続行する。
管理情報記憶手段1bは、少なくとも二重化欠損データの格納場所を示す管理情報を記憶する。
エラー情報受信手段1cは、二重化復旧処理中にストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段1dに格納する。またエラー情報受信手段1cは、二重化復旧処理中以外の期間に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取る場合もある。この場合、エラー情報受信手段1cは、二重化復旧手段1aに、ライトエラーが発生したストレージ装置へのアクセスを停止することにより生じる二重化欠損データの二重化復旧処理を開始させる。
エラー記憶手段1dは、ライトエラーが発生したストレージ装置の識別情報を記憶する。なお、1台のディスクノードに1台のストレージ装置が接続されている場合、ディスクノードの識別情報を、ストレージ装置の識別情報として用いることもできる。また1台のディスクノードに複数のストレージ装置が接続されている場合、ディスクノードの識別情報と、ディスクノード内でのローカルなストレージ装置の識別情報とを組み合わせて、ストレージ装置の識別情報とすることもできる。
コピー指示手段1eは、エラー記憶手段1dを参照してライトエラーが発生したストレージ装置を判断する。そしてコピー指示手段1eは、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとする。コピー指示手段1eは、ライトエラーが発生していないストレージ装置内にコピー対象データの冗長データが存在しない場合、コピー対象データを管理するディスクノードに対して、コピー対象データのコピーを指示する。コピー指示では、ライトエラーが発生していないストレージ装置がコピー先として指定される。例えば、コピー指示手段1eは、ライトエラーが発生したストレージ装置内のデータに対するアクセスで発生したエラーを示すデータアクセスエラー情報を他の装置から受け取ると、アクセス対象であったデータをコピー対象データとする。なお、コピー指示手段1eは、コピー対象データのコピーが完了すると、コピー先のデータの管理情報を二重化欠損データとして管理情報記憶手段1bに格納する。
なおコピー指示手段1eは、例えば、コピー対象データのコピーが完了すると、コピー先のデータの管理情報を、新たなアクセス先としてデータアクセスエラー情報を送信した他の装置に応答する。図1の例では、アクセスノード6が設けられており、アクセスノード6からデータアクセスエラー情報が送信されている。そのため、コピー指示手段1eは、アクセスノード6に対してコピー先のデータの管理情報を送信する。
各ディスクノード2〜5は、ライトエラー発生時に、データ割当制御装置1へライトエラー情報を送信する。また図1の例では、アクセスノード6が各ディスクノード2〜5で管理されているデータにアクセスする。
ここで、ディスクノード5が故障すると、所定のタイミングで二重化復旧手段1aにより二重化復旧処理が開始される。例えば、二重化復旧手段1aは、ディスクノード2〜4で管理されているストレージ装置2a,3a,4a内のデータのうち、冗長データが存在しない二重化欠損データを調べる。二重化復旧手段1aは、二重化欠損データの管理情報を管理情報記憶手段1bに格納する。そして、二重化復旧手段1aは、二重化欠損データを順次選択し、二重化欠損データを管理しているディスクノードに対し、二重化欠損データが格納されているストレージ装置とは別のストレージ装置への二重化欠損データのコピーを指示する。二重化欠損データのコピー指示を受けたディスクノードでは、二重化欠損データのコピーが行われる。例えば、ディスクノード3が、ストレージ装置3a内の二重化欠損データを、ディスクノード4に接続されたストレージ装置4aにコピーする。また、ディスクノード4が、ストレージ装置4a内の二重化欠損データを、ディスクノード3に接続されたストレージ装置3aにコピーする。
このような二重化復旧処理中に、ディスクノード2に接続されたストレージ装置2aでライトエラーが発生したものとする。例えば、ストレージ装置2a内での定期的なデータの書き込みチェックが行われ、書き込みができず、かつストレージ装置2a内でのリカバリができないような場合に、ストレージ装置2aからディスクノード2にライトエラーが出力される。ディスクノード2は、ストレージ装置2aでのライトエラーの発生を検出すると、データ割当制御装置1にライトエラー情報を送信する。ライトエラー情報には、例えば、システム内でストレージ装置2aを一意に識別する識別情報が含まれる。
ディスクノード2が出力したライトエラー情報は、データ割当制御装置1のエラー情報受信手段1cで受信される。エラー情報受信手段1cは、二重化復旧処理中であることを確認し、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段1dに格納する。その結果、エラー記憶手段1dには、ストレージ装置2aにライトエラーが発生したことを示す情報が記憶される。
ストレージ装置2aでライトエラーが発生すると、二重化復旧手段1aは、その後の二重化欠損データのコピー先からストレージ装置2aを除外する。
また、ストレージ装置2aでライトエラーが発生後、アクセスノード6がストレージ装置2a内のデータへのアクセス要求をディスクノード2に送信すると、ディスクノード2からアクセスノード6にエラーが応答される。するとアクセスノード6は、データ割当制御装置1に、ストレージ装置2aへのアクセスでエラーが発生したことを示すデータアクセスエラー情報を送信する。データアクセスエラー情報には、エラー発生時のアクセス先であったアクセス対象データの識別情報が示される。
データ割当制御装置1では、コピー指示手段1eがデータアクセスエラー情報を受信する。コピー指示手段1eは、データアクセスエラー情報に基づいて、エラー発生時のアクセス対象のデータを認識し、コピー対象データとする。そして、コピー指示手段1eは、コピー対象データの冗長データが、ライトエラーが発生していないストレージ装置内になければ、ディスクノード2に対して、コピー対象データの他のストレージ装置へのコピーを指示する。この際、コピー対象データのコピー先は、ライトエラーが発生していないいずれかのストレージ装置である。図1の例では、ストレージ装置2a内のコピー対象データの、ストレージ装置3aへのコピーが指示されている。ディスクノード2は、コピー対象データのコピー指示に従って、コピー対象データをコピーする。
コピー指示手段1eは、コピー対象データのコピーが完了すると、コピー先のデータの場所を示す管理情報を、新たなアクセス先としてアクセスノード6に通知する。アクセスノード6は、コピー指示手段1eからの管理情報の通知を受けて、コピー先となるストレージ装置3aを管理するディスクノード3へ再アクセスを行うことができる。
このように、二重化復旧処理中にストレージ装置2aでライトエラーが発生しても、ストレージ装置2aのシステムからの切り離しは行われない。すなわち、ストレージ装置2aにライトエラーが発生しても、データを読み出せる可能性があるため、ストレージ装置2aの即時切り離しは行われない。そして、ライトエラーが発生したストレージ装置内のコピー対象データのうち、ライトエラーが発生していないストレージ装置に冗長データが存在しないコピー対象データについては、他のストレージ装置にコピーされる。コピー対象データのコピーが完了すると、そのコピー対象データについてはデータの喪失を免れたこととなる。すなわち、二重化復旧処理中にライトエラーとなったストレージ装置2a内のデータの喪失が抑制されている。
またライトエラーが発生したストレージ装置2aが切り離されていないため、ストレージ装置2a内に二重化欠損データがあれば、二重化復旧処理によって、ストレージ装置2a内の二重化欠損データが他のストレージ装置にコピーされる。ストレージ装置2aから他のストレージ装置への二重化欠損データのコピーが完了すれば、その二重化欠損データについてはデータ喪失を免れたこととなる。すなわち、二重化復旧処理中にライトエラーとなったストレージ装置内のデータの喪失が抑制されている。
さらにストレージ装置5aが故障したことによる二重化復旧処理が完了した場合、すべてのデータに冗長データが存在することとなる。データとそのデータの冗長データとは、異なるストレージ装置に格納される。すると、二重化復旧処理が完了した場合、ライトエラーが発生したストレージ装置2a内のすべてのデータは、同一内容のデータが他のストレージ装置にも格納されていることとなる。従って、ストレージ装置5aが故障したことによる二重化復旧処理が完了後は、ストレージ装置2aを切り離しても、データを喪失せずに済む。そこで、ストレージ装置2aでライトエラー発生時に管理情報記憶手段1b内に登録されていたすべての二重化欠損データのコピー完了後は、ライトエラーが発生したストレージ装置2aが切り離される。すると、ストレージ装置2a内のデータと同一内容の他のストレージ装置3a,4a内のデータが二重化欠損データとなり、コピーされる。その結果、正常に動作するストレージ装置3a,4a内ですべてのデータが二重化され、システムの信頼性を向上させることができる。
〔第2の実施の形態〕
第2の実施の形態は、論理ディスクを用いてデータアクセスを管理するマルチノードシステムの例である。
図2は、第2の形態のマルチノードストレージシステム構成の一例を示す図である。本実施の形態では、ネットワーク10を介して、複数のディスクノード100,200,300,400、制御ノード500、およびアクセスノード600が接続されている。ディスクノード100,200,300,400それぞれには、ストレージ装置110,210,310,410が接続されている。
ストレージ装置110には、複数のハードディスク装置(HDD)111,112,113,114が実装されている。ストレージ装置210には、複数のHDD211,212,213,214が実装されている。ストレージ装置310には、複数のHDD311,312,313,314が実装されている。ストレージ装置410には、複数のHDD411,412,413,414が実装されている。各ストレージ装置110,210,310,410は、内蔵するHDDを用いたRAIDシステムである。本実施の形態では、各ストレージ装置110,210,310,410のRAID5のディスク管理サービスを提供する。
ディスクノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由で端末装置21,22,23に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのディスクノードで管理されている。
制御ノード500は、ディスクノード100,200,300,400を管理する。例えば、制御ノード500は、ディスクノード100,200,300,400から新たなストレージ装置の接続通知を受け取ると、論理ディスクを介して接続されたストレージ装置にアクセスできるようにする。
アクセスノード600には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。また、アクセスノード600には、論理ディスクが定義されている。そして、アクセスノード600は、端末装置21,22,23からの論理ディスクのデータのアクセス要求に応答して、ディスクノード100,200,300,400内の対応するデータへアクセスする。
なお、図2に示すように第2の実施の形態では、各ディスクノード100,200,300,400に、1台ずつのストレージ装置110,210,310,410が接続されている。そのため、ストレージ装置でのライトエラーなどの障害の発生は、そのストレージ装置が接続されたディスクノードの障害とみなすことができる。そして、障害が発生したストレージ装置を切り離す場合には、ディスクノードの切り離しが行われることとなる。
図3は、第2の形態に用いる制御ノードのハードウェアの一構成例を示す図である。制御ノード500は、CPU(Central Processing Unit)501によって装置全体が制御されている。CPU501には、バス508を介してRAM(Random Access Memory)502と複数の周辺機器が接続されている。
RAM502は、制御ノード500の主記憶装置として使用される。RAM502には、CPU501に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM502には、CPU501による処理に必要な各種データが格納される。
バス508に接続されている周辺機器としては、ハードディスクドライブ(HDD:Hard Disk Drive)503、グラフィック処理装置504、入力インタフェース505、光学ドライブ装置506、および通信インタフェース507がある。
HDD503は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD503は、制御ノード500の二次記憶装置として使用される。HDD503には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置504には、モニタ11が接続されている。グラフィック処理装置504は、CPU501からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース505には、キーボード12とマウス13とが接続されている。入力インタフェース505は、キーボード12やマウス13から送られてくる信号をCPU501に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置506は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース507は、ネットワーク10に接続されている。通信インタフェース107は、ネットワーク10を介して、他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3では制御ノード500のハードウェア構成を示したが、ディスクノード100,200,300,400、およびアクセスノード600も同様のハードウェア構成で実現することができる。ただし、ディスクノード100,200,300,400は、図3に示した機能に加え、ストレージ装置110,210,310,410を外部接続するためのインタフェースを有している。
次に、マルチノードストレージシステムにおいて定義される論理ディスクのデータ構造について説明する。
図4は、論理ディスクのデータ構造の一例を示す図である。第2の実施の形態では、論理ディスク60には論理ディスク識別子「LVOL−X」が付与されている。ネットワーク経由で接続された4台のディスクノード100,200,300,400には、個々のノードの識別用にそれぞれ「DP1」、「DP2」、「DP3」、「DP4」というディスクノードIDが付与されている。そして、各ディスクノード100,200,300,400に接続されているストレージ装置110,210,310,410は、ディスクノードIDと、各ディスクノード内でのディスクIDとの組によってネットワーク10で一意に識別される。
各ディスクノード100,200,300,400が有するストレージ装置110,210,310,410それぞれにおいてRAID5のストレージシステムが構成されている。各ストレージ装置110,210,310,410で提供される記憶機能は、複数のスライス115a〜115c,215a〜215c,315a〜315c,415a〜415cに分割されて管理されている。
論理ディスク60は、セグメント61〜64という単位で構成される。セグメント61〜64の記憶容量は、ストレージ装置110,210,310,410における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。論理ディスク60の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメント61〜64は、それぞれプライマリスライス61a,62a,63a,64aとセカンダリスライス61b,62b,63b,64bとの組(スライスペア)で構成される。
同一セグメントに属する2つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ディスク識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
図4の例では、論理ディスク60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
図5は、第2の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。まずアクセスノード600の機能について説明する。アクセスノード600は、メタデータ照会部610、アクセス用メタデータ記憶部620、およびアクセス要求部630を有している。
メタデータ照会部610は、論理ディスク60を定義するメタデータを、制御ノード500から取得する。具体的には、メタデータ照会部610は、アクセスノード600の起動時に制御ノード500に対して全メタデータの照会要求を送信する。すると、制御ノード500から論理ディスク60に関する全メタデータが送られてくる。また、メタデータ照会部610は、アクセス要求部630による任意のスライスへのデータアクセスがエラーとなったとき、アクセス対象のスライスが割り当てられたセグメントに関するメタデータの照会要求を制御ノード500に送信する。この場合、メタデータの照会要求が、データアクセスエラー情報の通知も兼ねることとなる。すると、制御ノード500から、該当セグメントの最新のメタデータが送られてくる。なお、メタデータ照会部610は、制御ノード500からメタデータを取得すると、そのメタデータをアクセス用メタデータ記憶部620に格納する。
アクセス用メタデータ記憶部620は、論理ディスク60を定義するメタデータを記憶する。例えば、アクセスノード600のRAMの一部がアクセス用メタデータ記憶部620として使用される。なお、第2の実施の形態では、アクセスノード600は常にプライマリスライス(シングルプライマリスライスも含む)にアクセスを行う。そのため、アクセス用メタデータ記憶部620には、論理ディスク60のメタデータのうち、少なくともプライマリスライスに関するメタデータが格納されていればよい。
アクセス要求部630は、端末装置21,22,23からの論理ディスク60上でのデータのアクセス要求に応答して、ストレージ装置110,210,310,410のデータのアクセス要求(リード要求またはライト要求)を送信する。アクセス要求は、アクセス先のストレージ装置が接続されたディスクノードに対して送信される。具体的には、アクセス要求部630は、論理ディスク60のアドレスを指定したアクセス要求を受け取ると、まず、アクセス用メタデータ記憶部620を参照し、アクセス対象のデータが属するセグメントを判断する。次に、アクセス要求部630は、該当するセグメントにプライマリスライスとして割り当てられたスライスを判断する。そして、アクセス要求部630は、該当するスライスを管理するディスクノードに対して、そのスライス内のデータのアクセス要求を送信する。ディスクノードからアクセス結果が応答されると、アクセス要求部630は、端末装置21,22,23にアクセス結果を送信する。
なお、アクセス要求部630は、アクセス先のディスクノードからエラーが返された場合、エラーが発生したセグメントをメタデータ照会部610に通知する。その後、アクセス要求部630は、データアクセスのリトライを行う。リトライでは、アクセス用メタデータ記憶部620を参照して、新たにプライマリスライスとした割り当てられたスライスを判断する処理から再度実行される。すなわち、前回のアクセス要求後にアクセス用メタデータ記憶部620内のメタデータが更新されていれば、更新後のメタデータに基づいてリトライ時のアクセス先となるディスクノードが判断される。
次に、ディスクノード100の機能について説明する。ディスクノードは、アクセス処理部120、エラー通知部130、エラー記憶部140、メタデータ記憶部150、およびメタデータ管理部160を有する。
アクセス処理部120は、アクセスノード600からのアクセス要求に応答して、ストレージ装置110に対するデータアクセスを行う。具体的には、アクセス処理部120は、アクセスノード600からアクセス要求を受け取ると、メタデータ記憶部150を参照し、アクセス対象となるセグメントに対して、割り当てられているストレージ装置110内のスライスを判断する。
次に、アクセス処理部120は、アクセス要求で指定されているスライス内のデータに対してアクセスする。例えば、データリードのアクセス要求であれば、アクセス処理部120は、該当するデータをストレージ装置110から読み出す。また、データライトのアクセス要求であれば、アクセス処理部120は、ストレージ装置110内の該当する記憶領域にアクセス要求に含まれるデータを書き込む。そして、アクセス処理部120は、アクセス結果をアクセスノード600に送信する。データリードのアクセス要求の場合、ストレージ装置110から読み出したデータがアクセス結果に含まれる。
また、データライトのアクセス要求の場合、アクセス処理部120は、他のディスクノード200,300,400との間でミラーリング処理を実行する。ミラーリング処理では、例えばアクセス処理部120は、メタデータ記憶部150を参照し、ライトアクセスの対象となるストレージ装置110内のスライス(プライマリスライス)と組となる、他のディスクノードのスライス(セカンダリスライス)を判断する。そして、アクセス処理部120は、セカンダリスライスを管理するディスクノードに対して、プライマリスライスに書き込まれたデータと同じデータの書き込み要求を送信する。すると、データの書き込み要求を受信したディスクノードにおいてセカンダリスライスへのデータの書き込みが行われる。
ミラーリング処理では、他のディスクノードのプライマリスライスに書き込まれたデータのセカンダリスライスへの書き込み要求が、他のディスクノードからディスクノード100に送信されることがある。ディスクノード100に送られたセカンダリスライスへのデータの書き込み要求は、アクセス処理部120で受け取られる。アクセス処理部120は、セカンダリスライスへのデータの書き込み要求を受け取ると、ストレージ装置110内の該当スライスにデータの書き込みを行う。
ストレージ装置110へのデータ書き込みの際には、ライトエラーが発生する場合がある。ライトエラーが発生すると、アクセス処理部120は、エラー記憶部140にライトエラーの発生を示すエラー情報を格納すると共に、エラー通知部130に対してライトエラーの発生を通知する。さらにアクセス処理部120は、アクセスノード600からのアクセス要求に応じて実行したストレージ装置110へのライトアクセスがエラーとなった場合、アクセスノード600に対してエラーを返す(エラーメッセージを送信する)。
エラー通知部130は、アクセス処理部120からライトエラー発生の通知を受け取ると、制御ノード500へエラーの発生を示すエラーメッセージを送信する。例えばエラー通知部130は、ディスクノード100の識別子(ディスクID)を含むエラーメッセージを制御ノード500に送信する。
エラー記憶部140は、ストレージ装置110のエラー情報を記憶する。エラー情報は、ライトエラーの有無を示す情報である。例えばエラー情報として、「ライトエラーあり」または「ライトエラーなし」の2つの状態を有するフラグを用いることができる。エラー記憶部140としては、例えば、ディスクノード100内のRAMの記憶領域の一部が用いられる。
なお、図5の例ではディスクノード100に対して1台のストレージ装置110が接続されている。そのため、エラー情報に、ストレージ装置の識別情報を含めなくても、エラー情報に対応するストレージ装置を一意に決定できる。ディスクノード100に複数のストレージ装置が接続されていた場合、ストレージ装置ごとのエラー情報がエラー記憶部140に格納される。その場合、各エラー情報には、ストレージ装置をディスクノード100内で一意に識別する識別子が含められる。
メタデータ記憶部150は、ディスクノード100が管理しているスライスのメタデータの記憶機能である。例えば、ディスクノード100のRAM内の一部の記憶領域がメタデータ記憶部150として使用される。
メタデータ管理部160は、ストレージ装置110内の各スライスのメタデータを管理する。具体的には、メタデータ管理部160は、ディスクノード100起動時に、ストレージ装置110から各スライスのメタデータを読み出し、メタデータ記憶部150に格納する。また、メタデータ管理部160は、制御ノード500からメタデータの収集要求があれば、メタデータ記憶部150に格納されているメタデータを制御ノード500に送信する。さらにメタデータ管理部160は、制御ノード500からメタデータの変更要求を受け取ると、その変更要求で指定されたメタデータの内容を変更する。この際、メタデータ管理部160は、メタデータ記憶部150内のメタデータと、ストレージ装置110内のメタデータとを変更する。
なお、図5には複数のディスクノード100,200,300,400のうち、代表的にディスクノード100の機能を示したが、他のディスクノード200,300,400も同様の機能を有している。
次に制御ノード500の機能について説明する。制御ノード500は、エラー受信部510、エラー記憶部520、論理ディスク管理部530および論理ディスクメタデータ記憶部540を有している。
エラー受信部510は、ディスクノードからのライトエラーを示すエラーメッセージを受信する。エラー受信部510は、エラーメッセージを受信すると、二重化復旧のリカバリ処理中でなければ、エラーメッセージを送信したディスクノードでライトエラーが発生したことを示すエラー情報を、エラー記憶部520に格納する。また、エラー受信部510は、エラーメッセージを受信したときリカバリ処理中であれば、論理ディスク管理部530内のリカバリ処理部533にリカバリ処理の開始を指示する。
エラー記憶部520は、ディスクノードでのライトエラーの有無を示すエラー情報を記憶する。例えば、RAM502またはHDD503の記憶領域の一部が、エラー記憶部520として使用される。
論理ディスク管理部530は、マルチノードストレージシステム内の各ディスクノード100,200,300,400のメタデータを管理する。論理ディスク管理部530は、メタデータ収集部531、スライス割当処理部532、およびリカバリ処理部533を有する。
メタデータ収集部531は、所定のタイミングで、各ディスクノード100,200,300,400からメタデータを収集する。例えば、メタデータ収集部531は、制御ノード500が起動した場合にメタデータを収集する。メタデータを収集するタイミングになると、メタデータ収集部531は、各ディスクノード100,200,300,400にメタデータの収集要求を送信する。すると各ディスクノード100,200,300,400からメタデータが応答される。メタデータ収集部531は、収集したメタデータを論理ディスクメタデータ記憶部540に格納する。
スライス割当処理部532は、論理ディスク60の各セグメントへのスライスの割り当て処理を行う。例えば、スライス割当処理部532は、新たな論理ディスクが定義された場合などに、セグメントへのスライスの割り当て処理を行う。スライスの割り当て処理では、例えば、各セグメントに対して、異なるディスクノードで管理されている2つのスライスが割り当てられる。セグメントに割り当てるスライスとしては、他のセグメントに割り当てられておらず、かつ異常スライスではないスライス(フリースライス)が選択される。スライス割当処理部532は、新たにセグメントに割り当てられたスライスに関する論理ディスクメタデータ記憶部540内のメタデータを更新する。また、スライス割当処理部532は、更新されたメタデータを含むメタデータ変更要求を、そのメタデータに対応するスライスを管理しているディスクノードに送信する。
さらにスライス割当処理部532は、アクセスノード600からのメタデータ照会要求を受け取ると、照会要求で指定されたセグメントに割り当てられたスライスのメタデータを、アクセスノード600に送信する。なお照会要求で指定されたセグメントに割り当てられたスライスが、ライトエラーが発生したディスクノードで管理されている場合がある。その場合、スライス割当処理部532は、指定されたセグメントに他のスライスを割り当て、その後、新たに割り当てられたスライスのメタデータをアクセスノード600に送信する。
リカバリ処理部533は、所定のタイミングで、二重化復旧のリカバリ処理を実行する。例えば、リカバリ処理部533は、エラー受信部510からリカバリ指示を受け取ったときにリカバリ処理を開始する。また、リカバリ処理部533は、システム管理者の操作入力によるリカバリ処理開始指示があった場合に、リカバリ処理を開始することもできる。
論理ディスクメタデータ記憶部540は、論理ディスク60を構成するセグメントへのスライスの割り当て関係を示すメタデータを記憶する記憶機能である。例えば、RAM502またはHDD503の記憶領域の一部が論理ディスクメタデータ記憶部540として使用される。
次に、各ノードで管理されているデータの構造について説明する。
図6は、ストレージ装置のデータ構造の一例を示す図である。ストレージ装置110には、スライス115a,115b,115c,・・・とは別に複数のメタデータ117a,117b,117c,・・・が格納されている。
ストレージ装置110に格納されたメタデータ117a,117b,117c,・・・は、ディスクノード100の起動時にメタデータ管理部160によって読み出され、メタデータ記憶部150に格納される。
なお、図6の例では、各スライスに隣接した記憶領域に、それぞれのスライスに関するメタデータが格納されているが、メタデータの格納領域は図6に示した場所には限らない。例えば、1つのメタデータ記憶領域内に、すべてのスライスのメタデータを記憶させることもできる。
また、1つのスライスのデータを不連続の記憶領域に格納することもできる。その場合、例えば、各スライスが、所定のデータ長の複数のデータユニットに分割される。そして、各スライスのメタデータには、各データユニットに対応するデータの格納先となる記憶領域を特定する情報が設定される。データの格納先となる記憶領域を特定する情報は、例えば、ストレージ装置の記憶領域の先頭からのオフセット値である。
図7は、メタデータ記憶部のデータ構造例を示す図である。メタデータ記憶部150には、メタデータテーブル151が格納されている。メタデータテーブル151には、ディスクノードID、ディスクID、スライスID、状態、論理ディスクID、セグメントID、論理ディスクアドレス、ペアのディスクノードID、ペアのディスクID、およびペアのスライスIDの欄が設けられている。メタデータテーブル151内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードを構成している。
ディスクノードIDの欄は、ストレージ装置110を管理しているディスクノード100の識別情報(ディスクノードID)が設定される。
ディスクIDの欄には、ストレージ装置110の識別情報(ディスクID)が設定される。ディスクノード100に複数のストレージ装置が接続される場合、各ストレージ装置に異なるディスクIDが設定される。
スライスIDの欄には、メタデータに対応するスライスのストレージ装置110内での識別情報(スライスID)が設定される。
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが論理ディスク60のセグメントに割り当てられていない場合、状態フラグ「F」が設定される。論理ディスク60のセグメントのプライマリストレージに割り当てられている場合、状態フラグ「P」または「SP」が設定される。種別フラグ「P」は、ペアとなるセカンダリセグメント(ミラースライス)が存在するプライマリスライスを示している。種別フラグ「SP」は、ミラースライスが障害などによって存在しなくなったプライマリスライス(シングルプライマリスライス)を示している。なお、種別フラグ「SP」は、そのスライスが割り当てられているセグメントの二重化状態が損なわれていることを示す欠損フラグでもある。論理ディスク60のセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「S」が設定される。異常スライスと判定された場合、異常であることを示す状態フラグ「B」が設定される。異常スライスは、セグメントへの割り当て候補から除外される。
なお、シングルプライマリスライスが割り当てられているセグメントは冗長性が確保されていない。以下、シングルプライマリスライスのみが割り当てられているセグメントを、欠損セグメントと呼ぶ。欠損セグメントに対しては、セカンダリスライスとして割り当てるべきスライスが予約される。予約されたスライスは、リザーブスライスと呼ばれる。欠損セグメントのリザーブスライスに対してプライマリスライスからデータがコピーされる。これにより、欠損セグメントのデータの二重化状態が復旧する。このような二重化復旧処理中のリザーブスライスのメタデータに対しては、データのコピーが完了するまで種別フラグ「R」が設定される。リザーブスライスに対するプライマリスライスからのデータのコピーが完了すると、リザーブスライスはセカンダリスライスに変更される。
論理ディスクIDの欄には、スライスに対応するセグメントが属する論理ディスク60を識別するための識別情報(論理ディスクID)が設定される。
セグメントIDの欄には、スライスが割り当てられたセグメントの識別情報(セグメントID)が設定される。
論理ディスクアドレスの欄には、スライスが割り当てられているセグメントの先頭を示す論理ディスク60内でのアドレスが設定される。
ペアのディスクノードIDの欄には、ペアのスライス(同じセグメントに属する別のスライス)を有するストレージ装置を管理するディスクノードの識別情報(ディスクノードID)が設定される。
ペアのディスクIDの欄には、ペアのスライスを有するストレージ装置の識別情報(ディスクID)が設定される。
ペアのスライスIDの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報(スライスID)が設定される。
図7にはディスクノード100のメタデータ記憶部150の内容を示しているが、他のディスクノード200,300,400も同様のメタデータ記憶部を有している。そして、各ディスクノード100,200,300,400のメタデータ記憶部に格納されたメタデータは、制御ノード500からの要求に応じて制御ノード500に送信される。制御ノード500では、ディスクノード100,200,300,400から収集したメタデータは、メタデータ収集部531により論理ディスクメタデータ記憶部540に格納される。
図8は、論理ディスクメタデータ記憶部のデータ構造の一例を示す図である。論理ディスクメタデータ記憶部540には、論理ディスクメタデータテーブル541が格納されている。論理ディスクメタデータテーブル541には、ディスクノードID、ディスクID、スライスID、状態、論理ディスクID、セグメントID、論理ディスクアドレス、ペアのディスクノードID、ペアのディスクID、およびペアのスライスIDの欄が設けられている。論理ディスクメタデータテーブル541内の横方向に並べられた情報が互いに関連付けられ、メタデータを示す1つのレコードを構成している。論理ディスクメタデータテーブル541の各欄に設定される情報は、メタデータテーブル151の同名の欄と同種の情報である。
論理ディスクメタデータテーブル541に格納されたメタデータは、アクセスノード600からの照会要求に応答して、アクセスノード600に送信される。アクセスノード600は、取得したメタデータを記憶する。具体的には、アクセスノード600のアクセス用メタデータ記憶部620にメタデータが格納される。
アクセス用メタデータ記憶部620のデータ構造は、論理ディスクメタデータ記憶部540と同様である。なお、本実施の形態では、アクセスノード600は常にプライマリスライスまたはシングルプライマリスライスにアクセスする。そのため、アクセス用メタデータ記憶部620には、少なくともプライマリスライスおよびプライマリスライスに関するメタデータ(状態フラグが「P」または「SP」のメタデータ)が格納されていればよい。また、アクセス用メタデータ記憶部620には、各メタデータにおけるペアのディスクノードID、およびペアのスライスIDの各欄のデータは無くてもよい。
図9は、エラー記憶部のデータ構造の一例を示す図である。エラー記憶部520には、各ディスクノード100,200,300,400のライトエラーの有無を示す情報が格納される。図9の例では、エラー記憶部520内にエラー管理テーブル521が設けられている。
エラー管理テーブル521には、ディスクノードID、ディスクID、およびライトエラーの欄が設けられている。ディスクノードIDの欄には、各ディスクノードの識別子が設定される。ディスクIDの欄には、各ディスクノードに接続されているストレージ装置のディスクIDが設定される。ライトエラーの欄には、対応するディスクノードのストレージ装置でライトエラーが発生したか否かを示す情報が設定される。例えば、ライトエラーの欄には、ライトエラーに関して「あり」を示す状態と、「なし」を示す状態とを有するフラグが設定される。
以上のような構成のマルチノードストレージシステムにおいて、いずれかのディスクノードに故障が発生すると、リカバリ処理が実行される。ディスクノードの故障は、例えば、制御ノードで検知される。制御ノード500は、ディスクノードからのハートビートの途絶や、ディスクノードからのライトエラーの発生を示すエラーメッセージの受信によって、故障を検知することができる。
以下、ディスクノード400で最初にライトエラーが発生したことに起因するリカバリ処理中に、他のディスクノードでライトエラーが発生した場合を想定し、第2の実施の形態の処理を詳細に説明する。
図10は、ディスクノードでのライトエラー検出時に装置間で送受信される情報の例を示す図である。図10では、各装置の機能のうち、他の装置と通信を行う機能が示されている。
制御ノード500の論理ディスク管理部530から各ディスクノード100,200,300のメタデータ管理部160,260,360それぞれへは、メタデータ変更要求、スライスコピー要求などが送信される。ディスクノード100のエラー通知部130から制御ノード500のエラー受信部510へは、エラーメッセージが送信される。ディスクノード100,200,300のアクセス処理部120,220,320間では、ミラーリングによる書き込みデータや、スライスコピー時の書き込みデータなどが互いに送信される。
アクセスノード600のアクセス要求部630からディスクノード100のアクセス処理部120へは、リードまたはライトのアクセス要求が送信される。なお、図10には示していないが、アクセス要求部630からディスクノード200,300のアクセス処理部220,320へも、リードまたはライトのアクセス要求が送信される。アクセスノード600のメタデータ照会部610から制御ノード500の論理ディスク管理部530へは、メタデータ照会要求が送信される。
このような装置間の通信による装置の協働動作により、故障したディスクノードの切り離し処理、欠損セグメントの二重化を回復するリカバリ処理、およびリカバリ処理中のライトエラーに起因するエラー処理が進行する。そこで、まず故障したディスクノードの切り離し処理について説明する。
第2の実施の形態では、リカバリ処理の実行中を除き、故障したディスクノードはマルチノードストレージシステムから切り離される。故障したディスクノードの切り離しとは、アクセスノード600からのアクセス先、またはミラーリングによるコピー先から、故障したディスクノードを排除することである。
図11は、故障したディスクノードの切り離し処理の一例を示す図である。以下、図11に示す処理をステップ番号に沿って説明する。なお、図11の例には、リカバリ処理が実行されていない状況下でディスクノード400が故障した場合の処理手順が示されている。
[ステップS11]ディスクノード400は、ストレージ装置410へのライトアクセス時にライトエラーを検出すると、ライトエラーの発生を示すエラーメッセージを制御ノード500に送信する。
[ステップS12]制御ノード500のエラー受信部510は、エラーメッセージを受信すると、リカバリ処理が実行されていないことを確認後、論理ディスク管理部530にリカバリ指示を出す。
[ステップS13]論理ディスク管理部530内のスライス割当処理部532は、ライトエラーメッセージを送信したディスクノード400を切り離すため、メタデータ更新処理を行う。メタデータ更新処理は、故障通知処理(ステップS13a)と論理ディスクメタデータ更新処理(ステップS13b)とに分かれる。
[ステップS13a]論理ディスク管理部530は、まずシングルプライマリ化を指示するメタデータ変更要求をディスクノード100,200,300に送信する。メタデータ変更要求は、ディスクノード400が管理しているスライスとペアとなるスライスについて、シングルプライマリスライスに変更すること(シングルプライマリ化)の要求である。メタデータ変更要求には、故障したディスクノード400のディスクノードIDが含まれる。
[ステップS14]シングルプライマリ化のメタデータ変更要求を受信したディスクノード100では、メタデータ管理部160がシングルプライマリ化の処理を実行する。例えば、メタデータ管理部160は、メタデータ記憶部150内のメタデータを参照し、ペアのディスクノードIDの欄に、ディスクノード400のディスクノードID「DP4」が設定されているメタデータを検索する。そして、メタデータ管理部160は、検索で合致したメタデータテーブル151内のメタデータについて、状態をシングルプライマリスライスを示す「SP」に変更する。またメタデータ管理部160は、検索で合致したメタデータテーブル151内のメタデータについて、ペアのディスクノードID、およびペアのスライスIDの欄に該当する領域の情報を削除する。情報が削除された領域の内容は、例えば「NULL」となる。
メタデータ管理部160は、メタデータ記憶部150内のメタデータの更新が完了すると、更新されたメタデータに対応するストレージ装置110内のメタデータの記憶領域に、更新されたメタデータを書き込む。これにより、ストレージ装置110内のメタデータが更新され、ストレージ装置110内のメタデータとメタデータ記憶部150内のメタデータとの同一性が保たれる。
メタデータ管理部160は、メタデータ記憶部150とストレージ装置110とのメタデータの更新が完了すると、制御ノード500に対してシングルプライマリ化完了応答を送信する。制御ノード500では、ディスクノード100からのシングルプライマリ化完了応答を受信することで、ディスクノード100でのシングルプライマリ化処理が完了したことを認識する。
なお、他のディスクノード200,300もディスクノード100と同様にシングルプライマリ化処理を実行する。そしてディスクノード200,300は、シングルプライマリ化処理が完了すると、制御ノード500に対してシングルプライマリ化完了応答を送信する。
[ステップS13b]スライス割当処理部532は、各ディスクノード100,200,300からシングルプライマリ化完了応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを更新する。具体的にはスライス割当処理部532は、ディスクノード400が管理しているスライスとペアとなるスライスのメタデータの状態を、シングルプライマリスライスに変更する。またスライス割当処理部532は、ディスクノード400が管理しているスライスとペアとなるスライスのメタデータから、ペアのディスクノードID、およびペアのスライスIDの欄の情報を削除する。さらにスライス割当処理部532は、ディスクノード400が管理しているスライスのメタデータを論理ディスクメタデータ記憶部540から削除するか、あるいは該当メタデータの状態をすべて異常であることを示す状態フラグ「B」に変更する。
スライス割当処理部532は、故障したディスクノード400を除くすべてのディスクノード100,200,300からメタデータを収集し、論理ディスクメタデータテーブル541を再作成することもできる。ディスクノード100,200,300内のメタデータは故障通知に応答して更新されているため、最新のメタデータを収集すれば、ディスクノード400がシステムに含まれない状態での論理ディスクメタデータテーブル541が作成できる。
制御ノード500で更新された論理ディスクメタデータテーブル541内のメタデータは、所定のタイミングでアクセスノード600に通知される。例えば、制御ノード500からの指示により、切り離されたディスクノード400のアクセス処理部の機能を停止させる。するとアクセスノード600がディスクノード400にアクセスすると、アクセスエラーとなる。この場合、アクセスノード600は、制御ノード500にメタデータ照会要求を送信する。制御ノード500は、メタデータ照会要求に応答して、最新のメタデータをアクセスノード600に通知する。また制御ノード500は、論理ディスクメタデータテーブル541内のメタデータを更新した場合、アクセスノード600からのメタデータ照会要求を待たずに、更新されたメタデータをアクセスノード600に送信してもよい。
ディスクノード400を切り離した後の論理ディスクメタデータテーブル541では、ディスクノード400が管理しているスライスとペアとなるスライスがすべてシングルプライマリスライスに変更されている。これにより、その後のアクセスノード600からのアクセスは、シングルプライマリ化されたスライスに対して実行されることとなる。また、ディスクノード400が管理しているスライスとペアとなるスライスがすべてシングルプライマリスライスに変更されていることで、ディスクノード400がミラーリング処理におけるコピー先となることもなくなる。さらに、ディスクノード400が管理しているスライスのメタデータが削除されているか、あるいは状態フラグ「B」に変更される。これにより、その後のセグメントへのスライス割り当てにおいて、ディスクノード400のスライスがセグメントに割り当てられることもなくなる。
このようにして、マルチノードストレージシステムの各装置からのディスクノード400へのアクセスを停止することができる。ディスクノード400をアクセス先とする処理がなくなることで、マルチノードストレージシステムからのディスクノード400の切り離しが完了する。
スライス割当処理部532は、ディスクノード400の切り離しが完了すると、リカバリ処理部533にリカバリ処理の開始を指示する。すると、リカバリ処理部533の制御によりリカバリ処理が実行される。
図12は、リカバリ処理手順の一例を示すシーケンス図である。以下、リカバリ処理の手順をステップ番号に沿って説明する。
[ステップS21]制御ノード500のリカバリ処理部533は、故障したディスクノード400の切り離しが完了するとリカバリ処理を開始する。リカバリ処理は、リザーブスライスの割り当て処理(ステップS21a)、スライスコピー処理(ステップS21b)、およびスライス状態更新処理(ステップS21c)に分かれる。
[ステップS21a]リカバリ処理部533は、論理ディスクメタデータテーブル541を参照し、シングルプライマリスライス(状態フラグが「SP」のスライス)を選択する。図12の例では、ディスクノード200が管理するスライスが選択されている。シングルプライマリスライスが割り当てられているセグメントは、欠損セグメントである。そこでリカバリ処理部533は、論理ディスクメタデータテーブル541を参照し、欠損セグメントに対してセカンダリスライスとして割り当てるスライスを、フリースライス(状態が「F」のスライス)の中から選択する。選択されるフリースライスは、シングルプライマリスライスとは異なるディスクノードであり、かつライトエラーが発生していないディスクノードで管理されているスライスである。図12の例では、ディスクノード300で管理されているスライスが選択されている。
リカバリ処理部533は、選択したシングルプライマリスライスを管理しているディスクノード200に対して、スライスのプライマリ化を指示するメタデータ変更要求を送信する。プライマリ化を指示するメタデータ変更要求には、欠損セグメントに割り当てられているシングルプライマリスライスのスライスIDが含まれる。
またリカバリ処理部533は、選択したフリースライスを管理するディスクノード300に対して、リザーブスライスへの変更を指示するメタデータ変更要求を送信する。このメタデータ変更要求には、変更対象のメタデータに対応するスライスのスライスID、選択したシングルプライマリスライスを管理するディスクノードのディスクノードID、および選択したシングルプライマリスライスのスライスIDが含まれる。
[ステップS22]ディスクノード200のメタデータ管理部260は、シングルプライマリ化を指示するメタデータ変更要求を受け取ると、メタデータ変更要求で指定されたスライスをシングルプライマリスライスに変更する。具体的には、メタデータ管理部260は、メタデータ変更要求で示される変更対象のスライスのメタデータを、メタデータ記憶部内から選択する。次にメタデータ管理部260は、選択したメタデータの状態の欄の種別フラグを、「SP」に変更する。またメタデータ管理部260は、ストレージ装置210内の変更対象のスライスのメタデータについても、状態がプライマリスライスになるように変更する。そして、メタデータ管理部260は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
[ステップS23]リザーブスライスへの変更を指示するメタデータ変更要求を受信したディスクノード300では、メタデータ管理部360が指定されたフリースライスの状態を、リザーブスライスに変更する。具体的には、メタデータ管理部360は、メタデータ変更要求で示される変更対象のスライスのメタデータを、メタデータ記憶部内から選択する。次にメタデータ管理部360は、選択したメタデータの状態の欄の種別フラグを、「R」に変更する。またメタデータ管理部360は、ストレージ装置310内の変更対象のスライスのメタデータについても、状態がリザーブスライスとなるように変更する。そして、メタデータ管理部360は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
なお、リカバリ処理部533は、ステップS22,S23のメタデータ更新が完了すると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノード200,300で更新されたメタデータと同じ内容に更新する。
[ステップS21b]リカバリ処理部533は、ディスクノード200,300からメタデータ更新完了の応答を受け取ると、欠損セグメントのプライマリスライスを管理しているディスクノード200に対して、スライスコピー要求を送信する。スライスコピー要求には、欠損セグメントのプライマリスライスのスライスID、リザーブスライスを管理するディスクノードのディスクノードID、およびリザーブスライスのスライスIDが含まれる。
[ステップS24]スライスコピー要求を受信したディスクノード200のアクセス処理部220は、指定されたスライスのペアのスライスを管理するディスクノード300に対して、指定されたスライス内のデータを送信する。データを送信する際には、データの格納先として、スライスコピー要求で指定されたスライスのペアのスライスのスライスIDが指定される。
[ステップS25]ディスクノード300のアクセス処理部320は、ディスクノード200から送られたデータを受信し、指定されたスライスにデータを格納する。アクセス処理部320は、データの格納が完了すると、書き込み完了応答をディスクノード200に送信する。
ディスクノード200のアクセス処理部220は、ディスクノード300からの書き込み完了応答を受け取ると、制御ノード500に対してスライスコピー完了の応答を送信する。
[ステップS21c]制御ノード500のリカバリ処理部533は、ディスクノード200からスライスコピー完了の応答を受け取ると、ディスクノード200に対してメタデータへのペアのスライスの設定を指示するメタデータ変更要求を送信する。このメタデータの変更要求には、欠損セグメントのプライマリスライスのスライスID、リザーブスライスを管理するディスクノードのディスクノードID、およびリザーブスライスのスライスIDが含まれる。
また、リカバリ処理部533は、ディスクノード200からスライスコピー完了の応答を受け取ると、ディスクノード300に対してスライスのセカンダリ化を指示するメタデータ変更要求を送信する。セカンダリ化を指示するメタデータ変更要求には、欠損セグメントに割り当てられているリザーブスライスのスライスIDが含まれる。
[ステップS26]メタデータへのペアのスライスの設定を指示するメタデータ変更要求を受信したディスクノード200では、メタデータ管理部260がペア相手設定処理を行う。具体的には、メタデータ管理部260は、メタデータ変更要求で示される変更対象のスライスのメタデータを、メタデータ記憶部内から選択する。次にメタデータ管理部260は、選択したメタデータのペアのディスクノードID、ペアのスライスIDの欄に、メタデータ変更要求に含まれているリザーブスライスのディスクノードIDとリザーブスライスのスライスIDとを設定する。またメタデータ管理部260は、ストレージ装置210内の変更対象のスライスのメタデータに対しても、ペアのディスクノードIDとペアのスライスIDとを設定する。そして、メタデータ管理部260は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
[ステップS27]ディスクノード300のメタデータ管理部360は、セカンダリ化を指示するメタデータ変更要求を受け取ると、メタデータ変更要求で指定されたスライスをセカンダリスライスに変更する。具体的には、メタデータ管理部360は、メタデータ変更要求で示される変更対象のスライスのメタデータを、メタデータ記憶部内から選択する。次にメタデータ管理部360は、選択したメタデータの状態の欄の種別フラグを「S」に変更する。またメタデータ管理部360は、ストレージ装置310内の変更対象のスライスのメタデータについても、状態がセカンダリスライスになるように変更する。そして、メタデータ管理部360は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
なお、リカバリ処理部533は、ステップS26,S27のメタデータ更新が完了すると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノード200,300で更新されたメタデータと同じ内容に更新する。
以後、制御ノード500のリカバリ処理部533は、シングルプライマリスライスが無くなるまで、ステップS21a,S21b,S21cの処理を繰り返し実行する。
ところで、図11、図12の例では、リカバリ処理が実行されていない状況下においてディスクノード400でエラーが発生したため、ディスクノード400の切り離し処理と、リカバリ処理とが実行されている。一方、リカバリ処理実行中にいずれかのディスクノードでライトエラーが発生した場合、データの喪失を抑制するため、エラーが発生したディスクノードの即時の切り離しは行われない。以下、リカバリ処理実行中のライトエラーの発生によるエラー処理について説明する。
図13は、リカバリ処理実行中のライトエラー発生時の処理手順の一例を示すシーケンス図である。図13には、リカバリ処理部533によるリカバリ処理実行中に、ディスクノード100においてストレージ装置110へのライトエラーが検出された場合の処理が示されている。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS31]ディスクノード100のアクセス処理部120は、ストレージ装置110へのライトアクセス時にエラーを検出すると、ライトエラーの発生をエラー通知部130に伝える。するとエラー通知部130は、ライトエラーを示すエラーメッセージを制御ノード500に送信する。
[ステップS32]制御ノード500では、エラー受信部510がディスクノード100からのエラーメッセージを受け取る。図13の例では、リカバリ処理部533によるリカバリ処理実行中であるため、エラー受信部510はエラー記憶部520に、ディスクノード100でライトエラーが発生したことを示すエラー情報を格納する。
このように、リカバリ処理が継続して実行されている間にディスクノード100でライトエラーが検出されると、ディスクノード100の切り離し処理に代えて、ディスクノード100でライトエラーが発生したことを示すエラー情報の記録が行われる。
次に、ディスクノード100におけるライトエラー検出および通知処理例について説明する。
図14は、ディスクノードでのライトエラー検出および通知処理の手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS41]ディスクノード100のアクセス処理部120は、ライトエラーを検出する。例えば、アクセス処理部120は、アクセスノード600からのデータライトのアクセス要求に応じてストレージ装置110に書き込みを行う際に、書き込みに失敗すると、ライトエラーが発生したものと判断する。また、アクセス処理部120は、他のディスクノード200,300からのミラーリング処理におけるライト要求に応じてストレージ装置110に書き込みを行う際に、書き込みに失敗したとき、ライトエラーが発生したものと判断することもできる。さらに、アクセス処理部120は、他のディスクノード200,300からのスライスデータのコピー要求に応じてストレージ装置110に書き込みを行う際に、書き込みに失敗すると、ライトエラーが発生したものと判断することもできる。
なお、ストレージ装置110内で定期的なライトエラーチェック処理が自動実行されている場合もある。この場合、エラーチェック処理においてライトエラーが検出されたことの通知をストレージ装置110から受け取ることで、アクセス処理部120がライトエラーの発生を認識できる。
ところで、ストレージ装置は、多くの場合、データの書き込みができない単位記憶領域(ブロック)が発生すると、予備に用意されていたブロックにデータの書き込みを行う。このような書き込み先を変更する処理により、ストレージ装置内でライトエラーに対するリカバリが完了する。ストレージ装置ないでリカバリが完了した場合、ストレージ装置は、ディスクノードからのデータのライト要求に対してエラー応答をせずにすむ。ただし、ストレージ装置における予備のブロックの数には限りがある。予備のブロックがすべて使用された後にデータの書き込みができないブロックが発生すると、そのブロックに書き込むべきデータの書き込み先が確保できない。この場合、ストレージ装置はディスクノードに対してライトエラーを応答する。アクセス処理部120は、ストレージ装置110内部でのリカバリが不能となった場合に出力されるライトエラーについてのみ、制御ノードへのエラー通知の対象のライトエラーと判断することができる。
[ステップS42]ライトエラーを検出したアクセス処理部120は、ライトエラーが発生したことを示すエラー情報を、ライトエラーが発生したストレージ装置のディスクIDに対応付けてエラー記憶部140に格納する。例えばアクセス処理部120は、エラー記憶部140に格納されているライトエラーの発生の有無を示すフラグを、「ライトエラー有り」の状態に変更する。
[ステップS43]アクセス処理部120は、エラー通知部130に対して、ライトエラーの発生を通知する。エラー通知部130は、アクセス処理部120からのエラー発生の通知を受けて、制御ノード500に対して、ライトエラーの発生を示すエラーメッセージを送信する。
このようにして、ディスクノード100において、ストレージ装置110のライトエラー発生を検出すると、ライトエラーを示すエラー情報が記録されると共に、エラーメッセージが制御ノード500に送信される。エラーメッセージを受信した制御ノード500では、リカバリ処理を開始するか、あるいはエラー情報の記録が行われる。
図15は、エラーメッセージを受信したときのエラー処理手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS51]制御ノード500のエラー受信部510は、ディスクノード100からのライトエラーを示すエラーメッセージを受信する。
[ステップS52]エラー受信部510は、リカバリ処理中か否かを判断する。例えば、リカバリ処理部533の実行プロセスが起動されている場合、リカバリ処理中と判断される。また、論理ディスクメタデータ記憶部540を参照し、シングルプライマリスライスが存在している間はリカバリ処理中であると判断することもできる。リカバリ処理中であれば、処理がステップS53に進められる。リカバリ処理中でなければ、処理がステップS54に進められる。
[ステップS53]エラー受信部510はリカバリ処理中であれば、エラー記憶部520に、ディスクノード100でライトエラーが発生したことを示すエラー情報を記録する。例えばエラー受信部510は、エラー記憶部520内のエラー管理テーブル521から、エラーメッセージを送信したディスクノードのディスクノードIDを検索する。そしてエラー受信部510は、検索で該当したディスクノードIDに対応付けられたライトエラーの欄に、ライトエラー有りを示すフラグを設定する。その後、エラー処理が終了する。
[ステップS54]エラー受信部510はリカバリ処理中でなければ、リカバリ処理の開始を、リカバリ処理部533に指示する。これにより、リカバリ処理部533によるリカバリ処理が開始される。その後、エラー処理が終了する。
このようにして、ライトエラーのエラーメッセージ受信時には、リカバリ処理中か否かによって処理が分かれる。すなわち、リカバリ処理中であればエラー情報の記録が行われ、リカバリ処理中でなければリカバリ処理が開始される。
図16は、リカバリ処理手順の一例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
[ステップS61]リカバリ処理部533は、エラーメッセージを送信したディスクノードを切り離し対象とする。このとき、リカバリ処理部533は、エラー管理テーブル521から、切り離し対象のディスクノードに対応するレコードを削除する。
[ステップS62]リカバリ処理部533は、切り離し対象のディスクノードが管理するスライスとペア相手のスライスを検出する。例えば、リカバリ処理部533は、論理ディスクメタデータテーブル541のペアのディスクノードIDの欄から、切り離し対象のディスクノードのディスクノードIDを検索する。検索により該当したメタデータに対応するスライスが、切り離し対象のディスクノードが管理するスライスとペア相手である。
[ステップS63]リカバリ処理部533は、ペア相手のスライスを管理するディスクノードに対して、ペア相手のスライスのシングルプライマリ化を指示する。例えば、リカバリ処理部533は、ペア相手のスライスのスライスIDを含むシングルプライマリ化を指示するメタデータ変更要求を、ペア相手のスライスを管理するディスクノードに送信する。
[ステップS64]リカバリ処理部533は、すべてのペア相手のスライスのシングルプライマリ化が完了したか否かを判断する。例えばリカバリ処理部533は、シングルプライマリ化を指示するメタデータ変更要求のすべてに対して、シングルプライマリ化完了の応答が返された場合に、シングルプライマリ化が完了したものと判断する。シングルプライマリ化が完了した場合、処理がステップS65に進められる。シングルプライマリ化が未完了であれば、ステップS64が繰り返される。
なお、ディスクノードでのシングルプライマリ化のメタデータ変更が完了すると、リカバリ処理部533は、論理ディスクメタデータテーブル541内のペア相手のスライスのメタデータについても、状態をシングルプライマリスライスに変更する。
[ステップS65]リカバリ処理部533は、シングルプライマリスライスが存在するか否かを判断する。例えばリカバリ処理部533は、論理ディスクメタデータテーブル541から、状態欄の種別フラグが「SP」のメタデータを検索する。少なくとも1つのメタデータが検索で見つかった場合、シングルプライマリスライスが存在すると判断される。種別フラグが「SP」のメタデータが検出されなければ、シングルプライマリスライスは存在しないと判断される。シングルプライマリスライスが存在する場合、処理がステップS66に進められる。シングルプライマリスライスが存在しない場合、処理がステップS71に進められる。
[ステップS66]リカバリ処理部533は、シングルプライマリスライスの1つを、リカバリ対象として選択する。例えばリカバリ処理部533は、論理ディスクメタデータテーブル541から種別フラグが「SP」のメタデータを1つ抽出し、抽出したメタデータに対応するスライスをリカバリ対象として選択する。
[ステップS67]リカバリ処理部533は、リザーブ化対象のスライスを選択する。例えばリカバリ処理部533は、論理ディスクメタデータテーブル541から種別フラグが「F」であり、かつリカバリ対象のスライスと異なるディスクノードで管理されているスライスのメタデータを1つ抽出する。そしてリカバリ処理部533は、抽出したメタデータに対応するスライスを、リザーブ化対象として選択する。
この際、リカバリ処理部533は、エラー管理テーブル521を参照してライトエラーが発生しているディスクノードを判断し、ライトエラーが発生しているディスクノードで管理されているスライスを、リザーブ化対象として選択しないようにしてもよい。すなわち、ライトエラーが発生しているディスクノードが管理するスライスは、リザーブ対象として選択しても、スライスコピー時にエラーとなり、リザーブ化対象の再選択を行うこととなる可能性がある。ライトエラーが発生しているディスクノードで管理されているスライスをリザーブ化対象から除外することで、リザーブ化対象の再選択処理の発生を抑制できる。
[ステップS68]リカバリ処理部533は、リカバリ対象のスライスとリザーブ化対象のスライスに関するメタデータを変更する。例えば、リカバリ対象スライスは、シングルプライマリスライスからプライマリスライスに変更される。リザーブ化対象のスライスは、フリースライスからリザーブスライスに変更される。具体的にはリカバリ処理部533は、各スライスを管理しているディスクノードに対してメタデータ変更要求を送信することで、ディスクノード内のメタデータを変更する。また、リカバリ処理部533は、論理ディスクメタデータテーブル541内のリカバリ対象のスライスとリザーブ化対象のスライスとのそれぞれのメタデータを変更する。
[ステップS69]リカバリ処理部533は、プライマリスライスのデータのリザーブスライスへのコピーを指示するスライスコピー要求を、シングルプライマリスライスを管理しているディスクノードに送信する。コピーが完了すると、ディスクノードからスライスコピー完了の応答が返される。
[ステップS70]リカバリ処理部533は、リカバリ対象のスライスにペア相手のスライスを設定するメタデータの変更を行う。またリカバリ処理部533は、リザーブ化したスライスをセカンダリ化するメタデータの変更を行う。具体的には、リカバリ処理部533は、プライマリスライスを管理しているディスクノードに対して、ペア相手のスライスとしてリザーブスライスを指定したメタデータ変更要求を送信する。また、リカバリ処理部533は、リザーブスライスを管理するディスクノードに対して、リザーブスライスからセカンダリスライスへの変更を指示するメタデータ変更要求を送信する。さらにリカバリ処理部533は、論理ディスクメタデータテーブル541内のプライマリスライスとリザーブスライスとのそれぞれのメタデータを変更する。その後、処理がステップS65に進められる。
[ステップS71]リカバリ処理部533は、シングルプライマリスライスが無くなると、切り離されていないライトエラー発生ディスクノードの有無を判断する。例えばリカバリ処理部533は、エラー記憶部520を参照し、ライトエラー有りのディスクノードがある場合、切り離されていないライトエラー発生ディスクノードがあると判断する。切り離されていないライトエラー発生ディスクノードがある場合、処理がステップS72に進められる。切り離されていないライトエラー発生ディスクノードがない場合、処理が終了する。
[ステップS72]リカバリ処理部533は、切り離されていないライトエラー発生ディスクノードを1台選択し、切り離し対象とする。このとき、リカバリ処理部533は、エラー管理テーブル521から、切り離し対象のディスクノードに対応するレコードを削除する。その後、処理がステップS62に進められる。
このように、リカバリ処理中にディスクノードでライトエラーが発生した場合、そのディスクノードの切り離しは、シングルプライマリスライスがなくなるまで延期される。シングルプライマリスライスがなくなるということは、すべてのセグメントのデータの二重化が復旧されている。シングルプライマリスライスがなくなると、ライトエラーが発生したディスクノードの切り離しと、その切り離しに伴って発生したシングルプライマリスライスの二重化復旧が行われる。
ライトエラーが発生したディスクノードに対して外部からのアクセスがあった場合、アクセス対象のスライスが割り当てられたセグメントに関しては、ライトエラーが発生したディスクノードの切り離しを待たずに欠損セグメントに変更される。その結果、アクセス対象のスライスが割り当てられたセグメントに対する二重化復旧処理が実行される。ディスクノードに対する外部からのアクセスには、例えば、アクセスノード600からのリードまたはライトのアクセス要求、他のディスクノードからのミラーライト要求、リカバリ処理中のスライスデータコピー時のスライスコピー要求または書き込み要求などがある。ライトエラーが発生したディスクノードに対して外部からアクセスがあると、アクセス対象のスライスが制御ノード500に通知されることとなる。
ただし、ライトエラーが発生したディスクノードが管理するデータに対する外部からのアクセスであっても、制御ノード500からのデータリードのアクセスに関しては、その要求に従ってディスクノードでデータリードのアクセス処理が実行される。例えば、リカバリ処理やスライス割当処理におけるスライスコピー要求が、ライトエラーが発生したディスクノードに出された場合、そのディスクノードはスライスコピーのコピー元となる。コピー元はコピー対象のスライスのデータを読み出せればよいため、ライトエラーが発生したディスクノードでも実行可能である。
ディスクノードに対してどのようなアクセスが行われたのかによって、アクセス対象のスライスを制御ノード500に通知する手順が異なる。以下、アクセス対象のスライスを制御ノード500に通知する手順について説明する。
図17は、ライトエラーが発生したディスクノードへのアクセス要求時の処理手順を示すシーケンス図である。以下、図17に示す処理をステップ番号に沿って説明する。なお図17の例では、ディスクノード100ではライトエラーの発生を示すエラー情報が記憶されているものとする。また、制御ノード500のリカバリ処理部533はリカバリ処理を実行中であるものとする。
[ステップS81]アクセスノード600のアクセス要求部630は、端末装置からの要求に応じてディスクノード100にリードまたはライトのアクセス要求を送信する。
[ステップS82]アクセスノード600からのアクセス要求は、ディスクノード100のアクセス処理部120で受け取られる。アクセス処理部120は、エラー記憶部140を参照し、ライトエラーが発生していることを認識する。そして、アクセス処理部120は、アクセスノード600に対してエラー応答を送信する。この処理の詳細は後述する(図18参照)。
[ステップS83]エラー応答を受信したアクセスノード600のアクセス要求部630は、メタデータ照会部610にメタデータの照会を依頼する。メタデータ照会部610は、アクセス要求のアクセス対象であったセグメントを指定して、該当セグメントのメタデータ照会要求を制御ノード500に送信する。
[ステップS84]制御ノード500では、スライス割当処理部532がメタデータ照会要求を受け取る。スライス割当処理部532は、メタデータ照会要求を受信したことで、受信したメタデータ照会要求で示されたセグメントのプライマリスライスへのアクセスがエラーとなったことを認識する。またスライス割当処理部532はエラー記憶部520を参照し、エラーとなったスライスが、ライトエラーが検出されたディスクノード100で管理されているスライスであることを認識する。そこで、スライス割当処理部532は、スライス割当処理を実行する。なお図17の例では、ディスクノード200が管理しているスライスが、メタデータ照会要求で指定されたセグメントのプライマリスライスとして割り当てられたものとする。スライス割当処理の詳細は後述する(図22参照)。
スライス割当処理が完了すると、スライス割当処理部532はメタデータ照会要求への応答として、メタデータ照会要求で指定されたセグメントのプライマリスライスのメタデータをアクセスノード600に送信する。
[ステップS85]アクセスノード600のアクセス要求部630は、取得したメタデータに従って、アクセスをリトライする。例えばアクセス要求部630は、取得したメタデータをアクセス用メタデータ記憶部620に格納する。またアクセス要求部630は、取得したメタデータに基づいて、アクセス対象のセグメントに割り当てられたスライスを判断し、該当スライスを管理しているディスクノードに対してアクセス要求を送信する。図17の例では、ディスクノード200に対してアクセス要求を送信する。
[ステップS86]ディスクノード200のアクセス処理部220は、アクセス要求に応じてストレージ装置210へデータアクセスを行う。そしてアクセス処理部220は、アクセス結果をアクセスノード600に応答する。
次に、アクセスノード600からのアクセス要求に応じたディスクノードにおけるアクセス処理手順について詳細に説明する。
図18は、アクセス処理手順の一例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS91]ディスクノード100のアクセス処理部120は、アクセスノード600からのデータリードまたはデータライトのアクセス要求を受信する。
[ステップS92]アクセス処理部120は、エラー記憶部140を参照し、ライトエラーの有無を判断する。ライトエラーがある場合、処理がステップS93に進められる。ライトエラーがなければ、処理がステップS94に進められる。
[ステップS93]アクセス処理部120は、ライトエラーがある場合、アクセスノード600に対してエラーを通知する。その後、アクセス処理が終了する。
[ステップS94]アクセス処理部120は、ライトエラーがない場合、ストレージ装置110に対して、アクセス要求に応じたデータリードまたはデータライトのアクセスを行う。アクセス処理部120は、ストレージ装置110へのアクセスの結果を、アクセスノード600に応答する。例えばデータリードのアクセスであれば、アクセス処理部120は、読み出したデータをアクセスノード600に送信する。またデータライトのアクセスであれば、アクセス処理部120は、書き込み完了の応答メッセージをアクセスノード600に送信する。その後、アクセス処理が終了する。
このようにして、アクセス要求に応じてディスクノード100でデータアクセスが実行される。
ディスクノード100へのアクセスは、アクセスノード600からのアクセス要求以外に、他のディスクノードからミラーライトのアクセスがある。以下、ミラーライト処理の手順について説明する。
図19は、ライトエラーが発生したディスクノードへのミラーライト処理の手順を示すシーケンス図である。以下、図19に示す処理をステップ番号に沿って説明する。図19の例では、ディスクノード300がプライマリスライスを管理しており、ディスクノード100がセカンダリスライスを管理しているセグメントに関して、アクセスノード600がデータライトのアクセス要求を出力した場合を想定している。
[ステップS101]アクセスノード600のアクセス要求部630は、ディスクノード300に対してデータライトのアクセス要求を送信する。
[ステップS102]ディスクノード300のアクセス処理部320は、データライトのアクセス要求を受け取ると、ストレージ装置310にデータを書き込む。またアクセス処理部320は、セカンダリスライスを管理しているディスクノード100に対してデータのミラーライト要求を送信する。
[ステップS103]ディスクノード100のアクセス処理部120は、ミラーライト要求を受け取ると、ライトエラーの有無を判断する。図19の例では、すでにディスクノード100においてライトエラーが発生している。アクセス処理部120は、ライトエラーがある場合、ミラーライトエラーをディスクノード300に応答する。
[ステップS104]ディスクノード300のアクセス処理部320は、ディスクノード100からのミラーライト応答を受け取ると、ライトエラーを示すエラーメッセージをアクセスノード600に送信する。
[ステップS105]エラー応答を受信したアクセスノード600のアクセス要求部630は、メタデータ照会部610にメタデータの照会を依頼する。メタデータ照会部610は、アクセス要求のアクセス対象であったセグメントを指定して、該当セグメントのメタデータ照会要求を制御ノード500に送信する。
[ステップS106]制御ノード500のスライス割当処理部532は、メタデータ照会要求に応答し、スライス割り当て処理を行う。ステップS106およびその後の処理は、図17のステップS84〜S86と同様である。
このようにして、ライトエラーが発生したディスクノードへのミラーライトがエラーとなり、アクセスノード600からメタデータ照会要求が送信される。制御ノード500では、メタデータ照会要求に応答して、アクセス対象のセグメントに割り当てられたスライスが調査され、ライト要求のアクセス先であったスライスの割り当てが解除される。
ライトエラーが発生したディスクノード100への他のディスクノードからのアクセスとしては、スライスコピーがある。例えばリカバリ処理によりディスクノード100が管理するスライスをリザーブスライスとしていた場合、プライマリスライスのデータがリザーブスライスにコピーされる。このようなスライス全体のデータのコピー処理が、スライスコピーである。ディスクノード100をコピー先としてスライスコピーを実行している最中にディスクノード100でライトエラーが発生する場合もある。そのような場合、スライスコピーがエラーとなる。
図20は、ライトエラーが発生したディスクノードへのスライスコピー処理時の処理手順を示すシーケンス図である。以下、図20の処理をステップ番号に沿って説明する。
[ステップS111]ディスクノード300のアクセス処理部320は、制御ノード500からのスライスコピー要求に応答して、自己の管理するプライマリスライスのデータをリザーブスライスにコピーする。図20の例では、ディスクノード100が管理するスライスがリザーブスライスである。
[ステップS112]ディスクノード100のアクセス処理部120は、ディスクノード300からスライスコピー対象のデータを取得する。このときアクセス処理部120は、ライトエラーの有無を判断する。ライトエラーが発生している場合、アクセス処理部120は、ディスクノード300に対してエラーを応答する。なお、スライスコピー対象のデータ受信時のディスクノード100の処理の詳細は後述する(図21参照)。
[ステップS113]ディスクノード300のアクセス処理部320は、ディスクノード100からのエラー応答を受け取ると、制御ノード500に対してエラーメッセージを送信する。エラーメッセージには、スライスコピーでエラーとなったスライスを管理しているディスクIDや、スライスコピーでエラーとなったスライスのスライスIDが含まれる。
[ステップS114]制御ノード500のスライス割当処理部532は、スライスコピーでエラーとなったスライスが割り当てられていたセグメントのスライス割り当て処理を行う。この処理の詳細は後述する(図23参照)。
このようにして、ライトエラーが発生したディスクノード100へのスライスコピーが行われると、スライスコピーがエラーとなり、制御ノード500でスライス割り当て処理が開始される。
図21は、スライスコピーのデータを受信したディスクノードの処理手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS121]ディスクノード100のアクセス処理部120は、スライスコピー対象のデータを受信する。
[ステップS122]アクセス処理部120は、ライトエラーの記録の有無を判断する。例えばアクセス処理部120は、エラー記憶部140を参照し、ライトエラーの有無を判断する。ライトエラーがある場合、処理がステップS123に進められる。ライトエラーがない場合、処理がステップS124に進められる。
[ステップS123]アクセス処理部120は、スライスコピーによるデータの送信元であるディスクノードに、エラーメッセージを送信する。その後、処理が終了する。
[ステップS124]アクセス処理部120は、受信したデータをストレージ装置110内のスライスコピー先のスライスに書き込む。その後、処理が終了する。
次に、スライス割当処理について詳細に説明する。スライス割当処理は、メタデータ照会要求に応じて実行される場合と、スライスコピー時のエラーメッセージに応じて実行される場合とがある。
図22は、メタデータ照会要求時のスライス割当処理手順の一例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
[ステップS131]制御ノード500のスライス割当処理部532は、アクセスノード600からのメタデータ照会要求を受信する。
[ステップS132]スライス割当処理部532は、メタデータ照会要求で指定されたセグメントを変更対象セグメントとして、変更対象セグメントに割り当てられているスライスを検査する。例えばスライス割当処理部532は、論理ディスクメタデータ記憶部540を参照し、変更対象セグメントに割り当てられているスライスのメタデータを抽出する。そして、スライス割当処理部532は、抽出したメタデータの状態の欄を参照し、スライスの種別を判別する。プライマリスライスとセカンダリスライスとが割り当てられている場合、処理がステップS133に進められる。プライマリスライスとリザーブスライスとが割り当てられている場合、処理がステップS134に進められる。シングルプライマリスライスのみが割り当てられている場合、処理がステップS135に進められる。
[ステップS133]スライス割当処理部532は、プライマリスライスとセカンダリスライスとの割り当て変更処理を実行する。この処理の詳細は後述する(図24参照)。
[ステップS134]スライス割当処理部532は、プライマリスライスとリザーブスライスとの割り当て変更処理を実行する。この処理の詳細は後述する(図26参照)。
[ステップS135]スライス割当処理部532は、シングルプライマリスライスの割り当て変更処理を実行する。この処理の詳細は後述する(図28参照)。
図23は、スライスコピーエラー時のスライス割り当て処理手順の一例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
[ステップS141]制御ノード500のスライス割当処理部532は、ディスクノードからスライスコピーエラーを受信する。
[ステップS142]スライス割当処理部532は、スライスコピー処理が行われたセグメントを変更対象セグメントとして、プライマリスライスとリザーブスライスとの割り当て変更処理を実行する。この処理の詳細は後述する(図26参照)。
次に、セグメントに割り当てられているスライスの種別に応じた割り当て変更処理の手順について詳細に説明する。
図24は、プライマリスライスとセカンダリスライスとが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。
[ステップS151]スライス割当処理部532は、変更対象セグメントに割り当てられている各スライスを管理しているディスクノードでのライトエラーの発生の有無を検査する。例えばスライス割当処理部532は、ステップS132で抽出したメタデータのディスクノードIDの欄を参照し、変更対象セグメントに割り当てられているスライスを管理しているディスクノードを判断する。次に、スライス割当処理部532は、エラー記憶部520を参照し、変更対象セグメントに割り当てられているスライスを管理しているディスクノードにライトエラーが発生している否かを判断する。プライマリスライスとセカンダリスライスとのそれぞれを管理しているディスクノード共にライトエラーが発生していれば、処理がステップS152に進められる。プライマリスライスを管理しているディスクノードのみにライトエラーが発生していれば、処理がステップS155に進められる。セカンダリスライスを管理しているディスクノードのみにライトエラーが発生していれば、処理がステップS156に進められる。
[ステップS152]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとセカンダリスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスとセカンダリスライスとのいずれか一方をフリースライスに変更すると共に、リザーブスライスの新規割り当てを行う。なおライトエラーが発生したディスクノードが管理するスライスは、セグメントへの割り当ては解除される。より詳細には、スライス割当処理部532は、セカンダリスライスを管理しているディスクノードへ、フリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、フリースライスを管理しているディスクノードへ、リザーブスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。なお第2の実施の形態では、セカンダリスライスをフリースライスに変更するものとする。また新規に割り当てられるリザーブスライスを選択する際には、スライス割当処理部532は、エラー記憶部520を参照し、ライトエラーが発生しているディスクノードを判断する。そしてスライス割当処理部532は、エラーが発生していないディスクノードが管理するフリースライスの中から、リザーブスライスとするスライスを選択する。
[ステップS153]スライス割当処理部532は、プライマリスライスからリザーブスライスへのスライスのデータのコピーを、プライマリスライスを管理しているディスクノードに対して指示する。
[ステップS154]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとリザーブスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをフリースライスに変更し、リザーブスライスをシングルプライマリスライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、プライマリスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、リザーブスライスを管理しているディスクノードへ、リザーブスライスからシングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
[ステップS155]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとセカンダリスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをフリースライスに変更すると共に、セカンダリスライスをシングルプライマリスライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、プライマリスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、セカンダリスライスを管理しているディスクノードへ、シングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
[ステップS156]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとセカンダリスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをシングルプライマリスライスに変更すると共に、セカンダリスライスをフリースライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、シングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、セカンダリスライスを管理しているディスクノードへ、セカンダリスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
図25は、プライマリスライスとセカンダリスライスとが割り当てられているセグメントの割り当て変更処理例を示す図である。図25の例では、変更対象セグメントのプライマリスライスをディスクノード100(DP1)が管理しており、変更対象セグメントのセカンダリスライスをディスクノード200(DP2)が管理しているものとする。またディスクノード300(DP3)には、ライトエラーが発生していないものとする。このような状況において、ディスクノード100が管理するプライマリスライス、ディスクノード200が管理するセカンダリスライス、およびディスクノード300が管理するフリースライスに着目する。
図25では、いずれのディスクノードにおいてもライトエラーが検出されていない状態を初期状態としている。変更対象セグメントに割り当てられているスライスを管理しているディスクノード100,200のライトエラーの有無を検査した結果に応じて、メタデータの変更内容が異なる。
両方のディスクノード100,200でライトエラーが発生している場合、各ディスクノード100,200,300の処理は以下の通りである。
ディスクノード100が管理しているプライマリスライス(状態フラグ「P」)は、最初のメタデータ変更では変更されず、スライスコピーのコピー元とされる。スライスコピーが完了後、ディスクノード100が管理しているプライマリスライスは、フリースライス(状態フラグ「F」)に変更される。ディスクノード200が管理しているセカンダリスライス(状態フラグ「S」)は、最初のメタデータ変更でフリースライス(状態フラグ「F」)に変更される。ディスクノード300が管理しているフリースライス(状態フラグ「F」)は、最初のメタデータ変更でリザーブスライス(状態フラグ「R」)に変更され、その後のスライスコピーのコピー先とされる。スライスコピーが完了後、ディスクノード300が管理しているリザーブスライスは、シングルプライマリスライス(状態フラグ「SP」)に変更される。
ディスクノード100のみでライトエラーが発生している場合、各ディスクノード100,200,300の処理は以下の通りである。
ディスクノード100が管理しているプライマリスライス(状態フラグ「P」)は、フリースライス(状態フラグ「F」)に変更される。ディスクノード200が管理しているセカンダリスライス(状態フラグ「S」)は、シングルプライマリスライス(状態フラグ「SP」)に変更される。ディスクノード300が管理しているフリースライス(状態フラグ「F」)は変化しない。
ディスクノード200のみでライトエラーが発生している場合、各ディスクノード100,200,300の処理は以下の通りである。
ディスクノード100が管理しているプライマリスライス(状態フラグ「P」)は、シングルプライマリスライス(状態フラグ「SP」)に変更される。ディスクノード200が管理しているセカンダリスライス(状態フラグ「S」)は、フリースライス(状態フラグ「F」)に変更される。ディスクノード300が管理しているフリースライス(状態フラグ「F」)は変化しない。
図26は、プライマリスライスとリザーブスライスとが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。以下、図26に示す処理をステップ番号に沿って説明する。
[ステップS161]スライス割当処理部532は、変更対象セグメントに割り当てられている各スライスを管理しているディスクノードでのライトエラーの発生の有無を検査する。プライマリスライスとリザーブスライスとのそれぞれを管理しているディスクノード共にライトエラーが発生している場合、およびプライマリスライスを管理しているディスクノードのみにライトエラーが発生している場合、処理がステップS162に進められる。リザーブスライスを管理しているディスクノードのみにライトエラーが発生していれば、処理がステップS165に進められる。
[ステップS162]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとリザーブスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、リザーブスライスをフリースライスに変更し、かつリザーブスライスの新規割り当てを行う。より詳細には、スライス割当処理部532は、リザーブスライスを管理しているディスクノードへ、リザーブスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、フリースライスを管理しているディスクノードへ、フリースライスからリザーブスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。
[ステップS163]スライス割当処理部532は、プライマリスライスからリザーブスライスへのスライスのデータのコピーを、プライマリスライスを管理しているディスクノードに対して指示する。
[ステップS164]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとリザーブスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをフリースライスに変更し、リザーブスライスをシングルプライマリスライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、プライマリスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、リザーブスライスを管理しているディスクノードへ、シングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
[ステップS165]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとリザーブスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをシングルプライマリスライスに変更すると共に、リザーブスライスをフリースライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、シングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、リザーブスライスを管理しているディスクノードへ、リザーブスライスからフリースライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
図27は、プライマリスライスとリザーブスライスとが割り当てられているセグメントの割り当て変更処理例を示す図である。図27の例では、変更対象セグメントのプライマリスライスをディスクノード100(DP1)が管理しており、変更対象セグメントのリザーブスライスをディスクノード200(DP2)が管理しているものとする。またディスクノード300(DP3)には、ライトエラーが発生していないものとする。このような状況において、ディスクノード100が管理するプライマリスライス、ディスクノード200が管理するリザーブスライス、およびディスクノード300が管理するフリースライスに着目する。
図27では、いずれのディスクノードにおいてもライトエラーが検出されていない状態を初期状態としている。変更対象セグメントに割り当てられているスライスを管理しているディスクノード100,200のライトエラーの有無を検査した結果に応じて、メタデータの変更内容が異なる。
両方のディスクノード100,200でライトエラーが発生している場合、各ディスクノード100,200,300の処理は以下の通りである。
ディスクノード100が管理しているプライマリスライスは変更されず、スライスコピーのコピー元とされる。スライスコピーが完了後、ディスクノード100が管理しているプライマリスライスは、フリースライス(状態フラグ「F」)に変更される。ディスクノード200が管理しているリザーブスライス(状態フラグ「R」)は、最初のメタデータ変更でフリースライス(状態フラグ「F」)に変更される。ディスクノード300が管理しているフリースライス(状態フラグ「F」)は、最初のメタデータ変更でリザーブスライス(状態フラグ「R」)に変更され、その後のスライスコピーのコピー先とされる。スライスコピーが完了後、ディスクノード300が管理しているリザーブスライスは、シングルプライマリスライス(状態フラグ「SP」)に変更される。
ディスクノード100のみでライトエラーが発生している場合の処理は、両方のディスクノード100,200でライトエラーが発生している場合と同様である。なお、この場合、ディスクノード200にはライトエラーは発生していないため、ディスクノード200のリザーブスライスを、そのままスライスコピー先とすることもできる。
ディスクノード200のみでライトエラーが発生している場合、各ディスクノード100,200,300の処理は以下の通りである。
ディスクノード100が管理しているプライマリスライス(状態フラグ「P」)は、シングルプライマリスライス(状態フラグ「SP」)に変更される。ディスクノード200が管理しているリザーブスライス(状態フラグ「R」)は、フリースライス(状態フラグ「F」)に変更される。ディスクノード300が管理しているフリースライス(状態フラグ「F」)は変化しない。
図28は、シングルプライマリスライスが割り当てられているセグメントの割り当て変更処理手順の一例を示すフローチャートである。以下、図28に示す処理をステップ番号に沿って説明する。
[ステップS171]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスに関するメタデータを変更する。具体的には、スライス割当処理部532は、シングルプライマリスライスをプライマリスライスに変更し、リザーブスライスの新規割り当てを行う。より詳細には、スライス割当処理部532は、シングルプライマリスライスを管理しているディスクノードへ、プライマリスライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、フリースライスを管理しているディスクノードへ、リザーブスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。
[ステップS172]スライス割当処理部532は、プライマリスライスからリザーブスライスへのスライスのデータのコピーを、プライマリスライスを管理しているディスクノードに対して指示する。
[ステップS173]スライス割当処理部532は、変更対象セグメントに割り当てられているプライマリスライスとリザーブスライスとに関するメタデータを変更する。具体的には、スライス割当処理部532は、プライマリスライスをフリースライスに変更し、リザーブスライスをシングルプライマリスライスに変更する。より詳細には、スライス割当処理部532は、プライマリスライスを管理しているディスクノードへ、フリースライスへの変更を指示するメタデータ変更要求を送信する。またスライス割当処理部532は、リザーブスライスを管理しているディスクノードへ、シングルプライマリスライスへの変更を指示するメタデータ変更要求を送信する。スライス割当処理部532は、各ディスクノードからメタデータ変更完了の応答を受け取ると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノードにおける変更内容と同様に変更する。その後、処理が終了する。
図29は、シングルプライマリスライスが割り当てられているセグメントの割り当て変更処理例を示す図である。図29の例では、変更対象セグメントのシングルプライマリスライスをディスクノード100(DP1)が管理しているものとする。またディスクノード200(DP2)には、ライトエラーが発生していないものとする。このような状況において、ディスクノード100が管理するシングルプライマリスライス、ディスクノード200が管理するフリースライスに着目する。
図29では、いずれのディスクノードにおいてもライトエラーが検出されていない状態を初期状態としている。シングルプライマリスライスのみが割り当てられているセグメントに対してスライスの割り当て処理が実行されるのは、シングルプライマリスライスを管理しているディスクノード100でライトエラーが発生した場合である。その場合、各ディスクノード100,200において以下の処理が行われる。
ディスクノード100が管理しているシングルプライマリスライス(状態フラグ「SP」)は、最初のメタデータ変更ではプライマリスライスに変更され、その後、スライスコピーのコピー元とされる。スライスコピーが完了後、ディスクノード100が管理しているプライマリスライスは、フリースライス(状態フラグ「F」)に変更される。ディスクノード200が管理しているフリースライス(状態フラグ「F」)は、最初のメタデータ変更でリザーブスライス(状態フラグ「R」)に変更され、その後のスライスコピーのコピー先とされる。スライスコピーが完了後、ディスクノード200が管理しているリザーブスライスは、シングルプライマリスライス(状態フラグ「SP」)に変更される。
以上のようなメタデータ割当変更処理により、変更対象セグメントには、ライトエラーが発生していないディスクノードが管理するスライスが、シングルプライマリスライスとして割り当てられる。
次に、スライス割当処理のうち、スライスコピーを伴う処理における制御ノード500とディスクノードとの連係動作について説明する。スライスコピーを伴う処理は、ライトエラーが発生したディスクノードが管理するスライスのセグメントへの割り当てを解除すると、セグメントのデータが失われてしまう場合に行われる。
以下の例では、代表的に、処理対象セグメントに割り当てられているプライマリスライスとセカンダリスライスとのそれぞれを管理するディスクノードの両方でライトエラーが発生している場合の処理について説明する。
図30は、スライスコピーを伴うスライス割当処理手順の一例を示すシーケンス図である。この処理は、例えば図24のステップS151からステップS152に処理が遷移した場合に実行される。以下、図30に示す処理をステップ番号に沿って説明する。
[ステップS181]スライスコピーを伴うスライス割当処理は、リザーブスライスの割り当て処理(ステップS181a)、スライスコピー処理(ステップS181b)、およびシングルプライマリ化処理(ステップS181c)に分かれる。
[ステップS181a]スライス割当処理部532は、各ディスクノード100,200,300に対してメタデータ変更要求を送信する。例えば、ディスクノード100へは、変更対象セグメントのプライマリスライスのペアとなるセカンダリスライスの情報の削除を指示するメタデータ変更要求が送信される。またディスクノード200へは、変更対象セグメントのセカンダリスライスのフリースライスへの変更を指示するメタデータ変更要求が送信される。ディスクノード300へは、フリースライスを変更対象セグメントのリザーブスライスに変更することを指示するメタデータ変更要求が送信される。
[ステップS182]ディスクノード100のメタデータ管理部160は、メタデータ変更要求に応じてメタデータ記憶部150とストレージ装置110とのメタデータを更新し、メタデータ変更完了の応答を制御ノード500に送信する。
[ステップS183]ディスクノード200のメタデータ管理部260は、メタデータ変更要求に応じてメタデータ記憶部とストレージ装置210とのメタデータを更新し、メタデータ変更完了の応答を制御ノード500に送信する。
[ステップS184]ディスクノード300のメタデータ管理部360は、メタデータ変更要求に応じてメタデータ記憶部とストレージ装置310とのメタデータを更新し、メタデータ更新完了の応答を制御ノード500に送信する。
スライス割当処理部532は、ステップS182〜S183のメタデータ更新が完了すると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノード100,200,300で更新されたメタデータと同じ内容に更新する。
[ステップS181b]スライス割当処理部532は、ディスクノード100,200,300からメタデータ更新完了の応答を受け取ると、プライマリスライスを管理しているディスクノード100に対して、スライスコピー要求を送信する。スライスコピー要求には、変更対象セグメントのプライマリスライスのスライスID、リザーブスライスを管理するディスクノードのディスクノードID、およびリザーブスライスのスライスIDが含まれる。
[ステップS185]スライスコピー要求を受信したディスクノード100のアクセス処理部120は、指定されたスライスのペアのスライスを管理するディスクノード300に対して、指定されたスライス内のデータを送信する。データを送信する際には、データの格納先として、スライスコピー要求で指定されたスライスのペアのスライスのスライスIDが指定される。
[ステップS186]ディスクノード300のアクセス処理部320は、ディスクノード100から送られたデータを受信し、指定されたスライスにデータを格納する。アクセス処理部320は、データの格納が完了すると、書き込み完了応答をディスクノード100に送信する。
ディスクノード100のアクセス処理部120は、ディスクノード300からの書き込み完了応答を受け取ると、制御ノード500に対してスライスコピー完了の応答を送信する。
[ステップS181c]制御ノード500のスライス割当処理部532は、ディスクノード100からスライスコピー完了の応答を受け取ると、ディスクノード100に対してプライマリスライスのフリースライス化を指示するメタデータ変更要求を送信する。フリースライス化を指示するメタデータ変更要求には、例えば、変更対象セグメントに割り当てられているプライマリスライスのスライスIDが含まれる。
また、スライス割当処理部532は、ディスクノード100からスライスコピー完了の応答を受け取ると、ディスクノード300に対してリザーブスライスのシングルプライマリ化を指示するメタデータ変更要求を送信する。シングルプライマリ化を指示するメタデータ変更要求には、例えば変更対象セグメントに割り当てられているリザーブスライスのスライスIDが含まれる。
[ステップS187]ディスクノード100のメタデータ管理部160は、プライマリスライスのフリースライスへの変更を指示するメタデータ変更要求に応答して、メタデータ記憶部150とストレージ装置110とのメタデータを更新する。メタデータ管理部160は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
[ステップS188]ディスクノード300のメタデータ管理部360は、リザーブスライスのシングルプライマリスライスへの変更を指示するメタデータ変更要求に応答して、メタデータ記憶部とストレージ装置110とのメタデータを更新する。メタデータ管理部360は、メタデータの更新が完了すると、更新完了応答を制御ノード500に送信する。
なお、スライス割当処理部532は、ステップS187,S188のメタデータ更新が完了すると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノード100,200,300で更新されたメタデータと同じ内容に更新する。
このような手順によって、スライスコピーを伴うスライス割当処理が完了する。次に、スライスコピーを伴わないスライス割当処理における制御ノード500とディスクノードとの連係動作について説明する。
図31は、スライスコピーを伴わないスライス割当処理手順の一例を示すシーケンス図である。この処理は、例えば図24のステップS151からステップS153に処理が遷移した場合に実行される。以下、図31に示す処理をステップ番号に沿って説明する。
[ステップS191]スライス割当処理部532は、各ディスクノード100,200に対してメタデータ変更要求を送信する。例えば、ディスクノード100へは、変更対象セグメントのプライマリスライスのフリースライスへの変更を指示するメタデータ変更要求が送信される。またディスクノード200へは、変更対象セグメントのセカンダリスライスのシングルプライマリスライスへの変更を指示するメタデータ変更要求が送信される。
[ステップS192]ディスクノード100のメタデータ管理部160は、メタデータ変更要求に応じてメタデータ記憶部150とストレージ装置110とのメタデータを更新し、メタデータ変更完了の応答を制御ノード500に送信する。
[ステップS193]ディスクノード200のメタデータ管理部260は、メタデータ変更要求に応じてメタデータ記憶部とストレージ装置210とのメタデータを更新し、メタデータ変更完了の応答を制御ノード500に送信する。
スライス割当処理部532は、ステップS191,S192のメタデータ更新が完了すると、論理ディスクメタデータ記憶部540内のメタデータを、ディスクノード100,200で更新されたメタデータと同じ内容に更新する。
以上説明したように、リカバリ処理中にディスクノードでライトエラーが発生した場合、そのディスクノードでのライトエラーの発生が、ディスクノードと制御ノードとに記録される。そしてリカバリ処理中に、ライトエラーが発生したディスクノードが管理するスライスにアクセスがあった場合、ライトエラーが発生したディスクノードが管理するスライスのセグメントへの割り当て解除によりセグメントのデータが喪失するか否かが判断される。そして、割り当て解除によりセグメントのデータを喪失する場合には、スライスコピー後にアクセスされたスライスの割り当てが解除される。その結果、データの喪失が抑制される。
しかも、ライトエラーが発生したディスクノードが管理するスライスのセグメントへの割り当て解除によりセグメントのデータが喪失しない場合であっても、ペアとなるスライスをシングルプライマリスライスにすることで、リカバリ処理の対象となる。従って、ライトエラーが発生したディスクノードが管理するスライスのうち、アクセスがあったスライスは優先的にリカバリ処理が実行されることとなる。
またリカバリ処理中にライトエラーが発生したディスクノードで管理されるスライスにアクセスがあると、アクセスされたスライスのセグメントへの割り当てが解除される。割り当てが解除されたセグメントは、シングルプライマリのみが割り当てられた欠損セグメントに変更される。一方、図16に示すように、リカバリ処理中はシングルプライマリスライスが順次選択され、二重化が復旧される。従って、欠損セグメントに変更されたセグメントは、リカバリ処理によって二重化状態が復旧される。その結果、マルチノードストレージシステムの信頼性が向上する。
ところで第2の実施の形態では、ライトエラーが発生したディスクノードのメタデータ割当処理の対象となったスライスは、メタデータ割当処理後にフリースライス(状態フラグ「F」)に変更している。フリースライスであっても、リカバリ処理およびスライス割当処理のいずれにおいても、ライトエラーが発生したディスクノード内のスライスがデータのコピー先(リザーブスライス)として選択されることはない。また、メタデータ割当処理後には、アクセスノード600に新たなメタデータが送信される(図17参照)。これにより、ライトエラーが発生したディスクノード内のメタデータ割当処理の対象となったスライスが、アクセスノード600からのアクセス対象となることもなくなる。その結果、ライトエラーが発生したディスクノード内のメタデータ割当処理の対象となったスライスは、マルチノードストレージシステム内でのアクセス対象から除外される。すなわち、メタデータ割当処理の対象となったスライスが切り離される。そして、アクセスノード600は、コピー先のスライスに対してアクセスを行うことができる。
なおライトエラーが発生したディスクノードのメタデータ割当処理の対象となったスライスは、メタデータ割当処理後に異常スライス(状態フラグ「B」)に変更してもよい。
また第2の実施の形態では、各ディスクノードに1台ずつのストレージ装置を接続しているため、ストレージ装置が故障するとディスクノードの切り離しが行われている。1台のディスクノードに複数のストレージ装置が接続されている場合には、ストレージ装置ごとに個別に切り離しを行うことができる。
さらにライトエラーが発生したディスクノードにおいて、アクセスノード600からのデータリードのアクセス要求に対しては、要求に従ったストレージ装置へのアクセスを行い、リードしたデータをアクセスノード600に応答するようにしてもよい。すなわち第2の実施の形態では、ライトエラーが発生したディスクノードは、制御ノード500からのスライスコピー要求に対しては、ストレージ装置に対するスライス内のデータリードを行い、コピー先に転送する。その一方で、ライトエラーが発生したディスクノードは、アクセスノード600からのアクセス要求に対しては、リード要求であってもエラー応答を送信している。これは、アクセスがあったセグメントを欠損セグメントに変更し、リカバリ処理による二重化復旧を早期に行うためである。しかし、ライトエラーが発生していてもデータのリードは可能な場合がある。そこで、アクセスノード600への早期のデータ応答を優先する場合、ライトエラーが発生したディスクノードは、アクセス要求のうちリード要求に対してはストレージ装置へのリードアクセスを実行し、読み出したデータを応答してもよい。これにより、アクセスノード600は、スライス割当処理の完了を待たずにアクセス対象のデータを取得可能となる。
〔その他の応用例〕
上記の処理機能は、コンピュータによって実現することができる。その場合、データ割当制御装置1、制御ノード500、ディスクノード100,200,300,400が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示を、コンピュータに実行させるデータ割当制御プログラムにおいて、
前記コンピュータに、
複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行い、
前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納し、
前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示する、
処理を実行させることを特徴とするデータ割当制御プログラム。
(付記2) 前記二重化復旧処理では、二重化欠損データを順次選択し、選択した二重化欠損データを管理するディスクノードに対し、選択した二重化欠損データが格納されているストレージ装置と異なるストレージ装置であり、かつライトエラーが発生していないストレージ装置への、選択した二重化欠損データのコピーを指示することを特徴とする付記1記載のデータ割当制御プログラム。
(付記3) 前記二重化復旧処理では、前記複数のストレージ装置内の二重化欠損データを調査し、二重化欠損データの格納場所を示す管理情報を管理情報記憶手段に格納し、前記管理情報記憶手段内の管理情報に示される二重化欠損データを順次選択して、選択した二重化欠損データを管理するディスクノードに対して選択した二重化欠損データのコピーを指示し、
前記コピー対象データのコピー指示の際には、前記コピー対象データのコピーが完了すると、コピー先のデータの管理情報を二重化欠損データとして前記管理情報記憶手段に格納する、
ことを特徴とする付記1記載のデータ割当制御プログラム。
(付記4) 前記二重化復旧処理では、前記管理情報記憶手段内の管理情報で示されるすべての二重化欠損データのコピーが完了すると前記エラー記憶手段を参照してライトエラーが発生したストレージ装置の有無を判断し、ライトエラーが発生したストレージ装置がある場合、ライトエラーが発生したストレージ装置へのアクセスを停止することにより生じる二重化欠損データの管理情報を前記管理情報記憶手段に追加し、二重化復旧処理を続行する、
ことを特徴とする付記3記載のデータ割当制御プログラム。
(付記5) 前記コピー対象データのコピー指示では、ライトエラーが発生しているストレージ装置内のデータに対するアクセスで発生したエラーを示すデータアクセスエラー情報を受け取ると、エラー発生時のアクセス対象となっていたデータをコピー対象データとし、前記コピー対象データのコピーが完了すると、コピー先のデータの管理情報を、新たなアクセス先として前記データアクセスエラー情報を送信した装置に応答することを特徴とする付記1記載のデータ割当制御プログラム。
(付記6) 前記二重化復旧処理中以外の期間に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置へのアクセスを停止することにより生じる二重化欠損データの二重化復旧処理を開始することを特徴とする付記1記載のデータ割当制御プログラム。
(付記7) 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示をコンピュータで実行するデータ割当制御方法において、
前記コンピュータが、
複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行い、
前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納し、
前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示する、
ことを特徴とするデータ割当制御方法。
(付記8) 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示を行うデータ割当制御装置において、
複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行う二重化復旧処理手段と、
前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納するエラー情報受信手段と、
前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示するコピー指示手段と、
を有することを特徴とするデータ割当制御装置。
1 データ割当制御装置
1a 二重化復旧手段
1b 管理情報記憶手段
1c エラー情報受信手段
1d エラー記憶手段
1e コピー指示手段
2〜5 ディスクノード
2a,3a,4a,5a ストレージ装置
6 アクセスノード

Claims (7)

  1. 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示を、コンピュータに実行させるデータ割当制御プログラムにおいて、
    前記コンピュータに、
    複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行い、
    前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納し、
    前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示する、
    処理を実行させることを特徴とするデータ割当制御プログラム。
  2. 前記二重化復旧処理では、二重化欠損データを順次選択し、選択した二重化欠損データを管理するディスクノードに対し、選択した二重化欠損データが格納されているストレージ装置と異なるストレージ装置であり、かつライトエラーが発生していないストレージ装置への、選択した二重化欠損データのコピーを指示することを特徴とする請求項1記載のデータ割当制御プログラム。
  3. 前記二重化復旧処理では、前記複数のストレージ装置内の二重化欠損データを調査し、二重化欠損データの格納場所を示す管理情報を管理情報記憶手段に格納し、前記管理情報記憶手段内の管理情報に示される二重化欠損データを順次選択して、選択した二重化欠損データを管理するディスクノードに対して選択した二重化欠損データのコピーを指示し、
    前記コピー対象データのコピー指示の際には、前記コピー対象データのコピーが完了すると、コピー先のデータの管理情報を二重化欠損データとして前記管理情報記憶手段に格納する、
    ことを特徴とする請求項1記載のデータ割当制御プログラム。
  4. 前記二重化復旧処理では、前記管理情報記憶手段内の管理情報で示されるすべての二重化欠損データのコピーが完了すると前記エラー記憶手段を参照してライトエラーが発生したストレージ装置の有無を判断し、ライトエラーが発生したストレージ装置がある場合、ライトエラーが発生したストレージ装置へのアクセスを停止することにより生じる二重化欠損データの管理情報を前記管理情報記憶手段に追加し、二重化復旧処理を続行する、
    ことを特徴とする請求項3記載のデータ割当制御プログラム。
  5. 前記コピー対象データのコピー指示では、ライトエラーが発生しているストレージ装置内のデータに対するアクセスで発生したエラーを示すデータアクセスエラー情報を受け取ると、エラー発生時のアクセス対象となっていたデータをコピー対象データとし、前記コピー対象データのコピーが完了すると、コピー先のデータの管理情報を、新たなアクセス先として前記データアクセスエラー情報を送信した装置に応答することを特徴とする請求項1記載のデータ割当制御プログラム。
  6. 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示をコンピュータで実行するデータ割当制御方法において、
    前記コンピュータが、
    複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行い、
    前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納し、
    前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示する、
    ことを特徴とするデータ割当制御方法。
  7. 接続されたストレージ装置内のデータを管理する複数のディスクノードに対する管理対象データの割り当て指示を行うデータ割当制御装置において、
    複数のストレージ装置に格納されたデータのうち同一内容の冗長データが存在しない二重化欠損データのコピーを、二重化欠損データを管理するディスクノードに指示する二重化復旧処理を行う二重化復旧処理手段と、
    前記二重化復旧処理中に、ストレージ装置に対するデータのライトエラーを示すライトエラー情報を受け取ると、ライトエラーが発生したストレージ装置の識別情報をエラー記憶手段に格納するエラー情報受信手段と、
    前記エラー記憶手段を参照してライトエラーが発生したストレージ装置を判断し、ライトエラーが発生したストレージ装置に格納されているデータをコピー対象データとし、ライトエラーが発生していないストレージ装置内に前記コピー対象データの冗長データが存在しない場合、前記コピー対象データを管理するディスクノードに対して、ライトエラーが発生していないストレージ装置への前記コピー対象データのコピーを指示するコピー指示手段と、
    を有することを特徴とするデータ割当制御装置。
JP2009287068A 2009-12-18 2009-12-18 データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置 Pending JP2011128917A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009287068A JP2011128917A (ja) 2009-12-18 2009-12-18 データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置
US12/966,713 US8433947B2 (en) 2009-12-18 2010-12-13 Computer program, method, and apparatus for controlling data allocation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009287068A JP2011128917A (ja) 2009-12-18 2009-12-18 データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置

Publications (1)

Publication Number Publication Date
JP2011128917A true JP2011128917A (ja) 2011-06-30

Family

ID=44291448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009287068A Pending JP2011128917A (ja) 2009-12-18 2009-12-18 データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置

Country Status (2)

Country Link
US (1) US8433947B2 (ja)
JP (1) JP2011128917A (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843783B2 (en) * 2006-03-31 2014-09-23 Emc Corporation Failover to backup site in connection with triangular asynchronous replication
US8589724B2 (en) * 2011-06-30 2013-11-19 Seagate Technology Llc Rapid rebuild of a data set
US9256526B2 (en) * 2012-02-23 2016-02-09 National Taiwan University Flash memory storage system and access method
US9553860B2 (en) 2012-04-27 2017-01-24 Intralinks, Inc. Email effectivity facility in a networked secure collaborative exchange environment
GB2504956A (en) * 2012-08-14 2014-02-19 Ibm Management of RAID error recovery procedures and configuration
JP2014056445A (ja) * 2012-09-12 2014-03-27 Fujitsu Ltd ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
US9794337B2 (en) * 2012-10-30 2017-10-17 International Business Machines Corporation Balancing storage node utilization of a dispersed storage network
US8984333B2 (en) * 2013-01-11 2015-03-17 International Business Machines Corporation Automatic computer storage medium diagnostics
US9236085B1 (en) * 2013-02-28 2016-01-12 Western Digital Technologies, Inc. Method and apparatus for performing a defect process on a data storage device
US9317382B2 (en) 2013-05-21 2016-04-19 International Business Machines Corporation Storage device with error recovery indication
CN103617096A (zh) * 2013-11-04 2014-03-05 华为技术有限公司 一种存储数据的复制方法、设备及系统
EP3080742A4 (en) * 2013-12-11 2017-08-30 Intralinks, Inc. Customizable secure data exchange environment
EP3358466B1 (en) 2013-12-12 2019-11-13 Huawei Technologies Co., Ltd. Data replication method and storage system
US9298555B1 (en) * 2013-12-27 2016-03-29 Emc Corporation Managing recovery of file systems
US10528429B1 (en) * 2014-03-31 2020-01-07 EMC IP Holding Company LLC Managing recovery of file systems
US9613190B2 (en) 2014-04-23 2017-04-04 Intralinks, Inc. Systems and methods of secure data exchange
US9612924B1 (en) * 2014-06-25 2017-04-04 Amazon Technologies, Inc. Fault tolerance in a distributed file system
JP2016127390A (ja) * 2014-12-26 2016-07-11 富士通株式会社 情報処理システム、情報処理システムの制御方法、管理装置の制御プログラム
US10911535B1 (en) * 2015-09-18 2021-02-02 Amazon Technologies, Inc. Object ownership migration
US10484249B1 (en) 2015-09-18 2019-11-19 Amazon Technologies, Inc. Dynamic distribution of simulation load
US10298679B1 (en) 2015-09-18 2019-05-21 Amazon Technologies, Inc. Object ownership migration
US10230583B1 (en) 2015-09-18 2019-03-12 Amazon Technologies, Inc. Multi-node object simulation
US10506031B1 (en) 2015-09-18 2019-12-10 Amazon Technologies, Inc. Scalable network for processing virtual environments
US10104173B1 (en) 2015-09-18 2018-10-16 Amazon Technologies, Inc. Object subscription rule propagation
CN113535073B (zh) * 2020-04-22 2024-04-16 伊姆西Ip控股有限责任公司 管理存储单元的方法、电子设备和计算机可读存储介质
CN113590018A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
KR20220090020A (ko) * 2020-12-22 2022-06-29 에스케이하이닉스 주식회사 비휘발성 메모리 시스템이 생성한 메타데이터를 전송하는 장치 및 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282106A (ja) * 1996-04-16 1997-10-31 Pfu Ltd 二重化磁気ディスク装置の復旧方法
JP2003223286A (ja) * 2002-01-31 2003-08-08 Ansona Corp ストレージシステムおよびストレージ装置
WO2004104845A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited ストレージシステム
JP2006164304A (ja) * 2006-01-20 2006-06-22 Hitachi Ltd ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法
JP2006252126A (ja) * 2005-03-10 2006-09-21 Nec Corp ディスクアレイ装置及びその再構築方法
JP2008250458A (ja) * 2007-03-29 2008-10-16 Hitachi Ltd ストレージシステム及びストレージシステムの管理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122338A (ja) 2003-10-15 2005-05-12 Hitachi Ltd スペアディスクドライブをもつディスクアレイ装置及びデータスペアリング方法
JP4296120B2 (ja) 2004-04-09 2009-07-15 富士通株式会社 冗長構成復元方法、データ管理システム及び冗長構成復元プログラム
JP4303187B2 (ja) * 2004-11-10 2009-07-29 富士通株式会社 プログラム、記憶制御方法及び記憶装置
JP4499776B2 (ja) * 2007-10-31 2010-07-07 富士通株式会社 ストレージ制御装置、方法、及びプログラム
US8484506B2 (en) * 2008-11-29 2013-07-09 Lsi Corporation Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282106A (ja) * 1996-04-16 1997-10-31 Pfu Ltd 二重化磁気ディスク装置の復旧方法
JP2003223286A (ja) * 2002-01-31 2003-08-08 Ansona Corp ストレージシステムおよびストレージ装置
WO2004104845A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited ストレージシステム
JP2006252126A (ja) * 2005-03-10 2006-09-21 Nec Corp ディスクアレイ装置及びその再構築方法
JP2006164304A (ja) * 2006-01-20 2006-06-22 Hitachi Ltd ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法
JP2008250458A (ja) * 2007-03-29 2008-10-16 Hitachi Ltd ストレージシステム及びストレージシステムの管理方法

Also Published As

Publication number Publication date
US8433947B2 (en) 2013-04-30
US20110191628A1 (en) 2011-08-04

Similar Documents

Publication Publication Date Title
JP2011128917A (ja) データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置
JP5412882B2 (ja) 論理ボリューム構成情報提供プログラム、論理ボリューム構成情報提供方法、および論理ボリューム構成情報提供装置
US8458398B2 (en) Computer-readable medium storing data management program, computer-readable medium storing storage diagnosis program, and multinode storage system
JP5217967B2 (ja) 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム
JP5396836B2 (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
JP4480756B2 (ja) ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラム、データ記憶システムおよびデータ記憶方法
JP5218284B2 (ja) 仮想ディスク管理プログラム、ストレージ装置管理プログラム、マルチノードストレージシステム、および仮想ディスク管理方法
JP2005196683A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP2005242403A (ja) 計算機システム
JP2005165618A (ja) ストレージシステムの制御方法、ストレージシステム、及び記憶装置
JP5699852B2 (ja) 情報処理装置、ストレージ制御方法およびプログラム
JP2005326935A (ja) 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法
JP2005018510A (ja) データセンタシステム及びその制御方法
JP6237406B2 (ja) 情報処理装置、ストレージシステム、およびプログラム
JP2008299481A (ja) ストレージシステム及び複数拠点間でのデータコピー方法
JP5348300B2 (ja) データ管理プログラム、およびマルチノードストレージシステム
JP6569476B2 (ja) ストレージ装置、ストレージシステムおよびストレージ制御プログラム
JP5884606B2 (ja) ストレージ管理方法、システム、およびプログラム
JP5640480B2 (ja) データ管理プログラム、ストレージシステム、およびデータ管理方法
JP6665892B2 (ja) 情報処理システム,情報処理装置および制御プログラム
JP5195213B2 (ja) アップデート制御プログラム、アップデート制御装置、およびアップデート制御方法
JP5309816B2 (ja) データ管理プログラム、データ管理装置、およびデータ管理方法
JP5924117B2 (ja) コンピュータ、データ格納方法、データ格納プログラム及び情報処理システム
JPWO2008126169A1 (ja) ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130522

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130924