(57)【要約】【課題】リストア対象データを固定サイズで分割して取得すると、リストア速度が低下する場合がある。【解決手段】計算機システムは、その計算機システムと１以上のネットワークストレージ間のネットワーク遅延を計測する。計算機システムは、計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従い、リストア対象データの少なくとも一部であるチャンクを、ネットワークを通して、１以上のネットワークストレージから取得する。計算機システムは、取得されたチャンクを基にリストア対象データをリストアする。【選択図】図１５
2018132814.tif 000002
【特許請求の範囲】
【請求項１】
１以上のネットワークストレージからネットワークを通してリストア対象データを取得する計算機システムであって、
前記１以上のネットワークストレージ間のネットワーク遅延を計測する遅延計測手段と、
計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従い、前記リストア対象データの少なくとも一部であるチャンクを、前記ネットワークを通して、前記１以上のネットワークストレージから取得する取得手段と、
取得されたチャンクを基に前記リストア対象データをリストアするリストア手段と
を備える計算機システム。
【請求項２】
前記取得手段は、下記の処理、
（ａ）前記リストア対象データのうちの未処理データを、最近計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割すること、
（ｂ）（ａ）の分割により得られたチャンクのうち、前記最近計測されたネットワーク遅延に応じた並列度分のチャンクを取得すること、
（ｃ）（ａ）の分割により得られたチャンクと前記並列度分のチャンクとの差分があるか否かを判断すること、
（ｄ）（ｃ）の判断結果が真の場合、前記差分を未処理データとして（ａ）を実行すること、
を実行する、
請求項１記載の計算機システム。
【請求項３】
前記取得手段、下記の処理、
（ｈ）前前記リストア対象データのうちの未処理データを、前記計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割すると仮定した場合に、チャンク数が、前記最近計測されたネットワーク遅延に応じた並列度以上になるか否かを判断すること、
（ｉ）（ｈ）の判断結果が真の場合、前記リストア対象データのうちの未処理データを、前記計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割すること、
（ｊ）（ｈ）の判断結果が偽の場合、前記最近計測されたネットワーク遅延に応じたチャンクサイズと前記最近計測されたネットワーク遅延に応じた並列度との積以上に合計データサイズがなるように、前記リストア対象データの他に、１以上の他のリストア対象データを選択し、前記リストア対象データとその選択した１以上の他のリストア対象データとのうちの未処理データを、前記最近計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割すること、
（ｋ）（ｉ）または（ｊ）の分割により得られたチャンクのうち、前記計測されたネットワーク遅延に応じた並列度分のチャンクを取得すること、
を実行する、
請求項１記載の計算機システム。
【請求項４】
前記リストア対象データは、最大並列度分のネットワークストレージの各々に格納されており、
前記１以上のネットワークストレージは、前記最大並列度分のネットワークストレージであり、
前記取得手段は、前記最大並列度分のネットワークストレージのうち、並列度分のネットワークストレージからそれぞれその並列度分のチャンクを並列に取得する、
請求項１乃至３のうちのいずれか１項に記載の計算機システム。
【請求項５】
前記取得手段は、下記の処理、
（ｐ）前記リストア対象データを、前記計測されたネットワーク遅延に応じた並列度分のチャンクに分割すると仮定した場合に、チャンクサイズが、前記計測されたネットワーク遅延に応じたチャンクサイズ以上になるか否かを判断すること、
（ｑ）（ｐ）の判断結果が真の場合、前記リストア対象データを、前記計測されたネットワーク遅延に応じた並列度分のチャンクに分割し、その分割により得られたチャンクを、前記計測されたネットワーク遅延に応じた並列度で取得すること、
を実行する、
請求項１記載の計算機システム。
【請求項６】
前記取得手段は、下記の処理、
（ｒ）（ｑ）の判断結果が偽の場合、前記リストア対象データと、１以上の他のリストア対象データとを、前記計測されたネットワーク遅延に応じた並列度分のチャンクに分割し、その分割により得られたチャンクを、前記計測されたネットワーク遅延に応じた並列度で取得すること、
を実行し、
前記リストア対象データと前記１以上の他のリストア対象データとの合計データサイズは、前記計測されたネットワーク遅延に応じたチャンクサイズと前記計測されたネットワーク遅延に応じた並列度との積以上である、
請求項５記載の計算機システム。
【請求項７】
前記取得手段は、（ｑ）の判断結果が偽の場合であっても、前記積以上の合計サイズが得られる他のリストア対象データが無ければ、（ｒ）に代えて、下記の処理、
（ｓ）前記リストア対象データを、前記計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割し、その分割により得られたチャンクを、前記計測されたネットワーク遅延に応じた並列度未満のうちの最大並列度で取得すること、
を実行する、
請求項６記載の計算機システム。
【請求項８】
前記取得手段は、下記の処理、
（ｓ）（ｑ）の判断結果が偽の場合、前記リストア対象データを、前記計測されたネットワーク遅延に応じたチャンクサイズのチャンクに分割し、その分割により得られたチャンクを、前記計測されたネットワーク遅延に応じた並列度未満のうちの最大並列度で取得することを実行すること、
を実行する、
請求項５記載の計算機システム。
【請求項９】
複数のネットワークストレージに、前記リストア対象データを含む１以上のリストア対象データが格納されており、
前記取得手段は、前記複数のネットワークストレージのうちの２以上のネットワークストレージから前記１以上のリストア対象データのチャンクを取得する、
請求項１記載の計算機システム。
【請求項１０】
前記複数のネットワークストレージに、前記リストア対象データの複数のフラグメントが格納されており、
前記複数のフラグメントの各々は、直前のフラグメントの後側部分と、直後のフラグメントの前側部分とのうちの少なくとも１つと重複しており、
前記取得手段は、前記複数のフラグメントのチャンクを前記複数のネットワークストレージから取得する、
請求項９記載の計算機システム。
【請求項１１】
前記取得手段は、リストアセッション毎に、最近計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従いチャンクを取得する、
請求項１乃至１０のうちのいずれか１項に記載の計算機システム。
【請求項１２】
前記計測されたネットワーク遅延が、相対的に小さければ、チャンクサイズは小さい、および、並列数は大きい、のうちの少なくともいずれかであり、
前記計測されたネットワーク遅延が、相対的に大きければ、チャンクサイズは大きい、および、並列数は小さい、のうちの少なくともいずれかである、
請求項１乃至１１のうちのいずれか１項に記載の計算機システム。
【請求項１３】
前記リストア対象データは、ファイルであり、
前記ネットワークは、単位時間当たりのデータ送受信サイズを徐々に大きくするスロースタートを含んだフロー制御が実施されるＴＣＰ（Transmission Control Protocol）である、
請求項１乃至１２のうちのいずれか１項に記載の計算機システム。
【請求項１４】
データを１以上のネットワークストレージにバックアップする第１の計算機システムと、
前記１以上のネットワークストレージに格納されているデータのうちのリストア対象データをリストアする第２の計算機システムと
を備え、
前記第２の計算機システムは、
前記１以上のネットワークストレージと前記第２の計算機システム間のネットワーク遅延を計測し、
計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従い、前記リストア対象データの少なくとも一部であるチャンクを取得し、
取得されたチャンクを基に前記リストア対象データをリストアする、
バックアップリストアシステム。
【請求項１５】
１以上のネットワークストレージ間のネットワーク遅延を計測し、
計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従い、前記リストア対象データの少なくとも一部であるチャンクを、ネットワークを通して、前記１以上のネットワークストレージから取得し、
取得されたチャンクを基に前記リストア対象データをリストアする、
リストア方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データのリストアに関する。
【背景技術】
【０００２】
地震などの広域災害によってファイルサーバが壊れ、ファイルサーバへ格納されているファイルが消失することがある。そのような広域災害を想定し、耐災害性を向上させるため、一般に、ディザスタリカバリ、すなわち、ネットワークを通してファイルを遠隔地へ複製（バックアップ）しておき、災害によりファイルサーバが壊れてファイルが失われた場合、再構築したファイルサーバへ、ネットワークを通して、バックアップされたファイルを逆複製（リストア）することが行われる。リストアを高速に実施できれば、災害後のファイルサーバの利用開始までの待ち時間を短縮でき、ファイルサーバのデータを早期に利用できるようになる。
【０００３】
リストアを高速に実施するための１つの方法として、特許文献１に開示の方法が考えられる。特許文献１の開示するファイル転送方法は、ファイル転送前に、１つのファイルを固定サイズの断片に分割する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】US6,085,251
【発明の概要】
【発明が解決しようとする課題】
【０００５】
災害後のネットワークは不安定であり、ネットワークの遅延（典型的にはネットワーク遅延時間）が変化する可能性がある（例えば、災害が発生するとネットワークが輻輳し、ネットワークの遅延が大きくなることがある）。これによって、リストアセッションあたりの最大スループットが変化する。
【０００６】
さらに、遅延によって、最大スループットに達するまでの時間が異なる。また、この間に送信されるファイルのデータ量が異なる。
【０００７】
以上のように、ネットワークの遅延が変化することによって、ネットワークの特性が変化する。
【０００８】
特許文献１のファイル転送方法は、ファイルを固定サイズの断片に分割する。特許文献１では、遅延の変化は考慮されておらず、遅延の変化によるネットワーク特性の変化も考慮されていない。そのため、最大スループットに達する前に送信が終わるような大きさでファイルを分割するなど、最適なリストア速度を達成できない場合がある。これは、災害後のネットワーク、言い換えれば、一層不安定であると考えられるネットワークを通して、ファイルをリストアするケースについて、特に問題である。
【０００９】
このような課題は、ディザスタリカバリに限らず、ネットワークを通してファイルのようなデータをリストアする他のケースについても存在し得る。
【課題を解決するための手段】
【００１０】
計算機システムは、その計算機システムと１以上のネットワークストレージ間のネットワーク遅延を計測する。計算機システムは、計測されたネットワーク遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つに従い、リストア対象データの少なくとも一部であるチャンクを、ネットワークを通して、１以上のネットワークストレージから取得する。計算機システムは、取得されたチャンクを基にリストア対象データをリストアする。
【発明の効果】
【００１１】
本発明によると、ネットワーク遅延に応じた最適なリストア速度が期待できる。
【図面の簡単な説明】
【００１２】
【図１】実施例１に係るバックアップリストアシステムの構成例を示すブロック図である。
【図２】ファイルサーバの内部構成を示すブロック図である。
【図３】クラウドサーバの内部構成を示すブロック図である。
【図４】クラウドサーバ管理テーブルの構成例を示す図である。
【図５】データ送受信管理テーブルの構成例を示す図である。
【図６】格納データ管理テーブルの構成例を示す図である。
【図７】並列データリストアの概要の一例を示す模式図である。
【図８】バックアップ処理のフローを示す図である。
【図９】リストア処理のフローを示す図である。
【図１０】リストア処理におけるリストアセッション毎の取得されるチャンクを示す図である。
【図１１】実施例２に係るリストア処理の一例を示す模式図である。
【図１２】実施例３に係るバックアップ処理およびリストア処理の一例を示す模式図である。
【図１３】ＴＣＰ（Transmission Control Protocol）のフロー制御の一例を示す模式図である。
【図１４】一比較例に係る課題の一例を示す模式図である。
【図１５】実施例１の概要の一例を示す模式図である。
【図１６】実施例１の効果の一例を示す模式図である。
【発明を実施するための形態】
【００１３】
以降、幾つかの実施例を説明する。以降に説明する実施例は一例である、本発明はこれらの実施例に限定されるものではない。
【００１４】
以降の説明では、「ａｂｃテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構成で表現されていてもよい。データ構成に依存しないことを示すために「ａｂｃテーブル」のうちの少なくとも１つを「ａｂｃ情報」と呼ぶことができる。また、以降の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部または一部が１つのテーブルであってもよい。
【００１５】
また、以降の説明では、「インターフェース部」は、１以上のインターフェースを含む。１以上のインターフェースは、１以上の同種のインターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種のインターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１６】
また、以降の説明では、「記憶部」は、１以上のメモリを含む。少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
【００１７】
また、以降の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１８】
また、以降の説明では、「ｋｋｋ部」の表現にて処理部（機能）を説明することがあるが、処理部は、１以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、１以上のハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）またはＡＳＩＣ（Application Specific Integrated Circuit））によって実現されてもよい。プログラムがプロセッサ部によって処理部が実現される場合、定められた処理が、適宜に記憶部および／またはインターフェース部（例えば通信ポート）等を用いながら行われるため、処理部はプロセッサ部の少なくとも一部とされてもよい。処理部を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからプロセッサにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各処理部の説明は一例であり、複数の処理部が１つの処理部にまとめられたり、１つの処理部が複数の処理部に分割されたりしてもよい。
【００１９】
また、以降の説明では、「計算機システム」は、１以上の物理的な計算機を含む。少なくとも１つの物理的な計算機が、仮想的な計算機（例えばＶＭ（Virtual Machine））を実行してもよいし、ＳＤｘ（Software-Defined anything）を実行してもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）（仮想的なストレージ装置の一例）またはＳＤＤＣ（Software-defined Datacenter）を採用することができる。
【００２０】
また、以降の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合は、参照符号を使用する。
【００２１】
また、本明細書において、ネットワークの遅延は、適宜「遅延」と省略されることがある。遅延は、典型的には、ネットワーク遅延時間（単位は典型的には「ミリ秒」）を意味する。
【実施例１】
【００２２】
まず、一比較例に係る課題、および、当該課題を解決する実施例１の概要を説明する。
【００２３】
一比較例に係る課題は、以降の通りである。
【００２４】
ファイルを順次リストアするよりも並列リストアする方が、高速にリストアが可能である。具体的には、例えば、１本の通信路のネットワーク帯域が１ＭＢ／ｓであり、リストア対象のファイルのサイズが４ＭＢであるとする。この場合、順次リストアにおける通信は、４秒（＝４ＭＢ／（１ＭＢ／ｓ））かかる。一方、ファイルを１ＭＢのチャンクに分割して４並列でリストアする並列リストアにおける通信は、１秒で済む。４個の１ＭＢチャンクが、それぞれが１ＭＢ／ｓのネットワーク帯域である４本の通信路を通して並列に取得されるからである。
【００２５】
しかしながら、固定サイズのチャンクにファイルを分割してチャンクを並列に取得する並列リストアが最適であるとは限らない。なぜなら、ネットワークの遅延によって、ネットワーク特性、例えば、リストアセッションあたりの最大スループット、および、最大スループットに達するまでの時間が、異なるからである。
【００２６】
特に、この課題は、単位時間当たりのデータ送受信サイズを徐々に大きくするスロースタートを含んだフロー制御が実施されるプロトコルに従う通信が行われるネットワーク、典型的には、ＴＣＰ（Transmission Control Protocol）に従う通信が行われるネットワークを通してチャンクを取得するケースでは大きい。
【００２７】
図１３は、ＴＣＰのフロー制御の一例を示す模式図である。
【００２８】
ファイル転送は、例えば、ＨＴＴＰ（Hyper Text Transfer Protocol）またはＦＴＰ（File Transfer Protocol）に従い行われるが、ＨＴＴＰおよびＦＴＰのいずれも、ＴＣＰ上のプロトコルである。ＴＣＰでは、輻輳を回避するために、単位時間当たりのデータ送受信サイズを徐々に大きくするスロースタートを含んだフロー制御が実施される。
【００２９】
しかし、フロー制御におけるスロースタート速度（データ送受信サイズの増加量）は、図１３に例示するように、遅延によって異なる（参照符号１３０１を参照）。また、最大帯域も、遅延によって異なる（参照符号１３０２を参照）。
【００３０】
図１４は、一比較例に係る課題の一例を示す模式図である。
【００３１】
遅延に関わらない固定チャンクサイズのチャンクにファイルを分割して並列にチャンクをクラウドサーバ１４０５から取得すると、最適なリストア速度を必ずしも実現できない。具体的には、例えば、図１４の左部分に例示するように、ファイルのチャンクのサイズが、遅延の割に小さすぎると、各チャンクについて、チャンクの取得が、スロースタート中に終了してしまう（スループットが最大帯域に達する前にチャンクの取得が終了してしまう）（参照符号１４０１を参照）。さらに、チャンクのサイズを小さくしすぎると、チャンク数がシステムのサポートする最大リストアセッション数を超えてしまう。この場合、全てのチャンクを並列にリストア処理できなくなってしまうため、合計帯域（１本の通信路の最大帯域と並列度との積）がワイヤスピード限界１３５０に達しない（参照符号１４０２を参照）ことがある。一方、例えば、図１４の右部分に例示するように、遅延の割にチャンクのサイズが大きすぎても（極端には、例えばファイルを分割しないとすると）、同様に合計帯域がワイヤスピード限界１３５０に達しないことがある。
【００３２】
以上が、一比較例に係る課題である。その課題を解決する実施例１の概要は、以降の通りである。
【００３３】
図１５は、実施例１の概要の一例を示す模式図である。
【００３４】
本実施例では、ファイルサーバ（リストア）１０３Ｂ（第２の計算機システムの一例）が、データ送受信管理テーブル２１３と、ファイルシステムボリューム２０３とを保持する。ファイルサーバ（リストア）１０３Ｂは、遅延計測プログラム（遅延計測手段の一例）２１２、データ送受信プログラム（取得手段の一例）２１０およびリストアプログラム（リストア手段の一例）２０９を実行する。
【００３５】
データ送受信管理テーブル２１３は、複数の遅延の各々について、チャンクサイズおよび並列度を保持する。遅延計測プログラム２１２は、ファイルサーバ（リストア）１０３Ｂとクラウドサーバ（ネットワークストレージの一例）１０５間のネットワーク遅延を計測する。データ送受信プログラム２１０は、計測されたネットワーク遅延に応じたチャンクサイズおよび並列度をデータ送受信管理テーブル２１３から特定し、リストア対象ファイルの少なくとも一部であるチャンクを、ネットワークを通して、クラウドサーバ１０５から取得する。リストアプログラム２０９は、当該リストア対象ファイルについて取得されたチャンクを基にリストア対象ファイルをファイルシステムボリューム２０３にリストアする。
【００３６】
図１６は、実施例１の効果の一例を示す模式図である。
【００３７】
ファイルのチャンクのサイズが、遅延に対応した適切なサイズである。このため、各チャンク（チャンク１〜３の各々）について、チャンクの取得が、スロースタート中に終了してしまう（スループットが最大帯域に達する前にチャンクの取得が終了してしまう）ことが無い（参照符号１６０１を参照）。また、合計帯域が、ワイヤスピード限界１６５０に達し、結果として、リストア時間が短くなる（参照符号１４０２を参照）。
【００３８】
以上が、実施例１の概要である。以降、実施例１を詳細に説明する。なお、図１３、図１４および図１６に例示したグラフは、簡易化した模試的なグラフ（例えば、輻輳制御に従うスループット変化を考慮しないグラフ）である。また、本実施例において、「リストア速度」は、１つのリストア（リストア対象とされた１以上のファイルのリストア）の速度である。「リストア時間」は、１つのリストアにかかる時間である。
【００３９】
図１は、実施例１に係るバックアップリストアシステムの構成例を示すブロック図である。
【００４０】
バックアップリストアシステム１００は、１以上のファイルサーバ１０３を含む。１以上のファイルサーバ１０３の各々は、管理サーバ１０４および１以上のクラウドサーバ１０５と、ネットワーク１０２を通して相互に通信可能に接続されている。ネットワーク１０２は、典型的にＴＣＰに従う通信が行われるネットワークであり、例えば、LAN（Local Area Network）やInternetである。なお、本発明では、ネットワーク１０２の構成形態は限定されない。
【００４１】
ネットワーク１０２に１以上のクライアント１０１が通信可能に接続される。１つのクライアント１０１を例に取る。クライアント１０１は、ファイルサーバ（運用）１０３Ａまたはファイルサーバ（リストア）１０３Bを利用する計算機である。クライアント１０１を使用するエンドユーザは、クライアント１０１のファイルアクセスプログラム１１０を用いて、ファイルサーバ１０３Ａや１０３Ｂへ接続し、ファイルサーバ１０３Ａまたは１０３Ｂへ格納されたファイルを読み書きする。
【００４２】
ファイルサーバ（運用）１０３Ａは、第１の計算機システムの一例である。ファイルサーバ（運用）１０３Ａは、災害発生前に、クライアント１０１へファイルアクセスサービスを提供するサーバ装置である。一方、ファイルサーバ（リストア）１０３Ｂは、第２の計算機システムの一例である。ファイルサーバ（リストア）１０３Ｂは、災害発生後に、クライアント１０１へファイルアクセスサービスを提供するサーバ装置である。ファイルアクセスサービスとは、例えば、NFS（Network File System）やCIFS（Common Internet File System）といったプロトコルを用いて、ファイルの読み書きを可能としたネットワークサービスを指す。なお、本発明は、ファイルサーバ（運用）１０３Ａおよびファイルサーバ（リストア）１０３Ｂの各々のファイルアクセスサービスの形態を限定するものではない。また、ファイルサーバ（リストア）１０３Ｂは、ファイルサーバ（運用）１０３Ａの交換後のファイルサーバでもよい。ファイルサーバ１０３の構造と処理動作は、後に詳述する。
【００４３】
管理サーバ１０４は、バックアップリストアシステム１００の設定等を行う計算機である。バックアップリストアシステム１００の管理者は、管理サーバ１０４を用いて、バックアップリストアシステムを設定する。例えば、管理者は、ファイルサーバ１０３のＩＰアドレスの設定等を行う。なお、管理サーバ１０４の機能は、クライアント１０１やファイルサーバ１０３へ導入されても良い。本発明では、管理サーバ１０４の機能の導入箇所や、管理サーバ１０４の設置場所は、限定されない。
【００４４】
１以上のクラウドサーバ１０５として、クラウドサーバ１０５Ａと１０５Ｂが例示されている。クラウドサーバ１０５Ａと１０５Ｂは、ファイルサーバ（運用）１０３Ａに格納されたファイルのバックアップを保持する計算機である。ファイルサーバ（運用）１０３Ａが、クラウドサーバ１０５Ａと１０５Ｂにファイルを定期的に送信し、クラウドサーバ１０５Ａと１０５Ｂは内部ディスクへファイルを格納する。クラウドサーバ１０５の構造と処理動作は、後に詳述する。
【００４５】
災害によって、ファイルサーバ（運用）１０３Ａが物理的に壊れ、格納していたファイルが失われた場合、ファイルサーバ（リストア）１０３Ｂが、ファイルアクセスサービスを提供する。そのため、ファイルサーバ（リストア）１０３Ｂは、ネットワーク１０２を通して、クラウドサーバ１０５Ａと１０５Ｂへ保存されたファイルを取得し、内部ディスクへ格納（リストア）する。クラウドサーバ１０５から必要なファイルを取得できれば、ファイルサーバ（リストア）１０３Ｂは、ファイルサーバ（運用）１０３Ａと同じようにファイルアクセスサービスを再開する。このように、バックアップリストアシステムにより、災害後にも、ファイルアクセスサービスを継続できる。
【００４６】
図２は、ファイルサーバ１０３の内部構成を示すブロック図である。
【００４７】
ファイルサーバ１０３は、ネットワークＩ／Ｆ２０１、ＣＰＵ２０２、ファイルシステムボリューム２０３、メモリ２０５を搭載し、それらは内部通信路２０４によって接続されている。
【００４８】
ネットワークＩ／Ｆ２０１は、インターフェース部の一例である。ネットワークＩ／Ｆ２０１は、ネットワーク１０２と相互に接続されており、クライアント１０１からのファイルアクセス要求を受け付ける際に用いられる装置である。
【００４９】
ＣＰＵ２０２は、プロセッサ部の一例である。ＣＰＵ２０２は、メモリ２０５に格納されたプログラムを実行する装置である。
【００５０】
ファイルシステムボリューム２０３は、プログラムファイルやエンドユーザが作成したデータファイルといった情報を格納するための装置である。ファイルシステムボリューム２０３に代えて、外部のストレージ装置（図示せず）が採用されてもよい。例えば、ファイルサーバ（リストア）１０３Ｂによるリストア先は、ファイルサーバ（リストア）１０３Ｂ内のファイルシステムボリューム２０３に代えてまたは加えて、ファイルサーバ（リストア）１０３Ｂに接続されている外部のストレージ装置でもよい。
【００５１】
メモリ２０５は、記憶部の一例である。メモリ２０５は、ファイルシステムボリューム２０３に格納されたファイルを、ＣＰＵ２０２が処理する際に一時的に保持するメモリ（例えば揮発性メモリ）である。ＣＰＵ２０２がプログラムを実行する際、ＣＰＵ２０２が、ファイルシステムボリューム２０３からメモリ２０５へプログラムファイルやデータファイルを読み込む。以降、特に明示しない限り、プログラムはＣＰＵ２０２によって実行されるものとする。また、プログラムは、ファイルシステムボリューム２０３からメモリ２０５へ読み込まれ、実行されるものとする。
【００５２】
メモリ２０５は、ファイル共有サーバプログラム２０６、ファイルシステムプログラム２０７、作成プログラム２０８、リストアプログラム２０９、送受信プログラム２１０、管理プログラム２１１および遅延計測プログラム２１２といったプログラムを格納する。また、メモリ２０５は、データ送受信管理テーブル２１３、クラウドサーバ管理テーブル２１４および格納データ管理テーブル２１５といった情報を格納する。
【００５３】
ファイル共有サーバプログラム２０６は、クライアント１０１のファイルアクセスプログラム１１０からのファイルアクセス要求を処理するプログラムである。ファイルアクセス要求として、ファイル書込み要求とファイル読出し要求とがある。ファイル書込み要求に付随して受信したファイルデータは、ファイルシステムボリューム２０３へデータファイル（ファイル）として格納される。ファイルシステムボリューム２０３に格納されているファイルのうち、未だバックアップされていないファイルは、クラウドサーバ１０５へバックアップされる。
【００５４】
ファイルシステムプログラム２０７は、ファイルシステムボリューム２０３へ格納されたファイルのデータを管理するプログラムである。ファイル共有サーバプログラム２０６が、ファイルアクセスプログラム１１０からファイルアクセス要求を受け付けると、ファイルシステムプログラム２０７へその要求を受け渡す。そして、ファイルシステムプログラム２０７は、ファイルシステムボリューム２０３へアクセスする。例えば、ファイルアクセスプログラム１１０が、ファイル共有サーバプログラム２０６へファイル書込み要求とファイルデータを送信する。ファイル共有サーバプログラム２０６は、ファイル書込み要求を受理し、ファイルデータを受信する。ファイル共有サーバプログラム２０６は、ファイルシステムプログラム２０７へファイル書込み要求とファイルデータを渡す。ファイルシステムプログラム２０７は、ファイルシステムボリューム２０３へそのファイルデータを書き込む。
【００５５】
作成プログラム２０８は、ファイルシステムボリューム２０３へ格納されたファイルをクラウドサーバ１０５へ格納する形式に変えるプログラムである。例えば、ファイルの単純複製を行う場合、作成プログラム２０８は、ファイルの形式を変更しない。一方、ファイルの分割複製を行う場合、作成プログラム２０８は、ファイルを一定の大きさの断片へ分割する。作成プログラム２０８の作成したデータは、後述するデータ送受信プログラム２１０によって、クラウドサーバ１０５へ送信（バックアップ）される。
【００５６】
リストアプログラム２０９は、後述するデータ送受信プログラム２１０を用いてクラウドサーバ１０５から取得したデータ（チャンク）を、元のファイルへリストアする（例えば、複数のチャンクを統合して元のファイルを作成する）プログラムである。
【００５７】
データ送受信プログラム２１０は、クラウドサーバ１０５とネットワーク１０２を通して、データを送受信するプログラムである。データ送受信プログラム２１０によって、ファイルやその断片がクラウドサーバ１０５に格納される。また、データ送受信プログラム２１０によって、クラウドサーバ１０５からファイルのチャンクが取得される。データ送受信プログラム２１０とクラウドサーバ１０５の通信には、本実施例では、ＨＴＴＰ（Hypertext Transfer Protocol）が用いられる。なお、本発明では、データ送受信プログラム２１０とクラウドサーバ１０５の間の通信プロトコルは限定されない。
【００５８】
管理プログラム２１１は、ファイルを送受信するクラウドサーバ１０５へアクセスするためのアドレスなどを設定するプログラムである。管理プログラム２１１は、管理者によって起動される。管理者は、管理サーバ１０４から、ファイルサーバ１０３へSSH（Secure Shell）プロトコルなどを用いて接続する。なお、管理サーバ１０４とファイルサーバ１０３の間の接続プロトコルはSSHプロトコルでなくても良い。本発明では、接続プロトコルは限定されない。さらに、ファイルサーバ１０３にキーボードやディスプレイといったコンソール機器が接続されている場合は、管理者は、ファイルサーバ１０３に直接ログインして設定してよい。
【００５９】
データ送受信管理テーブル２１３は、管理プログラム２１１によって設定される、ネットワーク遅延によるデータの送受信方法を定めたテーブルである。データ送受信管理テーブル２１３は後に詳述する。
【００６０】
クラウドサーバ管理テーブル２１４は、管理プログラム２１１によって設定される、クラウドサーバ１０５のアクセスアドレスを保持するテーブルである。クラウドサーバ管理テーブル２１４は、後に詳述する。
【００６１】
格納データ管理テーブル２１５は、ファイル毎にバックアップファイルを格納した格納先クラウドサーバ１０５を管理するテーブルである。格納データ管理テーブル２１５は、後に詳述する。
【００６２】
図３は、クラウドサーバ１０５の内部構成を示すブロック図である。
【００６３】
クラウドサーバ１０５は、ネットワークＩ／Ｆ３０１、ＣＰＵ３０２、メモリ３０３、ファイルシステムボリューム３１０から構成され、それらは内部通信路３０７によって相互に接続されている。
【００６４】
ネットワークＩ／Ｆ３０１は、ネットワーク１０２と接続される装置である。ＣＰＵ３０２は、メモリ３０３に格納されたプログラムを実行する装置である。ファイルシステムボリューム３１０は、プログラムファイルやバックアップデータ３０９を格納する装置である。
【００６５】
ファイルシステムプログラム３０４は、ファイルシステムボリューム３１０に格納されたバックアップデータ３０９をファイルとして管理するプログラムである。
【００６６】
データ送受信プログラム３０５は、ファイルサーバ１０３から送られてくるファイルデータを受信するプログラムである。さらに、データ送受信プログラム３０５は、ファイルサーバ１０３から、バックアップデータ３０９の取得要求を受理して、バックアップデータ３０９を送信する。バックアップデータ３０９は、リストア対象データの一例であり、典型的にはファイルである。
【００６７】
データ送受信プログラム３０５が、ファイルシステムボリューム３１０のバックアップデータ３０９を読み出す場合、ファイルシステムプログラム３０４へファイル読出し要求を送信する。ファイルシステムプログラム３０４はファイルシステムボリューム３１０からバックアップデータ３０９を読み出して、データ送受信プログラムへ返却する。一方、データ送受信プログラム３０５が、ファイルサーバ１０３からファイルデータを受信すると、ファイルシステムプログラム３０４へファイル書込み要求とファイルデータを送信する。ファイルシステムプログラム３０４は、バックアップデータ３０９としてファイルをファイルシステムボリューム３１０に書き込む。
【００６８】
図４は、クラウドサーバ管理テーブル２１４の構成例を示す図である。
【００６９】
クラウドサーバ管理テーブル２１４は、サイトＩＤ４０１、サイト名４０２、ＵＲＬ４０３から構成される。サイトＩＤ４０１、サイト名４０２、ＵＲＬ４０３は１つのレコード４０４として組で設定される。レコード４０４は、クラウドサーバ１０５毎に存在する。
【００７０】
サイトＩＤ４０１は、クラウドサーバ１０５のＩＤ（例えば通番）である。サイト名４０２は、クラウドサーバ１０５の名称である。ＵＲＬ４０３は、ファイルサーバ１０３がクラウドサーバ１０５へアクセスするために用いるルートパス（ＵＲＬ（Uniform Resource Locator））である。ファイルサーバ１０５は、ファイルをバックアップする場合や、バックアップされたファイルへアクセスする場合に、ＵＲＬ４０３に基づいてアクセスパスを生成する。クラウドサーバ管理テーブル２１４の利用方法については、後に詳述する。
【００７１】
図５は、データ送受信管理テーブル２１３の構成例を示す図である。
【００７２】
データ送受信管理テーブル２１３は、遅延５０１、チャンクサイズ５０２、並列度５０３から構成される。遅延５０１、チャンクサイズ５０２、並列度５０３はレコード５０４として組で設定される。レコード５０４は、遅延毎に存在する。
【００７３】
遅延５０１は、ネットワーク１０２の遅延を表す値である。また、遅延５０１は、代表値である。例えば、遅延５０１が１０ミリ秒（ｍｓｅｃ）と設定されている場合、１０ミリ秒以下と解釈される。ある時刻における遅延が５ミリ秒である場合、１０ミリ秒の遅延のレコード５０４Ａが選択される。なお、本発明では、遅延５０１の解釈は限定されない。
【００７４】
チャンクサイズ５０２は、ファイルサーバ１０３Ｂがクラウドサーバ１０５に格納されたファイルを取得するときのサイズである。例えば、ファイルサーバ（リストア）１０３Ｂが、クラウドサーバ１０５から１ＭＢのファイルを取得する場合、チャンクサイズ５０２に示される０．２５ＭＢの４つのデータのかたまりとして、クラウドサーバ１０５から取得する。並列度５０３は、ファイルサーバ（リストア）１０３Ｂがクラウドサーバ１０５に格納されたファイルを取得する場合の並列取得数を示す。例えば、ある時刻において、ファイルサーバ（リストア）１０３Ｂが１ＭＢのファイルを取得する際、遅延５０１が２０ミリ秒であった場合、ファイルサーバ（リストア）１０３Ｂは、０．５ＭＢの２つのデータのかたまりとし、２つのリストアセッションを用いて２並列でデータを取得する。データ送受信管理テーブル２１３の利用方法については、後に詳述する。
【００７５】
図５の例によれば、遅延が、相対的に小さければ、チャンクサイズは小さい、および、並列数は大きい、のうちの少なくともいずれかである。例えば、遅延５０１“１０ｍｓｅｃ”に対応したチャンクサイズ５０２の値は、“１０ｍｓｅｃ”より大きい値の遅延５０１に対応したチャンクサイズ５０２の値より小さい。また、例えば、遅延５０１“１０ｍｓｅｃ”に対応した並列度５０３の値は、“１０ｍｓｅｃ”より大きい値の遅延５０１に対応した並列度５０３の値より大きい。
【００７６】
また、図５の例によれば、遅延が、相対的に大きければ、チャンクサイズは大きい、および、並列数は小さい、のうちの少なくともいずれかである。例えば、遅延５０１“３０ｍｓｅｃ”に対応したチャンクサイズ５０２の値は、“３０ｍｓｅｃ”より小さい値の遅延５０１に対応したチャンクサイズ５０２の値より大きい。また、例えば、遅延５０１“３０ｍｓｅｃ”に対応した並列度５０３の値は、“３０ｍｓｅｃ”より大きい値の遅延５０１に対応した並列度５０３の値より小さい。
【００７７】
また、本実施例では、予め用意されたデータ送受信管理テーブル２１３が使用されるが、テーブル２１３の使用に代えてまたは加えて、遅延に応じたチャンクサイズおよび並列度のうちの少なくとも１つは、計算により決定されてもよい。また、システムのサポートする最大リストアセッション数、最大バックアップセッション数があらかじめ分かっている場合には、その値を参考にチャンクサイズ５０２、並列度５０３を決定してもよい。たとえば、並列度５０３は最大リストアセッション数を超えない値とし、チャンクサイズ５０２はファイルサイズを並列度５０３で除した値とする。
【００７８】
図６は、格納データ管理テーブル２１５の構成例を示す図である。
【００７９】
格納データ管理テーブル２１５は、ファイルパス６０１、サイズ６０２、格納先クラウドサーバＩＤ６０３から構成される。ファイルパス６０１、サイズ６０２、格納先クラウドサーバＩＤ６０３は、レコード６０４として組で管理される。レコード６０４は、バックアップされたファイル毎に存在する。
【００８０】
ファイルパス６０１は、ファイルサーバ１０３のファイルシステムボリューム２０３に格納されているファイルのパスを示す。例えば、あるファイルが/aaa/bbb.dbというパスでファイルシステムボリューム２０３へ格納されている場合、ファイルパス６０１にそのように記述される。格納データ管理テーブル２１５の利用方法については、後に詳述する。
【００８１】
図７は、ファイルサーバ（リストア）１０３Ｂが、あるファイルをクラウドサーバ１０５Ａと１０５Ｂから並列にリストアする場合の、データリストア概要を示す図である。
【００８２】
クラウドサーバ１０５Ａと１０５Ｂには、ファイルサーバ（運用）１０３Ａから１ＭＢのファイルが単純複製によって、バックアップデータ３０６として格納されている。つまり、クラウドサーバ１０５Ａと１０５Ｂには、同じバックアップデータ３０６が格納されている。ファイルサーバ（リストア）１０３Ｂが、２０ミリ秒遅延のネットワーク１０２を通してクラウドサーバ１０５Ａと１０５Ｂからバックアップデータ３０６を取得する。この時、データ送受信管理テーブル２１３のレコード５０４Ｂ（遅延５０１“２０ｍｓｅｃ”）のチャンクサイズ５０２に基づき、ファイルサーバ（リストア）１０３Ｂは、０．５ＭＢのチャンクにして、ファイル（バックアップデータ３０６）を取得する。さらに、ファイルサーバ（リストア）１０３Ｂは、データ送受信管理テーブル２１３のレコード５０４Ｂの並列度５０３に基づき、２並列でデータ（チャンク）を取得する。この例では、ファイルサーバ（リストア）１０３Ｂは、クラウドサーバ１０５Ａと１０５Ｂから並列にデータ（チャンク）を取得している。なお、チャンクサイズと並列度の積が、クラウドサーバ１０５Ａが単位時間当たりに送信可能なデータ量以下であれば、ファイルサーバ（リストア）１０３Ｂは、クラウドサーバ１０５Ａから当該チャンクサイズのチャンクを当該並列度で取得してもよい。本発明では、取得先のクラウドサーバ１０５の選択方法は限定されない。このように、ファイルサーバ（リストア）１０３Ｂは、ネットワーク１０２の遅延に基づいて、バックアップデータ３０６を取得する場合のチャンクサイズ及び並列度のうちの少なくとも１つを決定し、決定したチャンクサイズ及び並列度のうちの少なくとも１つに従いチャンクを取得する。
【００８３】
図８は、ファイルサーバ（運用）１０３Ａが実行するファイルのバックアップ処理のフローを示す。
【００８４】
バックアップ処理は、データ送受信プログラム２１０と作成プログラム２０８が連携して実行する。ファイルサーバ（運用）１０３Ａの管理者が、管理プログラム２１１に対し、ファイルシステムボリューム２０３に格納されているファイルのバックアップ処理を指示する。その指示は、管理プログラム２１１からデータ送受信プログラム２１０に送られる。
【００８５】
データ送受信プログラム２１０は、その指示を受け、ファイルシステムボリューム２０３に格納されているファイルのうちバックアップされていないファイルを１つ選択する（ステップ８０１）。
【００８６】
次に、データ送受信プログラム２１０は、クラウドサーバ管理テーブル２１４から、ステップ８０１で選択したファイル（図８の説明において「選択ファイル」）の送信先（バックアップ先）とするクラウドサーバ１０５を選択する（ステップ８０２）。この時、データ送受信プログラム２１０は、複数のクラウドサーバ１０５へ送信する場合は、２つ以上のクラウドサーバ１０５を選択する。
【００８７】
次に、データ送受信プログラム２１０は、作成プログラム２０８を呼び出し、複製データの作成を要求する。作成プログラム２０８は、単純複製の場合は、選択ファイルに変更を加えない。一方、分割複製の場合は、作成プログラム１０８は、選択ファイル（ファイルデータ）を１ＭＢなどの大きさに分割する。そして、データ送受信プログラム２１０は、作成プログラム２０８が作成したバックアップ用のデータを、ステップ８０２で選択したクラウドサーバ１０５へ送信する（ステップ８０３）。
【００８８】
次に、データ送受信プログラム２１０は、クラウドサーバ１０５へ送信してバックアップが完了した選択ファイルに関する情報を、新規レコード４０４として格納データ管理テーブル２１５へ追加する（ステップ８０４）。
【００８９】
そして、データ送受信プログラム２１０は、バックアップされていないファイルがあるか否かを判断する（ステップ８０５）。ステップ８０５の判断結果が真の場合（ステップ８０５：Ｙｅｓ）、データ送受信プログラム２１０は、ステップ８０１から処理を続ける。一方、ステップ８０５の判断結果が偽の場合（ステップ８０５：Ｎｏ）、バックアップ処理フローが終了する。
【００９０】
以上により、ファイルサーバ（運用）１０３Ａに格納されているファイルがクラウドサーバ１０５へバックアップされる。このバックアップ処理は、災害が発生する前に、定期的または不定期的（例えば、ファイルサーバ（運用）１０３Ａに未バックアップのファイルが格納される都度）に実行される。つまり、災害発生後には、バックアップ処理が実行された時点のファイルサーバ（運用）１０３Ａのファイルシステムボリューム２０３をリストアできる。
【００９１】
図９は、ファイルサーバ（リストア）１０３Ｂが実行するファイルのリストア処理のフローを示す。
【００９２】
リストア処理は、データ送受信プログラム２１０とリストアプログラム２０９が連携して実行する。
【００９３】
ファイルサーバ（リストア）１０３Ｂの管理者が、管理プログラム２１１に対し、クラウドサーバ１０５に格納されたバックアップデータ３０６のリストア処理を指示する。その指示が、管理プログラム２１１からデータ送受信プログラム２１０に送られる。
【００９４】
データ送受信プログラム２１０は、その指示を受けて、格納データ管理テーブル２１５を検索し、ファイルシステムボリューム２０３にリストアされていないファイルを１つ選択する（ステップ９０１）。
【００９５】
次に、データ送受信プログラム２１０は、［残量］（ネットワーク１０２の遅延時間）と、［残量］（ステップ９０１で選択したファイル（図９において「選択ファイル」）のうちリストアされていないデータの量）とを設定する（ステップ９０２）。なお、選択ファイルのリストア開始時は、遅延が不明であるため、データ送受信プログラム２１０は、［遅延］に、初期値（例えば、３０ミリ秒）を設定する。それに代えて、データ送受信プログラム２１０は、ダミーデータのようなデータをネットワーク１０２を通して通信し、その通信に関して遅延計測プログラムによって計測された遅延時間を、［遅延］に設定してもよい。また、データ送受信プログラム２１０は、［残量］に、選択ファイルに対応したサイズ６０２の値を設定する。
【００９６】
次に、データ送受信プログラム２１０は、遅延（［遅延］に設定されている値）に基づき、データ送受信管理テーブル２１３を検索する（ステップ９０３）。例えば、［遅延］が３０ミリ秒のときは、データ送受信プログラム２１０は、遅延５０１“３０ｍｓｅｃ”を含んだレコード５０４Ｃを選択する。なお、遅延に対応したチャンクサイズ５０２が示すサイズのチャンクの数が、遅延に対応した並列度５０３が示す並列度（値）未満の場合、データ送受信プログラム２１０は、ステップ９０１で最近選択したファイルに代えてまたは加えて、ファイル合計サイズが、遅延に対応したチャンクサイズ５０２が示すサイズのチャンクの数が、遅延に対応した並列度５０３が示す並列度（値）以上となるような、１以上のファイルを選択してもよい。
【００９７】
そして、データ送受信プログラム２１０は、レコード５０４Ｃにおけるチャンクサイズ５０２が示すサイズのチャンクの取得要求を、レコード５０４Ｃにおける並列度５０３が示す並列度分、１以上のクラウドサーバ１０５へ並列に送信し、その並列度分の取得要求に応答して１以上のクラウドサーバ１０５からチャンクを取得（受信）する（ステップ９０４）。なお、ステップ９０２からステップ９０６の繰り返し処理において、遅延が前回のチャンク取得時と変化しなかった場合、ステップ９０４では、続きのチャンクを取得する動作となる。繰り返し動作時の詳細は、図１０を用いて後に詳述する。
【００９８】
ステップ９０４でクラウドサーバ１０５からチャンクを取得する際に、遅延計測プログラム２１２が、ファイルサーバ（リストア）１０３Ｂとクラウドサーバ１０５間の通信の遅延を計測しておく（ステップ９０５）。
【００９９】
続いて、データ送受信プログラム２１０は、［残量］が０より大きいか否かを判断する（ステップ９０６）。例えば、８ＭＢのファイルをリストアする場合において、データ送受信プログラム２１０が、データ送受信管理テーブル２１３のレコード５０４Ｃに従い、１ＭＢのチャンクを４並列で取得した場合、合計４ＭＢのデータが取得されたため、未だ、４ＭＢの残量がある。つまり、［残量］＝４ＭＢである。従って、この場合は、ステップ９０６の判断結果は真であり（ステップ９０６：Ｙｅｓ）、データ送受信プログラム２１０は、ステップ９０２から処理を続ける。一方、「残量」＝０ＭＢの場合は、ステップ９０６の判断結果は偽となり（ステップ９０６：Ｎｏ）、ステップ９０７へ進む。
【０１００】
そして、データ送受信プログラム２１０は、格納データ管理テーブル２１５を検索し、リストア対象のファイルがあれば（ステップ９０７：Ｙｅｓ）、ステップ９０１から処理を継続する。一方、リストア対象のファイルがなければ（ステップ９０７：Ｎｏ）、リストア処理を終了する。
【０１０１】
図１０は、１ファイルのチャンク取得の繰り返し（図９のステップ９０２からステップ９０６の繰り返し）を示す図である。８ＭＢのファイルをリストアする場合を想定し、チャンク取得の流れを、図１０を用いて説明する。なお、図１０の説明において、「ループ」とは、ステップ９０２からステップ９０６にかけた処理を言う。なお、「ループ」は、リストア回数の一例である。また、図１０において、白塗りのチャンクは、未処理データの少なくとも一部としてのチャンクであり、グレーのチャンクは、処理済み（取得済み）のチャンクである。
【０１０２】
まず、データ送受信プログラム２１０は、ループ１回目の遅延（遅延時間）は不明のため、［遅延］の初期値として“３０ミリ秒”を設定する。また、データ送受信プログラム２１０は、［残量］に“８ＭＢ”を設定する。そして、データ送受信管理テーブル２１３の遅延５０１が３０ミリ秒であるレコード５０４Ｃを選択する。レコード５０４Ｃのチャンクサイズ５０２は“１ＭＢ”であり、並列度５０３は“４”である。そこで、データ送受信プログラム２１０は、リストア対象のファイルを１ＭＢのチャンクとし、先頭４チャンクを並列に取得する。つまり、ループ１回目のチャンク取得は、チャンク１からチャンク４を並列に取得することである。結果として、４ＭＢ分のファイルデータの取得が完了する。このため、残量は４ＭＢ（＝８ＭＢ−４ＭＢ）となり、故に、データ送受信プログラム２１０は、［残量］を“４ＭＢ”に更新する。
【０１０３】
次のループ２回目では、ループ１回目にチャンク１からチャンク４まで取得した時の遅延（計測された遅延時間）が２０ミリ秒であったとする。このため、ループ２回目までに、データ送受信プログラム２１０は、［遅延］を“２０ミリ秒”に更新する。ループ２回目では、データ送受信プログラム２１０は、データ送受信管理テーブル２１３の遅延５０１が“２０ミリ秒”であるレコード５０４Ｂを選択する。レコード５０４Ｂのチャンクサイズ５０２は“０．５ＭＢ”であり、並列度５０３は“２”である。そこで、データ送受信プログラム２１０は、４ＭＢの残データを０．５ＭＢのチャンクが８チャンクあるとする。そして、並列度“２”であるので、データ送受信プログラム２１０は、２つのチャンクＡとチャンクＢを並列に取得する。この時点で、ループ１回目の４ＭＢとループ２回目の１ＭＢが取得された状態となり、残量は３ＭＢとなる。故に、データ送受信プログラム２１０は、［残量］を“３ＭＢ”に更新する。
【０１０４】
ループ３回目では、ループ２回目にチャンクＡとチャンクＢを取得した時の遅延（計測された遅延時間）が２０ミリ秒であったとする。このため、［遅延］は“２０ミリ秒”のままとされる。つまり、データ送受信プログラム２１０は、遅延時間が変化しなかったと判断する。従って、ループ３回目では、データ送受信プログラム２１０は、遅延“２０ミリ秒”に対応したチャンクサイズ“０．５ＭＢ”、並列度“２”を維持し、続きのチャンクＣとチャンクＤを取得する。この時点で、更に１ＭＢが取得された状態となり、残量は２ＭＢとなる。故に、データ送受信プログラム２１０は、［残量］を“２ＭＢ”に更新する。
【０１０５】
ループ４回目とループ５回目も、遅延が“２０ミリ秒”で変化していないため、データ送受信プログラム２１０は、遅延“２０ミリ秒”に対応したチャンクサイズ“０．５ＭＢ”、並列度“２”でリストアを続ける。ループ５回目で、チャンクＧとチャンクＨを取得できれば、残量が０ＭＢになるので、このファイルのリストアが完了する。
【０１０６】
このように、遅延に対応する最適なリストア速度を達成できるように、ループ毎に、データ送受信プログラム２１０は、チャンクサイズと並列数を最近の遅延にあわせて変更する。このため、最適なリストア速度の維持が期待できる。
【０１０７】
以上の実施例によれば、ネットワーク１０２の遅延に基づいて、チャンクサイズ（ファイルの取得サイズ）と取得の並列度が動的に変更される。それにより、ネットワーク１０２の最大帯域を使ってチャンクを取得することが期待できる。その結果、リストア速度の向上、言い換えれば、リストア時間の短縮を、期待できる。リストア時間を短縮することにより、災害後のファイル共有サービスを早期に再開できる。
【０１０８】
なお、本実施例では、ファイルサーバ（運用）１０３Ａ内のデータ送受信プログラム２１０は、ファイルサーバ（運用）１０３内の各ファイルを、最大並列度分のクラウドサーバ１０５の各々にバックアップしてよい。ファイルサーバ（リストア）１０３Ｂ内のデータ送受信プログラム２１０は、最大並列度分のクラウドサーバ１０５のうち、並列度分のクラウドストレージ１０５からそれぞれその並列度分のチャンクを並列に取得してよい。リストア元が複数のクラウドサーバ１０５に分散されるので、より確実に高速リストアを実現できることが期待できる。
【実施例２】
【０１０９】
図１１を用いて、実施例２を説明する。本実施例は、実施例１の変形例に相当するため、実施例１との相違を中心に説明する。
【０１１０】
図１１は、実施例２に係るリストア処理の一例を示す模式図である。
【０１１１】
本実施例に係るリストア方法は、サイズの小さいファイルをリストアする場合のリストア方法である。サイズの小さいファイルをリストアする場合、データ送受信管理テーブル２１３のチャンクサイズ５０２でファイルを分けると、並列度５０３より小さくなる場合がある。一方、並列度５０３でファイルを分けると、チャンクサイズ５０２より小さくなることもある。この場合、適切なチャンクサイズや並列数を満たすことができない。そこで、本実施例では、チャンクサイズ５０２が守られ、並列度は、１つのリストア処理（メインの処理）におけるリストア対象のファイルが複数とされることで満たされる。
【０１１２】
図１１では、２ＭＢのＦｉｌｅ１とＦｉｌｅ２が、クラウドサーバ１０５Ａと１０５Ｂへそれぞれバックアップされている。そして、ネットワーク１０２の遅延は３０ミリ秒である。遅延が３０ミリ秒であるため、データ送受信管理テーブル２１３（図５）によれば、採用されるチャンクサイズ５０２は“１．０ＭＢ”であり、採用される並列度５０３は“４”である。また、リストア対象として選択されたファイルはＦｉｌｅ１であるとする。
【０１１３】
この場合、Ｆｉｌｅ１を１ＭＢのチャンクに分けても２並列でのリストアが限界となり、並列度“４”が満たされない。一方、Ｆｉｌｅ１を４並列で分けると（４分割すると）、各チャンクのサイズは０．５ＭＢとなり、チャンクサイズ“１．０ＭＢ”が満たされない。
【０１１４】
そこで、ファイルサーバ（リストア）１０３Ｂ内のデータ送受信プログラム２１０は、Ｆｉｌｅ１に加えてＦｉｌｅ２を１ＭＢのチャンクに分けてリストアする。これにより、合計４並列でリストアできるようになる。つまり、チャンクサイズ“１．０ＭＢ”且つ並列度“４”を満たすためには、リストア対象のサイズは、４．０ＭＢ以上（１．０ｘ４＝４．０ＭＢ）である必要がある。このため、データ送受信プログラム２１０は、２ＭＢのＦｉｌｅ１に加えて２ＭＢのＦｉｌｅ２もリストア対象とすることで、合計ファイルサイズが４．０ＭＢ以上であることを満たす。
【０１１５】
この動作を達成するため、データ送受信プログラム２１０は、図９のステップ９０３で、チャンクサイズと並列度を決定した後、並列度が不足しているか否を判断する。この判断結果が真の場合は、データ送受信プログラム２１０は、リストア処理を別のスレッドまたはプロセスとして起動し（サブのリストア処理を起動し）、ステップ９０１からステップ９０６を動作させる。つまり、新たにリストア対象とされるファイルが選択され、処理が進む。遅延に対応した並列度が満たされるまで（リストア処理で達成される並列度の合計が、遅延に対応した並列度以上になるまで）、同様にリストア処理が起動される。ただし、リストア処理は個別に動作するのではなく、ステップ９０４で処理を待ち合わせする。つまり、ステップ９０４は、複数のリストア処理が同時に実行する。これにより、リストアの並列度を達成する。この個別のリストア処理は、リストアセッションの一例でもよい。なお、この時、並列度を調整するため、データ送受信プログラム２１０は、リストア処理（リストアセッション）毎にチャンクサイズと並列度を変更してもよい。例えば、データ送受信プログラム２１０は、全リストア処理の並列度の合計が、目的の並列度（遅延に対応した並列度）と合わない場合は、何れかのリストア処理のチャンクサイズと並列度を小さくするという調整を行ってよい。
【０１１６】
以上のように、本実施例によると、ファイルが小さく、１つのファイルのデータ取得では、並列度を達成できない場合、複数のファイルを纏めて１つのリストア対象とすることで、並列度を達成することができる。これにより、リストア対象ファイルのファイルサイズに依存することなく、リストア速度を高めることが期待できる。
【０１１７】
なお、上記の説明では、チャンクサイズが優先されるチャンクサイズ優先リストア処理が採用されるが、並列度が優先される並列度優先リストア処理が採用されてもよい。例えば、以下の処理が行われてもよい。
【０１１８】
データ送受信プログラム２１０は、下記の処理、
（ｐ）リストア対象ファイルを、計測された遅延に応じた並列度分のチャンクに分割すると仮定した場合に、チャンクサイズが、計測された遅延に応じたチャンクサイズ以上になるか否かを判断すること、
（ｑ）（ｐ）の判断結果が真の場合、リストア対象ファイルを、計測された遅延に応じた並列度分のチャンクに分割し、その分割により得られたチャンクを、計測された遅延に応じた並列度で取得すること、
を実行してよい。これにより、遅延に応じた並列度が維持される。
【０１１９】
また、データ送受信プログラム２１０は、下記の処理、
（ｒ）（ｑ）の判断結果が偽の場合、リストア対象ファイルと、１以上の他のリストア対象ファイルとを、計測された遅延に応じた並列度分のチャンクに分割し、その分割により得られたチャンクを、計測された遅延に応じた並列度で取得すること、
を実行してよい。リストア対象ファイルと１以上の他のリストア対象ファイルとの合計サイズは、計測された遅延に応じたチャンクサイズと計測された遅延に応じた並列度との積以上である。これにより、遅延に応じたチャンクサイズが維持される。
【０１２０】
データ送受信プログラム２１０は、（ｑ）の判断結果が偽の場合であっても、上記の積以上の合計サイズが得られる他のリストア対象ファイルが無ければ、（ｒ）に代えて、下記の処理、
（ｓ１）リストア対象ファイルを、計測された遅延に応じたチャンクサイズのチャンクに分割し、その分割により得られたチャンクを、計測された遅延に応じた並列度未満のうちの最大並列度で取得すること、
を実行してよい。これにより、遅延に応じたチャンクサイズを最小チャンクサイズとして守り、遅延に応じた並列度未満であるがなるべく高い並列度で、チャンクを取得することができる。
【０１２１】
データ送受信プログラム２１０は、下記の処理、
（ｓ２）（ｑ）の判断結果が偽の場合、リストア対象ファイルを、計測された遅延に応じたチャンクサイズのチャンクに分割し、その分割により得られたチャンクを、計測された遅延に応じた並列度未満のうちの最大並列度で取得することを実行すること、
を実行してよい。これにより、上記の積以上の合計サイズが得られる他のリストア対象ファイルの有無に関わらず、遅延に応じたチャンクサイズを最小チャンクサイズとして守り、遅延に応じた並列度未満であるがなるべく高い並列度で、チャンクを取得することができる。
【０１２２】
以上が、並列度優先リストア処理の一例である。なお、データ送受信プログラム２１０は、チャンクサイズ優先リストア処理と並列度優先リストア処理のいずれを採用するかを選択し（例えば、リストア対象ファイルまたは計測された遅延に基づき選択し）、選択した方の処理を実行してもよい。ファイル毎に、または、遅延（例えば代表値）毎に、チャンクサイズ優先リストア処理と並列度優先リストア処理のいずれを採用するかが予め定められていてもよい。
【実施例３】
【０１２３】
図１２を用いて、実施例３について説明する。本実施例は、実施例１の変形例に相当するため、実施例１との相違を中心に説明する。
【０１２４】
図１２は、実施例３に係るバックアップ処理およびリストア処理の一例を示す模式図である。
【０１２５】
本実施例に係るリストア方法は、ファイルを複数のフラグメントに分割した分割リストア方法である。本実施例において、複数のフラグメントの各々は、直前のフラグメントの後側部分と、直後のフラグメントの前側部分とのうちの少なくとも１つと重なり合っている。このため、ファイルデータをリストアする際のチャンクサイズと並列度を調整することができる。
【０１２６】
図１２によれば、実施例３の概要の一例は次の通りである。すなわち、ファイルサーバ（運用）１０３Ａ４ＭＢのファイルを複数のフラグメントに分割し、その複数のフラグメントをクラウドサーバ１０５Ａ及び１０５Ｂへバックアップする。ファイルサーバ（リストア）１０３Ｂが、複数のフラグメントのチャンクをクラウドサーバ１０５Ａ及び１０５Ｂから並列に取得して、４ＭＢのファイルをリストアする。
【０１２７】
以下、詳細を説明する。
【０１２８】
ファイルのデータは、４ＭＢである。４ＭＢのファイルデータが、３つのフラグメント１〜ト３に分割され、３つのフラグメント１〜３がクラウドサーバ１０５Ａ及び１０５Ｂへバックアップされる。フラグメント１は、ファイルデータの０〜２ＭＢ目の部分であり、フラグメント２は、ファイルデータの１〜３ＭＢ目の部分であり、フラグメント３は、ファイルデータの２〜４ＭＢ目の部分である。これらフラグメント１〜３への分割は、作成プログラム２０８が実施する。各フラグメントのサイズは同じである。フラグメントサイズは、複数種類のチャンクサイズ（例えば、図５の例によれば、０．２５ＭＢ、０．５ＭＢ、１．０ＭＢ）の公倍数であることが望ましい。なぜなら、１つのフラグメントから１以上のチャンクを取得するためである。更に、フラグメントサイズは、複数種類のチャンクサイズの最小公倍数のＭ倍（Ｍは２以上の整数）であることが望ましい。なぜなら、１つのフラグメントから２以上のチャンクを取得するためである）。
【０１２９】
フラグメント１及び２は、クラウドサーバ１０５Ａに格納される。フラグメント３は、クラウドサーバ１０５Ｂに格納される。
【０１３０】
ファイルサーバ（リストア）１０３Ｂがファイルデータをリストアする際に、ネットワーク１０２の通信遅延が２０ミリ秒であった場合、ファイルサーバ（リストア）１０３Ｂのデータ送受信プログラム２１０は、データ送受信管理テーブル２１３のレコード５０４Ｂを選択する。この時、チャンクサイズ５０２は“０．５ＭＢ”であり、並列度５０３は“２”である。そこで、データ送受信プログラム２１０は、先頭から順に０．５ＭＢ単位にフラグメント１とフラグメント３を、２並列に取得する。これにより、２並列でリストアを行い、データ送受信管理テーブル２１３に設定されたチャンクサイズと並列度を達成できる。
【０１３１】
一方、ネットワーク１０２の通信遅延が３０ミリ秒であった場合、データ送受信プログラム２１０は、データ送受信管理テーブル２１３のレコード５０４Ｃを選択する。この時、チャンクサイズ５０２は“１ＭＢ”であり、並列度５０３は“４”である。そこで、データ送受信プログラム２１０は、フラグメント１の前半１ＭＢのチャンク１−１と、フラグメント２の前半１ＭＢのチャンク２−１と、フラグメント３の前半１ＭＢのチャンク３−１及び後半１ＭＢのチャンク３−２を、４並列に取得する。
【０１３２】
以上のように、本実施例によると、ファイルを複数のフラグメントに分割して複製する分割複製したファイルをリストアできる。さらに、フラグメントの範囲を一部重ね合わせることで、ネットワーク１０２の通信遅延が増加し、大きなチャンクかつ並列度を大きくリストアする場合でも、チャンクサイズと並列度を達成してリストアできる。
【０１３３】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【０１３４】
１０３：ファイルサーバ
【図１】
2018132814.tif 000003
【図２】
2018132814.tif 000004
【図３】
2018132814.tif 000005
【図４】
2018132814.tif 000006
【図５】
2018132814.tif 000007
【図６】
2018132814.tif 000008
【図７】
2018132814.tif 000009
【図８】
2018132814.tif 000010
【図９】
2018132814.tif 000011
【図１０】
2018132814.tif 000012
【図１１】
2018132814.tif 000013
【図１２】
2018132814.tif 000014
【図１３】
2018132814.tif 000015
【図１４】
2018132814.tif 000016
【図１５】
2018132814.tif 000017
【図１６】
2018132814.tif 000018