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

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

Info

Publication number
WO2017022034A1
WO2017022034A1 PCT/JP2015/071865 JP2015071865W WO2017022034A1 WO 2017022034 A1 WO2017022034 A1 WO 2017022034A1 JP 2015071865 W JP2015071865 W JP 2015071865W WO 2017022034 A1 WO2017022034 A1 WO 2017022034A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
storage unit
transmission
identification information
transmission target
Prior art date
Application number
PCT/JP2015/071865
Other languages
English (en)
French (fr)
Inventor
真一 佐沢
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2017532267A priority Critical patent/JP6439874B2/ja
Priority to PCT/JP2015/071865 priority patent/WO2017022034A1/ja
Publication of WO2017022034A1 publication Critical patent/WO2017022034A1/ja
Priority to US15/849,039 priority patent/US20180113874A1/en

Links

Images

Classifications

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

Definitions

  • the present invention relates to an information processing apparatus, an information processing method, and an information processing program.
  • a method of reducing the amount of transfer data for example, there is a method of removing redundantly transmitted data.
  • the transmission side device and the reception side device store data having a transmission or reception result in a cache in advance.
  • the transmission side device transmits reference information of the transmission target data instead of the transmission target data.
  • the receiving side device reads the data corresponding to the reference information from the cache and transfers the data to the destination device. Since the size of the reference information of the transmission target data is smaller than the size of the transmission target data, the amount of transfer data can be reduced, and the use band between the transmission side apparatus and the reception side apparatus can be suppressed.
  • the process and method for removing redundantly transmitted data are referred to as a duplicate removal process and method.
  • FIG. 1 is a diagram illustrating an example of the Content Defined Chunking process.
  • Content Defined Chunking is one of the duplicate elimination methods.
  • transfer data is divided into variable length blocks called chunks at the time of the first transfer, and each chunk is stored in a cache. Further, a hash value is calculated for each chunk, and the hash value and the storage position of the chunk are associated with each other.
  • the transfer data is divided into chunks, the hash value of each chunk is calculated, and the cache is searched using the hash value. If there is a correspondence between the hash value of the transfer data and the storage position of the chunk, the hash value is transmitted instead of the chunk of the transfer data. If there is no correspondence between the hash value of the transfer data and the storage position of the chunk, the chunk is transmitted.
  • the average chunk size is 1 kilobyte.
  • the size of the hash value is, for example, 20 bytes. Therefore, the transfer data amount is reduced by transferring the hash value instead of the chunk.
  • FIG. 2 is a diagram illustrating an example of the object level caching process.
  • Object level caching is one of the duplicate elimination methods.
  • a transfer target file is determined from a known transfer protocol, and the file is stored in a cache.
  • a file is an example of an object.
  • the file stored in the cache is transferred to the access request source.
  • the proxy server when the proxy server receives an access request for the object A from the terminal, the proxy server acquires the object A from the web server holding the object A, transfers the object A to the terminal, Save to cache. When there is an access request for the object A from another terminal, the proxy server transmits the object A in the cache to the terminal.
  • the conventional deduplication method has the following problems.
  • Content Defined Chunking there is a problem that the transfer data reduction rate is limited.
  • the average chunk size is 1 kilobyte.
  • the hash value is 20 bytes, for example.
  • the transfer data reduction rate is about 20 bytes / 1 kilobyte, and about 1/50 is the limit.
  • Content Defined Chunking has a problem that the processing load of the chunk hash value is heavy and the load on the CPU (Central Processing Unit) is high.
  • Object Level Caching since it is stored in the cache for each object, that is, for each file, there is a problem that even if a part of the file is changed, the entire file is transferred again from the device having the original file. .
  • Object Level Caching cannot be duplicated, so for example, file transfer at a remote location cannot sufficiently reduce transfer data.
  • An object of one embodiment of the present invention is to provide an information processing apparatus, an information processing system, an information processing method, and an information processing program that can improve the reduction rate of the amount of transfer data in deduplication of transfer data.
  • One aspect of the present invention is an information processing apparatus including a first storage unit, a second storage unit, and a control unit.
  • the first storage unit stores, in association with each other, identification information of an object having a transmission record, and identification information of each of a plurality of data blocks divided by the appearance position of a bit string of a predetermined pattern of the object.
  • the second storage unit stores identification information of an object having a transmission record and a plurality of data blocks of the object in association with each other.
  • the control unit performs a first process of comparing data between the transmission target object and the object stored in the second storage unit that matches the identification information of the transmission target object.
  • control unit extracts the data block by dividing the data of the transmission target object by the appearance position of the bit string of the predetermined pattern, calculates the identification information of the data block, and stores the first storage by the identification information of the data block.
  • a second process of searching for a part is performed.
  • the control unit detects a mismatched portion of data between the transmission target object and the object stored in the second storage unit, and if there is a matching portion before the mismatched portion, at least the first The position information of the matching part in the object stored in the second storage unit is transmitted. Further, the control unit performs a second process on data after the start position of the mismatched portion in the transmission target object.
  • the control unit transmits the data block, and the identification information of the data block is in the first storage unit.
  • the first process is performed on the data after the data block in each of the transmission target object and the object stored in the second storage unit.
  • the transfer data amount reduction rate can be improved in the deduplication of transfer data.
  • FIG. 3 is a diagram illustrating an example of a method for registering transfer data in a cache according to the first embodiment.
  • an object that is transfer data is divided into chunks at the time of the first transfer, and the chunks are continuously stored in order in a continuous area allocated for each object ID in the cache. Is done.
  • a hash value is calculated for each chunk. The hash value of each chunk, the object ID, the start position of the chunk in the object in the cache, and the chunk length in the object are associated with each other and stored in the hash table.
  • a deduplication apparatus that transfers data from a terminal holds a cache of objects that have been transferred and the hash table. Upon receiving an object transmission request from the terminal, the deduplication device determines whether there is an update to the object to be transmitted. If there is no update, the deduplication device transmits the object to the destination device without transmitting the object. Send a response to your device on behalf of.
  • FIG. 4 is a diagram illustrating an example of processing when there is an update in an object to be transmitted according to the first embodiment.
  • the transmission source device 2 the transmission side deduplication device 1A, the reception side deduplication device 1B, and the destination device 3 are extracted.
  • the transmission-side deduplication device 1A and the reception-side deduplication device 1B are located geographically apart from each other, and are connected via a network such as the Internet, for example.
  • the destination device 3 is, for example, a file server.
  • the destination device 3 is also expressed as a file server 3.
  • the transmission source device 2 executes an explorer to remotely access a file on the file server 3 and perform file editing.
  • the transmission source device 2 is accessing, and the file before update is already stored in the respective caches of the transmission side deduplication device 1A and the reception side deduplication device 1B. . Further, the file is edited and updated by the transmission source device 2 and is partially different from those stored in the respective caches of the transmission side deduplication device 1A and the reception side deduplication device 1B. .
  • the data (transmission target data) that is the target of one write request and that is transmitted from the transmission source device 2 matches the data stored in the cache of the transmission side deduplication device 1A.
  • the transmission side deduplication device 1A makes a proxy response to the transmission source device 2.
  • the transmission-side deduplication device 1 ⁇ / b> A does not transmit the corresponding data to the file server 3.
  • the transmission target data from the transmission source device 2 that is the target of a single write request includes an updated portion (shaded portion in the figure) and is stored in the cache of the transmission side deduplication device 1A. Does not match the data.
  • the transmission-side deduplication device 1A transmits the actual data of the chunk to the file server 3 for the portion of the chunk including the updated portion of the transmission target data that is the target of one write request. .
  • the size of the update part in S4 differs before and after the update. Therefore, the data after the update part in S4 is the same even when the contents of the transmission target data from the transmission source device 2 and the data stored in the cache of the transmission side deduplication device 1A match.
  • the start position in the partial file is different.
  • the deduplication device 1A on the transmission side does not transmit the data itself for the data after the update part, and the data of the transmission target data from the transmission source device 2 and the data in the cache match.
  • the cache start position in the file before update and the start position in the file after update are transmitted. After S4, the cache start position is also transmitted for the data targeted for the write request.
  • the receiving-side deduplication apparatus 1B receives the actual data of the update portion chunk, the cache start position in the file before the update of the matching portion after the update portion, and the start position in the updated file.
  • the receiving-side deduplication device 1B writes the received chunk and the data read from the received cache start position in the cache to the updated file start position, and transfers them to the file server 3.
  • the file server 3 updates the target file with the chunk including the update portion received from the receiving-side deduplication device 1B and the data read from the cache of the receiving-side deduplication device 1B.
  • the cache start position is transmitted.
  • the reception side deduplication apparatus 1B is notified of the position where the data of the matching portion is read from the cache.
  • the receiving-side deduplication apparatus 1B can read the data of the matching part after the update part from the appropriate position in the cache. it can.
  • the data of the matching part after the update part can be appropriately moved on the file server 3, and the consistency of the file can be maintained between the transmission source device 2 and the file server 3.
  • FIG. 5 is a diagram illustrating an example of the deduplication system 100 according to the first embodiment.
  • the deduplication system 100 includes a transmission-side deduplication device 1A, a reception-side deduplication device 1B, a transmission source device 2, and a destination device 3.
  • the transmission-side deduplication device 1A and the reception-side deduplication device 1B are, for example, devices located at the boundary of a network and are connected to each other via the Internet or the like.
  • the transmission source device 2 is a device under the transmission side deduplication device 1A, and all the data transmitted and received by the transmission source device 2 passes through the transmission side deduplication device 1A.
  • the destination device 3 is a device under the receiving side deduplication device 1B, and all the data transmitted and received by the destination device 3 passes through the receiving side deduplication device 1B.
  • FIG. 6 is a diagram illustrating an example of a hardware configuration of the deduplication apparatus 1.
  • the transmission-side deduplication device 1A and the reception-side deduplication device 1B are the same type of devices, and are collectively referred to as the deduplication device 1 if they are not distinguished.
  • the deduplication device 1 is, for example, a dedicated or general-purpose computer.
  • the deduplication device 1 includes a CPU (Central Processing Unit) 11, a main storage device 12, an input device 13, an output device 14, an auxiliary storage device 15, and a network interface 17. These are connected to each other by a bus 19.
  • CPU Central Processing Unit
  • the input device 13 is, for example, a keyboard or a keypad. Data input from the input device 13 is output to the CPU 11.
  • the auxiliary storage device 15 stores various programs and data used by the CPU 11 when executing each program.
  • the auxiliary storage device 15 is, for example, a non-volatile memory such as an EPROM (Erasable Programmable ROM), a flash memory, or a hard disk drive (Hard Disk Drive).
  • the auxiliary storage device 15 holds, for example, an operating system (OS), a deduplication program, and various other application programs.
  • the deduplication program is a program for deduplication processing of transfer data.
  • the main storage device 12 provides the CPU 11 with a storage area and a work area for loading a program stored in the auxiliary storage device 15, and is used as a buffer and a temporary memory.
  • the main storage device 12 includes, for example, a semiconductor memory such as a ROM (Read Only Memory) and a RAM (Random Access Memory).
  • the CPU 11 executes various processes by loading the OS and various application programs held in the auxiliary storage device 15 to the main storage device 12 and executing them.
  • the CPU 11 is not limited to one, and a plurality of CPUs may be provided.
  • the CPU 11 is an example of a “control unit”.
  • the network interface 17 is an interface for inputting / outputting information to / from the network.
  • the network interface 17 includes an interface connected to a wired network and an interface connected to a wireless network.
  • the network interface 17 is, for example, a NIC (Network Interface Card), a wireless LAN (Local Area Network) card, or the like. Data received by the network interface 17 is output to the CPU 11.
  • the output device 14 outputs the processing result of the CPU 11.
  • the output device 14 includes an audio output device such as a display, a printer, and a speaker.
  • the deduplication device 1 may include a portable recording medium driving device and execute a program recorded on the portable recording medium.
  • the portable recording medium is, for example, an SD card, a miniSD card, a microSD card, a USB (Universal Serial Bus) flash memory, a CD (Compact Compact Disc), a DVD (Digital Versatile Disc), a Blu-ray (registered trademark) Disc, or a flash.
  • a recording medium such as a memory card.
  • the deduplication device 1 may not include the input device 13 and the output device 14.
  • FIG. 7 is a diagram illustrating an example of a functional configuration of the deduplication system 100.
  • the transmission-side deduplication apparatus 1A includes, as functional configurations, a connection reception unit 111, a transmission data reception unit 112, a transmission data reduction unit 113, a reduction data transmission unit 114, a response transfer reception unit 115, an application response transmission unit 116, and a disconnection reception unit. 117, a cache 118, and a hash table 119.
  • These functional configurations are functional configurations achieved by the CPU 11 executing the deduplication program stored in the auxiliary storage device 15.
  • a client application and a server application are shown instead of the transmission source device 2 and the destination device 3, respectively.
  • the transmission source device 2 may be referred to as a client application 2.
  • the destination device 3 may be referred to as a server application 3.
  • the connection reception unit 111 receives a connection request from the client application 2 and transfers the connection request to the server application 3.
  • the transmission data receiving unit 112 receives transmission target data from the client application 2.
  • the transmission data receiving unit 112 includes, for example, a data buffer, and outputs the transmission target data accumulated in the data buffer to the transmission data deleting unit 113.
  • the data buffer is provided in a part of the work area of the main storage device 12.
  • the size of the data buffer is, for example, 80 kilobytes. However, the size of the data buffer is not limited to this.
  • the transmission data reduction unit 113 determines whether or not the transmission target data input from the transmission data reception unit 113 overlaps with past transfer data, and creates alternative information for the overlapping data.
  • the transmission data reduction unit 113 outputs, to the reduction data transmission unit 114, transmission target data that is after the reduction of duplicate data and includes alternative information. Details of the alternative information of the overlapping data and details of the processing of the transmission data reduction unit 113 will be described later.
  • the transmission data reduction unit 113 is an example of a “control unit”.
  • the reduction data transmission unit 114 transmits the transmission target data after the reduction of the duplicate data input from the transmission data reduction unit 113 to the destination device 3.
  • the response transfer receiving unit 115 receives a response from the destination device 3 with respect to the data transmitted from the reduced data transmitting unit 114.
  • the response transfer receiving unit 115 outputs the received response to the application response transmitting unit 116.
  • the application response transmission unit 116 transfers the response input from the response transfer reception unit 115 to the client application 2.
  • the disconnect reception unit 117 receives the disconnect request from the client application 2 and transfers the disconnect request to the server application 3. Note that the data transferred from the transmitting-side deduplication device 1A to the server application 3 is actually transferred to the receiving-side deduplication device 1B.
  • transfer from the deduplication device 1A on the transmission side to the server application 3 is also referred to as transmission to the deduplication device 1B on the reception side, but in both cases, the transfer data passes through the deduplication device 1B on the reception side. This is the same in that it is delivered to the server application 3.
  • the cache 118 is created in the storage area of the auxiliary storage device 13, for example.
  • the auxiliary storage device 13 used for the cache 118 may be built in the transmission side deduplication device 1A or may be externally attached.
  • a continuous area is secured for each object ID, and chunks of the object are sequentially stored in the continuous area of each object.
  • the size of the continuous area reserved for each object in the cache 118 may be a predetermined size or may be set according to the size of the object.
  • the cache 118 is an example of a “second storage unit”.
  • the hash table 119 is created in the storage area of the main storage device 12, for example.
  • the hash table 119 holds information on chunks stored in the cache. Details of the hash table 119 will be described later.
  • the hash table 119 is an example of a “first storage unit”.
  • the receiving-side deduplication apparatus 1B includes a server connection unit 121, a reduction data reception unit 122, a reduction data restoration unit 123, a restoration data transmission unit 124, an application response reception unit 125, an application response transfer unit 126, and a server disconnection unit as functional configurations. 127 and a cache 128. These functional configurations are functional configurations achieved by the CPU 11 executing the deduplication program stored in the auxiliary storage device 15.
  • the server connection unit 121 receives the connection request from the transmission source device 2 and transfers it to the server application 3.
  • the reduced data receiving unit 122 receives the transfer data transferred by the transmission-side deduplication device 1A.
  • the received data may contain alternative information for duplicate data.
  • the reduced data receiving unit 122 outputs the received data to the reduced data restoring unit 123.
  • the reduced data restoration unit 123 reads the data that matches the alternative information from the cache 128 and restores it.
  • the reduced data restoring unit 123 outputs received data including the restored data to the restored data transmitting unit 124.
  • the restoration data transmission unit 124 transmits the data input from the reduction data restoration unit 123 to the server application 3.
  • the reduced data restoration unit 124 stores the new data in the cache 128 when the data transferred by the transmission-side deduplication device 1A includes new data.
  • the application response receiving unit 125 receives a response from the server application 3 and outputs the response to the application response transfer unit 126.
  • the application response transfer unit 126 transmits the response from the server application 3 input from the application response reception unit 125 to the transmission source device 2.
  • the server disconnection unit 127 receives the disconnection request from the transmission source device 2 and transfers it to the server application 3. Note that the data received by the receiving side deduplication device 1B from the transmission source device 2 and the data transmitted to the transmission source device 2 actually pass through the receiving side deduplication device 1B.
  • the cache 128 is created, for example, in the storage area of the auxiliary storage device 13 of the receiving-side deduplication device 1B.
  • the auxiliary storage device 13 used for the cache 128 may be built in the receiving side deduplication device 1B or may be externally attached. Similar to the cache 118 of the transmission-side deduplication device 1A, a continuous area is secured in the cache 128 for each object ID, and chunks of the objects are successively stored in the continuous area of each object. ing.
  • FIG. 8 is a diagram illustrating an example of the data structure of the cache of the deduplication apparatus 1.
  • a continuous area is secured for each object, and chunks of the object are stored in the continuous area of each object. Chunks are stored sequentially in order.
  • the file change flag is included in each object area.
  • the file change flag is a flag indicating whether or not there is a change in the corresponding object. For example, when the file change flag is ON (1), it is indicated that the corresponding file is changed. For example, when the file change flag is OFF (0), it indicates that the corresponding file is not changed.
  • the cache 118 of the transmission-side deduplication device 1A and the cache 128 of the reception-side deduplication device 1B are both configured as shown in FIG.
  • FIG. 9 is a diagram illustrating an example of the hash table 119.
  • the hash table 119 stores information on the chunks stored in the cache 118 of the transmission-side deduplication device 1A. Specifically, the hash value, object ID, start position, and length are stored in the entry of the hash table 119.
  • the hash table 119 is searched using a hash value as a key.
  • the hash value for example, a value of about 20 bytes obtained by calculation of SHA1 (Secure Hash Algorithm) is stored.
  • the hash value is an example of “data block identification information”.
  • the file ID is stored in the “object ID”.
  • the file ID may be a file name, for example.
  • start position the start position of the chunk in the object in the cache 118 is stored in units of bytes.
  • length stores the length of the chunk. The chunk length is obtained by subtracting the chunk start position from the chunk end position in the object in the cache 118.
  • the hash table 119 finds the restart position of the matching portion after the mismatching portion when a mismatch is detected between the transmission target data received from the client application 2 and the data in the cache 118 of the transmission side deduplication device 1A. When used.
  • FIG. 10 is a diagram illustrating an example of a data format when the transmitting-side deduplication device 1A transfers data to the receiving-side deduplication device 1B.
  • An object ID is stored at the top of the data.
  • a plurality of combinations of flags and data portions are arranged. The number of consecutive combinations of flags and data parts is variable.
  • the transmission-side deduplication device 1A processes data to be transmitted from the client application 2 in units of data buffer size.
  • the size of the data buffer is, for example, 80 kilobytes. Therefore, one data format shown in FIG. 10 is created for one data of the size of the data buffer.
  • the data portion stores the data start position, data length, and actual data in the object.
  • the start position of the data in the object is the start position of the data in the transmission target object transmitted from the client application 2.
  • the size of the storage field of the start position of data in the object is fixed at 8 bytes, for example.
  • the size of the data length storage field is fixed at 8 bytes, for example.
  • the size of the actual data storage field is variable according to the data length of the actual data.
  • the flag When the flag is 1, it is indicated that duplicate data information is stored in the data part.
  • the data portion includes the start position, the match length, and the cache start position of the data in the object.
  • the start position of data in the object is the start position of duplicate data in the transmission target object transmitted from the client application 2.
  • the coincidence length is a coincidence length in which data of the transmission target object transmitted from the client application 2 and the object stored in the cache 118 of the transmission-side deduplication device 1A continuously match.
  • the cache start position is a storage start position of duplicate data in the object stored in the cache 118 of the transmission side deduplication device 1A.
  • the size of the storage field of the start position of the data part, the matching length, and the cache start position is fixed at 8 bytes, for example.
  • data in the data format shown in FIG. 10 is created in units of data buffers.
  • all the data of the transmission target object transmitted from the client application 2 stored in the data buffer matches the data of the object stored in the cache 118 of the transmission-side deduplication device 1A, it is shown in FIG.
  • the transmission packet of the data format to be created is not created. In this case, a proxy response is made to the client application 2.
  • the data format is It becomes as follows. Assume that the data buffer size is 80 kilobytes. ⁇ Object ID Flag (1), start position (X), match length (20 kilobytes), cache start position (X) Flag (0), start position (X + 20 kilobytes), data length (10 kilobytes), actual data flag (1), start position (X + 30 kilobytes), match length (50 kilobytes), cache start position (X + 40 kilobytes)
  • the receiving-side deduplication device 1B can properly read the non-updated data following the update part from the cache start position X + 40 kilobytes of the cache 128.
  • FIG. 12 is a diagram illustrating an example of a method of dividing data into chunks.
  • a chunk is created by determining whether or not the data read from the data buffer matches the bit pattern of the cutting condition while shifting the area.
  • the bit pattern of the cutting condition is, for example, a predetermined pattern that appears in the bit string with a probability of 1/1024. When a bit string that matches the bit pattern of the cutting condition appears, the data is cut at the end of the bit string and divided into chunks.
  • the current position at the end of the partial data 710 is not divided into chunks. Since the bit pattern of the partial data 720 in the data buffer matches the bit pattern of the cutting condition, it is divided into chunks at the current position that is the end of the partial data 720. From the top of the data shown in FIG. 12 to the end of the partial data 720 is registered as one chunk. The end position of the chunk is also the start position of the next chunk. However, when the position is expressed in bytes, the start position of the next chunk is the end position of the chunk + 1 byte.
  • FIG. 13 is a diagram showing an example of chunk division processing at the end of data in the data buffer. If the bit string at the end of the data in the data buffer does not match the bit pattern of the cutting condition, the data from the end position of the previous chunk to the end of the data in the data buffer is registered in the cache as is. The Since the corresponding part is not a chunk, it is not registered in the hash table 119.
  • FIG. 14 is a diagram illustrating an example of an overall flow of processing of the transmission-side deduplication device 1A.
  • the process shown in FIG. 14 is started when the transmission-side deduplication device 1A is activated.
  • the execution subject of the process shown in FIG. 14 is the CPU 11, but each process will be described mainly with a functional configuration achieved by the CPU 11 executing the deduplication program.
  • connection receiving unit 111 receives a connection request from the client application 2.
  • connection reception unit 111 transfers the received connection request to the server application 3.
  • the connection request reaches the receiving side deduplication device 1B and is transferred to the server application 3 by the receiving side deduplication device 1B.
  • OP3 received events are distributed. If the event is reception of data to be transmitted from the client application 2, the process proceeds to OP4. If the event is reception of response data from the receiving-side deduplication device 1B, the process proceeds to OP5. If the event is reception of a disconnection request from the client application 2, the process proceeds to OP6.
  • deduplication processing is performed on the transmission target data received from the client application 2. Details of the deduplication processing will be described later.
  • the process proceeds to OP3.
  • the response transfer receiving unit 115 outputs the response data from the receiving side deduplication device 1B to the application response transmitting unit 116, and the application response transmitting unit 116 transfers the response data to the client application 2. Thereafter, the process proceeds to OP3.
  • the disconnection reception unit 117 transfers the disconnection request received from the client application 2 to the receiving side deduplication device 1B. Thereafter, the process shown in FIG. 14 ends.
  • FIG. 15 is an example of a flowchart of deduplication processing.
  • the flowchart of FIG. 15 is started when a write request is received from the client application 2.
  • the execution subject of the process shown in FIG. 15 is the CPU 11, but for convenience, the transmission data reduction unit 113 will be described as a subject.
  • the transmission data reduction unit 113 determines whether or not the file including the transmission target data to be written is a new file.
  • the file including the write request target data is simply referred to as a write request target file.
  • the object ID and data of a file to be written are associated with each other and stored in the cache 118, it is determined that the file to be written is not a new file.
  • the cache 118 does not store the object ID and data of the write request target file in association with each other, it is determined that the write request target file is a new file.
  • the object ID of the file is, for example, a file name.
  • the file name is included in the write request.
  • the process proceeds to OP13.
  • the process proceeds to OP15.
  • the transmission data reduction unit 113 performs an object-linked chunk registration process that is a process of registering a new file in the cache 118. Details of the Object-linked chunk registration process will be described later.
  • the transmission data reduction unit 13 outputs the transmission target data to be written to the reduction data transmission unit 114.
  • the reduction data transmission unit 114 transfers the transmission target data to the reception-side deduplication device 1B. Thereafter, the process shown in FIG. 15 ends.
  • the transmission data reduction unit 13 determines a message included in the write request. Examples of the message included in the write request include “OPEN” indicating the start of the file, “READ” indicating that the data is in the middle of the file, and “CLOSE” indicating the end of the file. If the message included in the write request is “OPEN”, the process proceeds to OP16. If the message included in the write request is “READ”, the process proceeds to OP18. If the message included in the write request is “CLOSE”, the process proceeds to OP20.
  • the transmission data reduction unit 13 inquires as to whether or not the data stored in the cache 118 and the data held by the server application 3 match for the write request target file.
  • the transmission data reduction unit 13 sets the result of the inquiry in OP16 in the file change flag.
  • the file change flag is set to “No change”, “No change”, or “No change” depending on whether or not the data stored in the cache 118 matches the data held by the server application 3 for the write request target file. It is set to a value indicating either “changed”.
  • the transmission data reduction unit 13 performs Object-linked chunk update processing, which is processing for generating information for updating data stored in the server application 3.
  • Object-linked chunk update processing for example, a transmission packet having the format shown in FIG. 10 is created. Details of the object-linked chunk update process will be described later.
  • the transmission data reduction unit 13 transmits the transmission packet created in OP18 and OP20 to the reception-side deduplication device 1B. After the process of OP19, the process shown in FIG. 15 ends.
  • the transmission data reduction unit 113 updates the file in the cache 118 when there is an update in the file of the write request target in the cache 118. Thereafter, the process shown in FIG. 15 ends.
  • FIG. 16 is an example of a flowchart of Object-linked chunk registration processing.
  • the object-lined chunk registration process is a process for registering new file data in the cache.
  • the execution subject of the processing shown in FIG. 16 is the CPU 11, but for convenience, the transmission data reduction unit 113 will be described as a subject.
  • the transmission data reduction unit 113 acquires the transmission target data in the data buffer. At this time, the transmission data reduction unit 113 acquires the file name of the file including the transmission target data, the write start position of the transmission target data in the file including the transmission target data, the length of the data buffer, and the transmission target data in the data buffer. To do.
  • the transmission data reduction unit 113 acquires the object ID and secures an area corresponding to the object ID in the cache 118.
  • the area secured in the cache 118 may be secured with a uniform size for any object ID, or may be secured larger than the size of the file by acquiring the file size. .
  • the transmission data reduction unit 113 sets the current data position as the write start position and the chunk start position as the write start position.
  • the data current position is a parameter indicating the position currently being referred to in the file including the transmission target data.
  • the chunk start position is a chunk start position in a file including transmission target data.
  • the transmission data reduction unit 113 determines whether or not the transmission target data has ended. If the transmission target data has been completed (OP34: YES), the process proceeds to OP38. If the transmission target data has not ended (OP34: NO), the process proceeds to OP35.
  • the transmission data reduction unit 113 determines whether or not the current data position is a chunk cutting position. This process is performed by determining whether or not a bit string extending a predetermined bit length from the current data position matches the bit pattern of the cutting condition (see FIG. 12). If the current data position is the chunk cut position (OP35: YES), the process proceeds to OP36. If the current data position is not the chunk cut position (OP35: NO), the process proceeds to OP37.
  • the transmission data reduction unit 113 performs the following.
  • the transmission data reduction unit 113 sets the chunk end position to the current data position.
  • the transmission data reduction unit 113 calculates a hash value from the chunk start position to the chunk end position, and registers the calculated hash value in the hash table 119.
  • In the hash table 119 in addition to the hash value, an object ID, a chunk start position, and a chunk length are also registered.
  • the transmission data reduction unit 113 updates the chunk start position to the data current position + 1 byte.
  • the transmission data reduction unit 113 writes the chunk to the cache 118.
  • the transmission data reduction unit 113 adds 1 byte to the data current position and updates the data current position. Next, the process proceeds to OP34.
  • the transmission data reduction unit 113 caches the actual data from the end position of the immediately previous chunk to the end. 118 is written. Thereafter, the processing shown in FIG. 16 ends.
  • FIG. 17A and FIG. 17B are an example of a flowchart of an Object-linked chunk update process.
  • the object-linked chunk update process is a process for generating information for updating data stored in the server application 3.
  • the execution subject of the processing shown in FIGS. 17A and 17B is the CPU 11, but for the sake of convenience, the transmission data reduction unit 113 will be mainly described.
  • the transmission data reduction unit 113 acquires the transmission target data in the data buffer. At this time, the transmission data reduction unit 113 includes the file name of the file including the transmission target data, the write start position of the transmission target data in the file including the transmission target data, the length of the data buffer, and the transmission target data in the data buffer. To get.
  • the transmission data reduction unit 113 acquires the object ID, and specifies an area corresponding to the object ID in the cache 118.
  • the transmission data reduction unit 113 sets the data start position, the data current position, and the chunk start position as the write start position.
  • the transmission data reduction unit 113 sets the match length to zero.
  • the transmission data reduction unit 113 sets the total match length to 0.
  • the transmission data reduction unit 113 sets ObjectCheckMode to true.
  • the cache current position is a parameter indicating the current reference position in the corresponding file in the cache 118, and is set to 0 when the write start position of the transmission target data is 0. The value at the end of processing of the previous transmission target data is taken over and used.
  • the cache start position is set to the cache current position in OP43.
  • the coincidence length is a parameter indicating a length in which the transmission target data and the data in the cache 118 are continuously matched.
  • the total match length is a parameter indicating the total length of the lengths at which the transmission target data and the data in the cache 118 match.
  • ObjectCheckMode indicates a method for checking data to be transmitted.
  • ObjectCheckMode a simple memory comparison between the data to be transmitted and the data in the cache 118 is performed.
  • the ObjectCheckMode is false, the transmission target data is divided into chunks, the hash value of the chunk is calculated, and the hash table 119 is searched using the hash value.
  • the process when the ObjectCheckMode is true is an example of “first process”.
  • the process in the case where ObjectCheckMode is false is an example of “second process”.
  • the transmission data reduction unit 113 determines whether or not the processing is completed for the transmission target data. When the process is completed for the transmission target data (OP44: YES), the process proceeds to OP45. If the process has not been completed for the transmission target data (OP44: NO), the process proceeds to OP46.
  • the transmission data reduction unit 113 determines whether or not the ObjectCheckMode is true. If ObjectCheckMode is true (OP46: YES), the process proceeds to OP47. If ObjectCheckMode is false, the process proceeds to OP51.
  • the processing from OP47 to OP50 is processing when ObjectCheckMode is true.
  • the transmission data reduction unit 113 collates data between the cache current position of the cache 118 and the data current position of the transmission target data.
  • the transmission data reduction unit 113 determines whether or not the data of the cache current position of the cache 118 matches the data current position of the transmission target data. If the current data position of the cache 118 and the current data position of the transmission target data match (OP48: YES), the process proceeds to OP49. If the current data position of the cache 118 and the data current position of the transmission target data do not match (OP48: NO), the process proceeds to OP50.
  • the transmission data reduction unit 113 sets each value of the data current position, the cache current position, the match length, and the total match length. 1 byte is added to and updated. Next, the process proceeds to OP44.
  • the transmission data reduction unit 113 sets ObjectCheckMode to false.
  • the transmission data reduction unit 113 updates the match length to a value obtained by subtracting the data start position from the data current position.
  • the transmission data reduction unit 113 updates the total match length to a value obtained by adding the updated match length.
  • the transmission data reduction unit 113 matches the updated start position (start position) in the data to be transmitted, the match start position (cache start position) in the data in the cache 118, and the updated match.
  • the length of the transmission packet is added to the data part having a flag of 1.
  • the match length is set to 0 for the transmission data.
  • the transmission data reduction unit 113 sets the chunk start position to the current data position. Next, the process proceeds to OP44.
  • the process from OP51 to OP56 in FIG. 17B is a process when ObjectCheckMode is false.
  • the transmission data reduction unit 113 determines whether or not the current data position of the transmission target data is a chunk cut position. If the current data position of the transmission target data is the chunk cut position (OP51: YES), the process proceeds to OP52. If the current data position of the transmission target data is not the chunk cut position (OP51: NO), the process proceeds to OP56.
  • the transmission data reduction unit 113 calculates a hash value for data from the chunk start position to the data current position. In OP53, the transmission data reduction unit 113 determines whether or not the calculated hash value exists in the hash table 119.
  • the transmission data reduction unit 113 sets the ObjectCheckMode to true.
  • the transmission data reduction unit 113 updates the data start position to the chunk start position.
  • the current data position matches the value obtained by subtracting 1 byte from the value obtained by adding the updated data start position and the chunk length.
  • the transmission data reduction unit 113 updates the cache start position to the cache start position in the corresponding entry of the hash table.
  • the transmission data reduction unit 113 updates the cache current position to a value obtained by adding the chunk length to the cache start position.
  • the transmission data reduction unit 113 updates the match length to the chunk length.
  • the transmission data reduction unit 113 registers the calculated hash value in the hash table 119.
  • the transmission data reduction unit 113 adds new data from the chunk start position to the current data position to the data part with a transmission packet flag of 1.
  • the transmission data reduction unit 113 updates the chunk start position to a value obtained by adding 1 byte to the data current position.
  • the transmission data reduction unit 113 adds 1 byte to the current data position and updates it. Thereafter, the process proceeds to OP44.
  • FIG. 18 is an example of a flowchart of data end processing.
  • the data end process is a process when the process on the transmission target data ends.
  • the transmission data reduction unit 113 determines whether or not the ObjectCheckMode is true. If ObjectCheckMode is true (OP61: YES), the process proceeds to OP62. If ObjectCheckMode is false (OP61: NO), the process proceeds to OP66.
  • the transmission data reduction unit 113 determines whether or not the match length matches the data buffer length, the file change flag is unchanged, and the data start position is the cache start position. By this determination, it is determined whether or not the transmission target data in the data buffer and the data in the cache 118 completely match and there is an update of the target file. If the above condition is satisfied (OP63: YES), the process proceeds to OP65. If the above condition is not satisfied (OP63: NO), the process proceeds to OP64.
  • the processing from OP66 to OP67 is processing when the ObjectCheckMode is false.
  • the transmission data reduction unit 113 sets the coincidence length of the data part having the flag 1 to a value obtained by subtracting the data start position from the data current position, and adds it to the transmission packet.
  • the transmission data reduction unit 113 transmits a transmission packet. Thereafter, the process shown in FIG. 18 ends.
  • FIG. 19 is a diagram illustrating an example of a flowchart of processing of the reception-side deduplication device 1B.
  • the process shown in FIG. 19 is started when the receiving side deduplication apparatus 1B is activated, and is repeatedly executed during operation.
  • the execution subject of the process of FIG. 19 is the CPU 11, but for the sake of convenience, the reduced data restoration unit 123 will be described as a subject.
  • the reduced data restoring unit 123 receives data from the transmission-side deduplication device 1A through the reduced data receiving unit 122.
  • the reduced data restoration unit 123 identifies the area of the cache 128 from the object ID in the data.
  • the reduced data restoration unit 123 determines whether or not the flag is 0. If the flag is 0 (OP74: YES), the process proceeds to OP75. If the flag is 1 (OP74: NO), the process proceeds to OP79.
  • OP75 to OP78 are processes when the flag is 0, that is, the actual data is included in the data part.
  • the reduced data restoration unit 123 reads the start position value in the data part.
  • the reduced data restoration unit 123 reads the data length in the data part.
  • the reduced data restoration unit 123 reads the actual data in the data part for the data length.
  • the reduced data restoration unit 123 writes the read actual data in the read start position in the file in the temporary memory area in the main storage device 12. Next, the process proceeds to OP73.
  • the processing from OP79 to OP83 is processing when the flag is 1, that is, when it is duplicate data.
  • the reduced data restoration unit 123 reads the start position value in the data part.
  • the reduced data restoration unit 123 reads the matching length in the data part.
  • the reduced data restoration unit 123 reads the cache start position in the data part.
  • the reduced data restoration unit 123 reads the actual data corresponding to the matching length read from the data part of the received data from the cache start position read from the data part of the received data in the cache 128. In OP83, the reduced data restoration unit 123 writes the read actual data at the start position read from the data portion of the received data in the temporary memory area file in the main storage device 12. Next, the process proceeds to OP73.
  • the data written in the temporary memory area is overwritten and saved in the area of the corresponding object ID in the cache 128. Further, the data written in the temporary memory area is transmitted from the receiving side deduplication device 1B to the server application 3, and the corresponding file in the server application 3 is overwritten and updated.
  • FIG. 20 is a diagram illustrating an example of a file overwrite update.
  • FIG. 20 shows an example when a file A overwrite update request is transmitted from the client application.
  • the updated portion of file A is indicated by diagonal lines.
  • the “transmission target file” in FIG. 20 indicates data transmitted from the client application and stored in the data buffer of the transmission-side deduplication device 1A.
  • the size of the data buffer is 80 kilobytes.
  • Data A, data B, and data C are data that are stored in the data buffer and are subject to a single write request.
  • the transmission data reduction unit 113 receives a write request including the message “OPEN” from the client application 2 (FIG. 15, OP11, OP12: NO, OP15).
  • the transmission data reduction unit 113 inquires of the server application 3 whether or not the file A in the cache 118 matches the file A held by the server application 3 (FIG. 15, OP16). In FIG. 20, the server application 3 is omitted. The transmission data reduction unit 113 sets the inquiry result in the file change flag (OP17 in FIG. 15). In FIG. 20, since the file A in the cache 118 and the file A held by the server application 3 match, the file change flag is set without change.
  • the processing from OP46 to OP49 in FIG. 17A is repeatedly performed.
  • ObjectCheckMode is true (FIG. 18, OP61: YES).
  • the match length is 80 kilobytes and matches the size of the data buffer.
  • the file change flag is not changed. Both the data start position and the cache start position match at 0 bytes (FIG. 18, OP63: YES).
  • the transmission data reduction unit 113 sends a proxy response to the client application 2 and does not transmit data to the reception-side deduplication apparatus 1B (FIG. 18, OP65).
  • the transmission data reduction unit 113 receives a write request including the message “READ” from the client application 2 (FIG. 15, OP11, OP12: NO, OP15).
  • the write start position of the transmission target data # 2 is 80 kilobytes
  • the data start position is 80 kilobytes.
  • the cache start position of the transmission target data # 2 is the current cache position at the end of the processing of the transmission target data # 1, it is 80 kilobytes.
  • Data # 2 includes an updated part. Since the 80th to 99999th bytes of the file including the transmission target data # 2 are not updated, the processing from OP46 to OP49 in FIG. 17 is repeated.
  • the 100 kilobyte to 149999th bytes of the file including the transmission target data # 2 are update parts.
  • the data does not match (FIG. 17A, OP48: NO).
  • a data part in which the flag is 1 the start position is 80 kilobytes, and the match length is 20 kilobytes (data current position 100 kilobytes ⁇ data start position 80 kilobytes) is added to the transmission packet (FIG. 17A, OP50).
  • ObjectCheckMode is set to false.
  • the chunk start position is set to 100 kilobytes of the current data position.
  • the chunk start position is set to 150 kilobytes, which is 1 byte added to the current data position (FIG. 17B, OP55).
  • the data part of flag 0 including the actual data from the 100th kilobyte to the 149999th bytes of the file including the start position of 100 kilobytes, the chunk length of 50 kilobytes, and the transmission target data # 2 is added to the transmission packet.
  • the calculated hash value exists in the hash table 119 (FIG. 17B, OP53: YES) at the first chunk cut position after the 150 kilobytes of the file including the transmission target data # 2 (FIG. 17B, OP51: YES). ). It is assumed that the chunk entry in the hash table 116 is registered with a cache start position of 160 kilobytes.
  • the data start position is set to 150 kilobytes, which is the chunk start position.
  • the cache start position is set to a cache position of 160 kilobytes in the hash table 119 of the calculated hash value.
  • the match length is set to the chunk length, that is, the length from the 150 kilobytes of the transmission target file to the chunk cut position.
  • the process of the transmission target data # 2 is completed (FIG. 17A, OP44: YES), and the data end process of FIG. 18 is performed.
  • the coincidence length is 10 kilobytes obtained by subtracting 150 kilobytes at the data start position from 160 kilobytes at the current data position.
  • the total match length is 30 kilobytes, which is 20 kilobytes plus a match length of 10 kilobytes.
  • a data portion including a start position of 150 kilobytes, a matching length of 10 kilobytes, a cache start position of 160 kilobytes, and a flag of 1 is added to the transmission packet (OP62 in FIG. 18).
  • the process ends for the transmission target data # 2 that is the target of one write request, and thus the transmission packet is transmitted to the reception-side deduplication apparatus 1B.
  • the contents of the transmission packet are as follows.
  • -Object ID (file A) -Flag (1), start position (80 kilobytes), match length (20 kilobytes), cache start position (80 kilobytes) -Flag (0), start position (100 kilobytes), data length (50 kilobytes), actual data flag (1), start position (150 kilobytes), match length (10 kilobytes), cache start position (160 kilobytes)
  • the receiving side deduplication apparatus 1B receives the packet having the above contents and writes the data of file A to the temporary memory.
  • the data part of the flag (1) the start position (80 kilobytes), the matching length (20 kilobytes), and the cache start position (80 kilobytes)
  • the data for 80 kilobytes from the file A in the cache 128 is read.
  • the data is written at a location of 80 kilobytes in the temporary memory (FIG. 19, OP79 to OP83).
  • the start position (150 kilobytes), the matching length (10 kilobytes), and the cache start position (160 kilobytes)
  • the data for 10 kilobytes is read from the 160th kilobyte of the file A in the cache 128, It is written at a location of 150 kilobytes in the temporary memory (FIG. 19, OP79 to OP83).
  • the transmission data reduction unit 113 receives a write request including the message “CLOSE” from the client application 2 (FIG. 15, OP11, OP12: NO, OP15).
  • the transmission target data # 3 that is the target of the write request does not include the update part.
  • the write start position of the transmission target data # 3 is 160 kilobytes.
  • the current data position is 160 kilobytes, the match length and the total match length are 0, and the ObjectCheckMode is true.
  • the cache start position is the current cache position at the end of the processing of the transmission target data # 2, and is 170 kilobytes.
  • the transmission data reduction unit 113 transmits a transmission packet including a data part having a start position of 160 kilobytes, a matching length of 60 kilobytes, a cache start position of 170 kilobytes, and a flag of 1 (FIG. 18, OP64).
  • the receiving-side deduplication apparatus 1B receives a packet including a data portion of a flag (1), a start position (160 kilobytes), a matching length (60 kilobytes), and a cache start position (170 kilobytes). According to the packet, data from 170 kilobytes to 60 kilobytes of the file A in the cache 128 is read and written to a location of 160 kilobytes in the temporary memory of the data (FIG. 19, OP79 to OP83).
  • the receiving-side deduplication device 1B transmits the data in the temporary memory to the server application 3.
  • the server application 3 updates the data after the 80 kilobytes of the file A with the data received from the receiving-side deduplication device 1B.
  • FIG. 21 is a diagram illustrating an example of the operational effects of the first embodiment.
  • FIG. 21 shows a case where a middle part of a 100 MB file is edited and the file is uploaded to the server.
  • Chunks are 1 KB on average.
  • the file shown in FIG. 21 includes about 100,000 blocks. Of the approximately 100,000 blocks, the block whose contents are changed by editing is one block located in the middle.
  • the transmission packet for the file shown in FIG. 21 has two data parts (24 bytes) with a flag of 1 and a data part (16 bytes + about 1 KB) with a flag of 0. One included. That is, the size of the transmission packet is about 1 KB. Since the amount of data transferred to a 100 MB file is about 1 KB, the transfer data reduction rate is 1/100000, and the transfer data reduction rate can be improved.
  • the transmission-side deduplication device 1A performs simple memory comparison of the transmission target data read from the data buffer and the file data in the cache 118 in order from the head in byte units.
  • the transmission-side deduplication apparatus 1A adds the position information in the cache 118 of the matching portion before the mismatching portion to the transmission packet. Since the location information in the cache 118 of the matching portion is transmitted instead of the actual data of the matching portion, the transfer data deletion rate is increased.
  • the cache 118 a continuous area is secured for the object, and chunks are stored successively in the area.
  • the position of the duplicate data in the cache 118 can be notified to the reception side deduplication apparatus 1B as the position information in the cache 118 of the coincidence portion with a smaller data amount between the cache start position and the coincidence length.
  • the storage area may be divided by the chunk of another object even if the chunk of the same object is used.
  • the transmission-side deduplication device 1A divides the transmission target data after the mismatched portion into chunks, calculates a hash value of the chunk, and searches the hash table 119 with the hash value. If the hash value of the chunk is not in the hash table 119, the transmission-side deduplication apparatus 1A adds the actual data of the chunk to the transmission packet. When the hash value of the chunk is in the hash table 119, the transmission side deduplication apparatus 1A performs a simple memory comparison process between the transmission target data and the file data in the cache 118 for the subsequent data. To resume.
  • Chunks are delimited by the appearance position of the cutting condition pattern, so the chunk length and hash value change before and after the update part of the chunk, but the cutting condition pattern appearance position immediately after the update part only moves. It is. Therefore, chunks that are not updated after the update part are detected by searching the hash table 119 using the hash value of the chunk without changing the chunk length and the hash value before and after the update. Accordingly, it is possible to more appropriately detect the end of the update portion, that is, the position where the match between the transmission target data and the file data in the cache 118 is resumed. As a result, the amount of actual data including the updated portion transmitted to the receiving-side deduplication device 1B can be further reduced. In addition, it is possible to reduce the processing for dividing the transmission target data into chunks and calculating the hash value of the chunks, and to reduce the load on the CPU 11 of the transmission side deduplication device 1A.
  • the transmission-side deduplication apparatus 1A performs a simple memory comparison between the transmission target data and the file data in the cache 118, and if all the data match, the client application A proxy response is made to 2. At this time, the transmitting-side deduplication device 1A does not transmit data to the receiving-side deduplication device 1B. Therefore, according to the first embodiment, it is possible to improve the transfer data reduction rate.
  • the transmission-side deduplication apparatus 1A uses the start position in the file including the transmission target data, the match length, the cache as position information in the cache 118 of the matching portion between the transmission target data and the file data in the cache 118.
  • the cache start position in 118 is transmitted.
  • the position of the matching part may move due to the update.
  • the start position of the matching portion in the file including the transmission target data that is the updated data may be different from the start position of the matching portion in the file in the cache 118 that is the data before the update. .
  • the receiving side deduplication apparatus 1B relies on the cache start position to determine whether the file in the cache 128 before the update is appropriate. Data can be read from the position.
  • the client application 2 and the server application 3 When performing file overwrite update on a remote file server, it is common for the client application 2 and the server application 3 to exchange data to maintain file consistency.
  • the position of the data before and after the update can be properly notified to the receiving side deduplication apparatus 1B by the transmission packet in the deduplication process, and the consistency of the file can be maintained. Can do. Therefore, according to the first embodiment, it is possible to omit exchanges for maintaining file consistency at the application level.
  • a program for causing a computer or other machine or device (hereinafter, a computer or the like) to realize any of the above functions can be recorded on a recording medium that can be read by the computer or the like.
  • the function can be provided by causing a computer or the like to read and execute the program of the recording medium.
  • a computer-readable recording medium is a non-temporary recording medium in which information such as data and programs is accumulated by electrical, magnetic, optical, mechanical, or chemical action and can be read from a computer or the like.
  • a typical recording medium examples of such recording media that can be removed from a computer or the like include, for example, a memory such as a flexible disk, a magneto-optical disk, a CD-ROM, a CD-R / W, a DVD, a Blu-ray disc, a DAT, an 8 mm tape, and a flash memory.
  • a memory such as a flexible disk, a magneto-optical disk, a CD-ROM, a CD-R / W, a DVD, a Blu-ray disc, a DAT, an 8 mm tape, and a flash memory.
  • cards There are cards.
  • a recording medium fixed to a computer or the like there are a hard disk, a ROM (read only memory) and the like.
  • an SSD Solid State Drive
  • a first storage unit that stores, in association with each other, identification information of an object having a transmission record, and identification information of each of the plurality of data blocks divided by the appearance position of a bit string of a predetermined pattern of the object;
  • a second storage unit that stores the identification information of the object having the transmission record and the plurality of data blocks of the object in association with each other;
  • a first process for comparing data between a transmission target object and an object stored in the second storage unit that matches the identification information of the transmission target object; and data of the transmission target object A second process of extracting a data block by dividing at a position where a bit string having a predetermined pattern appears, calculating identification information of the data block, and searching the first storage unit with the identification information of the data block;
  • a control unit to perform, The controller is In the first process, a mismatched portion of data between the transmission target object and the object stored in the second storage unit is detected, and when there is a matched portion before the mis
  • the first processing is performed on data after the data block in each of the transmission target object and the object stored in the second storage unit.
  • Information processing device (Appendix 2)
  • the second storage unit continuously stores the plurality of data blocks in order in a continuous area secured for the object with the transmission record,
  • the control unit Transmitting the start position of the matching part in the above, the length of the matching part, and the start position of the matching part in the object stored in the second storage unit,
  • the information processing apparatus according to attachment 1.
  • the identification information of an object with a transmission record and the identification information of each of a plurality of data blocks delimited by the appearance position of a bit string of a predetermined pattern are associated and stored in the first storage unit,
  • the identification information of the object with the transmission record and the plurality of data blocks of the object are associated with each other and stored in the second storage unit,
  • a first process for comparing data between a transmission target object and an object stored in the second storage unit that matches the identification information of the transmission target object; and data of the transmission target object A second process of extracting a data block by dividing at a position where a bit string having a predetermined pattern appears, calculating identification information of the data block, and searching the first storage unit with the identification information of the data block; Done In the first process, a mismatched portion of data between the transmission target object and the object stored in the second storage unit is detected, and when there is a matched portion before the mismatched portion, at least the first Transmitting the position information of the matching part in the object stored in the storage unit,
  • the first processing is performed on data after the data block in each of the transmission target object and the object stored in the second storage unit.
  • Information processing method (Appendix 7) On the computer, The identification information of the object having a transmission record and the identification information of each of the plurality of data blocks divided by the appearance position of the bit string of the predetermined pattern are associated with each other and stored in the first storage unit, The identification information of the object with the transmission record and the plurality of data blocks of the object are associated with each other and stored in the second storage unit, A first process for comparing data between a transmission target object and an object stored in the second storage unit that matches the identification information of the transmission target object; and data of the transmission target object A second process of extracting a data block by dividing at a position where a bit string having a predetermined pattern appears, calculating identification information of the data block, and searching the first storage unit with the identification information of the data block; Let In the first process, a mismatched portion of data between the transmission target object and the object stored in the second storage unit is detected, and when there
  • a first storage unit that stores, in association with each other, identification information of an object having a transmission record, and identification information of each of the plurality of data blocks divided by the appearance position of a bit string of a predetermined pattern of the object;
  • a second storage unit that stores the identification information of the object having the transmission record and the plurality of data blocks of the object in association with each other;
  • a first process for comparing data between a transmission target object and an object stored in the second storage unit that matches the identification information of the transmission target object; and data of the transmission target object A second process of extracting a data block by dividing at a position where a bit string having a predetermined pattern appears, calculating identification information of the data block, and searching the first storage unit with the identification information of the data block;
  • a control unit to perform, The controller is In the first process, a mismatched portion of data between the transmission target object and the object stored
  • the first processing is performed on data after the data block in each of the transmission target object and the object stored in the second storage unit.
  • a transmitting device A storage unit for storing an object having the transmission record; When the position information of the matching part in the object stored in the second storage unit is received from the transmission side device, the storage unit stores the position information of the matching portion from the storage unit to the second storage unit. Read the matching part of the stored object, add it to the restored object, When the data block is received from the transmission side device, the data block is added to the restoration object.
  • a receiving device Information processing system including

