JP6227055B1 - ストレージシステム、およびファイル書き込み方法 - Google Patents

ストレージシステム、およびファイル書き込み方法 Download PDF

Info

Publication number
JP6227055B1
JP6227055B1 JP2016104303A JP2016104303A JP6227055B1 JP 6227055 B1 JP6227055 B1 JP 6227055B1 JP 2016104303 A JP2016104303 A JP 2016104303A JP 2016104303 A JP2016104303 A JP 2016104303A JP 6227055 B1 JP6227055 B1 JP 6227055B1
Authority
JP
Japan
Prior art keywords
directory
file
server
storage
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016104303A
Other languages
English (en)
Other versions
JP2017211816A (ja
Inventor
泰陽 後藤
泰陽 後藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2016104303A priority Critical patent/JP6227055B1/ja
Priority to US15/447,811 priority patent/US10175907B2/en
Application granted granted Critical
Publication of JP6227055B1 publication Critical patent/JP6227055B1/ja
Publication of JP2017211816A publication Critical patent/JP2017211816A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ファイルの処理性能を向上させる。【解決手段】ディレクトリ名を指定したファイルの書き込み要求を受け付ける受付部と、各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記受付部により受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む制御部とを備えるストレージ装置。【選択図】図1

Description

本発明は、ストレージ装置、ファイル書き込み方法、およびプログラムに関する。
従来、複数のファイルサーバにより分散してファイルを管理する技術が知られている(特許文献1参照)。この種の技術において、ファイルサーバには、予め複数のディレクトリが作成され、各ディレクトリに対応付けて複数のファイルが保存される場合がある。
特開2004−139200号公報
しかしながら、ファイルサーバに作成するディレクトリ数が少ない場合、各ディレクトリに対応付けて保存されるファイル数が膨大となるため、ディレクトリとファイルとの関係を表すディレクトリ情報が膨大となり、ファイルの書き込み性能が次第に劣化するという問題がある。一方、ファイルサーバに作成するディレクトリ数を多くした場合、ファイルが多くのディレクトリに分散されるため、ファイルの書き込み位置が過度に分散する場合があった。
本発明は、このような事情を考慮してなされたものであり、ファイルの処理性能を向上させることができるストレージ装置、ファイル書き込み方法、およびプログラムを提供することを目的の一つとする。
本発明の一態様は、ディレクトリ名を指定したファイルの書き込み要求を受け付ける受付部と、各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記受付部により受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む制御部とを備えるストレージ装置である。
本発明の一態様によれば、ファイルの処理性能を向上させることができる。
第1実施形態に係るストレージ装置を含むストレージシステム1の一例を示す図である。 フロントサーバ100の一例を示す図である。 ディレクトリ情報136Aの一例を示す図である。 メタデータ310の一例を示す図である。 ストレージサーバ200の一例を示す図である。 論物変換テーブル242Aの一例を示す図である。 カウンタテーブル244Aの一例を示す図である。 ハードディスク装置210Aの一例を示す図である。 ユーザ端末400、フロントサーバ100、およびストレージサーバ200による処理の流れの一例を示す図である。 フロントサーバ100における処理の流れの一例を示す図である。 ストレージサーバ200における第1書き込み処理の流れの一例を示す図である。 各ディレクトリとファイルとの関係を示す図である。 書き込み要求を受け付けた時刻と、ディレクトリごとの書き込み処理との関係を示す図である。 ストレージサーバ200における第2書き込み処理の流れの一例を示す図である。 ユーザ端末400、フロントサーバ100、およびストレージサーバ200による処理の流れの一例を示す図である。 ストレージサーバ200における第3書き込み処理の流れの一例を示す図である。 カレントディレクトリに対応付けて書き込んだファイル数と、秒単位の書き込みリクエストの処理数との関係を示す図である。 比較例1のディスクオフセット、シーク回数、およびスループットを表す図である。 実施例のディスクオフセット、シーク回数、およびスループットを表す図である。 磁気ディスク221上に書き込まれたファイルの物理位置の時間的な変化を示す図である。 ユーザ端末400、フロントサーバ100、ストレージサーバ200、およびメタデータデータベースサーバ300のハードウェア構成の一例を示す図である。
以下、図面を参照し、本発明のストレージ装置、ファイル書き込み方法、およびプログラムの実施形態について説明する。
<第1実施形態>
[ストレージシステム1の全体構成]
図1は、第1実施形態に係るストレージシステム1の一例を示す図である。ストレージシステム1は、例えば、複数のユーザ端末からのアップロード要求に従ってファイルをストレージサーバに蓄積すると共に、ユーザ端末からの閲覧要求またはダウンロード要求に従って、蓄積しているファイルをユーザ端末に閲覧またはダウンロードさせるストレージサービスを提供するものである。
ストレージシステム1は、例えば、フロントサーバ100と、ストレージサーバ200と、メタデータデータベースサーバ300と、ユーザ端末400−1、・・・400−M(Mは2以上の自然数)とを含む。なお、ストレージシステム1において、複数のユーザ端末400とフロントサーバ100とがネットワークNWを介して情報を通信する。ネットワークNWは、例えば、無線基地局、Wi−Fiアクセスポイント、通信回線、プロバイダ、インターネットなどを含む。なお、以下の説明において、ユーザ端末を他のユーザ端末と区別しない場合には「ユーザ端末400」と記載する。
また、ストレージシステム1において、フロントサーバ100とストレージサーバ200、およびフロントサーバ100とメタデータデータベースサーバ300とは、ネットワークNWとは異なるネットワークを介して通信接続されている。なお、図1に示したフロントサーバ100、ストレージサーバ200、およびメタデータデータベースサーバ300は、単一のサーバ装置により実現してよく、それぞれ複数のサーバ装置を含んでいてよい。
[フロントサーバ100の構成]
図2は、フロントサーバ100の一例を示す図である。フロントサーバ100は、例えば、ユーザ側通信部110と、サーバ側通信部120と、フロント制御部130と、を含む。
ユーザ側通信部110およびサーバ側通信部120は、例えばNIC(Network Interface Card)を含む。ユーザ側通信部110は、ネットワークNWを介してユーザの使用するユーザ端末400との間で通信を行う。サーバ側通信部120は、他のネットワーク介してストレージサーバ200およびメタデータデータベースサーバ300との間で通信を行う。
フロント制御部130は、例えば、アプリケーション処理部132と、ファイル管理部134とを含む。アプリケーション処理部132は、例えばCPU(Central Processing Unit)などのプロセッサがプログラムメモリに格納されたアプリケーションプログラムを実行することにより実現される。ファイル管理部134は、例えばCPUなどのプロセッサがプログラムメモリに格納されたOS(Operating System)プログラムを実行することにより実現される。アプリケーション処理部132およびファイル管理部134を含む機能部のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)などのハードウェアにより実現されてもよい。
アプリケーション処理部132は、ユーザ側通信部110を用いてユーザ端末400から送信されたファイルのアップロード要求を受け付ける(受付部)。ファイルのアップロード要求は、ディレクトリを指定したファイルの書き込み要求である。アプリケーション処理部132は、ファイルのアップロード要求に応答した書き込み要求をストレージサーバ200に送信する。
ファイル管理部134は、アップロード要求によりストレージサーバ200に書き込まれているファイルに関連するディレクトリ情報をキャッシュメモリ136に書き込む。ディレクトリ情報は、ディレクトリを管理する管理情報である。図3は、ディレクトリ情報136Aの一例を示す図である。ディレクトリ情報は、例えば、各ディレクトリ名と、所定の上限数の範囲内でディレクトリ名に対応付けられるファイル名とを対応付けている。ディレクトリ名は、ファイルのアップロード要求により指定されたディレクトリ名である。ファイル名は、アップロード要求により書き込まれるファイルのファイル名である。なお、ディレクトリ名には、追加時刻などその他の情報も対応付けられてよい。また、ファイル名には、ファイル管理部134においてファイル名に対応したファイルを特定するinode番号が対応付けられてよいが、これに限定されず、アップロード時刻などその他の情報も対応付けられてよい。
また、ファイル管理部134は、ファイルがストレージサーバ200に書き込まれた場合に、メタデータデータベースサーバ300にメタデータを書き込む。図4は、メタデータ310の一例を示す図である。メタデータ310には、例えば、グループidと、HDDidと、ディレクトリ名と、ファイル名と、LBA(Logical Block Address)とが含まれている。グループidは、ファイルストレージ部210全体の記憶容量を所定の記憶容量に区分した一つのグループを特定する識別情報である。各グループは、一又は複数のハードディスク装置210Aを含む。各グループは、他のグループと並行してファイルが書き込まれる。なお、「メモリ」の一例は、キャッシュメモリ136、またはメタデータデータベースサーバ300である。キャッシュメモリ136に代えて外部メモリを用いてもよい。
[メタデータデータベースサーバ300の構成]
ストレージサーバ200に先だってメタデータデータベースサーバ300について説明する。メタデータデータベースサーバ300は、例えば、通信部とメタデータ310を記憶する記憶装置とを含む。メタデータデータベースサーバ300は、通信部を用いてメタデータ310を受信した場合に、記憶部にメタデータ310を書き込む。メタデータデータベースサーバ300は、フロントサーバ100の要求に従って、メタデータ310を読み出して、読み出したメタデータ310をフロントサーバ100に送信する。
[ストレージサーバ200の構成]
図5は、ストレージサーバ200の一例を示す図である。ストレージサーバ200は、例えば、ファイルストレージ部210−1、・・・210−N(Nは2以上の自然数)と、サーバ側通信部220と、ストレージ制御部230と、情報記憶部240とを含む。なお、以下の説明において、ファイルストレージ部を他のファイルストレージ部と区別しない場合には「ファイルストレージ部210」と記載する。
各ファイルストレージ部210は、一又は複数のハードディスク装置210Aを含む。ハードディスク装置210Aは、ファイルの書き込み、読み出し、および削除を実行する。
ファイルストレージ部210は、ストレージ制御部230からライトコマンドが供給された場合、ライトコマンドに含まれるファイルをハードディスク装置210Aに書き込む。ファイルストレージ部210は、ストレージ制御部230からリードコマンドが供給された場合、リードコマンドにより指定されたファイルをハードディスク装置210Aから読み出し、読み出したファイルをストレージ制御部230に出力する。ファイルストレージ部210は、ストレージ制御部230から削除コマンドが供給された場合、リードコマンドにより指定されたファイルをハードディスク装置210Aから削除する。
サーバ側通信部220は、例えばNICを含む。サーバ側通信部220は、ネットワークNWとは他のネットワーク介してストレージサーバ200との間で通信を行う。
ストレージ制御部230は、例えば、記憶制御部232と、ファイルカウンタ部234とを含む。記憶制御部232およびファイルカウンタ部234は、例えばCPUなどのプロセッサがプログラムメモリに格納されたサーバプログラムを実行することにより実現される。記憶制御部232およびファイルカウンタ部234を含む機能部のうち一部または全部は、LSI、ASIC、またはFPGAなどのハードウェアにより実現されてもよい。
情報記憶部240は、例えば、論物変換テーブル記憶部242と、ファイル数記憶部244とを含む。情報記憶部240は、HDD(Hard Disc Drive)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、ROM(Read Only Memory)、またはRAM(Random Access Memory)等により実現される。情報記憶部240には、サーバプログラム等の各種プログラム、各種の処理結果などが記憶される。
記憶制御部232は、サーバ側通信部220を用いてフロントサーバ100から受信した書き込み要求に応答して、ファイルをハードディスク装置210Aに書き込む。記憶制御部232は、書き込み要求を受信した場合に、書き込み要求により指定されたディレクトリに対応付けてファイルをハードディスク装置210Aに書き込む。このとき、記憶制御部232は、論物変換テーブル記憶部242に記憶された論物変換テーブル242Aを参照して、書き込み要求に含まれるLBAをPBAに変換し、変換したPBAに対応する位置にファイルを書き込む。記憶制御部232は、例えば、複数回ファイルの書き込みを行う場合、ファイルのLBAを連番に設定し、LBAが近いファイルをハードディスク装置210Aにおける近くのPBAに書き込む。図6は、論物変換テーブル242Aの一例を示す図である。論物変換テーブル記憶部242におけるデータ有無は、例えば、PBAにより特定される物理ブロック内にデータが書き込まれているか否かを示すデータ有無フラグである。
ファイルカウンタ部234は、各ディレクトリに対応付けられて書き込まれたファイル数をカウントする。ファイルカウンタ部234は、カウントした結果をカウンタテーブル244Aに記憶する。カウンタテーブル244Aは、ディレクトリに対応付けて書き込まれたファイル数を管理する管理情報である。図7は、カウンタテーブル244Aの一例を示す図である。カウンタテーブル244Aにおけるディレクトリ名には、例えば、カウントした結果としてのファイル数と、上限値とが対応付けられている。
(ハードディスク装置210Aの構成)
図8は、ハードディスク装置210Aの一例を示す図である。ハードディスク装置210Aは、例えば、磁気ディスク211と、ヘッドスタックアッセンブリ(Head Stack Assembly;HSA)212と、駆動回路223と、HDDコントローラ224と、インターフェース225とを含む。
磁気ディスク211は、アルミニウムやガラス等の基板の表裏面に磁気記録層が形成された円盤(プラッタ)である。磁気ディスク211は、単一の円盤により構成されてもよいし、円盤の厚み方向に対して複数枚の円盤が積み重ねられて構成されてもよい。
ヘッドスタックアッセンブリ212は、記録再生ヘッド212aと、ヘッドアンプIC212bと、ボイスコイルモータ212cと、スピンドルモータ212dとを含む。
記録再生ヘッド212aは、ヘッドアーム上に搭載され、ボイスコイルモータ212cからの駆動力によって磁気ディスク211上をシークしながら、磁気ディスク211に対して相対的に移動する。記録再生ヘッド212aは、記録および再生兼用の磁性体コアを用いた薄膜ヘッドであってよいが、これに限定されない。
記録再生ヘッド212aは、ファイルを書き込む場合、ヘッドアンプIC212bにより供給された電気信号に基づく磁界を発生させることで、磁気ディスク221の磁気記録層の磁化方向を変化させる。これによって、記録再生ヘッド212aは、ファイルを磁気ディスク221に書き込む。記録再生ヘッド212aは、ファイルを読み出す場合、磁気ディスク211上を移動しながら、磁気ディスク211の磁気記録層の磁化方向に対応した電気信号を生成する。記録再生ヘッド212aは、生成した電気信号を、ヘッドアンプIC212bを介して駆動回路223に供給する。
ヘッドアンプIC212bは、記録再生ヘッド212aにより供給された電気信号の信号強度を増幅する。また、ヘッドアンプIC212bは、駆動回路223により供給されたユーザデータを電気信号に変換し、記録再生ヘッド212aに供給する。
ボイスコイルモータ212cは、駆動回路223により供給された駆動電流に応じて、ヘッドスタックアッセンブリ222を駆動する。これにより、ボイスコイルモータ212cは、記録再生ヘッド212aを、磁気ディスク211の径方向に沿って(あるいは径方向に対して角度を有する斜めの方向に沿って)外側または内側に移動させ、トラック間を移動させる。径方向とは、磁気ディスクの中心を通る方向である。スピンドルモータ212dは、駆動回路223により供給された駆動電流に応じて、磁気ディスク211を回転させる。スピンドルモータ212dは、例えば、DCブラシレスモータである。
駆動回路223は、ヘッドアンプICとの間で信号を授受すると共に、ボイスコイルモータ212cおよびスピンドルモータ212dを駆動する。これにより、駆動回路223は、コマンドに含まれるPBAに対応する位置に記録再生ヘッド212aをシークさせてファイルを書き込む。
HDDコントローラ224は、インターフェース225を用いて、フロントサーバ100から送信されたリードコマンド、ライトコマンド、および削除コマンドを受信する。HDDコントローラ224は、各コマンドに応じて、磁気ディスク211に情報を書き込んだり、磁気ディスク211に書き込まれた情報を読み出したりする。
[ストレージシステム1の全体処理]
以下、フロントサーバ100がディレクトリ名を指定したファイルの書き込み要求を受け付けた場合に、ファイルをハードディスク装置210Aに書き込む処理について説明する。図9は、ユーザ端末400、フロントサーバ100、およびストレージサーバ200による処理の流れの一例を示す図である。
ユーザ端末400は、ファイルをアップロードする際に、ユーザの操作に従ってファイルをアップロードするアプリケーションプログラムに対してAPI(Application Program Interface)コールを供給する。これにより、ユーザ端末400のアプリケーションプログラムは、フロントサーバ100に、アプリケーション処理部132を呼び出す処理リクエストS1を送信する。なお、処理リクエストS1は、ユーザ端末400におけるアプリケーションまたはブラウザなどのUA(User Agent)により生成されたHTTP(Hypertext Transfer Protocol)リクエストに埋め込まれた情報である。
フロントサーバ100は、処理リクエストS1を受信した場合に、カレントディレクトリのディレクトリ名を要求するディレクトリ名リクエストS2をストレージサーバ200に送信する。ストレージサーバ200は、ディレクトリ名リクエストS2を受信した場合、カレントディレクトリに対応するファイル数をカウントアップする(ステップS10)。ストレージサーバ200は、カレントディレクトリのディレクトリ名S3をフロントサーバ100に送信する。フロントサーバ100は、カレントディレクトリのディレクトリ名S3を受信した場合、ディレクトリ名S3をファイル書き込み先のディレクトリ名S4としてユーザ端末400に送信する。
ユーザ端末400は、ディレクトリ名S4を指定したアップロード要求S5を含むHTTPリクエストをフロントサーバ100に送信する。フロントサーバ100は、アップロード要求S5を受信した場合、ストレージサーバ200に、ディレクトリ名を指定したファイルの書き込み要求S6を送信する。
ストレージサーバ200は、フロントサーバ100により送信された書き込み要求S6を受信した場合、受信した書き込み要求S6により指定されたディレクトリ名のディレクトリに対応付けてファイルをハードディスク装置210Aに書き込む(ステップS11)。ストレージサーバ200は、ファイルの書き込みが完了した場合、レスポンスS7をフロントサーバ100に送信する。
フロントサーバ100は、レスポンスS7を受信した場合、ハードディスク装置210Aに書き込まれたファイルのファイル名に関連するメタデータ310を更新する(ステップS21)。次にフロントサーバ100は、ファイルのアップロードが完了したことを通知する完了通知S8をユーザ端末400に送信する。
[フロントサーバ100の動作]
図10は、フロントサーバ100における処理の流れの一例を示す図である。図10に示した処理は、アプリケーション処理部132により所定期間毎に繰り返して実行される。
まず、アプリケーション処理部132は、処理リクエストS1を受け付けたか否かを判定する(ステップS100)。アプリケーション処理部132は、処理リクエストS1を受け付けた場合、ストレージサーバ200にディレクトリ名リクエストS2を送信する(ステップS102)。
次にアプリケーション処理部132は、ストレージサーバ200からディレクトリ名S3を受信したか否かを判定する(ステップS104)。アプリケーション処理部132は、ディレクトリ名S3を受信した場合、ユーザ端末400にディレクトリ名S4を送信する(ステップS106)。
次にアプリケーション処理部132は、ユーザ端末400からディレクトリ名S4を指定したアップロード要求S5を受信したか否かを判定する(ステップS110)。アプリケーション処理部132は、アップロード要求S5を受信した場合、ディレクトリ名S4を含む書き込み要求S6をストレージサーバ200に送信する(ステップS112)。このとき、アプリケーション処理部132は、書き込み対象のファイルのファイル名をディレクトリ情報136Aにキャッシュする。
次に、アプリケーション処理部132は、ストレージサーバ200からレスポンスS7を受信したか否かを判定する(ステップS114)。アプリケーション処理部132は、レスポンスS7を受信した場合、ディレクトリ情報136Aおよびメタデータ310を更新する(ステップS116)。このとき、アプリケーション処理部132は、ハードディスク装置210Aに書き込まれたファイルのファイル名を、指定されたディレクトリ名に対応付けてディレクトリ情報136Aに追加する。また、アプリケーション処理部132は、ハードディスク装置210Aに書き込まれたファイルのファイル名などの情報をメタデータデータベースサーバ300に送信する。次に、アプリケーション処理部132は、完了通知S8をユーザ端末400に送信する(ステップS118)。
なお、処理リクエストを受信しない場合、およびアップロード要求を受信しない場合、フロントサーバ100は、本フローチャートの処理を終了する。
また、フロントサーバ100は、ストレージサーバ200により通知されたディレクトリ名S3をユーザ端末400に送信してよいが、これに限定されず、ディレクトリ名S3をフロントサーバ100のAPI内で処理をするのみであってよい。フロントサーバ100は、ストレージサーバ200からディレクトリ名S3を受信した場合、ディレクトリ名S3をユーザ端末400に送信することなしに、メモリに記憶する。フロントサーバ100は、ユーザ端末400からアップロード要求S5を受信した場合、記憶しておいたディレクトリ名S3を読み出し、読み出したディレクトリ名S3および書き込み要求S6をストレージサーバ200に送信する。これにより、フロントサーバ100とユーザ端末400との間の通信回数を削減することができる。
[ストレージサーバ200の動作]
図11は、ストレージサーバ200における第1書き込み処理の流れの一例を示す図である。図11に示した処理は、ストレージ制御部230により所定期間毎に繰り返して実行される。
まず、記憶制御部232は、ディレクトリ名リクエストS2を受け付けたか否かを判定する(ステップS200)。ファイルカウンタ部234は、ディレクトリ名リクエストS2を受け付けた場合、カレントディレクトリのファイル数をカウントアップする(ステップS202)。
次に記憶制御部232は、ファイルカウンタ部234によりカウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する(ステップS204)。記憶制御部232は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ100に送信する(ステップS208)。記憶制御部232は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する(ステップS206)。記憶制御部232は、決定した新たなカレントディレクトリのディレクトリ名をフロントサーバ100に返信する(ステップS208)。
次に、記憶制御部232は、フロントサーバ100から書き込み要求S6を受信したか否かを判定する(ステップS210)。記憶制御部232は、書き込み要求S6を受信した場合、指定されたディレクトリ名のディレクトリが存在しているか否かを判定する(ステップS212)。記憶制御部232は、指定されたディレクトリ名のディレクトリがカウンタテーブル244Aに存在している場合、当該ディレクトリに対応付けてファイルを書き込む(ステップS216)。
記憶制御部232は、指定されたディレクトリ名のディレクトリがカウンタテーブル244Aに存在しない場合、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル244Aに書き込むことで、新たなディレクトリ名のディレクトリを追加する(ステップS214)。記憶制御部232は、追加したディレクトリに対応付けてファイルを書き込む(ステップS216)。
なお、ディレクトリ名リクエストを受信していない場合、および書き込み要求を受信しない場合、ストレージサーバ200は、本フローチャートの処理を終了する。
[書き込み処理におけるディレクトリとファイルとの関係]
以下、上述したストレージサーバ200において、各ディレクトリに対応付けてファイルを書き込む様子について説明する。図12は、各ディレクトリとファイルとの関係を示す図である。
図12を参照した説明において、ファイル数の上限としての上限値は「1000」であるものとする。記憶制御部232は、図12(a)に示すように、グループidが「001」に対してディレクトリ名が「001」のディレクトリの情報をカウンタテーブル244Aに追加し、990個のファイルの書き込み要求をフロントサーバ100から受信するものとする。この場合、記憶制御部232は、990個のファイルを1つのカレントディレクトリに対応付けて連続的に書き込む。
記憶制御部232は、ディレクトリ名が「001」のディレクトリに対応付けて1000個のファイルを書き込んだ場合において、1001個目のファイルを書き込む場合、ディレクトリ名が「002」の新たなディレクトリを追加する。記憶制御部232は、追加した新たなディレクトリとしてのカレントディレクトリに対応付けて1001個目のファイルを書き込む。すなわち、記憶制御部232は、新たなディレクトリを追加した場合に、ファイル数が上限値を超えたディレクトリに対応付けてファイルを書き込むことなしに、新たなディレクトリに対応付けてファイルを書き込む。このような動作は、各ディレクトリに対応付けて書き込まれたファイル数をカウントし、カウントしたファイル数が上限値を超えた場合に、ディレクトリに対応付けてファイルを書き込むことを制限する、と記載することもできる。
[ファイルの書き込み要求と書き込み処理の遷移状態との関係]
図13は、書き込み要求を受け付けた時刻と、ディレクトリごとの書き込み処理との関係を示す図である。記憶制御部232は、ディレクトリ名が「001」のディレクトリdir001に対応付けて書き込んだファイル数が上限値以下である場合、ディレクトリdir001に対応したファイルの書き込み処理を行う。ディレクトリdir001に対応したファイルの書き込み処理は、ディレクトリdir001以外のディレクトリに対応付けて書き込むことなしに、ディレクトリdir001にのみ対応付けてファイルを書き込む処理である。記憶制御部232は、ディレクトリdir001に対応したファイルの書き込み処理を実行している期間において時刻tにファイル(file(t))の書き込み要求を受信した場合には当該ファイルをディレクトリdir001に対応付けて書き込み、時刻t+T1にファイル(file(t+T1))の書き込み要求を受信した場合には当該ファイルをディレクトリdir001に対応付けて書き込む。
記憶制御部232は、ファイル(file(t+T1))をディレクトリdir001に対応付けて書き込むことでディレクトリdir001に書き込んだファイル数が上限値を超えた場合、ディレクトリdir002に対応したファイルの書き込み処理に遷移する。ディレクトリdir002に対応したファイルの書き込み処理は、ディレクトリdir002以外のディレクトリに対応付けてファイルを書き込むことなしに、ディレクトリdir002にのみ対応付けてファイルを書き込む処理である。これにより、記憶制御部232は、ディレクトリdir002に対応したファイルの書き込み処理を実行している期間において時刻t+T2にファイル(file(t+T2))の書き込み要求を受信した場合には当該ファイルをディレクトリdir002に対応付けて書き込む。
ストレージサーバ200は、図11に示す処理に代えて、以下の処理を行ってもよい。図14は、ストレージサーバ200における書き込み処理の流れの他の一例を示す図である。図14に示した書き込み処理は、ストレージ制御部230により所定期間毎に繰り返して実行される。
まず、記憶制御部232は、ディレクトリ名リクエストS2を受け付けたか否かを判定する(ステップS300)。ファイルカウンタ部234は、ディレクトリ名リクエストS2を受け付けた場合、カレントディレクトリのファイル数をカウントアップする(ステップS302)。
次に記憶制御部232は、ファイルカウンタ部234によりカウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する(ステップS304)。記憶制御部232は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ100に送信する(ステップS310)。
記憶制御部232は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する(ステップS306)。次に、記憶制御部232は、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル244Aに書き込むことで、ディレクトリを追加する(ステップS308)。次に、記憶制御部232は、追加したカレントディレクトリのディレクトリ名をフロントサーバ100に送信する(ステップS310)。
次に、記憶制御部232は、フロントサーバ100から書き込み要求S6を受信したか否かを判定する(ステップS312)。記憶制御部232は、書き込み要求S6を受信した場合、追加したディレクトリにファイルを書き込む(ステップS314)。
なお、ディレクトリ名リクエストを受信していない場合、および書き込み要求を受信しない場合、ストレージサーバ200は、本フローチャートの処理を終了する。以上が、第2書き込み処理の説明である。
ストレージサーバ200は、以上の動作により、各ディレクトリに対応して書き込まれるファイル数に設けられる上限の範囲内で、ファイルをハードディスク装置210Aに書き込む。なお、フロントサーバ100およびストレージサーバ200は、図10と、図11または図14とに示した処理を行うことで、ストレージ装置として機能する。
[第1実施形態の効果]
以上説明した第1実施形態のストレージシステム1によれば、各ディレクトリに対応してハードディスク装置210Aに書き込まれるファイル数に設けられる上限の範囲内で、フロントサーバ100により受け付けられた書き込み要求に応答して、指定されたディレクトリ名に対応付けてファイルを書き込むので、ディレクトリに対応付けられるファイル数を制限することができる。これにより、ストレージシステム1によれば、ディレクトリ情報136Aが肥大化することを抑制することができる。この結果、ストレージシステム1によれば、ディレクトリ名をシークする時間を抑制することができることで、ファイルの書き込み時間を短縮することができる。
また、第1実施形態のストレージシステム1によれば、ディレクトリに対応付けられるファイル数が上限値に達するまで1つのディレクトリに連続的にファイルを書き込むので、連続的に書き込むファイルを複数のディレクトリに分散させることがない。連続的に書き込まれたファイルは、略同時期に書き込まれたファイルとも言うことができる。これにより、ストレージシステム1によれば、略同時期に書き込まれるファイルにおける磁気ディスク221上の位置を近くに配置することができる。この結果、ストレージシステム1によれば、略同時期に書き込まれた複数のファイルを読み出す際のリード時間を短縮することができる。
<第2実施形態>
以下、第2実施形態について説明する。第2実施形態のストレージサーバ200は、カレントディレクトリのディレクトリ名に書き込んだファイル数が上限値を超えた場合に、ディレクトリ名をフロントサーバ100にプッシュ通知する点で、第1実施形態のストレージシステム1とは異なる。以下、この点を中心に説明する。
[第2実施形態の全体処理]
図15は、ユーザ端末400、フロントサーバ100、およびストレージサーバ200による処理の流れの一例を示す図である。
まず、フロントサーバ100は、通知リクエストS20をストレージサーバ200に送信する。通知リクエストS20は、ストレージサーバ200におけるカレントディレクトリを新たに設定したタイミングでカレントディレクトリのディレクトリ名をフロントサーバ100に通知するメッセージをプッシュ通知することを要求するメッセージである。フロントサーバ100は、例えば、フロントサーバ100の電源が投入してアプリケーションプログラムの起動が完了したタイミング、またはフロントサーバ100が起動している最中における定期的に、通知リクエストS20をストレージサーバ200に送信する。通知リクエストS20は、ディレクトリを新たに追加したタイミングでプッシュ通知することに限定されず、図14に示したように新たなディレクトリ名を決定した後に新たなディレクトリを追加する場合において、新たなディレクトリを追加したタイミングであってよい。
フロントサーバ100は、処理リクエストS21を受信した場合に、既にストレージサーバ200からプッシュ通知されているカレントディレクトリのディレクトリ名S22をユーザ端末400に送信する。フロントサーバ100は、アップロード要求S23を受信した場合、ストレージサーバ200に、ディレクトリ名を指定したファイルの書き込み要求S24を送信する。
ストレージサーバ200は、フロントサーバ100により送信された書き込み要求S24を受信した場合、受信した書き込み要求S24により指定されたディレクトリ名に対応付けてファイルをハードディスク装置210Aに書き込む(ステップS30)。ストレージサーバ200は、ファイルの書き込みが完了した場合、レスポンスS25をフロントサーバ100に送信する。これにより、ストレージサーバ200は、フロントサーバ100からユーザ端末400に完了通知S26を送信させる。
次にストレージサーバ200は、カレントディレクトリに対応するファイル数をカウントアップする(ステップS31)。ストレージサーバ200は、ファイルの書き込みを実行する度に、カレントディレクトリのディレクトリ名に対するファイル数が上限値を超えたか否かを判定する。ストレージサーバ200は、カレントディレクトリのディレクトリ名に対するファイル数が上限値以下である場合、プッシュ通知を実行しない(ステップS32)。ストレージサーバ200は、カレントディレクトリのディレクトリ名に対するファイル数が上限値を超えた場合に、新たなカレントディレクトリのディレクトリ名を決定する。ストレージサーバ200は、決定した新たなカレントディレクトリのディレクトリ名S27をフロントサーバ100にプッシュ通知する(ステップS33)。
なお、フロントサーバ100は、ディレクトリ名S27を受信した場合に、通知リクエストをストレージサーバ200に送信してよい。これにより、フロントサーバ100は、以降に追加されるディレクトリのディレクトリ名をストレージサーバ200にプッシュ通知させることができる。
なお、フロントサーバ100は、ストレージサーバ200により通知されたディレクトリ名S3をユーザ端末400に送信してよいが、これに限定されず、ディレクトリ名S3をフロントサーバ100のAPI内で処理をするのみであってよい。フロントサーバ100は、ストレージサーバ200からディレクトリ名S3を受信した場合、ディレクトリ名S3をユーザ端末400に送信することなしに、メモリに記憶する。フロントサーバ100は、ユーザ端末400からアップロード要求S5を受信した場合、記憶しておいたディレクトリ名S3を読み出し、読み出したディレクトリ名S3および書き込み要求S6をストレージサーバ200に送信する。これにより、フロントサーバ100とユーザ端末400との間の通信回数を削減することができる。
[第2実施形態の効果]
第2実施形態のストレージシステム1によれば、フロントサーバ100により処理リクエストを受信する度に、ストレージサーバ200からフロントサーバ100にディレクトリ名を通知する必要がない。これにより、ストレージシステム1によれば、ストレージサーバ200の処理負荷を抑制することができる。また、ストレージシステム1によれば、フロントサーバ100およびストレージサーバ200の通信回数を抑制することができる。
<第3実施形態>
以下、第3実施形態について説明する。第3実施形態のストレージサーバ200は、ファイルの書き込み時間が所定時間を超える場合に、カレントディレクトリのディレクトリのファイル数の上限値を減少させる点で、上述した第1実施形態および第2実施形態とは異なる。以下、この点を中心に説明する。
[ストレージサーバ200における書き込み処理]
図16は、ストレージサーバ200における第3書き込み処理の流れの一例を示す図である。図16に示した処理は、ストレージ制御部230により所定期間毎に繰り返して実行される。
まず、記憶制御部232は、リクエストを受け付けたか否かを判定する(ステップS400)。ファイルカウンタ部234は、リクエストを受け付けた場合、カレントディレクトリのファイル数をカウントアップする(ステップS402)。
次に記憶制御部232は、カウントアップされた結果としてのカレントディレクトリのファイル数が上限値以下であるか否かを判定する(ステップS404)。記憶制御部232は、カレントディレクトリのファイル数が上限値以下である場合、カレントディレクトリのディレクトリ名をフロントサーバ100に送信する(ステップS408)。記憶制御部232は、カレントディレクトリのファイル数が上限値を超えた場合、新たなディレクトリ名をカレントディレクトリのディレクトリ名として決定する(ステップS406)。記憶制御部232は、設定した新たなカレントディレクトリのディレクトリ名をフロントサーバ100に返信する(ステップS408)。
次に、記憶制御部232は、フロントサーバ100から書き込み要求を受信したか否かを判定する(ステップS410)。記憶制御部232は、書き込み要求を受信した場合、指定されたディレクトリ名が設定されたディレクトリが存在しているか否かを判定する(ステップS412)。記憶制御部232は、指定されたディレクトリ名が設定されたディレクトリが存在している場合、当該ディレクトリにファイルを書き込む(ステップS416)。記憶制御部232は、指定されたディレクトリ名が設定されたディレクトリが存在しない場合、決定したカレントディレクトリのディレクトリ名に対応したディレクトリの管理情報をカウンタテーブル244Aに書き込むことで、ディレクトリを追加する(ステップS414)。
次に、記憶制御部232は、追加したディレクトリに対応付けてファイルを書き込む(ステップS416)。次に記憶制御部232は、ファイルの書き込み時間を検出する(ステップS418)。記憶制御部232は、例えば、ハードディスク装置210Aにライトコマンドを出力した時刻から、ハードディスク装置210Aから書き込み完了の応答を入力した時刻までの期間を計測することで、ファイルの書き込み時間を検出する。
記憶制御部232は、検出した書き込み時間が所定時間を超えているか否かを判定する(ステップS420)。記憶制御部232は、検出した書き込み時間が所定時間を超えている場合、カレントディレクトリのディレクトリについての上限値を減少させる(ステップS422)。
なお、ディレクトリ名リクエストを受信していない場合、書き込み要求を受信しない場合、および書き込み時間が所定時間を超えていない場合、ストレージサーバ200は、本フローチャートの処理を終了する。
なお、ストレージシステム1は、ストレージサーバ200によりファイルの書き込み時間が所定時間を超えた場合にファイル数の上限値を変更したが、これに限定されない。フロントサーバ100は、ストレージサーバ200に書き込み要求を送信した時刻から、ストレージサーバ200からレスポンスを受信した時刻までの時間が所定時間を超えた場合に、ストレージサーバ200に通知してよい。ストレージサーバ200は、フロントサーバ100から通知を受信した場合に、カレントディレクトリに対応付けてファイルを書き込むことを制限する。そして、ストレージサーバ200は、新たなカレントディレクトリのディレクトリ名を決定して、フロントサーバ100に新たなカレントディレクトリのディレクトリ名を通知する。
また、ストレージシステム1は、ファイルの書き込み時間が所定時間を超える場合にディレクトリに対応する上限値を減少させるが、これに限定されない。ストレージシステム1は、ファイルの書き込み時間が所定時間よりも短い場合に、ディレクトリに対応する上限値を増加させてよい。
[第3実施形態の効果]
第3実施形態のストレージシステム1によれば、ファイルの書き込み時間が所定時間を超える場合に、カレントディレクトリのディレクトリに対応する上限値を減少させるので、カレントディレクトリに対応付けて書き込むファイル数を抑制することができる。これにより、ストレージシステム1によれば、ファイルの書き込み時間が長くなることを抑制することができる。
<実施例1>
以下、上述したストレージシステム1の実施例1を説明する。図17は、カレントディレクトリに対応付けて書き込んだファイル数と、秒単位の書き込みリクエストの処理数との関係を示す図である。図17において、実施例1は、上述した実施形態において各ディレクトリに対するファイル数の上限値を「1000」に設定した場合の書き込みリクエストの処理数の変化を表している。実施例2は、上述した実施形態において各ディレクトリに対するファイル数の上限値を「10000」に設定した場合の書き込みリクエストの処理数の変化を表している。比較例1は、1つのカレントディレクトリに対応付けてファイルを書き込んだ場合の書き込みリクエストの処理数の変化を表している。比較例2は、ディレクトリを固定数設定し、さらに、当該ディレクトリの下位にディレクトリを同数設定した場合の書き込みリクエストの処理数の変化を表している。
実施例1および実施例2におけるリクエストの処理数は、各ディレクトリに対応したファイル数が増加しても大きく低下していないことが分かる。一方、比較例1におけるリクエストの処理数は、ファイル数が一定数を超えると急峻に低下していることが分かる。また、比較例2におけるリクエストの処理数は、ファイル数が一定数を超えても、実施例1および実施例2におけるリクエストの処理数より低いことが分かる。
<実施例2>
以下、上述したストレージシステム1の実施例2を説明する。図18は、比較例1のディスクオフセット、シーク回数、およびスループットを表す図である。図19は、実施例のディスクオフセット、シーク回数、およびスループットを表す図である。図18および図19の特性は、blktraceを用いて、ストレージサーバ200におけるインターフェース255(ブロックI/Oレイヤ)における信号を検出して得たものである。
図18および図19を参照すると、実施例におけるディスクオフセットおよびシーク回数は、比較例におけるディスクオフセットおよびシーク回数よりも低いことが分かる。また、実施例におけるスループットは、比較例におけるスループットよりも高いことが分かる。
<実施例3>
以下、上述したストレージシステム1の実施例3を説明する。図20は、磁気ディスク221上に書き込まれたファイルの物理位置の時間的な変化を示す図である。図20を参照すると、実施例は、比較例よりも狭い範囲にファイルを書き込んでいることが分かる。
<ハードウェア構成>
図21は、ユーザ端末400、フロントサーバ100、ストレージサーバ200、およびメタデータデータベースサーバ300のハードウェア構成の一例を示す図である。本図は、ユーザ端末400がスマートフォンなどの携帯電話である例を示している。ユーザ端末400は、例えば、CPU401、RAM402、ROM403、フラッシュメモリなどの二次記憶装置404、タッチパネル405、および無線通信モジュール406が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ナビアプリは、ネットワークNWを介してダウンロードされ、二次記憶装置404に格納される。
フロントサーバ100は、例えば、NIC101、CPU102、RAM103、ROM104、フラッシュメモリやHDDなどの二次記憶装置105、およびドライブ装置106が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置106には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置105、またはドライブ装置106に装着された可搬型記憶媒体に記憶されたプログラムがDMAコントローラ(不図示)などによってRAM103に展開され、CPU102によって実行されることで、各サーバの機能部が実現される。
ストレージサーバ200は、例えば、NIC201、CPU202、RAM203、ROM204、フラッシュメモリやHDDなどの二次記憶装置205、およびドライブ装置206が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置206には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置205、またはドライブ装置206に装着された可搬型記憶媒体に記憶されたプログラムがDMAコントローラ(不図示)などによってRAM203に展開され、CPU202によって実行されることで、各サーバの機能部が実現される。
メタデータデータベースサーバ300は、例えば、NIC301、CPU302、RAM303、ROM304、フラッシュメモリやHDDなどの二次記憶装置305、およびドライブ装置306が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置306には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置305、またはドライブ装置306に装着された可搬型記憶媒体に記憶されたプログラムがDMAコントローラ(不図示)などによってRAM303に展開され、CPU302によって実行されることで、各サーバの機能部が実現される。
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
1…ストレージシステム
100…フロントサーバ
130…フロント制御部
132…アプリケーション処理部
134…ファイル管理部
136…キャッシュメモリ
136A…ディレクトリ情報
200…ストレージサーバ
210…ファイルストレージ部
230…ストレージ制御部
232…記憶制御部
234…ファイルカウンタ部
244…ファイル数記憶部
244A…カウンタテーブル
400…ユーザ端末

