JP6113816B1 - Information processing system, information processing apparatus, and program - Google Patents

Information processing system, information processing apparatus, and program Download PDF

Info

Publication number
JP6113816B1
JP6113816B1 JP2015225923A JP2015225923A JP6113816B1 JP 6113816 B1 JP6113816 B1 JP 6113816B1 JP 2015225923 A JP2015225923 A JP 2015225923A JP 2015225923 A JP2015225923 A JP 2015225923A JP 6113816 B1 JP6113816 B1 JP 6113816B1
Authority
JP
Japan
Prior art keywords
data
hash value
fragment
storage
information processing
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.)
Expired - Fee Related
Application number
JP2015225923A
Other languages
Japanese (ja)
Other versions
JP2017097437A (en
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2015225923A priority Critical patent/JP6113816B1/en
Application granted granted Critical
Publication of JP6113816B1 publication Critical patent/JP6113816B1/en
Publication of JP2017097437A publication Critical patent/JP2017097437A/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】情報処理システムにおいてデータの重複排除を行う。【解決手段】データ保存先装置3は、データに基づいて生成された保存単位サイズの複数の保存データのうちの第1の保存データと、保存単位サイズよりも大きい重複検出サイズの第1の断片データに対応する第1のハッシュ値と、第1の保存データの少なくとも一部に対応する第2のハッシュ値とを受信する。外部の装置2によって保存対象データに基づいて生成された保存単位サイズの第2の保存データを受信する。第1の保存データの少なくとも一部に対応する第2のハッシュ値が、第2の保存データの少なくとも一部に対応する第3のハッシュ値と一致する場合に、第1の断片データに対応する第1のハッシュ値が、複数の装置に保存されており第2の保存データを含み重複検出サイズの第2の断片データに対応する第4のハッシュ値と一致するか判断し、一致する場合に、第2の断片データに対する重複を検出する。【選択図】図1Data deduplication is performed in an information processing system. A data storage destination device includes: first storage data among a plurality of storage data having a storage unit size generated based on the data; and a first fragment having an overlap detection size larger than the storage unit size. A first hash value corresponding to the data and a second hash value corresponding to at least part of the first stored data are received. Second storage data having a storage unit size generated based on the storage target data by the external device 2 is received. Corresponds to the first fragment data when the second hash value corresponding to at least part of the first stored data matches the third hash value corresponding to at least part of the second stored data. When the first hash value matches the fourth hash value stored in a plurality of devices and corresponding to the second fragment data including the second stored data and corresponding to the second fragment data having the duplicate detection size, The duplication with respect to 2nd fragment data is detected. [Selection] Figure 1

Description

本実施形態は、情報処理システム、情報処理装置、及びプログラムに関する。   The present embodiment relates to an information processing system, an information processing apparatus, and a program.

大規模ストレージに用いられるオブジェクトストレージでは、耐障害性の実現のために消失符号が用いられる。   In an object storage used for large-scale storage, an erasure code is used to realize fault tolerance.

米国特許第7992037号明細書US Pat. No. 7,992,037 特開2010−79886号公報JP 2010-79886 A

Rabin, Michael O. Fingerprinting by random polynomials. Center for Research in Computing Techn., Aiken Computation Laboratory, Univ., 1981.Rabin, Michael O. Fingerprinting by random polynomials.Center for Research in Computing Techn., Aiken Computation Laboratory, Univ., 1981. openstack CLOUD SOFTWARE, “The Rings − swift 2.5.1.dev128 documentation - Open Stack Docs”, [2015年11月18日検索], インターネット<URL:http://docs.openstack.org/developer/swift/overview_ring.html>openstack CLOUD SOFTWARE, “The Rings − swift 2.5.1.dev128 documentation-Open Stack Docs”, [searched November 18, 2015], Internet <URL: http://docs.openstack.org/developer/swift/overview_ring .html>

本実施形態は、データの重複排除を行う情報処理システム、情報処理装置、及びプログラムを提供する。   The present embodiment provides an information processing system, an information processing apparatus, and a program for performing deduplication of data.

本実施形態に係る情報処理システムは、第1の情報処理装置と複数の第2の情報処理装置とを含む。第1の情報処理装置は、生成部と計算部と送信部とを含む。生成部は、データに基づいて保存単位サイズの複数の保存データを生成する。計算部は、データに含まれており保存単位サイズよりも大きい重複検出サイズの第1の断片データに対応する第1のハッシュ値を計算するとともに、第1の断片データに含まれている第1の保存データの少なくとも一部に対応する第2のハッシュ値を計算する。送信部は、第1の保存データと第1のハッシュ値と第2のハッシュ値とを、複数の第2の情報処理装置のうちの保存先装置へ送信する。保存先装置は、受信部と処理部とを含む。受信部は、第1の保存データと第1のハッシュ値と第2のハッシュ値とを受信するとともに、外部の情報処理装置によって保存対象データに基づいて生成された保存単位サイズの第2の保存データを受信する。処理部は、第1の保存データの少なくとも一部に対応する第2のハッシュ値が、受信部によって受信された第2の保存データの少なくとも一部に対応する第3のハッシュ値と一致するか否か判断し、第2のハッシュ値が第3のハッシュ値と一致する場合に、第1の断片データに対応する第1のハッシュ値が、複数の第2の情報処理装置に保存されており第2の保存データを含み重複検出サイズの第2の断片データに対応する第4のハッシュ値と一致するか判断し、第1のハッシュ値が第4のハッシュ値と一致する場合に、第2の断片データに対する重複を検出する。   The information processing system according to the present embodiment includes a first information processing device and a plurality of second information processing devices. The first information processing apparatus includes a generation unit, a calculation unit, and a transmission unit. The generation unit generates a plurality of storage data having a storage unit size based on the data. The calculation unit calculates a first hash value corresponding to the first fragment data included in the data and having a duplicate detection size larger than the storage unit size, and the first hash data included in the first fragment data. A second hash value corresponding to at least a part of the stored data is calculated. The transmission unit transmits the first storage data, the first hash value, and the second hash value to a storage destination device among the plurality of second information processing devices. The storage destination device includes a receiving unit and a processing unit. The receiving unit receives the first storage data, the first hash value, and the second hash value, and stores the second storage of the storage unit size generated based on the storage target data by the external information processing apparatus. Receive data. Whether the processing unit matches the second hash value corresponding to at least part of the first stored data with the third hash value corresponding to at least part of the second stored data received by the receiving unit If the second hash value matches the third hash value, the first hash value corresponding to the first fragment data is stored in the plurality of second information processing devices. It is determined whether the fourth hash value corresponding to the second fragment data of the duplicate detection size including the second stored data matches, and if the first hash value matches the fourth hash value, the second Detect duplicates of fragment data.

第1の実施形態に係る情報処理システムの構成を例示するブロック図。1 is a block diagram illustrating the configuration of an information processing system according to a first embodiment. 第1の実施形態に係る情報処理システムの構成を例示する概念図。1 is a conceptual diagram illustrating the configuration of an information processing system according to a first embodiment. オブジェクトとフラグメントサーバのディスクとの関係の一例を示す概念図。The conceptual diagram which shows an example of the relationship between an object and the disk of a fragment server. ディスク選択インデックスファイルを例示する図。The figure which illustrates a disk selection index file. 重複排除方法の第1乃至第3の方式を例示する図。The figure which illustrates the 1st thru | or 3rd system of the de-duplication method. 通常のハッシュ計算とローリングハッシュ計算との比較結果を例示する図。The figure which illustrates the comparison result of normal hash calculation and rolling hash calculation. フラグメント保存処理を例示するフローチャート。The flowchart which illustrates a fragment preservation | save process. フラグメント保存処理を例示する概念図。The conceptual diagram which illustrates a fragment preservation | save process. オブジェクトの読み出し手順を例示するフローチャート。The flowchart which illustrates the read-out procedure of an object. 重複するフラグメントの排除処理の具体例を示す図。The figure which shows the specific example of the removal process of the overlapping fragment. フィンガープリントセットを例示する図。The figure which illustrates a fingerprint set. フィンガープリントセットの保存形式と探索方法を例示する図。The figure which illustrates the preservation | save format and search method of a fingerprint set. 自由位置での重複排除処理を例示するフローチャート。The flowchart which illustrates the duplication removal process in a free position. 重複排除処理におけるフラグメントの第1の読み出し処理を例示する図。The figure which illustrates the 1st reading process of the fragment in a deduplication process. 重複排除処理におけるフラグメントの第2の読み出し処理を例示する図。The figure which illustrates the 2nd reading process of the fragment in a deduplication process. 自由位置での重複排除処理の第1の例を示す図。The figure which shows the 1st example of the duplication removal process in a free position. 自由位置での重複排除処理の第2の例を示す図。The figure which shows the 2nd example of the duplication removal process in a free position. フロントエンドサーバによるオブジェクトの再配置の第1の例を示す図。The figure which shows the 1st example of the rearrangement of the object by a front end server. フロントエンドサーバによるオブジェクトの再配置の第2の例を示す図。The figure which shows the 2nd example of the rearrangement of the object by a front end server.

以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. In the following description, substantially the same or substantially the same functions and components are denoted by the same reference numerals and will be described as necessary.

[第1の実施形態]
大規模ストレージで用いられるオブジェクトストレージは、保存対象のデータを抽象化されたオブジェクト単位で管理するため、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)といった保存先のハードウェアの種類、台数の制限、又はファイルシステムの仕様による制限を受けない。このため、オブジェクトストレージは、ハードウェアの入れ替え及び容量の増設などを簡単に行うことができるといった高い拡張性を持ち、大規模なストレージシステムを安価に構築可能である。
[First Embodiment]
The object storage used in large-scale storage manages the data to be saved in an abstracted object unit. For example, the type and number of hardware at the save destination such as HDD (Hard Disk Drive) or SSD (Solid State Drive) Is not limited by the file system specifications or file system specifications. Therefore, the object storage has high expandability such that hardware replacement and capacity expansion can be easily performed, and a large-scale storage system can be constructed at low cost.

本実施形態に係る情報処理システムは、オブジェクトストレージを用い、消失符号(Erasure Coding)を用いて高い耐障害性を実現する。また、本実施形態に係る情報処理システムは、消失符号の信頼性を維持しながらシステム全体で保存されるデータの重複排除を適用し、記憶容量を削減、換言すれば記憶効率を向上させる。   The information processing system according to the present embodiment uses object storage and achieves high fault tolerance using erasure codes. In addition, the information processing system according to the present embodiment applies deduplication of data stored in the entire system while maintaining the reliability of the erasure code, thereby reducing the storage capacity, in other words, improving the storage efficiency.

本実施形態では、複数の物理ディスクに分散されて保存されるオブジェクト及び消失符号の集合を管理しながら重複排除を適用することにより、物理ディスクの故障に対する信頼性を維持する。   In this embodiment, reliability against a physical disk failure is maintained by applying deduplication while managing a set of objects and erasure codes distributed and stored in a plurality of physical disks.

本実施形態に係る情報処理システムは、記憶容量の拡張性を維持するため、IP(Internet Protocol)接続型ドライブのような高機能なドライブの利用を想定している。しかしながら、IP接続ではない複数台接続可能なドライブであってもよい。ドライブは、例えば、不揮発性の半導体メモリを含むとしてもよい。不揮発性メモリは、例えばNAND型フラッシュメモリとするが、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、PRAM(Phase change Random Access Memory:相変化メモリ)、ReRAM(Resistive Random Access Memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory)など他の不揮発性半導体メモリでもよい。例えば、不揮発性メモリは、不揮発性の半導体メモリではない他の不揮発性メモリ、磁気メモリなどでもよい。例えば、不揮発性メモリは、3次元構造のフラッシュメモリでもよい。例えば、不揮発性メモリは、ディスク(例えばdisc又はdisk)でもよい。   The information processing system according to the present embodiment assumes the use of a highly functional drive such as an IP (Internet Protocol) connection type drive in order to maintain the expandability of the storage capacity. However, it may be a drive that can be connected to a plurality of devices other than the IP connection. The drive may include, for example, a nonvolatile semiconductor memory. The nonvolatile memory is, for example, a NAND flash memory, but a NOR flash memory, an MRAM (Magnetoresistive Random Access Memory), a PRAM (Phase change Random Access Memory), a ReRAM (Resistive Random Access Memory). : Resistance change type memory), FeRAM (Ferroelectric Random Access Memory), and other nonvolatile semiconductor memories. For example, the non-volatile memory may be another non-volatile memory or magnetic memory that is not a non-volatile semiconductor memory. For example, the nonvolatile memory may be a flash memory having a three-dimensional structure. For example, the non-volatile memory may be a disk (for example, a disc or a disk).

本実施形態に係る情報処理システムでは、複数のドライブが重複位置の探索を分担して行う。これにより、データの記憶量の増加に対するフロントエンドサーバの負荷を軽減する。   In the information processing system according to the present embodiment, a plurality of drives share the search for overlapping positions. This reduces the load on the front-end server with respect to an increase in the data storage amount.

本実施形態において、ユーザの使用する端末(又は端末上で動作するアプリケーション)は、例えばREST(Representational State Transfer) API(Application Programming Interface)などのような所定の規約を使用してオブジェクトを保存又は取得する。このAPIを担当する情報処理装置を、フロントエンドサーバと呼ぶ。フロントエンドサーバは、オブジェクトの保存要求をユーザの端末又はユーザの使用する端末のアプリケーションから受け取ると,オブジェクトを適切な数の断片(以下、ストライドと呼ぶ)へと分解し、それぞれの断片に消失符号を使用して符号化を行う。ストライドは、重複検出サイズを持つ。   In this embodiment, a terminal used by a user (or an application running on the terminal) stores or acquires an object using a predetermined rule such as REST (Representational State Transfer) API (Application Programming Interface). To do. The information processing apparatus in charge of this API is called a front end server. When the front-end server receives an object storage request from the user's terminal or the application of the terminal used by the user, the front-end server decomposes the object into an appropriate number of fragments (hereinafter referred to as a stride), and erasure codes for each fragment. Encode using. The stride has a duplicate detection size.

ストライドは、符号化によって消失符号適用の最小分割単位(以下、フラグメントと呼ぶ)に分割される。フラグメントは、保存単位サイズを持つ。フロントエンドサーバは、これらのフラグメントを、例えばKVS(Key-Value Store) APIを使用して、最終的なデータの保存先である複数のフラグメントサーバへ保存する。   The stride is divided into minimum division units (hereinafter referred to as fragments) to which erasure codes are applied by encoding. A fragment has a storage unit size. The front-end server stores these fragments in a plurality of fragment servers that are final data storage destinations using, for example, a KVS (Key-Value Store) API.

その後、フラグメントサーバは、保存したフラグメントに対し、重複排除を行う。例えば、消失符号の信頼性を維持するため、重複排除は、ストライド単位で行う。   Thereafter, the fragment server performs deduplication on the stored fragments. For example, deduplication is performed in units of strides in order to maintain the reliability of erasure codes.

なお、ユーザの使用する端末とフロントエンドサーバとの間でデータを送受信する際のAPI、及びフロントエンドサーバとフラグメントサーバとの間でデータを送受信する際のAPIは、上述のものに限られない。   Note that the API used when transmitting / receiving data between the terminal used by the user and the front-end server and the API used when transmitting / receiving data between the front-end server and the fragment server are not limited to those described above. .

図1は、本実施形態に係る情報処理システムの構成を例示するブロック図である。   FIG. 1 is a block diagram illustrating the configuration of the information processing system according to this embodiment.

情報処理システム1は、1台以上のフロントエンドサーバ2、複数のフラグメントサーバ3を備える。この図1では、フロントエンドサーバ2が1台の場合を説明する。また、複数のフラグメントサーバ3のうちの1台のフラグメントサーバを代表して説明する。   The information processing system 1 includes one or more front-end servers 2 and a plurality of fragment servers 3. In FIG. 1, a case where there is one front-end server 2 will be described. Further, one fragment server among the plurality of fragment servers 3 will be described as a representative.

フロントエンドサーバ2は、オブジェクトから複数のストライドを生成し、さらに複数のストライドのそれぞれから複数のフラグメントを生成し、複数のフラグメントを複数のフラグメントサーバ3へ分散して送信する。   The front-end server 2 generates a plurality of strides from the object, generates a plurality of fragments from each of the plurality of strides, and distributes the plurality of fragments to the plurality of fragment servers 3 for transmission.

複数のフラグメントサーバ3のそれぞれは、自機の記憶部31に保存されているフラグメントの少なくとも一部と、受信されたフラグメントの少なくとも一部とが一致するか否か判断する。複数のフラグメントサーバ3のそれぞれは、保存されているフラグメントの少なくとも一部と、受信されたフラグメントの少なくとも一部とが一致する場合に、当該保存されているフラグメントを含み複数のフラグメントサーバ3に保存されている1ストライド分のデータと、受信されたフラグメントを含みオブジェクトに含まれている1ストライド分のデータとが一致するか判断する。そして、複数のフラグメントサーバ3のそれぞれは、保存されている1ストライド分のデータと、オブジェクトに含まれている1ストライド分のデータとが一致する場合に、オブジェクトにおける重複位置を示す重複位置情報をフロントエンドサーバ2へ送信する。   Each of the plurality of fragment servers 3 determines whether or not at least a part of the fragments stored in the storage unit 31 of the own machine matches at least a part of the received fragments. Each of the plurality of fragment servers 3 stores the stored fragment in the plurality of fragment servers 3 when at least a part of the stored fragment matches at least a part of the received fragment. It is determined whether or not the data for one stride that is received matches the data for one stride that includes the received fragment and is included in the object. Then, each of the plurality of fragment servers 3 sets the overlapping position information indicating the overlapping position in the object when the stored data for one stride matches the data for one stride included in the object. Transmit to the front-end server 2.