Landscapes

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

Abstract

転送データ量の削減率を向上させる。送信実績のあるオブジェクトの識別情報と該オブジェクトのデータブロックの識別情報とを記憶する第1の記憶部と、該オブジェクトのデータブロックを記憶する第2の記憶部と、送信対象オブジェクトと第2の記憶部内のオブジェクトとのデータの比較を行う第1の処理と、送信対象オブジェクトからデータブロックを抽出し、該データブロックの識別情報で第1の記憶部を検索する第2の処理と、を行う制御部とを備える情報処理装置である。制御部は、第1の処理において、送信対象オブジェクトと第2の記憶部内のオブジェクトとのデータの不一致部分を検出し、第2の記憶部内のオブジェクトにおける一致部分の位置情報を送信し、送信対象オブジェクトにおける不一致部分の開始位置以降のデータについて、第2の処理を行い、第2の処理において、第1の記憶部に識別情報がないデータブロックを送信する。

Description

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

Claims (5)

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017532267A JP6439874B2 (ja) 2015-07-31 2015-07-31 情報処理装置、情報処理方法、及び、情報処理プログラム
PCT/JP2015/071865 WO2017022034A1 (ja) 2015-07-31 2015-07-31 情報処理装置、情報処理方法、及び、情報処理プログラム
US15/849,039 US20180113874A1 (en) 2015-07-31 2017-12-20 Information processing apparatus, information processing method and recording medium with information processing program

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/849,039 Continuation US20180113874A1 (en) 2015-07-31 2017-12-20 Information processing apparatus, information processing method and recording medium with information processing program

