JP5699852B2 - 情報処理装置、ストレージ制御方法およびプログラム - Google Patents

情報処理装置、ストレージ制御方法およびプログラム Download PDF

Info

Publication number
JP5699852B2
JP5699852B2 JP2011176567A JP2011176567A JP5699852B2 JP 5699852 B2 JP5699852 B2 JP 5699852B2 JP 2011176567 A JP2011176567 A JP 2011176567A JP 2011176567 A JP2011176567 A JP 2011176567A JP 5699852 B2 JP5699852 B2 JP 5699852B2
Authority
JP
Japan
Prior art keywords
data
node
storage
storage area
information processing
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
JP2011176567A
Other languages
English (en)
Other versions
JP2013041353A (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 JP2011176567A priority Critical patent/JP5699852B2/ja
Priority to US13/562,748 priority patent/US8825968B2/en
Publication of JP2013041353A publication Critical patent/JP2013041353A/ja
Application granted granted Critical
Publication of JP5699852B2 publication Critical patent/JP5699852B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/2071Error 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 using a plurality of controllers
    • G06F11/2076Synchronous techniques
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は情報処理装置、ストレージ制御方法およびプログラムに関する。
現在、HDD(Hard Disk Drive)などの記憶装置を用いてデータを保存するストレージシステムが利用されている。ストレージシステムの中には、記憶装置を備えた複数の物理的ノード(ストレージノードと呼ぶことがある)を有し、ストレージノード間をネットワークで接続したものがある。ストレージノードとして、コンピュータを用いてもよい。ストレージシステムは、同一内容のデータを異なるストレージノードに保存することで、データを冗長化し耐故障性を向上させることができる。その場合、あるストレージノード上のデータと当該データに対応する他のストレージノード上のデータとは、データが更新された後も、内容が整合している(同期している)ことが好ましい。
なお、ローカルストレージと複数のリモートストレージを備え、タイムスタンプ付きビットマップを用いてストレージ間で同期をとるシステムが提案されている。また、ホストが正ストレージと副ストレージの両方にデータを書き込むシステムで、障害が発生したとき、ホストを経由せずにストレージ間でデータ更新履歴(ジャーナル)を伝送して同期をとるシステムが提案されている。また、複数の通信線(物理パス)を用いてストレージ間で複数の論理ボリュームを複製するとき、管理コンピュータが、物理パスと論理ボリュームの関係を管理し、物理パスの障害の影響を特定するシステムが提案されている。
特開2004−272884号公報 特開2007−86972号公報 特開2010−113559号公報
ところで、データの冗長化のため、第1のストレージノードに対してデータの書き込み(上書きとなる場合を含む)が要求されたときに、第1のストレージノードに加えて第2のストレージノードにもデータを書き込むストレージシステムを考える。書き込み要求を受け付けた第1のストレージノードは、第2のストレージノードで書き込みが成功したことを確認してから、自ノードの書き込みを行う方法が考えられる。
しかし、データ書き込みのシーケンスの途中でストレージノード間のネットワークに障害が発生すると、第1のストレージノードが、第2のストレージノードで書き込みが成功したか否かわからないという状況が生じ得る。その結果、第1のストレージノードと第2のストレージノードとの間で、データの整合性が失われる可能性がある。例えば、第1のストレージノードが第2のストレージノードに書き込み要求を転送した後、第2のストレージノードが書き込み成功の応答を送信する前に、ネットワーク障害が発生する場合が考えられる。その場合、第2のストレージノードで書き込みが成功していても、第1のストレージノードは、応答を受信しないため書き込み失敗として取り扱う可能性がある。
1つの側面では、本発明は、ストレージステムにおけるデータの整合性を回復できる情報処理装置、ストレージ制御方法およびプログラムを提供することを目的とする。
記憶手段と要求手段と書込手段と同期手段とを有する情報処理装置が提供される。記憶手段は、第1の記憶領域を含む。要求手段は、第1の記憶領域に対するデータの書き込み要求が取得されると、他の情報処理装置にデータの書き込みを要求する。書込手段は、他の情報処理装置が備える他の記憶手段の、第1の記憶領域に対応する第2の記憶領域に対して、データの書き込みが正常に行われたことを、他の情報処理装置からの応答に基づいて検出した場合、第1の記憶領域に対してデータの書き込みを行い、他の情報処理装置から応答が受信されない場合、第1の記憶領域に対してデータの書き込みを行わない。同期手段は、他の情報処理装置から応答が受信されない場合に、データの書き込みを行わなかった第1の記憶領域に記憶されているデータを、他の情報処理装置に送信して第2の記憶領域に書き込ませる。
また、データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードが実行するストレージ制御方法が提供される。ストレージ制御方法では、自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードにデータの書き込みを要求する。他のノードが備える記憶手段の、第1の記憶領域に対応する第2の記憶領域に対して、データの書き込みが正常に行われたことを、他のノードからの応答に基づいて検出した場合、第1の記憶領域に対してデータの書き込みを行う。他のノードから応答が受信されない場合、第1の記憶領域に対してデータの書き込みを行わない。データの書き込みを行わなかった第1の記憶領域に記憶されているデータを、他のノードに送信して第2の記憶領域に書き込ませる。
また、データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードに、ストレージ制御方法を実行させるプログラムが提供される。
ストレージステムにおけるデータの整合性を回復できる。
第1の実施の形態のストレージシステムを示す図である。 第2の実施の形態のストレージシステムを示す図である。 ストレージノードのハードウェア例を示すブロック図である。 第2の実施の形態のソフトウェア例を示すブロック図である。 アクセス処理の例を示すフローチャートである。 同期処理の例を示すフローチャートである。 同期処理の他の例を示すフローチャートである。 データアクセスのシーケンス例を示す図である。 同期状態の第1の変化例を示す図である。 データアクセスのシーケンス例(続き)を示す図である。 同期状態の第2の変化例を示す図である。 ノード設定変更のシーケンス例を示す図である。 同期状態の第3の変化例を示す図である。 第3の実施の形態のソフトウェア例を示す図である。 同期パトロールのシーケンス例を示す図である。 第4の実施の形態のデータ構造例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。第1の実施の形態のストレージシステムは、情報処理装置10,20を有する。情報処理装置10と情報処理装置20とは、ネットワークで接続されている。情報処理装置10,20は、CPU(Central Processing Unit)やRAM(Random Access Memory)を備えるコンピュータであってもよい。情報処理装置10,20を、ストレージノードと呼んでもよい。
情報処理装置10は、記憶手段11、要求手段12、書込手段13および同期手段14を有する。情報処理装置20は、記憶手段21を有する。記憶手段11,21は、RAMなどの揮発性の記憶装置でもよく、HDDやSSD(Solid State Drive)などの不揮発性の記憶装置でもよい。要求手段12、書込手段13および同期手段14の全部または一部は、RAMに記憶されCPUにより実行されるプログラムとして実装してもよく、ASIC(Application Specific Integrated Circuit)などの回路として実装してもよい。
記憶手段11,21は、データを記憶する。記憶手段11は、記憶領域11aを含む。記憶手段21は、記憶手段11の記憶領域11aに対応する記憶領域21aを含む。例えば、記憶領域11aと記憶領域21aには、各記憶手段内で同一のアドレスが付与されている。情報処理装置10,20の間でデータの整合性が維持されているとき、例えば、記憶領域11aと記憶領域21aに同一内容のデータが記憶される。
要求手段12は、記憶領域11aに対するデータの書き込み要求が取得されると、ネットワークを介して、情報処理装置20にデータの書き込みを要求する。記憶領域11aに対する書き込み要求は、例えば、図示しない他の情報処理装置(例えば、クライアントコンピュータ)からネットワークを介して受信される。取得する書き込み要求は、例えば、記憶領域11aに書き込むデータと、記憶領域11aの先頭位置を示すオフセットおよびデータサイズの情報とを含む。情報処理装置20への要求は、例えば、取得した書き込み要求に含まれるデータと、記憶領域21aの先頭位置を示すオフセット(記憶領域11aのオフセットと同一でもよい)およびデータサイズの情報とを含む。
情報処理装置20は、情報処理装置10からデータの書き込みが要求されると、記憶領域11aに対応する記憶領域21aにデータを書き込む。そして、情報処理装置20は、データの書き込みが正常に行われたことを情報処理装置10に応答する。ただし、データ書き込みのシーケンスの途中で、ネットワーク障害が発生する可能性がある。情報処理装置10がデータの書き込みを要求した時点でネットワーク障害が発生している場合、要求が情報処理装置20に到達せず、記憶領域21aへのデータ書き込みは行われない。一方で、情報処理装置10がデータの書き込みを要求した後にネットワーク障害が発生した場合、要求が情報処理装置20に到達し、記憶領域21aへのデータ書き込みは行われるものの、情報処理装置20から情報処理装置10に応答が到達しない可能性がある。
書込手段13は、要求手段12が情報処理装置20にデータの書き込みを要求した後、情報処理装置20からの応答を待つ。そして、書込手段13は、記憶領域21aに対してデータの書き込みが正常に行われたことを、情報処理装置20からの応答に基づいて検出した場合、取得している書き込み要求に従って、記憶領域11aに対してデータの書き込みを行う。また、書込手段13は、情報処理装置20から応答が受信されない場合(例えば、要求手段12が書き込みを要求してから所定時間以内に応答が受信されない場合)、記憶領域11aに対してデータの書き込みを行わない。
同期手段14は、情報処理装置20から応答が受信されなかった場合、書き込みを行わなかった記憶領域11aからデータを読み出し、情報処理装置20にデータの書き込みを要求する。情報処理装置20への要求は、例えば、記憶領域11aから読み出したデータと、記憶領域21aの先頭位置を示すオフセット(記憶領域11aのオフセットと同一でもよい)およびデータサイズの情報とを含む。同期手段14がデータの書き込みを要求した時点でネットワークが復旧していれば、要求が情報処理装置20に到達し、記憶領域11aに記憶されていたデータが記憶領域21aに書き込まれる。
ここで、同期手段14は、記憶領域11aに記憶されたデータを情報処理装置20に送信して記憶領域11a,21aを同期させる処理を、情報処理装置10が他のデータ書き込み要求を取得したことを契機として実行してもよい。また、他のデータ読み出し要求および他のデータ書き込み要求の何れか一方を取得したことを契機として、同期処理を実行してもよい。また、同期手段14は、情報処理装置20から応答が受信されないことにより書き込みが行われなかった記憶領域が存在するか周期的に確認し、存在するときに同期処理を実行してもよい。同期手段14は、ネットワークがまだ復旧していないことにより同期処理が失敗した場合、成功するまで継続的に同期処理を実行してもよい。
例えば、記憶領域11a,21aにデータ#1が記憶されているとする。情報処理装置10は、データ#2を記憶領域11aに書き込むことを示す書き込み要求を取得すると、情報処理装置20にデータ#2を送信する。情報処理装置20は、記憶領域21aに記憶されるデータを、データ#1からデータ#2に書き換える。このとき、情報処理装置10,20間のネットワークに障害が発生したとする。すると、情報処理装置10は、情報処理装置20で書き込みが成功したことを示す応答を情報処理装置20から受信せず、記憶領域11aにデータを#2を書き込まないことになる。
その結果、記憶領域11a,21aに記憶されているデータの整合性が失われる。そこで、情報処理装置10は、他の書き込み要求を取得したタイミングや所定の周期的タイミングなどのタイミングを待って、同期処理を開始する。情報処理装置10は、記憶領域11aに記憶されたデータ#1を読み出し、情報処理装置20に送信する。このとき、情報処理装置10,20間のネットワークが復旧しているとする。すると、情報処理装置20は、記憶領域21aに記憶されるデータを、データ#2から受信したデータ#1に書き換える。その結果、記憶領域11a,21aに記憶されているデータの整合性が回復する。
なお、情報処理装置10を、データの読み出しや書き込みなどのアクセスを受け付けるプライマリノードに設定し、情報処理装置20を、バックアップ用のデータを保持するセカンダリノードに設定してもよい。また、記憶手段11,21の記憶領域を複数のセグメントに分割し、セグメント毎に、情報処理装置10,20の何れか一方をプライマリノードとして選択し他方をセカンダリノードとして選択してもよい。その場合、情報処理装置20は、要求手段12、書込手段13および同期手段14と同様のモジュールを有し、一部のセグメントについて書き込み要求の受け付けや同期処理を行う。
第1の実施の形態の情報処理装置10によれば、記憶手段11の記憶領域11aに対するデータの書き込み要求が取得されると、情報処理装置20にデータの書き込みを要求する。記憶手段21の記憶領域21aに対してデータの書き込みが正常に行われたことを、情報処理装置20からの応答に基づいて検出した場合、記憶領域11aに対してデータの書き込みを行う。一方、情報処理装置20から応答が受信されない場合、記憶領域11aに対してデータの書き込みを行わない。その後、記憶領域11aに記憶されているデータを、情報処理装置20に送信して記憶領域21aに書き込ませる。
これにより、ネットワーク障害によって情報処理装置20から情報処理装置10に応答が到達せず、その結果として記憶領域11a,21aのデータの整合性が失われても、後にデータの整合性を回復することができる。また、例えば、情報処理装置10が、情報処理装置20から応答がないことを検出してすぐにデータを再送する方法と比べ、他のデータ書き込み要求の取得などのタイミングを待って同期処理を行うことで、ネットワークが復旧して同期に成功する確率が高くなる。
なお、情報処理装置20から情報処理装置10に応答が到達しないとき、記憶領域21aに対するデータの書き込みが行われなかったために、データの整合性が失われていない可能性もある。しかし、情報処理装置10は、情報処理装置20から応答を受信しないため、データの整合性が失われているか否か直接にはわからない。そのため、情報処理装置10は、応答を受信しないときは、同期処理を行うことが好ましい。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムを示す図である。第2の実施の形態のストレージシステムは、ストレージノード100,200、クライアントノード300および制御ノード400を含む。各ノードは、ネットワーク30に接続されている。ネットワーク30は、有線または無線のLAN(Local Area Network)を含んでもよい。
ストレージノード100,200は、不揮発性の記憶装置にデータを記憶するサーバコンピュータである。同一内容のデータがストレージノード100,200の両方に記憶され、データが冗長化されている。ストレージノード100,200の一方がプライマリノードに設定され、他方がセカンダリノードに設定される。例えば、ストレージノード100がプライマリノード、ストレージノード200がセカンダリノードである。プライマリノードは、クライアントノード300からアクセスを受け付ける。セカンダリノードは、バックアップ用のデータを保持する。データの読み出しはプライマリノードから行われ、データの書き込みはプライマリノードとセカンダリノードの両方に対して行われる。
クライアントノード300は、ストレージノード100,200に記憶されたデータを使用するコンピュータである。クライアントノード300は、ユーザが操作する端末装置でもよくサーバ装置でもよい。クライアントノード300は、ストレージノード100,200のうちプライマリノードにアクセスする。何れのストレージノードがプライマリノードであるかは、制御ノード400に問い合わせて確認してもよい。アクセスには、データの読み出し要求(リード要求)とデータの書き込み要求(ライト要求)とが含まれる。リード要求およびライト要求は、記憶領域の先頭位置を示すオフセットとデータサイズの情報を含む。ライト要求は、更に、当該記憶領域に書き込まれるデータを含む。
制御ノード400は、ストレージノード100,200を管理するためのコンピュータである。制御ノード400は、端末装置でもよくサーバ装置でもよい。制御ノード400は、ストレージノード100,200の中からプライマリノードを選択し、ストレージノード100,200に、プライマリノードとセカンダリノードの何れとして動作するかを指示する。また、制御ノード400は、ユーザ操作または所定の入れ替えアルゴリズムに従って、プライマリノードとセカンダリノードを入れ替えることを決定し、ストレージノード100,200に入れ替えを指示する。
なお、ストレージノード100は、第1の実施の形態の情報処理装置10の一例である。ストレージノード200は、第1の実施の形態の情報処理装置20の一例である。
図3は、ストレージノードのハードウェア例を示すブロック図である。ストレージノード100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。各ユニットがストレージノード100のバスに接続されている。ストレージノード200、クライアントノード300および制御ノード400も、図3に示したストレージノード100と同様
ハードウェア構造によって実現することができる。
CPU101は、ストレージノード100における情報処理を制御する演算装置(プロセッサ)である。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部を読み出し、RAM102に展開してプログラムを実行する。なお、ストレージノード100は、複数の演算装置を備えて、情報処理を分散して実行してもよい。
RAM102は、CPU101が実行するプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、ストレージノード100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD103は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラム、および、データを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、ストレージノード100は、HDD以外の種類の不揮発性の記憶装置(例えば、SSD)を備えてもよく、複数の記憶装置を備えていてもよい。
画像信号処理部104は、CPU101の命令に従って、ストレージノード100に接続されたディスプレイ31に画像を出力する。ディスプレイ31として、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、ストレージノード100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ106は、記録媒体33に記録されたプログラムやデータを読み取る駆動装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信部107は、ネットワーク30を介して、ストレージノード200、クライアントノード300および制御ノード400と通信を行う通信インタフェースである。通信部107は、有線通信インタフェースでも無線通信インタフェースでもよい。
図4は、第2の実施の形態のソフトウェア例を示すブロック図である。
ストレージノード100は、データ記憶部110、アクセス処理部120、ノード間転送部130、制御情報記憶部140およびノード情報変更部150を有する。ストレージノード200は、データ記憶部210、アクセス処理部220、ノード間転送部230、制御情報記憶部240およびノード情報変更部250を有する。
データ記憶部110,210は、データを記憶する。データ記憶部110,210は、例えば、RAMまたはHDDを用いて実現される。データの記憶領域は、当該記憶領域の先頭位置を示すオフセット(所定位置からのアドレス距離)と、当該記憶領域のサイズとを用いて指定することができる。ただし、先頭位置は、物理的なアドレスまたは論理的なアドレスを用いて指定してもよい。また、サイズを指定する代わりに、記憶領域の末尾位置を示すアドレスを指定してもよい。データ記憶部110とデータ記憶部210には、同期が維持されていれば、同一内容のデータが記憶される。同一内容のデータは、好ましくは、同一のオフセットおよびサイズによって特定される記憶領域に記憶される。
アクセス処理部120,220は、データに対するアクセス(リード要求およびライト要求)を受け付ける。リード要求およびライト要求は、オフセットおよびサイズの情報を含み、ライト要求は、更に書き込むデータを含む。プライマリノードに属するアクセス処理部(例えば、アクセス処理部120)は、クライアントノード300からアクセスを受け付ける。セカンダリノードに属するアクセス処理部(例えば、アクセス処理部220)は、プライマリノードが転送するアクセスを受け付ける。
また、アクセス処理部120,220は、受け付けたアクセスに従って、自ノードのデータ記憶部からのデータの読み出しおよび自ノードのデータ記憶部へのデータの書き込みを行う。そして、アクセス処理部120,220は、アクセスに対するレスポンスをアクセス元に送信する。リード要求に対するレスポンスには、読み出したデータが含まれる。ライト要求に対するレスポンスには、データの書き込みが成功したこと(OK)または失敗したこと(NG)を示す情報が含まれる。ただし、プライマリノードに属するアクセス処理部は、ライト要求のとき、先にセカンダリノードにデータの書き込みを実行させ、セカンダリノードの書き込みが成功したことを確認してから自ノードの書き込みを行う。
また、アクセス処理部120,220は、ライト要求を処理するとき、ネットワーク30に障害が発生することによってデータ記憶部110,210間でデータの整合性が失われる場合に備えて、後述する制御情報を自ノードの制御情報記憶部に書き込んでおく。また、プライマリノードに属するアクセス処理部(例えば、アクセス処理部120)は、データ記憶部110,210間でデータの整合性が失われた可能性があるとき、セカンダリノードをプライマリノードに同期させる同期処理を制御する。
ノード間転送部130,230は、自ノードがプライマリノードのとき、クライアントノード300から受け付けられたライト要求をセカンダリノードに転送する。また、ノード間転送部130,230は、ライト要求に対するレスポンスを、ライト要求を転送してから所定時間以内にセカンダリノードから受信したか監視する。そして、書き込み成功、書き込み失敗またはタイムアウトの何れかを、自ノードのアクセス処理部に報告する。
制御情報記憶部140,240は、ストレージノード100,200の制御に用いられる制御情報を記憶する。制御情報は、ノード情報141,241、同期状態フラグ142,242および最終書込情報143,243を含む。
ノード情報141,241は、自ノードがプライマリノードとセカンダリノードの何れとして動作しているかを示す。同期状態フラグ142,242は、データ記憶部110,210が同期していることを確認したか否かを示す。同期状態フラグ142,242は、未設定(フラグ値なし)、同期(フラグON)および非同期(フラグOFF)の何れかの状態を示す。プライマリノードは、書き込み成功を示すレスポンスをセカンダリノードから受信すると、自ノードの同期状態フラグ(例えば、同期状態フラグ142)を「同期」に設定する。また、プライマリノードは、レスポンスを受信しない場合、自ノードの同期状態フラグを「非同期」に設定する。最終書込情報143,243は、最後に受け付けたライト要求で指定された記憶領域を示し、オフセットおよびサイズを含む。
ノード情報変更部150,250は、制御ノード400からの指示に応じて、自ノードの制御情報記憶部に記憶された情報を更新する。ノード情報変更部150,250は、プライマリノードの入れ替えが指示されると、自ノードをプライマリノードからセカンダリノードに変更し、または、セカンダリノードからプライマリノードに変更する。
クライアントノード300は、データアクセス部310を有する。データアクセス部310は、ストレージノード100,200のうちプライマリノードに対して、リード要求およびライト要求を送信する。データアクセス部310は、リード要求を送信した場合、データを含むレスポンスをプライマリノードから受信する。ライト要求を送信した場合、書き込みの成否を示すレスポンスをプライマリノードから受信する。データアクセス部310は、ストレージノード100,200の何れがプライマリノードであるか知らない場合、制御ノード400に問い合わせてもよい。
制御ノード400は、ノード設定部410を有する。ノード設定部410は、ユーザ操作または所定のアルゴリズムに従って、ストレージノード100,200に対して設定変更を要求する。例えば、制御ノード400は、ストレージノード100,200に対してプライマリノードの入れ替えを指示する。
なお、データ記憶部110,210は、第1の実施の形態の記憶手段11,21の一例である。アクセス処理部120は、第1の実施の形態の書込手段13の一例である。ノード間転送部130は、第1の実施の形態の要求手段12と同期手段14の一例である。
図5は、アクセス処理の例を示すフローチャートである。図5に示す処理は、ストレージノード100,200がアクセスを受け付ける毎に実行する。以下、ストレージノード100が実行するものとして、図5に示す処理をステップ番号に沿って説明する。
(ステップS11)アクセス処理部120は、アクセスを受け付けると、当該アクセスがライト要求であるか判断する。ライト要求の場合、処理をステップS13に進める。ライト要求でない場合(リード要求の場合)、処理をステップS12に進める。
(ステップS12)アクセス処理部120は、データ記憶部110から、リード要求が指定するオフセットおよびサイズによって特定される記憶領域のデータを読み出す。そして、処理をステップS21に進める。
(ステップS13)アクセス処理部120は、ライト要求が指定するオフセットおよびサイズの情報を、最終書込情報143として制御情報記憶部140に書き込む。
(ステップS14)アクセス処理部120は、自ノードがプライマリノードであるか判断する。プライマリノードであるか否かは、例えば、制御情報記憶部140に記憶されたノード情報141を参照することで判断できる。プライマリノードの場合、処理をステップS15に進める。セカンダリノードの場合、処理をステップS20に進める。
(ステップS15)アクセス処理部120は、ノード間転送部130にライト要求の転送を指示する。ノード間転送部130は、セカンダリノードとしてのストレージノード20に、アクセス処理部120が受け付けたライト要求を転送する。
(ステップS16)ノード間転送部130は、ライト要求を転送してから所定時間以内に、セカンダリノードからレスポンスを受信したか判断する。タイムアウトを検出するため、ノード間転送部130は、ソフトウェアタイマまたはハードウェアタイマを使用してもよい。所定時間以内にレスポンスを受信した場合(タイムアウトしない場合)、処理をステップS18に進める。所定時間以内にレスポンスを受信しない場合(タイムアウトした場合)、処理をステップS17に進める。
(ステップS17)ノード間転送部130は、タイムアウトをアクセス処理部120に通知する。アクセス処理部120は、制御情報記憶部140に記憶された同期状態フラグ142を「非同期」に設定する。そして、処理をステップS21に進める。
(ステップS18)ノード間転送部130は、セカンダリノードから受信したレスポンスが、書き込み成功(OK)を示しているか判断する。書き込み成功の場合、処理をステップS19に進める。書き込み失敗(NG)の場合、処理をステップS21に進める。
(ステップS19)ノード間転送部130は、書き込み成功をアクセス処理部120に通知する。アクセス処理部120は、同期状態フラグ142を「同期」に設定する。
(ステップS20)アクセス処理部120は、ステップS11で受け付けたライト要求に含まれるデータを、ライト要求が指定するオフセットおよびサイズによって特定されるデータ記憶部110の記憶領域に書き込む。
(ステップS21)アクセス処理部120は、アクセス元にレスポンスを送信する。アクセス処理部120は、データ記憶部110からデータを読み出した場合(ステップS12)、データを含むレスポンスを送信する。データ記憶部110に対するデータの書き込みに成功した場合(ステップS20)、書き込み成功を示すレスポンスを送信する。それ以外の場合、書き込み失敗を示すレスポンスを送信する。
図6は、同期処理の例を示すフローチャートである。図6に示す処理は、プライマリノードがクライアントノード300からアクセス(リード要求またはライト要求)を受け付ける毎に、図5に示す処理の前に実行する。以下、ストレージノード100がプライマリノードであるものとして、図6に示す処理をステップ番号に沿って説明する。
(ステップS31)アクセス処理部120は、クライアントノード300からアクセスを受け付けると、制御情報記憶部140に記憶された同期状態フラグ142を確認する。同期状態フラグ142が「非同期」を示している場合、処理をステップS32に進める。それ以外の場合、同期処理を終了し、図5に示すアクセス処理を実行する。
(ステップS32)アクセス処理部120は、制御情報記憶部140に記憶された最終書込情報143から、前回のライト要求が指定したオフセットおよびサイズを確認する。
(ステップS33)アクセス処理部120は、データ記憶部110から、ステップS32で確認したオフセットおよびサイズによって特定される記憶領域のデータを読み出す。ノード間転送部130は、セカンダリノードであるストレージノード200に、ライト要求を送信する。このライト要求は、アクセス処理部120が読み出したデータと、当該データの記憶領域を示すオフセットおよびサイズの情報とを含む。
(ステップS34)ノード間転送部130は、ライト要求を送信してから所定時間以内に、書き込み成功を示すレスポンスをセカンダリノードから受信したか判断する。書き込み成功を示すレスポンスを受信した場合、処理をステップS35に進める。書き込み失敗を示すレスポンスを受信した場合、または、所定時間以内にレスポンスを受信しなかった場合、同期処理を終了する。なお、同期に失敗した場合、図5に示すアクセス処理は実行されず、アクセス失敗を示すレスポンスがクライアントノード300に送信される。
(ステップS35)ノード間転送部130は、書き込み成功をアクセス処理部120に通知する。アクセス処理部120は、同期状態フラグ142を「同期」に設定する。そして、図5に示すアクセス処理を実行する。
このように、ネットワーク障害などが原因でストレージノード200からストレージノード100にレスポンスが到達しないと、ストレージノード100は、データ記憶部110,210が同期していない状態と判断する。すると、ストレージノード100は、次にアクセス(リード要求またはライト要求)を受け付けたことを契機として、データ記憶部210をデータ記憶部110に同期させるよう試みる。
ただし、ストレージノード100は、ストレージノード200からレスポンスを受信しなかったときのライト要求と次に受け付けたライト要求とが、同一の記憶領域に対する書き込みを要求している場合、同期処理を省略してもよい。
図7は、同期処理の他の例を示すフローチャートである。図7の同期処理では、図6のステップS32とステップS33の間に、以下のステップS32aを実行する。
(ステップS32a)アクセス処理部120は、ステップS31で受け付けたアクセスがライト要求であり、当該ライト要求が指定するオフセットおよびサイズと最終書込情報143が示すオフセットおよびサイズとが同一であるか判断する。条件を満たす場合、処理をステップS35に進める。条件を満たさない場合、処理をステップS33に進める。
あるライト要求と次のライト要求とが同一の記憶領域を指定するものであるときは、同期処理によりストレージノード200にデータを書き込んでも、次のライト要求の処理によって当該データが上書きされることになる。そこで、図7に示すように、ストレージノード100は、書き込み対象の記憶領域が同一である場合には、データ記憶部110からデータ記憶部210へのデータコピーを省略してもよい。
図8は、データアクセスのシーケンス例を示す図である。以下、ストレージノード100がプライマリノードであるとして、図8に示す処理をステップ番号に沿って説明する。
(ステップS41)クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したリード要求を送信する。
(ステップS42)ストレージノード100は、データ記憶部110から、リード要求で指定された記憶領域のデータを読み出す。そして、読み出したデータを含むレスポンスを、クライアントノード300に送信する。
(ステップS43)クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。
(ステップS44)ストレージノード100は、ライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ストレージノード100は、ライト要求をストレージノード200に転送する。
(ステップS45)ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認し、書き込み成功を示すレスポンスをストレージノード100に送信する。
(ステップS46)ストレージノード100は、同期状態フラグ142を「同期」に設定し、データ記憶部110内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込み成功を示すレスポンスを、クライアントノード300に送信する。
(ステップS47)クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。
(ステップS48)ストレージノード100は、ライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ストレージノード100は、ライト要求をストレージノード200に転送する。
(ステップS49)ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認し、書き込み成功を示すレスポンスをストレージノード100に送信する。しかし、ネットワーク30に障害が発生し、当該レスポンスがストレージノード100に到達しない。
(ステップS50)ストレージノード100は、レスポンスのタイムアウトを検出し、データ記憶部110にデータを書き込まず、同期状態フラグ142を「非同期」に設定する。そして、書き込み失敗を示すレスポンスを、クライアントノード300に送信する。
図9は、同期状態の第1の変化例を示す図である。図9の上段は、ステップS46が実行された後のストレージノード100,200の状態を示し、図9の下段は、ステップS50が実行された後のストレージノード100,200の状態を示している。
ステップS46が実行された後は、ストレージノード100では、同期状態フラグ142が「同期」に設定されている。最終書込情報143は、ステップS43のライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、データ#1が書き込まれている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110と同じデータ#1が書き込まれている。
ステップS50が実行された後は、ストレージノード100では、同期状態フラグ142が「非同期」に設定されている。最終書込情報143は、ステップS47のライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ステップS47のライト要求で指定されたデータ#2が書き込まれず、データ#1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、ステップS47のライト要求で指定されたデータ#2が記憶されている。
このように、ストレージノード200からストレージノード200にレスポンスが到達しないことにより、データの整合性が失われる可能性がある。
図10は、データアクセスのシーケンス例(続き)を示す図である。
(ステップS51)クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。
(ステップS52)ストレージノード100は、同期状態フラグ142が「非同期」に設定されていることを確認し、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。そして、読み出したデータと最終書込情報143が示す記憶領域とを指定した他のライト要求を、ストレージノード200に送信する。しかし、ネットワーク30が復旧しておらず、他のライト要求はストレージノード200に到達しない。
(ステップS53)ストレージノード100は、レスポンスのタイムアウトを検出し、同期状態フラグ142を「非同期」に維持する。そして、ステップS51のライト要求が失敗であることを示すレスポンスを、クライアントノード300に送信する。
(ステップS54)クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。
(ステップS55)ストレージノード100は、同期状態フラグ142が「非同期」に設定されていることを確認し、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。そして、読み出したデータと最終書込情報143が示す記憶領域とを指定した他のライト要求を、ストレージノード200に送信する。
(ステップS56)ストレージノード200は、データ記憶部210内の他のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認して、書き込み成功を示すレスポンスをストレージノード100に送信する。
(ステップS57)ストレージノード100は、ステップS54のライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ステップS54のライト要求をストレージノード200に転送する。
(ステップS58)ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認して、書き込み成功を示すレスポンスをストレージノード100に送信する。
(ステップS59)ストレージノード100は、同期状態フラグ142を「同期」に設定し、データ記憶部110内のステップS54のライト要求で指定された記憶領域にデータを書き込む。そして、ステップS54のライト要求が成功であることを示すレスポンスを、クライアントノード300に送信する。
図11は、同期状態の第2の変化例を示す図である。図11の上段は、ステップS56が実行された後のストレージノード100,200の状態を示し、図11の下段は、ステップS59が実行された後のストレージノード100,200の状態を示している。
ステップS56が実行された後は、ストレージノード100では、同期状態フラグ142が「同期」に設定されている。最終書込情報143は、同期状態フラグ142が「非同期」に設定されたときのライト要求が指定していたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、データ#1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110から複製されたデータ#1が書き込まれている。
ステップS59が実行された後は、ストレージノード100では、同期状態フラグ142が「同期」に設定されている。最終書込情報143は、ステップS54のライト要求で指定されたオフセット=X2,サイズ=Y2を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ステップS54のライト要求で指定されたデータ#3が書き込まれる。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X2,サイズ=Y2を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110と同じデータ#3が書き込まれている。
このように、ストレージノード100は、同期状態フラグ142が「非同期」に設定されていると、次のアクセスを受け付けたときに、データ記憶部210をデータ記憶部110に同期させる。ネットワーク30がまだ復旧しておらず、データ記憶部110,210の同期に失敗した場合には、更に次のアクセスを受け付けたとき、同期処理を再実行する。
図12は、ノード設定変更のシーケンス例を示す図である。以下、図12に示す処理をステップ番号に沿って説明する。図12では、ストレージノード100をプライマリノードからセカンダリノードに変更し、ストレージノード200をセカンダリノードからプライマリノードに変更する場合を考える。
(ステップS61)制御ノード400は、プライマリノードの入れ替えを、ストレージノード100,200に指示する。入れ替えを指示するタイミングとしては、例えば、制御ノード400が、入れ替え指示のユーザ操作を受け付けたときや、所定の入れ替えアルゴリズムを実行して入れ替えを行った方が好ましいと判断したときが考えられる。
(ステップS62)ストレージノード100は、ノード情報141を書き換え、自ノードをプライマリノードからセカンダリノードに変更する。
(ステップS63)セカンダリノードに移行したストレージノード100は、同期状態フラグ142をリセット(制御情報記憶部140から削除)し、値なしとする。
(ステップS64)ストレージノード200は、ノード情報241を書き換え、自ノードをセカンダリノードからプライマリノードに変更する。
(ステップS65)プライマリノードに移行したストレージノード200は、同期状態フラグ242を「非同期」に設定する。
(ステップS66)ストレージノード100,200は、ノード設定の変更が完了したことを制御ノード400に報告する。なお、ストレージノード100の処理とストレージノード200の処理(ステップS62〜S65)は、任意の順序で実行してよい。
図13は、同期状態の第3の変化例を示す図である。ここでは、ストレージノード100がプライマリノードであり、データの整合性が失われているときにプライマリノードの入れ替えが発生する場合を考える。図13の上段は、前述のステップS50が実行された後のようにデータの整合性が失われた状態を示し、図13の下段は、ステップS66が実行された後のストレージノード100,200の状態を示している。
前述のように、ステップS50が実行された後は、ストレージノード100では、同期状態フラグ142が「非同期」に設定されている。最終書込情報143は、ライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ライト要求で指定されたデータ#2が書き込まれず、データ#1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、ライト要求で指定されたデータ#2が記憶されている。
ステップS66が実行された後は、ストレージノード100では、同期状態フラグ142はリセットされ値をもたない。最終書込情報143は、入れ替え前と同じオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、入れ替え前と同じデータ#1が記憶されている。ストレージノード200では、同期状態フラグ242が「非同期」に設定されている。最終書込情報243は、入れ替え前と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、入れ替え前と同じデータ#2が記憶されている。
このように、プライマリノードになったストレージノード200の同期状態フラグ242は、「非同期」に書き換えられる。従って、ストレージノード200は、クライアントノード300から次のアクセスを受け付けたとき同期処理を実行する。同期処理により、セカンダリノード(ストレージノード100)に記憶されたデータ#1が、プライマリノード(ストレージノード200)に記憶されたデータ#2によって上書きされ、データの整合性が回復する。
プライマリノードを入れ替えたとき、新たなプライマリノード(旧セカンダリノード)は、旧プライマリノードの同期状態フラグが「非同期」であるか(データの整合性が失われている可能性があるか)を知らない。そこで、新たなプライマリノードが、入れ替え後に同期処理を行うようにする。なお、プライマリノードを入れ替えた後の同期処理では、旧プライマリノード(ストレージノード100)に記憶されたデータ#1を、旧セカンダリノード(ストレージノード200)に上書きするようにしてもよい。
第2の実施の形態のストレージシステムによれば、ネットワーク障害によりセカンダリノードからプライマリノードにレスポンスが到達せず、その結果としてデータの整合性が失われても、後にデータの整合性を回復することができる。また、プライマリノードが、次のアクセスを受け付けるタイミングを待って同期処理を行うことで、セカンダリノードからレスポンスがないことを検出してすぐにデータを再送する方法と比べ、ネットワークが復旧して同期に成功する確率が高くなる。また、プライマリノードの入れ替えが発生した後に同期処理が行われるようにすることで、データの整合性が失われた状態が放置されないようにすることができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第3の実施の形態のストレージシステムは、データのアクセスがなくても、データの整合性が失われていないかを定期的に確認する。
図14は、第3の実施の形態のソフトウェア例を示す図である。第3の実施の形態のストレージシステムは、ストレージノード100a,200a、クライアントノード300および制御ノード400aを有する。
ストレージノード100aは、第2の実施の形態のストレージノード100のモジュールに加え、同期状態監視部160を有する。同期状態監視部160は、制御ノード400aから要求を受けて、同期状態フラグ142が「非同期」に設定されているか判断する。同期状態監視部160は、「非同期」に設定されている場合、ノード間転送部130に同期処理を指示する。そして、同期処理に成功した場合、同期状態フラグ142を「同期」に設定する。同様に、ストレージノード200aは、第2の実施の形態のストレージノード200のモジュールに加え、同期状態監視部260を有する。
制御ノード400aは、第2の実施の形態の制御ノード400のモジュールに加えて、同期要求部420を有する。同期要求部420は、ストレージノード100a,200aのうちプライマリノード(例えば、ストレージノード100a)に対し、所定周期(例えば、数分毎、数時間毎、数日毎など)で同期要求を送信する。
図15は、同期パトロールのシーケンス例を示す図である。以下、ストレージノード100がプライマリノードとして、図15に示す処理をステップ番号に沿って説明する。
(ステップS71)制御ノード400aの同期要求部420は、ストレージノード100aに同期要求を送信する。同期要求は、所定周期で継続的に送信される。
(ステップS72)ストレージノード100aの同期状態監視部160は、同期状態フラグ142が「非同期」に設定されていることを確認する。
(ステップS73)ストレージノード100aのノード間転送部130は、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。
(ステップS74)ストレージノード100aのノード間転送部130は、ステップS73で読み出したデータと最終書込情報143が示す記憶領域を指定したライト要求を、ストレージノード200aに送信する。
(ステップS75)ストレージノード200aのアクセス処理部220は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。
(ステップS76)ストレージノード200aのアクセス処理部220は、書き込み成功を示すレスポンスをストレージノード100aに送信する。
(ステップS77)ストレージノード100aの同期状態監視部160は、同期状態フラグ142を「同期」に設定し、同期完了を制御ノード400aに報告する。
なお、第3の実施の形態の同期方法(パトロール方式)は、第2の実施の形態の同期方法(アクセスを契機とする方式)と組み合わせることも可能である。例えば、プライマリノードが、ライト要求を受け付けたときに同期処理を実行し、また、周期的なタイミングでも同期処理を実行するようにしてもよい。第3の実施の形態のストレージシステムによれば、第2の実施の形態と同様、データの整合性を回復することができる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。第2および第3の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第4の実施の形態のストレージシステムでは、記憶領域が複数のセグメントに分割され、セグメント毎に複数のストレージノードの中からプライマリノードを選択することができる。
図16は、第4の実施の形態のデータ構造例を示す図である。第4の実施の形態のストレージシステムは、ストレージノード100b,200bを含む。ストレージノード100bは、データ記憶部110bを有し、同期状態フラグ142bおよび最終書込情報143bを保持する。ストレージノード200bは、データ記憶部210bを有し、同期状態フラグ242bおよび最終書込情報243bを保持する。
データ記憶部110b,210bの記憶領域は、複数のセグメント(論理的なブロック単位)に分割される。例えば、データ記憶部110b,210bは、セグメントS1,S2,S3を有する。セグメントS1,S3のプライマリデータはデータ記憶部110bに記憶され、セグメントS1,S3のセカンダリデータはデータ記憶部210bに記憶される。セグメントS2のプライマリデータはデータ記憶部210bに記憶され、セグメントS2のセカンダリデータはデータ記憶部110bに記憶される。
クライアントノード300からのデータのアクセスは、プライマリデータを記憶するストレージノードに対して行われる。よって、セグメントS1,S3については、ストレージノード100bがプライマリノードとして動作する。セグメントS2については、ストレージノード200bがプライマリノードとして動作する。
同期状態フラグ142b,242bでは、セグメント毎に「同期」や「非同期」が設定される。最終書込情報143b,243bは、セグメント毎のオフセットおよびサイズの情報を含む。ストレージノード100bは、同期状態フラグ142bおよび最終書込情報143bを用いて、セグメントS1,S3について、第2および第3の実施の形態で述べたような同期処理を行う。ストレージノード200bは、同期状態フラグ242bおよび最終書込情報243bを用いて、セグメントS2について、第2および第3の実施の形態で述べたような同期処理を行う。例えば、ストレージノード100bは、セグメントS3に対する次のライト要求を受け付けたとき、セグメントS3の同期処理を行う。
第4の実施の形態のストレージシステムによれば、第2の実施の形態と同様、データの整合性を回復することができる。また、第4の実施の形態では、アクセスを複数のストレージノードに分散させることができる。
なお、前述のように、第2〜第4の実施の形態のストレージ制御方法は、コンピュータとしてのストレージノード100,100a,100b,200,200a,200b、クライアントノード300および制御ノード400,400aに、それぞれプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体33)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク30経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを記憶装置(例えば、HDD103)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク30を介して受信したプログラムを直接実行してもよい。
10,20 情報処理装置
11,21 記憶手段
11a,21a 記憶領域
12 要求手段
13 書込手段
14 同期手段

