JP6439874B2 - 情報処理装置、情報処理方法、及び、情報処理プログラム - Google Patents

情報処理装置、情報処理方法、及び、情報処理プログラム Download PDF

Info

Publication number
JP6439874B2
JP6439874B2 JP2017532267A JP2017532267A JP6439874B2 JP 6439874 B2 JP6439874 B2 JP 6439874B2 JP 2017532267 A JP2017532267 A JP 2017532267A JP 2017532267 A JP2017532267 A JP 2017532267A JP 6439874 B2 JP6439874 B2 JP 6439874B2
Authority
JP
Japan
Prior art keywords
data
transmission
storage unit
identification information
transmission target
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
JP2017532267A
Other languages
English (en)
Other versions
JPWO2017022034A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2017022034A1 publication Critical patent/JPWO2017022034A1/ja
Application granted granted Critical
Publication of JP6439874B2 publication Critical patent/JP6439874B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/137Hash-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、情報処理装置、情報処理方法、及び、情報処理プログラムに関する。
通信の高速化を実現する方法の一つに、転送データ量を削減する方法がある。転送データ量を削減する方法として、例えば、重複して送信されるデータを除去する方法がある。
重複して送信されるデータを除去する方法では、送信側装置及び受信側装置は予め送信又は受信実績のあるデータをキャッシュに保存する。送信側装置は、送信対象データがキャッシュに格納されている場合には、送信対象データの代わりに送信対象データの参照情報を送信する。受信側装置は、データの参照情報を受信すると、キャッシュから該参照情報に該当するデータを読み出し、宛先装置に転送する。送信対象データのサイズに比べて送信対象データの参照情報のサイズは小さいため、転送データ量を削減することができ、送信側装置と受信側装置との間の使用帯域を抑えることができる。以降、重複して送信されるデータを除去する処理及び方法を、重複除去処理及び方法と称する。
図1は、Content Defined Chunkingの処理の一例を示す図である。Content Defined Chunkingは、重複除去方法の一つである。Content Defined Chunkingでは、転送データは、1回目の転送の際に、チャンクと呼ばれる可変長ブロックに分割され、各チャンクがキャッシュに保存される。また、各チャンクについて、ハッシュ値が計算され、ハッシュ値とチャンクの保存位置とが対応付けられる。2回目以降の転送では、転送データはチャンクに分割され、各チャンクのハッシュ値が計算され、該ハッシュ値でキャッシュが検索される。転送データのハッシュ値とチャンクの保存位置との対応付けがある場合には、該転送データのチャンクの代わりにハッシュ値が送信される。転送データのハッシュ値とチャンクの保存位置との対応付けがない場合には、該チャンクが送信される。
チャンクのサイズは、平均1キロバイトである。ハッシュ値のサイズは、例えば、20バイトである。したがって、チャンクの代わりにハッシュ値が転送されることによって、転送データ量が削減される。
Content Defined Chunkingでは、重複データが除去されるか否かは、転送データの中身(コンテンツ)に依存している。そのため、データの一部分が更新された場合も、更新されていない部分のチャンクについては、ハッシュ値によりキャッシュに保存されていることを検出でき、チャンクの代わりにハッシュ値を転送することで、重複除去を行うことができる。
図2は、Object Level Cachingの処理の一例を示す図である。Object Level Cachingは、重複除去方法の一つである。Object Level Cachingでは、例えば、既知の転送プロトコルから転送対象のファイルが割り出され、該ファイルがキャッシュに保存される。ファイルは、オブジェクトの一例である。キャッシュに保存されているファイルに対するアクセス要求に対しては、該キャッシュに保存されているファイルがアクセス要求元に転送される。
図2に示される例では、プロキシサーバは、端末からのオブジェクトAに対するアクセス要求を受けると、オブジェクトAを保持するウェブサーバからオブジェクトAを取得し、該オブジェクトAを端末に転送するとともに、自身のキャッシュに保存する。別の端末からオブジェクトAに対するアクセス要求がある場合には、プロキシサーバは、キャッシュ内のオブジェクトAを該端末に送信する。
Object Level Cachingでは、キャッシュに保存されているファイルに対するアクセス要求がある場合には、ウェブサーバからプロキシサーバへの該ファイルの送信が省略される。したがって、ファイルのサイズが大きいほど、転送データの削減率が向上する。
特表2014−508990号公報 特表2015−502115号公報
しかしながら、従来の重複除去方法には、以下のような問題がある。Content Defined Chunkingでは、転送データの削減率に限界がある、という問題がある。例えば、チャンクの平均サイズは、1キロバイトである。ハッシュ値は、例えば、20バイトである。この場合には、転送データの削減率は、約20バイト/1キロバイトで約1/50が限界となる。また、Content Defined Chunkingでは、チャンクのハッシュ値の計算処理の負荷が大きく、CPU(Central Processing Unit)の負荷が高い、という問題がある。
Object Level Cachingでは、オブジェクト単位、つまり、ファイルごとにキャッシュに保存されるため、ファイルの一部分が変更される場合でも、オリジナルファイルを有する装置からファイル全体の転送をやり直すことになる、という問題がある。頻繁に更新されるファイルについては、Object Level Cachingでは重複除去できなくなる事態に陥るため、例えば、遠隔地でのファイル編集などでは、転送データの削減が十分に行われない。
本発明の一態様は、転送データの重複除去において、転送データ量の削減率の向上可能な情報処理装置、情報処理システム、情報処理方法、及び情報処理プログラムを提供することを目的とする。
本発明の態様の一つは、第1の記憶部と、第2の記憶部と、制御部とを備える情報処理装置である。第1の記憶部は、送信実績のあるオブジェクトの識別情報と、オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて記憶する。第2の記憶部は、送信実績のあるオブジェクトの識別情報と、該オブジェクトの複数のデータブロックとを対応付けて記憶する。制御部は、送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理を行う。また、制御部は、送信対象オブジェクトのデータを所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で第1の記憶部を検索する第2の処理を行う。制御部は、第1の処理において、送信対象オブジェクトと第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも第2の記憶部に記憶されるオブジェクトにおける一致部分の位置情報を送信する。また、制御部は、送信対象オブジェクトにおける不一致部分の開始位置以降のデータについて、第2の処理を行う。また、制御部は、第2の処理において、データブロックの識別情報が第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が第1の記憶部にある場合には、送信対象オブジェクトと第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、第1の処理を行う。
開示の情報処理装置、情報処理システム、情報処理方法、及び情報処理プログラムによれば、転送データの重複除去において、転送データ量の削減率を向上することができる。
Content Defined Chunkingの処理の一例を示す図である。 Object Level Cachingの処理の一例を示す図である。 第1実施形態の転送データのキャッシュへの登録方法の一例を示す図である。 第1実施形態の、送信対象のオブジェクトに更新がある場合の処理の一例を示す図である。 第1実施形態に係る重複除去システムの一例を示す図である。 重複除去装置のハードウェア構成の一例を示す図である。 重複除去システムの機能構成の一例を示す図である。 重複除去装置のキャッシュの内部構成の一例を示す図である。 ハッシュテーブルの一例を示す図である。 送信側重複除去装置が受信側重複除去装置へデータを転送する際のデータフォーマットの一例を示す図である。 データ種別の一例を示す図である。 データのチャンクへの分割方法の一例を示す図である。 データバッファ内のデータの末尾でのチャンク分割処理の一例を示す図である。 送信側重複除去装置の処理の全体フローの一例を示す図である。 重複除去処理のフローチャートの一例である。 Object−linked chunk登録処理のフローチャートの一例である。 Object−linked chunk更新処理のフローチャートの一例である。 Object−linked chunk更新処理のフローチャートの一例である。 データ終了処理のフローチャートの一例である。 受信側重複除去装置の処理のフローチャートの一例を示す図である。 ファイルの上書き更新の具体例の一例を示す図である。 第1実施形態の作用効果の一例を示す図である。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<第1実施形態>
図3は、第1実施形態の転送データのキャッシュへの登録方法の一例を示す図である。第1実施形態では、転送データであるオブジェクトは、1回目の転送時に、チャンクに分割されて、該チャンクは、キャッシュ内のオブジェクトIDごとに割り当てられた連続領域に、順番通りに連続して格納される。各チャンクは、ハッシュ値が算出される。各チャンクのハッシュ値と、オブジェクトIDと、キャッシュにおけるオブジェクト内のチャンクの開始位置と、オブジェクト内におけるチャンクの長さと、が対応付けられてハッシュテーブルに格納される。
第1実施形態では、端末からのデータを転送する重複除去装置は、転送実績のあるオブジェクトのキャッシュと、上記ハッシュテーブルとを保持する。端末からオブジェクトの送信要求を受けると、重複除去装置は、送信対象のオブジェクトに更新があるか否かを判定し、更新がない場合には、宛先装置に該オブジェクトを送信せずに、送信元の端末に代理で応答を送信する。
図4は、第1実施形態の、送信対象のオブジェクトに更新がある場合の処理の一例を示す図である。図4に示される例では、送信元装置2、送信側重複除去装置1A、受信側重複除去装置1B、宛先装置3が抽出されている。送信側重複除去装置1Aと受信側重複除去装置1Bとは、地理的に離れて位置しており、例えば、インターネット等のネットワークを介して接続されている。宛先装置3は、例えば、ファイルサーバである。以降、宛先装置3は、ファイルサーバ3とも表現される。送信元装置2は、例えば、エクスプローラを実行して、ファイルサーバ3上のファイルに遠隔アクセスし、ファイル編集を行っている。
図4に示される例では、送信元装置2がアクセス中であり、更新前のファイルは、送信側重複除去装置1A及び受信側重複除去装置1Bのそれぞれのキャッシュに既に保存されていることとする。また、該ファイルは送信元装置2によって編集され更新されており、送信側重複除去装置1A及び受信側重複除去装置1Bのそれぞれのキャッシュに保存されているものとは一部異なっていることとする。
S1では、送信元装置2において、例えば、アクセス中のファイルの上書き保存の操作が行われると、送信元装置2から送信側重複除去装置1Aにファイルの書き込み要求が届く。S2では、送信側重複除去装置1Aは、書き込み対象のファイルについて、自身のキャッシュに保存されるファイルと、ファイルサーバ3内のファイルとが同期していることを確認する。
S3では、1回の書き込み要求の対象となる、送信元装置2から送信されたデータ(送信対象データ)が、送信側重複除去装置1Aのキャッシュに保存されているデータと一致しているので、送信側重複除去装置1Aは、送信元装置2に代理応答を行う。このとき、送信側重複除去装置1Aは、ファイルサーバ3に該当のデータの送信を行わない。
S4では、1回の書き込み要求の対象となる、送信元装置2からの送信対象データは、更新部分(図中斜線部分)を含んでおり、送信側重複除去装置1Aのキャッシュに保存されているデータと一致していない。この場合には、送信側重複除去装置1Aは、1回の書き込み要求の対象となる送信対象データのうち、更新部分を含むチャンクの箇所については、該チャンクの実データをファイルサーバ3に送信する。
S4での更新部分は、更新前と更新後とでサイズが異なる。そのため、S4での、更新部分以降のデータは、送信元装置2からの送信対象データと送信側重複除去装置1Aのキャッシュに保存されているデータとで内容が一致している場合でも、該一致部分のファイルにおける開始位置が異なる。送信側重複除去装置1Aは、更新部分以降のデータで、送信元装置2からの送信対象データとキャッシュ内のデータとで内容が一致しているデータについては、データそのものは送信せずに該データの更新前のファイルにおけるキャッシュ開始位置と、更新後のファイルにおける開始位置とを送信する。S4の後に、書き込み要求の対象となるデータについても、キャッシュ開始位置が送信される。
一方、受信側重複除去装置1Bでは、更新部分のチャンクの実データと、更新部分以降の一致部分の更新前のファイルにおけるキャッシュ開始位置と、更新後のファイルにおける開始位置とを受信する。受信側重複除去装置1Bは、受信したチャンクと、キャッシュ内の受信したキャッシュ開始位置から読み出したデータとを、それぞれ、更新後のファイルの開始位置に書き出し、ファイルサーバ3に転送する。ファイルサーバ3は、受信側重複除去装置1Bから受信した、更新部分を含むチャンクと、受信側重複除去装置1Bのキャッシュから読み出されたデータとで、対象のファイルを更新する。
更新部分以降で、送信元装置2からの送信対象データと送信側重複除去装置1Aのキャッシュに保存されているデータとで内容が一致しているデータについては、ファイルの更新前の該一致部分のキャッシュ開始位置が送信される。受信側重複除去装置1Bに対して、該一致部分のデータのキャッシュからの読み出し位置を通知することになる。これによって、更新部分のサイズ変更があり、該一致部分の開始位置が移動した場合でも、受信側重複除去装置1Bは、更新部分以降の一致部分のデータをキャッシュ内の適正な位置から読み出すことができる。これによって、ファイルサーバ3上で更新部分以降の一致部分のデータを適切に移動させることができ、送信元装置2とファイルサーバ3とでファイルの整合性を保つことができる。
また、ファイルの上書き更新時には、アプリケーション間でもやり取りが多くなるが、第1実施形態によれば、重複除去処理において、送信元装置2とファイルサーバ3とでファイルの整合性が保たれるので、アプリケーション間のやり取りを削減ができる。チャンクは、「データブロック」の一例である。
<システム構成>
図5は、第1実施形態に係る重複除去システム100の一例を示す図である。重複除去システム100は、送信側重複除去装置1Aと、受信側重複除去装置1Bと、送信元装置2、宛先装置3を含む。送信側重複除去装置1Aと受信側重複除去装置1Bとは、例えば、ネットワークの境界に位置する装置であって、互いにインターネット等を介して接続されている。送信元装置2は送信側重複除去装置1Aの配下の装置であって、送信元装置2が送受信するデータはすべて、送信側重複除去装置1Aを経由する。宛先装置3は受信側重複除去装置1Bの配下の装置であって、宛先装置3が送受信するデータはすべて、受信側重複除去装置1Bを経由する。
<装置構成>
図6は、重複除去装置1のハードウェア構成の一例を示す図である。送信側重複除去装置1A、受信側重複除去装置1Bは、同種の装置であって、区別しない場合には、総称して重複除去装置1と称される。重複除去装置1は、例えば、専用又は汎用のコンピュータである。
重複除去装置1は、CPU(Central Processing Unit)11、主記憶装置12、入力装置13、出力装置14、補助記憶装置15、ネットワークインタフェース17を備える。また、これらはバス19により互いに接続されている。
入力装置13は、例えば、キーボード、キーパッド等である。入力装置13から入力されたデータは、CPU 11に出力される。
補助記憶装置15は、様々なプログラムや、各プログラムの実行に際してCPU 11が使用するデータを格納する。補助記憶装置15は、例えば、EPROM(Erasable Programmable ROM)、フラッシュメモリ、又はハードディスクドライブ(Hard Disk Drive)等の不揮発性のメモリである。補助記憶装置15は、例えば、オペレーティングシステム(OS)、重複除去プログラム、その他様々なアプリケーションプログラムを保持する。重複除去プログラムは、転送データの重複除去処理のためのプログラムである。
主記憶装置12は、CPU 11に、補助記憶装置15に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファ、一時メモリとして用いられたりする。主記憶装置12は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)のような半導体メモリを含む。
CPU 11は、補助記憶装置15に保持されたOSや様々なアプリケーションプログラムを主記憶装置12にロードして実行することによって、様々な処理を実行する。CPU 11は、1つに限られず、複数備えられてもよい。CPU 11は、「制御部」の一例である。
ネットワークインタフェース17は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース17は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース17は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等である。ネットワークインタフェース17で受信されたデータ等は、CPU 11に出力される。
出力装置14は、CPU 11の処理の結果を出力する。出力装置14は、ディスプレイ、プリンタ、スピーカ等の音声出力装置を含む。
なお、図6に示される重複除去装置1のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、重複除去装置1は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、SDカード、miniSDカード、microSDカード、USB(Universal Serial Bus)フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、Blu−ray(登録商標) Disc、又はフラッシュメモリカードのような記録媒体である。また、重複除去装置1が専用のサーバである場合には、例えば、重複除去装置1は、入力装置13、出力装置14を備えていなくてもよい。
図7は、重複除去システム100の機能構成の一例を示す図である。送信側重複除去装置1Aは、機能構成として、接続受付部111、送信データ受信部112、送信データ削減部113、削減データ送信部114、応答転送受信部115、アプリ応答送信部116、切断受付部117、キャッシュ118、ハッシュテーブル119を備える。これらの機能構成は、CPU 11が補助記憶装置15に格納されている重複除去プログラムを実行することによって達成される機能構成である。なお、図7中では、送信元装置2、宛先装置3の代わりに、それぞれ、クライアントアプリケーション、サーバアプリケーションが示されている。以降、送信元装置2は、クライアントアプリケーション2と表記されることもある。宛先装置3は、サーバアプリケーション3と表記されることもある。
接続受付部111は、クライアントアプリケーション2から接続要求を受信し、該接続要求をサーバアプリケーション3に転送する。送信データ受信部112は、クライアントアプリケーション2から送信対象データを受信する。送信データ受信部112は、例えば、データバッファを含み、該データバッファに溜まった送信対象データを送信データ削除部113に出力する。データバッファは、主記憶装置12の作業領域の一部に設けられる。データバッファのサイズは、例えば、80キロバイトである。ただし、データバッファのサイズはこれに限定されない。
送信データ削減部113は、送信データ受信部112から入力される送信対象データに過去の転送データとの重複があるか否かを判定し、重複するデータについては、代替情報を作成する。送信データ削減部113は、重複データの削減後であり代替情報を含む送信対象データを、削減データ送信部114に出力する。重複するデータの代替情報の詳細、送信データ削減部113の処理の詳細については後述される。送信データ削減部113は、「制御部」の一例である。削減データ送信部114は、送信データ削減部113から入力される、重複データの削減後の送信対象データを宛先装置3に送信する。
応答転送受信部115は、削減データ送信部114から送信されたデータに対する宛先装置3からの応答を受信する。応答転送受信部115は、受信した応答をアプリ応答送信部116に出力する。アプリ応答送信部116は、応答転送受信部115から入力される応答を、クライアントアプリケーション2に転送する。
切断受付部117は、クライアントアプリケーション2からの切断要求を受信し、該切断要求をサーバアプリケーション3に転送する。なお、送信側重複除去装置1Aからサーバアプリケーション3に対して転送されるデータは、実際には、受信側重複除去装置1Bに転送されている。以降、送信側重複除去装置1Aからサーバアプリケーション3に対して転送することを、受信側重複除去装置1Bに送信する、とも表記するが、いずれも、転送データは受信側重複除去装置1Bを経由してサーバアプリケーション3に届けられるという点で同じである。
キャッシュ118は、例えば、補助記憶装置15の記憶領域に作成される。なお、キャッシュ118に用いられる補助記憶装置15は、送信側重複除去装置1Aに内蔵されていてもよく、外付けされていてもよい。キャッシュ118は、オブジェクトIDごとに連続領域が確保されており、各オブジェクトの連続領域には、該オブジェクトのチャンクが順番に連続して格納されている。キャッシュ118内の各オブジェクトに確保される連続領域のサイズは、予め決められたサイズであってもよいし、オブジェクトのサイズに応じて設定されてもよい。キャッシュ118は、「第2の記憶部」の一例である。
ハッシュテーブル119は、例えば、主記憶装置12の記憶領域に作成される。ハッシュテーブル119には、キャッシュに格納されているチャンクの情報が保持される。ハッシュテーブル119の詳細については、後述される。ハッシュテーブル119は、「第1の記憶部」の一例である。
受信側重複除去装置1Bは、機能構成として、サーバ接続部121、削減データ受信部122、削減データ復元部123、復元データ送信部124、アプリ応答受信部125、アプリ応答転送部126、サーバ切断部127、キャッシュ128を備える。これらの機能構成は、CPU 11が補助記憶装置15に格納されている重複除去プログラムを実行することによって達成される機能構成である。
サーバ接続部121は、送信元装置2からの接続要求を受信し、サーバアプリケーション3に転送する。削減データ受信部122は、送信側重複除去装置1Aによって転送される転送データを受信する。受信したデータには、重複データの代替情報が含まれている場合がある。削減データ受信部122は、受信したデータを削減データ復元部123に出力する。
削減データ復元部123は、送信側重複除去装置1Aによって転送されたデータに重複データの代替情報が含まれている場合には、該代替情報に合致するデータをキャッシュ128から読み出して復元する。削減データ復元部123は、復元したデータを含む受信デ
ータを復元データ送信部124に出力する。復元データ送信部124は、削減データ復元部123から入力されるデータを、サーバアプリケーション3に送信する。なお、削減データ復元部123は、送信側重複除去装置1Aによって転送されたデータに、新規データが含まれている場合には、該新規データをキャッシュ128に保存する。
アプリ応答受信部125は、サーバアプリケーション3からの応答を受信し、該応答をアプリ応答転送部126に出力する。アプリ応答転送部126は、アプリ応答受信部125から入力されるサーバアプリケーション3からの応答を、送信元装置2に送信する。
サーバ切断部127は、送信元装置2からの切断要求を受信し、サーバアプリケーション3に転送する。なお、受信側重複除去装置1Bが、送信元装置2から受信するデータ、送信元装置2へ送信するデータは、実際には、受信側重複除去装置1Bを介している。
キャッシュ128は、例えば、受信側重複除去装置1Bの補助記憶装置15の記憶領域に作成される。なお、キャッシュ128に用いられる補助記憶装置15は、受信側重複除去装置1Bに内蔵されていてもよく、外付けされていてもよい。キャッシュ128には、送信側重複除去装置1Aのキャッシュ118と同様に、オブジェクトIDごとに連続領域が確保されており、各オブジェクトの連続領域には、該オブジェクトのチャンクが順番に連続して格納されている。
図8は、重複除去装置1のキャッシュのデータ構造の一例を示す図である。キャッシュには、オブジェクトごとに連続領域が確保されており、各オブジェクトの連続領域には、該オブジェクトのチャンクが格納される。チャンクは、順番通りに連続して格納される。
各オブジェクトの領域には、ファイル変更フラグが含まれる。ファイル変更フラグは、該当のオブジェクトに変更があるか否かを示すフラグである。例えば、ファイル変更フラグがON(1)である場合には、該当のファイルに変更があることが示される。例えば、ファイル変更フラグがOFF(0)である場合には、該当のファイルに変更がないことが示される。
なお、送信側重複除去装置1Aのキャッシュ118と、受信側重複除去装置1Bのキャッシュ128は、いずれも、図8に示されるような構成をしている。
図9は、ハッシュテーブル119の一例を示す図である。ハッシュテーブル119には、送信側重複除去装置1Aのキャッシュ118に格納されているチャンクの情報が格納される。具体的には、ハッシュテーブル119のエントリには、ハッシュ値、オブジェクトID、開始位置、長さが格納される。ハッシュテーブル119はハッシュ値をキーとして検索される。
「ハッシュ値」には、例えば、SHA1(Secure Hash Algorithm)の計算によって求められる、20バイト程度の値が格納される。ハッシュ値は、「データブロックの識別情報」の一例である。「オブジェクトID」には、例えば、オブジェクトがファイルである場合には、ファイルIDが格納される。ファイルIDは、例えば、ファイル名であってもよい。
「開始位置」には、キャッシュ118内のオブジェクトにおけるチャンクの開始位置が、バイト単位で格納される。「長さ」には、チャンクの長さが格納される。チャンクの長さは、キャッシュ118内のオブジェクトにおけるチャンクの終了位置からチャンクの開始位置を差し引いて求められる。
ハッシュテーブル119は、クライアントアプリケーション2から受信される送信対象データと、送信側重複除去装置1Aのキャッシュ118内のデータとで不一致が検出された場合に、不一致部分以降の一致部分の再開位置を見つける際に、用いられる。
<送受信データフォーマット>
図10は、送信側重複除去装置1Aが受信側重複除去装置1Bへデータを転送する際のデータフォーマットの一例を示す図である。データの先頭には、オブジェクトIDが格納される。次に、フラグとデータ部(データフィールド)との組合せが複数個連なる。フラグとデータ部との組合せが連なる個数は、可変である。
送信側重複除去装置1Aは、クライアントアプリケーション2からの送信対象データを、データバッファサイズの単位で処理する。データバッファのサイズは、例えば、80キロバイトである。そのため、図10に示されるデータフォーマットは、データバッファのサイズのデータ1つに対して、1つ作成される。
図11は、データ種別の一例を示す図である。図11では、図10に示される送信側重複除去装置1Aが受信側重複除去装置1Bへデータを転送する際のデータフォーマットに含まれるデータ部の種別の一例が示されている。
フラグが0である場合には、データ部には実データが格納されていることが示される。フラグが0である場合には、データ部には、オブジェクト内のデータの開始位置、データ長、実データが格納される。オブジェクト内のデータの開始位置は、クライアントアプリケーション2から送信された送信対象オブジェクト内における当該データの開始位置である。オブジェクトの内のデータの開始位置の格納フィールドのサイズは、例えば、8バイトで固定されている。データ長の格納フィールドのサイズは、例えば、8バイトで固定されている。実データの格納フィールドのサイズは、実データのデータ長に合わせて可変である。
フラグが1である場合には、データ部には、重複データの情報が格納されていることが示される。フラグが1である場合には、データ部には、オブジェクト内のデータの開始位置、一致長、キャッシュ開始位置が含まれる。オブジェクト内のデータの開始位置は、クライアントアプリケーション2から送信された送信対象オブジェクト内における重複データの開始位置である。一致長は、クライアントアプリケーション2から送信された送信対象オブジェクトと送信側重複除去装置1Aのキャッシュ118に格納されているオブジェクトとのデータの連続して一致する一致長である。キャッシュ開始位置は、送信側重複除去装置1Aのキャッシュ118に格納されているオブエジェクト内の重複データの格納開始位置である。
フラグが1の場合のデータ部の開始位置、一致長、キャッシュ開始位置のそれぞれの格納フィールドのサイズは、例えば、8バイトで固定されている。
第1実施形態では、データバッファの単位で、図10に示されるデータフォーマットのデータが作成される。データバッファに格納されているクライアントアプリケーション2から送信された送信対象オブジェクトのデータすべてが、送信側重複除去装置1Aのキャッシュ118に格納されているオブジェクトのデータと一致する場合には、図10に示されるデータフォーマットの送信パケットは作成されない。この場合には、クライアントアプリケーション2に対して代理応答が行われる。
データバッファに格納されているデータのうち、20キロバイト目から30キロバイト目までのデータが更新されており、更新部分が更新前20キロバイトから更新後10キロバイトになっている場合には、データフォーマットは、以下のようになる。データバッファサイズを80キロバイトと仮定する。
・オブジェクトID
・フラグ(1)、開始位置(X)、一致長(20キロバイト)、キャッシュ開始位置(X)
・フラグ(0)、開始位置(X+20キロバイト)、データ長(10キロバイト)、実データ
・フラグ(1)、開始位置(X+30キロバイト)、一致長(50キロバイト)、キャッシュ開始位置(X+40キロバイト)
3つめのフラグとデータ部との組合せにおけるキャッシュ開始位置は、キャッシュ118内のオブジェクトにおける重複データの格納開始位置であるので、X+20キロバイト(1つ目の一致長)+20キロバイト(更新部分のデータの更新前のサイズ)となる。これによって、受信側重複除去装置1Bは、更新部分に続く更新されていないデータを、キャッシュ128のキャッシュ開始位置X+40キロバイトの位置からから適正に読み出すことができる。
<データのチャンクへの分割方法>
図12は、データのチャンクへの分割方法の一例を示す図である。チャンクは、データバッファから読み出されたデータを、領域をずらしながら、切断条件のビットパターンに合致するか否かを判定することで作成される。切断条件のビットパターンとは、例えば、1024分の1の確率でビット列に出現する所定のパターンである。切断条件のビットパターンに合致するビット列が出現すると、該ビット列の末尾でデータは切断され、チャンクに分割される。
図12に示される例では、データバッファ内の部分データ710のビットパターンが、切断条件のビットパターンに合致していないので、部分データ710の末尾である現在位置では、チャンクに分割されない。データバッファ内の部分データ720のビットパターンは、切断条件のビットパターンに合致しているので、部分データ720の末尾である現在位置でチャンクに分割される。図12に示されるデータの先頭から部分データ720の末尾までが1つのチャンクとして登録される。チャンクの終了位置は、次のチャンクの開始位置でもある。ただし、位置がバイトで表される場合には、次のチャンクの開始位置は、チャンクの終了位置+1バイトである。
図13は、データバッファ内のデータの末尾でのチャンク分割処理の一例を示す図である。データバッファ内のデータの末尾のビット列が切断条件のビットパターンに合致しない場合には、直前のチャンクの終了位置からデータバッファ内のデータの末尾までのデータは、実データのまま、キャッシュに登録される。該当部分については、チャンクではないので、ハッシュテーブル119にも登録されない。
<処理の流れ>
図14は、送信側重複除去装置1Aの処理の全体フローの一例を示す図である。図14に示される処理は、送信側重複除去装置1Aが起動するとともに、開始される。図14に示される処理の実行主体は、CPU 11であるが、それぞれの処理について、CPU 11が重複除去プログラムを実行して達成される機能構成を主体として説明する。
OP1では、接続受付部111は、クライアントアプリケーション2から接続要求を受け付ける。OP2では、接続受付部111は、受け付けた接続要求をサーバアプリケーション3へ転送する。接続要求は、受信側重複除去装置1Bに届き、受信側重複除去装置1Bによってサーバアプリケーション3に転送される。
OP3では、受信されたイベントが振り分けられる。イベントがクライアントアプリケーション2からの送信対象データの受信である場合には、処理がOP4に進む。イベントが受信側重複除去装置1Bからの応答データの受信である場合には、処理がOP5に進む。イベントがクライアントアプリケーション2からの切断要求の受信である場合には、処理がOP6に進む。
OP4では、クライアントアプリケーション2から受信された送信対象データについて、重複除去処理が行われる。重複除去処理の詳細については、後述される。重複除去処理が終了すると、処理がOP3に進む。
OP5では、応答転送受信部115は、受信側重複除去装置1Bからの応答データをアプリ応答送信部116に出力し、アプリ応答送信部116は、クライアントアプリケーション2に応答データを転送する。その後、処理がOP3に進む。
OP6では、切断受付部117は、クライアントアプリケーション2から受信した切断要求を受信側重複除去装置1Bに転送する。その後、図14に示される処理が終了する。
図15は、重複除去処理のフローチャートの一例である。図15のフローチャートは、クライアントアプリケーション2から書込要求が受信されると開始される。図15に示される処理の実行主体は、CPU 11であるが、便宜上、送信データ削減部113を主体として説明する。
OP11では、送信データ削減部113は、送信データ受信部112から、書込要求の対象の、データバッファに蓄積された分の送信対象データを取得する。
OP12では、送信データ削減部113は、書込要求の対象の送信対象データを含むファイルが、新規ファイルであるか否かを判定する。以降、書込み要求対象のデータを含むファイルのことを、単に、書込要求対象のファイル、と称する。例えば、キャッシュ118に書込要求の対象のファイルのオブジェクトIDとデータとが対応付けて格納されている場合には、書込要求の対象のファイルは新規ファイルではないと判定される。例えば、キャッシュ118に書込要求の対象のファイルのオブジェクトIDとデータとが対応付けて格納されていない場合には、書込要求の対象のファイルは新規ファイルであると判定される。ファイルのオブジェクトIDは、例えば、ファイル名である。ファイル名は、書込要求に含まれている。
書込要求の対象のファイルが新規ファイルである場合には(OP12:YES)、処理がOP13に進む。書込要求の対象のファイルが新規ファイルでない場合には(OP12:NO)、処理がOP15に進む。
OP13では、送信データ削減部113は、新規ファイルをキャッシュ118に登録する処理であるObject−linked chunk登録処理を実施する。Object−linked chunk登録処理の詳細は後述される。
OP14では、送信データ削減部113は、書込要求の対象の送信対象データを、削減データ送信部114に出力する。削減データ送信部114によって、送信対象データが受信側重複除去装置1Bに転送される。その後、図15に示される処理が終了する。
OP15では、送信データ削減部113は、書込要求に含まれるメッセージを判定する。書込要求に含まれるメッセージには、例えば、ファイルの開始を示す「OPEN」、ファイルの途中のデータであることを示す「READ」、ファイルの終了を示す「CLOSE」がある。書込要求に含まれるメッセージが「OPEN」である場合には、処理がOP16に進む。書込要求に含まれるメッセージが「READ」である場合には、処理がOP18に進む。書込要求に含まれるメッセージが「CLOSE」である場合には、処理がOP20に進む。
OP16では、送信データ削減部113は、書込要求の対象のファイルについて、キャッシュ118に格納されているデータと、サーバアプリケーション3が保持しているデータとが一致するか否かを問い合わせる。
OP17では、送信データ削減部113は、OP16の問い合わせの結果をファイル変更フラグに設定する。書込要求の対象のファイルについて、キャッシュ118に格納されているデータと、サーバアプリケーション3が保持しているデータとが一致するか否かに応じて、ファイル変更フラグは、「変更無し」、「変更有り」のいずれかを示す値に設定される。
OP18、OP20では、送信データ削減部113は、サーバアプリケーション3に保存されているデータを更新するための情報を生成する処理であるObject−linked chunk更新処理を行う。Object−linked chunk更新処理では、例えば、図10に示されるフォーマットの送信パケットが作成される。Object−linked chunk更新処理の詳細は、後述される。
OP19、OP21では、送信データ削減部113は、OP18、OP20で作成される送信パケットを受信側重複除去装置1Bに送信する。OP19の処理の後には、図15に示される処理が終了する。
OP22では、送信データ削減部113は、キャッシュ118内の書込要求の対象のファイルに更新がある場合には、キャッシュ118内の該ファイルを更新する。その後、図15に示される処理が終了する。
図16は、Object−linked chunk登録処理のフローチャートの一例である。Object−lined chunk登録処理は、新規ファイルのデータをキャッシュに登録する処理である。図16に示される処理の実行主体は、CPU 11であるが、便宜上、送信データ削減部113を主体として説明する。
OP31では、送信データ削減部113は、データバッファ内の送信対象データを取得する。このとき、送信データ削減部113は、送信対象データ含むファイルのファイル名、送信対象データを含むファイル内における送信対象データの書き込み開始位置、データバッファの長さ、データバッファ内の送信対象データを取得する。
OP32では、送信データ削減部113は、オブジェクトIDを取得し、キャッシュ118内に該オブジェクトIDに対応する領域を確保する。キャッシュ118に確保される領域は、いずれのオブジェクトIDについても、一律に設定されたサイズで確保されてもよいし、ファイルのサイズを取得して、該ファイルのサイズよりも大きく確保されてもよい。
OP33では、送信データ削減部113は、データ現在位置を書込み開始位置に、チャンク開始位置を書込み開始位置に設定する。データ現在位置は、送信対象データを含むファイルにおける現在参照中の位置を示すパラメータである。チャンク開始位置は、送信対象データを含むファイルにおけるチャンクの開始位置である。
OP34では、送信データ削減部113は、送信対象データが終了したか否かを判定する。送信対象データが終了している場合には(OP34:YES)、処理がOP38に進む。送信対象データが終了していない場合には(OP34:NO)、処理がOP35に進む。
OP35では、送信データ削減部113は、データ現在位置がチャンクの切断位置であるか否かを判定する。この処理は、データ現在位置から所定ビット長さかのぼったビット列が切断条件のビットパターンに合致するか否かを判定することによって行われる(図12参照)。データ現在位置がチャンク切断位置である場合には(OP35:YES)、処理がOP36に進む。データ現在位置がチャンク切断位置でない場合には(OP35:NO)、処理がOP37に進む。
OP36では、送信データ削減部113は、以下のことを行う。送信データ削減部113は、チャンク終了位置をデータ現在位置に設定する。送信データ削減部113は、チャンク開始位置からチャンク終了位置までのハッシュ値を算出し、算出したハッシュ値をハッシュテーブル119に登録する。ハッシュテーブル119には、ハッシュ値に加えて、オブジェクトID、チャンク開始位置、チャンクの長さも登録される。送信データ削減部113は、チャンク開始位置をデータ現在位置+1バイトに更新する。送信データ削減部113は、チャンクをキャッシュ118に書き込む。
OP37では、送信データ削減部113は、データ現在位置に1バイト加算して、データ現在位置を更新する。次に処理がOP34に進む。
OP38では、データバッファ内の送信対象データが終了したので、送信対象データの末尾がチャンク切断位置でない場合には、送信データ削減部113は、直前のチャンクの終了位置から末尾までの実データをキャッシュ118に書き込む。その後、図16に示される処理が終了する。
図17A及び図17Bは、Object−linked chunk更新処理のフローチャートの一例である。Object−linked chunk更新処理は、サーバアプリケーション3に保存されているデータを更新するための情報を生成する処理である。図17A及び図17Bに示される処理の実行主体は、CPU 11であるが、便宜上、送信データ削減部113を主体として説明する。
OP41では、送信データ削減部113は、データバッファ内の送信対象データを取得する。このとき、送信データ削減部113は、送信対象データを含むファイルのファイル名、送信対象データを含むファイル内における該送信対象データの書き込み開始位置、データバッファの長さ、データバッファ内の送信対象データを取得する。
OP42では、送信データ削減部113は、オブジェクトIDを取得し、キャッシュ118内の該オブジェクトIDに対応する領域を特定する。
OP43では、送信データ削減部113は、データ開始位置、データ現在位置、及びチャンク開始位置を書き込み開始位置に設定する。送信データ削減部113は、一致長を0に設定する。送信データ削減部113は、全一致長を0に設定する。送信データ削減部113は、ObjectCheckModeをtrueに設定する。また、キャッシュ現在位置は、キャッシュ118内の該当するファイルにおける現在の参照位置を示すパラメータであり、送信対象データの書込み開始位置が0である場合に、0に設定され、以降は、同ファイルの前回の送信対象データの処理終了時の値が引き継いで用いられる。キャッシュ開始位置は、OP43において、キャッシュ現在位置に設定される。
一致長は、送信対象データとキャッシュ118内のデータとが連続して一致する長さを示すパラメータである。全一致長とは、送信対象データとキャッシュ118内のデータとが一致する長さの総合計を示すパラメータである。
ObjectCheckModeは、送信対象データのチェック方法を示す。ObjectCheckModeがtrueの場合には、送信対象データとキャッシュ118内のデータとの単純なメモリ比較が行われる。ObjectCheckModeがfalseの場合には、送信対象データがチャンクに分割され、チャンクのハッシュ値が算出され、該ハッシュ値でハッシュテーブル119が検索される処理が行われる。ObjectCheckModeがtrueの場合の処理は、「第1の処理」の一例である。ObjectCheckModeがfalseの場合の処理は、「第2の処理」の一例である。
OP44では、送信データ削減部113は、送信対象データについて、処理が終了したか否かを判定する。送信対象データについて処理が終了した場合には(OP44:YES)、処理がOP45に進む。送信対象データについて処理が終了していない場合には(OP44:NO)、処理がOP46に進む。
OP45では、送信対象データについての処理が終了したので、データ終了処理が行われる。データ終了処理の詳細は後述される。データ終了処理の完了後、図17Aに示される処理が終了する。
OP46では、送信データ削減部113は、ObjectCheckModeがtrueであるか否かを判定する。ObjectCheckModeがtrueの場合には(OP46:YES)、処理がOP47に進む。ObjectCheckModeがfalseの場合には、処理がOP51に進む。
OP47からOP50の処理は、ObjectCheckModeがtrueの場合の処理である。OP47では、送信データ削減部113は、キャッシュ118のキャッシュ現在位置と送信対象データのデータ現在位置とのデータを照合する。
OP48では、送信データ削減部113は、キャッシュ118のキャッシュ現在位置と送信対象データのデータ現在位置とのデータが一致するか否かを判定する。キャッシュ118のキャッシュ現在位置と送信対象データのデータ現在位置とのデータが一致する場合には(OP48:YES)、処理がOP49に進む。キャッシュ118のキャッシュ現在位置と送信対象データのデータ現在位置とのデータが一致しない場合には(OP48:NO)、処理がOP50に進む。
OP49では、キャッシュ118のキャッシュ現在位置と送信対象データのデータ現在位置とのデータが一致するので、送信データ削減部113は、データ現在位置、キャッシュ現在位置、一致長、全一致長のそれぞれの値に1バイトを加算して更新する。次に処理がOP44に進む。
OP50では、送信データ削減部113は、ObjectCheckModeをfalseに設定する。送信データ削減部113は、一致長をデータ現在位置からデータ開始位置を減じた値に更新する。送信データ削減部113は、一致長が0より大きい場合に、送信対象データにおける一致開始の位置(開始位置)とキャッシュ118内のデータにおける一致開始の位置(キャッシュ開始位置)と、更新後の一致長と、を送信パケットのフラグが1のデータ部に追加する。次に、送信データ削減部113は一致長を0に設定する。送信データ削減部113は、チャンク開始位置をデータ現在位置に設定する。送信データ削減部113は、データ開始位置をチャンク開始位置に設定する。次に処理がOP44に
進む。
図17BのOP51からOP56の処理は、ObjectCheckModeがfalseの場合の処理である。OP51では、送信データ削減部113は、送信対象データのデータ現在位置がチャンク切断位置であるか否かを判定する。送信対象データのデータ現在位置がチャンク切断位置である場合には(OP51:YES)、処理がOP52に進む。送信対象データのデータ現在位置がチャンク切断位置でない場合には(OP51:NO)、処理がOP56に進む。
OP52では、送信データ削減部113は、チャンク開始位置からデータ現在位置までのデータについて、ハッシュ値を算出する。OP53では、送信データ削減部113は、算出したハッシュ値がハッシュテーブル119内に存在するか否かを判定する。
算出したハッシュ値がハッシュテーブル119内に存在する場合には(OP53:YES)、処理がOP54に進む。算出したハッシュ値がハッシュテーブル119内に存在しない場合には(OP53:NO)、処理がOP55に進む。
OP54では、送信データ削減部113は、ObjectCheckModeをtrueに設定する。送信データ削減部113は、データ開始位置をチャンク開始位置に更新する。データ現在位置は、更新後のデータ開始位置とチャンク長とを加算した値から1バイト減じた値と一致する。送信データ削減部113は、キャッシュ開始位置をハッシュテーブルの該当エントリ内のキャッシュ開始位置に更新する。送信データ削減部113は、キャッシュ現在位置をキャッシュ開始位置にチャンク長を加算した値に更新する。送信データ削減部113は、一致長をチャンク長に更新する。
OP55では、送信データ削減部113は、算出したハッシュ値をハッシュテーブル119に登録する。送信データ削減部113は、チャンク開始位置からデータ現在位置までの新規データを、送信パケットのフラグがのデータ部に追加する。送信データ削減部113は、チャンク開始位置をデータ現在位置に1バイト加算した値に更新する。
OP56では、送信データ削減部113は、データ現在位置に1バイトを加算して更新する。その後、処理がOP44に進む。
図18は、データ終了処理のフローチャートの一例である。データ終了処理は、送信対象データについての処理が終了した場合の処理である。
OP61では、送信データ削減部113は、ObjectCheckModeがtrueであるか否かを判定する。ObjectCheckModeがtrueの場合には(OP61:YES)、処理がOP62に進む。ObjectCheckModeがfalseの場合には(OP61:NO)、処理がOP66に進む。
OP62からOP65は、ObjectCheckModeがtrueの場合、すなわち、送信対象データの末尾とキャッシュ118内のデータとが一致している場合の処理である。OP62では、送信データ削減部113は、一致長をデータ現在位置からデータ開始位置を減じた値に更新する。送信データ削減部113は、全一致長を、更新後の一致長を加算した値に更新する。送信データ削減部113は、一致長が0より大きい場合には、一致開始の送信対象データにおけるデータの位置とキャッシュ118内の位置と、更新後の一致長と、を送信パケットのフラグが1のデータ部に追加する。
OP63では、送信データ削減部113は、一致長とデータバッファ長が一致し、且つ、ファイル変更フラグが変更なしであり、且つ、データ開始位置がキャッシュ開始位置であるか否かを判定する。この判定によって、データバッファ内の送信対象データと、キャッシュ118内のデータが全一致し、対象のファイルの更新があるか否かが判定される。上記条件が満たされている場合には(OP63:YES)、処理がOP65に進む。上記条件が満たされていない場合には(OP63:NO)、処理がOP64に進む。
OP64では、上記条件が満たされていないので、データバッファ内の送信対象データとキャッシュ118内のデータとが、全一致していない、又は、全一致していても、ファイルの更新によって、開始位置が一致していないことが示される。そのため、送信データ削減部113は、送信パケットを送信する。その後、図18に示される処理が終了する。
OP65では、上記条件が満たされており、データバッファ内の送信対象データとキャッシュ118内のデータと、が全一致しており、且つ、開始位置も一致しているので、送信データ削減部113は、クライアントアプリケーション2に対して代理応答を行う。このとき、サーバアプリケーション3に対してはデータは送信されない。その後、図18に示される処理が終了する。
OP66からOP67の処理は、ObjectCheckModeがfalseである場合の処理である。OP66では、送信データ削減部113は、フラグがのデータ部のデータ長をデータ現在位置からデータ開始位置(チャンク開始位置)を減じた値にし、チャンク開始位置から末尾のデータまでの新規データを当該データ部に追加する。
OP67では、送信データ削減部113は、送信パケットを送信する。その後、図18に示される処理が終了する。
図19は、受信側重複除去装置1Bの処理のフローチャートの一例を示す図である。図19に示される処理は、受信側重複除去装置1Bの起動とともに開始され、稼働中は繰り返し実行される。図19の処理の実行主体はCPU 11であるが、便宜上、削減データ復元部123を主体として説明する。
OP71では、削減データ復元部123は、削減データ受信部122を通じて、送信側重複除去装置1Aからデータを受信する。OP72では、削減データ復元部123は、データ内のオブジェクトIDから、キャッシュ128の領域を特定する。
OP73では、削減データ復元部123は、受信データが終了したか否かを判定する。受信データが終了している場合には(OP73:YES)、図19に示される処理が終了する。受信データが終了していない場合には(OP73:NO)、処理がOP74に進む。
OP74では、削減データ復元部123は、フラグが0であるか否かを判定する。フラグが0である場合には(OP74:YES)、処理がOP75に進む。フラグが1である場合には(OP74:NO)、処理がOP79に進む。
OP75からOP78は、フラグが0である、すなわち、データ部に実データが含まれている場合の処理である。OP75では、削減データ復元部123は、データ部内の開始位を読み込む。OP76では、削減データ復元部123はデータ部内のデータ長を読み込む。OP77では、削減データ復元部123は、データ部の実データをデータ長分読み込む。
OP78では、削減データ復元部123は、読み込んだ実データを、主記憶装置12内の一時メモリ領域の、ファイルにおける読み込んだ開始位置に書き込む。次に処理がOP73に進む。
OP79からOP83の処理は、フラグが1である場合、すなわち、重複データである場合の処理である。OP79では、削減データ復元部123は、データ部内の開始位を読み込む。OP80では、削減データ復元部123はデータ部内の一致長を読み込む。OP81では、削減データ復元部123は、データ部内のキャッシュ開始位置を読み込む。
OP82では、削減データ復元部123は、キャッシュ128の、受信データのデータ部から読み込んだキャッシュ開始位置から、受信データのデータ部から読み込んだ一致長分の実データを読み込む。OP83では、削減データ復元部123は、読み込んだ実データを、主記憶装置12内の一時メモリ領域のファイルにおける、受信データのデータ部から読み込んだ開始位置に書き込む。次に処理がOP73に進む。
なお、ファイルが終了した場合には、一時メモリ領域に書き込まれたデータが、キャッシュ128内の該当のオブジェクトIDの領域に上書き保存される。また、一時メモリ領域に書き込まれたデータは、受信側重複除去装置1Bからサーバアプリケーション3に送信され、サーバアプリケーション3内の該当のファイルが上書き更新される。
<具体例>
図20は、ファイルの上書き更新の具体例の一例を示す図である。図20では、クライアントアプリケーションから、ファイルAの上書き更新要求が送信された場合の例が示される。ファイルAの更新部分は斜線で示されている。図20の「送信対象ファイル」は、クライアントアプリケーションから送信され、送信側重複除去装置1Aのデータバッファに格納されるデータが示されている。図20では、データバッファのサイズは、80キロバイトとする。データ#1、データ#2、データ#3は、それぞれ、データバッファに格納され、一回の書き込み要求の対象となるデータである。
ファイルAは、送信側重複除去装置1Aのキャッシュ118、受信側重複除去装置1Bのキャッシュ128にそれぞれ更新前の状態で保存されている。なお、図20に示される例では、クライアントアプリケーション2とサーバアプリケーション3間の接続は既に確立されているものとする。
S11では、送信データ削減部113は、クライアントアプリケーション2から、メッセージ「OPEN」が含まれる書き込み要求を受信する(図15、OP11、OP12:NO、OP15)。
S12では、送信データ削減部113は、サーバアプリケーション3にキャッシュ118のファイルAとサーバアプリケーション3が保持するファイルAとが一致するか否かを問い合わせる(図15、OP16)。図20では、サーバアプリケーション3は省略されている。送信データ削減部113は、問合せの結果をファイル変更フラグに設定する(図15、OP17)。図20では、キャッシュ118のファイルAとサーバアプリケーション3が保持するファイルAとが一致するため、ファイル変更フラグは、変更なしに設定される。
送信対象データ#1については、更新部分を含んでおらず、送信対象データとキャッシュ118内のデータとが一致するため、図17AのOP46からOP49の処理が繰り返し行われる。データ#1のデータ終了時には、ObjectCheckModeはtrueである(図18、OP61:YES)。一致長は80キロバイトでデータバッファのサイズと一致する。ファイル変更フラグは、変更なしである。データ開始位置とキャッシュ開始位置とは、ともに0バイトで一致する(図18、OP63:YES)。
そのため、S13では、送信データ削減部113は、クライアントアプリケーション2に代理応答を行い、受信側重複除去装置1Bにはデータを送信しない(図18、OP65)。
S14では、送信データ削減部113は、クライアントアプリケーション2から、メッセージ「READ」が含まれる書き込み要求を受信する(図15、OP11、OP12:NO、OP15)。
送信対象データ#2の書込み開始位置は80キロバイトであるので、データ開始位置は、80キロバイトである。送信対象データ#2のキャッシュ開始位置は、送信対象データ#1の処理の終了時のキャッシュ現在位置であるので、80キロバイトである。データ#2は更新部分を含む。送信対象データ#2を含むファイルの80キロバイト目から99999バイト目までは、更新されていないので、図17のOP46からOP49の処理が繰り返される。
送信対象データ#2を含むファイルの100キロバイト目から149999バイト目までは、更新部分である。送信対象データ#2を含むファイルの100キロバイト目と、キャッシュ118内のファイルAの100キロバイト目との比較(図17A、OP47)では、データは一致しない(図17A、OP48:NO)。
ここで、フラグが1、開始位置:80キロバイト、一致長:20キロバイト(データ現在位置100キロバイト−データ開始位置80キロバイト)が格納されたデータ部が送信パケットに追加される(図17A、OP50)。ObjectCheckModeがfalseに設定される。チャンク開始位置がデータ現在位置の100キロバイトに設定される。
以降の送信対象データ#2を含むファイルの100キロバイト目から149999バイト目までは、更新部分であるので、図17AのOP46:NO、図17BのOP51からOP53、OP55からOP56の処理が繰り返される。
更新部分の末尾である149999バイト目の処理において、チャンク開始位置は、データ現在位置に1バイト加算したである150キロバイトに設定される(図17B、OP55)。また、開始位置が100キロバイト、チャンク長50キロバイト、送信対象データ#2を含むファイルの100キロバイト目から149999バイト目までの実データを含む、フラグ0のデータ部が送信パケットに追加される。
送信対象データ#2を含むファイルの150キロバイト目からは、送信対象データ#2を含むファイルとキャッシュ118内のファイルAとでデータが一致する。そのため、送信対象データ#2を含むファイルの150キロバイト目以降の最初のチャンク切断位置(図17B、OP51:YES)において、算出されたハッシュ値はハッシュテーブル119に存在する(図17B、OP53:YES)。ハッシュテーブル119における該チャンクのエントリには、キャッシュ開始位置160キロバイトで登録されているとする。
このとき、ObjectCheckModeがtrueに設定される。データ開始位置は、チャンク開始位置である150キロバイトに設定される。キャッシュ開始位置は、算出されたハッシュ値のハッシュテーブル119内のキャッシュ位置160キロバイトに設定される。一致長は、チャンク長、すなわち、送信対象ファイルの150キロバイト目から、チャンク切断位置までの長さに設定される。
送信対象データ#2を含むファイルの160キロバイト目までは、ObjectCheckModeがtrueであり(図17A、OP46:YES)、送信対象データ#2を含むファイルとキャッシュ118内のファイルAとでデータが一致するので、図17AのOP47からOP49の処理が繰り返される。
データ現在位置が160キロバイトになると、送信対象データ#2の処理が終了し(図17A、OP44:YES)、図18のデータ終了処理が行われる。一致長は、データ現在位置の160キロバイトからデータ開始位置の150キロバイトが減じられた10キロバイトである。全一致長は、20キロバイトに一致長10キロバイトを加算した30キロバイトである。また、送信パケットに、開始位置150キロバイト、一致長10キロバイト、キャッシュ開始位置160キロバイトを含み、フラグが1のデータ部が追加される(図18、OP62)。
S15では、1回の書き込み要求の対象である送信対象データ#2について処理が終了するので、送信パケットが受信側重複除去装置1Bに送信される。送信パケットの内容は以下の通りである。
・オブジェクトID(ファイルA)
・フラグ(1)、開始位置(80キロバイト)、一致長(20キロバイト)、キャッシュ開始位置(80キロバイト)
・フラグ(0)、開始位置(100キロバイト)、データ長(50キロバイト)、実データ
・フラグ(1)、開始位置(150キロバイト)、一致長(10キロバイト)、キャッシュ開始位置(160キロバイト)
受信側重複除去装置1Bでは、上記内容のパケットを受信し、一時メモリにファイルAのデータを書き込む。まず、フラグ(1)、開始位置(80キロバイト)、一致長(20キロバイト)、キャッシュ開始位置(80キロバイト)のデータ部に従い、キャッシュ128のファイルAの80キロバイトから20キロバイト分のデータが読み込まれ、該データの一時メモリの80キロバイトの位置に書き込まれる(図19、OP79〜OP83)。
次に、フラグ(0)、開始位置(100キロバイト)、データ長(50キロバイト)、実データのデータ部に従い、一時メモリの100キロバイト目の位置に50キロバイト分の実データが書き込まれる(図19、OP75〜OP78)。
フラグ(1)、開始位置(150キロバイト)、一致長(10キロバイト)、キャッシュ開始位置(160キロバイト)のデータ部に従い、キャッシュ128のファイルAの160キロバイト目から10キロバイト分のデータが読み込まれ、一時メモリの150キロバイトの位置に書き込まれる(図19、OP79〜OP83)。
S16では、送信データ削減部113は、クライアントアプリケーション2から、メッセージ「CLOSE」が含まれる書き込み要求を受信する(図15、OP11、OP12:NO、OP15)。
書き込み要求の対象である送信対象データ#3については、更新部分を含まない。送信対象データ#3の書き込み開始位置は、160キロバイトである。送信対象データ#3の処理の開始時点で、データ現在位置は160キロバイト、一致長及び全一致長は0、ObjectCheckModeはtrueである。また、キャッシュ開始位置は、送信対象データ#2の処理の終了時点のキャッシュ現在位置であり、170キロバイトである。
送信対象データ#3を含むファイルの160キロバイト目から220キロバイト目までのデータは、キャッシュ118内のデータと一致するため、図17AのOP46からOP49の処理が繰り返し行われる。送信対象データ#3のデータ終了時には、ObjectCheckModeはtrueである(図18、OP61:YES)。一致長及び全一致長は60キロバイトであり、データバッファのサイズと一致しない。ファイル変更フラグは、変更なしである。データ開始位置160キロバイトとキャッシュ開始位置170キロバイトとは、一致しない(図18、OP63:NO)。
そのため、S17では、送信データ削減部113は、開始位置160キロバイト、一致長60キロバイト、キャッシュ開始位置170キロバイトで、フラグが1のデータ部を含む送信パケットを送信する(図18、OP64)。
受信側重複除去装置1Bは、フラグ(1)、開始位置(160キロバイト)、一致長(60キロバイト)、キャッシュ開始位置(170キロバイト)のデータ部を含むパケットを受信する。パケットに従い、キャッシュ128のファイルAの170キロバイトから60キロバイト分のデータが読み込まれ、該データの一時メモリの160キロバイトの位置に書き込まれる(図19、OP79〜OP83)。
受信側重複除去装置1Bは、一時メモリ内のデータをサーバアプリケーション3に送信する。サーバアプリケーション3は、ファイルAの80キロバイト目以降のデータを受信側重複除去装置1Bから受信するデータで更新する。
<第1実施形態の作用効果>
図21は、第1実施形態の作用効果の一例を示す図である。図21では、100MBのファイルの中間の1部分が編集されて、該ファイルがサーバにアップロードされる場合について、示されている。
チャンク(図中、ブロック)は、平均1KBとする。図21に示されるファイルには、約100000個のブロックが含まれる。約100000個のブロックのうち、編集によって内容に変化のあるブロックは、中間に位置する1個のブロックであるとする。
第1実施形態によれば、図21に示されるファイルについての送信パケットには、フラグが1のデータ部(24バイト)が2個と、フラグが0のデータ部(16バイト+約1KB)が1個含まれる。すなわち、該送信パケットのサイズは、約1KBである。100MBのファイルに対して転送されるデータ量が約1KBであるので、転送データの削減率は、1/100000となり、転送データの削減率を向上させることができる。
第1実施形態では、送信側重複除去装置1Aは、データバッファから読み出された送信対象データと、キャッシュ118内のファイルのデータとをバイト単位で先頭から順番に単純なメモリの比較をする。送信対象データとキャッシュ118内のファイルのデータとが不一致となる場合には、送信側重複除去装置1Aは、該不一致部分より前の一致部分のキャッシュ118における位置情報を送信パケットに追加する。一致部分の実データの代わりに一致部分のキャッシュ118における位置情報を送信するので、転送データの削除率が高くなる。
キャッシュ118内では、オブジェクトに対して、連続する領域が確保され、該領域に順番に連続してチャンクが格納される。これによって、一致部分のキャッシュ118における位置情報として、キャッシュ開始位置と一致長とのより少ないデータ量で受信側重複除去装置1Bに重複データのキャッシュにおける位置を通知することができる。例えば、チャンクとオブジェクトIDとの関連付けなしにキャッシュ118にチャンクが格納される場合には、同じオブジェクトのチャンクでも、他のオブジェクトのチャンクによって格納領域が分断される可能性がある。同じオブジェクトのチャンクの格納領域が分断される場合には、一致部分のキャッシュにおける位置情報として、キャッシュ開始位置と一致長とでは、一致部分を特定しきれず、一致部分の情報量が多くなる。したがって、キャッシュ118に、オブジェクトに対して、連続する領域が確保され、該領域に順番に連続してチャンクが格納されることは、転送データの削減率の向上に寄与する。また、実データは送信パケットに追加されないので、一致部分が長いほど、転送データの削除率が高くなる。
次に、送信側重複除去装置1Aは、送信対象データの不一致部分以降について、チャンクに分割し、該チャンクのハッシュ値を算出し、該ハッシュ値でハッシュテーブル119を検索する。該チャンクのハッシュ値がハッシュテーブル119にない場合には、送信側重複除去装置1Aは、該チャンクの実データを送信パケットに追加する。該チャンクのハッシュ値がハッシュテーブル119にある場合には、送信側重複除去装置1Aは、それ以降のデータについて、送信対象データと、キャッシュ118内のファイルのデータとの単純なメモリの比較の処理を再開する。
チャンクは、切断条件のパターンの出現位置によって区切られるので、更新部分を含むチャンクは更新の前後でチャンク長やハッシュ値が変わるものの、更新部分の直後の切断条件のパターンの出現位置は移動するだけである。そのため、更新部分より後ろの更新のないチャンクは、該更新の前後でチャンク長及びハッシュ値が変わらずに、チャンクのハッシュ値によるハッシュテーブル119の検索によって、検出される。これによって、更新部分の終わり、すなわち、送信対象データとキャッシュ118内のファイルのデータとの一致が再開する位置をより適正に検出することができる。これによって、受信側重複除去装置1Bに送信される更新部分を含む実データの量をより少なく抑えることができる。また、送信対象データをチャンクに分割し、チャンクのハッシュ値を算出する処理をより少なく抑えることができ、送信側重複除去装置1AのCPU 11にかかる負荷を軽減することができる。
また、第1実施形態では、送信側重複除去装置1Aは、送信対象データと、キャッシュ118内のファイルのデータとの単純なメモリの比較をして、全データが一致した場合には、クライアントアプリケーション2に代理応答を行う。このとき、送信側重複除去装置1Aは、受信側重複除去装置1Bに対してはデータの送信を行わない。したがって、第1実施形態によれば、転送データの削減率を向上させることができる。
また、送信側重複除去装置1Aは、送信対象データとキャッシュ118内のファイルのデータとの一致部分のキャッシュ118における位置情報として、送信対象データを含むファイル内の開始位置と、一致長と、キャッシュ118内におけるキャッシュ開始位置とを送信する。例えば、更新によって該一致部分の位置が移動することがある。この場合には、更新後のデータである送信対象データを含むファイルにおける該一致部分の開始位置と、更新前のデータであるキャッシュ118内のファイルにおける該一致部分の開始位置とが異なることがある。このような場合でも、一致部分のキャッシュ118における位置情報としてキャッシュ開始位置が含まれることによって、受信側重複除去装置1Bは、キャッシュ開始位置を頼りに、更新前のキャッシュ128内のファイルの適正な位置からデータを読み込むことができる。
遠隔のファイルサーバに対して、ファイルの上書き更新を行う場合には、クライアントアプリケーション2とサーバアプリケーション3間で、ファイルの整合性を保つためのやり取りが行われることが一般的である。しかしながら、第1実施形態によれば、重複除去処理における送信パケットによって、更新前及び更新後のデータの位置を適正に受信側重複除去装置1Bに通知することができ、ファイルの整合性を保つことができる。したがって、第1実施形態によれば、アプリケーションレベルでのファイルの整合性を保つためのやり取りを省略することができる。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
<その他>
上記実施形態は、さらに以下の付記を開示する。
(付記1)
送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて記憶する第1の記憶部と、
前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて記憶する第2の記憶部と、
送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行う制御部とを備え、
前記制御部は、
前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行い、
前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行う、
情報処理装置。
(付記2)
前記第2の記憶部は、前記送信実績のあるオブジェクトに対して確保される連続する領域に、前記複数のデータブロックを順番通りに連続して記憶し、
前記制御部は、前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの前記不一致部分より前に一致部分がある場合には、前記送信対象オブジェクトにおける前記一致部分の開始位置と、前記一致部分の長さと、前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の開始位置と、を送信する、
付記1に記載の情報処理装置。
(付記3)
前記制御部は、前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとの間のデータの比較の結果、不一致部分を検出しない場合には、前記送信対象オブジェクトの送信元装置に対して代理応答を行う、
付記1又は2に記載の情報処理装置。
(付記4)
前記制御部は、前記第2の処理において、前記送信対象オブジェクトの末尾のデータの処理が終了し、該末尾のデータに前記所定のパターンのビット列が出現しない場合には、直前のデータブロックの終了位置から前記末尾のデータまでの実データを送信する、
付記1から3のいずれか一つに記載の情報処理装置。
(付記5)
前記制御部は、前記第2の処理において、前記データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックの識別情報を前記第1の記憶部に登録し、該データブロックを前記第2の記憶部に登録する、
付記1から4のいずれか一つに記載の情報処理装置。
(付記6)
コンピュータが、
送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて第1の記憶部に記憶し、
前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて第2の記憶部に記憶し、
送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行い、
前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行い、
前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行う、
情報処理方法。
(付記7)
コンピュータに、
送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて第1の記憶部に記憶させ、
前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて第2の記憶部に記憶させ、
送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行わせ、
前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行わせ、
前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行わせる、
ための情報処理プログラム。
(付記8)
送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて記憶する第1の記憶部と、
前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて記憶する第2の記憶部と、
送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行う制御部とを備え、
前記制御部は、
前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行い、
前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行う、
送信側装置と、
前記送信実績のあるオブジェクトを記憶する記憶部と、
前記送信側装置から、前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を受信した場合には、該位置情報に基づいて、前記記憶部から、前記第2の記憶部に記憶されるオブジェクトの前記一致部分を読み出して、復元オブジェクトに追加し、
前記送信側装置から、前記データブロックを受信した場合には、該データブロックを前記復元オブジェクトに追加する、
受信側装置と、
を含む情報処理システム。
1 重複除去装置
2 送信元装置、クライアントアプリケーション
3 宛先装置、ファイルサーバ、サーバアプリケーション
11 CPU
12 主記憶装置
15 補助記憶装置
17 ネットワークインタフェース
111 接続受付部
112 送信データ受信部
113 送信データ削減部
114 削減データ送信部
115 応答転送受信部
116 アプリ応答送信部
117 切断受付部
118 キャッシュ
119 ハッシュテーブル
121 サーバ接続部
122 削減データ受信部
123 削減データ復元部
124 復元データ送信部
125 アプリ応答受信部
126 アプリ応答転送部
127 サーバ切断部
128 キャッシュ