Claims (5)

  1. ユーザ端末からのアップロード要求を含むリクエストを受け付ける第1受付部、
    前記第1受付部により受け付けられたリクエストに応じて、ストレージサーバに対して、ディレクトリ名を指定したファイルの書き込み要求を送信する送信部、および、
    新たな書き込み要求に基づいて書き込まれるファイルに対応付けられるカレントディレクトリが変更される場合に前記カレントディレクトリのディレクトリ名をプッシュ通知することを、前記ストレージサーバの通知部に要求する要求部
    を有するフロントサーバと、
    前記フロントサーバからの前記ディレクトリ名を指定したファイルの書き込み要求を受け付ける第2受付部、
    各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記第2受付部により受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込む制御部、および、
    前記要求部からの要求が過去にあったことを条件に、前記制御部が前記カレントディレクトリを変更する場合に、前記カレントディレクトリのディレクトリ名を前記フロントサーバにプッシュ通知する前記通知部、
    を有する前記ストレージサーバと、
    を備えるストレージシステム。
  2. 前記要求部は、前記ユーザ端末からの要求とは非同期に前記ストレージサーバの通知部への要求を行う、
    請求項記載のストレージシステム。
  3. 前記通知部は、前記ユーザ端末からの新たな書き込み要求に基づいて前記制御部が前記カレントディレクトリを変更しない場合に、前記カレントディレクトリのディレクトリ名を前記フロントサーバに通知しない、
    請求項1または2記載のストレージシステム。
  4. 前記制御部は、前記記憶装置における前記ファイルの書き込み時間に基づいて、各ディレクトリに対応付けて書き込まれるファイル数に設けられる前記上限を変更する、
    請求項1から3のうちいずれか1項に記載のストレージシステム。
  5. フロントサーバが、
    ユーザ端末からのアップロード要求を含むリクエストを受け付け、
    前記受け付けられたリクエストに応じて、ストレージサーバに対して、ディレクトリ名を指定したファイルの書き込み要求を送信し、
    新たな書き込み要求に基づいて書き込まれるファイルに対応付けられるカレントディレクトリが変更される場合に前記カレントディレクトリのディレクトリ名をプッシュ通知することを、前記ストレージサーバに要求し、
    前記ストレージサーバが、
    前記フロントサーバからの前記ディレクトリ名を指定したファイルの書き込み要求を受け付け、
    各ディレクトリに対応して記憶装置に書き込まれるファイル数に設けられる上限の範囲内で、前記受け付けられた書き込み要求に応答して、指定された前記ディレクトリ名のディレクトリに対応付けて前記ファイルを前記記憶装置に書き込み、
    前記プッシュ通知することの要求が過去にあったことを条件に、前記カレントディレクトリを変更する場合に、前記カレントディレクトリのディレクトリ名を前記フロントサーバにプッシュ通知する、
    ファイル書き込み方法。
