(57)【要約】【課題】ストレージ装置の障害により読み出せなくなったデータを確実に復旧する。【解決手段】ストレージ装置７０は、基データ７１０を記憶する基データ記憶部７１と、基データ７１０に関する更新データ７２０を生成すると共に基データ７１０を更新する更新部７３と、更新データ７２０を記憶する更新データ記憶部７２と、更新データ７２０に基づいて冗長データ９１が更新されるように第三のストレージ装置９０を制御する制御部７４と、冗長データ９１が更新されたときに、更新データ７２０を更新データ記憶部７２から削除する削除部７５と、基データ記憶部７１における障害を検出する検出部７６と、当該障害が検出されかつ、更新データ７２０が更新データ記憶部７２に記憶されている場合に、第二のストレージ装置８０に記憶されているデータ８１と、冗長データ９１と、更新データ７２０とに基づいて、基データ７１０を復旧する復旧部７７と、を備える。【選択図】      図７
2020126420.tif 000002
【特許請求の範囲】
【請求項１】
基データを記憶する第一のストレージ装置と、
第二のストレージ装置と、
前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、
を有するストレージシステムにおける前記第一のストレージ装置であって、
前記基データを記憶する基データ記憶手段と、
外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新する更新手段と、
前記更新データを記憶する更新データ記憶手段と、
前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御する制御手段と、
前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除する削除手段と、
前記基データ記憶手段における障害を検出する検出手段と、
前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する復旧手段と、
を備えるストレージ装置。
【請求項２】
前記更新手段は、前記命令情報が示す更新後の前記基データと、前記基データ記憶手段に記憶されている更新前の前記基データとの差分を、前記更新データとして生成する、
請求項１に記載のストレージ装置。
【請求項３】
請求項１または請求項２に記載のストレージ装置と、
前記第二のストレージ装置と、
前記第三のストレージ装置と、
を有するストレージシステム。
【請求項４】
前記第三のストレージ装置は、
前記基データの更新に応じて行う前記冗長データの更新と、前記第二のストレージ装置に記憶されているデータの更新に応じて行う前記冗長データの更新とを、排他制御により実行する冗長データ生成手段と、
前記冗長データを記憶する冗長データ記憶手段と、
を備える、
請求項３に記載のストレージシステム。
【請求項５】
前記冗長データ生成手段は、前記基データと、前記第二のストレージ装置に記憶されているデータとに基づいてパリティデータを生成したのち、前記更新データに基づいて前記パリティデータを更新する、
請求項４に記載のストレージシステム。
【請求項６】
前記冗長データ生成手段は、前記基データと前記第二のストレージ装置に記憶されているデータとの排他的論理和を、前記パリティデータとして生成する、
請求項５に記載のストレージシステム。
【請求項７】
前記第三のストレージ装置は、復旧支援手段をさらに備え、
前記復旧手段は、前記第二のストレージ装置に記憶されているデータと、前記冗長データとを前記復旧支援手段に要求し、
前記復旧支援手段は、前記復旧手段からの要求に応じて、前記第二のストレージ装置に記憶されているデータを取得すると共に、前記第二のストレージ装置に記憶されているデータと前記冗長データとを、前記復旧手段に入力する、
請求項４乃至請求項６のいずれか一項に記載のストレージシステム。
【請求項８】
前記第一のストレージ装置を、前記第二のストレージ装置として有し、
前記冗長データ生成手段は、前記第二のストレージ装置に記憶されている前記更新データに基づいて前記冗長データを更新し、
前記復旧支援手段は、前記第二のストレージ装置に記憶されている前記基データと前記更新データとを取得すると共に、前記第二のストレージ装置に記憶されている前記基データと前記更新データとを、前記復旧手段に入力する、
請求項７に記載のストレージシステム。
【請求項９】
基データを記憶する第一のストレージ装置と、
第二のストレージ装置と、
前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、を有するストレージシステムにおける前記第一のストレージ装置によって、
前記基データを基データ記憶手段に記憶し、
外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新し、
前記更新データを更新データ記憶手段に記憶し、
前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御し、
前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除し、
前記基データ記憶手段における障害を検出し、
前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する、
ストレージ制御方法。
【請求項１０】
基データを記憶する第一のストレージ装置と、
第二のストレージ装置と、
前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、
を有するストレージシステムにおける前記第一のストレージ装置に対して、
前記基データを基データ記憶手段に記憶する基データ記憶処理と、
外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新する更新処理と、
前記更新データを更新データ記憶手段に記憶する更新データ記憶処理と、
前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御する制御処理と、
前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除する削除処理と、
前記基データ記憶手段における障害を検出する検出処理と、
前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する復旧処理と、
を実行させるためのストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、ストレージ装置に記憶されているデータを障害から保護する技術に関する。
【背景技術】
【０００２】
高度に情報化された現代社会においては、ストレージ装置に記憶されているデータが障害や災害等の発生によって損失した場合、社会に与える影響は非常に大きくなる。したがって、障害や災害等の発生によってストレージ装置に記憶されているデータが損失しないようにデータを保護する技術への期待が高まってきている。
【０００３】
このような技術に関連する技術として、特許文献１には、地震、火災等の災害に対しても、データ損失が生じないようにする分散ファイルシステムが開示されている。このシステムにおけるデータディスクドライブは、それらを個々に持つコンピュータが夫々ネットワークに接続されることにより、相互に接続されている。このシステムでは、データディスクドライブのデータをｍｏｄｕｌｏ２によって加算して得られたパリティ情報を格納するパリティディスクドライブも、当該コンピュータによってネットワークに接続されている。このシステムでは、データディスクドライブのいずれか１つのデータは、パリティ情報と他のデータディスクドライブのデータとから得られる。このシステムでは、ネットワークを用いることにより、データディスクドライブとパリティディスクドライブとは、同じ災害を受けない程度に互いに物理的に充分離れた場所に配置される。
【０００４】
また、特許文献２には、ローカル側および／またはクラウド側のサーバがデータを柔軟に管理することによって、サーバやネットワークの障害時にも継続的かつ最適に使用できるようにするデータ管理システムが開示されている。このシステムでは、クラウド側の管理サーバとバックアップサーバと仮想サーバと、ローカル側の主サーバとローカル端末とがネットワークにより接続されている。このシステムは、主サーバのデータをバックアップサーバにバックアップし、主サーバに障害が発生した場合に、バックアップサーバのバックアップデータを使用して、仮想サーバに主サーバのデータを復元し、仮想サーバを一時的な主サーバとしてシステム利用を継続させる。このシステムは、仮想サーバに主サーバのデータをリストアした後にローカル端末から仮想サーバにアクセスするアクセス方式を、通常運用時のリモート接続方式からファイル転送方式に切替える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０５−３２４５７９号公報
【特許文献２】特開２０１７−１８２３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば上述した特許文献が示すシステムは、障害や災害の発生等によってあるストレージ装置に記憶されている基データが損失した場合に備えて、損失した基データを復旧可能なデータ（冗長データ）を、そのストレージ装置の設置場所とは異なる場所（例えばクラウドコンピューティングにおけるクラウド側）に設置された別のストレージ装置に記憶している。さらに、例えば特許文献１が示すシステムは、基データと等しい冗長データ（即ち二重化されたデータ）を備えるのではなく、複数のストレージ装置に記憶されているデータから生成したパリティデータを冗長データとして備える（即ち、基データよりもデータ量が小さい冗長データを備える）ことによって、基データの保護をより効率的に行っている。
【０００７】
しかしながら、このようなシステムにおいては、下記の通り、損失した基データを復旧できなくなる場合が考えられる。即ち、冗長データを記憶するストレージ装置は、基データが更新されたストレージ装置からの依頼に応じて冗長データを更新する。そして、基データが更新された複数のストレージ装置からの依頼が輻輳した場合、冗長データを記憶するストレージ装置によるそれら依頼の処理に関して順番待ちが生じる。また、基データが更新されたストレージ装置と冗長データを記憶するストレージ装置との間における通信状況（例えば通信ネットワークの輻輳状況等）によっては、基データが更新されるタイミングと、基データの更新に応じて冗長データが更新されるタイミングとの間に時間差が生じることがある。
【０００８】
即ち、複数のストレージ装置に記憶されている基データの更新内容が、冗長データに反映されていない時間帯が存在する。そして、当該時間帯において、冗長データに更新内容が反映されていない基データを記憶するストレージ装置に障害が発生した場合、その障害によって損失したデータを冗長データに基づいて復旧することができなくなる。特許文献１及び２が示す技術は、このような問題を解決することができない。本願発明の主たる目的は、この問題を解決するストレージ装置等を提供することである。
【課題を解決するための手段】
【０００９】
本願発明の一態様に係るストレージ装置は、基データを記憶する第一のストレージ装置と、第二のストレージ装置と、前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、を有するストレージシステムにおける前記第一のストレージ装置であって、前記基データを記憶する基データ記憶手段と、外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新する更新手段と、前記更新データを記憶する更新データ記憶手段と、前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御する制御手段と、前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除する削除手段と、前記基データ記憶手段における障害を検出する検出手段と、前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する復旧手段と、を備える。
【００１０】
上記目的を達成する他の見地において、本願発明の一態様に係るストレージ制御方法は、基データを記憶する第一のストレージ装置と、第二のストレージ装置と、前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、を有するストレージシステムにおける前記第一のストレージ装置によって、前記基データを基データ記憶手段に記憶し、外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新し、前記更新データを更新データ記憶手段に記憶し、前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御し、前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除し、前記基データ記憶手段における障害を検出し、前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する。
【００１１】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るストレージ制御プログラムは、基データを記憶する第一のストレージ装置と、第二のストレージ装置と、前記基データを復旧可能なように、前記基データと前記第二のストレージ装置に記憶されているデータとに基づいて生成された冗長データを記憶する第三のストレージ装置と、を有するストレージシステムにおける前記第一のストレージ装置に対して、前記基データを基データ記憶手段に記憶する基データ記憶処理と、外部の装置から入力された前記基データの更新を指示する命令情報に基づいて、前記基データの更新に関する更新データを生成すると共に、前記基データを更新する更新処理と、前記更新データを更新データ記憶手段に記憶する更新データ記憶処理と、前記更新データに基づいて前記冗長データが更新されるように前記第三のストレージ装置を制御する制御処理と、前記第三のストレージ装置によって前記冗長データが更新されたときに、前記更新データを前記更新データ記憶手段から削除する削除処理と、前記基データ記憶手段における障害を検出する検出処理と、前記基データ記憶手段における障害が検出され、かつ、前記更新データが前記更新データ記憶手段に記憶されている場合に、前記第二のストレージ装置に記憶されているデータと、前記冗長データと、前記更新データとに基づいて、前記基データを復旧する復旧処理と、を実行させる。
【００１２】
更に、本願発明は、係るストレージ制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１３】
本願発明は、ストレージ装置における障害により読み出せなくなったデータをより確実に復旧することを可能とする。
【図面の簡単な説明】
【００１４】
【図１】本願発明の第１の実施形態に係るストレージシステム１の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るパリティデータ生成部４２が、パリティデータ４１０の初期値を生成する方法を例示する図である。
【図３】本願発明の第１の実施形態に係るパリティデータ生成部４２が、基データ１１０、基データ２１０、基データ３１０の更新に応じてパリティデータ４１０を更新する方法を例示する図である。
【図４】本願発明の第１の実施形態に係る復旧部１７が、基データ２１０及び３１０と、更新データ２２０及び３２０と、パリティデータ４１０と、更新データ１２０とに基づいて、基データ１１０を復旧する方法を例示する図である。
【図５】本願発明の第１の実施形態に係るストレージシステム１が正常に稼動しているときに、基データ１１０、更新データ１２０、パリティデータ４１０を更新する動作を示すフローチャートである。
【図６】本願発明の第１の実施形態に係るストレージシステム１が、基データ記憶部１１において障害が発生した場合に、基データ１１０を復旧する動作を示すフローチャートである。
【図７】本願発明の第２の実施形態に係るストレージ装置７０の構成を示すブロック図である。
【図８】本願発明の各実施形態に係るストレージ装置を実行可能な情報処理装置９００の構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１６】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るストレージシステム１の構成を示すブロック図である。ストレージシステム１は、大別して、ストレージ装置１０（第一のストレージ装置）、ストレージ装置２０（第二のストレージ装置）、ストレージ装置３０（第二のストレージ装置）、及び、クラウド側ストレージ装置４０（第三のストレージ装置）を含む。尚、ストレージシステム１が有するストレージ装置は３つに限定されない。
【００１７】
ストレージ装置１０乃至３０、及び、クラウド側ストレージ装置４０は、通信ネットワーク６０によって通信可能に接続されている。通信ネットワーク６０は、例えば、インターネットあるいはイントラネット等である。クラウド側ストレージ装置４０は、例えば、ストレージ装置１０乃至３０に対して、クラウドコンピューティングにおけるクラウド側に設置されたストレージ装置である。尚、ストレージシステム１は、クラウドコンピューティング環境を構築するシステムに限定されない。即ち、クラウド側ストレージ装置４０は、例えば、ストレージ装置１０乃至３０の管理者によって管理されるファイルサーバ等の装置でもよい。
【００１８】
ストレージ装置１０はサーバ装置５１（外部の装置）からアクセスされ、ストレージ装置２０はサーバ装置５２からアクセスされ、ストレージ装置３０はサーバ装置５３からアクセスされる。尚、ストレージ装置１０乃至３０は、順に、サーバ装置５１乃至５３に内蔵された装置であってもよい。あるいは、サーバ装置５１乃至５３は、通信ネットワーク６０に通信可能に接続されることによって、ストレージ装置１０乃至３０にアクセスするようにしてもよい。
【００１９】
ストレージ装置１０は、基データ記憶部１１、更新データ記憶部１２、更新部１３、制御部１４、削除部１５、検出部１６、及び、復旧部１７を備える。基データ記憶部１１及び更新データ記憶部１２は、例えば磁気ディスクあるいは電子メモリ等の記憶デバイスである。基データ記憶部１１は、後述する基データ１１０（元データ）を記憶可能である。更新データ記憶部１２は、後述する更新データ１２０を記憶可能である。
【００２０】
ストレージ装置２０は、基データ２１０を記憶可能な基データ記憶部２１、及び、更新データ２２０を記憶可能な更新データ記憶部２２を備える。ストレージ装置３０は、基データ３１０を記憶可能な基データ記憶部３１、及び、更新データ３２０を記憶可能な更新データ記憶部３２を備える。基データ記憶部２１及び３１は、基データ記憶部１１と同等の機能を備え、更新データ記憶部２２及び３２は、更新データ記憶部１２と同等の機能を備えることとする。
【００２１】
尚、本実施形態に係るストレージ装置２０及び３０は、ストレージ装置１０と同等の機能を備えることとする。但し、図１に示すブロック図では、説明の便宜上及び図面の大きさの制約を鑑み、ストレージ装置２０は、基データ記憶部２１及び更新データ記憶部２２以外の構成要素を省略して記載し、ストレージ装置３０は、基データ記憶部３１及び更新データ記憶部３２以外の構成要素を省略して表現する。
【００２２】
そして、本実施形態においてストレージ装置１０、２０、３０は、夫々同様な動作を行うことができる。但し、本実施形態では説明の便宜上、以降、主にストレージ装置１０の動作について説明することとする。即ち、ストレージ装置２０の動作に関しては、以降の説明において、基データ記憶部１１、基データ１１０、更新データ記憶部１２、更新データ１２０、サーバ装置５１なる記載を、順に、基データ記憶部２１、基データ２１０、更新データ記憶部２２、更新データ２２０、サーバ装置５２なる記載に読み替えることとする。また、ストレージ装置３０の動作に関しも同様に、基データ記憶部１１、基データ１１０、更新データ記憶部１２、更新データ１２０、サーバ装置５１なる記載を、順に、基データ記憶部３１、基データ３１０、更新データ記憶部３２、更新データ３２０、サーバ装置５３なる記載に読み替えることとする。
【００２３】
基データ１１０は、サーバ装置５１によってアクセスされる（即ちサーバ装置５１が使用する）ユーザデータである。更新データ１２０は、サーバ装置５１によって基データ１１０が更新される際の更新内容に関するデータである。本実施形態では、更新データ１２０は、例えば、更新後の基データ１１０と、基データ記憶部１１に記憶されている更新前の基データ１１０との差分を表すこととする。
【００２４】
サーバ装置５１は、ストレージ装置１０に記憶されている基データ１１０の更新を指示する命令情報（基データ１１０に対する書き込み命令）をストレージ装置１０に入力する。ストレージ装置１０において、更新部１３は、サーバ装置５１から入力された当該命令情報に基づいて、基データ１１０の更新に関する更新データ１２０を生成すると共に、基データ１１０を更新する。更新部１３は、生成した更新データ１２０を、更新データ記憶部１２に格納する。
【００２５】
制御部１４は、更新部１３によって生成された更新データ１２０に基づいて、クラウド側ストレージ装置４０に記憶されているパリティデータ４１０（冗長データ）が更新されるようにクラウド側ストレージ装置４０を制御する。
【００２６】
ここで、クラウド側ストレージ装置４０の動作について説明する。
【００２７】
クラウド側ストレージ装置４０は、パリティデータ記憶部４１、パリティデータ生成部４２、及び、復旧支援部４３を備える。パリティデータ記憶部４１は、例えば磁気ディスクあるいは電子メモリ等の記憶デバイスであり、パリティデータ４１０を記憶可能である。
【００２８】
パリティデータ生成部４２は、基データ記憶部１１乃至３１に記憶されている基データ１１０乃至３１０に基づいて、パリティデータ４１０を生成する。そしてパリティデータ生成部４２は、更新データ記憶部１２乃至３２に記憶されている更新データ１２０乃至３２０に基づいて、パリティデータ４１０を更新する。
【００２９】
クラウド側ストレージ装置４０における復旧支援部４３の動作については後述する。
【００３０】
図２は、本実施形態に係るパリティデータ生成部４２が、パリティデータ４１０の初期値を生成する方法を例示する図である。
【００３１】
図２に例示する通り、基データ１１０は、基データ１１０−１乃至１１０−ｍ（ｍは任意の自然数）を含み、基データ２１０は、基データ２１０−１乃至２１０−ｍを含み、基データ３１０は、基データ３１０−１乃至３１０−ｍを含み、パリティデータ４１０は、パリティデータ４１０−１乃至４１０−ｍを含むこととする。基データ１１０乃至３１０、及び、パリティデータ４１０に含まれるこれらの構成要素が例えば１ビットのデータである場合、基データ１１０乃至３１０、及び、パリティデータ４１０は、ｍビットのデータである。
【００３２】
パリティデータ生成部４２は、基データ１１０−ｉ（ｉは１乃至ｍのいずれかの整数）と基データ２１０−ｉと基データ３１０−ｉとの排他的論理和を算出することにより、パリティデータ４１０−ｉを生成する。
【００３３】
図３は、本実施形態に係るパリティデータ生成部４２が、基データ１１０の更新に応じてパリティデータ４１０を更新する方法を例示する図である。
【００３４】
図３に例示する通り、更新データ１２０は、更新データ１２０−１乃至１２０−ｍを含み、更新データ２２０は、更新データ２２０−１乃至２２０−ｍを含み、更新データ３２０は、更新データ３２０−１乃至３２０−ｍを含むこととする。更新データ１２０乃至３２０に含まれるこれらの構成要素が例えば１ビットのデータである場合、更新データ１２０乃至３２０は、ｍビットのデータである。
【００３５】
本実施形態に係る更新データ１２０−ｉは、更新部１３によって基データ１１０−ｉの値が、「０」から「１」あるいは「１」から「０」に更新された場合に、更新部１３によって「１」に設定される。パリティデータ生成部４２は、この場合、制御部１４による制御を受けて（即ち、制御部１４から更新データ１２０−ｉが「１」に設定されたことを通知されることに応じて）、パリティデータ４１０−ｉの値を反転することによって、基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映する。パリティデータ生成部４２は、基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映したことを、ストレージ装置１０における削除部１５に通知する。
【００３６】
パリティデータ生成部４２は、基データ１１０−ｉ、基データ２１０−ｉ、及び、基データ３１０−ｉの更新に伴うパリティデータ４１０−ｉへの反映を、排他制御により実行する。即ち、パリティデータ生成部４２は、例えば、基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映する処理を実行中にストレージ装置２０から更新データ２２０−ｉが「１」に設定されたことを通知された場合、基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映する処理を完了した後に、基データ２１０−ｉの更新をパリティデータ４１０−ｉに反映する処理を開始する。
【００３７】
図１に示すストレージ装置１０における削除部１５は、パリティデータ生成部４２から、基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映したことを通知されたときに、更新データ１２０−ｉを更新データ記憶部１２から削除する。ここで削除とは、更新データ１２０−ｉの値を「１」から「０」に変更する動作である。
【００３８】
検出部１６は、基データ記憶部１１の動作を監視することによって、基データ記憶部１１において発生した障害を検出する。検出部１６は、基データ記憶部１１において発生した障害を検出したことを、復旧部１７に通知する。
【００３９】
復旧部１７は、検出部１６から基データ記憶部１１において障害が発生したことを通知された場合、基データ２１０及び３１０と、更新データ２２０及び３２０と、パリティデータ４１０と、更新データ１２０とに基づいて、基データ記憶部１１に記憶されていた基データ１１０を復旧する。この復旧の手順については、図４を参照して後述する。
【００４０】
復旧部１７は、この際、基データ２１０及び３１０と、更新データ２２０及び３２０と、パリティデータ４１０との入手を、クラウド側ストレージ装置４０における復旧支援部４３に要求する。復旧支援部４３は、復旧部１７からの要求に応じて、ストレージ装置２０から基データ２１０及び更新データ２２０を入手するとともに、ストレージ装置３０から基データ３１０及び更新データ３２０を入手する。復旧支援部４３は、入手した基データ２１０及び３１０と、入手した更新データ２２０及び３２０と、パリティデータ記憶部４１に記憶されているパリティデータ４１０とを、復旧部１７へ送信する。
【００４１】
復旧部１７は、基データ記憶部１１において障害が発生したのちにサーバ装置５１から発行された基データ１１０に対する読み出し命令に対して、復旧した基データ１１０をサーバ装置５１に返信する。
【００４２】
図４は、本実施形態に係る復旧部１７が、基データ記憶部１１において障害が発生した場合に基データ１１０を復旧する方法を例示する図である。
【００４３】
前述した通り、削除部１５は、パリティデータ生成部４２から基データ１１０−ｉの更新をパリティデータ４１０−ｉに反映したことを通知されると、更新データ記憶部１２にそれまで記憶されていた更新データ１２−ｉを削除する。ストレージ装置２０及び３０もこれと同様に動作する。そして、基データ１１０−ｉを復旧するタイミングによっては、基データ２１０−ｉ及び／あるいは基データ３１０−ｉの更新がパリティデータ４１０−ｉに反映されていない場合がある。
【００４４】
そこで復旧部１７は、更新データ２２０−ｉ及び／あるいは更新データ３２０−ｉが存在する（更新データの値が「１」である）場合、基データ２１０−ｉ及び／あるいは基データ３１０−ｉの値を反転することによって、更新前の基データ２１０−ｉ及び／あるいは基データ３１０−ｉの値を求める。求められた基データ２１０−ｉ及び／あるいは基データ３１０−ｉは、パリティデータ４１０が使用している基データ２１０−ｉ及び／あるいは基データ３１０−ｉに相当する。
【００４５】
次に復旧部１７は、求めた基データ２１０−ｉ及び基データ３１０−ｉと、パリティデータ４１０−ｉとを用いて、パリティデータ４１０が使用している基データ１１０−ｉを求める。即ち、復旧部１７は、基データ１１０−ｉと基データ２１０−ｉと基データ３１０−ｉとの排他的論理和の値がパリティデータ４１０−ｉとなるような基データ１１０−ｉを求める。
【００４６】
そして復旧部１７は、更新データ１２０−ｉが存在する（更新データ１２０−ｉの値が「１」である）場合、求めたパリティデータ４１０が使用している基データ１１０−ｉに更新を反映する（基データ１１０−ｉの値を反転する）ことによって、基データ１１０−ｉを復旧する。
【００４７】
基データ記憶部１１において障害が発生したのちにサーバ装置５１から基データ１１０に対する書き込み命令が発行された場合、更新部１３は、当該書き込み命令に基づいて更新データ１２０を生成する。この場合、更新部１３は、更新前の基データ１１０の値を基データ記憶部１１から取得することはできないので、復旧部１７によって復旧された基データ１１０を取得する。そして、制御部１４は、生成された更新データ１２０に基づいてパリティデータ４１０を更新するように、クラウド側ストレージ装置４０におけるパリティデータ生成部４２を制御する。このように本実施形態に係るストレージシステム１は、基データ記憶部１１において障害が発生したのちも、基データ２１０及び３１０と、更新データ２２０及び３２０と、パリティデータ４１０と、更新データ１２０とに基づいて、基データ１１０を継続して管理する。
【００４８】
次に図５及び図６のフローチャートを参照して、本実施形態に係るストレージシステム１の動作（処理）について詳細に説明する。尚、図５及び図６のフローチャートは、ストレージ装置１０に関する動作を表し、ストレージ装置２０及び３０も、各々同様に動作することとする。
【００４９】
図５は、本実施形態に係るストレージシステム１が正常に稼動しているときに、基データ１１０、更新データ１２０、及び、パリティデータ４１０を更新する動作を示すフローチャートである。
【００５０】
クラウド側ストレージ装置４０におけるパリティデータ生成部４２は、基データ記憶部１１に記憶されている基データ１１０、基データ記憶部２１に記憶されている基データ２１０、基データ記憶部３１に記憶されている基データ３１０に基づいて、パリティデータ４１０の初期値を生成し、生成したパリティデータ４１０の初期値をパリティデータ記憶部４１に格納する（ステップＳ１０１）。
【００５１】
ストレージ装置１０には、サーバ装置５１から基データ１１０の更新を指示する命令情報（基データ１１０に対する書き込み命令）が入力される（ステップＳ１０２）。更新部１３は、当該命令情報と基データ１１０とに基づいて更新データ１２０を生成し、生成した更新データ１２０を更新データ記憶部１２に格納するとともに、基データ１１０を更新する（ステップＳ１０３）。制御部１４は、クラウド側ストレージ装置４０に更新データ１２０を送信し、パリティデータ生成部４２にパリティデータ４１０の更新を指示する（ステップＳ１０４）。
【００５２】
ストレージ装置２０あるいは３０からの指示によりパリティデータ４１０を更新中である場合（ステップＳ１０５でＹｅｓ）、パリティデータ生成部４２は、制御部１４から指示されたパリティデータ４１０の更新を保留する（ステップＳ１０６）。ストレージ装置２０あるいは３０からの指示によりパリティデータ４１０を更新中でない場合（ステップＳ１０５でＮｏ）、パリティデータ生成部４２は、更新データ１２０に基づいてパリティデータ４１０を更新するとともに、パリティデータ４１０の更新が完了したことをストレージ装置１０へ通知する（ステップＳ１０７）。
【００５３】
ストレージ装置１０における削除部１５は、パリティデータ生成部４２からの通知に応じて更新データ１２０を更新データ記憶部１２から削除し（ステップＳ１０８）、処理はステップＳ１０２へ戻る。
【００５４】
図６は、本実施形態に係るストレージシステム１が、ストレージ装置１０における基データ記憶部１１において障害が発生した場合に、基データ１１０を復旧する動作を示すフローチャートである。
【００５５】
ストレージ装置１０における検出部１６は、基データ記憶部１１において発生した障害を検出する（ステップＳ２０１）。復旧部１７は、クラウド側ストレージ装置４０における復旧支援部４３に、基データ２１０及び３１０、更新データ２２０及び３２０、パリティデータ４１０の入手を要求する（ステップＳ２０２）。
【００５６】
復旧支援部４３は、ストレージ装置２０から基データ２１０及び更新データ２２０を取得し、ストレージ装置３０から基データ３１０及び更新データ３２０を取得し、取得したこれらのデータを、パリティデータ記憶部４１に記憶されているパリティデータ４１０とともに、ストレージ装置１０における復旧部１７へ送信する（ステップＳ２０３）。
【００５７】
復旧部１７は、更新データ２２０（及び／あるいは更新データ３２０）が存在する場合、更新前の基データ２１０（及び／あるいは基データ３１０）（即ち、パリティデータ４１０が使用している基データ２１０（及び／あるいは基データ３１０））を求める（ステップＳ２０４）。復旧部１７は、パリティデータ４１０が使用している基データ２１０及び基データ３１０、及び、パリティデータ４１０に基づいて、パリティデータ４１０が使用している基データ１１０を求める（ステップＳ２０５）。
【００５８】
更新データ１２０が存在する場合（ステップＳ２０６でＹｅｓ）、復旧部１７は、求めた基データ１１０に更新データ１２０を反映し（ステップＳ２０７）、処理はステップＳ２０８へ進む。更新データ１２０が存在しない場合（ステップＳ２０６でＮｏ）、処理はステップＳ２０８へ進む。
【００５９】
復旧部１７は、求めた（更新データ１２０を反映した）基データ１１０を、復旧した基データ１１０として出力し（ステップＳ２０８）、全体の処理は終了する。
【００６０】
本実施形態に係るストレージ装置１０は、ストレージ装置における障害により読み出せなくなったデータをより確実に復旧することができる。その理由は、ストレージ装置１０（第一のストレージ装置）は、ストレージ装置２０あるいは３０（第二のストレージ装置）に記憶されている基データ２１０及び３１０、及び、更新データ２２０及び３２０、及び、クラウド側ストレージ装置４０（第三のストレージ装置）に記憶されているパリティデータ４１０（冗長データ）、及び、更新データ記憶部１２に記憶されている更新データ１２０を用いて、障害が発生した基データ記憶部１１に記憶されていた基データ１１０を復旧するからである。
【００６１】
以下に、本実施形態に係るストレージ装置１０によって実現される効果について、詳細に説明する。
【００６２】
障害や災害の発生等によってあるストレージ装置に記憶されている基データが損失した場合に備えて、損失した基データを復旧可能な冗長データを、そのストレージ装置の設置場所とは異なる場所に設置された別のストレージ装置に記憶するようにしたシステムがある。また、複数のストレージ装置に記憶されているデータから生成したパリティデータを冗長データとして備えることによって、基データの保護をより効率的に行うシステムがある。
【００６３】
このようなシステムにおける冗長データを記憶するストレージ装置は、基データが更新されたストレージ装置からの依頼に応じて冗長データを更新する。そして、基データが更新された複数のストレージ装置からの依頼が輻輳した場合、冗長データを記憶するストレージ装置によるそれら依頼の処理に関して順番待ちが生じる。また、基データが更新されたストレージ装置と冗長データを記憶するストレージ装置との間における通信状況によっては、基データが更新されるタイミングと、基データの更新に応じて冗長データが更新されるタイミングとの間に時間差が生じることがある。
【００６４】
即ち、複数のストレージ装置に記憶されている基データの更新内容が、冗長データに反映されていない時間帯が存在する。そして、当該時間帯において、冗長データに更新内容が反映されていない基データを記憶するストレージ装置に障害が発生した場合、その障害によって損失したデータを冗長データに基づいて復旧することができなくなるという問題がある。
【００６５】
このような問題に対して、本実施形態に係るストレージ装置１０は、ストレージ装置２０及び３０と、クラウド側ストレージ装置４０とを有するストレージシステム１において、例えば図１乃至図６を参照して上述した通り動作する。
【００６６】
即ち、ストレージ装置１０は基データ１１０を記憶する。ストレージ装置２０（ストレージ装置３０）は、基データ２１０（基データ３１０）、及び、更新データ２２０（更新データ３２０）を記憶する。クラウド側ストレージ装置４０は、基データ１１０と、基データ２１０及び２２０と、更新データ２２０及び３２０とに基づいて生成あるいは更新されたパリティデータ４１０を記憶する。
【００６７】
ストレージ装置１０は、基データ記憶部１１と、更新データ記憶部１２と、更新部１３と、制御部１４と、削除部１５と、検出部１６と、復旧部１７とを備える。基データ記憶部１１は、基データ１１０を記憶する。更新部１３は、サーバ装置５１から入力された基データ１１０の更新を指示する命令情報に基づいて、基データ１１０の更新に関する更新データ１２０を生成すると共に、基データ１１０を更新する。更新データ記憶部１２は、更新データ１２０を記憶する。制御部１４は、更新データ１２０に基づいてパリティデータ４１０が更新されるようにクラウド側ストレージ装置４０を制御する。削除部１５は、クラウド側ストレージ装置４０によってパリティデータ４１０が更新されたときに、更新データ１２０を更新データ記憶部１２から削除する。検出部１６は、基データ記憶部１１における障害を検出する。そして、復旧部１７は、基データ記憶部１１における障害が検出され、かつ、更新データ１２０が更新データ記憶部１２に記憶されている場合に、ストレージ装置２０及び３０に記憶されている上述したデータと、パリティデータ４１０と、更新データ１２０とに基づいて、基データ１１０を復旧する。
【００６８】
即ち、本実施形態に係るストレージ装置１０は、基データ１１０に対する更新内容がパリティデータ４１０に反映されるまで更新データ１２０を記憶し、当該更新内容がパリティデータ４１０に反映されたときに更新データ１２０を削除する。これにより、ストレージ装置１０は、基データ１１０の更新内容が、パリティデータ４１０に反映されていない時間帯に基データ記憶部１１に傷害が発生した場合であっても、更新データ１２０を用いることによって基データ１１０をより確実に復旧することができる。
【００６９】
また、本実施形態に係る更新部１３は、サーバ装置５１から入力された命令情報が示す更新後の基データ１１０と、基データ記憶部１１に記憶されている更新前の基データ１１０との差分を、更新データ１２０として生成する。そして、復旧部１７は、基データ１１０乃至３１０の排他的論理和によって求められるパリティデータ４１０を冗長データとして使用する。これにより、本実施形態に係るストレージ装置１０は、上述した基データ１１０の復旧を、簡易な論理演算を用いた処理構成により実現することができる。
【００７０】
また、パリティデータ４１０は、排他的論理和とは異なる演算によって求められるデータであってもよい。パリティデータ４１０は、例えば、誤り制御符号化等で使用されるガロア体（有限体）の演算によって求められるデータであってもよい。また、クラウド側ストレージ装置４０に記憶されるデータは、パリティデータに限定されない。クラウド側ストレージ装置４０に記憶されるデータは、ストレージ装置２０及び３０に記憶されているデータに基づいて基データ１１０を算出可能であるような冗長データであればよい。
【００７１】
また、本実施形態に係るクラウド側ストレージ装置４０は、復旧支援部４３を備えることによって、基データ１１０の復旧に必要なデータをストレージ装置２０及び３０から収集するが、クラウド側ストレージ装置４０は、復旧支援部４３を備えなくてもよい。すなわちこの場合、ストレージ装置１０における復旧部１７は、基データ１１０の復旧に必要なデータを、ストレージ装置２０及び３０から直接収集すればよい。
【００７２】
＜第２の実施形態＞
図７は、本願発明の第２の実施形態に係る（第一の）ストレージ装置７０の構成を示すブロック図である。
【００７３】
ストレージ装置７０は、第二のストレージ装置８０と、第三のストレージ装置９０とを有するストレージシステムに含まれる。ストレージ装置７０は、基データ７１０を記憶する。第二のストレージ装置８０は、データ８１を記憶する。第三のストレージ装置９０は、基データ７１０とデータ８１とに基づいて生成された冗長データ９１を記憶する。
【００７４】
ストレージ装置７０は、基データ記憶部７１と、更新データ記憶部７２と、更新部７３と、制御部７４と、削除部７５と、検出部７６と、復旧部７７と、を備える。
【００７５】
基データ記憶部７１は、基データ７１０を記憶する。
【００７６】
更新部７３は、外部の装置７００から入力された基データ７１０の更新を指示する命令情報に基づいて、基データ７１０の更新に関する更新データ７２０を生成すると共に、基データ７１０を更新する。
【００７７】
更新データ記憶部７２は、更新データ７２０を記憶する。
【００７８】
制御部７４は、更新データ７２０に基づいて冗長データ９１が更新されるように第三のストレージ装置９０を制御する。
【００７９】
削除部７５は、第三のストレージ装置９０によって冗長データ９１が更新されたときに、更新データ７２０を更新データ記憶部７２から削除する。
【００８０】
検出部７６は、基データ記憶部７１における障害を検出する。
【００８１】
復旧部７７は、基データ記憶部７１における障害が検出され、かつ、更新データ７２０が更新データ記憶部７２に記憶されている場合に、第二のストレージ装置８０に記憶されているデータ８１と、冗長データ９１と、更新データ７２０とに基づいて、基データ７１０を復旧する。
【００８２】
本実施形態に係るストレージ装置７０は、ストレージ装置における障害により読み出せなくなったデータをより確実に復旧することができる。その理由は、ストレージ装置７０は、第二のストレージ装置８０に記憶されているデータ８１、第三のストレージ装置９０に記憶されている冗長データ９１、及び、更新データ記憶部７２に記憶されている更新データ７２０を用いて、障害が発生した基データ記憶部７１に記憶されていた基データ７１０を復旧するからである。
【００８３】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図７に示したストレージ装置における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１、及び、図７において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・基データ記憶部１１及び７１における記憶制御機能、
・更新データ記憶部１２及び７２における記憶制御機能、
・更新部１３及び７３、
・制御部１４及び７４、
・削除部１５及び７５、
・検出部１６及び７６、
・復旧部１７及び７７。
【００８４】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図８を参照して説明する。
【００８５】
図８は、本願発明の各実施形態に係るストレージ装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図８は、図１、及び、図７に示したストレージ装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００８６】
図８に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・モニターやスピーカ、キーボード等の入出力インタフェース９０９。
【００８７】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。
【００８８】
そして、上述した実施形態を例に説明した本願発明は、図８に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１及び図７）における上述した構成、或いはフローチャート（図５及び図６）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）、または、ＲＯＭ９０２やハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００８９】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００９０】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００９１】
１    ストレージシステム
１０    ストレージ装置
１１    基データ記憶部
１１０    基データ
１２    更新データ記憶部
１２０    更新データ
１３    更新部
１４    制御部
１５    削除部
１６    検出部
１７    復旧部
２０    ストレージ装置
２１    基データ記憶部
２１０    基データ
２２    更新データ記憶部
２２０    更新データ
３０    ストレージ装置
３１    基データ記憶部
３１０    基データ
３２    更新データ記憶部
３２０    更新データ
４０    クラウド側ストレージ装置
４１    パリティデータ記憶部
４１０    パリティデータ
４２    パリティデータ生成部
４３    復旧支援部
５１乃至５３    サーバ装置
６０    通信ネットワーク
７０    ストレージ装置
７１    基データ記憶部
７１０    基データ
７２    更新データ記憶部
７２０    更新データ
７３    更新部
７４    制御部
７５    削除部
７６    検出部
７７    復旧部
７００    外部の装置
８０    第二のストレージ装置
８１    データ
９０    第三のストレージ装置
９１    冗長データ
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2020126420.tif 000003
【図２】
2020126420.tif 000004
【図３】
2020126420.tif 000005
【図４】
2020126420.tif 000006
【図５】
2020126420.tif 000007
【図６】
2020126420.tif 000008
【図７】
2020126420.tif 000009
【図８】
2020126420.tif 000010