フロントエンドサーバ2は、重複位置情報に基づいて、重複部分が同一のストライドに含まれるように、オブジェクトから複数のストライドを再生成し、さらに再生成された複数のストライドのそれぞれから複数のフラグメントを再生成し、再生成された複数のフラグメントを複数のフラグメントサーバ3へ分散して送信する。   The front end server 2 regenerates a plurality of strides from the object based on the overlapping position information so that the overlapping portion is included in the same stride, and further generates a plurality of fragments from each of the regenerated plurality of strides. The regenerated fragments are transmitted to the plurality of fragment servers 3 in a distributed manner.

複数のフラグメントサーバ3のそれぞれは、再生成され受信されたフラグメントが自機の記憶部31に保存されているフラグメントと一致する場合に、重複排除を行う。   Each of the plurality of fragment servers 3 performs deduplication when the regenerated and received fragment matches the fragment stored in its own storage unit 31.

フロントエンドサーバ2は、コントローラ20、記憶部21を含む。   The front end server 2 includes a controller 20 and a storage unit 21.

コントローラ20は、送受信部22、プロセッサ23、メモリ24、制御部25を含む。   The controller 20 includes a transmission / reception unit 22, a processor 23, a memory 24, and a control unit 25.

送受信部22は、ユーザUの使用する端末11(又は端末11上で動作するアプリケーション)、及びフラグメントサーバ3と、例えばコマンド、アドレス、データ、情報、指示、信号などを送受信する。   The transmission / reception unit 22 transmits / receives, for example, commands, addresses, data, information, instructions, signals, and the like to / from the terminal 11 (or application running on the terminal 11) used by the user U and the fragment server 3.

ユーザUの使用する端末11は、例えばコンピュータ、PDA(Personal Digital Assistant)、スマートフォン、タブレット型端末などであってもよい。   The terminal 11 used by the user U may be, for example, a computer, a PDA (Personal Digital Assistant), a smartphone, a tablet terminal, or the like.

プロセッサ23は、送受信部22及び制御部25からの指示に基づき、制御処理及び演算処理を実行する。プロセッサ1としては、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、又は、DSP(Digital Signal Processor)などが利用される。   The processor 23 executes control processing and arithmetic processing based on instructions from the transmission / reception unit 22 and the control unit 25. As the processor 1, for example, a central processing unit (CPU), a micro processing unit (MPU), or a digital signal processor (DSP) is used.

メモリ24は、主記憶装置であり、プロセッサ23からの制御に従う。メモリ24には、プロセッサ23の制御に基づいて、送受信部22により送受信されるデータ又は制御部25により生成されたデータなどが一時的に格納される。   The memory 24 is a main storage device and follows control from the processor 23. The memory 24 temporarily stores data transmitted / received by the transmitting / receiving unit 22 or data generated by the control unit 25 based on the control of the processor 23.

制御部25は、オブジェクト分割部201、消失符号計算部202、フィンガープリント計算部203を含む。   The control unit 25 includes an object dividing unit 201, an erasure code calculating unit 202, and a fingerprint calculating unit 203.

オブジェクト分割部201は、ユーザUの使用する端末11より送受信部22を介して受信したオブジェクトを、ストライドに分割する。ストライドのサイズは、システムにより任意に定められる。   The object dividing unit 201 divides an object received from the terminal 11 used by the user U through the transmission / reception unit 22 into strides. The size of the stride is arbitrarily determined by the system.

オブジェクトのサイズがストライドのサイズの整数倍でない場合は、整数倍となるまでオブジェクトに意味を持たないパディングデータ(例えばゼロデータ)を付加、すなわちパディングする。なお、パディングは、オブジェクトを複数のストライドに分割し、この分割されたストライドのうち所定のサイズに満たないストライドに、パディングデータを補充することで実現されてもよい。   If the object size is not an integer multiple of the stride size, padding data (for example, zero data) that has no meaning is added to the object until it becomes an integer multiple, that is, padding is performed. Note that padding may be realized by dividing an object into a plurality of strides and supplementing padding data to strides that are less than a predetermined size among the divided strides.

消失符号計算部202は、オブジェクト分割部201により得られた各ストライドに対する消失符号を計算する符号化を行う。具体的には、消失符号計算部202は、ストライドに基づいて複数のフラグメントを生成する。ストライドに対応する複数のフラグメントは、情報シンボル部と、パリティシンボル部とを含む。消失符号の詳細については、図3で後述する。   The erasure code calculation unit 202 performs encoding that calculates an erasure code for each stride obtained by the object division unit 201. Specifically, the erasure code calculation unit 202 generates a plurality of fragments based on the stride. The plurality of fragments corresponding to the stride include an information symbol part and a parity symbol part. Details of the erasure code will be described later with reference to FIG.

フィンガープリント計算部203は、任意のデータに対してフィンガープリントを計算する。計算対象のデータは、例えばストライド単位、フラグメント単位、フラグメントの半分の単位(1/2フラグメント単位と呼ぶ)などであってもよい。フィンガープリントは、例えばハッシュ値であり、データの内容に基づいて一意に定まる値である。すなわち、例えば同一のデータからなるストライドのフィンガープリントは、必ず同一となる。従って、フィンガープリントが同一であれば、同じデータである可能性が高いため、フィンガープリントの比較は、重複排除処理において重複データを探索する場合に有効である。本実施形態では、複数のデータに対応するフィンガープリントを比較することで、複数のデータの一致又は不一致を判断する。   The fingerprint calculation unit 203 calculates a fingerprint for arbitrary data. The calculation target data may be, for example, a stride unit, a fragment unit, a half unit of a fragment (referred to as a 1/2 fragment unit), or the like. The fingerprint is, for example, a hash value, and is a value that is uniquely determined based on the content of data. That is, for example, the stride fingerprints made of the same data are always the same. Therefore, if the fingerprints are the same, there is a high possibility that they are the same data. Therefore, fingerprint comparison is effective when searching for duplicate data in the deduplication process. In this embodiment, by comparing fingerprints corresponding to a plurality of data, it is determined whether or not the plurality of data match.

また、フィンガープリント計算部203は、算出したフィンガープリントを記憶部21に保存する。   In addition, the fingerprint calculation unit 203 stores the calculated fingerprint in the storage unit 21.

記憶部21は、オブジェクト記憶部211と、フィンガープリントセット212と、ディスク選択インデックスファイル213とを含む。   The storage unit 21 includes an object storage unit 211, a fingerprint set 212, and a disk selection index file 213.

オブジェクト記憶部211は、送受信部22が受信したオブジェクトを保存する。   The object storage unit 211 stores the object received by the transmission / reception unit 22.

フィンガープリントセット212は、重複排除処理に用いられる各ストライド又はフラグメントのフィンガープリントの集合である。フィンガープリントセット212は、例えば1以上のファイルの集合であってもよい。   The fingerprint set 212 is a collection of fingerprints for each stride or fragment used in the deduplication process. The fingerprint set 212 may be a collection of one or more files, for example.

フィンガープリントセット212は、フィンガープリントが一定量記録されると、コントローラ20の送受信部22からフラグメントサーバ3に送信される。   The fingerprint set 212 is transmitted from the transmission / reception unit 22 of the controller 20 to the fragment server 3 when a certain amount of fingerprints are recorded.

ディスク選択インデックスファイル213は、フラグメントの保存先となるフラグメントサーバの集合を示す。ディスク選択インデックスファイル213は、参照ハッシュ値と前記参照ハッシュ値に対応して決定される保存先識別情報とを関係付けている。制御部25は、フィンガープリント計算部203により計算されたフィンガープリントに基づいて定まる値をキーとして、ディスク選択インデックスファイル213を参照することにより、各フラグメントの保存先を決定する。フィンガープリントからディスク選択インデックスファイル213を参照するためのキー情報の算出は、例えばハッシュ関数などを用いて行われてもよい。   The disk selection index file 213 indicates a set of fragment servers that are fragment storage destinations. The disk selection index file 213 associates a reference hash value with storage destination identification information determined corresponding to the reference hash value. The control unit 25 determines the storage destination of each fragment by referring to the disk selection index file 213 using a value determined based on the fingerprint calculated by the fingerprint calculation unit 203 as a key. The calculation of the key information for referring to the disc selection index file 213 from the fingerprint may be performed using, for example, a hash function.

ディスク選択インデックスファイル213を用いたフラグメントの保存先の決定については、図4を用いて後述する。なお、ディスク選択インデックスファイル213は、ファイル形式で保存されていなくてもよい。   The determination of the fragment storage destination using the disk selection index file 213 will be described later with reference to FIG. Note that the disk selection index file 213 may not be stored in a file format.

フラグメントサーバ3は、コントローラ30、記憶部31を含む。   The fragment server 3 includes a controller 30 and a storage unit 31.

コントローラ30は、送受信部32、プロセッサ33、メモリ34、制御部35を含む。   The controller 30 includes a transmission / reception unit 32, a processor 33, a memory 34, and a control unit 35.

送受信部32は、フロントエンドサーバ2と、例えばコマンド、アドレス、データ、情報、指示、信号などの送受信を行う。   The transmission / reception unit 32 performs transmission / reception of commands, addresses, data, information, instructions, signals, and the like with the front-end server 2.

プロセッサ33は、送受信部32及び制御部35からの指示に基づき、制御処理及び演算処理を実行する。プロセッサ33としては、プロセッサ23と同様に、例えばCPU、MPU、又は、DSPなどが利用される。   The processor 33 executes control processing and arithmetic processing based on instructions from the transmission / reception unit 32 and the control unit 35. As the processor 33, for example, a CPU, MPU, DSP, or the like is used as in the processor 23.

メモリ34は、主記憶装置であり、プロセッサ33からの制御に従う。メモリ34には、プロセッサ33の制御に基づいて、送受信部32により送受信されるデータ又は制御部35により生成されたデータなどが一時的に格納される。   The memory 34 is a main storage device and follows control from the processor 33. The memory 34 temporarily stores data transmitted / received by the transmission / reception unit 32 or data generated by the control unit 35 based on the control of the processor 33.

制御部35は、重複排除処理部301を含む。   The control unit 35 includes a deduplication processing unit 301.

重複排除処理部301は、フィンガープリントセット311を用い、フラグメント記憶部312に保存されたフラグメントのうち重複する部分を探索し、重複排除を行う。   The deduplication processing unit 301 uses the fingerprint set 311 to search for duplicate portions of the fragments stored in the fragment storage unit 312 and performs deduplication.

また、重複排除はストライド単位で行われるため、フロントエンドサーバ2は、例えば重複部分の起点がストライドの途中に存在する場合は、ストライドの起点と重複部分の起点を一致させるために、重複部分の起点でストライドを分割することによりストライドを再配置する。このように、重複排除のためにストライドを再配置する必要が生じた場合は、重複排除処理部301は、ストライドの再配置の指示をフロントエンドサーバ2に送信する。重複排除処理の詳細については後述する。   In addition, since deduplication is performed in units of strides, the front-end server 2, for example, if the starting point of the overlapping part exists in the middle of the stride, in order to make the starting point of the overlapping part coincide with the starting point of the overlapping part, Rearrange the stride by dividing the stride at the starting point. As described above, when it becomes necessary to rearrange the strides for deduplication, the deduplication processing unit 301 transmits a stride rearrangement instruction to the front-end server 2. Details of the deduplication processing will be described later.

記憶部31は、フィンガープリントセット311、フラグメント記憶部312、重複位置情報313を含む。以下、本実施形態では、記憶部31をディスクとする。しかしながら、記憶部31をディスクとすることは、記憶部31がディスクに限定されることを意味しない。記憶部31としては様々な不揮発性メモリを用いることができる。   The storage unit 31 includes a fingerprint set 311, a fragment storage unit 312, and overlapping position information 313. Hereinafter, in the present embodiment, the storage unit 31 is a disk. However, using the storage unit 31 as a disk does not mean that the storage unit 31 is limited to a disk. Various nonvolatile memories can be used as the storage unit 31.

フィンガープリントセット311は、フロントエンドサーバ2より、フラグメントサーバ3のコントローラ30の送受信部32を経由して、記憶部31に受信され、記憶部31に保存される。フィンガープリントセット311は、重複排除の際に参照される。   The fingerprint set 311 is received by the storage unit 31 from the front end server 2 via the transmission / reception unit 32 of the controller 30 of the fragment server 3 and stored in the storage unit 31. The fingerprint set 311 is referred to when deduplication is performed.

フラグメント記憶部312は、フロントエンドサーバ2より、フラグメントサーバ3のコントローラ30の送受信部32を経由して、記憶部31に受信されたフラグメントを保存する。   The fragment storage unit 312 stores the fragment received from the front-end server 2 in the storage unit 31 via the transmission / reception unit 32 of the controller 30 of the fragment server 3.

重複位置情報313は、保存対象のオブジェクトにおける重複データの存在を示す情報、例えば重複データが存在する場合に、フロントエンドサーバ2がストライド再配置を実行する際に参照する重複データの位置を含む。より具体的には、重複位置情報313は、重複排除処理部301が重複検出を行った結果、1ストライド分の重複データがあると判断された重複データの起点を含む。制御部35は、重複位置情報313が一定量保存されると、送受信部32を通じてフロントエンドサーバ2へ送信する。   The duplicate position information 313 includes information indicating the existence of duplicate data in the object to be saved, for example, the position of duplicate data that is referenced when the front-end server 2 executes stride rearrangement when duplicate data exists. More specifically, the duplication position information 313 includes the origin of duplicate data that is determined to have duplicate data for one stride as a result of duplication detection performed by the duplicate elimination processing unit 301. When a certain amount of the overlapping position information 313 is stored, the control unit 35 transmits the information to the front end server 2 through the transmission / reception unit 32.

重複排除処理の詳細については、後述する。   Details of the deduplication processing will be described later.

図2は、本実施形態に係る情報処理システム1の構成を例示する概念図である。   FIG. 2 is a conceptual diagram illustrating the configuration of the information processing system 1 according to this embodiment.

情報処理システム1は、複数のフロントエンドサーバ2と複数のフラグメントサーバ3とを含む。フロントエンドサーバ2を増設することにより、ユーザUの使用する端末11及びフラグメントサーバ3から受信したデータの処理能力が向上する、すなわち情報処理システム1全体としての処理能力が向上する。   The information processing system 1 includes a plurality of front end servers 2 and a plurality of fragment servers 3. By adding the front-end server 2, the processing capability of data received from the terminal 11 and the fragment server 3 used by the user U is improved, that is, the processing capability of the information processing system 1 as a whole is improved.

ユーザUの端末11又は端末11のアプリケーションは、複数のフロントエンドサーバ2のうちのいずれかのフロントエンドサーバに例えばREST APIに基づいてオブジェクトOBを送る。オブジェクトは、例えばファイルでもよい。   The terminal 11 of the user U or the application of the terminal 11 sends the object OB to any one of the plurality of front end servers 2 based on, for example, the REST API. The object may be a file, for example.

本実施形態において、フラグメントサーバ3は、消失符号化後にストライドから生成されるフラグメント数以上の台数で構成される。また、フラグメントサーバ3を増設することにより、オブジェクトOBの最終的な保存先が増える、すなわち情報処理システム1全体としての保存容量が増加する。   In the present embodiment, the fragment server 3 is configured with a number equal to or greater than the number of fragments generated from the stride after erasure coding. Further, by adding the fragment server 3, the final storage destination of the object OB increases, that is, the storage capacity of the information processing system 1 as a whole increases.

まず、フロントエンドサーバ2は、オブジェクトOBを複数のストライドSTに分割する。次に、フロントエンドサーバ2は、各ストライドSTに対して消失符号による符号化を行い、複数のフラグメントを生成する。複数のフラグメントは、情報シンボル部ISとパリティシンボル部PSとを含む。この図2では、1つのストライドから、4つのフラグメントを含む情報シンボル部ISと、2つのフラグメントを含むパリティシンボル部PSとが生成される。情報シンボル部ISに含まれるフラグメントの数と、パリティシンボル部PSに含まれるフラグメントの数とは、1以上で変更可能である。   First, the front end server 2 divides the object OB into a plurality of strides ST. Next, the front-end server 2 encodes each stride ST with an erasure code to generate a plurality of fragments. The plurality of fragments include an information symbol part IS and a parity symbol part PS. In FIG. 2, an information symbol part IS including four fragments and a parity symbol part PS including two fragments are generated from one stride. The number of fragments included in the information symbol part IS and the number of fragments included in the parity symbol part PS can be changed by one or more.

