(57)【要約】  分散ストレージシステムの各ストレージシステムは、該分散ストレージシステムに格納される複製データへのアクセス時、複製データの一貫性を保証するデータ同期を制御する強い一貫性制御処理部、必ずしも複製データの一貫性を保証しないデータ同期を制御する弱い一貫性制御処理部、複製データのＩ／Ｏ要求に応答して、複製データの特性に応じて予め定めたポリシに応じて、複製データを格納するストレージシステムの数に対応する冗長数を決定し、複製データの特性及びＩ／Ｏ要求を発行した端末の位置に応じて、冗長数に応じた数のストレージシステムを、複数のストレージシステムから選択し、データ同期の制御として、強い一貫性制御処理部、弱い一貫性制御処理部及び一貫性制御不要の一つを選択的に決定するアクセス切替え処理部、並びに、決定したデータ同期の制御に基づいて、選択したストレージシステムにおいて複製データのＩ／Ｏ要求を実行するＩ／Ｏ処理部を有する。
2015033451.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージシステムをネットワークを介して接続した分散ストレージシステムであって、前記複数のストレージシステムに含まれる第１のストレージシステムは、
該分散ストレージシステムに複製して格納される複製データへのアクセス時、アクセスする前記複製データが最新である、前記複製データの一貫性を保証するデータ同期を制御する強い一貫性制御処理部、
前記複製データへのアクセス時、必ずしも前記複製データの一貫性を保証しないデータ同期を制御する弱い一貫性制御処理部、
前記複製データのＩ／Ｏ要求に応答して、前記複製データの特性に応じて予め定めたポリシに応じて、前記複製データを格納する第２のストレージシステムの数に対応する冗長数を決定する冗長数決定部、
前記複製データの特性及び前記Ｉ／Ｏ要求を発行した端末の位置に応じて、前記冗長数に応じた数の前記第２のストレージシステムを、前記複数のストレージシステムから選択する格納先決定部、
前記データ同期の制御として、前記強い一貫性制御処理部、前記弱い一貫性制御処理部及び一貫性制御不要の一つの処理を選択的に決定するアクセス切替え処理部、
並びに、
決定した前記データ同期の制御に基づいて、選択した前記第２のストレージシステムにおいて前記複製データの前記Ｉ／Ｏ要求を実行するＩ／Ｏ処理部を有することを特徴とする分散ストレージシステム。
【請求項２】
請求項１記載の分散ストレージシステムであって、
前記冗長数に応じて選択する前記第２のストレージシステムに、前記端末の位置の近傍のストレージシステムを含むことを特徴とする分散ストレージシステム。
【請求項３】
請求項２記載の分散ストレージシステムであって、
前記第２のストレージシステムは、アクセス応答性を反映した、前記第１のストレージシステムからの地理的及びネットワーク的の少なくとも一方の距離に基づいて選択されることを特徴とする分散ストレージシステム。
【請求項４】
請求項３記載の分散ストレージシステムであって、
前記強い一貫性制御処理部は、前記複製データの一貫性の保証に、前記第１のストレージシステム及び前記第２のストレージシステムに格納する前記複製データの過半数の書き込み完了を確認するＱｕｏｒｕｍを用いることを特徴とする分散ストレージシステム。
【請求項５】
請求項４記載の分散ストレージシステムであって、
前記第１のストレージシステムは、前記第２のストレージシステムの一つであることを特徴とする分散ストレージシステム。
【請求項６】
請求項５記載の分散ストレージシステムであって、
前記複製データの特性は、前記Ｉ／Ｏ要求に含まれる前記複製データを格納しているディレクトリのパス名に基づいて判定されることを特徴とする分散ストレージシステム。
【請求項７】
請求項６記載の分散ストレージシステムであって、
前記ポリシは、前記複製データを格納する前記第２のストレージシステムの場所及び信用性に関する条件、並びに、使用するポリシテンプレートを含み、
前記ポリシテンプレートは、前記データ同期の制御の決定に用いる前記一貫性、前記アクセス応答性、及び前記冗長数に関する情報を含むことを特徴とする分散ストレージシステム。
【請求項８】
複数のストレージシステムをネットワークを介して接続した分散ストレージシステムにおけるデータアクセス方法であって、前記複数のストレージシステムに含まれる第１のストレージシステムは、
複製データのＩ／Ｏ要求に応答して、前記複製データの特性に応じて予め定めたポリシに応じて、前記複製データを格納する第２のストレージシステムの数に対応する冗長数を決定し、
前記複製データの特性及び前記Ｉ／Ｏ要求を発行した端末の位置に応じて、前記冗長数に応じた数の前記第２のストレージシステムを、前記複数のストレージシステムから選択し、
データ同期の制御として、（1）該分散ストレージシステムに前記複製データへのアクセス時、アクセスする前記複製データが最新である、前記複製データの一貫性を保証するデータ同期を制御する強い一貫性制御、（2）前記複製データへのアクセス時、必ずしも前記複製データの一貫性を保証しないデータ同期を制御する弱い一貫性制御、及び（3）一貫性制御不要の一つを選択的に決定し、
決定した前記データ同期の制御に基づいて、選択した前記第２のストレージシステムにおいて前記複製データの前記Ｉ／Ｏ要求を実行することを特徴とするデータアクセス方法。
【請求項９】
請求項８記載のデータアクセス方法であって、
前記冗長数に応じて選択する前記第２のストレージシステムに、前記端末の位置の近傍のストレージシステムを含むことを特徴とするデータアクセス方法。
【請求項１０】
請求項９記載のデータアクセス方法であって、
前記第２のストレージシステムは、アクセス応答性を反映した、前記第１のストレージシステムからの地理的及びネットワーク的の少なくとも一方の距離に基づいて選択されることを特徴とするデータアクセス方法。
【請求項１１】
請求項１０記載のデータアクセス方法であって、
前記強い一貫性制御処理部は、前記複製データの一貫性の保証に、前記第１のストレージシステム及び前記第２のストレージシステムに格納する前記複製データの過半数の書き込み完了を確認するＱｕｏｒｕｍを用いることを特徴とするデータアクセス方法。
【請求項１２】
請求項１１記載のデータアクセス方法であって、
前記第１のストレージシステムは、前記第２のストレージシステムの一つであることを特徴とするデータアクセス方法。
【請求項１３】
請求項１２記載のデータアクセス方法であって、
前記複製データの特性は、前記Ｉ／Ｏ要求に含まれる前記複製データを格納しているディレクトリのパス名に基づいて判定されることを特徴とするデータアクセス方法。
【請求項１４】
請求項１３記載のデータアクセス方法であって、
前記ポリシは、前記複製データを格納する前記第２のストレージシステムの場所及び信用性に関する条件、並びに、使用するポリシテンプレートを含み、
前記ポリシテンプレートは、前記データ同期の制御の決定に用いる前記一貫性、前記アクセス応答性、及び前記冗長数に関する情報を含むことを特徴とするデータアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ストレージシステム及びそのデータアクセス方法に関する。
【背景技術】
【０００２】
分散ストレージシステムでは、Ｉ／Ｏ処理を分散することで性能を向上させたり、障害に対するデータの保護を行ったりするために、分散した複数のストレージシステムにデータを複製して保存する。分散ストレージシステムで課題となる点は、複製したデータに対して更新が発生した場合の処理方法である。分散ストレージシステム全体で更新データの同期を取ると、複製データの一貫性を保持したまま複製データを更新することができるが、分散したストレージシステム間の同期待ちが発生するため、ＷＲＩＴＥ時（更新時）の性能を犠牲にすることとなる。【０００３】
そこでポリシに応じて、一貫性制御方式を切替えることで、Ｉ／Ｏ性能を向上させる方式が、特許文献1に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００５／０１０８２９８
【発明の概要】
【発明が解決しようとする課題】
【０００５】
広域に分散したストレージシステム上に複製データが存在する場合、データのネットワーク的又は地理的な配置を考慮せずにデータの複製や一貫性制御処理を行うと、アクセスレイテンシが大きくなることが課題である。
【課題を解決するための手段】
【０００６】
開示する分散ストレージシステムは、複数のストレージシステムをネットワークを介して接続したシステムである。複数のストレージシステムに含まれる各ストレージシステムは、該分散ストレージシステムに複製して格納される複製データへのアクセス時、複製データの一貫性を保証するデータ同期を制御する強い一貫性制御処理部、複製データへのアクセス時、必ずしも複製データの一貫性を保証しないデータ同期を制御する弱い一貫性制御処理部、複製データのＩ／Ｏ要求に応答して、複製データの特性に応じて予め定めたポリシに応じて、複製データを格納するストレージシステムの数に対応する冗長数を決定し、複製データの特性及びＩ／Ｏ要求を発行した端末の位置に応じて、冗長数に応じた数のストレージシステムを、複数のストレージシステムから選択し、データ同期の制御として、強い一貫性制御処理部、弱い一貫性制御処理部及び一貫性制御不要の一つを選択的に決定するアクセス切替え処理部、並びに、決定したデータ同期の制御に基づいて、選択したストレージシステムにおいて複製データのＩ／Ｏ要求を実行するＩ／Ｏ処理部を有する。
【発明の効果】
【０００７】
本発明によれば、ネットワーク的又は地理的に分散したストレージシステムにデータを格納、参照する際に、一貫性制御処理を行いつつアクセスレイテンシの悪化を抑止することができる。
【図面の簡単な説明】
【０００８】
【図１】分散ストレージシステムの書込み処理の概要図である。
【図２】分散ストレージシステムの読み出し処理の概要図である。
【図３】分散ストレージシステムの構成例を示すブロック図である。
【図４】ストレージシステムのハードウェア構成を示すブロック図である。
【図５】携帯端末のハードウェア構成を示すブロック図である。
【図６】ストレージヘッドのソフトウェア構成である。
【図７】携帯端末のソフトウェア構成である。
【図８】ストレージ管理表の構成例である。
【図９】テンプレート管理表の構成例である。
【図１０】ポリシ管理表の構成例である。
【図１１】アクセス切替え処理部のフローチャートである。
【図１２】強い一貫性制御処理部のフローチャートである。
【図１３】弱い一貫性制御処理部のフローチャートである。
【図１４】Ｉ／Ｏ処理部のフローチャートである。
【図１５】ポリシ設定を管理するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の一例である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。本発明が本実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【００１０】
以下の説明では、例えば、「ｘｘｘ表」の表現にて各種情報を説明することがあるが、各種情報は表以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために、「ｘｘｘ表」を「ｘｘｘ情報」と呼ぶことがある。
【００１１】
以下の説明では、所定の機能を実現する処理部は、コンピュータのプロセッサ（例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって、適宜に記憶装置（例えば、メモリ）及び／又は通信インタフェース装置（例えば、通信ポート）を用いられながら、所定の機能を実現するプログラムが実行されることで実現される。
【００１２】
分散ストレージシステムへのアクセス時、最新データを参照可能なデータの同期方式を強い一貫性制御、必ずしも最新データを参照可能ではなく、ある程度時間が経つと最新データが参照可能な同期方式を弱い一貫性制御と呼ぶ。換言すると、分散ストレージシステムへ格納される複製データの一貫性を保証するデータ同期制御を強い一貫性制御と呼び、必ずしも一貫性を保証しないデータ同期制御を弱い一貫性制御と呼ぶ。図１及び図２を用いて、強い一貫性制御および弱い一貫性制御の例を説明する。
【００１３】
図１は、本実施形態の分散ストレージシステムの書込み処理の概要図である。分散ストレージシステムは、複数のストレージシステム（単に、ストレージと呼ぶこともある。）がネットワークを介して接続されている。図１を参照して、書き込み処理発生時の本実施形態の分散ストレージシステムの動作を以下に説明する。なお、図１中の実線はデータの流れ、破線は制御情報の流れを示している。
【００１４】
ステップＡ１からＡ６は、ユーザＡが携帯端末１１０のＳＮＳ（Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋｉｎｇ  Ｓｅｒｖｉｃｅ）アプリケーション７１０を利用して、ＳＮＳの課金処理を行う場面を示す。このとき、課金情報の更新は、厳密な一貫性制御が求められるため、強い一貫性制御が選択される。
【００１５】
ユーザＡは、携帯端末１１０のＳＮＳアプリケーション７１０を使い、ストレージ１のアプリケーションサーバ（ＳＮＳサーバ）６１０にアクセスする（ステップＡ１）。ストレージ１のＳＮＳサーバ６１０は、課金情報の更新のためのＷＲＩＴＥ要求をアクセス切替え処理部へ転送する（ステップＡ２）。
【００１６】
アクセス切替え処理部は、ＷＲＩＴＥ要求とポリシ管理表（ＰＴ）を照らし合わせ、課金情報へアクセスするＷＲＩＴＥ要求を強い一貫性制御が必要なＷＲＩＴＥ要求であると判定する。また、課金情報は複製して３拠点へ冗長化することがポリシ管理表に記載されている。そこでアクセス切替え処理部は、複製先のストレージとして、ユーザＡがアクセスしたストレージ１とユーザＡの近傍にあるストレージ２、大規模災害に備えてストレージ１やストレージ２から遠方にあるストレージ４に格納することを選択する（ステップＡ３）。
【００１７】
ここでは、強い一貫性制御としてＱｕｏｒｕｍ（定数）を用いる。Ｑｕｏｒｕｍとは、分散システムにおいて処理の一貫性をとるために使われ、処理を実行する際に過半数の合意を得るという手法である。Ｃをデータの複製数、Ｒを読み出し数（データの複製数Ｃから読み出す複製データの数）、Ｗを書き込み数（データの複製数Ｃへ複製データを書き込んだとき、書き込み完了を確認する数）とすると、Ｒ＋Ｗ＞ＣかつＷ＞Ｃ／２の式を満たすことでデータの一貫性を保証する。これらの式を満足するＲをＲＥＡＤ定数、ＷをＷＲＩＴＥ定数と呼ぶ。図１では、Ｃ＝３、Ｒ＝２、Ｗ＝２であり、ストレージ１、ストレージ２、ストレージ４にデータの複製がある。ストレージ１のアクセス切替え処理部が、ストレージ１、ストレージ２、ストレージ４へ書き込みを行った際に、少なくとも２つのストレージから書き込み完了が返ってくるまで待ってから、ＳＮＳサーバ６１０へ書き込み完了を返すことでデータ書き込みの一貫性を保証する（ステップＡ４、Ａ５，Ａ６）。
【００１８】
以上の処理によって、ユーザＡによる書き込み（課金情報の更新）は、ストレージ１とその近傍にある可能性が高いストレージ２からの書き込み完了が返ってくることが期待できるため、アクセスレイテンシの小さい強い一貫性制御のＷＲＩＴＥを行うことができる。
【００１９】
一方、ステップＢ１からＢ６は、ユーザＢがＳＮＳアプリケーションを利用して、コメントを書き込む場面を示す。ＳＮＳのコメント情報は、必ずしも厳密な一貫性が必要ではないため、最終的にデータの同期が取れる弱い一貫性制御が選択される。
【００２０】
ユーザＢは、携帯端末１１０のＳＮＳアプリケーション７１０を使い、ストレージ３のＳＮＳサーバ６１０にアクセスする（ステップＢ１）。ストレージ３のＳＮＳサーバ６１０は、ＷＲＩＴＥ要求をアクセス切替え処理部へ転送する（ステップＢ２）。
【００２１】
アクセス切替え処理部は、ＷＲＩＴＥ要求とポリシ管理表（ＰＴ）を照らし合わせ、コメント情報のＷＲＩＴＥ要求なので、弱い一貫性制御が必要なＷＲＩＴＥ要求であると判定する。また、コメント情報は複製して３拠点へ冗長化することがポリシ管理表に記載されている。そこで、ストレージ３のアクセス切替え処理部は、複製先のストレージとして、ユーザＢがアクセスしたストレージ３とユーザＢの近傍にあるストレージ４、大規模災害に備えてストレージ３やストレージ４から遠方にあるストレージ１に格納することを選択する（ステップＢ３）。
【００２２】
弱い一貫性制御では、ある時点では、ユーザやＳＮＳサーバ６１０が読み出す複製データの同期が取れている必要はない。そこで例えば、ストレージ３への書き込みが終わった時点でストレージ３のＳＮＳサーバ６１０には書き込み完了を返し、ストレージ１やストレージ４への書き込みは、非同期で実施する。すなわち、ストレージ３への書き込み完了から、ストレージ１およびストレージ４への書込み完了までの間は、複製データの同期が取れていない状態が生じる。このような状態の発生を許容する一貫性制御方式が、弱い一貫性制御である（ステップＢ４、Ｂ５、Ｂ６）。
【００２３】
以上の処理によって、ユーザＢがアクセスしたストレージ３にコメント情報の書き込みを行って書き込み完了を返し、ストレージ１およびストレージ４への書き込み完了を待たないことでアクセスレイテンシの小さい弱い一貫性制御のＷＲＩＴＥを行うことができる。
【００２４】
特に、この本概要で説明したＳＮＳの様な強い一貫性制御が必要なデータ（課金情報など）と、必ずしも厳密な一貫性が必要のないデータ（コメント情報など）が混在する環境において、適切なデータの分散格納をするこができる。
【００２５】
図２は、本実施形態の分散ストレージシステムの読み出し処理概要図である。図２を参照して、読み出し処理発生時の本実施形態の分散ストレージシステムの処理を以下に説明する。なお、図２中の実線はデータの流れ、破線は制御情報の流れを示している。
【００２６】
ステップＡ１からＡ６は、ユーザＡがＳＮＳアプリケーションを利用して、課金情報を参照する場面を示す。課金情報の読み出しは、厳密な一貫性制御が求められるため、強い一貫性制御が選択される。
【００２７】
ユーザＡは、携帯端末１１０のＳＮＳアプリケーション７１０を使い、ストレージ１のアプリケーションサーバ（ＳＮＳサーバ）６１０にアクセスする（ステップＡ１）。ＳＮＳサーバ６１０は、課金情報の読み出しのためのＲＥＡＤ要求をアクセス切替え処理部へ転送する（ステップＡ２）。
【００２８】
アクセス切替え処理部は、ＲＥＡＤ要求とポリシ管理表（ＰＴ）を照らし合わせ、課金情報のＲＥＡＤ要求を強い一貫性制御が必要なＲＥＡＤ要求であると判定する。また、ポリシ管理表から冗長数３で、ストレージ１、ストレージ２、ストレージ４に複製データが格納されていることが分かる（ステップＡ３）。
【００２９】
ここでは、強い一貫性制御としてＱｕｏｒｕｍ（定数）を用いているため、各ストレージ１、ストレージ２、ストレージ４からデータの読み出しを行い、少なくとも２つのストレージから読み出し完了が返ってきたら、読み出したデータをＳＮＳサーバ６１０へ返す。ただし、ストレージから読み出したデータを照合し、ＲＥＡＤ定数以上のデータが一致するとき、そのデータをＳＮＳサーバ６１０へ返す。たとえば、最初に読み出した２つのストレージからのデータを照合し、一致していたらデータをＳＮＳサーバ６１０へ返す。不一致の場合、次に読み出すデータと最初に読み出した２つのストレージからのデータを各々照合し、一致している方のデータをＳＮＳサーバ６１０へ返す（ステップＡ４、Ａ５，Ａ６）。
【００３０】
以上の処理によって、ユーザＡによる読み出しは、ストレージ１とその近傍にある可能性が高いストレージ２からの読み出しデータ（課金情報）が返ってくることが期待できるため、アクセスレイテンシの小さい強い一貫性制御のＲＥＡＤを行うことができる。
【００３１】
一方、ステップＢ１からＢ４は，ユーザＢがＳＮＳアプリケーションを利用して、コメント情報を読み出す場面を示す。ＳＮＳのコメント情報は、必ずしも厳密な一貫性が必要ではないため、弱い一貫性制御が選択される。
【００３２】
ユーザＢは、携帯端末１１０のＳＮＳアプリケーション７１０を使い、ストレージ３のＳＮＳサーバ６１０にアクセスする（ステップＢ１）。ＳＮＳサーバ６１０は、ＷＲＩＴＥ要求をアクセス切替え処理部へ転送する（ステップＢ２）。
【００３３】
アクセス切替え処理部は、ＲＥＡＤ要求とポリシ管理表（ＰＴ）を照らし合わせ、コメント情報のＲＥＡＤ要求を弱い一貫性制御が必要なＲＥＡＤ要求であると判定する。また、ポリシ管理表から複製されたコメント情報がストレージ３、ストレージ４、ストレージ１に複製データが格納されていると分かる（ステップＢ３）。
【００３４】
アクセス切替え処理部は、ローカルのストレージ３に複製データがあるため、ローカルのストレージ３へアクセスし、コメント情報を取得し、ＳＮＳサーバ６１０へ返す（ステップＢ４）。
【００３５】
以上の処理によって、ユーザＢがアクセスしたストレージ３からコメント情報の読み出しを行って、読み出しデータ（コメント情報）を返すことでアクセスレイテンシの小さい弱い一貫性制御のＲＥＡＤを行うことができる。
【００３６】
図３は、本実施形態の分散ストレージシステムの構成例を示すブロック図である。分散ストレージシステムは、ストレージシステム１００と、ネットワーク１２０と、携帯端末１１０を有する。
【００３７】
ストレージシステム１００は、携帯端末１１０及び他のストレージシステム１００とネットワーク１２０を介して接続する。
【００３８】
ストレージシステム１００とは、複数のデータ通信プロトコルを処理可能なストレージシステムである。例えば、ストレージシステム１００は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルを使い、携帯端末１１０や管理計算機などとデータ通信を行う。
【００３９】
ストレージシステム１００は、例えば、携帯端末１１０からのデータ通信サービスへのＩ／Ｏ要求を、ネットワーク１２０を介して受け取り、その処理結果を携帯端末１１０へ返す。
【００４０】
また、ストレージシステム１００は、ネットワーク１２０を介して、ストレージシステム１００に格納したデータを、応答性の向上や耐障害性の向上のために他のストレージシステム１００へ複製する。ストレージシステム１００は、例えば、ストレージシステム１００へのデータのＷＲＩＴＥ要求と同期して他のストレージシステム１００へデータを複製する。又は、ストレージシステム１００は、データのＷＲＩＴＥ要求と非同期で他のストレージシステム１００へデータを複製する。携帯端末１１０から複製されたデータに対するＩ／Ｏ要求（ＲＥＡＤ要求/ＷＲＩＴＥ要求）が発生すると、必要に応じて一貫性制御を行いつつデータの参照や更新を行う。
【００４１】
ストレージシステム１００は、データセンタなどの施設に固定する形態でもよいし、例えばコンテナ型など移動可能な形態となっており、地理的な位置が変わってもよい。
【００４２】
ハードウェア障害や停電、地震、津波、火事などの災害によってストレージシステム１００に障害が起こった場合、データの複製先のストレージシステム１００に切り替えて、携帯端末１１０とのデータ通信サービスを再開する。ストレージシステム１００は、例えば、管理者から指示された時点で切り替え処理を行う。又は、障害が発生していないストレージシステム１００同士が通信を行い、自律的に切り替え処理を行う。
【００４３】
ネットワーク１２０は、例えばインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、公衆無線ＬＡＮ、携帯電話通信網などいずれの通信ネットワークでもよい。また、ネットワーク１２０は、複数の異なる通信ネットワークから構成される形態でもよい。
【００４４】
携帯端末１１０は、例えばスマートフォンを含む携帯電話、タブレット型の端末、ラップトップ計算機などでもよい。また、複数の異なる携帯端末１１０が分散ストレージシステムに含まれてもよい。また携帯端末１１０は、人などの生物が身につけたり、自動車などの移動体が装備したりすることで地理的な移動が発生してもよい。
【００４５】
また、本実施形態では、ストレージシステム１００を用いたが、本願はこれに限らない。例えば、汎用計算機を用いてもよい。また、本実施形態では、携帯端末１１０を用いたが、本願はこれに限らない。例えば、汎用計算機を用いてもよい。
【００４６】
図４は、本実施形態のストレージシステム１００のハードウェア構成を示すブロック図である。ストレージシステム１００は、ストレージヘッド２００とストレージ装置２１０を含む。ストレージヘッド２００とストレージ装置２１０は、通信路２２０で接続される。
【００４７】
ストレージヘッド２００は、ストレージシステム１００及びストレージ装置２１０の管理及び制御を行う。ストレージヘッド２００は、メモリ２０２、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）２０３、２０４、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２０５、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信機２０６、及びそれらに接続された制御演算ユニットであるＣＰＵ２０１を有する。
【００４８】
メモリ２０２に代えて又は加えて別種の記憶資源が採用されてもよい。ＨＢＡ２０３、２０４及びＮＩＣ２０５に代えて、別種の通信インタフェースデバイスが採用されてもよい。ＨＢＡ２０３は、ＳＡＮのネットワーク１２０に接続される。ＨＢＡ２０４は、通信路２２０を介してストレージ装置２１０に接続される。ＮＩＣ２０５は、ＬＡＮ、ＷＡＮ、インターネットなどのネットワーク１２０に接続される。
【００４９】
ＣＰＵ２０１は、メモリ２０２に格納されているコンピュータプログラムを実行する。メモリ２０２は、コンピュータプログラム及びその他のデータを記憶する。また、メモリ２０２は、携帯端末１１０から受信したデータ及び携帯端末１１０に送信するデータを一時的に記憶するキャッシュ領域を含んでいてもよい。メモリ２０２は、携帯端末１１０から受信したファイル及び携帯端末１１０に送信するファイルを一時的に記憶するキャッシュ領域を含んでいてもよい。
【００５０】
ＧＰＳ受信機２０６は、ストレージシステム１００の位置情報を得るために用いる。ＧＰＳ受信機２０６による位置情報は、複製データの地理的配置（近傍、遠方）のために用いられる。具体的には、ＧＰＳ受信機２０６から得られる緯経度情報から、ストレージシステム１００と他のストレージシステム１００との距離、ストレージシステム１００と携帯端末１１０との距離を求め、所定の基準に基づいて近傍、遠方を判定する。また、ＧＰＳ受信機２０６による位置情報は、ストレージシステム１００が設置される国の特定のためにも用いる。
【００５１】
ＧＰＳ受信機２０６に代えて又は加えて別種の位置情報取得機器が採用されてもよい。例えば、ストレージシステム１００が無線ＬＡＮの子機を内蔵し、近くに設置されている無線ＬＡＮの親機の位置情報からストレージシステム１００の位置情報を推測してもよい。又は、ストレージシステム１００が携帯電話の送受信機を内蔵し、近くに設置されている携帯電話通信網のアンテナの位置情報からストレージシステム１００の位置情報を推測してもよい。又は、ＧＰＳ受信機２０６を用いず管理者が手動でストレージヘッド２００に対して位置情報を与えてもよい。
【００５２】
ストレージ装置２１０は、ストレージヘッド２００が使用するプログラムやファイルを格納するための記憶装置である。ストレージ装置２１０は、ストレージキャッシュ２１１、ストレージコントローラ２１２、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）２１３、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）ディスク２１４、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）ディスク２１５を含む。それぞれの構成部位は、内部バスまたは内部ネットワークにて接続される。
【００５３】
ストレージキャッシュ２１１、ストレージコントローラ２１２、ＳＳＤ２１３、ＳＡＳディスク２１４、ＳＡＴＡディスク２１５は、それぞれ図４に示した数に限定されない。また、ストレージ装置２１０についても、図４に示した数に限定されない。以下では、ＳＳＤ２１３、ＳＡＳディスク２１４及びＳＡＴＡディスク２１５を、総称してディスク装置と呼ぶ。
【００５４】
ストレージコントローラ２１２は、ストレージヘッド２００と通信し、ストレージ装置２１０を制御する。具体的には、ストレージコントローラ２１２は、ストレージヘッド２００と通信し、ストレージヘッド２００からの要求に従って後述のストレージキャッシュ２１１を用いつつディスク装置にデータを書き込み、又はストレージキャッシュ２１１を用いつつディスク装置からデータを読み出す。
【００５５】
前述の通り、本例において、ストレージコントローラ２１２が受信するデータ（書き込みデータ）又は送信するデータ（読み出しデータ）は、ブロックアドレス形式によって指定されるブロックデータ（単にブロックと呼ぶことがある）である。
【００５６】
ストレージキャッシュ２１１は、例えば、半導体メモリであり、ディスク装置に書き込むデータ又はディスク装置から読み出したブロックデータを一時的に格納するために用いる。なお、ストレージキャッシュ２１１の一部として、半導体メモリより低速な記憶装置を用いてもよい。
【００５７】
ディスク装置は、データを格納する装置である。図４では、ストレージ装置２１０は、ＳＳＤ２１３、ＳＡＳディスク２１４、ＳＡＴＡディスク２１５をそれぞれ１個持っているが、ストレージ装置２１０には、任意の数のディスク装置を設置できる。なお、ディスク装置は、典型的には、ＳＳＤ２１３、ＳＡＳディスク２１４、ＳＡＴＡディスク２１５であるが、ブロック形式のデータを格納できればよく、例えば、テープアーカイブ、ＤＶＤやＣＤなどの光ディスクライブラリを備えていても良い。テープアーカイブや光ディスクライブラリを用いる場合、ＳＳＤやＨＤＤを用いる場合と比べてＩ／Ｏ性能が落ちる場合があるが、ビットコストを低減できる。
【００５８】
なお、高速化や冗長化や高信頼化等の理由から、ストレージコントローラ２１２は、複数のディスク装置を、アクセス可能な一つ以上の仮想的なディスク装置として、ストレージヘッド２００に提供してもよい（より具体的にはＲＡＩＤ技術を使用する）。
【００５９】
以後の説明では、この仮想的なディスク装置をボリュームと呼び、「ストレージ装置又はストレージコントローラがボリュームにブロックデータを書き込む」との説明は、実際はストレージコントローラ２１２がストレージキャッシュ２１１又はディスク装置にブロックデータを書き込むことを意味する。
【００６０】
同様に、「ストレージ装置またはストレージコントローラがボリュームからブロックデータを読み出す」と説明した場合は、実際はストレージコントローラ２１２がストレージキャッシュ２１１またはディスク装置からブロックデータを読み出すことを意味する。
【００６１】
一般に、ストレージコントローラ２１２は、ストレージヘッド２００からボリュームに対するデータを書き込む要求を受信した場合、アクセス速度の速いストレージキャッシュ２１１に一時的にデータを書き込んだ後、ストレージヘッド２００に書き込み完了を通知する。
【００６２】
そして、ストレージコントローラ２１２は、ストレージヘッド２００からの書き込み要求とは非同期にディスク装置にストレージキャッシュ２１１に格納されているデータを書き込むことで、ストレージキャッシュ２１１に比較してディスク装置の性能が低い場合でも、ストレージ装置２１０全体としての性能を向上する。
【００６３】
ストレージヘッド２００のＨＢＡ２０４とストレージ装置２１０のストレージコントローラ２１２と間の通信路２２０は、スイッチを介して繋がっていてもよい。ストレージヘッド２００とストレージ装置２１０とは、それぞれ複数台あってもよい。複数のストレージヘッド２００が一台のストレージ装置２１０に接続する構成であってもよい。複数のストレージヘッド２００と複数のストレージ装置２１０が、ＳＡＮを構成してもよい。
【００６４】
ＨＢＡ２０４とストレージ装置２１０間の通信路２２０は、例えば、ファイバーチャネル（ＦＣ）で構成される。通信路２２０として、通信可能であればこれ以外のネットワーク（例えば、Ｅｔｈｅｒｎｅｔ（登録商標））を採用してもよい。
【００６５】
図５は、本実施形態の携帯端末１１０のハードウェア構成を示すブロック図である。携帯端末１１０は、メモリ３０２、入力デバイス３０３、無線通信デバイス３０４、二次記憶デバイス３０５、表示デバイス３０６、ＧＰＳ受信機３０７及びそれらに接続されたＣＰＵ３０１を有する。メモリ３０２及び二次記憶デバイス３０５の少なくとも１つに代えて別種の記憶資源が採用されもよい。また、無線通信デバイス３０４は、無線ＬＡＮ子機、携帯電話送受信機、ＷｉＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）など少なくとも１つ以上の無線デバイスから構成される。また、無線通信デバイス３０４に代えて又は加えてＮＩＣなどの有線通信デバイスを備えていてもよい。
【００６６】
二次記憶デバイス３０５からメモリ３０２にコンピュータプログラムがロードされる。ＣＰＵ３０１は、メモリ３０２に格納されているコンピュータプログラムを実行する。入力デバイス３０３は、ユーザに操作されるデバイスであり、例えば、キーボード及びポインティングデバイスである。無線通信デバイス３０４は、ネットワーク１２０に接続される。二次記憶デバイス３０５は、例えば、フラッシュメモリやＳＳＤやＨＤＤである。表示デバイス３０６は、例えば、液晶ディスプレイである。入力デバイス３０３と表示デバイス３０６は、例えば、タッチパネルとして一体となっていてもよい。
【００６７】
ＧＰＳ受信機３０７は、ＧＰＳ受信機２０６と同様に、携帯端末１１０の位置情報を得るために用いる。ＧＰＳ受信機３０７による位置情報は、分散配置されているストレージシステムへの複製データの地理的配置（携帯端末１１０からの近傍、遠方）のために用いられる。
【００６８】
ＧＰＳ受信機２０６同様に、ＧＰＳ受信機３０７に代えて又は加えて別種の位置情報取得機器が採用されてもよい。
【００６９】
携帯端末１１０は、ユーザの指示に従い、ストレージシステム１００のデータ通信サービスにアクセスすることができる。
【００７０】
図６は、本実施形態のストレージヘッド２００のソフトウェア構成である。ストレージヘッド２００のソフトウェアは、アプリケーションサーバ６１０、アクセス切替え処理部６２０、Ｉ／Ｏ処理部６３０、管理部６４０、ストレージ管理表６５０、テンプレート管理表６６０、およびポリシ管理表６７０を含む。これらは、ストレージ装置２１０からメモリ２０２にロードされ、ＣＰＵ２０１により実行される。
【００７１】
アプリケーションサーバ６１０は、通信プロトコル（ＮＦＳ／ＣＩＦＳ／ＦＴＰ／ＨＴＴＰ／ＲＥＳＴ）等を用いて、データ通信サービスを携帯端末１１０へ提供する。アプリケーションサーバ６１０は、携帯端末１１０からの要求に応じて、ストレージ装置２１０に格納しているデータへのＩ／Ｏ要求をアクセス切換え処理部６２０へ発行する。本実施形態では、メモリ２０２内に単一のアプリケーションサーバ６１０が格納されているが、本願はこれに限らない。例えば、通信プロトコル毎に異なる種類のアプリケーションサーバ６１０を複数格納しても良いし、同じアプリケーションサーバ６１０が複数含まれていてもよい。
【００７２】
アクセス切替え処理部６２０は、アプリケーションサーバ６１０からのＩ／Ｏ要求を受け取り、Ｉ／Ｏ対象データの情報（例えばパス名）とポリシ管理表６７０に基づいて、Ｉ／Ｏ対象データ毎に少なくとも一貫性制御方式、保存場所、及び冗長数を決定してＩ／Ｏ処理を行う。実際のＩ／Ｏ処理は、Ｉ／Ｏ処理部６３０が行う。
【００７３】
Ｉ／Ｏ処理部６３０は、アクセス切替え処理部６２０や他のストレージシステム１００で動作するＩ／Ｏ処理部６３０からの要求に基づき、データに対するＩ／Ｏを処理する。Ｉ／Ｏ処理部６３０は、例えば、ファイルシステム、ＤＢ（Ｄａｔａ  Ｂａｓｅ）、ＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）である。本実施形態では、メモリ２０２内に単一のＩ／Ｏ処理部６３０が格納されているが、本願はこれに限らない。例えば、複数の種類のＩ／Ｏ処理部６３０が格納されており、それらが連携してデータへのＩ／Ｏ処理を行ってもよい。
【００７４】
管理部６４０は、システム管理者へストレージシステム１００を管理するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）やＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）を提供する。システム管理者がＧＵＩやＣＬＩで、ストレージ管理表６５０、テンプレート管理表６６０、ポリシ管理表６７０を更新すると、管理部６４０は、各ストレージシステム１００へ各管理表の更新内容を送信する。また、管理部６４０は、他のストレージシステム１００で発生したストレージ管理表６５０、テンプレート管理表６６０、ポリシ管理表６７０の更新内容を受信し、更新内容をストレージ管理表６５０、テンプレート管理表６６０、ポリシ管理表６７０へと反映する。
【００７５】
図７は、本実施形態の携帯端末１１０のソフトウェア構成である。携帯端末１１０のソフトウェアは、アプリケーション７１０を含む。アプリケーション７１０は、二次記憶デバイス３０５からメモリ３０２にロードし格納される。
【００７６】
アプリケーション７１０は、通信プロトコル（ＮＦＳ／ＣＩＦＳ／ＦＴＰ／ＨＴＴＰ／ＲＥＳＴ）等を用いて、ストレージヘッド２００のアプリケーションサーバ６１０とデータ通信を行う。アプリケーション７１０は、前述のＳＮＳアプリケーションの他、例えば、ウェブブラウザ、ＮＦＳクライアント、ＣＩＦＳクライアント、ＦＴＰクライアント、ＷｅｂＤＡＶクライアント、アプリケーションサーバ６１０に対応する専用アプリケーションプログラムである。
【００７７】
アプリケーション７１０は、ストレージシステム１００が持つデータを直接受信する代わりに、ストレージシステム１００がデータを処理し、整形した結果を受信するアプリケーションでもよい。またアプリケーション７１０は、アプリケーションサーバ６１０とデータ通信を行う際に、ＧＰＳ３０７から取得した位置情報を付与して通信してもよい。
【００７８】
本実施形態では、メモリ３０２内に単一のアプリケーション７１０が格納されているが、本願はこれに限らない。例えば、通信プロトコル毎に異なる種類のアプリケーション７１０を複数格納しても良いし、同じ通信プロトコルを用いるアプリケーション７１０が複数含まれていてもよい。
【００７９】
図８は、本実施形態のストレージ管理表６５０の構成例である。ストレージ管理表６５０の各行（８２１〜８２５）は、各ストレージシステム１００に対応し、ストレージ名８１１、ＩＰアドレス８１２、場所情報８１３、および信用性８１４を含む。
【００８０】
ストレージ名８１１は、ストレージシステム１００に付与される、図３に示した分散ストレージシステム内で一意のＩＤを示す。ＩＰアドレス８１２は、ストレージシステム１００の制御及びデータアクセスを行うためのＩＰアドレスを示す。場所情報８１３は、ストレージシステム１００の設置場所、たとえば国名を示す。信用性８１４は、不正アクセスのされにくさを示す指標であり、「高」「中」「低」の３段階で示す。なお、「高」が最も不正アクセスされにくいという評価である。
【００８１】
例えば、ストレージ管理表６５０の行８２１が示すストレージシステム１００は、ストレージ名８１１がＳＴ１、ＩＰアドレス８１２が１９２．１６８．１０．１、場所情報８１３がＡ国、信用性８１４が「高」というストレージシステム１００の情報を示す。
【００８２】
なお、本実施形態において、ＩＰアドレスはＩＰｖ４で格納されているが、本願はこれに限らない。例えばＩＰｖ６で格納していても良いし、ＩＰアドレスではなくＤＮＳ名で格納していてもよい。
【００８３】
また、本実施形態において、場所情報８１３は、国名を記録しているが、本願はこれに限らない。例えば、国名だけではなく、住所を格納していてもよいし、ＧＰＳ情報をｄｅｇｒｅｅ度単位または度分秒単位で記録していてもよい。
【００８４】
また、本実施形態において、信用性８１４は、「高」「中」「低」の３段階の指標で格納されているが、本願はこれに限らない。例えば、数値として記載されていても良い。あるいは、ストレージ管理表６５０では、信用性８１４を直接管理せず、第三者機関に問い合わせることで取得してもよい。
【００８５】
また、本実施形態において、ストレージ管理表６５０は、ストレージシステム１００の情報として、ストレージ名８１１、ＩＰアドレス８１２、場所情報８１３、信用性８１４を格納しているが、本願はこれに限らない。例えば、ストレージ管理表６５０に、各ストレージシステム１００が持つ機能（重複排除機能やバージョン管理機能、Ｉ／Ｏインタフェース）の有無、耐障害性、Ｉ／Ｏ性能、空き容量やビット単価などについて格納していてもよい。ストレージシステム１００のＩ／Ｏ処理では、ＩＰアドレス８１２、場所情報８１３、信用性８１４に加えて、あるいは追加情報（機能の有無、耐障害性、Ｉ／Ｏ性能、空き容量、ビット単価）を基に、データの複製先ストレージシステム１００を選択することになる。
【００８６】
図９は、本実施形態のテンプレート管理表６６０の構成例である。テンプレート管理表６６０の各行（９２１〜９２６）は、各ポリシテンプレートに対応し、テンプレート名９１１、一貫性９１２、応答性９１３、冗長数９１４を含む。
【００８７】
テンプレート名９１１は、テンプレートを特定するためのシステム内で一意のＩＤである。一貫性９１２は、一貫性制御のポリシを示す。一貫性９１２は、「強（強い一貫性制御）」「弱（弱い一貫性制御）」「不要」の３段階で示す。応答性９１３は、応答性を重視するかどうかのポリシを示す。応答性９１３は、「重視する」「−（重視しない）」で示す。冗長数９１４は、データの複製数（元のデータと複製したデータの合計であり、これを複製データ数とも呼ぶ。）を示す。冗長数９１４は、直接複製数を指定するほか、不等号「＜、＞、≦、≧」を使って指定してもよい。例えば、行９２５の冗長数「１＜」は1より大きいことを意味する。
【００８８】
システム管理者は、図１０で後述するポリシ管理表６７０にデータのパスとテンプレート名９１１の対応を格納することで、データの特性に応じて、データへのアクセス方法をテンプレートに従って切替え可能となる。
【００８９】
例えば、行９２１が示すテンプレートは、テンプレート名９１１がＴ１、一貫性９１２が「強」、応答性９１３が「重視」、冗長数９１４が「２」である。このテンプレートの使用を指定されたデータは、強い一貫性制御でデータへのＩ／Ｏを行い、特に応答性を重視するためユーザの携帯端末１１０の近傍にデータを配置し、障害などに備えて冗長数は２ということを示す。行９２１が示すテンプレートの使用を指定されるデータは、例えば課金情報などの整合性が必要な管理情報などがある。
【００９０】
同様に、行９２４が示すテンプレートの使用を指定されたデータは、弱い一貫性制御でデータへのＩ／Ｏを行い、障害などに備えて冗長数は３ということを示す。行９２４が示すテンプレートの使用を指定されるデータは、例えば後でマージすれば良い時系列のログデータやＳＮＳに書き込まれたコメントや掲示板に書き込まれたメッセージなどがある。
【００９１】
また同様に、行９２５が示す使用を指定されたデータは、一貫性制御が不要でいくつでもデータの複製を持っても良い意味であるため、各ストレージシステム１００でデータをキャッシュとして持つことを示す。行９２６で示すテンプレートの使用を指定されるデータは、例えば更新が起こらない動画や写真などの画像ファイルなどがある。
【００９２】
なお、本実施形態において、一貫性９１２は、「強」「弱」「不要」の３段階で示したが、本願はこれに限らない。例えば、一貫性制御方式（アルゴリズム）を直接指定してもよい。
【００９３】
また、本実施形態において、応答性９１３は、「重視する」「重視しない」で示したが、本願はこれに限らない。例えば、応答時間（１秒以内、５秒以内など）など数値で指定してもよい。
【００９４】
図１０は、本実施形態のポリシ管理表６７０の構成例である。ポリシ管理表６７０の各行（１０２１〜１０２６）は、アクセス切替えポリシに対応し、パス１０１１、使用テンプレート名１０１２、条件１０１３、使用ストレージ１０１４を含む。
【００９５】
パス１０１１は、ストレージシステム１００内でデータを格納しているディレクトリのパスを示す。使用テンプレート名１０１２は、テンプレート管理表６６０で管理されているテンプレート名９１１を示す。条件１０１３は、データを格納するストレージシステムの格納条件として、場所情報と信用性の条件を示す。条件を満足するストレージシステムに、データを格納する。使用ストレージ１０１４は、パス１０１１で示されたデータの複製を現在格納しているストレージ名８１１を示す。
【００９６】
ポリシ管理表６７０は、パス１０１１により特定したデータの特性に応じて、使用テンプレート１０１２で示すポリシが指定するアクセス方式を選択するために用いられる。例えば、行１０２１が示すアクセス切替えポリシは、パス１０１１で示す／Ａ／ｐｒｏｆｉｌｅＤＢ／以下に格納しているデータへのＩ／Ｏがあった場合、使用テンプレート１０１２で示すＴ２のポリシが指定するアクセス方式を選択する。ただし、データを格納するストレージは、条件１０１３で示した格納場所（Ａ国）に設置してあり、信用性は「高」のストレージシステム１００であり、現在データを格納しているストレージは、使用ストレージ１０１４で示すＳＴ１，ＳＴ２であることを示す。
【００９７】
なお、本実施形態においてパス１０１１は、ディレクトリ単位の指定となっているが、本願はこれに限定しない。例えば、ディレクトリよりもより細粒度となるファイル単位で管理してもよいし、更にファイルをより小さいチャンクに分割して保存するストライピングファイルのチャンク単位で管理してもよいし、逆にディレクトリ単位よりも大きなファイルシステムやボリューム単位で指定しても良い。
【００９８】
また、本実施形態において条件１０１３は、格納場所（たとえば、国）と信用性を指定しているが、本願はこれに限定しない。例えば、ストレージシステム１００の機能の有無、耐障害性、Ｉ／Ｏ性能、空き容量、ビット単価などを条件として設定してもよい。
【００９９】
図１１は、本実施形態のアクセス切替え処理部６２０のフローチャートである。アクセス切替え処理部６２０は、アプリケーションサーバ６１０からＩ／Ｏ要求を受け取ると、処理を開始する（Ｓ１１００）。
【０１００】
アクセス切替え処理部６２０は、ポリシ管理表６７０を読み込む（Ｓ１１１０）。アクセス切替え処理部６２０は、テンプレート管理表６６０を読み込む（Ｓ１１２０）。アクセス切替え処理部６２０は、Ｉ／Ｏ要求からＩ／Ｏ対象ファイルのパス名を抽出し、ポリシ管理表６７０の各行（アクセス切替えポリシ）のパス１０１１と照らし合わせる。アクセス切替え処理部６２０は、合致するパス１０１１が見つかると、同じ行の使用テンプレート名１０１２を抽出する。アクセス切替え処理部６２０は、抽出した使用テンプレート名１０１２をテンプレート管理表６６０の各行（ポリシテンプレート）のテンプレート名９１１と照らし合わせる。アクセス切替え処理部６２０は、合致するテンプレート名９１１が見つかると、同じ行の一貫性９１２を抽出し、強い一貫性制御が必要なＩ／Ｏかを判定する（Ｓ１１３０）。
【０１０１】
強い一貫性制御が必要な場合（Ｓ１１３０：ＹＥＳ）、アクセス切替え処理部６２０は、図１２に示す強い一貫性制御処理部を呼び出す（Ｓ１１４０）。
【０１０２】
強い一貫性制御が必要でない場合（Ｓ１１３０：ＮＯ）、アクセス切替え処理部６２０は、一貫性９１２を抽出し、弱い一貫性制御が必要なＩ／Ｏかを判定する（Ｓ１１５０）。
【０１０３】
弱い一貫性制御が必要な場合（Ｓ１１５０：ＹＥＳ）、アクセス切替え処理部６２０は、図１３に示す弱い一貫性制御処理部を呼び出す（Ｓ１１６０）。
【０１０４】
弱い一貫性制御が必要でない場合（Ｓ１１５０：ＮＯ）、アクセス切替え処理部６２０は、図１４に示すＩ／Ｏ処理部６３０を呼び出す（Ｓ１１７０）。
【０１０５】
アクセス切替え処理部６２０は、Ｓ１１４０の強い一貫性制御処理部，Ｓ１１６０の弱い一貫性制御処理部，及びＳ１１７０のＩ／Ｏ処理部６３０のいずれかを完了後、処理を終了する（Ｓ１１８０）。
【０１０６】
図１２は、本実施形態の強い一貫性制御処理部のフローチャートである。強い一貫性制御処理部は、Ｉ／Ｏ要求と、Ｉ／Ｏ要求に合致するアクセス切替えポリシ及びポリシテンプレートを伴ってアクセス切替え処理部６２０から呼び出される（Ｓ１２００）。
【０１０７】
強い一貫性制御処理部は、ストレージ管理表６５０を読み込む（Ｓ１２１０）。強い一貫性制御処理部は、アクセス切替えポリシの使用ストレージ１０１４にストレージシステム名が格納されているかを判定する（Ｓ１２２０）。
【０１０８】
ストレージシステム名が格納されていない場合（Ｓ１２２０：ＮＯ）、強い一貫性制御処理部は、アクセス切替えポリシとポリシテンプレート、ストレージ管理表を基に格納先のストレージシステム１００を決定する。まず、アクセス切替えポリシの条件１０１３の格納場所（国名など）や信用性に合致する複数のストレージシステム１００をデータ格納先の候補としてストレージ管理表６５０から抽出する。次に、Ｉ／Ｏ対象データに対するポリシテンプレートの冗長数９１４の数に対応してＩ／Ｏ対象データを複製するストレージシステム１００の数を決定する。冗長数９１４のうち、ＱｕｏｒｕｍのＲＥＡＤ定数またはＷＲＩＴＥ定数のどちらか大きい数に対応する、ネットワーク的または地理的に近傍のストレージシステム１００をＩ／Ｏ複製先として選択する。冗長数９１４に満たない分は、地震などの災害に備えてネットワーク的または地理的に遠方のストレージシステム１００を複製先として選択する。また、このとき、応答性９１３が「重視」ならば、ストレージシステム１００間のネットワーク的または地理的な距離だけでなく、アクセス応答性を反映した、携帯端末１１０とのネットワーク的または地理的な距離が近い（応答性がよい）ストレージシステム１００を選択する。
【０１０９】
なお、携帯端末１１０とストレージシステム１００間や、ストレージシステム１００同士のネットワーク的な距離を検出する方法の一例としては、携帯端末１１０またはストレージシステム１００から距離を測定する相手のストレージシステム１００へＩＣＭＰのＥＣＨＯ＿ＲＥＱＵＥＳＴを送信してパケットが戻ってくるまでに要する時間を測定する方法がある。または、場所情報８１３を用いて推定する方法や、ＧＰＳ受信機２０６で受信した地理的な位置情報を用いた地理的な距離に基づいて推定する方法がある。
【０１１０】
強い一貫性制御処理部は、決定した格納先のストレージシステム１００の名前をアクセス切替えポリシの使用ストレージ１０１４に格納する（Ｓ１２３０）。なお、Ｓ１２３０の処理によって更新されたポリシ管理表６７０は、管理部６４０によって各ストレージシステム１００に通知される。各ストレージシステム１００の管理部６４０は、各ストレージシステム１００内のポリシ管理表６７０を更新する。
【０１１１】
ストレージシステム名が格納されている場合（Ｓ１２２０：ＹＥＳ）、またはＳ１２３０で格納ストレージが決定した場合、強い一貫性制御処理部は、Ｉ／Ｏ要求とアクセス切替えポリシの使用ストレージ１０１４を伴ってＩ／Ｏ処理部６３０を呼び出す（Ｓ１２６０）。
【０１１２】
強い一貫性制御処理部は、ＷＲＩＴＥあるいはＲＥＡＤのＩ／Ｏが完了したストレージシステムの数がＱｕｏｒｕｍ（定数）を満たすまで待つ（Ｓ１２７０）。強い一貫性制御処理部は、Ｓ１２８０でＱｕｏｒｕｍが満たされたことを確認した後、処理を終了する（Ｓ１２８０）。
【０１１３】
この強い一貫性制御処理は、データの複製先ストレージシステム１００としてＱｕｏｒｕｍ（定数）分は近傍に配置することでアクセスレイテンシを小さくすることができる。
【０１１４】
なお、本実施形態では、強い一貫性制御方式として、Ｑｕｏｒｕｍを用いたが、本願はこれに限らない。例えば、近傍のストレージシステム１００を複製先として選択して全ての格納先ストレージシステム１００と同期してＲＥＡＤ／ＷＲＩＴＥを行ってもよいし、所定の数以上の近傍のストレージシステム１００と同期してＲＥＡＤ／ＷＲＩＴＥを行い、遠方のストレージシステムとは非同期でＲＥＡＤ／ＷＲＩＴＥしてもよい。
【０１１５】
図１３は、本実施形態の弱い一貫性制御処理部のフローチャートである。弱い一貫性制御処理部は、Ｉ／Ｏ要求と、Ｉ／Ｏ要求に合致するアクセス切替えポリシ、ポリシテンプレートを伴ってアクセス切替え処理部６２０から呼び出される（Ｓ１３００）。
【０１１６】
弱い一貫性制御処理部は、ストレージ管理表６５０を読み込む（Ｓ１３１０）。弱い一貫性制御処理部は、アクセス切替えポリシの使用ストレージ１０１４にストレージシステム名が格納されているかを判定する（Ｓ１３２０）。
【０１１７】
ストレージシステム名が格納されていない場合（Ｓ１３２０：ＮＯ）、弱い一貫性制御処理部は、アクセス切替えポリシとポリシテンプレート、ストレージ管理表を基に格納先のストレージシステム１００を決定する。まず、アクセス切替えポリシの条件１０１３の格納場所（国名など）や信用性に合致する複数のストレージシステム１００をデータ格納先の候補としてストレージ管理表６５０から抽出する。次に、Ｉ／Ｏ対象データに対するポリシテンプレートの冗長数９１４の数に対応してＩ／Ｏ対象データを複製するストレージシステム１００の数を決定する。冗長数９１４のうち、ネットワーク的または地理的に近傍のストレージシステム１００と共に、遠方ストレージシステム１００をＩ／Ｏ複製先として選択する。遠方のストレージシステム１００にも複製する理由は、地震などの災害に備えるためである。また、このとき、応答性９１３が「重視」ならば、ストレージシステム１００間のネットワーク的または地理的な距離だけではなく、アクセス応答性を反映した、携帯端末１１０とのネットワーク的または地理的な距離が近い（応答性がよい）ストレージシステム１００も選択する。
【０１１８】
弱い一貫性制御処理部は、決定した格納先のストレージシステム１００の名前をアクセス切替えポリシの使用ストレージ１０１４に格納する（Ｓ１３３０）。なお、Ｓ１３３０の処理によって更新されたポリシ管理表６７０は、管理部６４０によって各ストレージシステム１００に通知される。各ストレージシステム１００の管理部６４０は、各ストレージシステム１００内のポリシ管理表６７０を更新する。
【０１１９】
ストレージシステム名が格納されている場合（Ｓ１３２０：ＹＥＳ）、またはＳ１３３０で格納先ストレージが選択された場合、弱い一貫性制御処理部は、Ｉ／Ｏ要求がＷＲＩＴＥ要求かを判定する（Ｓ１３４０）。
【０１２０】
ＷＲＩＴＥ要求でない場合（Ｓ１３４０：ＮＯ）、弱い一貫性制御処理部は、アクセス切替えポリシの使用ストレージ１０１４の中から読み出し要求（ＲＥＡＤ要求）を出すストレージシステム１００を選択する。もし、弱い一貫性制御処理部を実行しているストレージシステム１００（ローカルのストレージシステム１００）にデータが格納されている場合は、ローカルのストレージシステム１００を選択する。もしローカルのストレージシステム１００にデータが格納されていない場合は、ストレージ管理表６５０と使用ストレージ１０１４を参照し、データが格納されているネットワーク的又は地理的にもっとも近傍のストレージシステム１００を選択する（Ｓ１３５０）。
【０１２１】
ＷＲＩＴＥ要求の場合（Ｓ１３４０：ＹＥＳ）、又はＳ１３５０で読み出し先ストレージが選択された場合、弱い一貫性制御処理部は、Ｉ／Ｏ要求と、ＲＥＡＤ要求の場合は読み出し先のストレージシステムの名前、ＷＲＩＴＥ要求の場合はアクセス切替えポリシの使用ストレージ１０１４に格納しているストレージシステム１００の名前を伴ってＩ／Ｏ処理部６３０を呼び出す（Ｓ１３６０）。
【０１２２】
弱い一貫性制御処理部は、Ｓ１３６０のＩ／Ｏ処理の完了の通知が少なくとも１つのストレージシステム１００から戻ってきたら、処理を終了する（Ｓ１３７０）。
【０１２３】
この弱い一貫性制御処理は、データの複製先ストレージシステム１００の一部としてネットワーク的又は地理的に近傍のストレージシステム１００を選ぶことでアクセスレイテンシを小さくすることができる。
【０１２４】
図１４は、本実施形態のＩ／Ｏ処理部６３０のフローチャートである。Ｉ／Ｏ処理部６３０は、アクセス切替え処理部６２０、強い一貫性処理部、弱い一貫性処理部、及び他のストレージシステム１００で実行されたＩ／Ｏ処理部６３０からＩ／Ｏ要求と、このＩ／Ｏ要求の発行先ストレージシステム１００の名前を伴って呼び出される（Ｓ１４００）。
【０１２５】
Ｉ／Ｏ処理部６３０は、ローカルのストレージシステム１００にＩ／Ｏ要求対象のファイルのキャッシュがあるかを判定する（Ｓ１４１０）。キャッシュがある場合（Ｓ１４１０：ＹＥＳ）、Ｉ／Ｏ処理部６３０は、ローカルのストレージシステム１００に対してＩ／Ｏ処理を行う（Ｓ１４４０）。
【０１２６】
Ｉ／Ｏ要求対象のファイルのキャッシュがない場合（Ｓ１４１０：ＮＯ）、Ｉ／Ｏ処理部６３０は、Ｉ／Ｏ要求の発行先ストレージシステム１００がローカルのストレージシステム１００かどうかを判定する（Ｓ１４２０）。
【０１２７】
ローカルのストレージシステム１００の場合（Ｓ１４２０：ＹＥＳ）、Ｉ／Ｏ処理部６３０は、ローカルのストレージシステム１００に対してＩ／Ｏ処理を行う（Ｓ１４４０）。
【０１２８】
Ｉ／Ｏ要求の発行先ストレージシステム１００がローカルのストレージシステム１００でない場合（Ｓ１４２０：ＮＯ）、Ｉ／Ｏ処理部６３０は、Ｉ／Ｏ要求がＷＲＩＴＥ要求かどうかを判定する（Ｓ１４３０）。
【０１２９】
ＷＲＩＴＥ要求の場合（Ｓ１４３０：ＹＥＳ）、Ｉ／Ｏ処理部６３０は、リモートのストレージシステム１００に対してＷＲＩＴＥ要求を発行する（Ｓ１４５０）。
【０１３０】
ＷＲＩＴＥ要求ではなく、ＲＥＡＤ要求の場合（Ｓ１４３０：ＮＯ）、Ｉ／Ｏ処理部６３０は、リモートのストレージシステム１００に対してＲＥＡＤ要求を発行する（Ｓ１４６０）。
【０１３１】
Ｓ１４６０のＲＥＡＤ要求に対する処理が完了すると、Ｉ／Ｏ処理部６３０は、アクセス切替えポリシとポリシテンプレートを基にＲＥＡＤ処理の結果をキャッシュするかを判定する（Ｓ１４７０）。例えば、Ｉ／Ｏ対象データの一貫性９１２が「不要」で、且つ冗長数９１４が「１＜」の場合、各ストレージシステム１００上で一貫性制御を行わずにＩ／Ｏ処理を行っても良いため、Ｉ／Ｏ効率化のため各ストレージシステム１００でキャッシュを持つ。
【０１３２】
キャッシュする場合（Ｓ１４７０：ＹＥＳ）、Ｉ／Ｏ処理部６３０は、キャッシュ処理を行う（Ｓ１４８０）。キャッシュしない場合（Ｓ１４７０：ＮＯ）、Ｓ１４８０のキャッシュ処理が完了した場合、又はＳ１４４０のローカルＩ／Ｏ処理が完了した場合、Ｉ／Ｏ処理部６３０は、処理を完了する（Ｓ１４９０）。
【０１３３】
なお、Ｉ／Ｏ処理部６３０の開始時に、Ｉ／Ｏ要求の発行先ストレージシステム１００が複数指定された場合、Ｓ１４２０からＳ１４８０までの処理をストレージシステム１００の数に応じて実行する。
【０１３４】
図１５は、本実施形態のポリシ設定を管理するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の一例を示す。各ストレージシステム１００の管理部６４０は、ポリシ設定のためにＧＵＩ１５００を、図示していないストレージシステム１００の入出力装置を介して、システム管理者に提供する。システム管理者は、ＧＵＩ１５００を用いてストレージシステム１００へポリシ設定に関する指示を与える。
【０１３５】
ＧＵＩ１５００は、ポリシ設定一覧部１５１０、ポリシ設定入力部１５２０、追加ボタン１５３０、削除ボタン１５４０、更新ボタン１５５０、及び完了ボタン１５６０を含む。
【０１３６】
ポリシ設定一覧部１５１０は、各ストレージシステム１００に保存しているポリシ管理表６７０の情報を表示する部位であり、パス８１１、使用テンプレート名８１２、条件８１３、及び使用ストレージ８１４を含む。パス８１１から使用ストレージ８１４までの各項目の意味はポリシ管理表６７０と同じである。
【０１３７】
ポリシ設定入力部１５２０は、パス８１１の入力部１５２１、使用テンプレート名８１２の入力部１５２２、条件８１３の格納場所（国名など）の入力部１５２３、条件８１３の信用性の入力部１５２４、及び使用ストレージ８１４の入力部１５２５を含む。
【０１３８】
管理者が追加ボタン１５３０を押すと、管理部６４０は、ポリシ設定入力部１５２０に入力したそれぞれの値を新規ポリシ設定としてポリシ管理表６７０に追加する。管理者が削除ボタン１５４０を押すと、管理部６４０は、ラジオボタン１５１１で指定した行の設定をポリシ管理表６７０から削除する。管理者が更新ボタン１５５０を押すと、管理部６４０は、ラジオボタン１５１１で指定した行の設定を更新し、ポリシ管理表６７０に保存する。管理者が完了ボタン１５６０を押すと、管理部６４０は、ポリシ設定を終了し、ＧＵＩ１５００を閉じる。
【０１３９】
追加ボタン１５３０、削除ボタン１５４０、又は更新ボタン１５５０により、ポリシ管理表６７０が更新されると、分散ストレージシステム内の全ストレージシステム１００に更新内容が通知され、更新内容を受け取った各ストレージシステム１００の管理部６４０が各々のポリシ管理表６７０を更新する。
【０１４０】
本実施形態において、使用ストレージ８１４を入力部１５２５に指定しているが、これはデータを格納するために使用するストレージシステム１００の初期設定である。使用するストレージシステム１００は、分散ストレージシステムの状況によって刻一刻と変わり得る。例えば、データを格納していたストレージシステム１００に障害が発生すると、代替となる他のストレージシステム１００にデータを格納するようになる。
【０１４１】
また本実施形態では、使用ストレージ８１４の初期設定を入力部１５２５で指定しているが本願はこれに限らない。例えば、初期設定を不要とし、ストレージシステム１００がデータ格納先をポリシ―に基づいて選択してもよい。
【０１４２】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
【符号の説明】
【０１４３】
１００：ストレージシステム、１１０：携帯端末、１２０：ネットワーク、２００：ストレージヘッド、２１０：ストレージ装置、６１０：アプリケーションサーバ、６２０：アクセス切替え処理部、６３０：Ｉ／Ｏ処理部、６４０：管理部、６５０：ストレージ管理表、６６０：テンプレート管理表、６７０：ポリシ管理表。
【図１】
2015033451.tif 000003
【図２】
2015033451.tif 000004
【図３】
2015033451.tif 000005
【図４】
2015033451.tif 000006
【図５】
2015033451.tif 000007
【図６】
2015033451.tif 000008
【図７】
2015033451.tif 000009
【図８】
2015033451.tif 000010
【図９】
2015033451.tif 000011
【図１０】
2015033451.tif 000012
【図１１】
2015033451.tif 000013
【図１２】
2015033451.tif 000014
【図１３】
2015033451.tif 000015
【図１４】
2015033451.tif 000016
【図１５】
2015033451.tif 000017
【手続補正書】
【提出日】平成28年11月18日(2016.11.18)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のストレージシステムをネットワークを介して接続した分散ストレージシステムの制御方法であって、前記分散ストレージシステムに含まれる第１のストレージシステムは、
前記分散ストレージシステムに格納されるデータの特性に応じて予め定められた、複数の複製データの一貫性に関するポリシと複数の複製データによる冗長性に関するポリシを管理し、
端末からのＩ／Ｏ要求のデータの特性に応じて、前記一貫性に関するポリシに基づき、前記分散ストレージシステムに対する前記複製データへのアクセス時、アクセスする前記複製データが最新である、前記複製データの一貫性を保証する第１の一貫性制御、前記複製データへのアクセス時、必ずしも前記複製データの一貫性を保証しない第２の一貫性制御、あるいは一貫性制御不要のいずれか一つの処理を選択し、
前記第１および第２の一貫性制御の処理において、
前記Ｉ／Ｏ要求のデータの特性に応じて、前記冗長性に関するポリシに基づき、データの複製先となる第２のストレージシステムの数を決定し、前記Ｉ／Ｏ要求のデータの特性と前記端末の位置に応じて、前記決定した数の前記第２のストレージシステムを、前記複数のストレージシステムから選択し、
選択された前記第２のストレージシステムに対して、前記Ｉ／Ｏ要求のデータを複製するための要求を発行することを特徴とする分散ストレージシステムの制御方法。
【請求項２】
請求項１記載の分散ストレージシステムの制御方法であって、
前記第２のストレージシステムに、前記端末の位置の近傍のストレージシステムを含むことを特徴とする分散ストレージシステムの制御方法。
【請求項３】
請求項２記載の分散ストレージシステムの制御方法であって、
前記第２のストレージシステムは、アクセス応答性を反映した、前記第１のストレージシステムからの地理的あるいはネットワーク的の少なくとも一方の距離に基づいて選択されることを特徴とする分散ストレージシステムの制御方法。
【請求項４】
請求項３記載の分散ストレージシステムの制御方法であって、
前記第１の一貫性制御の処理は、前記複製データの一貫性の保証に、前記第１のストレージシステムおよび前記第２のストレージシステムに格納する前記複製データの過半数の書き込み完了を確認するＱｕｏｒｕｍを用いることを特徴とする分散ストレージシステムの制御方法。 
【請求項５】
請求項４記載の分散ストレージシステムの制御方法であって、
前記第１のストレージシステムは、前記第２のストレージシステムの一つであり、
前記第１のストレージシステムは、前記Ｉ／Ｏ要求を実行することを特徴とする分散ストレージシステムの制御方法。
【請求項６】
請求項５記載の分散ストレージシステムの制御方法であって、
前記Ｉ／Ｏ要求のデータの特性は、当該データを格納するディレクトリのパス名に基づいて判定されることを特徴とする分散ストレージシステムの制御方法。
【国際調査報告】
2015033451.tif 000018
2015033451.tif 000019
2015033451.tif 000020