(57)【要約】【課題】非同期コピーの高速化を可能とする分散ストレージの非同期リモートレプリケーションシステムを提供する。【解決手段】実施形態によれば、分散ストレージの非同期リモートレプリケーションシステムは、第１の分散ストレージの各ノードが、マップ情報保持手段と、データ複製手段とを具備する。マップ情報保持手段は、第２の分散ストレージ内の複数の記憶装置の識別子が固定数の通し番号に対応づけられた第２のマップ情報を保持する。データ複製手段は、自ノード内の１以上の記憶装置に記憶されるデータの複製を第２の分散ストレージ内の記憶装置に作成するために、第１の論理ディスクを固定長で分割したチャンク毎に、各チャンクの識別子と第２のマップ情報とに基づき、第２の分散ストレージ内の複数の記憶装置の中から１つの記憶装置を選択し、その選択した記憶装置にデータの複製を作成する。【選択図】      図２
2018136596.tif 000002
【特許請求の範囲】
【請求項１】
各々が１以上の記憶装置を有する複数のノードが相互に接続された分散ストレージの非同期リモートレプリケーションシステムであって、
第１の分散ストレージの複数のノードそれぞれが、
前記第１の分散ストレージ内の複数の記憶装置の識別子が固定数の通し番号に対応づけられた第１のマップ情報と、前記第１の分散ストレージとネットワークを介して接続される第２の分散ストレージ内の複数の記憶装置の識別子が前記固定数の通し番号に対応づけられた第２のマップ情報とを保持するマップ情報保持手段と、
前記第１の分散ストレージにおいて構成される第１の論理ディスクの複製を前記第２の分散ストレージに作成するために、自ノード内の１以上の記憶装置に記憶されるデータの複製を前記第２の分散ストレージ内の記憶装置に作成する手段であって、前記第１の論理ディスクを固定長で分割したチャンク毎に、各チャンクの識別子と前記第２のマップ情報とに基づき、前記第２の分散ストレージ内の複数の記憶装置の中から１つの記憶装置を選択し、その選択した前記第２の分散ストレージ内の１つの記憶装置にデータの複製を作成するデータ複製手段と、
を具備する分散ストレージの非同期リモートレプリケーションシステム。
【請求項２】
前記データ複製手段は、
ある時間的な静止点における前記第１の論理ディスクの複製を前記第１の分散ストレージ内において作成するための手段であって、自ノード内の１以上の記憶装置に記憶されるデータを前記ある時間的な静止点において関係づけるリンク情報を、自ノード内の１以上の記憶装置毎に作成するリンク情報作成手段を具備し、
前記リンク情報作成手段により作成される前記リンク情報の複製を前記第２の分散ストレージ内の記憶装置に作成することにより、前記ある時間的な静止点における、自ノード内の１以上の記憶装置に記憶されるデータの複製を前記第２の分散ストレージ内の記憶装置に作成する、
請求項１に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項３】
前記データ複製手段は、
第１の静止点に関する第１のリンク情報が作成された後、第２の静止点に関する第２のリンク情報が作成された場合、前記第１のリンク情報と前記第２のリンク情報との差分である差分データを取得する差分データ取得手段を具備し、
前記差分データ取得手段により取得される前記差分データの複製を前記第２の分散ストレージ内の記憶装置に作成することにより、前記第２の静止点における、自ノード内の１以上の記憶装置に記憶されるデータの複製を前記第２の分散ストレージ内の記憶装置に作成する、
請求項２に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項４】
前記第１の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージの複数のノードの中の１つのノードから前記第２のマップ情報を取得するマップ情報取得手段を具備する請求項１乃至３のいずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項５】
前記第１の分散ストレージの複数のノードそれぞれは、
前記第１の分散ストレージのノード数および各ノードの記憶装置数を少なくとも含む第１の構成情報と、前記第２の分散ストレージのノード数および各ノードの記憶装置数を少なくとも含む第２の構成情報とを保持する構成情報保持手段と、
前記第１の構成情報に基づき、前記第１のマップ情報を作成し、前記第２の構成情報に基づき、前記第２のマップ情報を作成するマップ情報作成手段と、
を具備する請求項１乃至４いずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項６】
前記第１の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージの複数のノードの中の１つのノードから前記第２の構成情報を取得する構成情報取得手段を具備する請求項５に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項７】
前記第１のマップ情報は、第１のアルゴリズムにより、前記第１の構成情報に基づいて作成され、
前記第２のマップ情報は、前記第１のアルゴリズムとは異なる第２のアルゴリズムにより、前記第２の構成情報に基づいて作成され、
前記第１の分散ストレージの複数のノードそれぞれは、前記第２のアルゴリズムに関する情報を前記第２の分散ストレージの複数のノードの中の１つのノードから前記第２の構成情報を取得するアルゴリズム取得手段を具備する請求項５または６に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項８】
前記第１の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージの複数のノードの中の１つのノードから前記第２のマップ情報を定期的に取得し、前記マップ情報保持手段により保持される前記第２のマップ情報を前記取得した前記第２のマップ情報で更新するマップ情報更新手段を具備する請求項１乃至７のいずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項９】
前記第１の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージの複数のノードの中の１つのノードから前記第２の構成情報を定期的に取得し、前記構成情報保持手段により保持される前記第２の構成情報を前記取得した前記第２の構成情報で更新する構成情報更新手段を具備する請求項５乃至７のいずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項１０】
前記第２の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージのノード数または各ノードの記憶装置数の少なくとも一方が変更された場合、前記第２のマップ情報の更新を前記第１の分散ストレージの複数のノードの中の１つのノードへ通知するマップ情報更新通知手段を具備し、
前記第１の分散ストレージの複数のノードそれぞれは、前記第２のマップ情報の更新の通知を受けた場合、前記マップ情報保持手段により保持される前記第２のマップ情報を更新するマップ情報更新手段を具備する請求項１乃至７のいずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項１１】
前記第２の分散ストレージの複数のノードそれぞれは、前記第２の分散ストレージのノード数または各ノードの記憶装置数の少なくとも一方が変更された場合、前記第２の構成情報の更新を前記第１の分散ストレージの複数のノードの中の１つのノードへ通知する構成情報更新通知手段を具備し、
前記第１の分散ストレージの複数のノードそれぞれは、前記第２の構成情報の更新の通知を受けた場合、前記構成情報保持手段により保持される前記第２の構成情報を更新する構成情報更新手段を具備する請求項５乃至７のいずれか１項に記載の分散ストレージの非同期リモートレプリケーションシステム。
【請求項１２】
各々が１以上の記憶装置を有する複数のノードが相互に接続された分散ストレージの非同期リモートレプリケーション方法であって、
第１の分散ストレージの複数のノードそれぞれが、
前記第１の分散ストレージ内の複数の記憶装置の識別子が固定数の通し番号に対応づけられた第１のマップ情報と、前記第１の分散ストレージとネットワークを介して接続される第２の分散ストレージ内の複数の記憶装置の識別子が前記固定数の通し番号に対応づけられた第２のマップ情報とを保持することと、
前記第１の分散ストレージにおいて構成される第１の論理ディスクの複製を前記第２の分散ストレージに作成するために、自ノード内の１以上の記憶装置に記憶されるデータの複製を前記第２の分散ストレージ内の記憶装置に作成する手段であって、前記第１の論理ディスクを固定長で分割したチャンク毎に、各チャンクの識別子と前記第２のマップ情報とに基づき、前記第２の分散ストレージ内の複数の記憶装置の中から１つの記憶装置を選択し、その選択した前記第２の分散ストレージ内の１つの記憶装置にデータの複製を作成することと、
を具備する分散ストレージの非同期リモートレプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、分散ストレージの非同期リモートレプリケーションシステムおよび分散ストレージの非同期リモートレプリケーション方法に関する。
【背景技術】
【０００２】
災害時に備えて、ストレージのデータの複製を遠隔地のストレージに保持するための技術に、リモートレプリケーションがある。また、複数の計算機（以下、ノードと呼ぶ）から構成され、データを各ノードのＨＤＤ（Hard disk drive）やＳＳＤ（Solid state drive）等の記憶装置に分散して格納する分散ストレージがある。従来、分散ストレージ間でリモートレプリケーションを行う場合、例えば、特許文献１に記載のように、複数のノードのデータを集中管理するノード間でデータ転送を行うものがある。また、特許文献２に記載のように、分散ストレージのノードを１対１で接続し、ノード間でデータ転送を行うものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３０５８５６号公報
【特許文献２】特開２００１−２８２６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１で開示される技術では、分散ストレージ間のデータ転送において、特定のノードに負荷が集中する問題があった。
【０００５】
また、特許文献２で開示される技術では、ノード間の接続が１対１固定の構成でなければならないため、ノード数の異なる分散ストレージ間でリモートレプリケーションを構成できない問題があった。
【０００６】
本発明は、このような問題を解決するためになされたものであり、例えばセフ（ceph）等のハッシュアルゴリズムを用いてデータの配置先を一意に決定する分散ストレージを用いて、データの配置先を一意に決定する機能を分散ストレージ間で共有し、また、分散ストレージ内の各ノードが独立して非同期リモートレプリケーションにおける差分データの管理を行うことで、構成の異なる分散ストレージ間であっても、各ノードが並列にデータ転送を行えるようにし、もって、非同期コピーの高速化を可能とする分散ストレージの非同期リモートレプリケーションシステムおよび分散ストレージの非同期リモートレプリケーションを提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態によれば、各々が１以上の記憶装置を有する複数のノードが相互に接続される分散ストレージの非同期リモートレプリケーションシステムは、第１の分散ストレージの複数のノードそれぞれが、マップ情報保持手段と、データ複製手段と、を具備する。マップ情報保持手段は、前記第１の分散ストレージ内の複数の記憶装置の識別子が固定数の通し番号に対応づけられた第１のマップ情報と、前記第１の分散ストレージとネットワークを介して接続される第２の分散ストレージ内の複数の記憶装置の識別子が前記固定数の通し番号に対応づけられた第２のマップ情報とを保持する。データ複製手段は、前記第１の分散ストレージにおいて構成される第１の論理ディスクの複製を前記第２の分散ストレージに作成するために、自ノード内の１以上の記憶装置に記憶されるデータの複製を前記第２の分散ストレージ内の記憶装置に作成する手段であって、前記第１の論理ディスクを固定長で分割したチャンク毎に、各チャンクの識別子と前記第２のマップ情報とに基づき、前記第２の分散ストレージ内の複数の記憶装置の中から１つの記憶装置を選択し、その選択した前記第２の分散ストレージ内の１つの記憶装置にデータの複製を作成する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの構成を表すブロック図。
【図２】図１に表される分散ストレージ内のノードの構成を表すブロック図。
【図３】図２に表される構成情報テーブルおよびリモート構成情報テーブルの構成を示す図。
【図４】図２に表される分散配置マップおよびリモート分散配置マップの構成を示す図。
【図５】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの全体処理を表すフローチャート。
【図６】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおけるホスト計算機によるファイルの読み書き時のノードの処理を表すフローチャート。
【図７】図６に表される処理の中のノード番号および記憶装置ＩＤを選択する処理の詳細を表すフローチャート。
【図８】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおけるファイルシステム上のファイル構造を説明するための図。
【図９】図８に表されるディレクトリおよびファイルの命名規則に準じてディレクトリおよびファイルが作成される一具体例を示す図。
【図１０】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムのスナップショットを作成する処理を表すフローチャート。
【図１１】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおけるスナップショットに関するファイルシステム上のファイル構造を説明するための図。
【図１２】図１１に表されるディレクトリおよびファイルの命名規則に準じてディレクトリおよびファイルが更新される一具体例を示す図。
【図１３】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムのリモートレプリケーションを初期作成する処理を表すフローチャート。
【図１４】同第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの非同期コピー処理の手順を表すフローチャート。
【図１５】第２実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおける分散配置マップおよびリモート分散配置マップの構成を示す図。
【発明を実施するための形態】
【０００９】
以下、実施形態について図面を参照して説明する。
【００１０】
（第１実施形態）
まず、第１実施形態について説明する。
【００１１】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの概要＞
本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムは、リモートの分散ストレージにデータを複製するリモートレプリケーションにおいて、分散ストレージ内の各ノードが、リモートに設置された分散ストレージ内の適切なノードを選択し、並列にデータ転送するものである。これにより、異なる構成の分散ストレージ間で、特定のノードに負荷を集中させることなく、高速にレプリケーションを行うことが可能となる。
【００１２】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの構成＞
図１は、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの構成を表すブロック図である。図１に示すように、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムは、分散ストレージ１０と、分散ストレージ２０と、ホスト計算機１と、ホスト計算機２とを備える。
【００１３】
分散ストレージ１０は、ノード１０−０〜１０−ｎの１つ以上の任意の数のノードを備え、これらのノードが、例えばEthernet（登録商標）等の通信手段１１で相互に接続されている。ノード１０−０〜１０−ｎは、ＨＤＤ（Hard disk drive）やＳＳＤ（Solid state drive）等の記憶装置を備えた計算機であり、相互にネットワーク接続されているため、任意のノード同士での通信が可能である。
【００１４】
分散ストレージ２０は、ノード２０−０〜２０−ｍの１つ以上の任意の数のノードを備え、これらのノードが、例えばEthernet（登録商標）等の通信手段２１で相互に接続されている。ノード２０−０〜２０−ｍは、ＨＤＤやＳＳＤ等の記憶装置を備えた計算機であり、相互にネットワーク接続されているため、任意のノード同士での通信が可能である。なお、分散ストレージ１０を構成するノード数と分散ストレージ２０を構成するノード数とは、必ずしも同数でなくてよい。換言すれば、図１中のｎとｍとは、同じ値であってもよいし、異なる値であってもよい。
【００１５】
ホスト計算機１は、分散ストレージ１０内の任意のノードと例えばFibreChannel等の通信手段１２で接続され、分散ストレージ１０において論理的に構成される論理ディスク、より詳細には、ノード１０−０〜１０−ｎによって論理的に構成される論理ディスク内のファイルを読み書きする。
【００１６】
ホスト計算機２は、分散ストレージ２０内の任意のノードと例えばFibreChannel等の通信手段２２で接続され、分散ストレージ２０において論理的に構成される論理ディスク、より詳細には、ノード２０−０〜２０−ｍによって論理的に構成される論理ディスク内のファイルを読み書きする。
【００１７】
分散ストレージ１０と、例えばＷＡＮ（Wide area network）等のネットワーク通信網３とは、例えばEthernet（登録商標）等の通信手段１３で接続され、また、分散ストレージ２０とネットワーク通信網３とは、例えばEthernet（登録商標）等の通信手段２３で接続され、分散ストレージ１０と分散ストレージ２０とは相互に通信が可能である。なお、ネットワーク通信網３は必ずしも必要ではなく、分散ストレージ１０と分散ストレージ２０とは、通信手段１３または通信手段２３によって直接接続されていてもよい。
【００１８】
続いて、図２を参照して、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの特徴部分である分散ストレージ内のノードの構成について説明する。なお、図２では、分散ストレージ１０のノード１０−０の構成を例示しているが、ノードの構成は、分散ストレージ１０内のノード１０−０〜１０−ｎおよび分散ストレージ２０内のノード２０−０〜２０−ｍのすべてにおいて共通である。
【００１９】
図２に示すように、ノード１０−０は、１つ以上の任意の数の記憶装置１００−０〜１００−ｋを備える。ノード１０−０においては、この記憶装置１００−０〜１００−ｋに対して、ファイルシステム（File System）１０１−０〜１０１−ｋがそれぞれ構築される。また、ノード１０−０は、インターフェイス制御部１１０と、ノード制御部１２０と、論理／物理マップ制御部１３０と、分散配置制御部１４０とを備える。これらは、例えば、電子回路として構築され、または、コンピュータ・プログラムをプロセッサが実行することによって具現化される。また、ノード１０−０は、構成情報テーブル１５０と、リモート構成情報テーブル１５１と、分散配置マップ１６０と、リモート分散配置マップ１６１とを備える。これらは、例えば、フラッシュメモリ等の（記憶装置１００−０〜１００−ｋとは別の）記憶装置に保持される。
【００２０】
インターフェイス制御部１１０は、ノード１０−０と接続されたホスト計算機１と通信する機能と、分散ストレージ１０内の任意の他ノード１０−１〜１０−ｎと通信する機能と、リモートに設置された分散ストレージ２０内の任意ノード２０−０〜２０−ｍと通信する機能とを備える。
【００２１】
ノード制御部１２０は、インターフェイス制御部１１０と、論理／物理マップ制御部１３０と、分散配置制御部１４０との入出力や、入出力するデータの処理、その他汎用的な処理を行うことで、ノード１０−０全体を制御する。
【００２２】
論理／物理マップ制御部１３０は、分散ストレージ１０に対する論理ディスクへの読み書き要求を、物理的な記憶装置１００−０〜１００−ｋ、あるいは他ノード１０−１〜１０−ｎへの読み書きに変換し、分散ストレージ１０内の記憶装置の適切な位置に対してデータの読み書きを行う。
【００２３】
分散配置制御部１４０は、図３に示すような構成情報テーブル１５０およびリモート構成情報テーブル１５１と、図４に示すような分散配置マップ１６０およびリモート分散配置マップ１６１とを管理する。つまり、分散配置制御部１４０は、構成情報保持機能（構成情報保持手段）と、マップ情報保持機能（マップ情報保持手段）とを有している。また、分散配置制御部１４０は、構成情報テーブル１５０から分散配置マップ１６０を作成し、リモート構成情報テーブル１５１からリモート分散配置マップ１６１を作成する。この分散配置マップ１６０およびリモート分散配置マップ１６１の作成については後述する。つまり、分散配置制御部１４０は、マップ情報作成機能（マップ情報作成手段）を有している。さらに、分散配置制御部１４０は、リモートの分散ストレージ２０の任意のノードから分散ストレージ２０の構成情報テーブル１５０を取得する。つまり、分散配置制御部１４０は、構成情報取得機能（構成情報取得手段）を有している。
【００２４】
図３に示すように、構成情報テーブル１５０は、分散ストレージ１０内の全ノード１０−０〜１０−ｎのノード番号（それぞれのノードに割り当てられた一意の番号）列と、ノードアドレス（インターフェイス制御部１１０がノードを特定するためのアドレス。例えば、ＩＰ（Internet Protocol）アドレスやＳＣＳＩ（Small Computer System Interface）アドレス）列と、記憶装置番号（ノード１０−０の記憶装置に一意に割り当てられた番号）列と、記憶装置ＩＤ（分散ストレージ１０内の記憶装置に一意に割り当てられたＩＤ）列とから構成される。
【００２５】
リモート構成情報テーブル１５１は、分散配置制御部１４０が、リモートの分散ストレージ２０から取得した分散ストレージ２０の構成情報テーブル１５０である。なお、このリモート構成情報テーブル１５１は、リモート分散配置マップ１６１の生成に使用されるので、分散ストレージ２０における構成の変更に適応的に対応するために、分散配置制御部１４０は、定期的に、リモートの分散ストレージ２０から分散ストレージ２０の構成情報テーブル１５０を取得し、必要に応じて、リモート構成情報テーブル１５１とリモート分散配置マップ１６１とを更新することが好ましい。つまり、分散配置制御部１４０は、構成情報更新機能（構成情報更新手段）やマップ情報更新機能（マップ情報更新手段）を有することが好ましい。あるいは、分散ストレージ１０と分散ストレージ２０との間で、自ノードの構成の変更が生じた際、その旨を通知し合い、この通知を受けて、構成情報テーブル１５０の再取得を行うようにしてもよい。この通知は、例えば、分散配置制御部１４０が、構成情報テーブル１５０が更新されたことを通知するものであってもよいし、分散配置マップ１６０が更新されたことを通知するものであってもよい。つまり、分散配置制御部１４０は、構成情報更新通知機能（構成情報更新通知手段）やマップ情報更新通信機能（マップ情報更新通知手段）を有してもよい。
【００２６】
分散配置マップ１６０は、分散配置制御部１４０が、構成情報テーブル１５０を入力として生成するマップである。図４に示すように、分散配置マップ１６０は、分散グループ番号という固定数の通し番号（ここでは、０〜９９を想定する）と、記憶装置ＩＤとをマップするものである。記憶装置ＩＤと分散グループ番号とをマッピングするアルゴリズムは種々考えられるが、例えば、セフ（ceph）のストローバケット（Straw Bucket）アルゴリズムが知られている。このアルゴリズムを適用し、２個以上の入力からハッシュ値を求めるハッシュ関数（例えば、Jenkinsハッシュ関数）を用い、分散グループ番号と、それぞれの記憶装置ＩＤとを引数としてハッシュ値を計算し、最も大きなハッシュ値を生成する記憶装置ＩＤを選択し、その分散グループに割り当てる。本実施形態はこのアルゴリズムに限定するものではないが、一般によく使われているアルゴリズムを採用することが好ましい。
【００２７】
リモート分散配置マップ１６１は、分散配置制御部１４０が、リモート構成情報テーブル１５１を入力として生成するマップである。マッピングアルゴリズムは、リモートの分散ストレージ２０内の分散配置マップ１６０を生成するアルゴリズムと同じものが使用される。分散ストレージ１０と分散ストレージ２０とが、分散配置マップ１６０を生成するにあたり、同じマッピングアルゴリズムを使用する場合、分散配置制御部１４０は、分散配置マップ１６０を生成するアルゴリズムを援用して、リモート分散配置マップ１６１を生成することができる。
【００２８】
一方、分散ストレージ１０と分散ストレージ２０とが、分散配置マップ１６０を生成するにあたり、異なるマッピングアルゴリズムを使用する場合、分散配置制御部１４０は、例えば、分散ストレージ１０内に予め保持される、分散ストレージ２０が分散配置マップ１６０の生成に使用するマッピングアルゴリズムを用いて、リモート分散配置マップ１６１を生成する。または、分散配置制御部１４０が、リモートの分散ストレージ２０から、分散ストレージ２０が分散配置マップ１６０の生成に使用するマッピングアルゴリズムを取得する機能（アルゴリズム取得機能［アルゴリズム取得手段］）を備えてもよい。さらには、分散配置制御部１４０が、リモートの分散ストレージ２０から、分散ストレージ２０の分散配置マップ１６０そのものを取得する機能（マップ情報取得機能［マップ情報取得手段］）を備えてもよい。
【００２９】
また、リモート構成情報テーブル１５１の説明でも触れたように、分散ストレージ２０における構成の変更に適応的に対応するために、分散配置制御部１４０は、このリモート分散配置マップ１６１を、例えば、分散ストレージ２０の構成情報テーブル１５０が（定期的または通知を受けて）新たに取得される毎に生成し直したり、定期的または通知を受けて、分散ストレージ２０から新たに取得し直したりすることが好ましい。
【００３０】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの全体処理＞
続いて、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの全体処理について説明する。
【００３１】
図５は、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの全体処理を表すフローチャートである。
【００３２】
分散ストレージ１０の各ノード１０−０〜１０−ｎは、ホスト計算機１が自ノードに対して行った更新に関する更新データを、ファイルシステム１０１−０〜１０１−ｋから取得する（Ｓ１）。
【００３３】
各ノード１０−０〜１０−ｎは、取得した更新データとリモート分散配置マップ１６１とからリモートの分散ストレージ２０のコピー先ノードを計算する（Ｓ２）。
【００３４】
各ノード１０−０〜１０−ｎは、計算により得られたリモートの分散ストレージ２０のコピー先ノードに対して更新データのコピーを実行する（Ｓ３）。
【００３５】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの各種詳細処理＞
続いて、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの各種詳細処理について説明する。
【００３６】
図６は、ホスト計算機１が分散ストレージ１０のノード１０−０〜１０−ｎに対してファイルを読み書きした場合のノードの処理を表すフローチャートである。
【００３７】
ホスト計算機１のオペレーティングシステムが、分散ストレージ１０の任意のノードに対してディスクの認識要求を発行すると、その任意のノードは、仮想的なディスク装置の情報を返す。仮想的なディスク装置の情報を返す機能は、ノード１０−０〜１０−ｎのすべてが備えている。仮想的なディスク装置とは、分散ストレージ１０において論理的に構成される論理ディスク、より詳細には、ノード１０−０〜１０−ｎによって論理的に構成される論理ディスクである。ホスト計算機１は、この仮想的なディスク装置の情報により、分散ストレージ１０のノード１０−０〜１０−ｎを論理ディスクとして認識し、この論理ディスクに対してファイルを読み書きできるようになる。なお、ホスト計算機１とノード１０−０〜１０−ｎとの接続がFibreChannelの場合、論理ディスクは、ＳＣＳＩ規格のＬＵ（Logical Unit）として認識される。ホスト計算機１と分散ストレージ１０との間は、ホスト計算機１と分散ストレージ１０の複数のノード１０−０〜１０−ｎとが接続される。そのため、ホスト計算機１のオペレーティングシステムは、同一のＬＵが複数接続されたように認識する。ホスト計算機１は、オペレーティングシステムのマルチパス機能によって、１つのパス（すなわち１つのノード）を選択し、ファイルの読み書きを要求する。ホスト計算機１に認識させ得る論理ディスクは１つに限らない。すなわち、分散ストレージ１０のノード１０−０〜１０−ｎを複数の論理ディスクとしてホスト計算機１に認識させることもできる。
【００３８】
インターフェイス制御部１１０は、ホスト計算機１から論理ディスクへの読み書き要求を受信すると、ノード制御部１２０に要求を渡す（Ｓ１００）。
【００３９】
ノード制御部１２０は、読み書き要求された読み書き対象となる領域を、チャンク（chunk）という固定長（例えば、１２８ＫByte）のブロックに分割し、チャンクを分散配置制御部１４０に渡す（Ｓ１０２）。
【００４０】
分散配置制御部１４０は、分散配置マップ１６０とチャンク番号（論理ディスクをチャンクに分割して、論理ディスク先頭のチャンクから順番に割り当てた通番）とを入力として記憶装置ＩＤを計算し、また、構成情報テーブル１５０からノード番号を特定して、ノード制御部１２０に返す（Ｓ１０２）。図７は、このノード番号および記憶装置ＩＤを選択する処理の詳細を表すフローチャートである。
【００４１】
分散配置制御部１４０は、チャンク番号のハッシュ値を計算し（Ｓ２００）、このハッシュ値を分散配置マップ１６０の分散グループ数（すなわち行数）で割り、剰余を計算する（Ｓ２０１）。分散配置制御部１４０は、分散配置マップ１６０の分散グループ列において、剰余と一致する分散グループを選択し、その分散グループにマップされた記憶装置ＩＤを取得する（Ｓ２０２）。また、分散配置制御部１４０は、構成情報テーブル１５０と記憶装置ＩＤとからノード番号を特定し、ノード制御部１２０に記憶装置ＩＤとノード番号とを返す（Ｓ２０３）。
【００４２】
図６に戻る。
【００４３】
ノード制御部１２０は、取得されたノード番号が自ノードに割り当てられたノード番号であるか判定する（Ｓ１０３）。自ノードでない場合（Ｓ１０３，Ｎｏ）、ノード制御部１２０は、構成情報テーブル１５０とノード番号とからノードアドレスを調べ、インターフェイス制御部１１０を介して、そのノード番号に該当する他のノードに読み書き要求を発行する（Ｓ１０４）。この読み書き要求を受信したノードは、本フローチャートと同一の処理によってファイルの読み書きを処理する。
【００４４】
自ノードの場合（Ｓ１０３，Ｙｅｓ）、ノード制御部１２０は、読み書き要求を調べ、書き込み要求なのか、読み込み要求なのかを判定する（Ｓ１０５）。
【００４５】
書き込み要求の場合（Ｓ１０５，Ｙｅｓ）、ノード制御部１２０は、その記憶装置ＩＤが指す記憶装置について構築されるファイルシステムにチャンク番号のファイルが存在するか調べる（Ｓ１０６）。ここで、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおけるファイルシステム上のファイル構造について説明する。
【００４６】
図８は、各記憶装置について構築されるファイルシステムに作成するディレクトリおよびファイルの構造と、それらの命名規則とを表すものである。
【００４７】
図８に示すように、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムにおいては、実データに関しては、／ＰＶ−＜記憶装置ＩＤ＞という記憶装置ＩＤを示すディレクトリを作成し、このディレクトリ以下に、＜チャンク番号＞というファイル名のファイルを作成する。このチャンク番号をファイル名にもつファイルに、そのチャンク番号が指すチャンクの実データを書き込む。また、論理ディスク毎に、／ＬＶ−＜ＬＵ番号＞というディレクトリを作成し、このディレクトリ以下に、実データが書き込まれたファイルと論理ディスクのチャンクとをマッピングする／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞のシンボリックリンクを、＜チャンク番号＞というファイル名で作成する。図９は、論理ディスク０のチャンク番号００００００００および０００００１００と、論理ディスク１のチャンク番号０００１２０２０とにデータが書き込まれた例を示している。
【００４８】
再び図６を参照する。
【００４９】
チャンク番号のファイルが存在しない場合（Ｓ１０７，Ｎｏ）、ノード制御部１２０は、図８および図９を参照して説明した通りにファイルを作成する（Ｓ１０８）。ファイルが既に存在する場合（Ｓ１０７，Ｎｏ）、ノード制御部１２０は、スナップショットが存在する状態かどうか、つまり、そのチャンク番号のファイルのデータがスナップショットか否かを判定する（Ｓ１０９）。スナップショットについては後述する。また、スナップショットが存在する状態かどうかの判定と、スナップショットが存在する状態の場合（Ｓ１０９，Ｙｅｓ）における処理（Ｓ１１２，Ｓ１１３）とについても後述する。スナップショットが存在しない状態の場合、つまり、そのチャンク番号のファイルのデータがスナップショットではない場合（Ｓ１０９，Ｎｏ）、ノード制御部１２０は、そのファイルにデータを上書きする（Ｓ１１０）。
【００５０】
一方、読み込み要求の場合（Ｓ１０５，Ｎｏ）、ノード制御部１２０は、そのチャンク番号のチャンクファイルを読み込む（Ｓ１１１）。なお、チャンクファイルが存在しない場合、すなわち、書き込んだことがないチャンクに対して読み込み要求が来た場合、例えば、オールゼロのデータをホスト装置１へ返すものとする。
【００５１】
ノード制御部１２０は、読み書き対象の全チャンクついて処理が完了すると、読み書き処理を終了する（Ｓ１１４）。
【００５２】
以上で、ホスト計算機１が分散ストレージ１０に対してファイルを読み書きする処理の流れを説明した。
【００５３】
次に、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムが非同期リモートレプリケーションを実現するために組み込むスナップショット（Snapshot）の処理を説明する。つまり、ノード制御部１２０が有するリンク情報作成機能（リンク情報作成手段）について説明する。なお、本実施形態におけるスナップショットの処理とは、論理ディスクへの読み書きを継続したまま、論理ディスクのある静止点の情報を保持することを指す。
【００５４】
図１０は、スナップショットを作成する処理を表すフローチャートである。
【００５５】
インターフェイス制御部１１０は、例えば、ホスト計算機１から論理ディスクに対するスナップショット作成要求を受けると、分散ストレージ１０の全ノード１０−０〜１０−ｎのノード制御部１２０に対して、全記憶装置１００−ｎ〜１００−ｋ上のファイルシステム１０１−０〜１０１−ｋに当該論理ディスクのスナップショットディレクトリを作成するよう要求する（Ｓ３００）。
【００５６】
ノード制御部１２０は、スナップショットディレクトリ作成の要求を受けると、自ノード内のすべての記憶装置１００−０〜１００−ｋのファイルシステム１０１−０〜１０１−ｋに論理ディスクのスナップショットディレクトリを作成する（Ｓ３０１）。ここで、スナップショット作成時のファイル構造を説明する。
【００５７】
図１１は、スナップショット作成時のディレクトリおよびファイルの構造と、それらの命名規則とを表すものである。スナップショット作成時、ノード制御部１２０は、図１１中の［スナップショット作成時］に記載のように、／ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞というディレクトリを作成する（Ｓ３０１）。ＬＵ番号は、スナップショットの元となる論理ディスクのＬＵ番号である。世代番号は、スナップショットの０から連番で付与する番号であり、番号が大きいほど新しい世代であることを示す。
【００５８】
ノード制御部１２０は、スナップショットの対象となる論理ディスクにおいて、同一記憶装置内の当該論理ディスクのディレクトリ（／ＬＶ−＜ＬＵ番号＞）以下の全ファイルのシンボリックリンクを作成する（Ｓ３０２）。
【００５９】
ノード制御部１２０は、全記憶装置、全ノードに対して処理が完了すると、スナップショット作成を終了する（Ｓ３０３）。
【００６０】
次に、スナップショットを作成した論理ディスクに対して書き込みがあった場合の処理を説明する。これは、図６のフローチャートにおいて、チャンク番号のファイルが存在する場合であって（Ｓ１０７，Ｙｅｓ）、そのファイルのデータがスナップショットである場合（Ｓ１０９，ＹＥＳ）に相当する。つまり、スナップショットが存在する状態の場合に相当する。スナップショットが存在する状態かどうかは、記憶装置のファイルシステム上における、読み書き先論理ディスクのＬＵ番号を含む／ＳＮＡＰ−＜ＬＵ番号＞−＊というディレクトリの有無を確認し、そのディレクトリが存在し、かつ、／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜（最新の）世代番号＞というファイルが存在しなければ、スナップショットが存在する状態と判定する。
【００６１】
スナップショットが存在する状態の場合、つまり、チャンク番号のファイルのデータがスナップショットである場合、ノード制御部１２０は、図１１中の［スナップショット作成後に論理ディスクを更新］に記載のように、書き込み対象のチャンク番号のファイルである／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞を、／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞にリネームする。また、ノード制御部１２０は、スナップショットディレクトリ以下の既存のシンボリックリンク／ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞／＜チャンク番号＞を削除し、／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞のシンボリックリンクを、先に削除した／ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞／＜チャンク番号＞という名前で作成する（Ｓ１１２）。なお、世代が複数存在する場合は、全世代に対してこの処理を実行する。
【００６２】
そして、ノード制御部１２０は、／ＰＶ−＜記憶装置ＩＤ＞ディレクトリに＜チャンク番号＞のファイルを新たに作成し、この作成したファイルにチャンク内のデータを書き込む（Ｓ１１３）。
【００６３】
図１２は、図９の状態から、ＬＵ０の世代番号０のスナップショットと、ＬＵ１の世代番号０のスナップショットとを作成した後、ＬＵ０のチャンク番号０００００１００を更新した例を表している。図１２について補足すると、／ＳＮＡＰ−０−０／０００００１００というシンボリックリンクが、／ＬＶ−０／０００００１００、つまり／ＰＶ−０／０００００１００へマッピングするものから、／ＰＶ−０／０００００１００−ＳＮＡＰ−０−０へのマッピングするものへと変更される。なお、スナップショットを削除する場合は、／ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞ディレクトリおよび／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜世代番号＞ファイルを削除すればよい。
【００６４】
以上でスナップショットについて説明した。スナップショットを作成すると、ある静止点における論理ディスクの仮想的な複製が生成される。ホスト計算機１と、分散ストレージ１０内のノード１０−０〜１０−ｎと、リモートの分散ストレージ２０内のノード２０−０〜２０−ｍとは、インターフェイス制御部１１０を通じて、任意のノードのスナップショットへのアクセスが可能である。つまり、本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムは、スナップショットを作成することで、分散ストレージ１０内のノード１０−０〜１０−ｎが、各々自ノードのスナップショットへアクセス可能な環境を作り出す。
【００６５】
次に、分散ストレージ間における非同期リモートレプリケーションの処理について説明する。つまり、ノード制御部１２０が有するデータ複製成機能（データ複製手段）について説明する。図１３は、リモートレプリケーションの初期作成、すなわち分散ストレージ１０の論理ディスク内の全データを、リモートの分散ストレージ２０の論理ディスクに複製する処理を表すフローチャートである。
【００６６】
ホスト計算機１が、リモートレプリケーションのコピー元となる論理ディスクのＬＵ番号と、リモートの分散ストレージ２０の任意のノードのノードアドレスと、リモートレプリケーションのコピー先となる論理ディスクのＬＵ番号とを引数とし、分散ストレージ１０の任意のノードに対してリモートレプリケーション作成の要求を発行すると、ノードのインターフェイス制御部１１０は、この要求を受信し、ノード制御部１２０に渡す（Ｓ４００）。
【００６７】
ノード制御部１２０は、引数のノードアドレスが指すリモートの分散ストレージのノードから（リモートの分散ストレージの）構成情報テーブル１５０を取得し、リモート構成情報テーブル１５１として保持する（Ｓ４０１）。
【００６８】
分散配置制御部１４０は、リモート構成情報テーブル１５１からリモート分散配置マップ１６１を作成して保持する（Ｓ４０２）。分散配置マップの生成方法は、前述した分散配置マップ１６０の生成方法と同じである。前述したように、要求側の分散ストレージがリモート分散配置マップ１６１を生成するのではなく、リモート側の分散ストレージで分散配置マップ１６０を作成し、その分散配置マップ１６０を要求側の分散ストレージが取得してもよい。さらには、前述したように、要求側の分散ストレージとリモート側の分散ストレージ２０とで異なるマッピングアルゴリズムを用いる場合、要求側の分散ストレージは、リモート側の分散ストレージからマッピングアルゴリズムを取得し、その取得したマッピングアルゴリズムを使用してリモート分散配置マップ１６１を作成してもよい。
【００６９】
ノード制御部１２０は、他のノードのノード制御部１２０と共に、リモートレプリケーションのコピー元の論理ディスクのスナップショットを作成する（Ｓ４０３）。つまり、自身がスナップショットの作成を行うと共に、他のノードのノード制御部１２０に対して、スナップショットの作成を行うことを要求する。そして、ノード制御部１２０は、分散ストレージ内の全ノードのノード制御部１２０に対し、全記憶装置についてＳ４０６，Ｓ４０７の処理を実行するよう要求する（Ｓ４０４）。
【００７０】
この要求を受けた各ノードのノード制御部１２０は、各記憶装置のファイルシステムに存在する、前記スナップショットのスナップショットディレクトリ以下に生成されたチャンクファイル毎にＳ４０６およびＳ４０７の処理を実行する（Ｓ４０５）。
【００７１】
より詳細には、各ノードのノード制御部１２０は、まず、リモート構成情報テーブル１５１と、リモート分散配置マップ１６１と、チャンクファイルのファイル名であるチャンク番号とを引数とする、分散配置制御部１４０による図７に表される処理により、リモートの分散ストレージ２０のノード番号と記憶装置ＩＤとを取得する（Ｓ４０６）。
【００７２】
次に、各ノードのノード制御部１２０は、取得したノード番号が指すリモートのノードに対し、リモートの分散ストレージ内のリモートレプリケーションのコピー先となる論理ディスクにチャンクファイルの書き込みを要求する（Ｓ４０７）。要求を受けたリモートのノードのノード制御部１２０は、図６に表される処理により、記憶装置にチャンクファイルを書き込む。
【００７３】
分散ストレージの全ノードが、リモートの分散ストレージに対してスナップショットのすべてのチャンクファイルの書き込みを完了すると、リモートレプリケーションの作成は完了となる（Ｓ４０８，Ｓ４０９）。
【００７４】
以上の処理により、分散ストレージ１０の論理ディスクのある静止点のデータが、リモートの分散ストレージ２０の論理ディスクにコピーされ、分散ストレージ１０のある静止点の論理ディスクの複製がリモートの分散ストレージ２０に作成される。
【００７５】
次に、リモートレプリケーションの非同期コピー処理について説明する。分散ストレージ１０の論理ディスクに対しては、ホスト計算機１からファイルの書き込みが行われるため、リモートレプリケーションを作成した後、時間が経過すると、分散ストレージ１０と分散ストレージ２０のリモートレプリケーション先の論理ディスクとは不一致となる。したがって、非同期コピー処理によって、定期的に、分散ストレージ１０の論理ディスクの更新データを分散ストレージ２０のリモートレプリケーション先の論理ディスクに書き込む必要がある。
【００７６】
図１４は、リモートレプリケーションの非同期コピー処理の手順を表すフローチャートである。非同期コピー処理は、例えば、リモートレプリケーションの初期作成時にホスト計算機１からリモートレプリケーション作成の要求を受けた、分散ストレージ内のあるノードからの要求に基づき、各ノードのノード制御部１２０が定期的に実行する。
【００７７】
例えば、分散ストレージ内のあるノードのノード制御部１２０は、非同期コピー処理を開始する場合、他のノードのノード制御部１２０と共に、リモートレプリケーション元の論理ディスクのスナップショットを作成する（Ｓ５００）。つまり、自身がスナップショットの作成を行うと共に、他のノードのノード制御部１２０に対して、スナップショットの作成を行うことを要求する。
【００７８】
スナップショットを作成すると、分散ストレージ内のあるノードのノード制御部１２０は、他のノードのノード制御部１２０と共に、全記憶装置についてＳ５０１〜Ｓ５０８の処理を実行する（Ｓ５０１）。つまり、自身が自ノード内の記憶装置についてＳ５０１〜Ｓ５０８の処理を実行すると共に、他のノードのノード制御部１２０に対して、各ノードの記憶装置についてＳ５０１〜Ｓ５０８の処理を実行することを要求する。以下、１つのノード制御部１２０に着目して説明を行う。
【００７９】
ノード制御部１２０は、前世代のスナップショット作成以降に論理ディスクに対して書き込みを行ったチャンクを探す（Ｓ５０２）。具体的には、ノードの全記憶装置のファイルシステムから前世代のスナップショットディレクトリ／ＳＮＡＰ−＜ＬＵ番号＞−＜前世代番号＞を探し、そのディレクトリ以下のチャンクファイルのシンボリックリンク先が／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜前世代番号＞になっているもの（シンボリックリンク先のファイルの接尾辞が＊−ＳＮＡＰ−＜ＬＵ番号＞−＜前世代番号＞となっているもの）を探す。なお、前世代番号は、Ｓ５００で作成したスナップショットの世代番号の１つ前の世代番号のスナップショットであり、リモートレプリケーション作成後の１回目の非同期コピー処理の場合は、リモートレプリケーション作成時のスナップショットを指し、２回目以降の非同期コピー処理の場合は、前回の非同期コピー処理時に作成したスナップショットを指す。つまり、ノード制御部１２０は、差分データ取得機能（差分データ取得手段）を有する。
【００８０】
ノード制御部１２０は、探したチャンクファイル毎に、Ｓ５０４およびＳ５０５を実行する（Ｓ５０３）。
【００８１】
より詳細には、ノード制御部１２０は、まず、リモート構成情報テーブル１５１と、リモート分散配置マップ１６１と、チャンクファイルのファイル名であるチャンク番号とを引数とする、分散配置制御部１４０による図７に表される処理により、リモートの分散ストレージ２０のノード番号と記憶装置ＩＤとを取得する（Ｓ５０４）。
【００８２】
次に、ノード制御部１２０は、取得したノード番号が指すリモートのノードに対し、リモートの分散ストレージ内のリモートレプリケーションのコピー先となる論理ディスクへのチャンクファイルの書き込みを要求する（Ｓ５０５）。要求を受けたリモートのノードのノード制御部１２０は、図６に表される処理により、記憶装置にチャンクファイルを書き込む。
【００８３】
分散ストレージ１０の全ノードが、前世代のスナップショット作成以降に更新されたすべてのチャンクファイルについて、リモートの分散ストレージ２０のノードに対する書き込みを完了すると（Ｓ５０６，Ｓ５０７）、ノード制御部１２０は、前世代のスナップショットを削除し（Ｓ５０８）、スナップショットの非同期コピー処理が完了となる。前世代のスナップショットの削除は、前述したように、／ＳＮＡＰ−＜ＬＵ番号＞−＜前世代番号＞ディレクトリおよび／ＰＶ−＜記憶装置ＩＤ＞／＜チャンク番号＞−ＳＮＡＰ−＜ＬＵ番号＞−＜前世代番号＞ファイルを削除すればよい。
【００８４】
以上の処理により、リモートレプリケーションの作成以降に更新されたデータを、分散ストレージ２０のノードに対して並列にコピー処理することができる。
【００８５】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの効果＞
以上のように、本実施形態の分散ストレージの非同期リモートレプリケーションシステムによれば、分散ストレージ間で、特定のノードに負荷を集中させることなく、リモートの分散ストレージのノードと並列に非同期コピー処理を行うことが可能になる。また、コピー元のデータを保存しているノードが、リモートのデータ保存先のノードに直接コピーするため、分散ストレージ内のノード間データ転送が発生せず、最短経路で非同期コピー処理を行うことが可能である。また、コピー元のノードがコピー先ノードを計算によって判定できるため、コピー元とコピー先との分散ストレージのノード数および記憶装置数は一致していなくてもよい。
【００８６】
（第２実施形態）
次に、第２実施形態について説明する。
【００８７】
本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムは、論理ディスクのデータを複数の記憶装置に分散して格納することでデータの冗長性をもたせた分散ストレージにおいて、第１実施形態で説明した非同期リモートリモートレプリケーションを実現するものである。
【００８８】
本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムは、基本的に、図１および図２に表される第１実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの構成と同じ構成であるが、分散配置マップ１６０およびリモート分散配置マップ１６１は、複数の記憶装置ＩＤを格納するよう変更する。記憶装置ＩＤには、記憶装置ＩＤ−０、記憶装置ＩＤ−１と序列をつけ、序列（枝番）の若い番号が優先度が高いものとする。図１５は、２個の記憶装置ＩＤを格納した分散配置マップ１６０を表す例である。
【００８９】
分散配置マップ１６０およびリモート分散配置マップ１６１を生成する処理は、第１実施形態と同様、セフ（ceph）のストローバケット（Straw Bucket）アルゴリズムを適用することができる。つまり、分散グループ番号と、各記憶装置ＩＤと、序列の番号とを入力（引数）として、多値ハッシュ関数（例えば、Jenkinsハッシュ関数）を用いてハッシュ値を求め、最もハッシュ値の大きな記憶装置ＩＤを選択することができる。また、分散配置マップ１６０の各行の記憶装置ＩＤの組み合わせは、同一ノードの記憶装置ＩＤの組み合わせとならないよう、ノード間で分散させるようにすることが、ノード障害に耐えるという観点からは好ましい。
【００９０】
本実施形態におけるファイルの読み書き処理は、基本的に、第１実施形態において説明した、図５乃至図７に表される処理と同じであるが、図６中のチャンクファイルの読み書き処理（Ｓ１０８，Ｓ１１０，Ｓ１１１，Ｓ１１２，Ｓ１１３）において読み書きエラーが発生した場合、ノード制御部１２０は、分散配置制御部１４０を介して分散配置マップ１６０のエラーが発生した記憶装置ＩＤに障害を表すマークをつけ、エラーを返す。本実施形態では、図１５に表されているように、障害が発生した記憶装置ＩＤに−１をマークしている。
【００９１】
また、図６のＳ１０２の処理、具体的には、図７のＳ２０２の処理において、分散配置制御部１４０は、−１以外の複数の記憶装置ＩＤからなる記憶装置ＩＤリストを返す。そして、ノード制御部１２０は、記憶装置ＩＤリストのすべての記憶装置ＩＤについて、Ｓ１０３以降を実行する。
【００９２】
以上の処理により、ホスト計算機１が論理ディスクへ書き込んだデータは、複数の記憶装置に格納される。ノードまたは記憶装置に障害が発生した場合、ホスト計算機１にエラーが返るため、ホスト計算機１のオペレーティングシステムのマルチパス機能によって、別のパス、すなわち別のノードに読み書きが再発行され、冗長化された別の記憶装置に書き込まれる。
【００９３】
スナップショットを作成する処理は、基本的に、第１実施形態において説明した、図１０に表される処理の通りであるが、スナップショットを作成するときに、記憶装置へのシンボリックリンク作成に失敗した場合、ノード制御部１２０は、分散配置制御部１４０を介して分散配置マップ１６０の該当の記憶装置ＩＤに障害を示すマークをつける。
【００９４】
リモートレプリケーションの作成処理は、基本的に、第１実施形態において説明した、図１３に表される処理の通りであるが、Ｓ４０６の前に１つ処理を追加し、Ｓ４０６およびＳ４０７を次のように変更する。
【００９５】
Ｓ４０６の前に、ノード制御部１２０は、スナップショットのチャンクファイルのチャンク番号を引数とする、分散配置制御部１４０による図７に示される処理により、記憶装置ＩＤリストを取得する。ノード制御部１２０は、Ｓ４０５で対象となった記憶装置が記憶装置ＩＤリストの中で最も優先度の高いＩＤであればＳ４０６およびＳ４０７を実行し、それ以外であれば何もしないものとする。
【００９６】
Ｓ４０７において、ノード制御部１２０は、チャンク番号とリモート分散配置マップ１６１とを引数とする、分散配置制御部１４０による図７に示される処理により、記憶装置ＩＤリストを取得する。そして、ノード制御部１２０は、記憶装置ＩＤリストから最も優先度の高い記憶装置ＩＤとそのノード番号とを取得し、Ｓ４０７を実行する。Ｓ４０８が成功すると、ノード制御部１２０は、そのチャンクファイルのコピーを終了し、失敗すると、記憶装置ＩＤリストから次に優先度の高い記憶装置ＩＤとそのノード番号とを取得し、Ｓ４０８を実行する。ノード制御部１２０は、Ｓ４０８が成功するまで、次に優先度の高い記憶装置ＩＤとそのノード番号とを取得していきながら繰り返す。
【００９７】
リモートレプリケーションの非同期コピー処理は、基本的に、第１実施形態において説明した、図１４で表される処理と同じであるが、Ｓ５０４の前に１つ処理を追加し、Ｓ５０４およびＳ５０５を次のように変更する。
【００９８】
Ｓ５０４の前に、ノード制御部１２０は、Ｓ５０２で取得したチャンクファイルのチャンク番号を引数とする、分散配置制御部１４０による図７に示される処理により、記憶装置ＩＤリストを取得する。ノード制御部１２０は、Ｓ５０１で対象となった記憶装置が記憶装置ＩＤリストの中で最も優先度の高いＩＤであればＳ５０４およびＳ５０５を実行し、それ以外であれば何もしないものとする。
【００９９】
Ｓ５０４において、ノード制御部１２０は、チャンク番号とリモート分散配置マップ１６１とを引数とする、分散配置制御部１４０による図７に示される処理により、記憶装置ＩＤリストを取得する。そして、ノード制御部１２０は、記憶装置ＩＤリストから最も優先度の高い記憶装置ＩＤとそのノード番号とを取得し、Ｓ５０５を実行する。Ｓ５０５が成功すると、ノード制御部１２０は、そのチャンクファイルのコピーを終了し、失敗すると、記憶装置ＩＤリストから次に優先度の高い記憶装置ＩＤとそのノード番号とを取得し、Ｓ５０５を実行する。ノード制御部１２０は、Ｓ５０５が成功するまで、次に優先度の高い記憶装置ＩＤとそのノード番号とを取得していきながら繰り返す。
【０１００】
以上の処理により、分散ストレージ内に複製されたデータのうち、最も優先度の高い記憶装置に格納されたデータのみが、リモートの分散ストレージ２０へのコピー対象となるため、同一データが複数回コピーされることなく、リモートレプリケーションを実現できる。
【０１０１】
また、リモートレプリケーションがリモートの分散ストレージ２０にコピー中に、分散ストレージ２０においてノード障害や記憶装置障害が発生する可能性がある。ノード障害の場合、前述したように、Ｓ４０８やＳ５０５でエラーを検出し、別のノードに再発行することで対応する。記憶装置障害の場合、分散ストレージ２０の論理ディスク読み書き処理において、冗長化された別の記憶装置にデータがコピーされる。したがって、リモートレプリケーションの作成処理や非同期コピー処理中にリモートの分散ストレージ２０にノード障害や記憶装置障害が発生しても問題はない。
【０１０２】
しかし、コピー要求の再発行や、分散ストレージ２０内においてノード間通信が発生するため、コピー性能が低下する。したがって、分散ストレージ１０が保持するリモート分散配置マップ１６１と分散ストレージ２０の分散配置マップ１６０が不一致となる時間をできるだけ短くすることが好ましい。そこで、前述したように、分散ストレージ１０のリモート分散配置マップ１６１と分散ストレージ２０の分散配置マップ１６０とを一致化させる機能をもつこととする。より詳細には、分散ストレージ１０の各ノード（分散配置制御部１４０）が、定期的に分散ストレージ２０の任意のノードから定期的に分散配置マップ１６０を取得し、リモート分散配置マップ１６１を更新する。または、分散ストレージ２０において障害が発生し、分散ストレージ２０の分散配置マップ１６０に障害を表すマークを書き込むタイミングで、分散配置制御部１４０が、障害が発生した記憶装置ＩＤを分散ストレージ１０の全ノードに通知する。後者の手段の方が、ポーリング負荷がないことと、前記リモート分散配置マップの不一致となる時間が短いため好ましい。
【０１０３】
また、障害以外にも、ノードの追加や削除、記憶装置の追加や削除などの構成変更、コピー先ノードや記憶装置の変更によって、コピー性能が低下するケースも考えられる。この場合も、分散ストレージ１０の各ノード（分散配置制御部１４０）が分散ストレージ２０の任意のノードから構成情報テーブル１５０を取得して、リモート構成情報テーブル１５１として保持し、リモート構成情報テーブル１６１を再生成することで、構成変更によるコピー性能低下を防ぐことができる。分散ストレージ１０とリモートの分散ストレージ２０とが異なるマッピングアルゴリズムを用いる場合、リモート構成情報テーブル１５１と同様に、リモートの分散ストレージ２０からマッピングアルゴリズムを取得し、そのマッピングアルゴリズムを利用してリモート分散配置マップを生成してもよい。
【０１０４】
以上の処理により、リモートの分散ストレージ２０に障害や構成変更が発生してもコピー性能の低下を最小限にすることができる。
【０１０５】
＜本実施形態に係る分散ストレージの非同期リモートレプリケーションシステムの効果＞
以上のように、本実施形態の分散ストレージの非同期リモートレプリケーションシステムによれば、データを複数の記憶装置に格納し、データを冗長化する分散ストレージ間のリモートレプリケーションシステムにおいて、正常時は最も優先度の高い記憶装置をもつノード同士でコピー処理を行い、また、コピー処理中に双方の分散ストレージでノード障害や記憶装置障害が発生しても、コピー処理を中断することなく継続でき、コピー性能の低下を最小限にすることができる。
【０１０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０７】
１，２…ホスト計算機、３…ネットワーク通信網、１０，２０…分散ストレージ、１００…記憶装置、１０１…ファイルシステム、１１０…インターフェイス制御部、１２０…ノード制御部、１３０…物理マップ制御部、１４０…分散配置制御部、１５０…構成情報テーブル、１５１…リモート構成情報テーブル、１６０…分散配置マップ、１６１…リモート分散配置マップ、１６１…リモート構成情報テーブル。
【図１】
2018136596.tif 000003
【図２】
2018136596.tif 000004
【図３】
2018136596.tif 000005
【図４】
2018136596.tif 000006
【図５】
2018136596.tif 000007
【図６】
2018136596.tif 000008
【図７】
2018136596.tif 000009
【図８】
2018136596.tif 000010
【図９】
2018136596.tif 000011
【図１０】
2018136596.tif 000012
【図１１】
2018136596.tif 000013
【図１２】
2018136596.tif 000014
【図１３】
2018136596.tif 000015
【図１４】
2018136596.tif 000016
【図１５】
2018136596.tif 000017