フロントエンドサーバ2は、生成された各フラグメントの保存先のフラグメントサーバ3を、ディスク選択インデックスファイル213に基づいて選択し、選択結果に応じて各フラグメントを例えばKVS APIに基づいて保存先のフラグメントサーバ3に送る。   The front-end server 2 selects the fragment server 3 that stores the generated fragments based on the disk selection index file 213, and selects each fragment according to the selection result based on, for example, the KVS API. Send to 3.

図3は、オブジェクトOBとフラグメントサーバ3のディスク31との関係の一例を示す概念図である。図3では、オブジェクトOBから複数のストライドSTへの分割は省略している。   FIG. 3 is a conceptual diagram showing an example of the relationship between the object OB and the disk 31 of the fragment server 3. In FIG. 3, the division from the object OB into a plurality of strides ST is omitted.

オブジェクトOBは、分割され、消失符号を用いて符号化される。符号化された結果、k個の情報シンボル部ISと、m個のパリティシンボル部PSのフラグメントが生成される。   The object OB is divided and encoded using an erasure code. As a result of encoding, fragments of k information symbol parts IS and m parity symbol parts PS are generated.

個々のフラグメントは、k+m個の異なるフラグメントサーバ3のディスク31へ保存される。このようにして保存されたデータは、m個までの任意のフラグメントを喪失しても元データであるオブジェクトOBを復元できる。   Individual fragments are stored in the disks 31 of k + m different fragment servers 3. The data stored in this way can restore the original object OB even if up to m arbitrary fragments are lost.

この図3は、k=6、m=3とした場合を例示している。この場合は、フラグメントをそれぞれ9台以上の異なるフラグメントサーバ3のディスク31へ保存する。そして、任意の3個のフラグメントの喪失、例えば3台のフラグメントサーバ3の故障まで許容される。   FIG. 3 illustrates the case where k = 6 and m = 3. In this case, each fragment is stored in the disks 31 of nine or more different fragment servers 3. Any loss of three fragments, for example, failure of three fragment servers 3 is allowed.

なお、消失符号化後の保存容量の増加率R(%)は、R=(m/k)×100で求められる。図3の例では、保存容量の増加率Rは50%である。   The increase rate R (%) of the storage capacity after erasure coding is obtained by R = (m / k) × 100. In the example of FIG. 3, the increase rate R of the storage capacity is 50%.

図4は、ディスク選択インデックスファイル213を例示する図である。   FIG. 4 is a diagram illustrating the disk selection index file 213.

ディスク選択インデックスファイル213は、フラグメントの保存先となるフラグメントサーバ3の集合を示す。各フラグメントサーバ3のディスク31には、各ディスク31を識別する固有のID(以下、ディスクIDとする)が付与される。フラグメントの保存先となるフラグメントサーバ3の集合は、ディスクIDの集合で表され、その集合ごとに固有のID(以下、ディスクセットIDとする)が付与される。   The disk selection index file 213 indicates a set of fragment servers 3 that are fragment storage destinations. Each disk 31 of each fragment server 3 is given a unique ID for identifying each disk 31 (hereinafter referred to as a disk ID). A set of fragment servers 3 serving as a fragment storage destination is represented by a set of disk IDs, and a unique ID (hereinafter referred to as a disk set ID) is assigned to each set.

ディスク選択インデックスファイル213は、フラグメントサーバ3の追加又は削除の際に事前に計算される。各フロントエンドサーバ2は、ディスク選択インデックスファイル213を保持する。   The disk selection index file 213 is calculated in advance when the fragment server 3 is added or deleted. Each front-end server 2 holds a disk selection index file 213.

例えば、ディスク選択インデックスファイル213におけるそのディスクIDの出現確率は各フラグメントサーバ3のデータ記憶容量に比例する。例えばディスクID=xのフラグメントサーバ3のデータ記憶容量が1TB、ディスクID=yのフラグメントサーバ3のデータ記憶容量が2TBである場合、yの出現確率はxの2倍となる。また、ディスク選択インデックスファイル213において、各ディスクIDは、この出現確率を満たした上でランダムに分布している。ただし、各フラグメントは必ず異なるディスクへ保存されるため、同一の列には必ず異なるディスクIDが現れ、同じディスクIDは同じ列に2以上含まれない。   For example, the appearance probability of the disk ID in the disk selection index file 213 is proportional to the data storage capacity of each fragment server 3. For example, when the data storage capacity of the fragment server 3 with disk ID = x is 1 TB and the data storage capacity of the fragment server 3 with disk ID = y is 2 TB, the appearance probability of y is twice that of x. In the disk selection index file 213, each disk ID is randomly distributed while satisfying the appearance probability. However, since each fragment is always stored in a different disk, different disk IDs always appear in the same column, and two or more same disk IDs are not included in the same column.

ディスク選択インデックスファイル213をあるディスクセットID(zとする)に基づいて参照する、といった場合、ディスク選択インデックスファイル213のz列の集合値が返却される。この集合をディスクセットと呼ぶ。前述のとおり、ディスクセットには複数のディスクIDが含まれるが、1つのディスクセット上でディスクIDが重複することはない。例えば、ディスクセットID=3の保存先は[0,3,8,6,7,4, ... ]となる。   When referring to the disk selection index file 213 based on a certain disk set ID (z), the set value of the z column of the disk selection index file 213 is returned. This set is called a disk set. As described above, a disk set includes a plurality of disk IDs, but disk IDs do not overlap on one disk set. For example, the storage destination of the disk set ID = 3 is [0, 3, 8, 6, 7, 4,.

フロントエンドサーバ2は、保存したいデータ(具体的にはあるストライドから生成されたフラグメントの集合)に対してディスクセットIDを決定し、決定されたディスクセットIDに基づいてディスク選択インデックスファイル213を参照し、ディスクセットIDに対応するディスクIDに従ってデータを保存する。これにより、各フラグメントを必ず異なるフラグメントサーバ3へ保存できる。また、ディスクIDの出現確率はフラグメントサーバ3のデータ記憶容量に比例している。このため、データ記憶容量の異なるフラグメントサーバ3があっても、フラグメントサーバ3のデータ記憶容量に従ってフラグメントが適度な分布で保存される。   The front-end server 2 determines a disk set ID for data to be stored (specifically, a set of fragments generated from a certain stride), and refers to the disk selection index file 213 based on the determined disk set ID. Then, the data is stored according to the disk ID corresponding to the disk set ID. Thereby, each fragment can always be stored in a different fragment server 3. The appearance probability of the disk ID is proportional to the data storage capacity of the fragment server 3. For this reason, even if there are fragment servers 3 having different data storage capacities, the fragments are stored in an appropriate distribution according to the data storage capacities of the fragment servers 3.

図5は、重複排除方法の第1乃至第3の方式を例示する図である。同じ符号を付したデータ内容は、同じであるとする。   FIG. 5 is a diagram illustrating the first to third methods of the deduplication method. It is assumed that data contents with the same reference numerals are the same.

オブジェクトO1とオブジェクトO2は、先頭のデータ内容A、及び中間のデータ内容Bは同一であるものの、末尾のデータ内容がCとZとで異なっている。オブジェクトO3は、オブジェクトO2に対して、先頭にデータ内容Yが挿入され、またデータ内容Aとデータ内容Bの間にXが挿入され、データ内容Zが削除された点で異なっている。   Object O1 and object O2 have the same data content A at the beginning and data content B in the middle, but the data content at the end differs between C and Z. Object O3 differs from object O2 in that data content Y is inserted at the beginning, X is inserted between data content A and data content B, and data content Z is deleted.

オブジェクトストレージにおける重複排除には、例えば第1乃至第3の方式が考えられる。   For example, the first to third methods can be considered for deduplication in the object storage.

第1の方式は、オブジェクト(例えばファイル)単位での重複排除である。しかしながら、第1の方式はある2つのオブジェクトにおいて、例えば1ビットの差異があっただけで重複排除を行うことができなくなり、重複排除の効率は高くない。   The first method is deduplication in units of objects (for example, files). However, in the first method, for example, deduplication cannot be performed with only one bit difference between two objects, and deduplication efficiency is not high.

図5では、オブジェクトO1とオブジェクトO2は、重複するデータ内容A,Bを含むが、互いに重複しないデータ内容C,Zを含むため、不一致である。また、オブジェクトO2とオブジェクトO3は、重複するデータ内容A,Bを含むが、オブジェクトO2はオブジェクトO3が含まないデータ内容Zを含み、オブジェクトO3はオブジェクトO2が含まないデータ内容Y,Xを含むため、不一致である。したがって、第1の方式において、オブジェクトO1〜O3の間で重複排除は実行されない。   In FIG. 5, the object O1 and the object O2 include overlapping data contents A and B, but do not match because they include data contents C and Z that do not overlap each other. The objects O2 and O3 include overlapping data contents A and B, but the object O2 includes data contents Z that does not include the object O3, and the object O3 includes data contents Y and X that do not include the object O2. , Disagreement. Therefore, in the first method, deduplication is not executed between the objects O1 to O3.

第2の方式は、重複排除を行う固定長でオブジェクトを分割し、その固定長単位で重複排除を行う方式である(以下、固定位置による重複排除と呼ぶ)。この第2の方式では、複数のオブジェクトにおける同じ位置に現れる固定長単位の重複は排除できる。しかしながら、挿入などにより同じデータ内容が複数のオブジェクトの異なる位置にある場合にはこの同じデータ内容の重複を排除することはできない。例えば、第2の方式では、前述の1ビットの差異がある部分には重複排除が適用されないが、同じ位置に固定長単位で同じデータ内容があれば、この同じ位置で同じデータ内容の重複排除が行われる。図5の第2の方式では、オブジェクトO1とオブジェクトO2との間で、データ内容Aとデータ内容Bとは、位置と値が一致するため重複排除可能である。オブジェクトO2とオブジェクトO3との間で、データ内容A,Bは同じ値であるが、位置が異なる。このため、オブジェクトO2とオブジェクトO3との間で、固定長単位でデータ内容は不一致となり、重複排除されない。第2の方式は、第1の方式に対してより多くの重複排除が行える。しかしながら、この第2の方式は、例えばあるファイルの先頭に1バイトのデータが挿入された場合に、重複排除されない。   The second method is a method in which an object is divided by a fixed length for performing deduplication, and deduplication is performed in units of the fixed length (hereinafter referred to as deduplication by a fixed position). In the second method, it is possible to eliminate duplication of fixed length units appearing at the same position in a plurality of objects. However, when the same data content is at different positions of a plurality of objects due to insertion or the like, the duplication of the same data content cannot be eliminated. For example, in the second method, deduplication is not applied to the portion having the one-bit difference described above. However, if there is the same data content in a fixed length unit at the same position, deduplication of the same data content at this same position is performed. Is done. In the second method of FIG. 5, the data content A and the data content B between the object O1 and the object O2 can be de-duplicated because their positions and values match. The data contents A and B are the same value between the object O2 and the object O3, but the positions are different. For this reason, the data contents are inconsistent in fixed length units between the object O2 and the object O3, and deduplication is not performed. The second method can perform more deduplication than the first method. However, in the second method, for example, when 1 byte data is inserted at the head of a certain file, deduplication is not performed.

第3の方式は、重複部分の検出位置を固定せず、自由位置で重複排除を行う方式である。(以下、自由位置による重複排除と呼ぶ)。この第3の方式では、たとえオブジェクトにおける位置が異なっていても固定長単位でデータ内容が同じであれば重複する部分を排除できる。図5の第3の方式では、オブジェクトO1とオブジェクトO2との間で、データ内容A及びデータ内容Bの重複排除が可能である。オブジェクトO2とオブジェクトO3との間で、位置が異なるが一致するデータ内容A,Bの重複排除が可能である。第3の方式では、例えば前述のように1バイトのデータが挿入された場合でも、その1バイトのデータのみが重複排除の対象にならず、残りの部分は重複排除の対象となり、高い重複排除効果が得られる。   The third method is a method of performing deduplication at a free position without fixing the detection position of the overlapping portion. (Hereinafter referred to as de-duplication by free positions). In the third method, even if the positions in the object are different, overlapping portions can be eliminated if the data contents are the same in a fixed length unit. In the third method of FIG. 5, deduplication of the data content A and the data content B is possible between the object O1 and the object O2. It is possible to deduplicate the data contents A and B that match at different positions between the object O2 and the object O3. In the third method, for example, even when 1-byte data is inserted as described above, only the 1-byte data is not subject to deduplication, and the remaining portion is subject to deduplication, resulting in high deduplication. An effect is obtained.

第3の方式では、オブジェクト間で一致か否かを判断する単位である固定長にも依存するが、ファイル全体に対する重複排除である第1の方式と比較して15%から20%程度のデータ量を削減可能である。   In the third method, depending on the fixed length, which is a unit for determining whether or not the objects match, the data is about 15% to 20% compared to the first method, which is deduplication for the entire file. The amount can be reduced.

本実施形態に係る情報処理システム1では、オブジェクト単位で重複排除を行う第1の方式、固定長で同じデータ内容がオブジェクトにおける同じ位置に配置されている場合に重複排除を行う第2の方式、オブジェクトにおける位置が同じであっても異なる場合であっても固定長で同じデータ内容を重複排除する第3の方式を併用可能である。   In the information processing system 1 according to the present embodiment, a first method for performing deduplication in units of objects, a second method for performing deduplication when the same data content is arranged at the same position in an object, Even if the positions in the object are the same or different, the third method of deduplicating the same data content with a fixed length can be used in combination.

なお、以下では重複を排除するために一致か否かを判断する固定長(重複排除単位)をストライド長と呼ぶ。図5において、データ内容A,B,C,Zのバイト長は、ストライド長である。   Hereinafter, a fixed length (duplication elimination unit) for determining whether or not they match in order to eliminate duplication will be referred to as stride length. In FIG. 5, the byte lengths of the data contents A, B, C, and Z are stride lengths.

図6は、通常のハッシュ計算とローリングハッシュ計算との比較結果を例示する図である。   FIG. 6 is a diagram illustrating a comparison result between normal hash calculation and rolling hash calculation.

本実施形態において、例えば、フィンガープリントの計算には、ローリングハッシュと呼ばれる方法を用いる。ローリングハッシュは、通常のハッシュ計算と比べて、計算量を低減することができる。しかしながら、ローリングハッシュに代えて、データ内容が一致しているか否か判断可能な他の方法を用いてもよい。   In the present embodiment, for example, a method called rolling hash is used for calculating the fingerprint. A rolling hash can reduce the amount of calculation compared with a normal hash calculation. However, instead of the rolling hash, another method that can determine whether or not the data contents match may be used.

通常のハッシュ関数Hで固定位置の重複排除を行う場合は、ストライド毎のフィンガープリントを計算すればよく、例えばハッシュ関数Hにストライドの文字列を引数として渡し、計算させる。この場合の計算量は、文字列の長さをn(nは整数)とすると、O(n)である。   When deduplication of fixed positions is performed using the normal hash function H, the fingerprint for each stride may be calculated. For example, the character string of the stride is passed to the hash function H as an argument to be calculated. The amount of calculation in this case is O (n), where n is the length of the character string (n is an integer).

しかしながら、通常のハッシュ関数Hで自由位置の重複排除を行う際には、重複排除を行う文字列の箇所を、例えば1バイト(1文字)ずつずらしながら探索を行うため、文字列長nの全ての位置でハッシュ関数Hにより計算を行うと、計算量はO(n)となる。 However, when performing deduplication at a free position with the normal hash function H, the character string length n is all searched because the search is performed while shifting the position of the character string to be deduplicated, for example, by 1 byte (one character) at a time. The calculation amount is O (n 2 ) when the calculation is performed with the hash function H at the position.

これに対し、ローリングハッシュ関数Ruは、ある長さLについてのハッシュ値(フィンガープリント)に対して、例えば1バイト付加した値及び1バイト削除した値を計算することができる関数である。このローリングハッシュ関数Ruを用いることにより、最初の文字列のハッシュ値の計算より後の1回あたりのハッシュ値の計算量をO(1)に低減することができる。   On the other hand, the rolling hash function Ru is a function that can calculate, for example, a value obtained by adding 1 byte and a value obtained by deleting 1 byte with respect to a hash value (fingerprint) for a certain length L. By using this rolling hash function Ru, it is possible to reduce the amount of calculation of the hash value per time after the calculation of the hash value of the first character string to O (1).

図6では、例えば、文字列長nの文字列「ABCDEFGH…」に対し、L=5の文字列のフィンガープリントを計算する場合を例示する。   For example, FIG. 6 illustrates a case where the fingerprint of a character string of L = 5 is calculated for a character string “ABCDEFGH...” Having a character string length n.

図6において、Stを内部状態、Ctをハッシュ値とする(tは整数)。通常のハッシュ関数H、ローリングハッシュ関数Ruは、それぞれハッシュ計算結果として、(St,Ct)の組み合わせを出力する。   In FIG. 6, St is an internal state and Ct is a hash value (t is an integer). The normal hash function H and the rolling hash function Ru each output a combination of (St, Ct) as a hash calculation result.

通常のハッシュ関数Hを用いる場合、最初の文字列「ABCDE」に対する計算量はO(n)である。1文字ずらして得られる全ての文字列の組み合わせで同じ計算量、すなわちO(n)が必要であることから、全体で近似的にO(n)の計算量が必要となる。 When the normal hash function H is used, the calculation amount for the first character string “ABCDE” is O (n). Since the same calculation amount, that is, O (n) is required for all combinations of character strings obtained by shifting by one character, the calculation amount of O (n 2 ) is approximately required as a whole.

これに対し、ローリングハッシュ関数Ruを用いる場合は、最初の文字列「ABCDE」に対しては、通常のハッシュ関数Hを用いるため、計算量はO(n)である。しかしながら、次の文字列「BCDEF」に対しては、ローリングハッシュ関数Ruに対して、最初の計算で得られた内部状態S0と、最初の文字列に対しAを除く旨の引数(-”A”)、及びFを追加する旨の引数(+”F”)を与えることにより、計算O(1)で計算可能である。残りの文字列に対しても同様にO(1)の計算量となるため、全体では近似的にO(n)となり、ハッシュ関数Hのみを用いた場合に比べ、計算量を大幅に低減することができる。   On the other hand, when the rolling hash function Ru is used, since the normal hash function H is used for the first character string “ABCDE”, the calculation amount is O (n). However, for the next character string “BCDEF”, for the rolling hash function Ru, the internal state S0 obtained by the first calculation and the argument (− “A” for excluding A from the first character string) ") And an argument (+" F ") for adding F can be given by calculation O (1). Since the calculation amount of O (1) is similarly applied to the remaining character strings, the overall calculation is approximately O (n), and the calculation amount is greatly reduced as compared with the case where only the hash function H is used. be able to.

なお、上記で示した全体での計算量は、文字列の長さnが文字列Lの長さに対して十分に長い場合の収束値である。   The overall calculation amount shown above is a convergence value when the length n of the character string is sufficiently longer than the length of the character string L.

以下、図7及び図8を用いて、具体的にフラグメントの保存処理を説明する。   Hereinafter, the fragment storing process will be specifically described with reference to FIGS. 7 and 8.

図7は、フラグメント保存処理を例示するフローチャートである。   FIG. 7 is a flowchart illustrating fragment storage processing.

図8は、フラグメント保存処理を例示する概念図である。図8に付した番号は、図7の各ステップに付した番号と対応する。   FIG. 8 is a conceptual diagram illustrating fragment storage processing. The numbers given in FIG. 8 correspond to the numbers given to the steps in FIG.

まず、保存する各オブジェクトには、ユーザU又は端末11のアプリケーションが識別子を与える。これをオブジェクトIDと呼ぶ。オブジェクトIDは、例えば従来のファイルシステムにおけるファイル名の役割を持つ。   First, the user U or the application of the terminal 11 gives an identifier to each object to be stored. This is called an object ID. The object ID has a role of a file name in a conventional file system, for example.

ステップS701において、フロントエンドサーバ2は、ユーザUの端末11又は端末11のアプリケーションからオブジェクトOBの保存要求を受けると、送受信部22を経由して、オブジェクト記憶部211にオブジェクトOBを格納する。   In step S <b> 701, when the front-end server 2 receives a request to save the object OB from the terminal 11 of the user U or the application of the terminal 11, the front-end server 2 stores the object OB in the object storage unit 211 via the transmission / reception unit 22.

なお、送受信部22を経由して受信したオブジェクトOBが直接メモリ24に格納される場合は、オブジェクトOBはオブジェクト記憶部211に保存されなくてもよい。   When the object OB received via the transmission / reception unit 22 is directly stored in the memory 24, the object OB does not have to be stored in the object storage unit 211.

ステップS702において、オブジェクト分割部201は、オブジェクトOBをメモリ24に読み出し、ストライドSTに分割する。この際、オブジェクトOBのサイズがストライドSTのサイズの整数倍でない場合は、オブジェクトOBに対しストライドSTの整数倍と等しいサイズまでパディングする。図8(S702)の例では、オブジェクト分割部201は、オブジェクトOBのサイズがストライドのサイズの3倍となるようにパディングが行われ、ストライドA,B,Cに分割される。   In step S702, the object dividing unit 201 reads the object OB into the memory 24 and divides it into strides ST. At this time, if the size of the object OB is not an integral multiple of the size of the stride ST, the object OB is padded to a size equal to the integral multiple of the stride ST. In the example of FIG. 8 (S702), the object dividing unit 201 performs padding so that the size of the object OB is three times the size of the stride, and is divided into strides A, B, and C.

ステップS703において、消失符号計算部202は、各ストライドA,B,Cに対して消失符号による符号化を行い、情報シンボル部ISとパリティシンボル部PSに含まれるそれぞれのフラグメントを生成する。図8(S703)の例では、消失符号のパラメータはk=4、m=2であるとする。消失符号計算部202がストライドAに対して符号化を行った結果、情報シンボル部ISとして4つのフラグメントA1,A2,A3,A4、パリティシンボル部PSとして2つのフラグメントA5,A6が生成される。ストライドB及びCについても、情報シンボル部ISとして4つのフラグメントが生成され、パリティシンボル部PSとして2つのフラグメントが生成される。   In step S703, the erasure code calculation unit 202 encodes each of the strides A, B, and C using an erasure code to generate respective fragments included in the information symbol part IS and the parity symbol part PS. In the example of FIG. 8 (S703), it is assumed that the parameters of the erasure code are k = 4 and m = 2. As a result of the erasure code calculation unit 202 encoding the stride A, four fragments A1, A2, A3 and A4 are generated as the information symbol part IS, and two fragments A5 and A6 are generated as the parity symbol part PS. Also for the strides B and C, four fragments are generated as the information symbol part IS, and two fragments are generated as the parity symbol part PS.

ステップS704において、フィンガープリント計算部203は、各ストライドA,B,Cに対してローリングハッシュを用いてフィンガープリントを計算する。計算されたフィンガープリントは、フィンガープリントセット212に格納される。図8(S704)の例では、フロントエンドサーバ2が各ストライドA,B,Cに対してローリングハッシュを用いてフィンガープリントを計算した結果、それぞれフィンガープリントFP_A,FP_B,FP_Cが生成される。   In step S <b> 704, the fingerprint calculation unit 203 calculates a fingerprint for each stride A, B, and C using a rolling hash. The calculated fingerprint is stored in the fingerprint set 212. In the example of FIG. 8 (S704), as a result of the front end server 2 calculating the fingerprint for each stride A, B, and C using the rolling hash, the fingerprints FP_A, FP_B, and FP_C are generated.

ステップS705において、制御部25は、各ストライドA,B,Cに対するフィンガープリントFP_A,FP_B,FP_Cを用いてディスク選択インデックスファイル213を参照し、各フラグメントの保存先のフラグメントサーバ3を決定する。各ストライドA,B,Cに対するフィンガープリントFP_A,FP_B,FP_Cにより保存先のフラグメントサーバ3が決まるため、同一の内容を持つストライドSTは必ず同一のフラグメントサーバ3に保存される。図8(S705)の例では、FP_Aの値よりディスクセットID=2が決定され、図4に示されるディスク選択インデックスファイル213を参照することにより、ストライドAに属するフラグメントの保存先の配列が[6,1,0,9,3,7]と決定される。配列[6,1,0,9,3,7]のそれぞれの要素は、フラグメントA1〜A6に対応する保存先のフラグメントサーバ3の番号を示す。ストライドB及びCについても同様にフラグメントの保存先が決定される。   In step S705, the control unit 25 refers to the disk selection index file 213 using the fingerprints FP_A, FP_B, and FP_C for the strides A, B, and C, and determines the fragment server 3 that is the storage destination of each fragment. Since the storage destination fragment server 3 is determined by the fingerprints FP_A, FP_B, and FP_C for each of the strides A, B, and C, the stride ST having the same contents is always stored in the same fragment server 3. In the example of FIG. 8 (S705), the disk set ID = 2 is determined from the value of FP_A, and by referring to the disk selection index file 213 shown in FIG. 6, 1, 0, 9, 3, 7]. Each element of the array [6, 1, 0, 9, 3, 7] indicates the number of the storage destination fragment server 3 corresponding to the fragments A1 to A6. Similarly, for the strides B and C, the storage destination of the fragment is determined.