JP2016104303A 2016-05-25 2016-05-25 ストレージシステム、およびファイル書き込み方法 Active JP6227055B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016104303A JP6227055B1 (ja) 2016-05-25 2016-05-25 ストレージシステム、およびファイル書き込み方法
US15/447,811 US10175907B2 (en) 2016-05-25 2017-03-02 Storage device, file writing method, and non-transitory computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016104303A JP6227055B1 (ja) 2016-05-25 2016-05-25 ストレージシステム、およびファイル書き込み方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017159250A Division JP6720120B2 (ja) 2017-08-22 2017-08-22 ストレージ装置、ファイル書き込み方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP6227055B1 true JP6227055B1 (ja) 2017-11-08
JP2017211816A JP2017211816A (ja) 2017-11-30

Family

ID=60265830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016104303A Active JP6227055B1 (ja) 2016-05-25 2016-05-25 ストレージシステム、およびファイル書き込み方法

Country Status (2)

Country Link
US (1) US10175907B2 (ja)
JP (1) JP6227055B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314700B1 (en) * 2018-08-06 2022-04-26 Amazon Technologies, Inc. Non-native transactional support for distributed computing environments

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143760A (ja) * 1997-10-23 1999-05-28 Internatl Business Mach Corp <Ibm> ファイル転送装置およびその方法
US6272593B1 (en) * 1998-04-10 2001-08-07 Microsoft Corporation Dynamic network cache directories
JP4240896B2 (ja) * 2002-03-15 2009-03-18 コニカミノルタホールディングス株式会社 画像分類システム
JP4224279B2 (ja) 2002-10-16 2009-02-12 富士通株式会社 ファイル管理プログラム
JP4131514B2 (ja) * 2003-04-21 2008-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークシステム、サーバ、データ処理方法及びプログラム
US20050010610A1 (en) * 2003-07-08 2005-01-13 Konica Minolta Business Technologies, Inc. File management system, file management apparatus and image forming apparatus
JP2005044345A (ja) * 2003-07-08 2005-02-17 Konica Minolta Business Technologies Inc ファイル管理装置、ファイル管理システムおよび画像形成装置
US8473532B1 (en) * 2003-08-12 2013-06-25 Louisiana Tech University Research Foundation Method and apparatus for automatic organization for computer files
JP2006155457A (ja) * 2004-12-01 2006-06-15 Seiko Epson Corp ファイル管理装置及びファイル管理方法をコンピュータに実行させるためのプログラム
US8028004B2 (en) * 2005-08-26 2011-09-27 Panasonic Corporation Data recording system, data recording method and data recording program
JP4761555B2 (ja) * 2006-08-23 2011-08-31 キヤノン株式会社 データ記録装置及びその制御方法
JP2010211692A (ja) * 2009-03-12 2010-09-24 Brother Ind Ltd ネットワーク型記憶装置
CN103186621B (zh) * 2011-12-30 2016-07-06 北大方正集团有限公司 一种目录生成方法和装置
US8959118B2 (en) * 2012-04-30 2015-02-17 Hewlett-Packard Development Company, L. P. File system management and balancing
JP2015036893A (ja) * 2013-08-13 2015-02-23 キヤノン株式会社 ファイル記録装置及びファイル管理装置
US9495478B2 (en) * 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
JP2015197810A (ja) * 2014-04-01 2015-11-09 キヤノン株式会社 サーバー装置、情報処理方法及びプログラム
CN105354229B (zh) * 2015-09-30 2019-07-26 联想(北京)有限公司 一种信息处理方法及电子设备