Claims (6)

  1. 第1の記憶領域を含む記憶手段と、
    前記第1の記憶領域に対するデータの書き込み要求が取得されると、他の情報処理装置に前記データの書き込みを要求する要求手段と、
    前記他の情報処理装置が備える他の記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他の情報処理装置からの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、前記他の情報処理装置から応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わない書込手段と、
    前記他の情報処理装置から応答が受信されない場合に、前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他の情報処理装置に送信して前記第2の記憶領域に書き込ませる同期手段と、
    を有する情報処理装置。
  2. 前記同期手段は、前記データの書き込み要求の後に他のデータの書き込み要求が取得されたときに、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1記載の情報処理装置。
  3. 前記同期手段は、所定周期のタイミングになったときに、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1記載の情報処理装置。
  4. 前記同期手段は、前記第1の記憶領域に記憶されているデータが前記第2の記憶領域に正常に書き込まれたことを検出しない場合、継続的に、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1乃至3の何れか一項に記載の情報処理装置。
  5. データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードが実行するストレージ制御方法であって、
    自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードに前記データの書き込みを要求し、
    前記他のノードが備える記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他のノードからの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、
    前記他のノードから応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わず、
    前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他のノードに送信して前記第2の記憶領域に書き込ませる、
    ストレージ制御方法。
  6. データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードを制御するプログラムであって、前記一のノードが備えるコンピュータに、
    自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードに前記データの書き込みを要求し、
    前記他のノードが備える記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他のノードからの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、
    前記他のノードから応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わず、
    前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他のノードに送信して前記第2の記憶領域に書き込ませる、
    処理を実行させるプログラム。
