図1は、本発明の第1実施形態に係るダウンロードシステム1の全体的な概要を示したものであり、このダウンロードシステム1は、プライマリストレージサーバ10(通信装置に相当)、及びセカンダリストレージサーバ20(サーバ装置に相当)により構成される。プライマリストレージサーバ10は、ネットワークを通じてセカンダリストレージサーバ20と通信可能になっており、セカンダリストレージサーバ20をバックアップサーバとして各種ファイルの記憶等に利用する。
本実施形態のプライマリストレージサーバ10は記憶デバイスとして、読み書き速度が速いが記憶容量は小さいプライマリストレージ11(第1記憶デバイス)を備え、一方、セカンダリストレージサーバ20は、プライマリストレージ11に比べて読み書き速度は遅いが記憶容量の大きいセカンダリストレージ21(第2記憶デバイス)を備えており、プライマリストレージ11で記憶していたファイルをセカンダリストレージ21で記憶させるために、セカンダリストレージサーバ20へ送信して、プライマリストレージ11に記憶していたファイルの移動により、プライマリストレージ11の記憶容量を確保するような処理をプライマリストレージサーバ10は行う。
また、プライマリストレージサーバ10は、一般ユーザ等が用いる外部のユーザ端末40からのアクセスを、ネットワークを介し受信可能にしており、セカンダリストレージ21に移動させたファイルの要求等をユーザ端末40から受け取ると、プライマリストレージサーバ10は、対象となるファイルをセカンダリストレージサーバ20からダウンロードする処理を行う。このようにセカンダリストレージサーバ20からファイルをダウンロードするにあたり、ダウンロード対象のファイル用容量が一定容量より大きい場合、本発明の特徴であるファイルを複数のデータに分割して時分割で同時的に(時間的に同時期に)、ダウンロードする処理を、ダウンロードシステム1は行うことになる。
図2(a)〜(c)が、本発明の特徴であるファイルを構成する複数のデータをダウンロードする処理の概要を示し、セカンダリストレージ20に記憶されるファイル15をプライマリストレージサーバ10へダウンロードするときの状況の流れを表す。まず、図2(a)に示すように、プライマリストレージサーバ10は、ダウンロード対象のファイル15に応じた格納ファイル5を生成すると共に、ダウンロード対象のファイル15を時分割で同時的(並列的)にダウンロードするための第1スレッド14a〜第4スレッド14dを確立し(生成し)、これらスレッド14a〜14dごとに、データを要求する要求情報を送信することにより、ダウンロード対象のファイル15の第1領域15a〜第4領域15d(図3参照)に含まれるデータを時間的に同時期に(同時的に)呼び出す処理を行う。
次に、図2(b)に示すように、セカンダリストレージサーバ20は、ファイル15の各領域15a〜15dに含まれるデータの呼び出しに応じた要求情報を受信すると、その呼び出しに応じたデータ150a〜150dを各領域15a〜15dより読み出し、呼び出しで用いられた各スレッド14a〜14dを通じて、各読み出したデータ150a〜150dをプライマリストレージサーバ10へ送信する。なお、このようなデータの呼び出しに応じて、呼び出し対象のデータを呼び出し元の装置へ送信する処理は、サーバ装置としては一般的な処理となる。
そして、図2(c)に示すように、プライマリストレージサーバ10は、セカンダリストレージサーバ20から送られてくる各データ150a〜150dを第1スレッド14a〜第4スレッド14dごとに受信すると、受信した各データ150a〜150dを、格納ファイル5におけるそれぞれのデータ150a〜150dに対応する格納領域(第1格納領域15a〜第4格納領域15d)に格納する。それにより格納ファイル5が、ダウンロード対象のファイル15と同等な中身になり、このような中身の格納ファイル5が、ファイル15として使用できるようになる。以下、上記のような処理を行うダウンロードシステム1を構成するプライマリストレージサーバ10等について詳説していく。
図4は、プライマリストレージサーバ10(通信装置)の主要な内部構成を示す。本実施形態のプライマリストレージサーバ10にはサーバコンピュータを適用しており、全体的な制御及び各種処理を行うMPU10aに、各種デバイス等を内部接続線10hで接続したものになっており、各種デバイス等には、通信モジュール10b、RAM10c、ROM10d、入力インタフェース10e、出力インタフェース10f、記憶部10g、及びプライマリストレージ11等がある。
通信モジュール10bは、ネットワークとの接続モジュールに相当する通信デバイスであり、所要の通信規格に応じたものである(例えばLANモジュール)。通信モジュール10bは、所要の通信機器(図示は省略。例えばルータ等が該当)を介してネットワークと接続されており、セカンダリストレージサーバ20との通信を可能にすると共に、システム外部のユーザ端末40等との通信も可能にしている。
RAM10cは、MPU10aの処理に伴う内容、ファイル等を一時的に記憶するものであり、ROM10dは、MPU10aの基本的な処理内容を規定したプログラム等を記憶するものである。入力インタフェース10eは、システム管理者等からの操作指示等を受け付けるキーボード10i、マウス等が接続されるものであり、プライマリストレージサーバ10のシステム管理者等から受け付けた操作指示等をMPU10aへ伝える。出力インタフェース10fは、ディスプレイ10j(表示出力装置)が接続されるものであり、MPU10aの処理に伴う内容をディスプレイ10jへ出力し、システム管理者等が現在の処理内容等を確認できるようにしている。
記憶部10gは、プログラム等を記憶するものであり、具体的には、サーバプログラムP1、及び処理プログラムP2等の各種プログラムを記憶すると共に、ファイルのダウンロード処理で用いる設定値として、分割閾値f1及び分割サイズf2等も記憶する。なお、分割閾値f1及び分割サイズf2は、デフォルトで初期値が設定されており、分割閾値f1としては例えば300MB(メガバイト。以下同様)、分割サイズf2として例えば100MBが、それぞれデフォルトの初期値として設定されている(各値は一例)。
また、記憶部10gに記憶されるサーバプログラムP1は、サーバコンピュータ用のオペレーティングシステムに応じた各種処理を規定したものであり、この規定内容に基づいた処理をMPU10aが行うことで、プライマリストレージサーバ10はサーバコンピュータとしての機能を果たす。また、処理プログラムP2は、本発明に係るダウンロード方法の各種処理の制御をMPU10aが行うことを規定したコンピュータプログラムであり、上述した図2(a)〜図2(c)に示す各処理において、プライマリストレージサーバ10が行う制御処理内容がプログラミングされている。このような処理プログラムP2は、その処理プログラムP2が記憶された記憶媒体(例えば、DVDのような記憶ディスク)等を通じて、プライマリストレージサーバ10へインストールすることが可能である。また、本実施形態では、処理プログラムP2のプログラム内容で、MPU10aの制御処理内容を規定することにより、MPU10aがエージェント12として各種機能を行うようになる。
図5は、MPU10aがエージェント12として行う機能のブロック図を示し、MPU10aは、図中の(1)〜(7)の各内容を行う手段として機能する。エージェント12の具体的な手段の機能としては、「(1)ファイル容量確認機能」、「(2)ファイル分割判断機能」、「(3)分割領域特定機能」、「(4)スレッド生成機能」、「(5)格納ファイル生成機能」、「(6)データ要求機能」、及び「(7)データ格納機能」等がある。
「(1)ファイル容量確認機能」は、プライマリストレージサーバ10が、セカンダリストレージサーバ20に記憶するファイルをダウンロードすることを決定した場合、ダウンロード対象のファイルの容量をセカンダリストレージサーバ20に確認するための処理である。具体的には、ダウンロード対象のファイルを特定する情報(ファイル名等)と共に、ダウンロード対象のファイル容量を確認して問い合わせる旨の指示(コマンド等)を含む確認情報を、セカンダリストレージサーバ20へMPU10aが送信する制御を行う処理に応じた機能になっている。
「(2)ファイル分割判断機能」は、上記の確認情報の送信に応じて、セカンダリストレージサーバ20から、ダウンロード対象のファイルの容量を通知する通知情報を受信すると、その通知情報で通知されたファイル容量と、記憶部10gに記憶される分割閾値f1とを対比し、ファイル容量が分割閾値f1の設定値(例えば、300MB)を上回る場合(超過する場合)、ダウンロード対象のファイルを分割することを特定する機能になっている。なお、ファイル容量が分割閾値f1の設定値以下の場合(上回らない場合)、分割を行うことなく、プライマリストレージサーバ10はセカンダリストレージサーバ20からファイルをダウンロードすることになり、このような分割なしのダウンロードを行う場合は、従来と同様の処理になるので詳細は説明しない。
「(3)分割領域特定機能」は、通知情報で通知されたファイル容量に基づいて、ダウンロード対象のファイル15を分割する複数の領域を特定する処理であり、本実施形態では、記憶部10gに記憶される分割サイズf2の設定値を分割の領域範囲のサイズとして用いることにより、ファイル容量及び分割サイズf2により分割領域を特定している。具体的には、ダウンロード対象のファイルにおける最初の0MBに、分割サイズf2の設定値(例えば、100MB)を順次加えていくことで、ダウンロード対象のファイル15を分割する領域の開始バイト及び終了バイトを求めており、それにより、ファイルを分割する領域数及び各領域の位置範囲を特定している。
図3に示すように、ダウンロード対象のファイル15のファイル容量が400MBの場合、最初の領域(第1領域15a)の開始バイト(0MB)に、分割サイズf2の設定値(100MB)を加えた99MBを第1領域15aの終了バイトとして特定し、その99MBに続く100MBを第2領域15bの開始バイトにして、以下同様に、その開始バイトに分割サイズf2の設定値を加えた199MBを第2領域15bの終了バイトとして特定し、199MBに続く200MBを第3領域15cの開始バイトにして、分割サイズf2の設定値を加えた299MBを第3領域15cの終了バイトとして特定し、299MBに続く300MBを第4領域15dの開始バイトにして、分割サイズf2の設定値を加えた399MBを第4領域15bの終了バイトとして特定する。このような特定の仕方により、各領域の位置範囲が定まることになる。
なお、ファイルを分割する領域の特定の仕方としては、上記以外にも、複数の方式が想定され、例えば、ダウンロード対象のファイル15において、ファイル容量を分割サイズf2で除算することにより、まず、ファイル15の全領域を分割する数を特定し、それから、ファイルの開始バイトに順次、分割サイズを加えることで、各領域の位置範囲を特定することも可能である。また、ファイル分割領域の位置範囲を指定したルックアップテーブル等を準備しておき(第1領域から第N領域(Nは2以上の整数)までの開始及び終了バイトを指定したテーブル等)、その指定された内容に基づき、ダウンロード対象のファイルの分割領域を特定する仕様にすることも可能である。このようにルックアップテーブル等を用いる場合は、分割サイズf2の使用を省略できる。
「(4)スレッド生成機能」は、ダウンロード対象のファイルについて特定した各領域の数に応じた処理を、時分割(タイムシェアリング)で同時並行的に行えるようにするために、スレッドを生成するものである(並列処理のために確立される)。生成されるスレッドの数は、CPU40aの処理能力及びRAM10cの容量等により上限が定まり、本実施形態では、最大4つまでスレッドを生成可能にしている。そのため、ダウンロード対象のファイルの分割領域数が、スレッドの最大生成可能数に収まる場合、この「(4)スレッド生成機能」では、ファイルの分割領域数と同数のスレッドを生成する。
よって、図3に示すように、ダウンロード対象のファイル15が第1領域15a〜第4領域15dの計4つの領域に分割される場合、「(4)スレッド生成機能」により生成されるスレッド数は、分割領域数と同数の4になる(図2(a)等参照)。この場合、生成された第1スレッド14a〜第4スレッド14dについて、「(4)スレッド生成機能」により、最初の第1スレッド14aは、ファイル15の第1領域15aに対する処理用として設定され、以下、2番目の第2スレッド14bは第2領域15bに対する処理用、3番目の第3スレッド14cは第3領域15cに対する処理用、4番目の第4スレッド14dは第4領域15dに対する処理用としてそれぞれ設定される。
なお、ダウンロード対象のファイルの分割領域数が計3つの場合、生成されるスレッド数は3となり、ダウンロード対象のファイルの分割領域数が計2つの場合、生成されるスレッド数は2となる。また、ダウンロード対象のファイルの分割領域数が、生成可能なスレッド数の上限(本実施形態では4)を超える場合は、生成されるスレッド数は上限の4になる(例えば、ダウンロード対象のファイルの分割領域数が計6つの場合でも、本実施形態において生成されるスレッド数は4に留まる)。
このように生成されるスレッドの数(スレッド数)は、ダウンロードシステム1における同時的処理可能数に該当し、プライマリストレージサーバ10及びセカンダリストレージサーバ20の間で時分割により並列処理を行える数(時間的に同時期に処理できる数)は、スレッド数と同じになる。なお、本実施形態では、CPU40aの処理能力及びRAM10cの容量等によりスレッド数の上限は4にしたが、本実施形態より処理能力の高いMPU10a及び容量の大きいRAM10c等を用いるときは、生成可能なスレッド数の上限を4より多くすることも可能である(例えば、スレッド数を8又は16等にすることも可能)。なお、生成されるスレッド14a等の処理(ダウンロード処理)は、基本的に同じ時間帯で行われるが、スレッドそれそれで独立して処理を進行するので、処理の終了時期は同時期にならないことがある。
また、「(5)格納ファイル生成機能」は、ダウンロードしたファイルを格納するための格納ファイルを生成する機能であり、この機能により、上述した「(3)分割領域特定機能」で特定したダウンロード対象のファイル15の第1領域15a〜第4領域15dに対応した第1格納領域5a〜第4格納領域5dを有する格納ファイル5(図2(a)参照)がプライマリストレージ11に生成される。「(5)格納ファイル生成機能」で両ファイルの領域の対応関係が設定され、具体的には、格納ファイル5の第1格納領域5aが、ダウンロード対象のファイル15の第1領域15aに対応し、以下、格納ファイル5の第2格納領域5aが、ファイル15の第2領域15bに対応し、格納ファイル5の第3格納領域5cが、ファイル15の第3領域15cに対応し、格納ファイル5の第4格納領域5dが、ファイル15の第4領域15dに対応することが設定される。なお、このような格納ファイル5は、ダウンロード対象のファイル15の各領域15a〜15dと同サイズ(同容量)の格納領域5a〜5dが確保されただけになっており、これらの各格納領域5a〜5dの中身は、生成時点では空になっている。
「(6)データ要求機能」は、上述した「(4)スレッド生成機能」により生成されたスレッド14a〜14dの数に従って、並列処理によりファイル15の中の各領域に応じたデータを同時的に呼び出す機能である。なお、並列処理で同時期に処理を行うことは、時分割処理が実行されることから、厳密には各処理が同時ではなく、多少の時間的なズレを許容したものとなっており、それゆえ、このような時分割処理による多少の時間的なズレを含むという意味合いで同時的という文言を用いている。
「(6)データ要求機能」の具体的な内容としては、ダウンロード対象のファイル15の各領域15a〜15dに含まれるデータを同時的処理可能数に従って同時的にダウンロードするように、データの呼び出し(要求)を行うための要求情報をセカンダリストレージサーバ20へMPU10が送信する制御を行う処理機能になっている。この機能では、各スレッド14a〜14dを通じて並列処理で要求情報をそれぞれ送信するので、同時的処理可能数(この場合であれば、同時的処理可能数はスレッド数と同数の4になる)に従って同時的に各データが呼び出されることになる。また、それぞれの要求情報は、ダウンロード対象のファイル15の中の呼び出し対象となる領域の位置範囲を指定する情報、及びその指定された位置範囲の領域に含まれるデータを呼び出す指示を含む。
領域の位置範囲を指定する情報は、上記の「(3)分割領域特定機能」により特定された領域の範囲における開始バイト(開始位置)及び終了バイト(終了位置)を指定するものとなっており、それにより、指定された領域の位置範囲に含まれるデータを呼び出すことが可能となる。
「(7)データ格納機能」は、上述した「(6)データ要求機能」による要求情報の送信に応じて、セカンダリストレージサーバ20から、第1領域15a〜第4領域15dに含まれるデータが、各スレッド14a〜14dを介し、それぞれダウンロードされてくると、それらのデータを受信し、受信した各データを、上記の「(5)格納ファイル生成機能」で生成した格納ファイル5の各格納領域5a〜5dにそれぞれ格納する機能になる。このとき、第1領域15aに含まれていた一つ目のデータ150aは、その第1領域15aに対応する第1格納領域5aに格納され、以下、二つ目のデータ150bは、第2領域15bに対応する第2格納領域5bに格納され、三つ目のデータ150cは、第3領域15cに対応する第3格納領域5cに格納され、四つ目のデータ150dは、第4領域15dに対応する第4格納領域5dに格納される。
これらデータ150a〜150dの格納状況としては、図2(b)に示すように、各スレッド14a〜14dを通じて、セカンダリストレージサーバ20から、ダウンロード対象のファイル15の第1領域15a〜第4領域15dに含まれる各データ150a〜150dが、時分割で並列的にプライマリストレージサーバ10へダウンロードされる状況になっており、それに伴い、格納ファイル5においても、各スレッド14a〜14dに対応する第1格納領域5a〜第4格納領域5dへの各データ150a〜150dの格納処理も並列的に行われる。次に、ダウンロードシステム1におけるセカンダリストレージサーバ20について説明する。
図6は、ダウンロードシステム1を構成するセカンダリストレージサーバ20(サーバ装置に相当)の主要な内部構成を示している。本実施形態のセカンダリストレージサーバ20にも、プライマリストレージサーバ10と同様、一般的なサーバコンピュータを適用しており、全体的な制御及び各種処理を行うMPU20aに、各種デバイス等を内部接続線20hで接続したものになっており、各種デバイス等には、通信モジュール20b、RAM20c、ROM20d、入力インタフェース20e、出力インタフェース20f、記憶部20g、及びセカンダリストレージ21等がある。なお、セカンダリストレージ21には、本発明においてダウンロードの対象となるファイル15が記憶される。
通信モジュール20b〜出力インタフェース20fについては、図4に示すプライマリストレージサーバ10の通信モジュール10b〜出力インタフェース10fと同等なものであるので、説明は省略する(入力インタフェース20eに接続されるキーボード20i及び出力インタフェース20fに接続されるディスプレイ20iも、プライマリストレージサーバ10のものと同様)。
また、セカンダリストレージサーバ20の記憶部20gは、サーバプログラムP5、及びストレージプログラムP6等を記憶している。サーバプログラムP5は、サーバコンピュータ用のオペレーティングシステムに応じた各種処理を規定したものであり、図4に示すプライマリストレージサーバ10のサーバプログラムP1と基本的に同等な処理を規定し、この規定内容に基づいた処理をMPU20aが行うことで、セカンダリストレージサーバ20はサーバコンピュータとしての機能を果たす。
ストレージプログラムP6は、上述したプライマリストレージサーバ10のMPU10aがエージェント12として行う各種処理に対応して、セカンダリストレージサーバ20のMPU20aが行う処理内容を規定したものであるが、このストレージプログラムP6は、一般的なストレージサーバの処理を規定したものになっている。
すなわち、セカンダリストレージサーバ20が通信モジュール20bを通じて、ファイル15の容量を問い合わせる旨の確認情報を受信すると、その確認情報に示されるファイル名等に基づき、問い合わせ対象のファイルをMPU20aがセカンダリストレージ21に記憶されている中から特定すると共に、その特定したファイル(例えば、ファイル15)のファイル容量を特定することを、ストレージプログラムP6は規定する。また、ストレージプログラムP6は、上記のように特定したファイル容量を通知する通知情報を、MPU20aが生成し、その生成した通知情報を、上記の確認情報の送信元の装置へ送信する処理も規定している。
このように、セカンダリストレージサーバ20においては、プライマリストレージサーバ10からの情報に基づき各種処理を行うだけであり、図3に示すように、ファイル15の各領域15a〜15dを特定する処理もプライマリストレージサーバ10で行われるだけであり、セカンダリストレージサーバ20ではファイルを分割する領域を特定する処理を行わないので、セカンダリストレージサーバ20の処理負担は、従来のファイル分割によるダウンロードに比べて低減している。
さらに、ストレージプログラムP6は、ファイル中の領域を指定したデータの要求(呼び出し)に応じた要求情報を受信すると、MPU20aが、その要求情報で指定されるファイルの領域に含まれるデータを、セカンダリストレージ21から読み出して、要求情報の送信元の装置へ送信する処理を規定している。この場合、複数のスレッドを通じて、時分割処理で同時的(並列的)に、複数の要求情報を受信すると、ストレージプログラムP2は、上述したデータの読み出し及び送信を、各スレッドに基づいて、時分割で同時的に処理することを規定している。そのため、図2(a)、図2(b)に示すように、計4つのスレッド14a〜スレッド14dが用いられる場合、スレッド数に従って、ダウンロード対象のファイル15に含まれる各領域15a〜15dに含まれるデータ150a〜150dを同時的にプライマリストレージサーバ10へ送信することになる。
図7は、上述したような処理を行うプライマリストレージサーバ10及びセカンダリストレージサーバ20によって構成されるダウンローシステム1によるダウンロード方法の一連の処理手順を示した第1フローチャートである(なお、第1フローチャートの中で、プライマリストレージサーバ10の側で行われる各処理は、プライマリストレージサーバ10(通信装置)によるダウンロード方法の処理手順を示したものになる。以下同様)。この第1フローチャートに従って、以下にダウンロード方法を説明する。
まず、プライマリストレージサーバ10(MPU10aによるエージェント12)は、上述した「(1)ファイル容量確認機能」により、ダウンロード対象のファイルを記憶するセカンダリストレージサーバ20へ、ファイル容量を確認するための確認情報を送信する(S1)。
セカンダリストレージサーバ20(MPU20a)は最初、確認情報を受信したか否かを判断する段階になっており(S11)、受信していない場合(S11:NO)、受信待ちの状態となり、一方、確認情報を受信した場合(S11:YES)、確認対象のファイルを特定すると共に、その特定したファイルのファイル容量を検知し、その検知したファイル容量を通知するための通知情報を生成してプライマリストレージサーバ10へ送信する(S12)。
プライマリストレージサーバ10は、S1の段階の確認情報の送信に応じて、セカンダリストレージサーバ20からの通知情報を受信したか否かを判断する段階になっており(S2)、受信していない場合(S2:NO)、受信待ちの状態となり、一方、通知情報を受信した場合(S2:YES)、上述した「(2)ファイル分割判断機能」により、受信した通知情報で通知されたファイル容量を、記憶部10gで記憶する分割閾値f1とを対比し、ファイル容量が分割閾値f1を超過するか否かを判断する(S3)。
ファイル容量が分割閾値f1を超過しない場合(S3:NO)、ファイルを分割することなく、プライマリストレージサーバ10は通常のダウンロード処理を行う(このダウンロード処理は、従来と同様であることから詳説しない)。また、ファイル容量が分割閾値f1を超過した場合(S3:YES)、プライマリストレージサーバ10は、上述した「(3)分割領域特定機能」により、ダウンロード対象のファイル15を分割する領域15a〜15d(図3参照)を特定すると共に(S4)、上述した「(4)スレッド生成機能」により、分割領域数に基づき第1スレッド14a〜第4スレッド14d(図2(a)等参照)を生成する(S5)。
そして、プライマリストレージサーバ10は、上述した「(5)格納ファイル生成機能」により、ダウンロード対象のファイル15の各領域15a〜15dに対応した各格納領域5a〜5dを有する格納ファイル5(図2(a)等参照)を生成する(S6)。なお、格納ファイル5の生成を行うS6の段階の処理と、上述したスレッド生成のS5の段階は、処理の順序を入れ替えることも可能である。
それからプライマリストレージサーバ10は図2(a)に示すように、上述した「(6)データ要求機能」により、ダウンロード対象のファイル15における複数の各領域15a〜15dにそれぞれ含まれる複数のデータ150a〜150dを、同時的に呼び出すように、各スレッド14a〜14dを介し、データを要求する要求情報をセカンダリストレージサーバ20へ送信する(S7)。なお、このS7の段階の処理により、要求情報は、スレッド14a〜14dの数(同時的処理可能数)に従って送信されることなり(同時的に送信される要求情報の数は、スレッド14a〜14dの数と同じ)、また、一度に呼び出されるデータの数もスレッド14a〜14dの数と同じになる。
セカンダリストレージサーバ20は、S12の段階の通知情報の送信に応じて、プライマリストレージサーバ10からの要求情報を受信したか否かを判断する段階になっており(S13)、受信していない場合(S13:NO)、受信待ちの状態となる。一方、要求情報を受信した場合(S13:YES)、セカンダリストレージサーバ20は、受信した各要求情報で指定されるダウンロード対象のファイル15における複数の領域15a〜15dにそれぞれ含まれる各データ150a〜150dを読み出して、図2(b)に示すように各スレッド14a〜14dを介し、同時的にプライマリストレージサーバ10へ送信する処理を行う(S14)。なお、一度に同時的に送信されるデータ150a〜150dの数は、各スレッド14a〜14dの数と同数になる(スレッド数に従った数になる)。また、セカンダリストレージサーバ20は、各データ150a〜150dの送信が完了すると、ダウンロード方法における処理は終了することになる。
プライマリストレージサーバ10は、S7の段階の要求情報の送信に応じて、各スレッド14a〜14dを通じ、それぞれデータ150a〜150dを同時的に受信し、受信した各データ150a〜150dを、それらの各データ150a〜150dが含まれていたファイル15の各領域15a〜15dに対応する格納ファイル5の各格納領域5a〜5dに、格納する処理を行う(S8)。この処理により、図2(b)、(c)に示すように、第1領域15aの第1データ150aは第1格納領域5aへ格納され、第2領域15bの第2データ150bは第2格納領域5bへ格納され、第3領域15cの第3データ150cは第3格納領域5cへ格納され、第4領域15dの第4データ150dは第4格納領域5dへ格納されていく。
それからプライマリストレージサーバ10は、各データ150a〜150dの全データ容量が格納されたか否かを、通知情報で通知されたファイル容量と対比して判断し(S9)、全データ容量が格納されていない場合(S9:NO)、S8の段階へ戻り、引き続き、データの受信及び格納の処理を行い、また、各データ150a〜150dの全データ容量を格納した場合(S9:YES)、処理を終了する。
各データ150a〜150dが格納された状態の格納ファイル5は、ファイルの中身が各データ150a〜150dにより構成されており、一方、ダウンロード対象のファイル5も、そのファイルの中身は各データ150a〜150dにより構成されているので、両者がファイルの中身が同じなので、各データ150a〜150dが格納された状態の格納ファイル5は、ダウンロード対象のファイル15として用いることが可能となる(ダウンロード対象のファイル15と同じものになる)。
なお、上述した本発明に係るダウンロードでは、スレッド14a〜14dを介した処理は時間的に同時期に開始されて、大部分のダウンロード処理は同時期に行われるが、それぞれのスレッド14a〜14dの処理は独立して実行されるので、ダウンロード対象のデータの容量が同じであっても、ダウンロード処理時における実際の通信状況(混雑度)及び各スレッドに係る処理状況等の相違により、ダウンロード完了の時期は同時期にならずに、スレッドごとに異なることも生じることがある(ダウンロード完了の時期は、スレッド間で同期しないことがある)。
上述したように、ダウンロード対象のファイルを記憶するセカンダリストレージサーバ20(サーバ装置)側ではプライマリストレージサーバ10からの指示に合わせた処理を行うだけであり、セカンダリストレージサーバ20が主になってダウンロード対象のファイルの分割処理を行う必要が無いので、従来のダウンロード対象のファイルを分割するものに比べて、サーバ装置側の処理負担を低減できるメリットがある。なお、本発明は上述した実施形態に限定されるものではなく、様々な変形例が想定できる。
図8(a)は変形例に係るメニュー画面16を示しており、このメニュー画面16は、上述した図4に示すプライマリストレージサーバ10の記憶部10gに記憶される分割サイズf2の設定値をデフォルト値から他の値に変更できるようにするためのものであり、変更する分割サイズに係る数値を受け付け可能にした処理プログラムP2の機能の一つとして具備される。プライマリストレージサーバ10のシステム管理者が、キーボード10i等を用いて所定の操作を行うと、ディスプレイ10jにメニュー画面16が表示されるようになる。
メニュー画面16は、設定値入力欄16aと、選択可能なOKボタン16b及び戻りボタン16cを有する。システム管理者がキーボード10i等を操作することで、設定値入力欄16aに所望の数値の入力を行った状態で、マウス等によりOKボタン16bの選択操作を行うと、プライマリストレージサーバ10(MPU)10aは、設定値入力欄16aに入力された数値を受け付けたことになり、この受け付けた数値を記憶部10gに分割サイズf2として記憶して設定し、その後の処理では、新たな設定値として、記憶部10gに記憶されている分割サイズf2の数値が用いられる。
図8(b)(c)は、分割サイズf2が上述したように変更されることで、分割される領域及び分割数が変わることを示している。ダウンロード対象のファイル15は、上述した実施形態と同様に、ファイル容量が400MBであるとした場合で、分割サイズf2も最初は、上述した実施形態と同様に100MBであるとしたとき、ファイル15は第1領域15a〜第4領域15dの計4つの領域に分割されるが(図3参照)、上記のメニュー画面16の操作を経て、分割サイズf2が200MBに増加するように変更された場合、ファイル15は、第1領域15a′及び第2領域15b′の計2つの領域に分割されることなる(図8(b)参照)。この場合、第1領域15a′の開始アドレスは0MB、終了アドレス199MBとなり、第2領域15b′の開始アドレスは200MB、終了アドレス399MBになる。
また、上記のメニュー画面16の操作を経て、分割サイズf2がデフォルト値の100MBから50MBに変更された場合、400MBのファイル容量のファイル15は、図8(c)に示すように、第1領域15a″〜第8領域15h″の計8つの領域に分割される。この場合、第1領域15a″の開始アドレスは0MB、終了アドレス49MBとなり、以下、第2領域15b″の開始アドレスは50MB、終了アドレス99MB、第3領域15c″の開始アドレスは100MB、終了アドレス149MB、第4領域15d″の開始アドレスは150MB、終了アドレス199MB、第5領域15e″の開始アドレスは200MB、終了アドレス249MB、第6領域15f″の開始アドレスは250MB、終了アドレス299MB、第7領域15g″の開始アドレスは300MB、終了アドレス349MB、第8領域15h″の開始アドレスは350MB、終了アドレス399MBとなる。
このようにメニュー画面16で、システム管理者が分割サイズの数値を適宜変更することで、各サーバ10、20の処理性能、通信仕様、又は変化する通信環境等に応じて、適切な分割サイズを適宜設定できるようになり、柔軟なダウンロード環境を確保できるようになる。なお、設定値の変更は、分割サイズf2に限定されるものではなく、プライマリストレージサーバ10の記憶部10gに記憶される分割閾値f1の数値についても、上述したメニュー画面16と同等なメニュー画面により、システム管理者が適宜変更できるようにすることも可能である。
また、ファイルの分割領域数と生成可能なスレッド上限数との関係で、ファイルの分割領域数がスレッド上限数(同時的処理可能数)を上回る場合、ダウンロード処理を複数回繰り返すスレッドが生じることになる。
図9(a)は、ダウンロード対象のファイル35が、計八つの第1領域35a〜第8領域35hに分割される一方、生成されるスレッド数が計四つの場合のダウンロード処理の概要を示す。なお、この場合、プライマリストレージサーバ10側で生成される格納ファイル25は、ダウンロード対象のファイル35の分割領域数と同数の第1格納領域25a〜第8格納領域25hを有するものとなっている。このような場合のダウンロード処理(ダウンロード方法)は、スレッド数が四つに対して、ファイル35の領域数が八つであることから、スレッドごとに計2回の同時的ダウンロード処理を行うことになる。
すなわち、図9(b)のタイムチャートにおける一回目の同時的ダウンロード処理で、ファイル35の第1領域35a〜第4領域35dのそれぞれに含まれるデータ140a〜140dが、計四つの各スレッド14a〜14dに従って、同時的に時分割でセカンダリストレージサーバ20からプライマリストレージサーバ10へダウンロードされ、ダウンロードされたデータ140a〜140dは、格納ファイル25の第1格納領域25a〜第4格納領域25dに格納される。
この一回目の同時的ダウンロード処理が終了すると、次に、図9(b)のタイムチャートにおける二回目の同時的ダウンロード処理で、ファイル35の第5領域35e〜第8領域35hのそれぞれに含まれるデータ140e〜140hが、計四つの各スレッド14a〜14dに従って、同時的に時分割でセカンダリストレージサーバ20からプライマリストレージサーバ10へダウンロードされ、ダウンロードされたデータ140a〜140dは、格納ファイル25の第5格納領域25e〜第8格納領域25hに格納されることになる。これにより、ファイル35の各領域35a〜35hに含まれるデータ140a〜140hの全てが、プライマリストレージサーバ10へダウンロードされる。
図10の第2フローチャートは、上述した図9(a)(b)に示すように、ダウンロード対象のファイルの領域の分割数が、生成されるスレッド数を上回る場合の処理手順(ダウンロード方法の処理内容)を示している。この第2フローチャートにおけるプライマリストレージサーバ10のS21〜S26の処理は、図7の第1フローチャートにおけるS1〜S6の処理と基本的に同内容になっており、また、第2フローチャートにおけるセカンダリストレージサーバ20のS41、S42の処理は、図7の第1フローチャートにおけるS11、12の処理と基本的に同内容になっている。図10の第2フローチャートのS27の段階で、プライマリストレージサーバ10は、図9(a)に示すような場合、スレッド14a〜14dごとに、先ずはファイル35における第1領域35a〜第4領域35dにそれぞれ含まれるデータ140a〜140dを要求する要求情報をセカンダリストレージサーバ20へ送信することになる。
セカンダリストレージサーバ20は、要求情報を受信したか否かを判断する段階で(S43)、要求情報を受信していない場合(S43:NO)、受信待ちの状態となり、一方、要求情報を受信した場合(S43:YES)、受信した各要求情報で指定されるファイル35における第1領域35a〜第4領域35dにそれぞれ含まれるデータ140a〜140dを、スレッド14a〜14dを通じて、同時的にプライマリストレージサーバ10へ送信する処理を行う(S44)。
プライマリストレージサーバ10は、各スレッド14a〜14dを通じて、データ140a〜140dを同時的に受信し、受信した各データ140a〜140dを、それらの各データ140a〜140dが含まれていたファイル35の第1領域35a〜第4領域35dに対応する格納ファイル25の第1格納領域25a〜第4格納領域25dに格納する処理を行う(S28)。それからプライマリストレージサーバ10は、S27の段階で送信した要求情報で呼び出した分のデータ140a〜140dの全データ容量が格納されたか否かを、第1格納領域25a〜第4格納領域25dの格納状況から判断し(S29)、全データ容量が格納されていない場合(S29:NO)、S28の段階へ戻り、データの受信及び格納の処理を継続する。
また、各データ140a〜140dの全データ容量を格納した場合(S29:YES)、プライマリストレージサーバ10は、ダウンロード対象のファイル35の全データを受信したか否かを、格納ファイル25においてデータが格納されていない格納領域の有無に基づき判断する(S30)。この段階では、格納ファイル25の第1格納領域25a〜第4格納領域25dにはデータが格納されるが、第5格納領域25e〜第6格納領域25hにはデータが格納されていないことから、データの格納されていない格納領域が残る状態となっており、それにより、ファイルの全データが受信されていないと、プライマリストレージサーバ10は判断し(S30:NO)、処理をS27の段階に戻す。
戻ったS27の段階で、プライマリストレージサーバ10は、各スレッド14a〜14dごとに、ファイル35における残りの第5領域35e〜第8領域35hにそれぞれ含まれるデータ140e〜140hを要求する要求情報をセカンダリストレージサーバ20へ送信する。セカンダリストレージサーバ20は上述した場合と同様に、要求情報を受信したか否かを判断する段階で(S43)、要求情報を受信していない場合(S43:NO)、受信待ちの状態となり、要求情報を受信した場合(S43:YES)、受信した各要求情報で指定されるファイル35における第5領域35e〜第8領域35hにそれぞれ含まれるデータ140e〜140hを、スレッド14a〜14dを通じて、同時的にプライマリストレージサーバ10へ送信する処理を行う(S44)。
プライマリストレージサーバ10は、スレッド14a〜14dを通じて、データ140e〜140hを同時的に受信すると、受信した各データ140e〜140hを、それらの各データ140e〜140hが含まれていたファイル35の第5領域35e〜第8領域35hに対応する格納ファイル25の第5格納領域25e〜第8格納領域25hに格納する処理を行う(S28)。それからプライマリストレージサーバ10は、直近のS27の段階で送信した要求情報で呼び出した分のデータ140e〜140hの全データ容量が格納されたか否かを、第5格納領域25e〜第8格納領域25hの格納状況から判断し(S29)、全データ容量が格納されていない場合(S29:NO)、S28の段階へ戻り、データの受信及び格納の処理を継続する。
また、各データ140e〜140hの全データ容量を格納した場合(S29:YES)、プライマリストレージサーバ10は、ファイル35の全データを受信したか否かを再度、判断し(S30)。この段階では、格納ファイル25の第1格納領域25a〜第8格納領域25hの全てにデータが格納されているので、ファイル35の全データが受信されたと判断する(S30:YES)。なお、上述した第2フローチャートの説明において、1回目のS27からS43、S44、S28、S29、S30へ至る処理が、図9(b)のタイムチャートにおける一回目の同時的ダウンロード処理に該当し、2回目のS27からS43、S44、S28、S29、S30へ至る処理が、図9(b)のタイムチャートにおける二回目の同時的ダウンロード処理に該当する。
このように第2フローチャートに示すように、要求情報の送信処理を複数回行う(繰り返す)ようにすれば、ダウンロード対象のファイルの領域の分割数が、生成されるスレッド数を上回るときでも本発明に係るダウンロード方法を適用できる。なお、ダウンロード対象のファイルの領域の分割数が、生成されるスレッド数を上回る例は、図9(a)に示す場合(分割領域数が8でスレッド数が4)に限定されるものではなく、他の場合(例えば、分割領域数が10でスレッド数が4の場合、分割領域数が5でスレッド数が2の場合等)でも同様に、第2フローチャートに基づき処理を行える。
例えば、ダウンロード対象の分割領域数が6で、生成するスレッド数が4の場合、4つのスレッドの中の2つは、2回の要求情報を送信して、各要求情報に応じた異なる領域に含まれる2つのデータを受信する一方、4つのスレッドの中の残りの2つは、1回の要求情報を送信して、その要求情報に応じた1つのデータを受信することになる。このように、分割領域数とスレッド数の関係によって、複数の要求情報を送信するスレッドと、1回の要求情報を送信するスレッドが生じ、スレッド間で要求情報の送信回数(及びデータの受信回数)に違いが生じることがある。なお、分割領域数とスレッド数の関係によっては、同時的ダウロード処理の繰り返し数が、2回を超えるスレッドが生じることもある(分割領域数が10でスレッド数が4の場合など)。また、ダウンロード対象の分割領域数が8で、生成するスレッド数が4の場合、4つのスレッドのそれぞれは、2回の要求情報を送信することになる(図9(a)参照)。
そして、上述した図10に示す第2フローチャートにおけるダウンロードでも、それぞれの各スレッド14a〜14dの処理は独立して実行されるので、1回目の同時的ダウンロード処理の完了時期が同時期にならないこともあることから、S27の段階で2回目の要求情報を送信する時期は、それぞれのスレッド14a〜14dで、1回目のダウンロード処理の完了に伴い、随時、2回目の要求情報を送信するようにしてもよい。この場合、2回目の要求情報の送信段階(S27)へ進むための判断段階(S30)における全データ受信格納の内容は、それぞれのスレッド毎に判断することになる。
すなわち、それぞれのスレッド14a〜14dに対応する各格納領域の中に、データが格納されていない格納領域が残るか否かを判断し、データが格納されていない格納領域が残るときは(S30:NO)、S27へ行き、データが格納されていない格納領域が残らないときは(S30:YES)、そのスレッドにおけるダウンロード処理を終了する。具体的には、第1スレッド14aにおいて、その第1スレッド14aが対応するのは第1格納領域25a及び第5格納領域25eなので、S29の段階で、第1スレッド14aにおいて第1格納領域25aにデータ140aが格納されると(S29:YES)、次に、S30で、残りの第5格納領域25eにデータ140eが格納されているか否かを判断し、データ140eが格納されていなければ(S30:NO)、S27へ戻って、2回目の要求情報を送信することになり、データ140eが格納されると(S30:YES)、第1スレッド14aでのダウンロード処理が終了となる。
上記の処理は他のスレッドでも同様となり、第2スレッド14bでは、第2格納領域25bにデータ140bが格納されると(S29:YES)、次にS30で、残りの第6格納領域25fにデータ140fが格納されているかが判断され、データ140fが格納されていなければ(S30:NO)、S27へ戻って、2回目の要求情報を送信し、データ140fが格納されると(S30:YES)、第2スレッド14bでのダウンロード処理が終了となる。第3スレッド14cでも、第3格納領域25cにデータ140cが格納されると(S29:YES)、S30で、残りの第7格納領域25gにデータ140gが格納されているかが判断され、データ140gが格納されていなければ(S30:NO)、S27へ戻り、2回目の要求情報を送信し、データ140gが格納されると(S30:YES)、第3スレッド14cでのダウンロード処理が終了となる。
そして、第4スレッド14dでも、第4格納領域25dにデータ140dが格納されると(S29:YES)、S30で、残りの第8格納領域25hにデータ140hが格納されているかが判断され、データ140hが格納されていなければ(S30:NO)、S27へ戻って2回目の要求情報を送信し、データ140hが格納されていれば(S30:YES)、第4スレッド14cでのダウンロード処理が終了となる。このような処理では、各スレッド14a〜14dでのダウロード処理の終了時期に違いが生じるかもしれないが、他のスレッドの処理を待つ必要がないので各スレッド単位での処理時間の短縮化を図れる。
また、上述した説明では、第2フローチャートのS30の段階で、データの格納されていない格納領域が残るか否かを判断して、S27の2回目以降の要求情報の送信を行うようにしていたが、S30の段階の判断は、要求情報の送信回数をカウントしておき、必要回数の要求情報を送信したか否かで、S27の段階へ戻るか否かを決めるようにしてもよい。すなわち、図9のS24の段階でファイルの分割領域の特定により、ファイルの分割数が判明するので、スレッドごとに必要な要求情報の送信回数が判明することになる。そのため、S27の段階で、各スレッドで要求情報を送信すると、その送信回数をスレッドごとに記憶しておき、S30の段階では、記憶している要求情報の送信回数が、必要な送信回数に達しているかを判断し、達していなければ、S27へ戻り、達していれば、そのスレッドにおけるダウンロード処理を終了するようにしてもよい。
さらに、上述した処理では、図9(a)に示すように、ファイルの領域分割数がスレッド数(同時的処理可能数)を上回る場合、スレッドごとに要求情報を複数回、送信するようにしていたが、一回の要求情報の送信で図9(b)のタイムチャートに示す処理状況を指示できる場合は、要求情報の送信処理を複数回行わないで、基本的に図7に示す第1フローチャートの流れで、ダウンロード対象のファイルの分割領域数が、生成可能なスレッド上限数を上回る場合のダウンロード処理にも対応できるようになる。この場合、ダウンロード対象のファイルにおいて、異なる複数の領域に含まれるデータを要求する要求情報を送信するスレッドが生じることになる。
すなわち、図9(a)に示すようにファイル35の分割領域数が8で、スレッド数が4の場合を、図7の第1フローチャートの処理手順で進めるときは、S7の要求情報送信の段階で、第1スレッド14aを介して送信する要求情報は、一回目の同時的ダウンロードで第1領域35aに含まれるデータ140aを要求すると共に、二回目の同時的ダウンロードで第5領域35eに含まれるデータ140eを要求する指示を含み、以下、第2スレッド14bを介して送信する要求情報は、一回目の同時的ダウンロードで第2領域35bに含まれるデータ140bを呼び出すと共に、二回目の同時的ダウンロードで第6領域35fに含まれるデータ140fを呼び出す指示を含み、第3スレッド14cを介して送信する要求情報は、一回目の同時的ダウンロードで第3領域35cに含まれるデータ140cを呼び出すと共に、二回目の同時的ダウンロードで第7領域35gに含まれるデータ140gを呼び出す指示を含み、第4スレッド14dを介して送信する要求情報は、一回目の同時的ダウンロードで第4領域35dに含まれるデータ140dを呼び出すと共に、二回目の同時的ダウンロードで第8領域35hに含まれるデータ140hを呼び出す指示を含むことになる。
そして、セカンダリストレージサーバ20はS14の段階で、先ず、一回目の同時的ダウンロードによるデータ送信を行うことになり、第1スレッド14aで第1領域35aに含まれるデータ140aを送信し、第2スレッド14bで第2領域35bに含まれるデータ140bを送信し、第3スレッド14cで第3領域35cに含まれるデータ140cを送信し、第4スレッド14dで第4領域35dに含まれるデータ140dを送信する。
プライマリストレージサーバ10はS8の段階で、セカンダリストレージサーバ20から送信されてくるデータ140aを格納ファイル25の第1格納領域25aに格納し、以下、データ140bを第2格納領域25bに格納し、データ140cを第3格納領域25cに格納し、データ140dを第4格納領域25dに格納する。それから、S9の段階で、プライマリストレージサーバ10は、ダウンロード対象のファイル35の全データ容量が格納されたか否かを判断し、全てのデータが格納されていなければ(S9:NO)、引き続きS8の段階で、データの受信及び格納を行う。
セカンダリストレージサーバ20では、一回目の同時的ダウンロードが終了すれば、S7の段階で送られた要求情報の指示内容に基づき、S14の段階で、二回目の同時的ダウンロードとして、第1スレッド14aで第5領域35eに含まれるデータ140eを送信し、第2スレッド14bで第6領域35fに含まれるデータ140fを送信し、第3スレッド14cで第7領域35gに含まれるデータ140gを送信し、第4スレッド14dで第8領域35hに含まれるデータ140hを送信することになる。
プライマリストレージサーバ10は、二回目の同時的ダウンロードにおけるS8の段階で、送信されてくるデータ140eを格納ファイル25の第5格納領域25eに格納し、以下、データ140fを第6格納領域25fに格納し、データ140gを第7格納領域25gに格納し、データ140hを第8格納領域25hに格納し、それから、S9の段階で、ダウンロード対象のファイル35の全データ容量が格納されたか否かを判断し、二回目の同時的ダウンロードで格納ファイル25の空きの格納領域が無くなるので、全データ容量が格納されたと判断し(S9:YES)、ダウンロード処理が終了することになる。
なお、このように図7の第1フローチャートに従って、同時的ダウンロード処理を繰り返す場合でも、ファイル分割数とスレッド数(同時的処理可能数)との関係によっては、異なる複数の領域に含まれるデータを要求するスレッドと、単一の領域に含まれるデータを要求するスレッドとが生じることもある。例えば、ダウンロード対象の分割領域数が6で、生成するスレッド数が4の場合、4つのスレッドの中の2つは、異なる2つの領域に含まれる要求情報を送信する一方、4つのスレッドの中の残りの2つは、単一の領域に含まれる要求情報を送信するに留まる。このように、分割領域数とスレッド数の関係によって、送信する一つの要求情報で要求するデータの数にスレッド間で違いが生じることがある。
さらに、このように図7の第1フローチャートに従って、同時的ダウンロード処理を繰り返す場合でも、それぞれの各スレッド14a〜14dの処理は独立して実行されることから、1回目の同時的ダウンロード処理の完了時期が各スレッド間で同時期にならないこともあるので、このような場合は、同時的ダウンロード処理の完了に伴い、次のダウンロード処理を実行して、順次連続的にダウンロード処理を進行することが好適である。この場合は、セカンダリストレージサーバ20側が、受信した要求情報で指定された複数の領域に含まれるデータを順次、プライマリストレージサーバ10へ送信することになり、要求情報で指定されたある領域のデータの送信が完了すると、その要求情報で指定される次の領域のデータの送信を開始する。このようにスレッドごとに順次、ダウンロード処理を連続的に進行することで、各スレッド間でダウンロード処理の完了時期が同時期にならないこともあるが、全体としては処理負荷の軽減及び処理時間の短縮化を図れるメリットが生じる。
なお、上述した説明では、ファイルのダウンロードを、図1に示すプライマリストレージサーバ10及びセカンダリストレージサーバ20のサーバ装置間で行うようにしていたが、本発明の対象は、サーバ装置間のダウンロードに限定されるものではなく、例えば、図1におけるプライマリストレージサーバ10で記憶されるファイルを、ユーザ端末40にダウンロードする場合にも本発明を適用することが可能である。この場合、プライマリストレージサーバ10(サーバ装置に相当)及びユーザ端末40(通信装置に装置)で、本発明に係るダウンロードシステムを構成することになる。
図11は、ユーザ端末40の主要構成を示したブロック図であるユーザ端末40としては、プライマリストレージサーバ10と通信できる通信機能、及びファイルを扱う処理等が可能な通信端末装置を適用でき、具体的には、通信機能を具備したパーソナルコンピュータ、タブレット、スマートフォン等をユーザ端末40として利用できる。図11は、ユーザ端末40としてパーソナルコンピュータを用いた場合の主要構成を示しているが、ユーザ端末40としてタブレット、スマートフォン等を用いた場合でも基本的な構成は図11と同等になる。
ユーザ端末40は、全体的な制御及び各種処理を行うCPU40aに、各種デバイス等を内部接続線40hで接続したものになっており、各種デバイス等には、通信モジュール40b、RAM40c、ROM40d、入力インタフェース40e、出力インタフェース40f、及び記憶部40g等がある。
通信モジュール40bは、ネットワークとの接続モジュールに相当する通信デバイスであり、所要の通信規格に応じたものであり(例えばLANモジュール)、所要の通信機器(図示は省略。例えばルータ等が該当)を介してネットワークと接続することで、プライマリストレージサーバ10との通信を可能にしている。
RAM40cは、CPU40aの処理に伴う内容、ファイル等を一時的に記憶するものであり、ROM40dは、CPU40aの基本的な処理内容を規定したプログラム等を記憶するものである。入力インタフェース40eは、ユーザからの操作指示等を受け付けるキーボード40i、マウス等が接続されるものであり、ユーザから受け付けた操作指示等をCPU40aへ伝える。出力インタフェース40fは、ディスプレイ40jが接続されるものであり、CPU40aの処理に伴う内容をディスプレイ40jへ出力し、ユーザが操作内容及びユーザ端末40の処理内容等を視覚的に確認できるようにしている。
記憶部40gは、HDD(Hard Disc Drive)又はSSD(Solid State Drive)等により構成される記憶デバイスであり、基本プログラムP20、端末処理プログラムP21等のプログラムと、分割閾値f1及び分割サイズf2等を記憶する。基本プログラムP20は、ユーザ端末40をコンピュータとして機能させるためにCPU40aが行う基本的な処理を規定したものであり、この基本プログラムP20には、ファイル管理(ファイルのコピー、移動、変更等)を行うための機能、ウェブサイト等を閲覧するためのブラウザ機能等を含んでいるものとする。
端末処理プログラムP21は、図4に示す処理プログラムP2が規定する内容と同じ内容を規定したものである。この端末処理プログラムP21は、アプリケーションプログラムとして、通信によるダウンロードを通じて、ユーザ端末40にインストールする他に、記憶媒体(光ディスク等)を介して、ユーザ端末40にインストールすることが可能であり、CPU40aを、図5に示すエージェント12として機能させる制御処理をプログラミングした内容になっている。なお、この端末処理プログラムP21の規定により、CPU40aがエージェントの格納ファイル生成機能として生成する格納ファイル45は記憶部40gに記憶されることになる(図11参照)。また、記憶部40gに記憶される分割閾値f1及び分割サイズf2も、図4に示すプライマリストレージサーバ10に記憶されるものと同様になっている。
一方、ユーザ端末40とダウンロードシステムを構成する場合のプライマリストレージサーバ10は、ハード的な構成は図4に示すものと同様になるが、記憶部10gに記憶する中身は、図6のセカンダリストレージサーバ20と同様にサーバプログラムP5及びストレージプログラムP6を記憶すると共に、プライマリストレージ11には、ダウンロード対象のファイル(例えば、ファイル15)を記憶することになる。
上述した構成のユーザ端末40及びプライマリストレージサーバ10でダウンロードシステムを構成することにより、プライマリストレージサーバ10に記憶されるファイル(例えば、ファイル15)を、上述したダウンロードシステム1の場合と同様な処理により、ユーザ端末40へダウンロードできるようになる。なお、ユーザ端末40及びプライマリストレージサーバ10で構成されるダウンロードシステムにおいても、上述した各種変形例を同様に適用することが可能である。