ステップS706において、制御部25は、送受信部22を通じて、各フラグメントを保存先のフラグメントサーバ3に送信する。図8(S706)の例において、ステップS705で参照されたディスク選択インデックスファイル213の内容に沿って、各フラグメントがフラグメントサーバ3へ保存される。例えば、ストライドAに属するフラグメントA1〜A6であれば、フラグメントA1がフラグメントサーバK6に、フラグメントA2がフラグメントサーバK1に、フラグメントA3がフラグメントサーバK0に、フラグメントA4がフラグメントサーバK9に、フラグメントA5がフラグメントサーバK3に、フラグメントA6がフラグメントサーバK7に保存される。ストライドB及びCについても同様に各フラグメントが保存先のフラグメントサーバ3へ保存される。   In step S <b> 706, the control unit 25 transmits each fragment to the storage destination fragment server 3 through the transmission / reception unit 22. In the example of FIG. 8 (S706), each fragment is stored in the fragment server 3 in accordance with the contents of the disk selection index file 213 referred to in step S705. For example, for fragments A1 to A6 belonging to stride A, fragment A1 is fragment server K6, fragment A2 is fragment server K1, fragment A3 is fragment server K0, fragment A4 is fragment server K9, and fragment A5 is fragment. The fragment A6 is stored in the fragment server K7 in the server K3. Similarly, each of the strides B and C is stored in the storage destination fragment server 3.

なお、各フラグメントを保存する際、各フラグメントと共にメタデータを保存する。本実施形態では、メタデータの一例として、保存対象のフラグメントを先頭とする1ストライド分のフィンガープリントと、ローリングハッシュを用いて計算した際に得られる内部状態とを保存する(これを、ロールサム状態(roll sum state)とする)。また、重複排除処理が行われたかどうかを示すフラグを保存する(これを、参照カウンタ値とする)。例えば、参照カウンタ値の初期値は1であり、重複排除のために参照されるたびに数値が増加してもよい。メタデータの詳細については表1乃至表5にて後述する。   When each fragment is stored, metadata is stored together with each fragment. In the present embodiment, as one example of metadata, a fingerprint for one stride starting from a fragment to be stored and an internal state obtained by calculation using a rolling hash are stored (this is a roll sum state). (Roll sum state)). Also, a flag indicating whether or not deduplication processing has been performed is stored (this is referred to as a reference counter value). For example, the initial value of the reference counter value is 1, and the numerical value may increase each time it is referred to for deduplication. Details of the metadata will be described later in Tables 1 to 5.

以下表1乃至表5を用いて、各フラグメントに付すメタデータについて説明する。   The metadata attached to each fragment will be described below using Tables 1 to 5.

表1は、本実施形態で用いるメタデータを例示する表である。

Figure 0006113816
Table 1 is a table illustrating metadata used in this embodiment.
Figure 0006113816

フラグメントをフラグメントサーバ3へ保存する際、オブジェクトOB全体の構成情報及び各ストライドSTの構成情報など、様々な付随情報が必要となる。この付随情報をメタデータと呼ぶ。メタデータは、オブジェクトOBの保存時にフラグメントサーバ3に保存される。   When the fragment is stored in the fragment server 3, various accompanying information such as configuration information of the entire object OB and configuration information of each stride ST is required. This accompanying information is called metadata. The metadata is stored in the fragment server 3 when the object OB is stored.

なお、表1で例示する各メタデータは、例えばキー・バリュー構成をとる。キー・バリュー構成とは、データがキー情報と値の組み合わせで保存されており、キー情報を指定することで値を読み出せる構成である。   Each metadata exemplified in Table 1 has a key / value structure, for example. The key-value configuration is a configuration in which data is stored as a combination of key information and value, and the value can be read by specifying the key information.

各メタデータ値には、メタデータを参照するためのキー情報が与えられるが、異なるメタデータ値に対して同一のキーが使用される場合がある。そのため、各メタデータにはキー・プレフィックスが割り当てられ、保存時の実キーにはこのキー・プレフィックスとキー情報を結合した値が使用される。   Each metadata value is given key information for referring to the metadata, but the same key may be used for different metadata values. Therefore, a key prefix is assigned to each metadata, and a value obtained by combining this key prefix and key information is used as an actual key at the time of storage.

表1中の「複製可能?」欄はそのメタデータが複製されて保存されるか否かを示している。フラグメントそのものに関するメタデータは複製されず、他のメタデータについては複製される。   The “replicatable?” Column in Table 1 indicates whether or not the metadata is copied and stored. Metadata about the fragment itself is not duplicated, and other metadata is duplicated.

各キー及びメタデータの概要は以下のとおりである。   The outline of each key and metadata is as follows.

本実施形態において、オブジェクトOBには、オブジェクトIDに加えて、内部の識別子が与えられる。この内容の識別子をカウンタと呼ぶ。例えば、カウンタは、符号なし64ビットの単調増加する値とする。本実施形態において、カウンタは、例えば、第1の情報、第2の情報、フロントエンドサーバIDを含む。   In the present embodiment, an internal identifier is given to the object OB in addition to the object ID. This identifier is called a counter. For example, the counter is a monotonically increasing value of 64 bits with no sign. In the present embodiment, the counter includes, for example, first information, second information, and a front-end server ID.

第1の情報は、対応するオブジェクトOBが内部的に割り当てられた際の第1の時刻における秒の部分を示す。   The first information indicates the second part at the first time when the corresponding object OB is internally allocated.

第2の情報は、第1の時刻と第2の時刻との差をマイクロ秒で表した時刻の値を所定の値(例えば25)で割った値である。   The second information is a value obtained by dividing a time value representing the difference between the first time and the second time in microseconds by a predetermined value (for example, 25).

フロントエンドサーバIDは、各フロントエンドサーバ2に割り当てられる固有の識別子である。カウンタにこのフロントエンドサーバIDが含まれることで、例えば同一の時刻に異なるフロントエンドサーバ2でカウンタが割り当てられたとしても、このカウンタの値は異なることが保証される。   The front end server ID is a unique identifier assigned to each front end server 2. By including this front-end server ID in the counter, for example, even if the counter is assigned by different front-end servers 2 at the same time, it is guaranteed that the value of this counter is different.

また、ユーザU又は端末11のアプリケーションが異なるオブジェクトに同じオブジェクトIDを与えて保存する場合であっても、カウンタの値は異なることが保証される。   Even when the application of the user U or the terminal 11 gives the same object ID to different objects and saves them, it is guaranteed that the counter values are different.

本実施形態において、各フロントエンドサーバ2で管理されている時刻は、同期されていると仮定する。この場合、カウンタを比較することで、複数のオブジェクトOB又はオブジェクトOBに関連する複数のメタデータのいずれが新しいかを比較することが可能である。   In the present embodiment, it is assumed that the time managed by each front-end server 2 is synchronized. In this case, it is possible to compare which of the plurality of objects OB or the plurality of metadata related to the object OB is new by comparing the counters.

オブジェクト・メタ・カウンタは、キー情報に使用されているオブジェクトIDを持つオブジェクトのカウンタのリストであり、最大のカウンタが最新のオブジェクトとなる。オブジェクト・メタデータは、オブジェクトのメタデータの集合であり、一例を後述の表2に示す。ストライド・メタデータは、各ストライドに関するメタデータの集合であり、一例を後述の表3に示す。ストライドIDは、そのオブジェクトで何番目のストライドかを示す番号である。フラグメント・メタデータは、各フラグメントに関するメタデータであり、一例を後述の表4に示す。フラグメント位置情報は、フラグメントの位置によりフラグメントの実体を特定するためのメタデータであり、カウンタ、外部ストライドID(後述)、フラグメントIDにより定まる。参照カウント値は、フラグメント参照数であり、重複排除されている場合には2以上の値を持つ。誤り訂正符号は、例えばCyclic Redundancy Check(CRC)などの誤り検出に用いられる符号である。ピボットは、ドライブ側で探索された想定重複位置であり、内部ストライドID、オフセット、ピボット長の3つの組で表現される。ピボットの詳細については、後述する。   The object meta counter is a list of counters of objects having object IDs used for key information, and the largest counter is the latest object. The object metadata is a set of object metadata, and an example is shown in Table 2 described later. Stride metadata is a set of metadata related to each stride, and an example is shown in Table 3 to be described later. The stride ID is a number indicating the number of stride in the object. Fragment metadata is metadata relating to each fragment, and an example is shown in Table 4 described later. The fragment position information is metadata for specifying the entity of the fragment by the fragment position, and is determined by a counter, an external stride ID (described later), and a fragment ID. The reference count value is the number of fragment references, and has a value of 2 or more when deduplication is performed. The error correction code is a code used for error detection such as a cyclic redundancy check (CRC). The pivot is an assumed overlapping position searched on the drive side, and is expressed by three sets of internal stride ID, offset, and pivot length. Details of the pivot will be described later.

同じ誤り訂正符号を持つフラグメントIDの集合は、比較前(NC:not compared)の集合と比較後(CC:compared)の集合の2種類の集合に分類されて保存される。フロントエンドサーバ2による保存時には比較前の集合として保存される。   A set of fragment IDs having the same error correction code is classified and stored in two types of sets, a set before comparison (NC: not compared) and a set after comparison (CC: compared). When saved by the front-end server 2, it is saved as a set before comparison.