JP2011176567A 2011-08-12 2011-08-12 情報処理装置、ストレージ制御方法およびプログラム Active JP5699852B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011176567A JP5699852B2 (ja) 2011-08-12 2011-08-12 情報処理装置、ストレージ制御方法およびプログラム
US13/562,748 US8825968B2 (en) 2011-08-12 2012-07-31 Information processing apparatus and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011176567A JP5699852B2 (ja) 2011-08-12 2011-08-12 情報処理装置、ストレージ制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2013041353A JP2013041353A (ja) 2013-02-28
JP5699852B2 true JP5699852B2 (ja) 2015-04-15

Family

ID=47678275

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011176567A Active JP5699852B2 (ja) 2011-08-12 2011-08-12 情報処理装置、ストレージ制御方法およびプログラム

Country Status (2)

Country Link
US (1) US8825968B2 (ja)
JP (1) JP5699852B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647804B (zh) * 2013-11-22 2017-04-26 华为技术有限公司 一种存储单元的数据处理方法、设备及系统
WO2015198449A1 (ja) * 2014-06-26 2015-12-30 株式会社日立製作所 ストレージシステム
US9715433B2 (en) * 2014-08-29 2017-07-25 Netapp, Inc. Reconciliation in sync replication
US9571575B2 (en) * 2014-08-29 2017-02-14 Netapp, Inc. Granular sync/semi-sync architecture
WO2016079804A1 (ja) * 2014-11-18 2016-05-26 株式会社日立製作所 ストレージシステム及びその制御方法
CN114385350A (zh) * 2016-11-30 2022-04-22 华为技术有限公司 一种图数据处理的方法、装置及系统
US11197075B1 (en) 2018-12-27 2021-12-07 Equinix, Inc. Clock synchronization in a heterogeneous system
US11755226B2 (en) 2020-09-18 2023-09-12 Hewlett Packard Enterprise Development Lp Tracking changes of storage volumes during data transfers
US11720274B2 (en) 2021-02-03 2023-08-08 Hewlett Packard Enterprise Development Lp Data migration using cache state change
JPWO2022190681A1 (ja) * 2021-03-09 2022-09-15
WO2022196112A1 (ja) * 2021-03-16 2022-09-22 富士フイルム株式会社 ストレージシステム、データ処理方法、及びデータ処理プログラム
US11693565B2 (en) * 2021-08-10 2023-07-04 Hewlett Packard Enterprise Development Lp Storage volume synchronizations responsive to communication link recoveries

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08110840A (ja) * 1994-10-12 1996-04-30 Nec Telecom Syst Ltd 2重化冗長構成磁気ディスク装置の復旧方式
JP2000099277A (ja) * 1998-09-18 2000-04-07 Fujitsu Ltd ファイルユニット間のリモート転送方法
US7139932B2 (en) 2002-01-03 2006-11-21 Hitachi, Ltd. Data synchronization of multiple remote storage after remote copy suspension
JP4452494B2 (ja) 2003-03-11 2010-04-21 株式会社日立製作所 複数リモートストレージでのリモートコピー停止後のデータ同期化方式
US7308545B1 (en) * 2003-05-12 2007-12-11 Symantec Operating Corporation Method and system of providing replication
US7617369B1 (en) * 2003-06-30 2009-11-10 Symantec Operating Corporation Fast failover with multiple secondary nodes
US7266653B2 (en) * 2003-09-29 2007-09-04 International Business Machines Corporation Remote data mirroring with acknowledgment upon writing copied data to volatile cache memory
JP4389772B2 (ja) * 2004-12-03 2009-12-24 日本電気株式会社 計算機システムおよびバックアップ方法
JP2007086972A (ja) 2005-09-21 2007-04-05 Hitachi Ltd ストレージシステム、二重化制御方法、及びプログラム
US8046548B1 (en) * 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US7822892B2 (en) * 2007-07-19 2010-10-26 International Business Machines Corporation Managing the copying of writes from primary storages to secondary storages across different networks
JP5486793B2 (ja) 2008-11-07 2014-05-07 株式会社日立製作所 リモートコピー管理システム、方法及び装置
TWI414992B (zh) * 2009-01-23 2013-11-11 Infortrend Technology Inc 遠端非同步資料卷複製的方法及其裝置
US8589732B2 (en) * 2010-10-25 2013-11-19 Microsoft Corporation Consistent messaging with replication