Publications (1)

Publication Number Publication Date
WO2017022034A1 true WO2017022034A1 (ja) 2017-02-09

Family

ID=57942690

Family Applications (1)

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

Country Status (3)

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

Families Citing this family (2)

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

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010130610A (ja) * 2008-12-01 2010-06-10 Hitachi Kokusai Electric Inc データ伝送システム
JP2013534007A (ja) * 2010-06-18 2013-08-29 マイクロソフト コーポレーション データ記憶とデータ送信の最適化
US20140201385A1 (en) * 2013-01-16 2014-07-17 Cisco Technology, Inc. Method for optimizing wan traffic with deduplicated storage
JP2015502115A (ja) * 2011-12-26 2015-01-19 エスケーテレコム株式会社Sk Telecom Co.,Ltd. コンテンツ伝送システム、そのシステムでのネットワークトラフィック最適化方法、中央制御装置及びローカルキャッシング装置
JP2015069314A (ja) * 2013-09-27 2015-04-13 パナソニックIpマネジメント株式会社 通信端末、転送端末、およびコンテンツ出版方法
WO2015107653A1 (ja) * 2014-01-16 2015-07-23 富士通株式会社 通信装置、通信方法、および、通信プログラム
JP2015521323A (ja) * 2012-05-17 2015-07-27 アカマイ テクノロジーズ インコーポレイテッド 非同期データ・ディクショナリを使用した、マルチテナント共有インフラストラクチャにおけるストリームベースのデータ重複排除

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006055964A1 (de) * 2006-11-24 2008-05-29 Bdt-Solutions Gmbh Verfahren und Vorrichtung zur Datensicherung
US9401967B2 (en) * 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US8909657B2 (en) * 2011-01-14 2014-12-09 Apple Inc. Content based file chunking

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010130610A (ja) * 2008-12-01 2010-06-10 Hitachi Kokusai Electric Inc データ伝送システム
JP2013534007A (ja) * 2010-06-18 2013-08-29 マイクロソフト コーポレーション データ記憶とデータ送信の最適化
JP2015502115A (ja) * 2011-12-26 2015-01-19 エスケーテレコム株式会社Sk Telecom Co.,Ltd. コンテンツ伝送システム、そのシステムでのネットワークトラフィック最適化方法、中央制御装置及びローカルキャッシング装置
JP2015521323A (ja) * 2012-05-17 2015-07-27 アカマイ テクノロジーズ インコーポレイテッド 非同期データ・ディクショナリを使用した、マルチテナント共有インフラストラクチャにおけるストリームベースのデータ重複排除
US20140201385A1 (en) * 2013-01-16 2014-07-17 Cisco Technology, Inc. Method for optimizing wan traffic with deduplicated storage
JP2015069314A (ja) * 2013-09-27 2015-04-13 パナソニックIpマネジメント株式会社 通信端末、転送端末、およびコンテンツ出版方法
WO2015107653A1 (ja) * 2014-01-16 2015-07-23 富士通株式会社 通信装置、通信方法、および、通信プログラム