表2は、オブジェクト・メタデータの内容を例示する表である。

Figure 0006113816
Table 2 is a table illustrating the contents of the object metadata.
Figure 0006113816

表3は、ストライド・メタデータの内容を例示する表である。

Figure 0006113816
Table 3 is a table illustrating the content of stride metadata.
Figure 0006113816

表4は、フラグメント・メタデータの内容を例示する表である。

Figure 0006113816
Table 4 is a table illustrating the contents of fragment metadata.
Figure 0006113816

また、各メタデータの保存先については、メタデータが複製される場合にはディスクセットIDを求める必要があり、メタデータが複製されない場合にはディスクIDを求める必要がある。   As for the storage destination of each metadata, it is necessary to obtain the disk set ID when the metadata is duplicated, and it is necessary to obtain the disk ID when the metadata is not duplicated.

表5は、メタデータとメタデータの保存先との関係を例示する表である。

Figure 0006113816
Table 5 is a table illustrating the relationship between the metadata and the storage destination of the metadata.
Figure 0006113816

表5のHR(x)は、ハッシュ関数H(引数x)で求まる値を、ディスク選択インデックスファイル213の列数で割った余り値である。ディスクセットIDが得られる場合には、そのディスクセットの先頭からフラグメントID番目のディスクIDに対応するフラグメントサーバ3にメタデータが保存される。   HR (x) in Table 5 is a remainder value obtained by dividing the value obtained by the hash function H (argument x) by the number of columns of the disk selection index file 213. When the disk set ID is obtained, the metadata is stored in the fragment server 3 corresponding to the fragment ID-th disk ID from the top of the disk set.

メタデータ間の関係を明らかにするために、ユーザUの使用する端末11がオブジェクトを読み出す際の手順を例に各メタデータの関係について述べる。   In order to clarify the relationship between metadata, the relationship between each metadata will be described by taking as an example a procedure when the terminal 11 used by the user U reads an object.

図9は、オブジェクトID=o1であるオブジェクトの読み出し手順を例示するフローチャートである。   FIG. 9 is a flowchart illustrating a procedure for reading an object with object ID = o1.

ステップS901において、フロントエンドサーバ2は、オブジェクトIDであるo1をキー情報として、フラグメントサーバ3に保存されているオブジェクトカウンタを読み出す。オブジェクトカウンタの保存先のディスクセットIDは、ハッシュ関数HR(引数o1)により求められる。   In step S901, the front-end server 2 reads out the object counter stored in the fragment server 3 using o1 that is the object ID as key information. The disk set ID of the storage destination of the object counter is obtained by the hash function HR (argument o1).

ステップS902において、フロントエンドサーバ2は、得られたオブジェクトカウンタから、最大のカウンタを求め(この値をc1とする)、c1をキーとしてオブジェクト・メタデータを読み出す。オブジェクト・メタデータの保存先のディスクセットIDは、ハッシュ関数HR(引数c1)により求められる。   In step S902, the front-end server 2 obtains the maximum counter from the obtained object counter (this value is c1), and reads the object metadata using c1 as a key. The disk set ID of the object metadata storage destination is obtained by the hash function HR (argument c1).

ステップS903において、フロントエンドサーバ2は、得られたオブジェクト・メタデータに含まれるルートストライドディスクセットID(最初のストライド・メタデータが保存されているディスクセットID、表2参照)を得て、カウンタc1をキーとしてストライド・メタデータを読み出す。   In step S903, the front-end server 2 obtains the root stride disk set ID (disk set ID in which the first stride metadata is stored, see Table 2) included in the obtained object metadata, and the counter The stride metadata is read using c1 as a key.

次に、フロントエンドサーバ2は、ストライド内のフラグメントを読み出す。   Next, the front-end server 2 reads the fragment in the stride.

ステップS904において、フロントエンドサーバ2は、ストライド・メタデータと同一のディスクセットIDを用いて、例えばi番目のフラグメント・メタデータを得る。   In step S904, the front-end server 2 obtains, for example, the i-th fragment metadata using the same disk set ID as the stride metadata.

ステップS905において、フロントエンドサーバ2は、フラグメント・メタデータに含むまれるフラグメントID(表4参照)を得て、フラグメント・メタデータと同一のディスクIDからフラグメント位置情報を読み出す。そして、フロントエンドサーバ2は、フラグメント位置情報に基づいて、フラグメントの内容を読み出す。   In step S905, the front-end server 2 obtains the fragment ID included in the fragment metadata (see Table 4), and reads the fragment position information from the same disk ID as the fragment metadata. Then, the front end server 2 reads the content of the fragment based on the fragment position information.

ステップS906において、フロントエンドサーバ2は、すべてのフラグメントを読み出した後、ストライド・メタデータに含まれる次ストライドディスクセットID(次のストライドが含まれるディスクセットID、表3参照)を得て、次のストライド・メタデータを読み出す。   In step S906, after reading all the fragments, the front-end server 2 obtains the next stride disk set ID (disc set ID including the next stride, see Table 3) included in the stride metadata, Read stride metadata for.

ステップS907において、フロントエンドサーバ2は、次のストライドが存在する場合は、ステップS904に戻り、フラグメントの読み出し処理を繰り返す。最後のストライドを読み出した場合、フロントエンドサーバ2は、オブジェクトの読み出し処理を終了する。   In step S907, if there is a next stride, the front-end server 2 returns to step S904 and repeats the fragment reading process. When the last stride is read, the front-end server 2 ends the object reading process.

図10は、重複するフラグメントの排除処理の具体例を示す図である。   FIG. 10 is a diagram illustrating a specific example of the duplicate fragment elimination process.

前述のように、フロントエンドサーバ2は、同じストライドに対して同じフィンガープリントを計算し、同じストライドから分割されたフラグメントを同じフラグメントサーバ3に保存する。また、同一の誤り訂正符号を持つフラグメントは同一の内容を持つフラグメントである可能性が高い。フラグメントサーバ3は、定期的にNC(重複排除のための比較前のフラグメントIDの集合、表1参照)に含まれる同じ誤り訂正符号を持つフラグメントを比較し、同じ誤り訂正符号を持つフラグメントが同一の内容であれば重複排除を行う。フラグメントサーバ3は、同じ誤り訂正符号を持つフラグメントが同一の内容でなければ、比較されたフラグメントのフラグメントIDをNCからCC(重複排除のための比較後のフラグメントIDの集合、表1参照)へと移動する。   As described above, the front-end server 2 calculates the same fingerprint for the same stride, and stores the fragments divided from the same stride in the same fragment server 3. In addition, there is a high possibility that fragments having the same error correction code have the same contents. The fragment server 3 periodically compares fragments having the same error correction code included in the NC (set of fragment IDs before comparison for deduplication, see Table 1), and fragments having the same error correction code are the same. If it is the content of, deduplication is performed. If the fragments having the same error correction code do not have the same content, the fragment server 3 changes the fragment ID of the compared fragment from NC to CC (set of fragment IDs after comparison for deduplication, see Table 1). And move.

重複排除処理を行う場合、重複排除処理部301は、次の第1乃至第4の重複排除処理を実行する。なお、重複排除で残すフラグメントをfrag_o、重複排除で削除するフラグメントをfrag_nと表記する。   When performing deduplication processing, the deduplication processing unit 301 performs the following first to fourth deduplication processing. It should be noted that a fragment left by deduplication is denoted as frag_o, and a fragment to be deleted by deduplication is denoted as frag_n.

第1の処理は、フラグメント・メタデータ内のフラグメントfrag_nのフラグメントIDを、フラグメントfrag_oのフラグメントIDに変更する処理である。   The first process is a process of changing the fragment ID of the fragment frag_n in the fragment metadata to the fragment ID of the fragment frag_o.

第2の処理は、フラグメントfrag_oの参照カウント値をインクリメントする処理である。   The second process is a process of incrementing the reference count value of the fragment frag_o.

第3の処理は、同一の誤り訂正符号を持つフラグメントIDの比較前の集合から、フラグメントfrag_nのフラグメントIDを削除する処理である。   The third process is a process of deleting the fragment ID of the fragment frag_n from the set before the comparison of the fragment IDs having the same error correction code.

第4の処理は、フラグメントfrag_nを削除する処理である。   The fourth process is a process for deleting the fragment frag_n.

メタデータ1001は、重複排除処理前のフラグメントfrag_oのメタデータである。メタデータ1001におけるフラグメントfrag_oのオブジェクトIDをoid_o、ストライドIDをsi_o、フラグメントIDをfid_oとする。   The metadata 1001 is metadata of the fragment frag_o before deduplication processing. The object ID of the fragment frag_o in the metadata 1001 is oid_o, the stride ID is si_o, and the fragment ID is fid_o.

メタデータ1002は、重複排除処理前のフラグメントfrag_nのメタデータである。メタデータ1002におけるフラグメントfrag_nのオブジェクトIDをoid_n、ストライドIDをsi_n、フラグメントIDをfid_nとする。   The metadata 1002 is metadata of the fragment frag_n before deduplication processing. The object ID of the fragment frag_n in the metadata 1002 is oid_n, the stride ID is si_n, and the fragment ID is fid_n.

フロントエンドサーバ2によって保存される時点で、フラグメントfrag_nとフラグメントfrag_oが同一だったと仮定する。この場合、フラグメントfrag_oの誤り訂正符号crc_oとフラグメントfrag_nの誤り訂正符号crc_nは同一の値となる。従って、重複排除処理部301は、(CC,crc_o)をキーとして参照されるフラグメントIDfid_oと、(NC,crc_o)をキーとして参照されるフラグメントIDfid_nとを比較対象として決定する。   Assume that the fragment frag_n and the fragment frag_o are the same when saved by the front-end server 2. In this case, the error correction code crc_o of the fragment frag_o and the error correction code crc_n of the fragment frag_n have the same value. Accordingly, the deduplication processing unit 301 determines the fragment ID fid_o referred to using (CC, crc_o) as a key and the fragment ID fid_n referred to using (NC, crc_o) as a key for comparison.

次に、重複排除処理部301は、(BK,fid_o)、(BK,fid_n)を参照することで、フラグメントIDfid_o,fid_nそれぞれが示すフラグメントの実体として、フラグメントfrag_o,frag_nを取得し、重複排除処理を実行する。   Next, the deduplication processing unit 301 refers to (BK, fid_o) and (BK, fid_n), acquires fragments frag_o and frag_n as the entity of the fragment indicated by each of the fragment IDs fid_o and fid_n, and performs deduplication processing. Execute.

メタデータ1003は重複排除処理後のfrag_oのメタデータである。メタデータ1004は、重複排除処理後のfrag_nのメタデータである。重複排除処理部301は、メタデータ1004において、フラグメントfrag_oとフラグメントfrag_nとが一致するため、フラグメントfrag_nを削除し、frag_nのフラグメント・メタデータにおいて、フラグメントIDfid_nをフラグメントIDfid_oに代える。すなわち、重複排除処理部301は、フラグメントfrag_nの実体を指し示す先をフラグメントfrag_oへ変更する。   Metadata 1003 is frag_o metadata after deduplication processing. Metadata 1004 is metadata of frag_n after deduplication processing. Since the fragment frag_o and the fragment frag_n match in the metadata 1004, the deduplication processing unit 301 deletes the fragment frag_n and replaces the fragment IDfid_n with the fragment IDfid_o in the fragment metadata of frag_n. That is, the de-duplication processing unit 301 changes the destination indicating the entity of the fragment frag_n to the fragment frag_o.

また、重複排除処理部301は、メタデータ1003において、フラグメントfid_oの参照カウント値を2に変更し、メタデータ1003に重複排除が行われたことを記録する。   Further, the deduplication processing unit 301 changes the reference count value of the fragment fid_o to 2 in the metadata 1003, and records that deduplication has been performed in the metadata 1003.

上述の処理によって、固定位置での重複排除を実現することができる。続いて、自由位置での重複排除の方法について述べる。   By the above process, deduplication at a fixed position can be realized. Next, a method for deduplication at a free position will be described.

図11は、フィンガープリントセットを例示する図である。   FIG. 11 is a diagram illustrating a fingerprint set.

フロントエンドサーバ2は、ストライドSTの最初のフラグメントを1/2ずつに分割して得られる前半部分のフィンガープリント及び後半部分のフィンガープリントを計算する。フロントエンドサーバ2は、最初のフラグメントに含まれる前半部分及び後半部分の2種類のフィンガープリントと、ストライドSTのフィンガープリントを保存する。この集合をフィンガープリントセットと呼ぶ。   The front-end server 2 calculates the first half fingerprint and the second half fingerprint obtained by dividing the first fragment of the stride ST by 1/2. The front-end server 2 stores two types of fingerprints of the first half and the second half included in the first fragment, and the stride ST fingerprint. This set is called a fingerprint set.

図11の例では、ストライドAについてフロントエンドサーバ2が保持するフィンガープリントセット212には、フラグメントA1の前半部分のフィンガープリントFP_a1、フラグメントA1の後半部分のフィンガープリントFP_a2、ストライドA全体のフィンガープリントFP_Aが含まれる。なお、ストライドB及びストライドCについても同様である。以下では、フラグメント長の半分の長さのフィンガープリントを、1/2フィンガープリントと呼ぶ。   In the example of FIG. 11, the fingerprint set 212 held by the front-end server 2 for the stride A includes the fingerprint FP_a1 of the first half of the fragment A1, the fingerprint FP_a2 of the second half of the fragment A1, and the fingerprint FP_A of the entire stride A. Is included. The same applies to stride B and stride C. Hereinafter, a fingerprint that is half the fragment length is referred to as a ½ fingerprint.

図12は、フロントエンドサーバ2におけるフィンガープリントセットの保存形式と探索方法を例示する図である。   FIG. 12 is a diagram illustrating a fingerprint set storage format and search method in the front-end server 2.

フロントエンドサーバ2は、フィンガープリントセット212の保存量が一定量に達した場合、フィンガープリントセット212をフラグメントサーバ3へ送信する。フラグメントサーバ3は、受信したフィンガープリントセット212を、記憶部31に保存する。フィンガープリントセット212及びフィンガープリントセット311の内容は、例えばブルームフィルタ(bloom filter)を用いることにより圧縮して保存されてもよい。ブルームフィルタが用いられる場合、フィンガープリントセットの内容は、1つのブルームフィルタにまとめられて保存される。   The front-end server 2 transmits the fingerprint set 212 to the fragment server 3 when the storage amount of the fingerprint set 212 reaches a certain amount. The fragment server 3 stores the received fingerprint set 212 in the storage unit 31. The contents of the fingerprint set 212 and the fingerprint set 311 may be compressed and stored by using, for example, a bloom filter. When a Bloom filter is used, the contents of the fingerprint set are stored together in one Bloom filter.

ブルームフィルタは、ビット配列で表される確率的データ構造であり、要素が集合のメンバーに含まれるか否かを判定する際に有用である。例えば、文字列検索にブルームフィルタを適用する場合では、ある文字列Vがあらかじめ定められた文字列の集合Wに含まれる場合は真を返し、文字列Vが集合Wに含まれない場合は偽を返す。   A Bloom filter is a probabilistic data structure represented by a bit array, and is useful in determining whether an element is included in a member of a set. For example, when a Bloom filter is applied to a character string search, true is returned when a certain character string V is included in a predetermined character string set W, and false when the character string V is not included in the set W. return it.

ブルームフィルタの具体的な計算方法は、まず複数の文字列の集合Wの全要素を、任意に定められたハッシュ関数を用いて1つのビット配列に変換する。次に、比較対象の文字列Vに対しても同じようにハッシュ関数を適用し、ビット配列を得る。そして、得られた文字列Vのビット配列と集合Wのビット配列とをビット単位で比較することにより、文字列の集合Wに比較対象の文字列Vが含まれるかどうかを判定する。具体的には、文字列Vのビット配列が1である位置に対応する集合Wのビット配列中に1つでも0が存在する場合は、文字列Vは文字列Wに含まれていないと判定される。   As a specific calculation method of the Bloom filter, first, all elements of a plurality of character string sets W are converted into one bit array using an arbitrarily defined hash function. Next, a hash function is similarly applied to the character string V to be compared to obtain a bit array. Then, by comparing the obtained bit array of the character string V and the bit array of the set W in bit units, it is determined whether or not the character string V to be compared is included in the character string set W. Specifically, if at least one 0 exists in the bit array of the set W corresponding to the position where the bit array of the character string V is 1, it is determined that the character string V is not included in the character string W. Is done.

本実施形態において、フィンガープリント計算部203は、図11に示した各フィンガープリント値を計算する。各フィンガープリント値は、フィンガープリントの種類に応じて任意に決められた固定値を連結した値で、各ハッシュ値を計算することで得られる。得られたブルームフィルタには、カウンタが割り当てられ、ブルームフィルタはカウンタをキー情報として保存される(表1のFSに該当する)。   In the present embodiment, the fingerprint calculation unit 203 calculates each fingerprint value shown in FIG. Each fingerprint value is a value obtained by connecting fixed values arbitrarily determined according to the type of fingerprint, and is obtained by calculating each hash value. A counter is assigned to the obtained Bloom filter, and the Bloom filter is stored with the counter as key information (corresponding to FS in Table 1).