Claims (5)

  1. 送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて記憶する第1の記憶部と、
    前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて記憶する第2の記憶部と、
    送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行う制御部とを備え、
    前記制御部は、
    前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行い、
    前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行う、
    情報処理装置。
  2. 前記第2の記憶部は、前記送信実績のあるオブジェクトに対して確保される連続する領域に、前記複数のデータブロックを順番通りに連続して記憶し、
    前記制御部は、前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの前記不一致部分より前に一致部分がある場合には、前記送信対象オブジェクトにおける前記一致部分の開始位置と、前記一致部分の長さと、前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の開始位置と、を送信する、
    請求項1に記載の情報処理装置。
  3. 前記制御部は、前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとの間のデータの比較の結果、不一致部分を検出しない場合には、前記送信対象オブジェクトの送信元装置に対して代理応答を行う、
    請求項1又は2に記載の情報処理装置。
  4. コンピュータが、
    送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて第1の記憶部に記憶し、
    前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて第2の記憶部に記憶し、
    送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行い、
    前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行い、
    前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行う、
    情報処理方法。
  5. コンピュータに、
    送信実績のあるオブジェクトの識別情報と、前記オブジェクトの、所定パターンのビット列の出現位置で区切られた複数のデータブロックそれぞれの識別情報と、を対応付けて第1の記憶部に記憶させ、
    前記送信実績のあるオブジェクトの識別情報と、該オブジェクトの前記複数のデータブロックとを対応付けて第2の記憶部に記憶させ、
    送信対象オブジェクトと、該送信対象オブジェクトの識別情報と合致する前記第2の記憶部に記憶されるオブジェクトと、の間でデータの比較を行う第1の処理と、前記送信対象オブジェクトのデータを前記所定のパターンのビット列の出現位置で区切ってデータブロックを抽出し、該データブロックの識別情報を算出し、該データブロックの識別情報で前記第1の記憶部を検索する第2の処理と、を行わせ、
    前記第1の処理において、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのデータの不一致部分を検出し、該不一致部分より前に一致部分がある場合には、少なくとも前記第2の記憶部に記憶されるオブジェクトにおける前記一致部分の位置情報を送信し、前記送信対象オブジェクトにおける前記不一致部分の開始位置以降のデータについて、前記第2の処理を行わせ、
    前記第2の処理において、データブロックの識別情報が前記第1の記憶部にない場合には、該データブロックを送信し、該データブロックの識別情報が前記第1の記憶部にある場合には、前記送信対象オブジェクトと前記第2の記憶部に記憶されるオブジェクトとのそれぞれにおける該データブロック以降のデータについて、前記第1の処理を行わせる、
    ための情報処理プログラム。