Also Published As

Publication number Publication date
JPWO2017022034A1 (ja) 2018-04-26
JP6439874B2 (ja) 2018-12-19
US20180113874A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
US10795812B1 (en) Virtual copy forward method and system for garbage collection in cloud computing networks
KR102007070B1 (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
US8205009B2 (en) Apparatus for continuous compression of large volumes of data
US10552040B2 (en) Fixed size extents for variable size deduplication segments
US9984093B2 (en) Technique selection in a deduplication aware client environment
US7472254B2 (en) Systems and methods for modifying a set of data objects
CN108427539B (zh) 缓存设备数据的离线去重压缩方法、装置及可读存储介质
US7366859B2 (en) Fast incremental backup method and system
JP5774794B2 (ja) ストレージシステム及びストレージシステムの制御方法
CN111190928A (zh) 缓存处理方法、装置、计算机设备以及存储介质
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
US20150339314A1 (en) Compaction mechanism for file system
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
US10684920B2 (en) Optimized and consistent replication of file overwrites
EP1949541A2 (en) Method and system for compression of logical data objects for storage
US10339124B2 (en) Data fingerprint strengthening
CN110941514B (zh) 一种数据备份方法、恢复方法、计算机设备和存储介质
US11797488B2 (en) Methods for managing storage in a distributed de-duplication system and devices thereof
JP6304385B2 (ja) 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
CN105677238A (zh) 一种基于分布式存储重复数据删除的虚拟机系统盘的方法
US6654856B2 (en) System and method for managing storage space of a cache
JP6439874B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
JP2012164130A (ja) データ分割プログラム
KR102275240B1 (ko) 저장된 데이터 유닛들의 동작 관리
US10831388B2 (en) Selective data destruction via a sanitizing wipe command

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15900348

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017532267

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15900348

Country of ref document: EP

Kind code of ref document: A1