また、フィンガープリントセットFPSの探索を容易にするために、フィンガープリントセットFPSに使用されたカウンタの集合を保存できるフィンガープリントセットリストFPSLが生成される。フィンガープリントセットリストFPSLの生成時には、カウンタが割り当てられ、カウンタをキー情報としてフィンガープリントセットリストFPSLが保存される(表1のFLに該当する)。フィンガープリントセットリストFPSLのカウンタが一定値以上となった場合には、新しいフィンガープリントセットリストが生成される。   In order to facilitate the search for the fingerprint set FPS, a fingerprint set list FPSL that can store a set of counters used in the fingerprint set FPS is generated. When the fingerprint set list FPSL is generated, a counter is assigned, and the fingerprint set list FPSL is stored using the counter as key information (corresponding to FL in Table 1). If the counter of the fingerprint set list FPSL reaches a certain value or more, a new fingerprint set list is generated.

さらに、フィンガープリントセットリストFPSLで使用されているカウンタの集合を保持するために、フィンガープリントセットリストヘッドFPSLHが生成される。フィンガープリントセットリストヘッドFPSLHのキー情報は固定値として、システム全体で共有される。   In addition, a fingerprint set list head FPSLH is generated to hold a set of counters used in the fingerprint set list FPSL. The key information of the fingerprint set list head FPSLH is shared as a fixed value throughout the system.

図12に示すとおり、フィンガープリントセットリストFPSL及びフィンガープリントセットFPSの保存先のディスクセットIDは、例えばカウンタを引数としてハッシュ関数HRで求める。また、フィンガープリントセットリストヘッドFPSLHの保存先のディスクセットIDは、システム全体で共有される固定値である。   As shown in FIG. 12, the fingerprint set list FPSL and the disk set ID of the fingerprint set FPS storage destination are obtained by a hash function HR, for example, using a counter as an argument. The storage set disk set ID of the fingerprint set list head FPSLH is a fixed value shared by the entire system.

フィンガープリントセットFPSを探索するには、まずフィンガープリントセットリストヘッドFPSLHを読み出し、フィンガープリントセットリストFPSLのカウンタのリストを得る。このカウンタから、フィンガープリントセットリストFPSLを読み出し、フィンガープリントセットFPSのカウンタのリストを得る。そしてこのカウンタから、フィンガープリントセットFPSを順に得ることができる。   In order to search for the fingerprint set FPS, the fingerprint set list head FPSLH is first read to obtain a counter list of the fingerprint set list FPSL. From this counter, the fingerprint set list FPSL is read to obtain a list of fingerprint set FPS counters. From this counter, the fingerprint set FPS can be obtained in order.

また、各フィンガープリントセットFPSにはカウンタが与えられているため、本実施形態では、複数のフィンガープリントセットFPSの間での生成順序をカウンタの値から判定することが可能である。   Since each fingerprint set FPS is provided with a counter, in the present embodiment, the generation order among a plurality of fingerprint sets FPS can be determined from the value of the counter.

以下、自由位置での重複排除処理の処理内容について述べる。   The processing contents of the deduplication processing at the free position will be described below.

自由位置での重複排除処理において、重複排除処理部301は、次の第1乃至第6の処理を実行する。   In the deduplication process at the free position, the deduplication processing unit 301 executes the following first to sixth processes.

第1の処理は、保存される第1のデータにおける第1の部分について、第1の部分的ハッシュ値を予め計算する処理である。また、第1のデータにおける第1の部分から始まる重複検出範囲に対応する第1のハッシュ値を予め計算する処理である。   The first process is a process for calculating in advance a first partial hash value for the first part of the first data to be stored. In addition, the first hash value corresponding to the duplication detection range starting from the first portion in the first data is calculated in advance.

第2の処理は、第1のデータの後に記憶される第2のデータの第2の部分について、第2の部分的ハッシュ値を計算する処理である。   The second process is a process of calculating a second partial hash value for the second part of the second data stored after the first data.

第3の処理は、第1の部分的ハッシュ値と第2の部分的ハッシュ値とが一致するか判断する処理である。   The third process is a process for determining whether the first partial hash value matches the second partial hash value.

第4の処理は、第3の処理で第1の部分的ハッシュ値と第2の部分的ハッシュ値とが一致する場合、第1のデータにおける第1の部分から始まる重複検出範囲に対応する第1のハッシュ値を読み出すとともに、第2のデータにおける第2の部分から始まる重複検出範囲に対応する第2のハッシュ値を計算する処理である。   In the fourth process, when the first partial hash value and the second partial hash value match in the third process, the fourth process corresponds to the duplication detection range that starts from the first part in the first data. This is a process of reading the hash value of 1 and calculating the second hash value corresponding to the duplication detection range starting from the second portion in the second data.

第5の処理は、第1のハッシュ値と第2のハッシュ値とが一致するか判断する処理である。   The fifth process is a process for determining whether or not the first hash value and the second hash value match.

第6の処理は、第5の処理において第1のハッシュ値と第2のハッシュ値とが一致する場合、第2のデータにおける第2の部分から始まる重複検出範囲が、第1のデータにおける第1の部分から始まる重検出範囲と重複するため、重複を排除した状態でデータの保存を行うための処理である。   In the sixth process, when the first hash value and the second hash value match in the fifth process, the duplication detection range starting from the second portion in the second data is the first in the first data. This is a process for storing data in a state where duplication is eliminated because it overlaps with the overlap detection range starting from part 1.

以下、図13乃至図19を用いて、より具体的に自由位置での重複排除処理を説明する。   Hereinafter, the deduplication processing at the free position will be described more specifically with reference to FIGS.

図13は、自由位置での重複排除処理を例示するフローチャートである。   FIG. 13 is a flowchart illustrating the deduplication processing at a free position.

ステップS1301において、フロントエンドサーバ2は、フラグメントサーバ3に対し、フィンガープリントセット212を送信する。送信のタイミングは任意でよく、例えばフィンガープリントセット212のサイズが一定量に達した場合に送信するとしてもよい。また、すべてのフラグメントサーバ3に対し、同じフィンガープリントセットを送信するとしてもよい。   In step S <b> 1301, the front end server 2 transmits the fingerprint set 212 to the fragment server 3. The transmission timing may be arbitrary. For example, the transmission may be performed when the size of the fingerprint set 212 reaches a certain amount. Further, the same fingerprint set may be transmitted to all the fragment servers 3.

ステップS1302において、フラグメントサーバ3は、フロントエンドサーバ2よりフィンガープリントセットを受信し、記憶部31に保存する。   In step S <b> 1302, the fragment server 3 receives the fingerprint set from the front end server 2 and stores it in the storage unit 31.

ステップS1303において、フラグメントサーバ3の重複排除処理部301は、記憶部31に保存したフィンガープリントセット311の内容を読み込み、一時的に保存する。   In step S1303, the deduplication processing unit 301 of the fragment server 3 reads the content of the fingerprint set 311 stored in the storage unit 31 and temporarily stores it.

重複排除処理部301は、フラグメント記憶部312に保存されたフラグメントの先頭からフラグメントの1/2の長さで1バイトずつずらしながら、1/2フィンガープリントを計算する。1/2フィンガープリントの計算には、図6で示したローリングハッシュを適用してもよい。なお、フロントエンドサーバ2が複数存在する場合は、フラグメント記憶部312に保存されたフラグメントは、どのフロントエンドサーバ2から受信したものであってもよい。   The de-duplication processing unit 301 calculates a ½ fingerprint while shifting one byte at a time from the beginning of the fragment stored in the fragment storage unit 312 by ½ of the fragment. The rolling hash shown in FIG. 6 may be applied to the 1/2 fingerprint calculation. When there are a plurality of front-end servers 2, the fragments stored in the fragment storage unit 312 may be received from any front-end server 2.

ステップS1304において、重複排除処理部301は、ステップS1303において計算されたフィンガープリントと、読み込んだフィンガープリントセットに保存されているフラグメントの前半又は後半部分の1/2フィンガープリントとを比較する。すなわち重複排除処理部301は、第1の重複探索を行う。読み込むフィンガープリントセットは複数でもよい。   In step S1304, the deduplication processing unit 301 compares the fingerprint calculated in step S1303 with the ½ fingerprint of the first half or the latter half of the fragment stored in the read fingerprint set. That is, the duplicate elimination processing unit 301 performs a first duplicate search. Multiple fingerprint sets may be read.

1/2フィンガープリントが一致しない場合、処理はステップS1304に戻り、1/2フィンガープリントが一致するまで、順次1バイトずつずらしながら1/2フィンガープリントの計算と比較とが行われる。   If the ½ fingerprint does not match, the process returns to step S1304, and the ½ fingerprint is calculated and compared while sequentially shifting by 1 byte until the ½ fingerprint matches.

1/2フィンガープリントが一致する場合、ステップS1305において、重複排除処理部301は、1/2フィンガープリントの一致位置から1ストライド分のフラグメントのうち、先頭のフラグメントと最後のフラグメントを自機の又は他のフラグメントサーバから読み出し、一致した位置から1ストライド分のフィンガープリントを計算する。フラグメントの読み出し処理の詳細については、図14で後述する。   If the ½ fingerprints match, in step S1305, the de-duplication processing unit 301 sets the first fragment and the last fragment among the fragments for one stride from the matching position of the ½ fingerprint. Read from other fragment servers and calculate the fingerprint for one stride from the matching position. Details of the fragment reading process will be described later with reference to FIG.

1ストライド分のフィンガープリントの計算には、例えば図6で示したローリングハッシュを適用してもよい。ローリングハッシュでは、あるフラグメントの先頭よりnバイトずれた位置から1ストライド分のフィンガープリントを計算する場合、そのフラグメントを先頭とした1ストライド分のローリングハッシュ計算の内部状態と、計算対象となるストライドの先頭と最後を含む2つのフラグメントの内容が分かればよく、その間のフラグメントは計算には不要である。具体的には、重複排除処理部301は、フラグメント・メタデータとして保存されているロールサム状態を初期値とし、図6に示したように1バイトずらしてフィンガープリントを計算する。これをn回繰り返すことにより、フラグメントの先頭からnバイト離れた1ストライド分のフィンガープリントを計算できる。1バイトずつずらす際に、除く1バイトと加える1バイトは、前述の先頭と最後を含む2つのフラグメントより知ることができる。   For example, the rolling hash shown in FIG. 6 may be applied to calculate the fingerprint for one stride. In a rolling hash, when calculating a fingerprint for one stride from a position shifted by n bytes from the beginning of a fragment, the internal state of the rolling hash calculation for one stride starting from that fragment and the stride to be calculated are calculated. It is only necessary to know the contents of two fragments including the beginning and the end, and the fragment between them is not necessary for the calculation. Specifically, the deduplication processing unit 301 sets the roll sum state stored as fragment metadata as an initial value, and calculates a fingerprint with a shift of 1 byte as shown in FIG. By repeating this n times, the fingerprint for one stride that is n bytes away from the beginning of the fragment can be calculated. When shifting one byte at a time, one byte to be added and one byte to be added can be known from the two fragments including the head and the end.

ステップS1306において、重複排除処理部301は、ステップS1305において計算された1ストライドのフィンガープリントと、読み込んだフィンガープリントセットに保存されている1ストライドのフィンガープリントとを比較する。すなわち重複排除処理部301は、第2の重複探索を行う。   In step S1306, the deduplication processing unit 301 compares the fingerprint of one stride calculated in step S1305 with the fingerprint of one stride stored in the read fingerprint set. That is, the duplicate elimination processing unit 301 performs a second duplicate search.

ストライド単位でのフィンガープリントが一致した場合、一致した場所をピボットと呼ぶ。ピボットは、前述のとおり、内部ストライドID、オフセット、ピボット長を含む値で表される。オフセットはその一致位置がそのストライドの何バイト目かを表している。ピボット長は、ピボットが連続している場合の長さを示している。内部ストライドIDは、ピボットでオブジェクトを再分割した際に、何番目のストライドに属するかを示す番号である。内部ストライドについての詳細は、後述する。   When the fingerprints in the stride unit match, the matching location is called a pivot. As described above, the pivot is represented by a value including the internal stride ID, the offset, and the pivot length. The offset indicates how many bytes of the stride the matching position is. The pivot length indicates the length when the pivot is continuous. The internal stride ID is a number indicating to which stride it belongs when the object is subdivided by the pivot. Details of the internal stride will be described later.

ステップS1307において、重複排除処理部301は、得られたピボットを重複位置情報313へ保存する。   In step S 1307, the duplicate elimination processing unit 301 stores the obtained pivot in the duplicate position information 313.

ストライド単位でのフィンガープリントが一致しない場合、処理はステップS1304に戻る。   If the fingerprints in units of strides do not match, the process returns to step S1304.

ステップS1308において、フラグメントサーバ3は、重複位置情報313に保存されたピボットが一定量になっているものについて、フロントエンドサーバ2へと送信する。送信のタイミングは、例えばピボットを重複位置情報313に保存するタイミングであってもよい。   In step S <b> 1308, the fragment server 3 transmits to the front-end server 2 information about the pivot stored in the overlapping position information 313 having a certain amount. The transmission timing may be a timing for storing the pivot in the overlap position information 313, for example.

ステップS1309において、フロントエンドサーバ2は、ピボットのリストを受信すると、ピボット位置が開始ストライドの先頭となるようにストライドを再配置する。再配置処理の詳細は、図18及び図19で後述する。   In step S1309, when the front-end server 2 receives the list of pivots, the front-end server 2 rearranges the strides so that the pivot position is at the head of the start stride. Details of the rearrangement process will be described later with reference to FIGS.

図14は、フラグメントの第1の読み出し処理を例示する図である。   FIG. 14 is a diagram illustrating a first fragment reading process.

図15は、フラグメントの第2の読み出し処理を例示する図である。   FIG. 15 is a diagram illustrating a second fragment reading process.

前述のように、重複排除処理部301で計算した1/2フィンガープリントと、フィンガープリントセットに保存されている1/2フィンガープリントが一致した場合、重複排除処理部301は、一致位置から1ストライド分のフラグメントのうち先頭と最後のフラグメントを読み出し、読み出された先頭と最後のフラグメントに基づいて一致位置から1ストライド分のフィンガープリントを計算する。そして、重複排除処理部301は、計算結果とフィンガープリントセットに保存されている1ストライドのフィンガープリントとを比較する。   As described above, when the ½ fingerprint calculated by the deduplication processing unit 301 matches the ½ fingerprint stored in the fingerprint set, the deduplication processing unit 301 determines that one stride from the matching position. Among the minute fragments, the first and last fragments are read out, and the fingerprint for one stride is calculated from the coincidence position based on the read first and last fragments. Then, the de-duplication processing unit 301 compares the calculation result with the fingerprint of one stride stored in the fingerprint set.

ここで、フィンガープリントセットに保存されている1/2フィンガープリントのうち、フラグメントの前半部分の1/2フィンガープリントと一致したか、フラグメントの後半部分の1/2フィンガープリントと一致したかによって、1ストライド分のフィンガープリントを計算する際に読み出すフラグメントが異なる場合がある。   Here, out of the ½ fingerprints stored in the fingerprint set, whether it matches the ½ fingerprint of the first half of the fragment or the ½ fingerprint of the second half of the fragment, The fragment read when calculating the fingerprint for one stride may be different.

図14は、前半部分の1/2フィンガープリントと一致した場合の読み出し処理を例示する。図14の上段はフラグメントサーバ3に保存されているフラグメントを表し、図14の下段はフィンガープリントセットに保存されているフィンガープリント(図11に対応)を表す。   FIG. 14 exemplifies the reading process in the case where the first fingerprint matches the ½ fingerprint. The upper part of FIG. 14 represents the fragments stored in the fragment server 3, and the lower part of FIG. 14 represents the fingerprints (corresponding to FIG. 11) stored in the fingerprint set.

図14では、重複排除処理部301によって探索中の1/2フラグメント1401のフィンガープリントとFP_a1(フラグメントA1の前半部分の1/2フィンガープリント)が一致する。従って、重複排除処理部301は、次にFP_A(ストライドAのフィンガープリント)との一致を調べるため、フラグメントA1の先頭に相当する位置から1ストライド分のフィンガープリントを計算する。この際、フラグメントA1の先頭に相当する位置から1ストライド長のストライドの先頭を含むフラグメント(又は部分)と最後を含むフラグメント(又は部分)があればよい。ストライドの先頭を含むフラグメントについては、すでに重複排除処理部301の計算対象となっている1/2フラグメント1401の先頭と同じであるため、フラグメントの読み込みは不要である。従って、重複排除処理部301は、ストライドの最後を含むフラグメント1402を他のフラグメントサーバより読み出す。   In FIG. 14, the fingerprint of the ½ fragment 1401 that is being searched by the deduplication processing unit 301 matches FP_a1 (the ½ fingerprint of the first half of the fragment A1). Therefore, the deduplication processing unit 301 calculates a fingerprint for one stride from the position corresponding to the head of the fragment A1 in order to check the next match with FP_A (stride A fingerprint). At this time, a fragment (or portion) including the head of a stride having a length of one stride from a position corresponding to the head of the fragment A1 and a fragment (or portion) including the end may be sufficient. Since the fragment including the head of the stride is the same as the head of the ½ fragment 1401 that has already been calculated by the deduplication processing unit 301, it is not necessary to read the fragment. Accordingly, the deduplication processing unit 301 reads the fragment 1402 including the end of the stride from another fragment server.