JP2017532267A 2015-07-31 2015-07-31 情報処理装置、情報処理方法、及び、情報処理プログラム Active JP6439874B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/071865 WO2017022034A1 (ja) 2015-07-31 2015-07-31 情報処理装置、情報処理方法、及び、情報処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2017022034A1 JPWO2017022034A1 (ja) 2018-04-26
JP6439874B2 true JP6439874B2 (ja) 2018-12-19

Family

ID=57942690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017532267A Active JP6439874B2 (ja) 2015-07-31 2015-07-31 情報処理装置、情報処理方法、及び、情報処理プログラム

Country Status (3)

Country Link
US (1) US20180113874A1 (ja)
JP (1) JP6439874B2 (ja)
WO (1) WO2017022034A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162553B2 (en) * 2010-11-24 2018-12-25 Western Digital Technologies, Inc. Methods and systems for object level de-duplication for solid state devices
EP3698976B1 (en) * 2016-06-17 2021-08-04 Hewlett-Packard Development Company, L.P. Replaceable item authentication

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006055964A1 (de) * 2006-11-24 2008-05-29 Bdt-Solutions Gmbh Verfahren und Vorrichtung zur Datensicherung
JP2010130610A (ja) * 2008-12-01 2010-06-10 Hitachi Kokusai Electric Inc データ伝送システム
US9401967B2 (en) * 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US20110314070A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Optimization of storage and transmission of data
US8909657B2 (en) * 2011-01-14 2014-12-09 Apple Inc. Content based file chunking
KR101904482B1 (ko) * 2011-12-26 2018-10-08 에스케이텔레콤 주식회사 콘텐트 전송 시스템, 그 시스템에서의 네트워크 중복 전송 트래픽 최적화 방법, 중앙 제어 장치 및 로컬 캐싱 장치
US20130311433A1 (en) * 2012-05-17 2013-11-21 Akamai Technologies, Inc. Stream-based data deduplication in a multi-tenant shared infrastructure using asynchronous data dictionaries
US9306997B2 (en) * 2013-01-16 2016-04-05 Cisco Technology, Inc. Method for optimizing WAN traffic with deduplicated storage
JP6213914B2 (ja) * 2013-09-27 2017-10-18 パナソニックIpマネジメント株式会社 通信端末、およびコンテンツ出版方法
JP6172296B2 (ja) * 2014-01-16 2017-08-02 富士通株式会社 通信装置、通信方法、および、通信プログラム

