(57)【特許請求の範囲】
【請求項１】
ディレクトリ名を指定したファイルの書き込み要求を受け付ける受付部と、
各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記受付部により受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む制御部と、
を備え、
前記制御部は、前記ファイルを前記記憶装置に書き込む際に、書込み指示を出力してから書込み完了の応答が入力されるまでの時間を計測し、計測した結果である前記ファイルの書き込み時間が所定時間を超えている場合、各ディレクトリに対応付けて書き込まれるファイル数に設けられる前記上限を減少させる、
ストレージ装置。
【請求項２】
前記制御部は、各ディレクトリに対応付けられるファイル数をカウントし、カウントしたファイル数が前記上限を超えた場合に、前記ディレクトリ名のディレクトリに対応付けてファイルを書き込むことを制限する、
請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、各ディレクトリに対応付けられるファイル数をカウントし、カウントしたファイル数が前記上限を超えた場合に、新たなディレクトリ名を決定し、決定した前記新たなディレクトリ名を外部装置に送信する、
請求項２に記載のストレージ装置。
【請求項４】
前記制御部は、前記受付部により前記新たなディレクトリ名を指定したファイルの書き込み要求を受け付けた場合に、前記新たなディレクトリ名に対応するディレクトリの管理情報をメモリに書き込み、前記新たなディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む、
請求項３に記載のストレージ装置。
【請求項５】
前記制御部は、前記新たなディレクトリ名を決定した場合に、決定した前記新たなディレクトリ名に対応するディレクトリの管理情報をメモリに書き込む、
請求項３に記載のストレージ装置。
【請求項６】
前記制御部は、前記新たなディレクトリ名を決定した場合に、ファイル数が前記上限を超えたディレクトリに対応付けてファイルを書き込むことなしに、前記新たなディレクトリ名のディレクトリに対応付けてファイルを前記記憶装置に書き込む、
請求項４または５に記載のストレージ装置。
【請求項７】
前記制御部は、
前記受付部により端末装置からのリクエストを受け付けた場合に、新たな書き込み要求に基づいて書き込まれるファイルに対応付け可能なカレントディレクトリのディレクトリ名を通知部に要求する要求部と、
前記要求部から供給された要求に対して、前記カレントディレクトリのディレクトリ名を前記要求部に通知する通知部と、を含む、
請求項１から６のうちいずれか１項に記載のストレージ装置。
【請求項８】
前記制御部は、
新たな書き込み要求に基づいて書き込まれるファイルに対応付け可能なカレントディレクトリが変更された場合に、変更されたカレントディレクトリのディレクトリ名を通知することを通知部に要求する要求部と、
前記カレントディレクトリを変更した場合に、前記カレントディレクトリのディレクトリ名を前記要求部に通知する通知部と、を含む、
請求項１から６のうちいずれか１項にストレージ装置。
【請求項９】
コンピュータが、
ディレクトリ名を指定したファイルの書き込み要求を受け付け、
各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、受け付けた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込み、
前記ファイルを前記記憶装置に書き込む際に、書込み指示を出力してから書込み完了の応答が入力されるまでの時間を計測し、計測した結果である前記ファイルの書き込み時間が所定時間を超えている場合、各ディレクトリに対応付けて書き込まれるファイル数に設けられる前記上限を減少させる、
ファイル書き込み方法。
【請求項１０】
コンピュータに、
ディレクトリ名を指定したファイルの書き込み要求を受け付けさせ、
各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、受け付けた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込ませ、
前記ファイルを前記記憶装置に書き込ませる際に、書込み指示を出力してから書込み完了の応答が入力されるまでの時間を計測し、計測した結果である前記ファイルの書き込み時間が所定時間を超えている場合、各ディレクトリに対応付けて書き込まれるファイル数に設けられる前記上限を減少させることを行わせる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ファイル書き込み方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、複数のファイルサーバにより分散してファイルを管理する技術が知られている（特許文献１参照）。この種の技術において、ファイルサーバには、予め複数のディレクトリが作成され、各ディレクトリに対応付けて複数のファイルが保存される場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１３９２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ファイルサーバに作成するディレクトリ数が少ない場合、各ディレクトリに対応付けて保存されるファイル数が膨大となるため、ディレクトリとファイルとの関係を表すディレクトリ情報が膨大となり、ファイルの書き込み性能が次第に劣化するという問題がある。一方、ファイルサーバに作成するディレクトリ数を多くした場合、ファイルが多くのディレクトリに分散されるため、ファイルの書き込み位置が過度に分散する場合があった。
【０００５】
本発明は、このような事情を考慮してなされたものであり、ファイルの処理性能を向上させることができるストレージ装置、ファイル書き込み方法、およびプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、ディレクトリ名を指定したファイルの書き込み要求を受け付ける受付部と、各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記受付部により受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む制御部とを備えるストレージ装置である。
【発明の効果】
【０００７】
本発明の一態様によれば、ファイルの処理性能を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係るストレージ装置を含むストレージシステム１の一例を示す図である。
【図２】フロントサーバ１００の一例を示す図である。
【図３】ディレクトリ情報１３６Ａの一例を示す図である。
【図４】メタデータ３１０の一例を示す図である。
【図５】ストレージサーバ２００の一例を示す図である。
【図６】論物変換テーブル２４２Ａの一例を示す図である。
【図７】カウンタテーブル２４４Ａの一例を示す図である。
【図８】ハードディスク装置２１０Ａの一例を示す図である。
【図９】ユーザ端末４００、フロントサーバ１００、およびストレージサーバ２００による処理の流れの一例を示す図である。
【図１０】フロントサーバ１００における処理の流れの一例を示す図である。
【図１１】ストレージサーバ２００における第１書き込み処理の流れの一例を示す図である。
【図１２】各ディレクトリとファイルとの関係を示す図である。
【図１３】書き込み要求を受け付けた時刻と、ディレクトリごとの書き込み処理との関係を示す図である。
【図１４】ストレージサーバ２００における第２書き込み処理の流れの一例を示す図である。
【図１５】ユーザ端末４００、フロントサーバ１００、およびストレージサーバ２００による処理の流れの一例を示す図である。
【図１６】ストレージサーバ２００における第３書き込み処理の流れの一例を示す図である。
【図１７】カレントディレクトリに対応付けて書き込んだファイル数と、秒単位の書き込みリクエストの処理数との関係を示す図である。
【図１８】比較例１のディスクオフセット、シーク回数、およびスループットを表す図である。
【図１９】実施例のディスクオフセット、シーク回数、およびスループットを表す図である。
【図２０】磁気ディスク２２１上に書き込まれたファイルの物理位置の時間的な変化を示す図である。
【図２１】ユーザ端末４００、フロントサーバ１００、ストレージサーバ２００、およびメタデータデータベースサーバ３００のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照し、本発明のストレージ装置、ファイル書き込み方法、およびプログラムの実施形態について説明する。
【００１０】
＜第１実施形態＞
［ストレージシステム１の全体構成］
図１は、第１実施形態に係るストレージシステム１の一例を示す図である。ストレージシステム１は、例えば、複数のユーザ端末からのアップロード要求に従ってファイルをストレージサーバに蓄積すると共に、ユーザ端末からの閲覧要求またはダウンロード要求に従って、蓄積しているファイルをユーザ端末に閲覧またはダウンロードさせるストレージサービスを提供するものである。
【００１１】
ストレージシステム１は、例えば、フロントサーバ１００と、ストレージサーバ２００と、メタデータデータベースサーバ３００と、ユーザ端末４００−１、・・・４００−Ｍ（Ｍは２以上の自然数）とを含む。なお、ストレージシステム１において、複数のユーザ端末４００とフロントサーバ１００とがネットワークＮＷを介して情報を通信する。ネットワークＮＷは、例えば、無線基地局、Ｗｉ−Ｆｉアクセスポイント、通信回線、プロバイダ、インターネットなどを含む。なお、以下の説明において、ユーザ端末を他のユーザ端末と区別しない場合には「ユーザ端末４００」と記載する。
【００１２】
また、ストレージシステム１において、フロントサーバ１００とストレージサーバ２００、およびフロントサーバ１００とメタデータデータベースサーバ３００とは、ネットワークＮＷとは異なるネットワークを介して通信接続されている。なお、図１に示したフロントサーバ１００、ストレージサーバ２００、およびメタデータデータベースサーバ３００は、単一のサーバ装置により実現してよく、それぞれ複数のサーバ装置を含んでいてよい。
【００１３】
［フロントサーバ１００の構成］
図２は、フロントサーバ１００の一例を示す図である。フロントサーバ１００は、例えば、ユーザ側通信部１１０と、サーバ側通信部１２０と、フロント制御部１３０と、を含む。
【００１４】
ユーザ側通信部１１０およびサーバ側通信部１２０は、例えばＮＩＣ（Network Interface Card）を含む。ユーザ側通信部１１０は、ネットワークＮＷを介してユーザの使用するユーザ端末４００との間で通信を行う。サーバ側通信部１２０は、他のネットワーク介してストレージサーバ２００およびメタデータデータベースサーバ３００との間で通信を行う。
【００１５】
フロント制御部１３０は、例えば、アプリケーション処理部１３２と、ファイル管理部１３４とを含む。アプリケーション処理部１３２は、例えばＣＰＵ（Central Processing Unit）などのプロセッサがプログラムメモリに格納されたアプリケーションプログラムを実行することにより実現される。ファイル管理部１３４は、例えばＣＰＵなどのプロセッサがプログラムメモリに格納されたＯＳ（Operating System）プログラムを実行することにより実現される。アプリケーション処理部１３２およびファイル管理部１３４を含む機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＦＰＧＡ（Field-Programmable Gate Array）などのハードウェアにより実現されてもよい。
【００１６】
アプリケーション処理部１３２は、ユーザ側通信部１１０を用いてユーザ端末４００から送信されたファイルのアップロード要求を受け付ける（受付部）。ファイルのアップロード要求は、ディレクトリを指定したファイルの書き込み要求である。アプリケーション処理部１３２は、ファイルのアップロード要求に応答した書き込み要求をストレージサーバ２００に送信する。
【００１７】
ファイル管理部１３４は、アップロード要求によりストレージサーバ２００に書き込まれているファイルに関連するディレクトリ情報をキャッシュメモリ１３６に書き込む。ディレクトリ情報は、ディレクトリを管理する管理情報である。図３は、ディレクトリ情報１３６Ａの一例を示す図である。ディレクトリ情報は、例えば、各ディレクトリ名と、所定の上限数の範囲内でディレクトリ名に対応付けられるファイル名とを対応付けている。ディレクトリ名は、ファイルのアップロード要求により指定されたディレクトリ名である。ファイル名は、アップロード要求により書き込まれるファイルのファイル名である。なお、ディレクトリ名には、追加時刻などその他の情報も対応付けられてよい。また、ファイル名には、ファイル管理部１３４においてファイル名に対応したファイルを特定するinode番号が対応付けられてよいが、これに限定されず、アップロード時刻などその他の情報も対応付けられてよい。
【００１８】
また、ファイル管理部１３４は、ファイルがストレージサーバ２００に書き込まれた場合に、メタデータデータベースサーバ３００にメタデータを書き込む。図４は、メタデータ３１０の一例を示す図である。メタデータ３１０には、例えば、グループｉｄと、ＨＤＤｉｄと、ディレクトリ名と、ファイル名と、ＬＢＡ（Logical Block Address）とが含まれている。グループｉｄは、ファイルストレージ部２１０全体の記憶容量を所定の記憶容量に区分した一つのグループを特定する識別情報である。各グループは、一又は複数のハードディスク装置２１０Ａを含む。各グループは、他のグループと並行してファイルが書き込まれる。なお、「メモリ」の一例は、キャッシュメモリ１３６、またはメタデータデータベースサーバ３００である。キャッシュメモリ１３６に代えて外部メモリを用いてもよい。
【００１９】
［メタデータデータベースサーバ３００の構成］
ストレージサーバ２００に先だってメタデータデータベースサーバ３００について説明する。メタデータデータベースサーバ３００は、例えば、通信部とメタデータ３１０を記憶する記憶装置とを含む。メタデータデータベースサーバ３００は、通信部を用いてメタデータ３１０を受信した場合に、記憶部にメタデータ３１０を書き込む。メタデータデータベースサーバ３００は、フロントサーバ１００の要求に従って、メタデータ３１０を読み出して、読み出したメタデータ３１０をフロントサーバ１００に送信する。
【００２０】
［ストレージサーバ２００の構成］
図５は、ストレージサーバ２００の一例を示す図である。ストレージサーバ２００は、例えば、ファイルストレージ部２１０−１、・・・２１０−Ｎ（Ｎは２以上の自然数）と、サーバ側通信部２２０と、ストレージ制御部２３０と、情報記憶部２４０とを含む。なお、以下の説明において、ファイルストレージ部を他のファイルストレージ部と区別しない場合には「ファイルストレージ部２１０」と記載する。
【００２１】
各ファイルストレージ部２１０は、一又は複数のハードディスク装置２１０Ａを含む。ハードディスク装置２１０Ａは、ファイルの書き込み、読み出し、および削除を実行する。
【００２２】
ファイルストレージ部２１０は、ストレージ制御部２３０からライトコマンドが供給された場合、ライトコマンドに含まれるファイルをハードディスク装置２１０Ａに書き込む。ファイルストレージ部２１０は、ストレージ制御部２３０からリードコマンドが供給された場合、リードコマンドにより指定されたファイルをハードディスク装置２１０Ａから読み出し、読み出したファイルをストレージ制御部２３０に出力する。ファイルストレージ部２１０は、ストレージ制御部２３０から削除コマンドが供給された場合、リードコマンドにより指定されたファイルをハードディスク装置２１０Ａから削除する。
【００２３】
サーバ側通信部２２０は、例えばＮＩＣを含む。サーバ側通信部２２０は、ネットワークＮＷとは他のネットワーク介してストレージサーバ２００との間で通信を行う。
【００２４】
ストレージ制御部２３０は、例えば、記憶制御部２３２と、ファイルカウンタ部２３４とを含む。記憶制御部２３２およびファイルカウンタ部２３４は、例えばＣＰＵなどのプロセッサがプログラムメモリに格納されたサーバプログラムを実行することにより実現される。記憶制御部２３２およびファイルカウンタ部２３４を含む機能部のうち一部または全部は、ＬＳＩ、ＡＳＩＣ、またはＦＰＧＡなどのハードウェアにより実現されてもよい。
【００２５】
情報記憶部２４０は、例えば、論物変換テーブル記憶部２４２と、ファイル数記憶部２４４とを含む。情報記憶部２４０は、ＨＤＤ（Hard Disc Drive）、フラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）、ＲＯＭ（Read Only Memory）、またはＲＡＭ（Random Access Memory）等により実現される。情報記憶部２４０には、サーバプログラム等の各種プログラム、各種の処理結果などが記憶される。
【００２６】
記憶制御部２３２は、サーバ側通信部２２０を用いてフロントサーバ１００から受信した書き込み要求に応答して、ファイルをハードディスク装置２１０Ａに書き込む。記憶制御部２３２は、書き込み要求を受信した場合に、書き込み要求により指定されたディレクトリに対応付けてファイルをハードディスク装置２１０Ａに書き込む。このとき、記憶制御部２３２は、論物変換テーブル記憶部２４２に記憶された論物変換テーブル２４２Ａを参照して、書き込み要求に含まれるＬＢＡをＰＢＡに変換し、変換したＰＢＡに対応する位置にファイルを書き込む。記憶制御部２３２は、例えば、複数回ファイルの書き込みを行う場合、ファイルのＬＢＡを連番に設定し、ＬＢＡが近いファイルをハードディスク装置２１０Ａにおける近くのＰＢＡに書き込む。図６は、論物変換テーブル２４２Ａの一例を示す図である。論物変換テーブル記憶部２４２におけるデータ有無は、例えば、ＰＢＡにより特定される物理ブロック内にデータが書き込まれているか否かを示すデータ有無フラグである。
【００２７】
ファイルカウンタ部２３４は、各ディレクトリに対応付けられて書き込まれたファイル数をカウントする。ファイルカウンタ部２３４は、カウントした結果をカウンタテーブル２４４Ａに記憶する。カウンタテーブル２４４Ａは、ディレクトリに対応付けて書き込まれたファイル数を管理する管理情報である。図７は、カウンタテーブル２４４Ａの一例を示す図である。カウンタテーブル２４４Ａにおけるディレクトリ名には、例えば、カウントした結果としてのファイル数と、上限値とが対応付けられている。
【００２８】
（ハードディスク装置２１０Ａの構成）
図８は、ハードディスク装置２１０Ａの一例を示す図である。ハードディスク装置２１０Ａは、例えば、磁気ディスク２１１と、ヘッドスタックアッセンブリ（Head Stack Assembly；ＨＳＡ）２１２と、駆動回路２２３と、ＨＤＤコントローラ２２４と、インターフェース２２５とを含む。
【００２９】
磁気ディスク２１１は、アルミニウムやガラス等の基板の表裏面に磁気記録層が形成された円盤（プラッタ）である。磁気ディスク２１１は、単一の円盤により構成されてもよいし、円盤の厚み方向に対して複数枚の円盤が積み重ねられて構成されてもよい。
【００３０】
ヘッドスタックアッセンブリ２１２は、記録再生ヘッド２１２ａと、ヘッドアンプＩＣ２１２ｂと、ボイスコイルモータ２１２ｃと、スピンドルモータ２１２ｄとを含む。
【００３１】
記録再生ヘッド２１２ａは、ヘッドアーム上に搭載され、ボイスコイルモータ２１２ｃからの駆動力によって磁気ディスク２１１上をシークしながら、磁気ディスク２１１に対して相対的に移動する。記録再生ヘッド２１２ａは、記録および再生兼用の磁性体コアを用いた薄膜ヘッドであってよいが、これに限定されない。
【００３２】
記録再生ヘッド２１２ａは、ファイルを書き込む場合、ヘッドアンプＩＣ２１２ｂにより供給された電気信号に基づく磁界を発生させることで、磁気ディスク２２１の磁気記録層の磁化方向を変化させる。これによって、記録再生ヘッド２１２ａは、ファイルを磁気ディスク２２１に書き込む。記録再生ヘッド２１２ａは、ファイルを読み出す場合、磁気ディスク２１１上を移動しながら、磁気ディスク２１１の磁気記録層の磁化方向に対応した電気信号を生成する。記録再生ヘッド２１２ａは、生成した電気信号を、ヘッドアンプＩＣ２１２ｂを介して駆動回路２２３に供給する。
【００３３】
ヘッドアンプＩＣ２１２ｂは、記録再生ヘッド２１２ａにより供給された電気信号の信号強度を増幅する。また、ヘッドアンプＩＣ２１２ｂは、駆動回路２２３により供給されたユーザデータを電気信号に変換し、記録再生ヘッド２１２ａに供給する。
【００３４】
ボイスコイルモータ２１２ｃは、駆動回路２２３により供給された駆動電流に応じて、ヘッドスタックアッセンブリ２２２を駆動する。これにより、ボイスコイルモータ２１２ｃは、記録再生ヘッド２１２ａを、磁気ディスク２１１の径方向に沿って（あるいは径方向に対して角度を有する斜めの方向に沿って）外側または内側に移動させ、トラック間を移動させる。径方向とは、磁気ディスクの中心を通る方向である。スピンドルモータ２１２ｄは、駆動回路２２３により供給された駆動電流に応じて、磁気ディスク２１１を回転させる。スピンドルモータ２１２ｄは、例えば、ＤＣブラシレスモータである。
【００３５】
駆動回路２２３は、ヘッドアンプＩＣとの間で信号を授受すると共に、ボイスコイルモータ２１２ｃおよびスピンドルモータ２１２ｄを駆動する。これにより、駆動回路２２３は、コマンドに含まれるＰＢＡに対応する位置に記録再生ヘッド２１２ａをシークさせてファイルを書き込む。
【００３６】
ＨＤＤコントローラ２２４は、インターフェース２２５を用いて、フロントサーバ１００から送信されたリードコマンド、ライトコマンド、および削除コマンドを受信する。ＨＤＤコントローラ２２４は、各コマンドに応じて、磁気ディスク２１１に情報を書き込んだり、磁気ディスク２１１に書き込まれた情報を読み出したりする。
【００３７】
［ストレージシステム１の全体処理］
以下、フロントサーバ１００がディレクトリ名を指定したファイルの書き込み要求を受け付けた場合に、ファイルをハードディスク装置２１０Ａに書き込む処理について説明する。図９は、ユーザ端末４００、フロントサーバ１００、およびストレージサーバ２００による処理の流れの一例を示す図である。
【００３８】
ユーザ端末４００は、ファイルをアップロードする際に、ユーザの操作に従ってファイルをアップロードするアプリケーションプログラムに対してＡＰＩ（Application Program Interface）コールを供給する。これにより、ユーザ端末４００のアプリケーションプログラムは、フロントサーバ１００に、アプリケーション処理部１３２を呼び出す処理リクエストＳ１を送信する。なお、処理リクエストＳ１は、ユーザ端末４００におけるアプリケーションまたはブラウザなどのＵＡ（User Agent）により生成されたＨＴＴＰ（Hypertext Transfer Protocol）リクエストに埋め込まれた情報である。
【００３９】
フロントサーバ１００は、処理リクエストＳ１を受信した場合に、カレントディレクトリのディレクトリ名を要求するディレクトリ名リクエストＳ２をストレージサーバ２００に送信する。ストレージサーバ２００は、ディレクトリ名リクエストＳ２を受信した場合、カレントディレクトリに対応するファイル数をカウントアップする（ステップＳ１０）。ストレージサーバ２００は、カレントディレクトリのディレクトリ名Ｓ３をフロントサーバ１００に送信する。フロントサーバ１００は、カレントディレクトリのディレクトリ名Ｓ３を受信した場合、ディレクトリ名Ｓ３をファイル書き込み先のディレクトリ名Ｓ４としてユーザ端末４００に送信する。
【００４０】
ユーザ端末４００は、ディレクトリ名Ｓ４を指定したアップロード要求Ｓ５を含むＨＴＴＰリクエストをフロントサーバ１００に送信する。フロントサーバ１００は、アップロード要求Ｓ５を受信した場合、ストレージサーバ２００に、ディレクトリ名を指定したファイルの書き込み要求Ｓ６を送信する。
【００４１】
ストレージサーバ２００は、フロントサーバ１００により送信された書き込み要求Ｓ６を受信した場合、受信した書き込み要求Ｓ６により指定されたディレクトリ名のディレクトリに対応付けてファイルをハードディスク装置２１０Ａに書き込む（ステップＳ１１）。ストレージサーバ２００は、ファイルの書き込みが完了した場合、レスポンスＳ７をフロントサーバ１００に送信する。
【００４２】
フロントサーバ１００は、レスポンスＳ７を受信した場合、ハードディスク装置２１０Ａに書き込まれたファイルのファイル名に関連するメタデータ３１０を更新する（ステップＳ２１）。次にフロントサーバ１００は、ファイルのアップロードが完了したことを通知する完了通知Ｓ８をユーザ端末４００に送信する。
【００４３】
［フロントサーバ１００の動作］
図１０は、フロントサーバ１００における処理の流れの一例を示す図である。図１０に示した処理は、アプリケーション処理部１３２により所定期間毎に繰り返して実行される。
【００４４】
まず、アプリケーション処理部１３２は、処理リクエストＳ１を受け付けたか否かを判定する（ステップＳ１００）。アプリケーション処理部１３２は、処理リクエストＳ１を受け付けた場合、ストレージサーバ２００にディレクトリ名リクエストＳ２を送信する（ステップＳ１０２）。
【００４５】
次にアプリケーション処理部１３２は、ストレージサーバ２００からディレクトリ名Ｓ３を受信したか否かを判定する（ステップＳ１０４）。アプリケーション処理部１３２は、ディレクトリ名Ｓ３を受信した場合、ユーザ端末４００にディレクトリ名Ｓ４を送信する（ステップＳ１０６）。
【００４６】
次にアプリケーション処理部１３２は、ユーザ端末４００からディレクトリ名Ｓ４を指定したアップロード要求Ｓ５を受信したか否かを判定する（ステップＳ１１０）。アプリケーション処理部１３２は、アップロード要求Ｓ５を受信した場合、ディレクトリ名Ｓ４を含む書き込み要求Ｓ６をストレージサーバ２００に送信する（ステップＳ１１２）。このとき、アプリケーション処理部１３２は、書き込み対象のファイルのファイル名をディレクトリ情報１３６Ａにキャッシュする。
【００４７】
次に、アプリケーション処理部１３２は、ストレージサーバ２００からレスポンスＳ７を受信したか否かを判定する（ステップＳ１１４）。アプリケーション処理部１３２は、レスポンスＳ７を受信した場合、ディレクトリ情報１３６Ａおよびメタデータ３１０を更新する（ステップＳ１１６）。このとき、アプリケーション処理部１３２は、ハードディスク装置２１０Ａに書き込まれたファイルのファイル名を、指定されたディレクトリ名に対応付けてディレクトリ情報１３６Ａに追加する。また、アプリケーション処理部１３２は、ハードディスク装置２１０Ａに書き込まれたファイルのファイル名などの情報をメタデータデータベースサーバ３００に送信する。次に、アプリケーション処理部１３２は、完了通知Ｓ８をユーザ端末４００に送信する（ステップＳ１１８）。
【００４８】
なお、処理リクエストを受信しない場合、およびアップロード要求を受信しない場合、フロントサーバ１００は、本フローチャートの処理を終了する。
【００４９】
また、フロントサーバ１００は、ストレージサーバ２００により通知されたディレクトリ名Ｓ３をユーザ端末４００に送信してよいが、これに限定されず、ディレクトリ名Ｓ３をフロントサーバ１００のＡＰＩ内で処理をするのみであってよい。フロントサーバ１００は、ストレージサーバ２００からディレクトリ名Ｓ３を受信した場合、ディレクトリ名Ｓ３をユーザ端末４００に送信することなしに、メモリに記憶する。フロントサーバ１００は、ユーザ端末４００からアップロード要求Ｓ５を受信した場合、記憶しておいたディレクトリ名Ｓ３を読み出し、読み出したディレクトリ名Ｓ３および書き込み要求Ｓ６をストレージサーバ２００に送信する。これにより、フロントサーバ１００とユーザ端末４００との間の通信回数を削減することができる。
【００５０】
［ストレージサーバ２００の動作］
図１１は、ストレージサーバ２００における第１書き込み処理の流れの一例を示す図である。図１１に示した処理は、ストレージ制御部２３０により所定期間毎に繰り返して実行される。
【００５１】
まず、記憶制御部２３２は、ディレクトリ名リクエストＳ２を受け付けたか否かを判定する（ステップＳ２００）。ファイルカウンタ部２３４は、ディレクトリ名リクエストＳ２を受け付けた場合、カレントディレクトリのファイル数をカウントアップする（ステップＳ２０２）。
【００５２】
次に記憶制御部２３２は、ファイルカウンタ部２３４によりカウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する（ステップＳ２０４）。記憶制御部２３２は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ１００に送信する（ステップＳ２０８）。記憶制御部２３２は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する（ステップＳ２０６）。記憶制御部２３２は、決定した新たなカレントディレクトリのディレクトリ名をフロントサーバ１００に返信する（ステップＳ２０８）。
【００５３】
次に、記憶制御部２３２は、フロントサーバ１００から書き込み要求Ｓ６を受信したか否かを判定する（ステップＳ２１０）。記憶制御部２３２は、書き込み要求Ｓ６を受信した場合、指定されたディレクトリ名のディレクトリが存在しているか否かを判定する（ステップＳ２１２）。記憶制御部２３２は、指定されたディレクトリ名のディレクトリがカウンタテーブル２４４Ａに存在している場合、当該ディレクトリに対応付けてファイルを書き込む（ステップＳ２１６）。
【００５４】
記憶制御部２３２は、指定されたディレクトリ名のディレクトリがカウンタテーブル２４４Ａに存在しない場合、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル２４４Ａに書き込むことで、新たなディレクトリ名のディレクトリを追加する（ステップＳ２１４）。記憶制御部２３２は、追加したディレクトリに対応付けてファイルを書き込む（ステップＳ２１６）。
【００５５】
なお、ディレクトリ名リクエストを受信していない場合、および書き込み要求を受信しない場合、ストレージサーバ２００は、本フローチャートの処理を終了する。
【００５６】
［書き込み処理におけるディレクトリとファイルとの関係］
以下、上述したストレージサーバ２００において、各ディレクトリに対応付けてファイルを書き込む様子について説明する。図１２は、各ディレクトリとファイルとの関係を示す図である。
【００５７】
図１２を参照した説明において、ファイル数の上限としての上限値は「１０００」であるものとする。記憶制御部２３２は、図１２（ａ）に示すように、グループｉｄが「００１」に対してディレクトリ名が「００１」のディレクトリの情報をカウンタテーブル２４４Ａに追加し、９９０個のファイルの書き込み要求をフロントサーバ１００から受信するものとする。この場合、記憶制御部２３２は、９９０個のファイルを１つのカレントディレクトリに対応付けて連続的に書き込む。
【００５８】
記憶制御部２３２は、ディレクトリ名が「００１」のディレクトリに対応付けて１０００個のファイルを書き込んだ場合において、１００１個目のファイルを書き込む場合、ディレクトリ名が「００２」の新たなディレクトリを追加する。記憶制御部２３２は、追加した新たなディレクトリとしてのカレントディレクトリに対応付けて１００１個目のファイルを書き込む。すなわち、記憶制御部２３２は、新たなディレクトリを追加した場合に、ファイル数が上限値を超えたディレクトリに対応付けてファイルを書き込むことなしに、新たなディレクトリに対応付けてファイルを書き込む。このような動作は、各ディレクトリに対応付けて書き込まれたファイル数をカウントし、カウントしたファイル数が上限値を超えた場合に、ディレクトリに対応付けてファイルを書き込むことを制限する、と記載することもできる。
【００５９】
［ファイルの書き込み要求と書き込み処理の遷移状態との関係］
図１３は、書き込み要求を受け付けた時刻と、ディレクトリごとの書き込み処理との関係を示す図である。記憶制御部２３２は、ディレクトリ名が「００１」のディレクトリｄｉｒ００１に対応付けて書き込んだファイル数が上限値以下である場合、ディレクトリｄｉｒ００１に対応したファイルの書き込み処理を行う。ディレクトリｄｉｒ００１に対応したファイルの書き込み処理は、ディレクトリｄｉｒ００１以外のディレクトリに対応付けて書き込むことなしに、ディレクトリｄｉｒ００１にのみ対応付けてファイルを書き込む処理である。記憶制御部２３２は、ディレクトリｄｉｒ００１に対応したファイルの書き込み処理を実行している期間において時刻ｔにファイル（file(t)）の書き込み要求を受信した場合には当該ファイルをディレクトリｄｉｒ００１に対応付けて書き込み、時刻ｔ＋Ｔ１にファイル（file(t+T1)）の書き込み要求を受信した場合には当該ファイルをディレクトリｄｉｒ００１に対応付けて書き込む。
【００６０】
記憶制御部２３２は、ファイル（file(t+T1)）をディレクトリｄｉｒ００１に対応付けて書き込むことでディレクトリｄｉｒ００１に書き込んだファイル数が上限値を超えた場合、ディレクトリｄｉｒ００２に対応したファイルの書き込み処理に遷移する。ディレクトリｄｉｒ００２に対応したファイルの書き込み処理は、ディレクトリｄｉｒ００２以外のディレクトリに対応付けてファイルを書き込むことなしに、ディレクトリｄｉｒ００２にのみ対応付けてファイルを書き込む処理である。これにより、記憶制御部２３２は、ディレクトリｄｉｒ００２に対応したファイルの書き込み処理を実行している期間において時刻ｔ＋Ｔ２にファイル（file(t+T2)）の書き込み要求を受信した場合には当該ファイルをディレクトリｄｉｒ００２に対応付けて書き込む。
【００６１】
ストレージサーバ２００は、図１１に示す処理に代えて、以下の処理を行ってもよい。図１４は、ストレージサーバ２００における書き込み処理の流れの他の一例を示す図である。図１４に示した書き込み処理は、ストレージ制御部２３０により所定期間毎に繰り返して実行される。
【００６２】
まず、記憶制御部２３２は、ディレクトリ名リクエストＳ２を受け付けたか否かを判定する（ステップＳ３００）。ファイルカウンタ部２３４は、ディレクトリ名リクエストＳ２を受け付けた場合、カレントディレクトリのファイル数をカウントアップする（ステップＳ３０２）。
【００６３】
次に記憶制御部２３２は、ファイルカウンタ部２３４によりカウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する（ステップＳ３０４）。記憶制御部２３２は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ１００に送信する（ステップＳ３１０）。
【００６４】
記憶制御部２３２は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する（ステップＳ３０６）。次に、記憶制御部２３２は、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル２４４Ａに書き込むことで、ディレクトリを追加する（ステップＳ３０８）。次に、記憶制御部２３２は、追加したカレントディレクトリのディレクトリ名をフロントサーバ１００に送信する（ステップＳ３１０）。
【００６５】
次に、記憶制御部２３２は、フロントサーバ１００から書き込み要求Ｓ６を受信したか否かを判定する（ステップＳ３１２）。記憶制御部２３２は、書き込み要求Ｓ６を受信した場合、追加したディレクトリにファイルを書き込む（ステップＳ３１４）。
【００６６】
なお、ディレクトリ名リクエストを受信していない場合、および書き込み要求を受信しない場合、ストレージサーバ２００は、本フローチャートの処理を終了する。以上が、第２書き込み処理の説明である。
【００６７】
ストレージサーバ２００は、以上の動作により、各ディレクトリに対応して書き込まれるファイル数に設けられる上限の範囲内で、ファイルをハードディスク装置２１０Ａに書き込む。なお、フロントサーバ１００およびストレージサーバ２００は、図１０と、図１１または図１４とに示した処理を行うことで、ストレージ装置として機能する。
【００６８】
［第１実施形態の効果］
以上説明した第１実施形態のストレージシステム１によれば、各ディレクトリに対応してハードディスク装置２１０Ａに書き込まれるファイル数に設けられる上限の範囲内で、フロントサーバ１００により受け付けられた書き込み要求に応答して、指定されたディレクトリ名に対応付けてファイルを書き込むので、ディレクトリに対応付けられるファイル数を制限することができる。これにより、ストレージシステム１によれば、ディレクトリ情報１３６Ａが肥大化することを抑制することができる。この結果、ストレージシステム１によれば、ディレクトリ名をシークする時間を抑制することができることで、ファイルの書き込み時間を短縮することができる。
【００６９】
また、第１実施形態のストレージシステム１によれば、ディレクトリに対応付けられるファイル数が上限値に達するまで１つのディレクトリに連続的にファイルを書き込むので、連続的に書き込むファイルを複数のディレクトリに分散させることがない。連続的に書き込まれたファイルは、略同時期に書き込まれたファイルとも言うことができる。これにより、ストレージシステム１によれば、略同時期に書き込まれるファイルにおける磁気ディスク２２１上の位置を近くに配置することができる。この結果、ストレージシステム１によれば、略同時期に書き込まれた複数のファイルを読み出す際のリード時間を短縮することができる。
【００７０】
＜第２実施形態＞
以下、第２実施形態について説明する。第２実施形態のストレージサーバ２００は、カレントディレクトリのディレクトリ名に書き込んだファイル数が上限値を超えた場合に、ディレクトリ名をフロントサーバ１００にプッシュ通知する点で、第１実施形態のストレージシステム１とは異なる。以下、この点を中心に説明する。
【００７１】
［第２実施形態の全体処理］
図１５は、ユーザ端末４００、フロントサーバ１００、およびストレージサーバ２００による処理の流れの一例を示す図である。
【００７２】
まず、フロントサーバ１００は、通知リクエストＳ２０をストレージサーバ２００に送信する。通知リクエストＳ２０は、ストレージサーバ２００におけるカレントディレクトリを新たに設定したタイミングでカレントディレクトリのディレクトリ名をフロントサーバ１００に通知するメッセージをプッシュ通知することを要求するメッセージである。フロントサーバ１００は、例えば、フロントサーバ１００の電源が投入してアプリケーションプログラムの起動が完了したタイミング、またはフロントサーバ１００が起動している最中における定期的に、通知リクエストＳ２０をストレージサーバ２００に送信する。通知リクエストＳ２０は、ディレクトリを新たに追加したタイミングでプッシュ通知することに限定されず、図１４に示したように新たなディレクトリ名を決定した後に新たなディレクトリを追加する場合において、新たなディレクトリを追加したタイミングであってよい。
【００７３】
フロントサーバ１００は、処理リクエストＳ２１を受信した場合に、既にストレージサーバ２００からプッシュ通知されているカレントディレクトリのディレクトリ名Ｓ２２をユーザ端末４００に送信する。フロントサーバ１００は、アップロード要求Ｓ２３を受信した場合、ストレージサーバ２００に、ディレクトリ名を指定したファイルの書き込み要求Ｓ２４を送信する。
【００７４】
ストレージサーバ２００は、フロントサーバ１００により送信された書き込み要求Ｓ２４を受信した場合、受信した書き込み要求Ｓ２４により指定されたディレクトリ名に対応付けてファイルをハードディスク装置２１０Ａに書き込む（ステップＳ３０）。ストレージサーバ２００は、ファイルの書き込みが完了した場合、レスポンスＳ２５をフロントサーバ１００に送信する。これにより、ストレージサーバ２００は、フロントサーバ１００からユーザ端末４００に完了通知Ｓ２６を送信させる。
【００７５】
次にストレージサーバ２００は、カレントディレクトリに対応するファイル数をカウントアップする（ステップＳ３１）。ストレージサーバ２００は、ファイルの書き込みを実行する度に、カレントディレクトリのディレクトリ名に対するファイル数が上限値を超えたか否かを判定する。ストレージサーバ２００は、カレントディレクトリのディレクトリ名に対するファイル数が上限値以下である場合、プッシュ通知を実行しない（ステップＳ３２）。ストレージサーバ２００は、カレントディレクトリのディレクトリ名に対するファイル数が上限値を超えた場合に、新たなカレントディレクトリのディレクトリ名を決定する。ストレージサーバ２００は、決定した新たなカレントディレクトリのディレクトリ名Ｓ２７をフロントサーバ１００にプッシュ通知する（ステップＳ３３）。
【００７６】
なお、フロントサーバ１００は、ディレクトリ名Ｓ２７を受信した場合に、通知リクエストをストレージサーバ２００に送信してよい。これにより、フロントサーバ１００は、以降に追加されるディレクトリのディレクトリ名をストレージサーバ２００にプッシュ通知させることができる。
【００７７】
なお、フロントサーバ１００は、ストレージサーバ２００により通知されたディレクトリ名Ｓ３をユーザ端末４００に送信してよいが、これに限定されず、ディレクトリ名Ｓ３をフロントサーバ１００のＡＰＩ内で処理をするのみであってよい。フロントサーバ１００は、ストレージサーバ２００からディレクトリ名Ｓ３を受信した場合、ディレクトリ名Ｓ３をユーザ端末４００に送信することなしに、メモリに記憶する。フロントサーバ１００は、ユーザ端末４００からアップロード要求Ｓ５を受信した場合、記憶しておいたディレクトリ名Ｓ３を読み出し、読み出したディレクトリ名Ｓ３および書き込み要求Ｓ６をストレージサーバ２００に送信する。これにより、フロントサーバ１００とユーザ端末４００との間の通信回数を削減することができる。
【００７８】
［第２実施形態の効果］
第２実施形態のストレージシステム１によれば、フロントサーバ１００により処理リクエストを受信する度に、ストレージサーバ２００からフロントサーバ１００にディレクトリ名を通知する必要がない。これにより、ストレージシステム１によれば、ストレージサーバ２００の処理負荷を抑制することができる。また、ストレージシステム１によれば、フロントサーバ１００およびストレージサーバ２００の通信回数を抑制することができる。
【００７９】
＜第３実施形態＞
以下、第３実施形態について説明する。第３実施形態のストレージサーバ２００は、ファイルの書き込み時間が所定時間を超える場合に、カレントディレクトリのディレクトリのファイル数の上限値を減少させる点で、上述した第１実施形態および第２実施形態とは異なる。以下、この点を中心に説明する。
【００８０】
［ストレージサーバ２００における書き込み処理］
図１６は、ストレージサーバ２００における第３書き込み処理の流れの一例を示す図である。図１６に示した処理は、ストレージ制御部２３０により所定期間毎に繰り返して実行される。
【００８１】
まず、記憶制御部２３２は、リクエストを受け付けたか否かを判定する（ステップＳ４００）。ファイルカウンタ部２３４は、リクエストを受け付けた場合、カレントディレクトリのファイル数をカウントアップする（ステップＳ４０２）。
【００８２】
次に記憶制御部２３２は、カウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する（ステップＳ４０４）。記憶制御部２３２は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ１００に送信する（ステップＳ４０８）。記憶制御部２３２は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する（ステップＳ４０６）。記憶制御部２３２は、設定した新たなカレントディレクトリのディレクトリ名をフロントサーバ１００に返信する（ステップＳ４０８）。
【００８３】
次に、記憶制御部２３２は、フロントサーバ１００から書き込み要求を受信したか否かを判定する（ステップＳ４１０）。記憶制御部２３２は、書き込み要求を受信した場合、指定されたディレクトリ名が設定されたディレクトリが存在しているか否かを判定する（ステップＳ４１２）。記憶制御部２３２は、指定されたディレクトリ名が設定されたディレクトリが存在している場合、当該ディレクトリにファイルを書き込む（ステップＳ４１６）。記憶制御部２３２は、指定されたディレクトリ名が設定されたディレクトリが存在しない場合、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル２４４Ａに書き込むことで、ディレクトリを追加する（ステップＳ４１４）。
【００８４】
次に、記憶制御部２３２は、追加したディレクトリに対応付けてファイルを書き込む（ステップＳ４１６）。次に記憶制御部２３２は、ファイルの書き込み時間を検出する（ステップＳ４１８）。記憶制御部２３２は、例えば、ハードディスク装置２１０Ａにライトコマンドを出力した時刻から、ハードディスク装置２１０Ａから書き込み完了の応答を入力した時刻までの期間を計測することで、ファイルの書き込み時間を検出する。
【００８５】
記憶制御部２３２は、検出した書き込み時間が所定時間を超えているか否かを判定する（ステップＳ４２０）。記憶制御部２３２は、検出した書き込み時間が所定時間を超えている場合、カレントディレクトリのディレクトリについての上限値を減少させる（ステップＳ４２２）。
【００８６】
なお、ディレクトリ名リクエストを受信していない場合、書き込み要求を受信しない場合、および書き込み時間が所定時間を超えていない場合、ストレージサーバ２００は、本フローチャートの処理を終了する。
【００８７】
なお、ストレージシステム１は、ストレージサーバ２００によりファイルの書き込み時間が所定時間を超えた場合にファイル数の上限値を変更したが、これに限定されない。フロントサーバ１００は、ストレージサーバ２００に書き込み要求を送信した時刻から、ストレージサーバ２００からレスポンスを受信した時刻までの時間が所定時間を超えた場合に、ストレージサーバ２００に通知してよい。ストレージサーバ２００は、フロントサーバ１００から通知を受信した場合に、カレントディレクトリに対応付けてファイルを書き込むことを制限する。そして、ストレージサーバ２００は、新たなカレントディレクトリのディレクトリ名を決定して、フロントサーバ１００に新たなカレントディレクトリのディレクトリ名を通知する。
【００８８】
また、ストレージシステム１は、ファイルの書き込み時間が所定時間を超える場合にディレクトリに対応する上限値を減少させるが、これに限定されない。ストレージシステム１は、ファイルの書き込み時間が所定時間よりも短い場合に、ディレクトリに対応する上限値を増加させてよい。
【００８９】
［第３実施形態の効果］
第３実施形態のストレージシステム１によれば、ファイルの書き込み時間が所定時間を超える場合に、カレントディレクトリのディレクトリに対応する上限値を減少させるので、カレントディレクトリに対応付けて書き込むファイル数を抑制することができる。これにより、ストレージシステム１によれば、ファイルの書き込み時間が長くなることを抑制することができる。
【００９０】
＜実施例１＞
以下、上述したストレージシステム１の実施例１を説明する。図１７は、カレントディレクトリに対応付けて書き込んだファイル数と、秒単位の書き込みリクエストの処理数との関係を示す図である。図１７において、実施例１は、上述した実施形態において各ディレクトリに対するファイル数の上限値を「１０００」に設定した場合の書き込みリクエストの処理数の変化を表している。実施例２は、上述した実施形態において各ディレクトリに対するファイル数の上限値を「１００００」に設定した場合の書き込みリクエストの処理数の変化を表している。比較例１は、１つのカレントディレクトリに対応付けてファイルを書き込んだ場合の書き込みリクエストの処理数の変化を表している。比較例２は、ディレクトリを固定数設定し、さらに、当該ディレクトリの下位にディレクトリを同数設定した場合の書き込みリクエストの処理数の変化を表している。
【００９１】
実施例１および実施例２におけるリクエストの処理数は、各ディレクトリに対応したファイル数が増加しても大きく低下していないことが分かる。一方、比較例１におけるリクエストの処理数は、ファイル数が一定数を超えると急峻に低下していることが分かる。また、比較例２におけるリクエストの処理数は、ファイル数が一定数を超えても、実施例１および実施例２におけるリクエストの処理数より低いことが分かる。
【００９２】
＜実施例２＞
以下、上述したストレージシステム１の実施例２を説明する。図１８は、比較例１のディスクオフセット、シーク回数、およびスループットを表す図である。図１９は、実施例のディスクオフセット、シーク回数、およびスループットを表す図である。図１８および図１９の特性は、ｂｌｋｔｒａｃｅを用いて、ストレージサーバ２００におけるインターフェース２５５（ブロックＩ／Ｏレイヤ）における信号を検出して得たものである。
【００９３】
図１８および図１９を参照すると、実施例におけるディスクオフセットおよびシーク回数は、比較例におけるディスクオフセットおよびシーク回数よりも低いことが分かる。また、実施例におけるスループットは、比較例におけるスループットよりも高いことが分かる。
＜実施例３＞
以下、上述したストレージシステム１の実施例３を説明する。図２０は、磁気ディスク２２１上に書き込まれたファイルの物理位置の時間的な変化を示す図である。図２０を参照すると、実施例は、比較例よりも狭い範囲にファイルを書き込んでいることが分かる。  ＜ハードウェア構成＞
図２１は、ユーザ端末４００、フロントサーバ１００、ストレージサーバ２００、およびメタデータデータベースサーバ３００のハードウェア構成の一例を示す図である。本図は、ユーザ端末４００がスマートフォンなどの携帯電話である例を示している。ユーザ端末４００は、例えば、ＣＰＵ４０１、ＲＡＭ４０２、ＲＯＭ４０３、フラッシュメモリなどの二次記憶装置４０４、タッチパネル４０５、および無線通信モジュール４０６が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ナビアプリは、ネットワークＮＷを介してダウンロードされ、二次記憶装置４０４に格納される。
【００９４】
フロントサーバ１００は、例えば、ＮＩＣ１０１、ＣＰＵ１０２、ＲＡＭ１０３、ＲＯＭ１０４、フラッシュメモリやＨＤＤなどの二次記憶装置１０５、およびドライブ装置１０６が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置１０６には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置１０５、またはドライブ装置１０６に装着された可搬型記憶媒体に記憶されたプログラムがＤＭＡコントローラ（不図示）などによってＲＡＭ１０３に展開され、ＣＰＵ１０２によって実行されることで、各サーバの機能部が実現される。
【００９５】
ストレージサーバ２００は、例えば、ＮＩＣ２０１、ＣＰＵ２０２、ＲＡＭ２０３、ＲＯＭ２０４、フラッシュメモリやＨＤＤなどの二次記憶装置２０５、およびドライブ装置２０６が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置２０６には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置２０５、またはドライブ装置２０６に装着された可搬型記憶媒体に記憶されたプログラムがＤＭＡコントローラ（不図示）などによってＲＡＭ２０３に展開され、ＣＰＵ２０２によって実行されることで、各サーバの機能部が実現される。
【００９６】
メタデータデータベースサーバ３００は、例えば、ＮＩＣ３０１、ＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、フラッシュメモリやＨＤＤなどの二次記憶装置３０５、およびドライブ装置３０６が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置３０６には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置３０５、またはドライブ装置３０６に装着された可搬型記憶媒体に記憶されたプログラムがＤＭＡコントローラ（不図示）などによってＲＡＭ３０３に展開され、ＣＰＵ３０２によって実行されることで、各サーバの機能部が実現される。
【００９７】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００９８】
１…ストレージシステム
１００…フロントサーバ
１３０…フロント制御部
１３２…アプリケーション処理部
１３４…ファイル管理部
１３６…キャッシュメモリ
１３６Ａ…ディレクトリ情報
２００…ストレージサーバ
２１０…ファイルストレージ部
２３０…ストレージ制御部
２３２…記憶制御部
２３４…ファイルカウンタ部
２４４…ファイル数記憶部
２４４Ａ…カウンタテーブル
４００…ユーザ端末
【図１】
0006720120.tif 000002
【図２】
0006720120.tif 000003
【図３】
0006720120.tif 000004
【図４】
0006720120.tif 000005
【図５】
0006720120.tif 000006
【図６】
0006720120.tif 000007
【図７】
0006720120.tif 000008
【図８】
0006720120.tif 000009
【図９】
0006720120.tif 000010
【図１０】
0006720120.tif 000011
【図１１】
0006720120.tif 000012
【図１２】
0006720120.tif 000013
【図１３】
0006720120.tif 000014
【図１４】
0006720120.tif 000015
【図１５】
0006720120.tif 000016
【図１６】
0006720120.tif 000017
【図１７】
0006720120.tif 000018
【図１８】
0006720120.tif 000019
【図１９】
0006720120.tif 000020
【図２０】
0006720120.tif 000021
【図２１】
0006720120.tif 000022