(57)【要約】【課題】ネットワークを介して、データをストレージ装置へ格納する処理を行う際に、データ転送性能の低下を回避することを可能とする。【解決手段】データ格納制御システム２は、第一のストレージ装置６０に格納される格納データの一部であるブロックデータを受信して格納したのち、第一のストレージ装置に転送する転送部７１−１乃至ｍを備える、第二のストレージ装置７０−１乃至ｍと、格納データを複数のブロックデータに分割したのち、記憶部５２に格納する分割格納部５１と、記憶部５２に格納されたブロックデータに関する滞留状態を検出する検出部５３と、第二のストレージ装置を、所定の基準に基づき選択する選択部５４と、滞留状態が検出された場合に、ブロックデータを、第一のストレージ装置、及び、第二のストレージ装置に分散して格納する分散格納部５５と、を備えるデータ格納制御装置５０と、を有する。【選択図】      図６
2015172855.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークによって接続された複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送する転送手段
を備える、前記複数のストレージ装置の中の１以上の第二のストレージ装置と、
前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納する分割格納手段と、
前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出する検出手段と、
前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択する選択手段と、
前記検出手段が前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納する分散格納手段と、
を備えるデータ格納制御装置と、
を有するデータ格納制御システム。
【請求項２】
前記選択手段は、前記第一のストレージ装置と論理的に近接するストレージ装置を、前記第二のストレージ装置として選択する、
請求項１に記載のデータ格納制御システム。
【請求項３】
前記選択手段は、前記第一のストレージ装置と論理的に近接する１以上のストレージ装置を識別可能な第一の識別子の一覧情報を記憶し、前記一覧情報にある前記第一の識別子により識別可能なストレージ装置を、前記第二のストレージ装置として選択する、
請求項２に記載のデータ格納制御システム。
【請求項４】
前記選択手段は、前記第一のストレージ装置の前記ネットワークにおけるアドレスが示す値との差分が閾値以下であるアドレスを有する、前記複数のストレージ装置の中の少なくとも何れかのストレージ装置を、前記第二のストレージ装置として選択する、
請求項２または３に記載のデータ格納制御システム。
【請求項５】
前記分割格納手段は、前記格納データが含む前記ブロックデータの全てから第一のハッシュ値を算出し、前記第一のハッシュ値、及び、前記格納データを識別可能な第二の識別子を前記分散格納手段へ入力し、
前記分散格納手段は、前記第二の識別子、前記第一のストレージ装置を識別可能な第三の識別子、及び、前記第一のハッシュ値を関連付けて、前記ブロックデータに付加して、前記第二のストレージ装置に入力し、
前記転送手段は、前記格納データに関して格納した前記ブロックデータの全てから第二のハッシュ値を算出し、同一の値を示す第二の識別子に関連付けられた前記第一及び第二のハッシュ値が異なる場合に、前記第三の識別子が識別する前記第一のストレージ装置へ、格納した前記ブロックデータを転送する、
請求項１乃至４のいずれかに記載のデータ格納制御システム。
【請求項６】
前記分割格納手段は、前記データ格納装置が実行するファイルシステムによって生成された、前記格納データが含む前記ブロックデータの全てに関するメタ情報を基に前記第一のハッシュ値を算出し、
前記転送手段は、前記第二のストレージ装置が実行するファイルシステムによって生成された、前記格納データに関して格納した前記ブロックデータの全てに関するメタ情報を基に前記第二のハッシュ値を算出し、算出した前記第二のハッシュ値を、前記第一のハッシュ値と比較する、
請求項５に記載のデータ格納制御システム。
【請求項７】
ネットワークによって接続された複数のストレージ装置の中の１以上の第二のストレージ装置によって、
前記複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送し、
データ格納制御装置によって、
前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納し、
前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出し、
前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択し、
前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納する、
データ格納制御方法。
【請求項８】
前記データ格納制御装置によって、
前記第一のストレージ装置と論理的に近接するストレージ装置を、前記第二のストレージ装置として選択する、
請求項７に記載のデータ格納制御方法。
【請求項９】
ネットワークによって接続された複数のストレージ装置の中の１以上の第二のストレージ装置が、前記複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送する場合に、
前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納する分割格納処理と、
前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出する検出処理と、
前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択する選択処理と、
前記検出処理が前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納する分散格納処理と、
をコンピュータに実行させる、データ格納制御プログラム。
【請求項１０】
前記第一のストレージ装置と論理的に近接するストレージ装置を、前記第二のストレージ装置として選択する前記選択処理
をコンピュータに実行させる、請求項９に記載のデータ格納制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、通信ネットワークを介して、データをストレージ装置へ格納する処理を制御するデータ格納制御システム等に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング環境を利用したサービスが急速に広がってきている。クラウドコンピューティング環境においては、様々なデータが、通信ネットワーク（以降、単にネットワークと称する）を介して、所定のストレージ装置に格納される。したがって、ネットワークを介してデータを所定のストレージ装置に格納する処理に関して、性能及び信頼性を向上する技術に対する期待が高まってきている。
【０００３】
このような技術に関連する技術として、特許文献１には、ファイルサーバを複数個同時に使用する場合に、システム容量を拡張できるだけでなく、システムの負荷を全体に分散させることにより、１つのファイルに対するアクセス能力を向上させたファイルシステムが開示されている。
【０００４】
また、特許文献２には、所定の汎用マシンにファイルを転送する場合に、予めその汎用マシンへのファイル転送において利用可能とされた汎用サーバのうちの何れかが転送不可能な状況であった場合でも、他の汎用サーバを利用してファイル転送を行うようにしたファイルシステムが開示されている。
【０００５】
さらに、特許文献３には、ファイルサーバと分散ファイルシステムを利用するユーザとの間を仲介する管理サーバにおいて発生した障害によって、システム全体のサービスが停止することを回避することを可能とした分散ファイルシステムが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2003-150435号公報
【特許文献２】特開2003-345699号公報
【特許文献３】特開2012-8934号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
クラウドコンピューティング環境を構築するソフトウェアであるＯｐｅｎＳｔａｃｋ（登録商標）には、クラウドストレージシステムを提供するＳｗｉｆｔ（登録商標）というコンポーネントが含まれている。このＳｗｉｆｔにより構築されたコンピュータシステムは、プロキシノード（プロキシサーバ）、及び、３台以上のストレージノード（ストレージサーバ）を備えている。
【０００８】
係るコンピュータシステムにおいては、プロキシノードは、クライアント端末装置から受信したデータを、６４ＫＢ（キロバイト）ブロックデータに分割したのち、例えば３多重（３レプリカ）化して、このブロックデータを３台のストレージノードに順次送信する。プロキシノードは、送信先の３台のストレージノードごとに、所定の数の６４ＫＢブロックデータを、送信するまで一時的に記憶するキューを備えている。そして、この３つのキューは、これら３つのキューが共に次のブロックデータを取り込むことが可能な状態にある場合に、次のブロックデータを取り込む機能を有している。
【０００９】
一般的なクラウドコンピューティングシステムは、災害対策等を考慮して、遠隔地にあるデータセンターを含んでいることが多い。したがって、クラウドコンピューティングシステムによっては、プロキシノードから論理的に近い場所にあるストレージノードと、遠い場所にあるストレージノードとが混在する場合がある。このような場合、論理的に遠い場所にあるストレージノードへブロックデータを転送する時間が長くなる。このため、当該ストレージノードに関するキューにブロックデータが滞留し、次のブロックデータを取り込むことができない滞留状態が発生する。この結果、クラウドコンピューティングシステムの性能が低下し、クラウドサービスの提供に支障が出る虞がある。上述した特許文献１乃至３が開示した技術は、この問題を解決することはできない。
【００１０】
本願発明の主たる目的は、この問題を解決した、データ格納制御システム、データ格納制御方法、及び、データ格納制御プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本願発明に係るデータ格納制御システムは、ネットワークによって接続された複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送する転送手段を備える、前記複数のストレージ装置の中の１以上の第二のストレージ装置と、前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納する分割格納手段と、前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出する検出手段と、前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択する選択手段と、前記検出手段が前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納する分散格納手段と、を備えるデータ格納制御装置と、を有することを特徴とする。
【００１２】
上記目的を達成する他の見地において、本願発明のデータ格納御方法は、ネットワークによって接続された複数のストレージ装置の中の１以上の第二のストレージ装置によって、前記複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送し、データ格納制御装置によって、前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納し、前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出し、前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択し、前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納することを特徴とする。
【００１３】
また、上記目的を達成する更なる見地において、本願発明に係るデータ格納制御プログラムは、ネットワークによって接続された複数のストレージ装置の中の１以上の第二のストレージ装置が、前記複数のストレージ装置の中の、第一のストレージ装置に格納される格納データの一部である１以上のブロックデータを受信し、受信した前記ブロックデータを所定の時間格納したのち、格納した前記ブロックデータを、前記第一のストレージ装置に転送する場合に、前記格納データを受信し、受信した前記格納データを複数の前記ブロックデータに分割し、分割した前記ブロックデータを記憶手段に格納する分割格納処理と、前記記憶手段に格納された前記ブロックデータの個数が所定の条件を満たす場合に、前記ブロックデータが前記記憶手段に滞留した滞留状態であることを検出する検出処理と、前記複数のストレージ装置の中から、１以上の前記第二のストレージ装置を、所定の基準に基づき選択する選択処理と、前記検出処理が前記滞留状態を検出した場合に、前記記憶手段から読み出した前記ブロックデータを、前記第一のストレージ装置、及び、１以上の前記第二のストレージ装置に分散して格納する分散格納処理と、をコンピュータに実行させることを特徴とする。
【００１４】
更に、本発明は、係るデータ格納制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記憶媒体によっても実現可能である。
【発明の効果】
【００１５】
本願発明は、ネットワークを介して、データをストレージ装置へ格納する処理を行う際に、データ転送性能の低下を回避することを可能とする。
【図面の簡単な説明】
【００１６】
【図１】本願発明の第１の実施形態に係るデータ格納制御システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るデータ格納制御システムが格納データをストレージ装置に格納する動作を示すフローチャートである。
【図３】本願発明の第１の実施形態に係るデータ格納制御システムが２つのストレージ装置に分散格納された格納データを復元する動作を示すフローチャートである。
【図４】本願発明の第１の実施形態に係るデータ格納制御装置からストレージ装置へのブロックデータの格納例を示す図である。
【図５】本願発明の第１の実施形態に係る２つのストレージ装置に分散格納された格納データの復元例を示す図である。
【図６】本願発明の第２の実施形態に係るデータ格納制御システムの構成を示すブロック図である。
【図７】本願発明の各実施形態のデータ格納制御装置及びストレージ装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
＜第１の実施形態＞
図１は、第１の実施形態に係るデータ格納制御システム１の構成を概念的に示すブロック図である。本実施形態に係るデータ格納制御システム１は、データ格納制御装置１０、ストレージ装置２０−１乃至３、ストレージ装置３０−１乃至ｎ（ｎは１以上の整数）、及び、クライアント端末装置４０を有する。データ格納制御装置１０、ストレージ装置２０−１乃至３、ストレージ装置３０−１乃至ｎ、及び、クライアント端末装置４０は、通信可能にネットワークに接続されている。尚、データ格納制御システム１がＳｗｉｆｔ環境を構築する場合、データ格納制御装置１０がプロキシノードに相当し、ストレージ装置２０−１乃至３がストレージノードに相当する。
【００１９】
データ格納制御装置１０は、分割格納部１１、書き込みキュー１２−１乃至４、検出部１３、選択部１４、及び、分散格納部１５を備えている。分割格納部１１、検出部１３、選択部１４、及び、分散格納部１５は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。書き込みキュー１２−１乃至４は、電子回路あるいはコンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによってアクセス制御が行われる、電子メモリ等の記憶デバイスである。
【００２０】
分割格納部１１は、クライアント端末装置４０から、ストレージ装置２０−１乃至３に格納する格納データを受信する。分割格納部１１は、係る格納データを、例えば６４ＫＢのブロックデータに分割する。このブロックデータのサイズは、６４ＫＢ以外の値でもよい。分割格納部１１は、それぞれのブロックデータを、順次、書き込みキュー１２−１乃至３の全てに格納する。尚、書き込みキュー１２−１乃至３の少なくとも何れかにおいて、次のブロックデータを受け付けることができない滞留状態が発生している場合は、分割格納部１１は、書き込みキュー１２−１乃至３へブロックデータを格納することを保留する。
【００２１】
分割格納部１１は、係る格納データを識別可能な識別子を、分散格納部１５へ入力する。格納データを識別可能な識別子としては、格納データに関するファイル名、あるいは、更新日時等がある。
【００２２】
分割格納部１１はまた、データ格納装置１０が実行するファイルシステムによって生成された、係る格納データが含むブロックデータの全てに関するメタデータを基に第１のハッシュ値を算出する。すなわちこの第１のハッシュ値は、格納データが含むブロックデータが１つも欠落しておらず、全てそろっていることを示しており、ブロックデータが１つでも欠落した場合は、ブロックデータが全てそろっている場合とは異なる値となる。尚、分割格納部１１は、メタデータを基に算出する以外の方法により、この第１のハッシュ値を算出してもよい。分割格納部１１は、この第１のハッシュ値を、分散格納部１５へ入力する。
【００２３】
検出部１３は、書き込みキュー１２−１乃至３の少なくとも何れかにおいて、格納されたブロックデータの個数が所定の条件を満たす場合に、当該書き込みキューにおいて滞留状態が発生したことを検出する。検出部１３は、例えば、書き込みキュー１２−１乃至３がブロックデータを格納するエントリ数が１０個である場合に、書き込みキュー１２−１乃至３の少なくともいずれかに格納されたブロックデータの個数が１０個になった際に、滞留状態を検出してもよい。あるいは、検出部１３は、格納したブロックデータの数が最も多い書き込みキューと最も少ない書き込みキューにおける、ブロックデータの格納数に関する差分が、所定の個数、例えば５個以上になった際に、滞留状態を検出してもよい。検出部１３は、係る滞留状態を検出したことを、分割格納部１１、選択部１４、及び、分散格納部１５へ通知する。
【００２４】
選択部１４は、検出部１３から、書き込みキュー１２−ｉ（ｉは１乃至３の少なくともいずれかの整数）において滞留状態が発生したことを受信した場合、ストレージ装置３０−１乃至ｎの少なくとも何れかを、所定の基準に基づき選択する。選択部１４がここで選択するストレージ装置は、データ格納制御装置１０がストレージ装置２０−ｉに対してブロックデータを送信する際に、当該ブロックデータを分散させて送信するために一時的に使用するストレージ装置である。
【００２５】
選択部１４は、ここでは、ネットワークにおいて、ストレージ装置２０−ｉと論理的に近接するストレージ装置を、ストレージ装置３０−１乃至ｎの中から選択する。この場合、選択部１４は、ストレージ装置２０−１乃至３のそれぞれに関して、論理的に近接する、ストレージ装置３０−１乃至ｎの少なくとも何れかを識別する識別子の一覧情報を記憶してもよい。即ち、この一覧情報は、ストレージ装置２０−１乃至３のそれぞれが位置するゾーンごとに、ストレージ装置３０−１乃至ｎの少なくとも何れかが位置するかを示した情報である。そして、選択部１４は、係る一覧情報に識別子が記載された、ストレージ装置３０−１乃至ｎの少なくとも何れかを選択する。
【００２６】
選択部１４は、あるいは、ストレージ装置２０−ｉのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスが示す値との差分が閾値以内の値であるＩＰアドレスが付与されたストレージ装置を、ストレージ装置３０−１乃至ｎの中から選択してもよい。その理由は、一般的に、ネットワークにおいて論理的に近接するストレージ装置には、それぞれ近い値のＩＰアドレスが割り当てられることが多いからである。選択部１４は、選択したストレージ装置３０−１乃至ｎの少なくとも何れかを識別する識別子を、分散格納部１５へ通知する。
【００２７】
分散格納部１５は、書き込みキュー１２−１乃至３からブロックデータを順次読み出して、読み出したブロックデータを、それぞれ、ネットワークを介して、ストレージ装置２０−１乃至３に格納する。
【００２８】
本実施形態に係るデータ格納制御装置１０からストレージ装置２０−１乃至３へのブロックデータの格納例を図４に示す。図４に示す例では、ストレージ装置２０−１は、格納データに関するブロックデータ１乃至９を格納済みであり、書き込みキュー１２−１は、送信待ち状態にあるブロックデータ１０乃至１２を格納している。ストレージ装置２０−２は、ブロックデータ１乃至７を格納済みであり、書き込みキュー１２−２は、送信待ち状態にあるブロックデータ８乃至１２を格納している。ストレージ装置２０−３は、ブロックデータ１乃至２を格納済みであり、書き込みキュー１２−３は、送信待ち状態にあるブロックデータ３乃至１２を格納している。
【００２９】
図４に示す例では、書き込みキュー１２−１乃至３がブロックデータを格納するエントリ数は１０個である。そして、この場合、検出部１３は、１０個のブロックデータ３乃至１２を格納している書き込みキュー１２−３において滞留状態が発生していることを検出する。
【００３０】
分散格納部１５は、検出部１３から、係る滞留状態が発生していることを受信したのち、書き込みキュー１２−３に格納された１０個のブロックデータのうち、半分である５個のブロックデータを、書き込みキュー１２−４へ移動する。書き込みキュー１２−４は、滞留状態が発生していない場合は使用しない予備の書き込みキューである。尚、分散格納部１５は、書き込みキュー１２−４が使用中である場合は、書き込みキュー１２−４が未使用の状態になるまで待機する。図４に示す例の場合、分散格納部１５は、ブロックデータ３、５、７、９、及び、１１を、書き込みキュー１２−３から書き込みキュー１２−４へ移動する。
【００３１】
分散格納部１５は、書き込みキュー１２−１からブロックデータ１０乃至１２を順次読み出して、読み出したブロックデータを、ストレージ装置２０−１に格納する。分散格納部１５は、書き込みキュー１２−２からブロックデータ８乃至１２を順次読み出して、読み出したブロックデータを、ストレージ装置２０−２に格納する。分散格納部１５は、書き込みキュー１２−３からブロックデータ４、６、８、１０、及び、１２を順次読み出して、読み出したブロックデータを、ストレージ装置２０−３に格納する。分散格納部１５は、書き込みキュー１２−４からブロックデータ３、５、７、９、及び、１１を順次読み出して、読み出したブロックデータを、ストレージ装置３０−１に格納する。尚、ストレージ装置３０−１は、選択部１４によって、ストレージ装置３０−１乃至ｎの中から選択された、ストレージ装置２０−３と論理的に近接するストレージ装置である。
【００３２】
分散格納部１５は、ストレージ装置２０−１乃至３、及び、ストレージ装置３０−１にブロックデータを送信する際に、ブロックデータに、分割格納部１１から入力された、格納データを識別可能な識別子を付加する。
【００３３】
分散格納部１５は、また、ストレージ装置２０−１乃至３、及び、ストレージ装置３０−１にブロックデータを送信する際に、ブロックデータに、そのブロックデータを格納する格納先を識別可能な識別子を付加する。すなわち、分散格納部１５は、ストレージ装置２０−１乃至３へ送信するブロックデータには、それぞれ、ストレージ装置２０−１乃至３を識別する識別子を付加する、尚、分散格納部１５は、ストレージ装置３０−１へ送信するブロックデータには、ストレージ装置３０−１ではなくストレージ装置２０−３を識別する識別子を付加する。その理由は、ストレージ装置３０−１へ送信するブロックデータは、最終的に、ストレージ装置２０−３に格納されるからである。係る格納先を識別可能な識別子としては、格納先であるストレージ装置の装置名、あるいは、ＩＰアドレス等がある。
【００３４】
分散格納部１５は、さらに、ストレージ装置２０−１乃至３、及び、ストレージ装置３０−１にブロックデータを送信する際に、ブロックデータに、分割格納部１１から入力された第１のハッシュ値を付加する。
【００３５】
ストレージ装置３０−１は、転送部３１−１を備えている。ストレージ装置３０−２（図示せず）乃至ｎも、ストレージ装置３０−１と同様の構成である。転送部３１−１は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。
【００３６】
転送部３１−１は、分散格納部１５によってストレージ装置３０−１に格納された、格納データに含まれる一部のブロックデータを、その格納データに関する本来の格納先であるストレージ装置に転送する。本来の格納先であるストレージ装置は、転送部３１−１から、その格納データに関する未入手のブロックデータを入手することにより、係る格納データを復元することができる。
【００３７】
本実施形態に係る２つのストレージ装置に分散格納された格納データの復元例を図５に示す。ストレージ装置２０−３は、図４に示す状態において、分散格納部１５が上述した処理を行った結果、ブロックデータ１、２、４、６、８、１０、及び１２を格納している。また、ストレージ装置２０−３は、分散格納部１５が行う処理によって、ブロックデータ１３から格納データに関する最後のブロックデータまでを格納しているものとする。
【００３８】
ストレージ装置２０−３は、実行するファイルシステム２２−３によって、これらのブロックデータを、ブロックデータ格納領域２２１−３に格納している。ストレージ装置２０−３は、ブロックデータ格納領域２２１−３において、本来であれば、ブロックデータ３、５、７、９、及び、１１が格納される領域には、全て０を格納している。ファイルシステム２２−３は、ブロックデータ３、５、７、９、及び、１１が欠落した状態にある格納データに関するメタデータを生成して、そのメタデータをメタデータ格納領域２２０−３に格納する。
【００３９】
ストレージ装置３０−１は、分散格納部１５が上述した処理を行った結果、ブロックデータ３、５、７、９、及び１１を格納している。ストレージ装置３０−１は、実行するファイルシステム３２−１によって、これらのブロックデータを、ブロックデータ格納領域３２１−１に格納している。ストレージ装置３０−１は、ブロックデータ格納領域３２１−１において、本来であれば、ブロックデータ３、５、７、９、及び、１１を除くブロックデータが格納される領域には、全て０を格納している。ファイルシステム３２−１は、ブロックデータ３、５、７、９、及び、１１を除くブロックデータが欠落した状態にある格納データに関するメタデータを生成して、メタデータをメタデータ格納領域３２０−１に格納する。
【００４０】
ストレージ装置３０−１における転送部３１−１は、ブロックデータ３、５、７、９、及び、１１を除くブロックデータが欠落した状態にある格納データに関するメタデータを基に、第２のハッシュ値を算出する。すなわち、この第２のハッシュ値は、格納データが包含するブロックデータの一部しかそろっていないことを示している。尚、転送部３１−１は、メタデータを基に算出する以外の方法であり、かつ、分割格納部１１が第１のハッシュ値を算出したときと同様の方法により、この第２のハッシュ値を算出してもよい。
【００４１】
転送部３１−１は、同一の格納データに関する第１及び第２のハッシュ値が異なることを確認したのち、格納したブロックデータに関する本来の格納先がストレージ装置２０−３であることを確認する。転送部３１−１は、ストレージ装置３０−１が所定の時間格納した、ブロックデータ３、５、７、９、及び、１１を、ストレージ装置２０−３へ転送する。転送部３１−１は、これらブロックデータの転送を完了したのち、これらブロックデータを、ストレージ装置３０−１から削除する。
【００４２】
ストレージ装置２０−３は、転送部３１−１から転送された、ブロックデータ３、５、７、９、及び、１１を、ブロックデータ格納領域２２１−３における、これらブロックデータが本来格納される領域に格納する。
【００４３】
尚、ストレージ装置２０−１乃至３も、ストレージ装置３０−１における転送部３１−１が備える機能と同様の機能を備えている。本実施形態の例では、ストレージ装置２０−１乃至３は、格納したブロックデータに関する本来の格納先が自装置であるため、ストレージ装置３０−１が行う、格納したブロックデータを転送する処理を行わない。
【００４４】
次に図２のフローチャートを参照して、本実施形態に係るデータ格納制御システム１が格納データをストレージ装置に格納する動作（処理）について詳細に説明する。
【００４５】
分割格納部１１は、クライアント端末装置４０から受信した格納データを、所定の大きさのブロックデータに分割する（ステップＳ１０１）。検出部１３は、書き込みキュー１２−ｉ（ｉは１乃至３の少なくともいずれかの整数）において滞留状態が発生しているか否かを確認し、確認した結果を、分割格納部１１、選択部１４、及び、分散格納部１５へ通知する（ステップＳ１０２）。
【００４６】
滞留状態が発生していない場合（ステップＳ１０３でＮｏ）、分割格納部１１は、次のブロックデータを、書き込みキュー１２−１乃至３に格納する（ステップＳ１０４）。分散格納部１５は、書き込みキュー１２−１乃至３から、格納されたブロックデータを読み出して、読み出したブロックデータを、それぞれ、ストレージ装置２０−１乃至３に格納し（ステップＳ１０５）、処理はステップＳ１１２へ進む。
【００４７】
滞留状態が発生している場合（ステップＳ１０３でＹｅｓ）、分散格納部１５は、書き込みキュー１２−４が使用中であるか否かを確認する。書き込みキュー１２−４が使用中である場合（ステップＳ１０６でＹｅｓ）、分散格納部１５は、所定の時間待機して（ステップＳ１０７）、処理はＳ１０６に戻る。書き込みキュー１２−４が使用中でない場合（ステップＳ１０６でＮｏ）、分散格納部１５は、書き込みキュー１２−ｉに格納されたブロックデータの半分を、書き込みキュー１２−４に移動する（ステップＳ１０８）。
【００４８】
分割格納部１１は、次のブロックデータを、書き込みキュー１２−１乃至３に格納する（ステップＳ１０９）。選択部１４は、ストレージ装置３０−１乃至ｎの中から、ストレージ装置３０−ｊ（ｊは１乃至ｎの少なくともいずれかの整数）を選択し、選択結果を、分散格納部１５へ通知する（ステップＳ１１０）。分散格納部１５は、書き込みキュー１２−１乃至４に格納されたブロックデータを、ストレージ装置２０−１乃至３、及び、３０−ｊに格納する（ステップＳ１１１）。
【００４９】
処理したブロックデータが、格納データに関する最後のブロックデータでない場合（ステップＳ１１２でＮｏ）、処理はステップＳ１０２へ戻る。処理したブロックデータが、格納データに関する最後のブロックデータである場合（ステップＳ１１２でＹｅｓ）、全体の処理は終了する。
【００５０】
次に図３のフローチャートを参照して、本実施形態に係るデータ格納制御システム１が２つのストレージ装置に分散格納された格納データを復元する動作（処理）について詳細に説明する。
【００５１】
ストレージ装置３０−ｋ（ｋは１乃至ｎのいずれかの整数）は、受信したデータブロックを格納する（ステップＳ２０１）。転送部３１−ｋは、ストレージ装置３０−ｋが実行するファイルシステムが格納したブロックデータから生成したメタデータを基に、第２のハッシュ値を算出する（ステップＳ２０２）。転送部３１−ｋは、第２のハッシュ値を、格納データ全体に関するメタデータから分割格納部１１が算出した第１のハッシュ値と比較する（ステップＳ２０３）。
【００５２】
両方のハッシュ値が一致している場合（ステップＳ２０４でＹｅｓ）、全体の処理は終了する。両方のハッシュ値が一致していない場合（ステップＳ２０４でＮｏ）、転送部３１−ｋは、受信したブロックデータの格納先を確認する（ステップＳ２０５）。
【００５３】
格納先が自装置（すなわちストレージ装置３０−ｋ）である場合（ステップＳ２０６でＹｅｓ）、全体の処理は終了する。格納先が自装置でない場合（ステップＳ２０６でＮｏ）、転送部３１−ｋは、受信したブロックデータの格納先であるストレージ装置に受信したブロックデータを転送する（ステップＳ２０７）。転送部３１−ｋは、受信したブロックデータを、ストレージ装置３０−ｋから削除し（ステップＳ２０８）、全体の処理は終了する。
【００５４】
本実施形態に係るデータ格納制御システム１は、ネットワークを介して、データをストレージ装置へ格納する処理を行う際に、データ転送性能の低下を回避することができる。その理由は、検出部１３が第１のストレージ装置に格納する格納データが含むブロックデータに関する滞留状態を検出した場合、分散格納部１５が、当該ブロックデータを、第１のストレージ装置と、選択部１４により選択された第２のストレージ装置とに分散格納するからである。そして、第２のストレージ装置が第１のストレージ装置に、格納したブロックデータを転送することにより、第１のストレージ装置が格納データを復元するからである。
【００５５】
例えばＳｗｉｆｔ環境を構築したコンピュータシステムにおいて、格納データを多重化して格納する複数のストレージ装置の何れかに格納する格納データに関して、データ転送が滞留した場合、当該ストレージ装置以外のストレージ装置へのデータ転送処理においても、待ち状態が発生する。このため、係るコンピュータシステムの性能が大きく低下する虞がある。
【００５６】
これに対して、本実施形態に係るデータ格納制御システム１は、検出部１３が、例えば書き込みキュー１２−３において、ブロックデータに関する滞留状態が発生していることを検出した場合、選択部１４がストレージ装置３０−１乃至ｎの中から、所定の基準に従い、例えばストレージ装置３０−１を選択する。そして、分散格納部１５は、キュー１２−３に格納されているブロックデータの半分をキュー１２−４に移動する。分散格納部１５は、キュー１２−３及び４に格納されているブロックデータを、それぞれ、ストレージ装置２０−３及び３０−１に格納する。この場合、分散格納部１５がキュー１２−３から読み出してストレージ装置２０−３に格納するプロックデータの個数は、滞留状態が検出されたときと比べて半分に減少する。これにより、本実施形態に係るデータ格納制御システム１は、係る滞留状態を短時間で解消できるため、係るコンピュータシステムの性能が低下することを回避することができる。
【００５７】
尚、本実施形態では、データ格納制御装置１０が予備のキュー１２−４を備えているが、データ格納制御装置１０は、必ずしもキュー１２−４を備えなくてもよい。この場合、例えば、分散格納部１５がキュー１２−３から読み出したブロックデータを、ストレージ装置２０−３及び３０−１に対して交互に送信すればよい。
【００５８】
そして、ストレージ装置３０−１における転送部３１−１は、ストレージ装置３０−１が格納した、本来はストレージ装置２０−３が格納するブロックデータを、ストレージ装置２０−３へ転送する。ストレージ装置２０−３は、格納データが含む全てのブロックデータを入手することにより、格納データを復元することができる。
【００５９】
また、本実施形態に係るデータ格納制御システム１では、検出部１３は、ストレージ装置２０−３と、ネットワークにおいて論理的に近接するストレージ装置３０−１を選択する。したがって、データ格納制御システム１は、ストレージ装置３０−１がストレージ装置２０−３に対してブロックデータを転送する際の転送時間、及び、この転送処理がネットワークに与える負荷の大きさを最小限に抑えることができる。
【００６０】
尚、本実施形態では、便宜上、書き込みキュー１２−１乃至３のいずれか１つにおいて滞留状態が発生し、検出部１３が、ストレージ装置３０−１乃至ｎの中から１つのストレージ装置を選択する場合を示したが、データ格納制御システム１が行う処理は、係る場合に限定されない。例えば、書き込みキュー１２−１乃至３における２つ以上のキューにおいて滞留状態が発生し、検出部１３が、滞留状態が発生したキューごとに、ストレージ装置３０−１乃至ｎの中からストレージ装置を選択してもよい。あるいは、滞留状態が発生したキューに関して、検出部１３が、２つ以上のストレージ装置を選択することにより、分散格納部１５が、分散性をさらに高めて、ブロックデータをストレージ装置に格納する処理を行ってもよい。
【００６１】
＜第２の実施形態＞
図６は第２の実施形態のデータ格納制御システム２の構成を概念的に示すブロック図である。
【００６２】
本実施形態のデータ格納制御システム２は、データ格納制御装置５０、及び、ｍ個の第二のストレージ装置７０−１乃至ｍを有している。
【００６３】
第二のストレージ装置７０−１乃至ｍは、それぞれ、転送部７１−１乃至ｍを備えている。
【００６４】
転送部７１−１乃至ｍは、ネットワークによって接続された複数のストレージ装置の中の、第一のストレージ装置６０に格納される格納データの一部である、１以上のブロックデータを受信する。転送部７１−１乃至ｍは、係るブロックデータを所定の時間格納したのち、格納したブロックデータを、第一のストレージ装置６０に転送する。
【００６５】
データ格納制御装置５０は、分割格納部５１、記憶部５２、検出部５３、選択部５４、及び、分散格納部５５を備えている。
【００６６】
分割格納部５１は、係る格納データを受信して、その格納データを複数のブロックデータに分割したのち、そのブロックデータを記憶部５２に格納する。
【００６７】
検出部５３は、記憶部５２に格納されたブロックデータの個数が所定の条件を満たす場合に、係るブロックデータが記憶部５２に滞留した滞留状態であることを検出する。
【００６８】
選択部５４は、ネットワークによって接続された複数のストレージ装置の中から、１以上のストレージ装置（例えばｍ個の第二のストレージ装置７０−１乃至ｍ）を、所定の基準に基づき選択する。
【００６９】
分散格納部５５は、検出部５４が係る滞留状態を検出した場合に、記憶部５２から読み出したブロックデータを、第一のストレージ装置６０、及び、第二のストレージ装置７０−１乃至ｍに分散して格納する。
【００７０】
本実施形態に係るデータ格納制御システム２は、ネットワークを介して、データをストレージ装置へ格納する処理を行う際に、データ転送性能の低下を回避することができる。その理由は、検出部５３が第一のストレージ装置６０に格納する格納データが含むブロックデータに関する滞留状態を検出した場合、分散格納部５５が、当該ブロックデータを、第一のストレージ装置６０と、選択部１４により選択された第二のストレージ装置７０−１乃至ｍとに分散格納するからである。そして、第二のストレージ装置７０−１乃至ｍが第一のストレージ装置６０に、格納したブロックデータを転送することにより、第一のストレージ装置６０が格納データを復元するからである。
【００７１】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図６に示した各部は、専用のＨＷ（ＨａｗｄＷａｒｅ）（電子回路）によって実現することができる。また、少なくとも分割格納部１１及び５１、検出部１３及び５３、選択部１４及び５４、分散格納部１５及び５５、及び、転送部３１−１及び７１−１乃至ｍは、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図７を参照して説明する。
【００７２】
図７は、本発明の模範的な実施形態に係るデータ格納制御装置、ストレージ装置、及び、第二のストレージ装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図７は、図１、及び、図６に示したデータ格納制御装置、ストレージ装置、及び、第二のストレージ装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００７３】
図７に示した情報処理装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、ハードディスク９０４（記憶装置）、外部装置との通信インタフェース９０５（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記憶媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、及び、入出力インタフェース９０９を備え、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００７４】
そして、上述した実施形態を例に説明した本発明は、図７に示した情報処理装置９００に対して、その実施形態の説明において参照したブロック構成図（図１、及び、図６）における分割格納部１１及び５１、検出部１３及び５３、選択部１４及び５４、分散格納部１５及び５５、及び、転送部３１−１及び７１−１乃至ｍ、或いはフローチャート（図２乃至３）の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００７５】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記憶媒体９０７によって構成されると捉えることができる。
【００７６】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００７７】
１    データ格納制御システム
１０    データ格納制御装置
１１    分割格納部
１２−１乃至４    書き込みキュー
１３    検出部
１４    選択部
１５    分散格納部
２０−１乃至３    ストレージ装置
２２−３    ファイルシステム
２２０−３    メタデータ格納領域
２２１−３    ブロックデータ格納領域
３０−１乃至ｎ    ストレージ装置
３１−１    転送部
３２−１    ファイルシステム
３２０−１    メタデータ格納領域
３２１−１    ブロックデータ格納領域
２    データ格納制御システム
５０    データ格納制御装置
５１    分割格納部
５２    記憶部
５３    検出部
５４    選択部
５５    分散格納部
６０    第一のストレージ装置
７０−１乃至ｍ    第二のストレージ装置
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク
９０５    通信インタフェース
９０６    バス
９０７    記憶媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2015172855.tif 000003
【図２】
2015172855.tif 000004
【図３】
2015172855.tif 000005
【図４】
2015172855.tif 000006
【図５】
2015172855.tif 000007
【図６】
2015172855.tif 000008
【図７】
2015172855.tif 000009