Also Published As

Publication number Publication date
US10175907B2 (en) 2019-01-08
US20170344305A1 (en) 2017-11-30
JP2017211816A (ja) 2017-11-30

Similar Documents

Publication Publication Date Title
US10484468B2 (en) Method and device for downloading file
US20170346893A1 (en) Peer-to-peer data migration
JP2009522611A (ja) 低記憶容量の携帯メディアプレーヤー
JP6772794B2 (ja) 分散データ管理装置、分散データ管理プログラム及び分散データ管理方法
WO2020134616A1 (zh) 联盟链中的请求处理方法、系统、装置及设备
US9628567B2 (en) Methods and systems for efficient discovery of devices in a peer-to-peer network
WO2016101761A1 (zh) 关联账户的更新方法与系统
EP3813001A1 (en) Data reading method based on a plurality of block chain networks and system
JP6227055B1 (ja) ストレージシステム、およびファイル書き込み方法
US10055443B2 (en) Information processing method, storage medium, and information processing apparatus
JP6720120B2 (ja) ストレージ装置、ファイル書き込み方法、およびプログラム
JP5976033B2 (ja) 携帯端末、アクセスポイント関連コンテンツ取得方法、携帯端末用プログラム
WO2019228009A1 (zh) 一种lsm树的优化方法、装置及计算机设备
CN112558872A (zh) 数据处理方法和装置、存储介质和电子设备
CN107209656B (zh) 调整扬声器设置
KR20090020327A (ko) 컨텐츠 자동 수신 및 제공 방법 및 장치
JP2015185119A (ja) 位置コンテンツ提供サーバ、位置コンテンツ提供方法、位置コンテンツ提供サーバ用プログラム
KR20150139546A (ko) 탈착가능형 저장 디바이스 아이덴티티 및 구성 정보
WO2016172948A1 (zh) 路由信息配置方法及装置
CN107872482A (zh) 一种移动终端上传文件的方法及装置
CN105389108A (zh) 一种移动终端触摸操作的识别方法及装置
US10375370B2 (en) Audio capture on mobile client devices
JP5729823B2 (ja) バックアップ装置、バックアップ方法及び、バックアップ用プログラム
US20210144217A1 (en) Service communication proxy apparatus and method
JP2017010566A (ja) アクセスポイント関連コンテンツ提供サーバ

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170822

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170828

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171010

R150 Certificate of patent or registration of utility model

Ref document number: 6227055

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350