Also Published As

Publication number Publication date
US20130042082A1 (en) 2013-02-14
JP2013041353A (ja) 2013-02-28
US8825968B2 (en) 2014-09-02

Similar Documents

Publication Publication Date Title
JP5699852B2 (ja) 情報処理装置、ストレージ制御方法およびプログラム
US10936447B2 (en) Resynchronizing to a first storage system after a failover to a second storage system mirroring the first storage system
JP6056453B2 (ja) プログラム、データ管理方法および情報処理装置
US10108367B2 (en) Method for a source storage device sending data to a backup storage device for storage, and storage device
JP4371724B2 (ja) 記憶システム及び記憶装置システム
US9678686B2 (en) Managing sequentiality of tracks for asynchronous PPRC tracks on secondary
US8285824B2 (en) Storage system and data replication method that refuses one or more requests for changing the first logical configuration information until the first storage apparatus and second storage apparatus are synchronized
US8191078B1 (en) Fault-tolerant messaging system and methods
JP5396836B2 (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
JP2008071209A (ja) ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法
JP2006527875A (ja) データ管理方法、システム、およびプログラム(リモート記憶位置にフェイルオーバを行うための方法、システム、およびプログラム)
JP2005196683A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
US9081697B2 (en) Storage control apparatus and storage control method
JP2011128917A (ja) データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置
JP2007058611A (ja) ストレージシステム及びストレージシステムの管理方法
JP2007249776A (ja) データベース複製プログラム、データベース複製装置およびデータベース複製方法
JP4911198B2 (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御方法
JP2015007880A (ja) ストレージ制御装置,ストレージシステム,および制御プログラム
JP2007018312A (ja) ディスクアレイ装置及びその制御方法
JP5691246B2 (ja) データベース二重化システム、情報処理装置及びデータベース二重化方法
CN113326251B (zh) 数据管理方法、系统、设备和存储介质
JP4563412B2 (ja) ソフトウェア複製
CN115955488B (zh) 基于副本冗余的分布式存储副本跨机房放置方法与装置
JP5640480B2 (ja) データ管理プログラム、ストレージシステム、およびデータ管理方法
JP2008276281A (ja) データ同期システム、方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141224

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150202

R150 Certificate of patent or registration of utility model

Ref document number: 5699852

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150