一方、図15では、重複排除処理部301によって探索中の1/2フラグメント1403のフィンガープリントとFP_a2(フラグメントA1の後半部分の1/2フィンガープリント)が一致する。従って、重複排除処理部301は、次にFP_A(ストライドAのフィンガープリント)との一致を調べるため、フラグメントA1の先頭に相当する位置から1ストライド分のフィンガープリントを計算する。この際、フラグメントA1の先頭に相当する位置から1ストライド長のストライドの先頭を含むフラグメント(又は部分)と最後を含むフラグメント(又は部分)があればよい。従って、重複排除処理部301は、ストライドの先頭を含むフラグメント1404及びストライドの最後を含むフラグメント1405を他のフラグメントサーバより読み出す。   On the other hand, in FIG. 15, the fingerprint of the ½ fragment 1403 being searched by the deduplication processing unit 301 matches FP_a2 (the ½ fingerprint of the second half of the fragment A1). Therefore, the deduplication processing unit 301 calculates a fingerprint for one stride from the position corresponding to the head of the fragment A1 in order to check the next match with FP_A (stride A fingerprint). At this time, a fragment (or portion) including the head of a stride having a length of one stride from a position corresponding to the head of the fragment A1 and a fragment (or portion) including the end may be sufficient. Accordingly, the de-duplication processing unit 301 reads the fragment 1404 including the head of the stride and the fragment 1405 including the end of the stride from other fragment servers.

図16は、自由位置での重複排除処理の第1の例を示す図である。   FIG. 16 is a diagram illustrating a first example of deduplication processing at a free position.

図17は、自由位置での重複排除処理の第2の例を示す図である。この図17は、図16における重複の検出をより理解しやすく表現している。   FIG. 17 is a diagram illustrating a second example of deduplication processing at a free position. FIG. 17 expresses the detection of duplication in FIG. 16 in an easy-to-understand manner.

図16及び図17に付した番号は、図13の各ステップに付した番号と対応する。   The numbers given in FIGS. 16 and 17 correspond to the numbers given to the respective steps in FIG.

図16及び図17の例では、フロントエンドサーバP1が、フラグメントサーバK1へ、フィンガープリントセット212を送信する。フラグメントサーバK1は、受信されたフィンガープリントセット212を、フィンガープリントセット311として記憶部31に保存する。   16 and 17, the front end server P1 transmits the fingerprint set 212 to the fragment server K1. The fragment server K1 stores the received fingerprint set 212 in the storage unit 31 as the fingerprint set 311.

フラグメントサーバK1では、フラグメントA3が探索の対象となっているとする。フラグメントサーバK1の重複排除処理部301は、フラグメントA3に対して先頭から1/2フラグメント長のローリングハッシュを順に計算し、保持しているフィンガープリントセット311の前半又は後半部分のフラグメントのフィンガープリントと比較する。   In the fragment server K1, it is assumed that the fragment A3 is a search target. The deduplication processing unit 301 of the fragment server K1 calculates a rolling hash of ½ fragment length from the head for the fragment A3 in order, and holds the fingerprints of the first half or the latter half of the fingerprint set 311 held. Compare.

フラグメントサーバK1の重複排除処理部301は、フラグメントA3の先頭からnバイト進んだところで同一の1/2フィンガープリントを発見した場合、1ストライド後のフラグメントであるフラグメントB3を他のフラグメントサーバK0から読み込む。   When the deduplication processing unit 301 of the fragment server K1 finds the same ½ fingerprint at a position advanced by n bytes from the beginning of the fragment A3, the fragment B3 which is a fragment after one stride is read from another fragment server K0. .

フラグメントサーバK1の重複排除処理部301は、フラグメントB3とフラグメントA3のフラグメント・メタデータに保存されているロールサム状態を使用してフラグメントA3の先頭からnバイト進んだ地点から始まる1ストライドのフィンガープリントを計算し、計算された1ストライドのフィンガープリントとフィンガープリントセット311のストライドフィンガープリントとを比較する。   The deduplication processing unit 301 of the fragment server K1 uses the roll sum state stored in the fragment metadata of the fragment B3 and the fragment A3, and prints one stride fingerprint starting from the point advanced n bytes from the beginning of the fragment A3. Calculate and compare the calculated stride fingerprint with the stride fingerprint of the fingerprint set 311.

ストライドフィンガープリント中に、計算された1ストライドのフィンガープリントと一致する部分がある場合、フラグメントサーバK1の重複排除処理部301は、このピボット位置を追加する。なお、ピボット位置は、具体的には、ストライドの先頭であるフラグメントA1からのバイト数であってもよい。   If there is a portion in the stride fingerprint that matches the calculated one stride fingerprint, the deduplication processing unit 301 of the fragment server K1 adds this pivot position. Specifically, the pivot position may be the number of bytes from the fragment A1 that is the head of the stride.

フラグメントサーバK1の重複排除処理部301は、ピボット位置を重複位置情報313へ保存する。その後フラグメントサーバK1は、再配置するオブジェクトを特定するカウンタ値及び重複位置情報313をフロントエンドサーバP1へ送信する。   The deduplication processing unit 301 of the fragment server K1 stores the pivot position in the duplication position information 313. Thereafter, the fragment server K1 transmits a counter value specifying the object to be rearranged and the overlapping position information 313 to the front-end server P1.

図18は、フロントエンドサーバ2によるオブジェクトの再配置の第1の例を示す図である。   FIG. 18 is a diagram illustrating a first example of object rearrangement by the front-end server 2.

フロントエンドサーバ2は、フラグメントサーバ3より再配置するオブジェクトを特定するカウンタ値及び重複位置情報313を受信すると、カウンタ値からディスク選択インデックスファイル213を参照し、ピボットを保存するフラグメントサーバ3を特定する。さらに、フロントエンドサーバ2は、ストライドの再配置のため対象のオブジェクトを読み出す。この際、フロントエンドサーバ2は、フラグメントごとにすでに重複排除済であるかどうかを示す参照カウント値も読み出す。参照カウント値は、初期状態すなわち重複排除が行われていない状態では1であり、重複排除のための参照が行われる毎に1ずつ増加するものとする。   When the front-end server 2 receives the counter value specifying the object to be rearranged and the overlapping position information 313 from the fragment server 3, the front-end server 2 refers to the disk selection index file 213 from the counter value and specifies the fragment server 3 that stores the pivot. . Further, the front-end server 2 reads the target object for rearrangement of the stride. At this time, the front-end server 2 also reads a reference count value indicating whether or not deduplication has already been performed for each fragment. The reference count value is 1 in the initial state, that is, the state where deduplication is not performed, and is incremented by 1 each time a reference for deduplication is performed.

フロントエンドサーバ2は、読み出したオブジェクトを各ピボットに合わせてストライドへと分割する。この時生成されるストライドは内部ストライドと呼ばれ、実際の保存単位のストライドは外部ストライドと呼ばれる。外部ストライドの長さは必ずストライド長、すなわちフラグメント長の整数倍に等しいが、内部ストライドはストライド長よりも短くてよい。また、内部ストライドに対して順に与えられる番号を、内部ストライドIDと呼ぶ。ただし、内部ストライドは、すでに重複排除されているフラグメント(参照カウント値が2以上)については移動させないように生成される。   The front-end server 2 divides the read object into strides according to each pivot. The stride generated at this time is called the internal stride, and the actual storage unit stride is called the external stride. The length of the outer stride is always equal to the stride length, ie, an integral multiple of the fragment length, but the inner stride may be shorter than the stride length. A number given in order to the internal stride is called an internal stride ID. However, the internal stride is generated so that fragments that have already been deduplicated (reference count value of 2 or more) are not moved.

図18の例では、フラグメントA3の途中にピボットがあると仮定する。まず、状態(1−1)では、すべてのフラグメントがまだ重複排除の対称となっていない、すなわち参照カウント値が1である。フラグメントA3のピボット位置から1ストライド分、すなわちフラグメントB3の途中までに重複部分が存在する可能性がある場合、状態(1−2)で示すように、ピボットの位置にストライドの境界が作られるように内部ストライドis1〜is4が生成される。   In the example of FIG. 18, it is assumed that there is a pivot in the middle of the fragment A3. First, in the state (1-1), all the fragments are not yet symmetrical with respect to deduplication, that is, the reference count value is 1. When there is a possibility that an overlap portion exists from the pivot position of the fragment A3 by one stride, that is, in the middle of the fragment B3, as shown in the state (1-2), a stride boundary is created at the pivot position. Internal strides is1 to is4 are generated.

また、複数の内部ストライドが、ストライド長よりある程度短い場合には、これらをまとめて一つの外部ストライドとすることができる。このようなストライドを集合ストライドと呼ぶ。状態(1−3)では、内部ストライドis1と内部ストライドis4とを含む集合ストライドが例示されている。状態(1−3)における集合ストライドでは、フラグメントC4がパディングされている。集合ストライドでは、内部ストライドを組み合わせた後の残りのサイズに、さらに他の内部ストライドを挿入できるか、評価される。なお、内部ストライドis1、内部ストライドis4、及び集合ストライドに内部ストライドis1及び内部ストライドis4をまとめたことにより必要となるヘッダ、のそれぞれの長さの和がストライド長よりも短かった場合には、外部ストライドos1に対してパディングが行われる。   When a plurality of internal strides are somewhat shorter than the stride length, they can be combined into one external stride. Such a stride is called a collective stride. In the state (1-3), a collective stride including the internal stride is1 and the internal stride is4 is illustrated. In the collective stride in the state (1-3), the fragment C4 is padded. In the collective stride, it is evaluated whether other internal strides can be inserted into the remaining size after the internal strides are combined. If the sum of the lengths of the internal stride is1, the internal stride is4, and the header required by combining the internal stride is1 and the internal stride is4 with the collective stride is shorter than the stride length, Padding is performed on the stride os1.

フロントエンドサーバ2は、外部ストライドos1〜os3に対して消失符号を計算し、外部ストライドos1〜os3をフラグメント長に分割して保存する。このため、オブジェクトを読み出す際には、外部ストライドos1〜os3が順に読み出される。   The front-end server 2 calculates erasure codes for the external strides os1 to os3, and stores the external strides os1 to os3 by dividing them into fragment lengths. For this reason, when reading the object, the external strides os1 to os3 are sequentially read.

ただし、オブジェクトを読み出す際には、外部ストライドos1〜os3に含まれている内部ストライドis1〜is4を、内部ストライドIDの順に並べる必要がある。そのため、集合ストライドを生成するために内部ストライドis1〜is4の位置関係を変更する場合には、内部ストライドis1〜is4の新たな位置が内部ストライドis1〜is4のもとの位置に近いほど、読み出し効率が良くなる。   However, when reading an object, it is necessary to arrange the internal strides is1 to is4 included in the external strides os1 to os3 in the order of the internal stride IDs. Therefore, when the positional relationship of the internal strides is1 to is4 is changed in order to generate the aggregate stride, the read efficiency increases as the new positions of the internal strides is1 to is4 are closer to the original positions of the internal strides is1 to is4. Will be better.

図19は、フロントエンドサーバ2によるオブジェクトの再配置の第2の例を示す図である。   FIG. 19 is a diagram illustrating a second example of object rearrangement by the front-end server 2.

図19の状態(2−1)では、フラグメントC1〜C4から構成されるストライドに対してすでに重複排除が適用されている。この場合、フラグメントC1〜C4の参照カウント値は2以上となる。パディングは、ピボットの位置にストライドの境界が位置するように行われる。状態(2−2)では、すでに重複が生じているフラグメントC1〜C4を移動することができないため、フラグメントB4の後にパディングデータが挿入されている。   In the state (2-1) of FIG. 19, deduplication has already been applied to the stride composed of the fragments C1 to C4. In this case, the reference count value of the fragments C1 to C4 is 2 or more. Padding is performed such that the stride boundary is located at the pivot position. In the state (2-2), since the overlapping fragments C1 to C4 cannot be moved, padding data is inserted after the fragment B4.

フロントエンドサーバ2は、この再配置されたストライドを保存する。この保存処理は最初にオブジェクトを保存する場合と同様であり、再帰的に各フラグメントサーバ3による重複排除処理が適用される。上記の手順により、自由位置の重複排除を実現することができる。   The front-end server 2 stores this rearranged stride. This saving process is similar to the case of saving the object first, and the deduplication process by each fragment server 3 is applied recursively. By the above procedure, it is possible to realize deduplication of free positions.

以上説明した本実施形態に係る情報処理システム1では、各フラグメントサーバ3が重複位置の探索を分担して行う。これにより、データの記憶量が増加しても、フロントエンドサーバ2の負荷が増加しない。そのため、上述の重複排除方式は、記憶容量の増加に対してもパフォーマンスを落とすことなく実行可能である。   In the information processing system 1 according to the present embodiment described above, each fragment server 3 shares and searches for overlapping positions. Thereby, even if the data storage amount increases, the load on the front-end server 2 does not increase. Therefore, the above-described deduplication method can be executed without reducing performance even when the storage capacity increases.

本実施形態に係る情報処理システム1は、低価格・大容量・高信頼なストレージの実現を目標としており、以下のような特徴を持つ。   The information processing system 1 according to the present embodiment aims to realize a low price, large capacity, and highly reliable storage, and has the following features.

本実施形態に係る情報処理システム1においては、記憶容量の増減はフラグメントサーバの追加又は削除により実現され、フロントエンドサーバ2の台数及び構成などへの依存は存在しない。そのため、ストレージ管理者は記憶容量の増減についてはフラグメントサーバ3の台数のみを管理すればよく、管理が容易である。   In the information processing system 1 according to the present embodiment, the increase / decrease of the storage capacity is realized by adding or deleting fragment servers, and there is no dependency on the number and configuration of the front-end servers 2. Therefore, the storage administrator only needs to manage the number of fragment servers 3 for the increase and decrease of the storage capacity, and the management is easy.

本実施形態に係る情報処理システム1においては、システム全体の処理能力はフロントエンドサーバ2の台数に比例して向上する。そのため、例えばストレージ利用者の増加などで性能が不足した場合には、フロントエンドサーバ2を増設するだけでシステム全体の処理能力を向上させることができる。フロントエンドサーバ2はデータの最終的な保存場所ではなく、またフロントエンドサーバ2の台数及び構成は、フラグメントサーバ3の台数及び構成に影響しない。そのため、ストレージ管理者は性能についてはフロントエンドサーバ2の台数のみを管理すればよく、管理が容易である。   In the information processing system 1 according to the present embodiment, the processing capacity of the entire system is improved in proportion to the number of front-end servers 2. Therefore, for example, when the performance is insufficient due to an increase in the number of storage users, the processing capacity of the entire system can be improved by simply adding the front-end server 2. The front-end server 2 is not the final storage location of data, and the number and configuration of the front-end servers 2 do not affect the number and configuration of the fragment servers 3. Therefore, the storage administrator only needs to manage the number of front-end servers 2 for performance, and management is easy.

本実施形態に係る情報処理システム1においては、固定位置による重複排除及び自由位置による重複排除を行う際、ストライド単位で重複排除を行う。すなわち、重複排除処理後であっても、重複排除処理前と同じく、1つのストライドから生成されたフラグメントは異なるディスクに保存される。その結果、重複排除処理後も消失符号の信頼性が維持されるため、耐障害性が確保される。   In the information processing system 1 according to the present embodiment, deduplication is performed in units of strides when deduplication is performed at fixed positions and deduplication is performed at free positions. That is, even after deduplication processing, the fragments generated from one stride are stored on different disks as before deduplication processing. As a result, the reliability of the erasure code is maintained even after the de-duplication processing, so that fault tolerance is ensured.

本実施形態に係る情報処理システム1においては、フロントエンドサーバ2とフラグメントサーバ3は通常のIPネットワークで接続される。そのため、例えば繁忙期だけはフロントエンドサーバ2を社内クラウド上の仮想マシンなどで一時的に補うといった運用も容易となる。また、フラグメントサーバ3の追加又は削除を行う際には、ディスク選択インデックスファイル213をメンテナンスするだけでよいため、ユーザ所望の容量を得ることも容易である。すなわち、必要に応じてシステム構成の拡張又は縮小を行うことができるため、システム導入時に将来の処理量増加を考慮してあらかじめ大規模なシステムを導入する必要がなくなり、情報処理システムの導入コストを削減することができる。   In the information processing system 1 according to the present embodiment, the front end server 2 and the fragment server 3 are connected by a normal IP network. For this reason, for example, during the busy season, the operation of temporarily supplementing the front-end server 2 with a virtual machine on the in-house cloud is also facilitated. Further, when adding or deleting the fragment server 3, it is only necessary to maintain the disk selection index file 213, so that it is easy to obtain the capacity desired by the user. In other words, since the system configuration can be expanded or reduced as necessary, it is no longer necessary to introduce a large-scale system in advance in consideration of future increases in processing volume when introducing the system. Can be reduced.