Also Published As

Publication number Publication date
JPWO2017022034A1 (ja) 2018-04-26
WO2017022034A1 (ja) 2017-02-09
US20180113874A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
US10489059B2 (en) Tier-optimized write scheme
US10795812B1 (en) Virtual copy forward method and system for garbage collection in cloud computing networks
KR102007070B1 (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
CN108427539B (zh) 缓存设备数据的离线去重压缩方法、装置及可读存储介质
US8205009B2 (en) Apparatus for continuous compression of large volumes of data
US7472254B2 (en) Systems and methods for modifying a set of data objects
JP5774794B2 (ja) ストレージシステム及びストレージシステムの制御方法
US7366859B2 (en) Fast incremental backup method and system
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
EP3532935A1 (en) Snapshot metadata arrangement for cloud integration
US10656858B1 (en) Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
US20150339314A1 (en) Compaction mechanism for file system
EP3316150B1 (en) Method and apparatus for file compaction in key-value storage system
KR102275431B1 (ko) 저장된 데이터 유닛들의 동작 관리
US10684920B2 (en) Optimized and consistent replication of file overwrites
US10339124B2 (en) Data fingerprint strengthening
CN110941514B (zh) 一种数据备份方法、恢复方法、计算机设备和存储介质
US11797488B2 (en) Methods for managing storage in a distributed de-duplication system and devices thereof
JP6304385B2 (ja) 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
US20180107404A1 (en) Garbage collection system and process
CN105677238A (zh) 一种基于分布式存储重复数据删除的虚拟机系统盘的方法
CN105493080B (zh) 基于上下文感知的重复数据删除的方法和装置
JP6439874B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
JP2012164130A (ja) データ分割プログラム
KR102275240B1 (ko) 저장된 데이터 유닛들의 동작 관리

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180724

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: 20181023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181105

R150 Certificate of patent or registration of utility model

Ref document number: 6439874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150