本実施形態に係る情報処理システム1において、例えば構成要素をフロントエンドサーバ2とフラグメントサーバ3との2種類とすることにより、容易に故障原因を分析することができる。   In the information processing system 1 according to the present embodiment, the cause of the failure can be easily analyzed by using, for example, two types of components, that is, the front-end server 2 and the fragment server 3.

また、ユーザによって保存されるデータは最終的にフラグメントサーバ3にのみ保存される。すなわち、データを保持する構成要素が1種類に限られるため、障害時の復旧及び分析を容易化することができる。   Further, data stored by the user is finally stored only in the fragment server 3. That is, since the number of components that hold data is limited to one, recovery and analysis at the time of failure can be facilitated.

本実施形態に係る情報処理システム1においては、信頼性の確保のため消失符号を利用する。従って、大規模ストレージに対して用いられるデータを複製することにより信頼性を確保する手法(例えば、RAID(Redundant Arrays of Inexpensive Disks)1など)よりも、データの記憶効率を向上させることができる。   In the information processing system 1 according to the present embodiment, an erasure code is used to ensure reliability. Therefore, the data storage efficiency can be improved as compared with a technique (for example, RAID (Redundant Arrays of Inexpensive Disks) 1) that ensures reliability by duplicating data used for a large-scale storage.

本実施形態においては、例えばハッシュ値の比較によりデータの一致又は不一致を判断している。しかしながら、効率的に処理可能であれば、他の手法によりデータの一致又は不一致を判断してもよい。例えば、ハッシュ値に代えて、データの一致又は不一致を判断するための他の情報を用いてもよい。   In the present embodiment, data match or mismatch is determined by comparing hash values, for example. However, data matching or mismatching may be determined by other methods as long as efficient processing is possible. For example, instead of the hash value, other information for determining whether data matches or does not match may be used.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.

1…情報処理システム、2…フロントエンドサーバ、3…フラグメントサーバ、20,30…コントローラ、21,31…記憶部、22,32…送受信部、23,33…プロセッサ、24,34…メモリ、25,35…制御部、201…オブジェクト分割部、202…消失符号計算部、203…フィンガープリント計算部、211…オブジェクト記憶部、212,311…フィンガープリントセット、213…ディスク選択インデックスファイル、301…重複排除処理部、312…フラグメント記憶部、313…重複位置情報。   DESCRIPTION OF SYMBOLS 1 ... Information processing system, 2 ... Front end server, 3 ... Fragment server, 20, 30 ... Controller, 21, 31 ... Storage part, 22, 32 ... Transmission / reception part, 23, 33 ... Processor, 24, 34 ... Memory, 25 , 35 ... control unit, 201 ... object division unit, 202 ... erasure code calculation unit, 203 ... fingerprint calculation unit, 211 ... object storage unit, 212, 311 ... fingerprint set, 213 ... disk selection index file, 301 ... duplication Exclusion processing unit, 312... Fragment storage unit, 313.

Claims (9)

第1の情報処理装置と複数の第2の情報処理装置とを具備し、
前記第1の情報処理装置は、
データに基づいて保存単位サイズの複数の保存データを生成する生成部と、
前記データに含まれており前記保存単位サイズよりも大きい重複検出サイズの第1の断片データに対応する第1のハッシュ値を計算するとともに、前記第1の断片データに含まれている第1の保存データの少なくとも一部に対応する第2のハッシュ値を計算する計算部と、
前記第1の保存データと前記第1のハッシュ値と前記第2のハッシュ値とを、前記複数の第2の情報処理装置のうちの保存先装置へ送信する送信部と、
を具備し、
前記保存先装置は、
前記第1の保存データと前記第1のハッシュ値と前記第2のハッシュ値とを受信するとともに、外部の情報処理装置によって保存対象データに基づいて生成された前記保存単位サイズの第2の保存データを受信する受信部と、
前記第1の保存データの少なくとも一部に対応する前記第2のハッシュ値が、前記受信部によって受信された前記第2の保存データの少なくとも一部に対応する第3のハッシュ値と一致するか否か判断し、前記第2のハッシュ値が前記第3のハッシュ値と一致する場合に、前記第1の断片データに対応する前記第1のハッシュ値が、前記複数の第2の情報処理装置に保存されており前記第2の保存データを含み前記重複検出サイズの第2の断片データに対応する第4のハッシュ値と一致するか判断し、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記第2の断片データに対する重複を検出する処理部と、
を具備する、情報処理システム。
Comprising a first information processing device and a plurality of second information processing devices;
The first information processing apparatus includes:
A generator that generates a plurality of storage data of a storage unit size based on the data;
A first hash value corresponding to first fragment data included in the data and having a duplicate detection size larger than the storage unit size is calculated, and a first hash value included in the first fragment data is calculated. A calculation unit for calculating a second hash value corresponding to at least a part of the stored data;
A transmission unit that transmits the first storage data, the first hash value, and the second hash value to a storage destination device among the plurality of second information processing devices;
Comprising
The storage destination device is:
Receiving the first storage data, the first hash value, and the second hash value, and the second storage of the storage unit size generated by the external information processing apparatus based on the storage target data A receiver for receiving data;
Whether the second hash value corresponding to at least a part of the first stored data matches a third hash value corresponding to at least a part of the second stored data received by the receiving unit If the second hash value matches the third hash value, the first hash value corresponding to the first fragment data is the second information processing device. And whether the first hash value matches the fourth hash value corresponding to the second fragment data having the second stored data and corresponding to the second fragment data of the duplicate detection size. A processor that detects duplication of the second fragment data when the value matches,
An information processing system comprising:
前記処理部は、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記保存対象データにおける一致位置を示す重複位置情報を、前記外部の情報処理装置へ送信し、
前記外部の情報処理装置は、前記重複位置情報に基づいて、重複部分が同一の断片データに含まれるように、前記保存対象データに対する複数の新たな断片データを生成し、前記複数の新たな断片データに基づいて複数の新たな保存データを生成し、前記複数の新たな保存データを、前記複数の第2の情報処理装置へ送信し、
前記受信部は、前記新たな保存データを受信し、
前記処理部は、前記新たな保存データと前記第1の保存データとが一致する場合に、前記新たな保存データの重複排除を行う、
請求項1に記載の情報処理システム。
When the first hash value matches the fourth hash value, the processing unit transmits overlapping position information indicating a matching position in the storage target data to the external information processing apparatus,
The external information processing device generates a plurality of new fragment data for the storage target data based on the overlap position information so that an overlap portion is included in the same fragment data, and the plurality of new fragments Generating a plurality of new storage data based on the data, transmitting the plurality of new storage data to the plurality of second information processing devices;
The receiving unit receives the new saved data,
The processing unit performs deduplication of the new storage data when the new storage data matches the first storage data.
The information processing system according to claim 1.
前記第1の情報処理装置は、
参照ハッシュ値と前記参照ハッシュ値に対応して決定される保存先識別情報とを関係付けた選択情報を保存する記憶部と、
前記第1のハッシュ値と前記選択情報とに基づいて、前記複数の保存データのそれぞれの保存先となる第2の情報処理装置を決定する制御部と、
をさらに具備し、
前記送信部は、前記複数の保存データのそれぞれを、決定された前記第2の情報処理装置へ送信する、
請求項1に記載の情報処理システム。
The first information processing apparatus includes:
A storage unit for storing selection information in which a reference hash value and storage destination identification information determined corresponding to the reference hash value are associated;
A control unit that determines a second information processing apparatus that is a storage destination of each of the plurality of storage data based on the first hash value and the selection information;
Further comprising
The transmission unit transmits each of the plurality of stored data to the determined second information processing apparatus;
The information processing system according to claim 1.
前記処理部は、前記第2の保存データの少なくとも一部に対応する前記第3のハッシュ値を、前記第2の保存データ内で計算範囲をずらしながら、ローリングハッシュ関数に基づいて計算する、
請求項1に記載の情報処理システム。
The processing unit calculates the third hash value corresponding to at least a part of the second stored data based on a rolling hash function while shifting a calculation range in the second stored data.
The information processing system according to claim 1.
前記第2のハッシュ値は、前記第1の断片データに含まれている先頭の保存データの前半部分のハッシュ値及び後半部分のハッシュ値を含み、
前記処理部は、前記前半部分のハッシュ値又は前記後半部分のハッシュ値が、前記第3のハッシュ値と一致する場合に、前記第1のハッシュ値が前記第4のハッシュ値と一致するか判断し、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記第2の断片データに対する重複を検出する、
請求項1に記載の情報処理システム。
The second hash value includes a hash value of the first half and a hash value of the second half of the first stored data included in the first fragment data,
The processing unit determines whether the first hash value matches the fourth hash value when the hash value of the first half part or the hash value of the second half part matches the third hash value. And when the first hash value matches the fourth hash value, the duplication with respect to the second fragment data is detected.
The information processing system according to claim 1.
前記処理部は、前記第2のハッシュ値が前記第3のハッシュ値と一致する場合に、一致位置から始まる前記重複検出サイズ分の前記第2の断片データに対応する前記第4のハッシュ値を計算し、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記第2の断片データに対する重複を検出する、
請求項1に記載の情報処理システム。
When the second hash value matches the third hash value, the processing unit calculates the fourth hash value corresponding to the second fragment data corresponding to the duplicate detection size starting from the matching position. Calculating and detecting duplication for the second fragment data when the first hash value matches the fourth hash value;
The information processing system according to claim 1.
前記生成部は、前記保存対象データを分割した複数の分割データと前記複数の分割データに対応する誤り訂正データとを含む前記複数の保存データ、を生成する、
請求項1に記載の情報処理システム。
The generating unit generates the plurality of stored data including a plurality of divided data obtained by dividing the storage target data and error correction data corresponding to the plurality of divided data;
The information processing system according to claim 1.
データに基づいて生成された保存単位サイズの複数の保存データのうちの第1の保存データと、前記データに含まれており前記保存単位サイズよりも大きい重複検出サイズの第1の断片データに対応する第1のハッシュ値と、前記第1の断片データに含まれている第1の保存データの少なくとも一部に対応する第2のハッシュ値とを受信するとともに、外部の情報処理装置によって保存対象データに基づいて生成された前記保存単位サイズの第2の保存データを受信する受信部と、
前記第1の保存データの少なくとも一部に対応する前記第2のハッシュ値が、前記受信部によって受信された前記第2の保存データの少なくとも一部に対応する第3のハッシュ値と一致するか否か判断し、前記第2のハッシュ値が前記第3のハッシュ値と一致する場合に、前記第1の断片データに対応する前記第1のハッシュ値が、複数の情報処理装置に保存されており前記第2の保存データを含み前記重複検出サイズの第2の断片データに対応する第4のハッシュ値と一致するか判断し、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記第2の断片データに対する重複を検出する処理部と、
を具備する情報処理装置。
Corresponding to first storage data among a plurality of storage data having a storage unit size generated based on the data, and first fragment data having a duplicate detection size included in the data and larger than the storage unit size And a second hash value corresponding to at least a part of the first stored data included in the first fragment data and stored by an external information processing apparatus A receiving unit for receiving second storage data of the storage unit size generated based on data;
Whether the second hash value corresponding to at least a part of the first stored data matches a third hash value corresponding to at least a part of the second stored data received by the receiving unit If the second hash value matches the third hash value, the first hash value corresponding to the first fragment data is stored in a plurality of information processing devices. And determining whether the second hash value matches the fourth hash value corresponding to the second fragment data of the duplicate detection size, and the first hash value matches the fourth hash value. A processor for detecting duplication with respect to the second fragment data,
An information processing apparatus comprising:
コンピュータを、
データに基づいて生成された保存単位サイズの複数の保存データのうちの第1の保存データと、前記データに含まれており前記保存単位サイズよりも大きい重複検出サイズの第1の断片データに対応する第1のハッシュ値と、前記第1の断片データに含まれている第1の保存データの少なくとも一部に対応する第2のハッシュ値とを受信するとともに、外部の情報処理装置によって保存対象データに基づいて生成された前記保存単位サイズの第2の保存データを受信する受信部と、
前記第1の保存データの少なくとも一部に対応する前記第2のハッシュ値が、前記受信部によって受信された前記第2の保存データの少なくとも一部に対応する第3のハッシュ値と一致するか否か判断し、前記第2のハッシュ値が前記第3のハッシュ値と一致する場合に、前記第1の断片データに対応する前記第1のハッシュ値が、複数の情報処理装置に保存されており前記第2の保存データを含み前記重複検出サイズの第2の断片データに対応する第4のハッシュ値と一致するか判断し、前記第1のハッシュ値が前記第4のハッシュ値と一致する場合に、前記第2の断片データに対する重複を検出する処理部と、
して機能させるためのプログラム。
Computer
Corresponding to first storage data among a plurality of storage data having a storage unit size generated based on the data, and first fragment data having a duplicate detection size included in the data and larger than the storage unit size And a second hash value corresponding to at least a part of the first stored data included in the first fragment data and stored by an external information processing apparatus A receiving unit for receiving second storage data of the storage unit size generated based on data;
Whether the second hash value corresponding to at least a part of the first stored data matches a third hash value corresponding to at least a part of the second stored data received by the receiving unit If the second hash value matches the third hash value, the first hash value corresponding to the first fragment data is stored in a plurality of information processing devices. And determining whether the second hash value matches the fourth hash value corresponding to the second fragment data of the duplicate detection size, and the first hash value matches the fourth hash value. A processor for detecting duplication with respect to the second fragment data,
Program to make it function.
JP2015225923A 2015-11-18 2015-11-18 Information processing system, information processing apparatus, and program Expired - Fee Related JP6113816B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015225923A JP6113816B1 (en) 2015-11-18 2015-11-18 Information processing system, information processing apparatus, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015225923A JP6113816B1 (en) 2015-11-18 2015-11-18 Information processing system, information processing apparatus, and program

Publications (2)

Publication Number Publication Date
JP6113816B1 true JP6113816B1 (en) 2017-04-12
JP2017097437A JP2017097437A (en) 2017-06-01

Family

ID=58666671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015225923A Expired - Fee Related JP6113816B1 (en) 2015-11-18 2015-11-18 Information processing system, information processing apparatus, and program

Country Status (1)

Country Link
JP (1) JP6113816B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874451A (en) * 2018-08-31 2020-03-10 奈瑞尔德有限公司 Vector processor storage

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018211744A1 (en) 2017-05-16 2018-11-22 株式会社ブリヂストン Molded foam body
EP4202716A4 (en) * 2020-08-24 2024-02-14 Fujifilm Corp Information processing device, information processing method, and information processing program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
JP5595701B2 (en) * 2009-09-16 2014-09-24 株式会社日立製作所 File management method and storage system
JP2013190891A (en) * 2012-03-13 2013-09-26 Hitachi Ltd Data transfer system
WO2014184857A1 (en) * 2013-05-13 2014-11-20 株式会社日立製作所 Duplication elimination system and method therefor
US20160291877A1 (en) * 2013-12-24 2016-10-06 Hitachi, Ltd. Storage system and deduplication control method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874451A (en) * 2018-08-31 2020-03-10 奈瑞尔德有限公司 Vector processor storage

Also Published As

Publication number Publication date
JP2017097437A (en) 2017-06-01

Similar Documents

Publication Publication Date Title
US11281531B2 (en) Serial storage node processing of data functions
US10303797B1 (en) Clustering files in deduplication systems
US9934237B1 (en) Metadata optimization for network replication using representative of metadata batch
US9110964B1 (en) Metadata optimization for network replication using differential encoding
US9798728B2 (en) System performing data deduplication using a dense tree data structure
US8712963B1 (en) Method and apparatus for content-aware resizing of data chunks for replication
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US8185498B2 (en) Data deduplication by separating data from meta data
US9298726B1 (en) Techniques for using a bloom filter in a duplication operation
US8386521B2 (en) System for backing up and restoring data
US8639669B1 (en) Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US10496494B1 (en) Multilayer manifest for data storage systems
US8836548B1 (en) Method and system for data compression at a storage system
US9904480B1 (en) Multiplexing streams without changing the number of streams of a deduplicating storage system
WO2013086969A1 (en) Method, device and system for finding duplicate data
US9063664B1 (en) Method and system for processing checksum of a data stream to optimize deduplication
WO2017020576A1 (en) Method and apparatus for file compaction in key-value storage system
US10838923B1 (en) Poor deduplication identification
US10437682B1 (en) Efficient resource utilization for cross-site deduplication
CN110998537B (en) Expired backup processing method and backup server
US10459648B1 (en) Change rate estimation
US10229127B1 (en) Method and system for locality based cache flushing for file system namespace in a deduplicating storage system
US9087086B1 (en) Method and system for handling object boundaries of a data stream to optimize deduplication
WO2015145661A1 (en) Storage system and method for eliminating duplicate data
CN108475508B (en) Simplification of audio data and data stored in block processing storage system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170315

R151 Written notification of patent or utility model registration

Ref document number: 6113816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees