WO2014155653A1 - データ重複検出システムおよびデータ重複検出システムの制御方法 - Google Patents

データ重複検出システムおよびデータ重複検出システムの制御方法 Download PDF

Info

Publication number
WO2014155653A1
WO2014155653A1 PCT/JP2013/059462 JP2013059462W WO2014155653A1 WO 2014155653 A1 WO2014155653 A1 WO 2014155653A1 JP 2013059462 W JP2013059462 W JP 2013059462W WO 2014155653 A1 WO2014155653 A1 WO 2014155653A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
stored
chunk data
storage unit
chunk
Prior art date
Application number
PCT/JP2013/059462
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 US14/343,644 priority Critical patent/US9239844B2/en
Priority to PCT/JP2013/059462 priority patent/WO2014155653A1/ja
Publication of WO2014155653A1 publication Critical patent/WO2014155653A1/ja

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/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system

Definitions

  • the present invention relates to a data duplication detection system and a data duplication detection system control method.
  • the backup data often includes the same data as the data already stored in the storage system. Therefore, if duplicate data is eliminated from backup data, the storage resources of the storage system can be used effectively.
  • the present invention has been made in view of the above problems, and an object thereof is to provide a data duplication detection system and a data duplication detection system control method capable of detecting duplicate data with high accuracy.
  • a data duplication detection system for detecting duplication of data, and stores each of a plurality of chunk data formed by dividing received data.
  • a data duplication determination unit that determines whether the chunk data is duplicated, a storage unit that stores chunk data determined not to be duplicated by the data duplication determination unit, and data about each chunk data stored in the storage unit
  • a first management table for managing the identity guarantee data indicating the identity and storage destination information indicating the data storage destination in association with each other, and the identity guarantee data of each chunk data stored in the storage unit
  • a third management table for managing the identity guarantee data for the data, and the data duplication determination unit is a case where the second management table indicates that the target chunk data included in the received data is stored in the storage unit
  • the target chunk data is stored in a temporary storage unit for temporarily storing the chunk data and is different from the target chunk.
  • the second management table indicates that the target chunk data is stored in the storage unit, and other target
  • it is determined whether the identity guarantee data of the target chunk data stored in the temporary storage unit is stored in the first management table When it is determined that the identity guarantee data of the target chunk data stored in the temporary storage unit is stored in the first management table, the target chunk data stored in the temporary storage unit is already stored in the storage unit. If it is determined that the identity guarantee data of the target chunk data stored in the temporary storage unit is not stored in the first management table, the target chunk data stored in the temporary storage is stored in the storage unit. Judge that it is not.
  • the first management table may be prepared for each of the plurality of chunk data sets.
  • the data duplication determination unit determines that other target chunk data is stored in the third management table
  • the first management table is provided for each of the plurality of chunk data sets.
  • the first management table corresponding to the chunk data set to which the other target chunk data belongs is determined whether the identity guarantee data for the target chunk data stored in the temporary storage unit is stored. May be.
  • FIG. 1 is an explanatory diagram showing an outline of an embodiment of the present invention.
  • FIG. 2 is an overall configuration diagram of the information processing system.
  • FIG. 3 is an explanatory diagram showing a table structure.
  • FIG. 4 is an explanatory diagram schematically showing an outline of a method for determining data duplication.
  • FIG. 5 is an overall view of processing for determining data duplication.
  • FIG. 6 is a flowchart showing details of processing for determining data duplication.
  • FIG. 7 is a flowchart showing processing for registering a representative chunk in a chunk index or the like.
  • FIG. 8 is a flowchart showing processing for reconfiguring data in accordance with a read command from the host computer.
  • embodiments of the present invention may be implemented by software running on a general-purpose computer, dedicated hardware, or a combination of software and hardware, as will be described later. May be.
  • the management information will be described in a table format.
  • the management information does not necessarily have to be expressed in a data structure using a table, and may be expressed in a data structure such as a list, DB, or queue, or otherwise. May be. Therefore, “table”, “list”, “DB”, “queue”, etc. may be simply referred to as “information” to indicate that they do not depend on the data structure.
  • program as a subject (operation subject). Since the program performs processing defined by being executed by the processor using the memory and the communication port (communication control device), the description may be given with the processor as the subject. Part or all of the program may be realized by dedicated hardware, or may be modularized. Various programs may be installed in each computer by a program distribution server or a storage medium.
  • FIG. 1 is an explanatory diagram showing an outline of the present embodiment.
  • the information processing system includes at least one storage system 1 and at least one host computer 2.
  • the storage system 1 and the host computer 2 may be connected by a communication path using, for example, an IP (Internet Protocol) network, a LAN (Local Area Network), an FC-SAN (Fibre Channel-Storage Area Network), or the like.
  • IP Internet Protocol
  • LAN Local Area Network
  • FC-SAN Fibre Channel-Storage Area Network
  • the host computer 2 is configured as a backup server, for example, and includes a backup program 2A and backup data 2B.
  • the backup program 2A is a computer program for creating a backup of the backup data 2B regularly or irregularly.
  • the configuration of the storage system 1 will be described.
  • the storage system 1 illustrated in FIG. 1 includes, for example, a data duplication determination unit 1A for determining data duplication and a storage unit 1B.
  • the data duplication determination unit 1A includes a plurality of determination units J1 to J4, a plurality of tables T1C to T3, and a pool 4.
  • the storage system 1 manages backup data (also called user data or user file) 2B received from the host computer 2 by dividing it into a plurality of chunks.
  • the data size of the chunk is variable, and the chunk size is appropriately set according to the data pattern.
  • a hash value can be obtained by inputting chunk data into a predetermined hash function.
  • the hash value is used as an example of identity guarantee data for guaranteeing the identity of chunk data.
  • identity guarantee data is also called a fingerprint and may be abbreviated as FP.
  • the storage system 1 generates a chunk data set DS by grouping a plurality of chunks.
  • the storage system 1 manages chunk data in units of chunk data sets.
  • the storage system 1 can reconstruct user data (backup data) by combining chunk data distributed in a plurality of chunk data sets in a predetermined order.
  • the first management table T1 manages each chunk data stored in the storage unit 1B in association with the FP and storage location information indicating a data storage location.
  • the first management table T1 is prepared for each chunk data set and is stored in the storage unit 1B.
  • the recently used first management table T1 is transferred from the storage unit 1B to the memory and stored.
  • transferring and storing the first management table T1C in a memory (for example, cache memory or system memory) used by the data duplication determination unit 1A is expressed as “cache the first management table T1”.
  • the data duplication determination unit 1A executes a first determination J1 to be described later using the first management table T1C placed in the memory.
  • the second management table T2 is a table created based on the FP of each chunk data stored in the storage unit 1B.
  • the second management table T2 indicates that the chunk data is stored in the storage unit 1B with a predetermined reliability. It shows with.
  • the second management table T2 can be configured like a Bloom filter.
  • a Bloom filter can be generated by inputting the chunk data stored in the storage unit 1B to a predetermined number of hash functions, obtaining hash values, and turning on the bits at the positions indicated by the hash values. For example, when chunk data having three hash values “1”, “3”, and “4” is registered in the Bloom filter, the Bloom filter changes from the initial value “0000000...” To “1011000. Thus, by turning on the bit at the position corresponding to the hash value of each chunk data in the bit string of the Bloom filter, it is possible to obtain a Bloom filter for determining the presence of the chunk data.
  • the Bloom filter when all the bits corresponding to each hash value (FP) of the chunk data to be investigated are turned on, there is a possibility that the chunk data to be examined exists in the storage unit 1B above a certain value. .
  • the certainty of the possibility can be calculated from the number of hash functions and the number of bits of the Bloom filter.
  • the probability that the determination is wrong while determining that the chunk data to be investigated exists, that is, the false positive is about several percent to several tens percent.
  • the chunk data to be examined is stored in the storage unit 1B. It has not been. In that case, the probability that the chunk data to be investigated does not exist in the storage unit 1B is 100%.
  • the third management table T3 is a table for managing a plurality of chunk data sets DS formed by grouping each chunk data stored in the storage unit 1B.
  • the third management table T3 manages the FP for predetermined chunk data representing the chunk data set.
  • the first two chunks of the user file, the first two chunks of the chunk data set (also referred to as a container), the nth chunk counted from the immediately preceding representative chunk, etc. are represented as representative chunks. You can register as “A” and “B” indicated by thick black frames on the lower side of FIG. 1 are examples of representative chunks.
  • the data duplication judgment unit 1A makes the judgment in a plurality of stages J1 to J4 described below.
  • the first determination unit J1 determines whether the FP of the target chunk data included in the received data is stored in the first management table T1C stored in the memory. When it is determined that the FP of the target chunk data is stored in the first management table T1C, the first determination unit J1 determines that the target chunk data is stored in the storage unit 1B. The determination result that the data is stored is expressed as “existing” in FIG. When the determination result of the first determination unit J1 is “none”, that is, when the FP of the target chunk data is not stored in the first management table T1C, the process proceeds to the second determination J2. In the following description, the fact that the chunk data FP is stored in a table or the like may be expressed as “the chunk data FP is registered in the table or the like”.
  • the second determination unit J2 determines whether the second management table indicates that the target chunk data is stored in the storage unit 1B. When the second management table T2 does not indicate that the target chunk data is stored in the storage unit 1B, it is determined that the target chunk data is new chunk data. New chunk data is stored in the storage unit 1B, and the values of predetermined items in the management tables T1 to T3 are updated.
  • the third determination unit J3 determines whether the FP of the target chunk data is stored in the third management table T3. As described above, the third management table T3 stores only the FP of a predetermined chunk (representative chunk) among the chunks in the chunk data set. When the FP of the target chunk data is stored in the third management table T3, it can be determined that the target chunk data is stored in the storage unit 1B.
  • the target chunk data (may be referred to as reserved chunk data) is pooled. 4 memorize.
  • the FP of the target chunk data is not found in the third management table T3. This means that the target chunk is not a representative chunk. It is likely to indicate that it is a chunk. Therefore, in this case, in this embodiment, it is temporarily suspended to determine that the target chunk data is new chunk data, and wait for a re-examination opportunity.
  • the fourth determination unit J4 determines again whether the same data exists for the target chunk data stored in the pool 4.
  • the activation timing of the fourth determination unit J4 is a data overlap determination time for other target chunk data.
  • the data duplication determination unit 1A stores the first management table corresponding to the other target chunk data in the memory. Transfer to and store.
  • the fourth determination unit J4 when the third determination unit J3 determines that the FP of the other target chunk data is stored in the third management table T3, the FP of the target chunk data temporarily stored in the pool 4 Is stored in the first management table T1C on the memory.
  • the data duplication determination unit 1A deletes the target chunk data of the pool 4 from the pool 4.
  • the fourth determination unit J4 determines that the FP of the target chunk data is not stored in the first management table T1C
  • the target chunk data temporarily stored in the pool 4 is stored in the storage unit 1B. It is determined that the new chunk data has not been received.
  • the data duplication determination unit 1A stores the target chunk data in the storage unit 1B, and deletes the target chunk data from the pool 4.
  • the data duplication determination unit 1A treats the target chunk data temporarily stored in the pool 4 as new chunk data and stores it in the storage unit 1B. .
  • the target chunk data stored in the storage unit 1B is deleted from the pool 4.
  • data duplication determination can be performed at high speed by storing only the FP of the representative chunk of the chunk data set in the third management table T3. Furthermore, according to the present embodiment, target chunk data for which no FP is stored in the third management table T3 is not immediately determined as new chunk data, but is temporarily stored in the pool 4. In the present embodiment, when the first management table T1C on the memory is updated, it is determined whether the same data as the target chunk data in the pool 4 exists using the first management table T1C. Therefore, according to the present embodiment, it is possible to achieve both high speed and accuracy of the data duplication determination process.
  • the target chunk data is stored data based on the FP stored in the first management table T1C on the memory (J1). Further, in the present embodiment, when the FP of the target chunk data is not stored in the first management table T1C on the memory, the target chunk data is already stored using the second management table T2 configured as a Bloom filter. Judgment is made (J2).
  • the second management table T2 of the present embodiment reflects not only the FP of the representative chunk but also the FPs of other chunks.
  • the second management table T2 that can indicate the existence possibility for all chunk data.
  • the second management table T2 indicates the presence of the same data as the target chunk data, it is determined whether the FP of the target chunk data is stored in the third management table T3 (J3).
  • Judgment J1 and J2 can be performed at high speed because the table size is relatively small and exists in the memory. Since only the FP of the representative chunk is registered in the third management table T3, the size of the third management table T3 can be made smaller than when all the chunk data FPs are registered in the third management table T3. For this reason, the process of the 3rd determination part J3 can be performed at high speed. Therefore, in the present embodiment, the processing speed of data duplication determination can be increased.
  • the determination of the target chunk data is temporarily suspended and stored in the pool 4.
  • the process waits for the first management table T1C in the memory to be updated, and determines whether the target chunk data in the pool 4 has been stored using the updated first management table T1C.
  • the re-matching process (process for comparing the data stored in the storage unit 1B and the target chunk data) is executed at another timing for the target chunk data for which the temporary determination is suspended. Therefore, stored data can be detected with high accuracy, and duplicate data can be eliminated.
  • the second determination J2 removes the target chunk data that may not have duplicate data, so the pool 4 can be used efficiently, and unnecessary redetermination is suppressed. it can.
  • chunk data may be abbreviated as data.
  • the first embodiment will be described with reference to FIGS. First, the correspondence with the embodiment shown in FIG. 1 will be described.
  • the storage system 10 is in the storage system 1, the host computer 20 is in the host computer 2, the communication path CN is in the communication path 3, the storage unit 120 is in the storage unit 1B, and the chunk pool 134 as a “temporary storage unit” is in the pool 4.
  • the chunk data set index 132 corresponds to the first management table T1
  • the Bloom filter 133 corresponds to the second management table T2
  • the chunk index 136 corresponds to the third management table T3
  • the chunk data set 137 corresponds to the chunk data set DS.
  • the information processing system shown in FIG. 2 includes at least one storage system 10 and at least one host computer 20 as described in FIG.
  • the storage system 10 and the host computer 20 are connected via a communication path CN so that bidirectional communication is possible.
  • the host computer 20 is configured as a backup server, for example.
  • the host computer 20 includes a storage device for storing the backup application 21 and the backup data 22, a microprocessor for executing the backup application 21, and a communication device for communication with the storage system 10 (both not shown).
  • An application is an abbreviation for an application program.
  • the storage system 10 is a system for storing backup data of the host computer 20, and has a function of detecting and removing duplicate data when storing backup data.
  • the storage system 10 includes, for example, a plurality of nodes 110 and at least one storage unit 120 used jointly by the plurality of nodes 110.
  • the function of detecting and eliminating duplicate data may be provided in the storage system 10 as shown in FIG. 2 or may be provided in an apparatus different from the storage system 10.
  • the storage unit 120 provides a storage area to the storage system 10.
  • the storage unit 120 includes a plurality of storage devices 121 and at least one control device 122 for controlling the plurality of storage devices 121.
  • the control device 122 includes at least one communication port 123.
  • the control device 122 is connected to at least one node 110 via the communication port 123 so as to be capable of bidirectional communication.
  • each node 110 can communicate with a plurality of control devices 122 via different communication paths. Therefore, each node 110 can access the storage device 121 in the storage unit 120 using the other communication route and the other control device 122 even when a failure occurs in one communication route or one control device 122. Can do.
  • the storage device for example, various storage devices that can read and write data such as a hard disk device, a semiconductor memory device, an optical disk device, and a magneto-optical disk device can be used.
  • a hard disk device for example, a FC (Fibre Channel) disk, a SCSI (Small Computer System Interface) disk, a SATA disk, an ATA (AT Attachment) disk, a SAS (Serial Attached SCSI) disk, or the like can be used.
  • FC Fibre Channel
  • SCSI Serial Computer System Interface
  • SATA Serial Advanced Technology Attachment
  • SAS Serial Attached SCSI
  • various storage devices such as flash memory, FeRAM (Ferroelectric Random Access Memory), MRAM (Magnetoresistive Random Access Memory), phase change memory (Ovonic Unified Memory), RRAM (registered trademark) can be used. Further, for example, a configuration in which different types of storage devices such as a flash memory device and a hard disk device are mixed may be used.
  • a logical volume that is a logical storage area can be created with an arbitrary size.
  • data can be stored in a logical volume in a redundant configuration such as RAID (Redundant Arrays of Inexpensive Disks) 1, RAID 5, and RAID 6.
  • RAID Redundant Arrays of Inexpensive Disks
  • a file area 124 is provided in a storage area formed by a plurality of storage devices 121.
  • a content management table 135, a chunk index 136, a chunk data set index 132, a chunk data set 137, a stub file 138, and the like are stored.
  • the configuration of the node 110 will be described.
  • the node 110 is a computer device including a microprocessor 111, a memory 112, and a communication port 113, for example.
  • the memory 112 shown in the figure includes a system memory, a cache memory, an auxiliary storage device, and the like.
  • the memory 112 stores, for example, a file system management unit 130, a deduplication program 131, a chunk data set index 132C, a bloom filter 133, a chunk pool 134, and the like.
  • the file system management unit 130 is a computer program that manages the file system 124.
  • the deduplication program 131 is a computer program that detects whether received data (input data) matches data stored in the storage unit 120, eliminates duplicate data, and stores new data in the storage unit 120. .
  • the deduplication program 131 corresponds to the main part of the deduplication unit 1A shown in FIG.
  • a user file as backup data received from the host computer 20 is identified by a content identifier.
  • the user file is managed as a stub file 138 in the file system 124.
  • the stub file 138 has a content identifier and is composed of chunk data stored in a distributed manner in the file system 124.
  • the content management table 135 is provided for each stub file 138 and corresponds to the stub file on a one-to-one basis.
  • the content management table 135 has a content identifier for identifying a stubbed user file, and includes data for managing each chunk constituting the user file.
  • the management data for each chunk includes, for example, a content offset value (Offset), a chunk length (Length), a chunk data set identifier (CDS ID), and a fingerprint (FP).
  • Offset content offset value
  • Length chunk length
  • CDS ID chunk data set identifier
  • FP fingerprint
  • the content offset value indicates the chunk position in the user file.
  • the chunk length indicates the data size of the chunk.
  • the chunk data set identifier is information for identifying a chunk data set that is managed by grouping chunks.
  • the fingerprint (FP) is information for specifying a chunk in the chunk data set specified by the chunk data set identifier.
  • the chunk data set (CDS) 137 manages chunk data in groups, and has an identifier for identifying the chunk data set.
  • the chunk data set 137 can also be referred to as a container that accommodates a plurality of chunks.
  • the chunk data set 137 includes, for example, a plurality of chunks specified from a set of chunk data length (Length) and chunk data.
  • the chunk data set index (CDS IDX) 132 is information for managing the chunk data set 137 and has a chunk data set identifier.
  • the CDS IDX 132 is provided for each chunk data set, and corresponds to the chunk data set 137 on a one-to-one basis.
  • the CDS IDX 132 manages the FP of the chunk data, the offset value indicating the position of the chunk data in the chunk data set, and the chunk data length in association with each chunk data included in the chunk data set.
  • the chunk index 136 is information for managing representative chunk data selected based on a predetermined standard among all chunk data managed by the storage system 10.
  • the chunk index 136 manages, for each representative chunk, the FP of representative chunk data and a chunk data set identifier for specifying the chunk data set 137 to which the representative chunk belongs in association with each other.
  • the processing target chunk data is registered in the chunk index 136 as a representative chunk.
  • the CDS IDX 132 based on the chunk data set identifier associated with the representative chunk, all other chunk data included in the chunk data set 137 to which the representative chunk belongs can be detected.
  • FIG. 4 illustrates a case where the first generation backup data received from the host computer 20 is stored in the storage unit 120 and then the second generation backup data is received from the host computer 20.
  • the storage system 10 stores, in the storage unit 120, data other than data common to the first generation backup data among the second generation backup data.
  • data common to the first generation backup data can be replaced with a chunk data set identifier and FP for accessing the common data.
  • the first generation backup data is shown in the first line L1 in FIG.
  • the first generation backup data is composed of a plurality of chunks from “A” to “X”, and the data of each chunk is new to the storage system 10. Accordingly, all the first generation backup data is stored in the storage unit 120 of the storage system 10.
  • the second line L2 shows how the first generation backup data is divided into two chunk data sets 137 and stored in the storage system 10.
  • the first chunk data set CDS1 contains data of chunks “A” to “L”.
  • the second chunk data set CDS2 accommodates data from chunks “M” to “X” following the chunk accommodated in the first chunk data set.
  • a plurality of representative chunks are selected in each chunk data set CDS1, CDS2.
  • the first chunk data set CDS1 the first two chunks “A” and “B”, the chunk “G” of a predetermined value (for example, five) counted from the immediately preceding representative chunk “B”, and the chunk “ A chunk “L” having a predetermined value counted from “G” is selected as a representative chunk.
  • the second chunk data set CDS2 “M”, “N”, “S”, and “X” are selected as representative chunks according to the same criteria as described above.
  • the setting contents of the chunk index 136 are shown in the fourth line L4.
  • the FP of each representative chunk selected in the second row L2 and the third row L3 is registered in the chunk index 136 in association with the identifier of the chunk data set to which each representative chunk belongs.
  • an identifier “C1” that identifies the first chunk data set CDS1 is stored in association with the FP of the representative chunk “A”.
  • the FPs of the representative chunks “B”, “G”, and “L” are associated with the identifier “C1” of the first chunk data set CDS1 and stored in the chunk index 136.
  • the FP of each representative chunk “M”, “N”, “S”, “X” and the identifier “C2” of the second chunk data set CDS2 are associated with each other. And stored in the chunk index 136.
  • the fifth line L5 indicates the registration status of chunk data in the Bloom filter 133.
  • bits corresponding to a predetermined number of hash values respectively obtained from all chunk data are turned on. That is, all the chunk data managed by the storage system 10 is reflected in the Bloom filter 133.
  • the second generation backup data is shown in the sixth line L6.
  • the second generation backup data shown in FIG. 4 includes chunks “A” to “E”, “H” to “L”, “O” to “S”, and “V” to the first generation backup data. Contains “X”. Further, as shown by the white arrows, the second generation backup data is new chunk data “f”, “g”, “m”, “n”, “t”, “t” different from the first generation backup data. u "is also included.
  • the detection of duplicate data will be described by dividing the second generation backup data into chunk data “A” to “L” in the first half and chunk data “m” to “X” in the second half.
  • the first chunk data “A” of the second generation backup data becomes the first target chunk data, and it is determined whether duplicate data exists.
  • the FP of the target chunk data “A” is stored in the chunk index 136 as a representative chunk.
  • the presence of the target chunk data “A” is stored in the Bloom filter 133. Therefore, even if the FP of the target chunk data “A” is not stored in the CDS IDX 132C on the memory 112, the storage system 10 determines that the target chunk data “A” has been stored by using the chunk index 136. it can.
  • the storage system 10 acquires the chunk data set identifier (CDS ID) associated with the FP of the target chunk data “A” from the chunk index 136.
  • the storage system 10 stores the chunk data set having the chunk data set identifier in the memory 112.
  • the CDS IDX 132C to which the first target chunk data “A” belongs is stored in the memory 112. Therefore, the storage system 10 can determine that the other chunk data “B” to “E” belonging to the same chunk data set CDS1 as the first target chunk data “A” has been stored by using the CDS IDX 132C. .
  • the storage system 10 After determining that the chunk data “E” has been stored, the storage system 10 selects the next chunk data “f” as the chunk data to be processed.
  • the FP of the target chunk data “f” is not stored in the chunk data index 132C on the memory 112, and there is no presence of the chunk data “f” from the Bloom filter 133. Furthermore, since the target chunk data “f” is not a representative chunk, the FP of the target chunk data “f” is not stored in the chunk index 136.
  • the target chunk data “f” is determined to be new chunk data, stored in a new chunk data set (not shown), and stored in the storage unit 120.
  • the FP of the target chunk data “f” is stored in the chunk data set 137.
  • the target chunk data “f” is also reflected in the Bloom filter 133.
  • bits at positions corresponding to a plurality of hash values obtained from the target chunk data “f” are turned on.
  • Chunk data “g” is selected as the target chunk data following chunk data “f”. Since the target chunk data “g” is processed in the same manner as the chunk data “f”, description thereof is omitted.
  • the storage system 10 determines that the chunk data “g” is new chunk data and stores the chunk data “g”, then selects the chunk data “H” as the target chunk data, and determines the presence or absence of duplication.
  • the storage system 10 determines that the target chunk data “H” has been stored.
  • the other chunk data “I”, “J”, “K”, and “L” following the chunk data “H” are also determined to have been stored by the CDS IDX 132C in the same manner as described for the processing of the chunk data “H”. Is done.
  • the FP of the target chunk data “m” that exceeds the boundary CB of the chunk data set is not stored in the chunk data set to which the first target chunk data “A” belongs.
  • the FP of the target chunk data “m” is not stored in the other CDS IDX 132 or the chunk index 136, and the presence of the chunk data “m” is not registered in the Bloom filter 133.
  • the storage system 10 determines that the target chunk data “m” is new chunk data, and stores it in the storage unit 120.
  • the storage system 10 updates the CDS IDX 132, the Bloom filter 133, and the chunk index 136 for the target chunk data “m”.
  • the processing is performed as described for the chunk data “m”.
  • the CDS IDX 132C stored in the memory 112 is the CDS IDX 132C for the first chunk data set CDS1. Therefore, the FP of the target chunk data “O” is not stored in the CDS IDX 132C on the memory 112.
  • the target chunk data “O” is stored in the storage unit 120 as a part of the first generation backup data, as indicated by the third line L3. All chunk data managed by the storage system 10 is reflected in the Bloom filter 133.
  • the Bloom filter 133 indicates that the target chunk data “O” exists in the storage system 10 with a certainty or more certainty. Even though the Bloom filter 133 indicates that the target chunk data “O” has been stored, the FP of the target chunk data “O” is not registered in the chunk index 136.
  • the FP of the target chunk data “O” is stored in the CDS IDX 132 in the storage unit 120. That is, since the target chunk data “O” is not selected as the representative chunk and is not registered in the chunk index 136, it is highly likely that it is registered in the CDS IDX 132 as normal chunk data.
  • the target chunk data “O” is temporarily stored in the chunk pool 134, and the final determination is suspended.
  • the chunk data “P”, “Q”, and “R” following the chunk data “O” are also processed in the same manner as described for the chunk data “O”. Stored in the pool 134.
  • the chunk data “S” is selected as the target chunk data.
  • the FP of the target chunk data “S” is also not stored in the CDS IDX 132C on the memory 112. This is because the target chunk data “S” is chunk data belonging to the second chunk data set CDS2, and the CDS IDX 132 corresponding to the second chunk data set CDS2 has not yet been transferred to the memory 112.
  • the Bloom filter 133 reflecting the existence of all chunk data managed by the storage system 10 indicates that the target chunk data “S” has been stored with a certain degree of certainty.
  • the target chunk data “S” is selected as a representative chunk because it is in a predetermined position of the second chunk data set CDS2.
  • the chunk index 136 stores the FP of the target chunk data “S”.
  • the storage system 10 knows that the target chunk data “S” is existing data stored in the storage unit 120 by referring to the chunk index 136.
  • the CDS IDX 132 related to the chunk data set 137 to which the representative chunk data belongs is transferred to the memory 112. Is memorized.
  • the storage system 10 uses the update of the CDS IDX 132 on the memory 112 as a trigger to determine whether the chunk data pending determination stored in the chunk pool 134 has been stored.
  • the storage system 10 determines that the chunk data “O” to “R” in the chunk pool 134 is the stored chunk data.
  • the chunk data “t” and “u” following the chunk data “S” are determined to be new chunk data and stored in the chunk data set as described in the chunk data “m”.
  • the chunk data “V” to “X” following the chunk data “u” are determined to be existing chunk data because their FP is stored in the CDS IDX 132C on the memory 112.
  • the 8th line L8 shows the determination result of data duplication by the storage system 10.
  • the determination result “T” indicates that the data overlaps with existing data.
  • the determination result “F” indicates that the data does not overlap with existing data.
  • the determination result for chunk data other than the chunk data “O” to “R” stored in the chunk pool 134 has no problem, and thus description thereof is omitted.
  • the chunk data “O” to “R” stored in the chunk pool 134 can be handled as new chunk data when it is determined that the FP is not stored in the chunk index 136.
  • the determination result is “F” surrounded by a dotted line in the eighth row L8.
  • the chunk data “O” to “R” stored in the chunk pool 134 is data stored in the storage system 10, and the determination result “F” is incorrect.
  • the duplication determination may be erroneously performed on the target chunk data that indicates the possibility that the Bloom filter 133 exists but is not found in the chunk index 136, so that data duplication is performed. Hold the decision.
  • the CDS IDX 132C on the memory 112 is updated, it is determined using the new CDS IDX 132C whether or not the chunk data stored in the chunk pool 134 has been stored. Therefore, in this embodiment, it is possible to prevent erroneous determination of stored data as new data and to eliminate duplicate data.
  • Fig. 5 shows the outline of the data duplication judgment processing method.
  • the subject that executes the data deduplication processing is the deduplication program 131 in the node 110 provided in the storage system 10, and the deduplication program 131 is executed by the microprocessor 111. Therefore, the data duplication determination process may be any of a storage system, a node, a microprocessor, and a program.
  • the deduplication program 131 will be described as an operation subject.
  • This process starts when the node 110 receives data (S1).
  • the program 131 first searches for the FP of the target chunk data in the CDS IDX 132C on the memory 112 (S2).
  • step S3 is definite.
  • the program 131 determines that the FP of the target chunk data does not exist in the CDS IDX 132C on the memory 112 (S2: does not exist)
  • the program 131 searches the Bloom filter 133 for the presence of the target chunk data (S4).
  • the program 131 determines that the Bloom filter 133 does not indicate the presence of the target chunk data (S4: does not exist)
  • the program 131 determines that the target chunk data is not stored in the storage system 10 (S5). This determination result is definite.
  • the program 131 determines that the Bloom filter 133 indicates the presence of the target chunk data (S4: may exist)
  • the program 131 searches the chunk index 136 that manages the FP of the representative chunk (S6).
  • the program 131 determines that the FP of the target chunk data is not stored in the chunk index 136 (S6: does not exist)
  • the program 131 suspends the determination of the target chunk data (S7) and stores it in the chunk pool 134 (S8). .
  • the program 131 treats the target chunk data as new chunk data for the time being, but the determination is not fixed, and processing when the chunk data is new chunk data (storage in the storage unit 120, update of tables, etc.) ) Is not yet performed at the time of steps S7 and S8.
  • the program 131 determines that the FP of the target chunk data is stored in the chunk index 136 (S6: exists), the program 131 determines that the target chunk data is existing chunk data (S9). This determination result is definite.
  • the program 131 determines that the FP of the target chunk data exists in the chunk index 136 (S9), the program 131 transfers the CDS IDX 132 corresponding to the chunk data set 137 to which the target chunk data belongs to the memory 112 and stores it (S10).
  • the program 131 searches whether or not the FP of the target chunk data stored in the chunk pool 134 is stored in the updated CDS IDX 132C (S11).
  • the program 131 determines that the FP of the target chunk data in the chunk pool 134 is stored in the updated CDS IDX 132C (S11: exists), the program 131 determines that the target chunk data is existing chunk data ( S12). This judgment is definite.
  • the program 131 determines that the FP of the target chunk data in the chunk pool 134 is not stored in the updated CDS IDX 132C (S11: does not exist), the program 131 determines that the target chunk data is new chunk data ( S13). This judgment is definite.
  • the program 131 determines that the data is new data (new chunk data) in step S5 or step S13, the program 131 stores the new chunk data in the chunk data set 137. Further, the program 131 updates the CDS IDX 132, the Bloom filter 133, and the chunk index 136 to the latest values (S14).
  • FIG. 6 is a flowchart of a process for determining data duplication.
  • Step S21 is step S1
  • step S22 is step S2
  • determination "YES” in step S23 is step S3
  • step S24 is step S4
  • determination "YES” in step S25 is step S5, step S26 and step S26.
  • Step S27 is Step S14
  • Step S28 is Step S6, Step S29 is “NO” is Step S7
  • Step S37 is Step S8, Step S29 is “YES” is Step S9
  • Step S30 is Step S30.
  • steps S31 to S36 correspond to step S11
  • the determination “YES” in step S33 corresponds to step S12
  • the determination “NO” in step S33 corresponds to step S13, respectively.
  • the program 131 starts this processing (S21).
  • the program 131 acquires the FP of the target chunk data, searches the CDS IDX 132C on the memory 112 with the FP (S22), and determines whether the FP of the target chunk data exists in the CDS IDX 132C on the memory 112 ( S23). If the program 131 determines that the FP of the target chunk data exists in the CDS IDX 132C (S23: YES), the process ends.
  • the program 131 determines that the FP of the target chunk data does not exist in the CDS IDX 132C (S23: NO)
  • the program 131 searches the Bloom filter 133 (S24), and determines whether the Bloom filter 133 indicates the presence of the target chunk data. (S25).
  • the Bloom filter 133 turns on predetermined bits corresponding to a plurality of hash values obtained by inputting chunk data to a plurality of hash functions. Therefore, if the target chunk data exists in the storage system 10, all the predetermined bits are always turned on. If any one of the plurality of predetermined bits is off, the target chunk data does not exist in the storage system 10.
  • the Bloom filter 133 indicates the presence of the target chunk data, it indicates the possibility of existence with a predetermined probability.
  • the false positive meaning that the target chunk data exists but does not actually exist varies depending on the configuration of the Bloom filter 133, but is about several percent to several tens percent, for example. Therefore, the predetermined probability is (1-false positive rate).
  • the program 131 executes a representative chunk registration process described later ( S26). After registering the target chunk data in the content management table 135 (S27), the program 131 ends this processing.
  • the program 131 searches whether the FP of the target chunk data is registered in the chunk index 136 (S28). The program 131 determines whether the FP of the target chunk data is registered in the chunk index 136 (S29).
  • the program 131 When determining that the FP of the target chunk data is registered in the chunk index 136 (S29: YES), the program 131 transfers the CDS IDX 132C corresponding to the CDS 137 to which the target chunk data belongs from the storage unit 120 to the memory 112, It is stored in the memory 112 (S30).
  • the program 131 executes the following steps S32 to S35 for all the target chunk data for which duplication judgment is suspended in the chunk pool 134 (S31).
  • the program 131 searches the CDS IDX 132C with the FP of the target chunk data in the chunk pool 134 (S32), and determines whether the FP of the target chunk data is registered in the CDS IDX 132C on the memory 112 (S33).
  • step S34 When the program 131 determines that the FP of the target chunk data is not registered in the CDS IDX 132C (S33: NO), the program 131 executes a representative chunk registration process (S34) described later.
  • the process shown in step S34 and the process shown in step S26 are the same.
  • the program 131 registers the target chunk data in the content management table 135 (S35), and selects other chunk data in the chunk pool 134 as the target chunk data. After determining all the chunk data in the chunk pool 134, the program 131 deletes the chunk data from the chunk pool 134, releases the storage area in the chunk pool 134 (S36), and ends this processing.
  • the program 131 re-determines whether each of the target chunk data temporarily stored in the chunk pool 134 is duplicate data, and stores the new chunk data in the storage unit 120. To do.
  • the program 131 determines whether the FP of the target chunk data is not registered in the chunk index 136 (S29: NO).
  • it determines whether the chunk pool 134 is full (S38).
  • the chunk pool 134 being full means that the storage area of the chunk pool 134 has been used up to a predetermined upper limit value.
  • the program 131 ends this process.
  • the program 131 determines that the chunk pool 134 is full (S38: YES)
  • the program 131 executes the following steps S40 to S43 for each chunk data stored in the chunk pool 134 (S39).
  • the program 131 determines that the chunk data in the chunk pool 134 is new chunk data, and stores it in the storage unit 120.
  • the program 131 registers the target chunk data in the chunk pool 134 in the Bloom filter 133 (S40) and stores it in the CDS 137 (S41).
  • the program 131 registers the target chunk data in the CDS IDX 132 (S42), and further registers it in the content management table 135 (S43).
  • the program 131 stores all the chunk data in the chunk pool 134 in the storage unit 120, updates predetermined tables, deletes the chunk data in the chunk pool 134, and saves the storage area of the chunk pool 134. Release (S44).
  • FIG. 7 is a flowchart showing details of the representative chunk registration process (S26, S34) of FIG. This process is executed when new chunk data is stored in the storage unit 120.
  • the program 131 registers new chunk data in the Bloom filter 133 (S51) and stores it in the CDS 137 (S52).
  • the program 131 determines whether the stored target chunk data satisfies a predetermined condition as a representative chunk (S53).
  • the predetermined condition for the representative chunk is, for example, the second chunk from the beginning of the user file, the second chunk from the beginning of the CDS 137, or a predetermined number of counts from the immediately preceding representative chunk. The condition that it is a chunk of.
  • the program 131 determines that the target chunk data satisfies the condition of the representative chunk data (S53: YES)
  • the program 131 registers the target chunk data in the CDS IDX 132 (S54).
  • the node 110 When the node 110 receives a read command from the host computer 20 (S61: YES), it determines whether the file specified by the read command has been subjected to deduplication processing (S62). If the file specified by the read command is a stub file, it can be determined that duplication processing has been completed.
  • the node 110 determines that the file specified by the read command has not been subjected to deduplication processing (S62: NO), the file specified by the read command is read from the storage unit 120 and transferred to the memory 112 (S63). Thereafter, the node 110 transmits the file specified by the read command to the host computer 20 and ends this processing.
  • the node 110 determines that the file specified by the read command has been deduplicated (S62: YES)
  • the node 110 refers to the content management table 135 corresponding to the file (stub file) specified by the read command. (S64).
  • the node 110 identifies a plurality of chunk data for constructing the file specified by the read command, and transfers the data from the storage unit 120 to the memory 112 (S65).
  • the node 110 reconstructs a file from each chunk data collected on the memory 112 (S66), transmits the reconstructed file to the host computer 20, and ends this processing.
  • target chunk data for which no FP is stored in the chunk index 136 is not immediately determined as new chunk data, but is temporarily stored in the chunk pool 134.
  • the CDS IDX 132C on the memory 112 is updated, the CDS IDX 132C is used to determine again whether or not there is duplication in the target chunk data in the chunk pool 134. Therefore, according to the present embodiment, it is possible to achieve both high speed and accuracy of the data duplication determination process.
  • the target chunk data indicating the presence of the Bloom filter 133 is not a representative chunk, although the determination using the CDS IDX 132C on the memory 112 does not exist, the target chunk data is temporarily determined. Hold it and store it in the chunk pool 134.
  • the process waits for the update of the CDS IDX 132C on the memory 112, and determines whether the target chunk data in the chunk pool 134 has been stored using the updated CDS IDX 132C.
  • the target chunk data for which the temporary determination is suspended is re-determined at another timing. Therefore, the presence or absence of data duplication can be accurately detected and eliminated.
  • the chunk pool 134 can be used efficiently.
  • the chunk data in the chunk pool 134 is treated as new data and stored in the storage unit 120. Therefore, it is possible to prevent the data duplication determination from being delayed more than necessary, and to effectively use the limited size chunk pool 134 to increase the data duplication elimination efficiency.
  • 1 storage system
  • 1A deduplication unit
  • 1B storage unit
  • T1C first management table
  • T2 second management table
  • T3 third management table
  • DS data set
  • 2 host computer
  • 10 Storage system
  • 20 Host computer
  • 110 Node
  • 112 Memory
  • 120 Storage unit
  • 134 Chunk pool
  • 135 Content management table
  • 136 Chunk index

Abstract

 正確かつ効率的にデータの重複を検出すること。 ストレージシステム1の有するデータ重複判定部1Aは、受信データに含まれる対象チャンクデータが記憶済みであると第2管理テーブルT2が示す場合であって、かつ、対象チャンクデータの同一性を保証するデータ(フィンガープリント:FP)が第3管理テーブルT3に記憶されていない場合に、対象チャンクデータをプール4に一時保存する。重複判定部1Aは、対象チャンクと異なる他の対象チャンクデータが記憶済みであると第2管理テーブルが示す場合であって、かつ、他の対象チャンクデータのFPが第3管理テーブルに記憶されていると判定した場合に、プールに保存されているチャンクデータが記憶済みであるか再判定する。

Description

データ重複検出システムおよびデータ重複検出システムの制御方法
 本発明は、データ重複検出システムおよびデータ重複検出システムの制御方法に関する。
 情報処理システムが取り扱うデータ量は年々増大するため、それらデータをバックアップするためのストレージシステムも年々大容量化している。バックアップデータは、ストレージシステムに記憶済みのデータと同一のデータを含んでいることが多い。このため、バックアップデータの中から重複データを排除すれば、ストレージシステムの有する記憶資源を有効に利用することができる。
 システム内に同一セグメントが存在するかを調べるために、(1)Memory Buffer IndexにSegment Finger Printが含まれているか、(2)Bloom Filter fo IndexにSegment Finger Printが含まれているか、(3)IndexにSegment Finger Printが含まれているか、という3段階で検索する従来技術が知られている(特許文献1)。
米国特許出願公開第2011/0225191号明細書
 全てのチャンクデータのFinger Printをチャンクインデックスに含めてしまうと、チャンクインデックスが管理するFinger Printの数が増えるため、検索に時間がかかる。
 検索時間を短縮するために、全てのチャンクデータのFinger Printを管理するのではなく、代表チャンクデータについてのFinger Printだけを管理する方法も考えられる。しかし、その場合は、或る一つの代表チャンクデータと他の一つの代表チャンクデータとの間に存在するチャンクデータについてデータの同一性を正確に判定することができない。つまり、代表チャンクデータ間のチャンクデータであって、Finger Printを管理していないチャンクデータについては、そのチャンクデータと同一のデータが存在する場合であっても、同一データであると判別することができない。従って、代表チャンクデータのFinger Printだけをチャンクインデックスで管理する方法では、処理速度が向上する代わりに、重複データの検出率、重複データの排除率が低下する。
 本発明は、上記問題に鑑みてなされたもので、その目的は、重複データを精度良く検出することのできるデータ重複検出システムおよびデータ重複検出システムの制御方法を提供することにある。
 上記課題を解決すべく、本発明に従うデータ重複検出システムは、データの重複を検出するためのデータ重複検出システムであって、受信データを分割して形成される複数のチャンクデータのそれぞれについて、記憶済みのチャンクデータと重複するかを判定するデータ重複判定部と、データ重複判定部によって重複しないと判定されたチャンクデータを記憶する記憶部と、記憶部に記憶されている各チャンクデータについて、データの同一性を示す同一性保証データとデータの格納先を示す格納先情報とを対応付けて管理する第1管理テーブルと、記憶部に記憶されている各チャンクデータの同一性保証データに基づいて作成される第2管理テーブルであって、チャンクデータが記憶部に記憶されていることを所定の信頼性の下で示す第2管理テーブルと、記憶部に記憶されている各チャンクデータをグループ化して形成される複数のチャンクデータセットを管理する第3管理テーブルであって、複数のチャンクデータセットをそれぞれ代表する所定のチャンクデータについての同一性保証データを管理する第3管理テーブルとを備え、データ重複判定部は、受信データに含まれる対象チャンクデータが記憶部に記憶されていると第2管理テーブルが示す場合であって、かつ、対象チャンクデータの同一性保証データが第3管理テーブルに記憶されていないと判定した場合に、対象チャンクデータを一時的に保存するための一時保存部に保存し、対象チャンクと異なる他の対象チャンクデータが記憶部に記憶されていると第2管理テーブルが示す場合であって、かつ、他の対象チャンクデータの同一性保証データが第3管理テーブルに記憶されていると判定した場合に、一時保存部に保存された対象チャンクデータの同一性保証データが第1管理テーブルに記憶されているか判定し、一時的保存部に保存された対象チャンクデータの同一性保証データが第1管理テーブルに記憶されていると判定した場合、一時的保存部に保存された対象チャンクデータは記憶部に記憶済みであると判定し、一時的保存部に保存された対象チャンクデータの同一性保証データが第1管理テーブルに記憶されていないと判定した場合、一時的保存に保存された対象チャンクデータは記憶部に記憶されていないと判定する。
 第1管理テーブルは複数のチャンクデータセット毎に用意してもよく、データ重複判定部は、他の対象チャンクデータが第3管理テーブルに記憶されていると判定した場合、複数のチャンクデータセット毎の第1管理テーブルのうち他の対象チャンクデータの属するチャンクデータセットに対応する第1管理テーブルに、一時保存部に保存された対象チャンクデータについての同一性保証データが記憶されているかを判定してもよい。
 本発明の更なる特徴は、本明細書の記述および添付図面から明らかになるであろう。また、本発明の様態は、要素、多様な要素の組み合わせ、以降の詳細な記述などから達成され、実現される。
 本明細書の記述は典型的な例示に過ぎず、本発明の特許請求の範囲又は適用例を如何なる意味に於いても限定するものではないことを理解する必要がある。
図1は、本発明の実施形態の概要を示す説明図である。 図2は、情報処理システムの全体構成図である。 図3は、テーブル構造を示す説明図である。 図4は、データ重複を判定する方法の概要を模式的に示す説明図である。 図5は、データ重複を判定する処理の全体図である。 図6は、データ重複を判定する処理の詳細を示すフローチャートである。 図7は、代表チャンクをチャンクインデックス等に登録する処理を示すフローチャートである。 図8は、ホスト計算機からのリードコマンドに応じてデータを再構成する処理を示すフローチャートである。
 以下、図面に基づいて、本発明の実施の形態を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
 本実施形態では、当業者が本発明を実施するのに十分かつ詳細にその説明がなされているが、他の実施例または形態も可能である。本発明の技術的思想の範囲と精神を逸脱することなく、構成または構造の変更、多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述を、これに限定して解釈してはならない。
 さらに、本発明の実施形態は、後述するように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし、専用ハードウェアで実装してもよいし、またはソフトウェアとハードウェアの組み合わせで実装しても良い。
 以後の説明では、管理用の情報をテーブル形式で説明するが、管理用の情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
 以下では「プログラム」を主語(動作主体)として本発明の実施形態における各処理について説明を行う場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
 図1は、本実施形態の概要を示す説明図である。情報処理システムは、少なくとも一つのストレージシステム1と、少なくとも一つのホスト計算機2を備えている。ストレージシステム1とホスト計算機2とは、例えば、IP(Internet Protocol)ネットワーク、LAN(Local Area Network)、FC-SAN(Fibre Channel - Storage Area Network)等を用いた通信経路で接続してもよい。
 先にホスト計算機2について説明する。ホスト計算機2は、例えばバックアップサーバのように構成されており、バックアッププログラム2Aとバックアップデータ2Bを備えている。バックアッププログラム2Aは、定期的にまたは不定期にバックアップデータ2Bのバックアップを作成するためのコンピュータプログラムである。
 ストレージシステム1の構成を説明する。図1に示すストレージシステム1は、例えば、データ重複を判定するためのデータ重複判定部1Aと、記憶部1Bを備える。データ重複判定部1Aは、複数の判定部J1~J4と、複数のテーブルT1C~T3と、プール4を備える。
 ストレージシステム1は、ホスト計算機2から受領するバックアップデータ(ユーザデータ、またはユーザファイルとも呼ぶ)2Bを複数のチャンクに分けて管理する。チャンクのデータサイズは可変であり、データパターンに応じてチャンクサイズが適切に設定される。
 チャンクのデータを所定のハッシュ関数に入力することで、ハッシュ値を得ることができる。本実施形態では、そのハッシュ値を、チャンクデータの同一性を保証するための同一性保証データの一例として使用する。以下、同一性保証データをフィンガープリントとも呼び、FPと略記することもある。或るデータのFPと他のデータのFPとが一致する場合、両方のデータは同一であると判定することができる。
 図1の下側に示すように、ストレージシステム1は、複数のチャンクをグループ化することで、チャンクデータセットDSを生成する。ストレージシステム1は、チャンクデータセットの単位でチャンクデータを管理する。ストレージシステム1は、複数のチャンクデータセットに分散しているチャンクデータを所定の順序で結合することで、ユーザデータ(バックアップデータ)を再構築することができる。
 第1管理テーブルT1は、記憶部1Bに記憶されている各チャンクデータについて、そのFPとデータ格納先を示す格納先情報とを対応付けて管理する。第1管理テーブルT1は、チャンクデータセット毎に用意されており、記憶部1Bに格納されている。チャンクデータセット毎に用意される第1管理テーブルT1のうち、最近使用された第1管理テーブルT1は記憶部1Bからメモリに転送されて記憶される。以下の説明では、データ重複判定部1Aの使用するメモリ(例えばキャッシュメモリ、システムメモリ)に第1管理テーブルT1Cを転送して記憶することを、「第1管理テーブルT1をキャッシュする」と表現する場合がある。データ重複判定部1Aは、メモリに置かれた第1管理テーブルT1Cを用いて、後述する第1判定J1を実行する。
 第2管理テーブルT2は、記憶部1Bに記憶されている各チャンクデータのFPに基づいて作成されるテーブルであって、チャンクデータが記憶部1Bに記憶されていることを所定の信頼性の下で示す。
 第2管理テーブルT2は、ブルームフィルタのように構成することができる。記憶部1Bに記憶されるチャンクデータを所定数のハッシュ関数にそれぞれ入力してハッシュ値を求め、それらハッシュ値の示す位置のビットをオンにすることで、ブルームフィルタを生成することができる。例えば、3つのハッシュ値”1”、”3”、”4”を有するチャンクデータをブルームフィルタに登録すると、ブルームフィルタは初期値「0000000・・・」から「1011000・・・」と変化する。このように、ブルームフィルタのビット列のうち各チャンクデータのハッシュ値に対応する位置のビットをオンにすることで、チャンクデータの存在を判別するためのブルームフィルタを得ることができる。
 ブルームフィルタにおいて、調査対象のチャンクデータの各ハッシュ値(FP)に対応するビットが全てオンになっている場合は、その調査対象のチャンクデータが記憶部1Bに存在する可能性が一定値以上ある。その可能性の確からしさは、ハッシュ関数の数およびブルームフィルタのビット数から算出できる。調査対象のチャンクデータが存在すると判定しながらその判定が誤っている場合の確率、つまり擬陽性は数パーセントないし十数パーセント程度である。
 これに対し、ブルームフィルタにおいて、調査対象のチャンクデータの各ハッシュ値に対応するビットのうちいずれか一つでもオンになっていないビットが有る場合、その調査対象のチャンクデータは記憶部1Bに記憶されていない。その場合、調査対象のチャンクデータが記憶部1Bに存在しない確率は100%である。
 第3管理テーブルT3は、記憶部1Bに記憶されている各チャンクデータをグループ化して形成される複数のチャンクデータセットDSを管理するテーブルである。第3管理テーブルT3は、チャンクデータセットを代表する所定のチャンクデータについてのFPを管理する。第3管理テーブルT3には、例えば、ユーザファイルの先頭の2つのチャンク、チャンクデータセット(コンテナとも呼ぶ)の先頭の2つのチャンク、直前の代表チャンクから数えてn番目のチャンクなどを、代表チャンクとして登録できる。図1の下側に太い黒枠で示す「A」、「B」は代表チャンクの例である。
 データ重複判定部1Aは、重複判定の対象となるデータを受信すると、以下に述べる複数段階J1~J4で判定する。
 第1判定部J1は、メモリに記憶されている第1管理テーブルT1Cに、受信データに含まれる対象チャンクデータのFPが記憶されているか判定する。第1判定部J1は、対象チャンクデータのFPが第1管理テーブルT1Cに記憶されていると判定した場合、対象チャンクデータは記憶部1Bに記憶されていると判定する。記憶済みのデータであるとの判定結果を、図1中では「既存」と表す。第1判定部J1の判定結果が「無し」である場合、つまり対象チャンクデータのFPが第1管理テーブルT1Cに記憶されていない場合は、第2の判定J2に移る。なお、以下の説明では、チャンクデータのFPがテーブル等に記憶されていることを、「チャンクデータのFPがテーブル等に登録されている」と表現する場合がある。
 第2判定部J2は、対象チャンクデータが記憶部1Bに記憶されていることを第2管理テーブルが示しているか判定する。対象チャンクデータが記憶部1Bに記憶されていることを第2管理テーブルT2が示していない場合、対象チャンクデータは新規なチャンクデータであると判定される。新規なチャンクデータは記憶部1Bに記憶され、各管理テーブルT1~T3の所定の項目の値が更新される。
 第2管理テーブルT2が、対象チャンクデータが記憶部1Bに記憶されている可能性があることを示した場合、第3の判定J3に移る。
 第3判定部J3は、対象チャンクデータのFPが記憶部1Bに記憶されていることを第2管理テーブルが示す場合、対象チャンクデータのFPが第3管理テーブルT3に記憶されているか判定する。上述の通り、第3管理テーブルT3には、チャンクデータセット内の各チャンクのうち所定のチャンク(代表チャンク)のFPのみが記憶されている。対象チャンクデータのFPが第3管理テーブルT3に記憶されている場合、対象チャンクデータは記憶部1Bに記憶されていると判定できる。
 これに対し、対象チャンクデータのFPが第3管理テーブルT3に記憶されていないと判定した場合、重複データの有無について判断を一時保留し、対象チャンクデータ(保留チャンクデータと呼んでもよい)をプール4に記憶する。
 対象チャンクデータと同一データの存在が第2管理テーブルT2によって示されているにもかかわらず、対象チャンクデータのFPが第3管理テーブルT3内に見当たらないということは、対象チャンクが代表チャンク以外のチャンクであることを示している可能性が高い。そこで、この場合、本実施形態では、対象チャンクデータが新規チャンクデータであると判定するのを一時保留し、再検査の機会を待つことにしている。
 第4判定部J4は、プール4に記憶された対象チャンクデータについて、同一データが存在するかを再度判定する。第4判定部J4の起動タイミングは、他の対象チャンクデータについてのデータ重複判定時である。
 他の対象チャンクデータのFPが第3管理テーブルT3に記憶されていると第3判定部J3が判定した場合、データ重複判定部1Aは、他の対象チャンクデータに対応する第1管理テーブルをメモリに転送して記憶する。
 第4判定部J4は、他の対象チャンクデータのFPが第3管理テーブルT3に記憶されていると第3判定部J3が判定した場合、プール4に一時的に記憶された対象チャンクデータのFPがメモリ上の第1管理テーブルT1Cに記憶されているか判定する。
 つまり、他の対象チャンクデータについてのデータ重複判定によりメモリ上の第1管理テーブルT1Cが更新された場合、新たにメモリに記憶された第1管理テーブルT1Cに基づいて、判断を保留していた対象チャンクデータについて最終判定を行う。
 対象チャンクデータのFPが第1管理テーブルT1Cに記憶されていると第4判定部J4が判定すると、データ重複判定部1Aは、プール4の対象チャンクデータをプール4から削除する。これに対し、対象チャンクデータのFPが第1管理テーブルT1Cに記憶されていないと第4判定部J4が判定した場合、プール4に一時的に記憶された対象チャンクデータは記憶部1Bに記憶されていない新規チャンクデータであると判定される。データ重複判定部1Aは、対象チャンクデータを記憶部1Bに記憶し、対象チャンクデータをプール4から削除する。
 なお、データ重複判定部1Aは、プール4の使用量が所定の上限値に達した場合、プール4に一時的に記憶されている対象チャンクデータを新規チャンクデータとして扱い、記憶部1Bに記憶する。記憶部1Bに記憶された対象チャンクデータは、プール4から削除される。
 このように構成される本実施形態によれば、チャンクデータセットの代表チャンクのFPのみを第3管理テーブルT3に記憶することで、データ重複判定を高速に行うことができる。さらに、本実施形態によれば、第3管理テーブルT3にFPが記憶されていない対象チャンクデータを直ちに新規チャンクデータと判定するのではなく、いったんプール4に保存する。そして、本実施形態では、メモリ上の第1管理テーブルT1Cが更新された場合に、その第1管理テーブルT1Cを用いて、プール4内の対象チャンクデータと同一データが存在するか判定する。従って、本実施形態によれば、データ重複判定処理の高速性と正確性とを両立させることができる。
 本実施形態では、メモリ上の第1管理テーブルT1Cに記憶されているFPに基づいて対象チャンクデータが記憶済みデータであるか判定する(J1)。さらに、本実施形態では、メモリ上の第1管理テーブルT1Cに対象チャンクデータのFPが記憶されていない場合、ブルームフィルタとして構成される第2管理テーブルT2を用いて、対象チャンクデータが記憶済みであるかを判定する(J2)。本実施形態の第2管理テーブルT2には、代表チャンクのFPだけでなく、それら以外のチャンクのFPも反映される。
 本実施形態では、全チャンクデータについて存在可能性を示すことのできる第2管理テーブルT2を得ることができる。本実施形態では、第2管理テーブルT2によって対象チャンクデータと同一データの存在が示された場合、対象チャンクデータのFPが第3管理テーブルT3に記憶されているか判定する(J3)。
 判定J1、J2は、テーブルサイズが比較的小さく、かつ、メモリ上に存在するため、高速に行うことができる。第3管理テーブルT3には代表チャンクのFPだけを登録するため、全てのチャンクデータのFPを第3管理テーブルT3に登録する場合に比べて、第3管理テーブルT3のサイズを小さくできる。このため、第3判定部J3の処理を高速に行うことができる。従って、本実施形態では、データの重複判定の処理速度を高くすることができる。
 さらに本実施形態では、対象チャンクが代表チャンクではない場合、対象チャンクデータの判断を一時保留して、プール4に記憶する。そして、本実施形態では、メモリ上の第1管理テーブルT1Cが更新されるのを待ち、更新された第1管理テーブルT1Cを用いて、プール4内の対象チャンクデータが記憶済みであるか判定する。本実施形態では、このように、一時判断を保留した対象チャンクデータについて、別のタイミングで再マッチング処理(記憶部1Bに記憶済みのデータと対象チャンクデータを比較する処理)を実行する。従って、記憶済みのデータを精度良く検出することができ、重複したデータを排除することができる。
 さらに、本実施形態では、最初の判定J1において新規データであると判定されたチャンクデータのうち、第2管理テーブルT2によって同一データの存在が示されたチャンクデータだけをプール4に記憶して、再判定の機会を与える。換言すれば、第2判定J2により、重複データが存在する可能性の無い対象チャンクデータを除去するため、プール4を効率的に使用することができ、無駄な再判定が実行されるのを抑制できる。
 本実施形態では、プール4の使用量が上限値に達した場合、プール4に蓄積された対象チャンクデータを新規データとして扱い、記憶部1Bに記憶する。従って、データ重複判定が必要以上に遅れるのを防止し、限られたサイズのプール4を有効に利用して、データ重複の排除効率を高めることができる。以下、本実施形態の一例を説明する。以下の説明ではチャンクデータをデータと略記する場合がある。
 図2~図8を用いて第1実施例を説明する。先に図1に示す実施形態との対応関係を説明する。ストレージシステム10はストレージシステム1に、ホスト計算機20はホスト計算機2に、通信経路CNは通信経路3に、記憶部120は記憶部1Bに、「一時保存部」としてのチャンクプール134はプール4に、チャンクデータセットインデックス132は第1管理テーブルT1に、ブルームフィルタ133は第2管理テーブルT2に、チャンクインデックス136は第3管理テーブルT3に、チャンクデータセット137はチャンクデータセットDSに、対応する。
 図2に示す情報処理システムは、図1で述べたと同様に、少なくとも一つのストレージシステム10と、少なくとも一つのホスト計算機20を備える。ストレージシステム10とホスト計算機20は、通信経路CNによって双方向通信可能に接続される。
 ホスト計算機20は、例えばバックアップサーバのように構成される。
ホスト計算機20は、バックアップアプリケーション21およびバックアップデータ22を記憶するための記憶装置と、バックアップアプリケーション21を実行するためのマイクロプロセッサと、ストレージシステム10と通信するための通信装置(いずれも不図示)を備える。なお、アプリケーションとはアプリケーションプログラムの略である。
 ストレージシステム10は、ホスト計算機20のバックアップデータを保存するためのシステムであり、バックアップデータの保存に際して重複データを検出して取り除く機能を有する。ストレージシステム10は、例えば、複数のノード110と、複数のノード110により共同で使用される少なくとも一つの記憶部120を有する。重複したデータを検出して排除する機能は、図2に示すようにストレージシステム10内に設けてもよいし、ストレージシステム10とは別の装置に設けてもよい。
 先に記憶部120の構成を説明する。記憶部120は、ストレージシステム10に記憶領域を提供するものである。記憶部120は、複数の記憶装置121と、それら複数の記憶装置121を制御するための少なくとも一つの制御装置122を備える。制御装置122は、少なくとも一つの通信ポート123を備えている。制御装置122は、通信ポート123を介して、少なくとも一つのノード110に双方向通信可能に接続される。換言すれば、各ノード110はそれぞれ異なる通信経路を介して複数の制御装置122と通信することができる。従って、各ノード110は、一方の通信経路または一方の制御装置122に障害が発生した場合でも、他方の通信経路および他方の制御装置122を用いて記憶部120内の記憶装置121にアクセスすることができる。
 記憶装置としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス等のデータを読み書き可能な種々の記憶装置を利用可能である。
 記憶装置としてハードディスクデバイスを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。
 また、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(登録商標)等の種々の記憶装置を用いることもできる。さらに、例えば、フラッシュメモリデバイスとハードディスクデバイスのように、種類の異なる記憶装置を混在させる構成でもよい。
 一つまたは複数の記憶装置121の有する物理的記憶領域を用いて、論理的記憶領域である論理ボリュームを任意サイズで作成することができる。論理ボリュームには、例えばRAID(Redundant Arrays of Inexpensive Disks)1、RAID5、RAID6のような冗長構成でデータを記憶することができる。
 例えば複数の記憶装置121により形成される記憶領域には、ファイルシステム124が設けられている。ファイルシステム124には、例えば、コンテンツ管理テーブル135、チャンクインデックス136、チャンクデータセットインデックス132、チャンクデータセット137、スタブファイル138等が格納される。
 ノード110の構成を説明する。ノード110は、例えば、マイクロプロセッサ111と、メモリ112と、通信ポート113を含むコンピュータ装置である。図中に示すメモリ112は、システムメモリ、キャッシュメモリ、補助記憶装置などを含む。
 メモリ112には、例えば、ファイルシステム管理部130、重複排除プログラム131、チャンクデータセットインデックス132C、ブルームフィルタ133、チャンクプール134等が記憶される。
 ファイルシステム管理部130は、ファイルシステム124を管理するコンピュータプログラムである。重複排除プログラム131は、受信データ(入力データ)と記憶部120に記憶済みのデータとが一致するかを検出し、重複するデータは排除し、新規データを記憶部120に記憶させるコンピュータプログラムである。重複排除プログラム131は、図1に示す重複排除部1Aの主要部に相当する。
 図3を用いて、データ管理構造を説明する。ホスト計算機20から受領するバックアップデータとしてのユーザファイルは、コンテンツ識別子により識別される。ユーザファイルは、ファイルシステム124内でスタブファイル138として管理されている。スタブファイル138はコンテンツ識別子を有し、ファイルシステム124内に分散して記憶されたチャンクデータから構成される。
 コンテンツ管理テーブル135は、スタブファイル138毎に設けられており、スタブファイルと一対一で対応する。コンテンツ管理テーブル135はスタブ化されたユーザファイルを特定するためのコンテンツ識別子を有しており、そのユーザファイルを構成する各チャンクを管理するためのデータを含む。
 各チャンクの管理用データは、例えば、コンテンツオフセット値(Offset)、チャンク長(Length)、チャンクデータセット識別子(CDS ID)、フィンガープリント(FP)を備える。
 コンテンツオフセット値は、ユーザファイルにおけるチャンクの位置を示す。チャンク長は、そのチャンクのデータサイズを示す。チャンクデータセット識別子は、チャンクをグループ化して管理するチャンクデータセットを識別するための情報である。フィンガープリント(FP)は、チャンクデータセット識別子で特定されるチャンクデータセット内のチャンクを特定するための情報である。コンテンツ管理テーブル135を用いることで、ユーザファイルがどのチャンクデータセットで管理されているチャンクから構成されているかを把握できる。
 チャンクデータセット(CDS)137は、チャンクデータをグループ化して管理しており、チャンクデータセットを識別するための識別子を有する。チャンクデータセット137は、複数のチャンクを収容するコンテナと呼ぶこともできる。チャンクデータセット137は、例えばチャンクデータ長(Length)とチャンクデータとの組から特定されるチャンクを複数含んでいる。
 チャンクデータセットインデックス(CDS IDX)132は、チャンクデータセット137を管理するための情報であり、チャンクデータセット識別子を有する。CDS IDX132は、チャンクデータセット毎に設けられ、チャンクデータセット137と一対一で対応する。CDS IDX132は、チャンクデータセットに含まれる各チャンクデータ毎に、チャンクデータのFPと、チャンクデータセットにおけるチャンクデータの位置を示すオフセット値と、チャンクデータ長とを対応付けて管理する。
 チャンクインデックス136は、ストレージシステム10で管理される全チャンクデータのうち所定基準で選択される代表チャンクデータを管理する情報である。チャンクインデックス136は、代表チャンク毎に、代表チャンクデータのFPと、その代表チャンクが属するチャンクデータセット137を特定するためのチャンクデータセット識別子とを対応付けて管理する。
 受信データに含まれるチャンクデータ(処理対象のチャンクデータ)のFPがチャンクインデックス136に存在する場合、処理対象のチャンクデータは代表チャンクとしてチャンクインデックス136に登録されていることを意味する。代表チャンクに対応付けられたチャンクデータセット識別子に基づいてCDS IDX132を参照することで、代表チャンクの属するチャンクデータセット137に含まれている他の全てのチャンクデータを検出することができる。
 図4を用いて、重複データの検出方法の概略を説明する。図4では、ホスト計算機20から受領した第1世代のバックアップデータを全て記憶部120に記憶した後、ホスト計算機20から第2世代のバックアップデータを受信した場合を説明する。ストレージシステム10は、第2世代のバックアップデータのうち第1世代のバックアップデータと共通するデータ以外のデータを記憶部120に記憶する。第2世代のバックアップデータのうち第1世代のバックアップデータと共通するデータは、その共通データにアクセスするためのチャンクデータセット識別子およびFPで置換できる。
 図4の第1行目L1に、第1世代のバックアップデータを示す。第1世代のバックアップデータは、「A」から「X」までの複数のチャンクから構成されており、各チャンクのデータはストレージシステム10にとって新規データであるとする。従って、第1世代のバックアップデータは全てストレージシステム10の記憶部120に記憶される。
 第2行目L2に、第1世代のバックアップデータを2つのチャンクデータセット137に分けてストレージシステム10に格納する様子を示す。第1のチャンクデータセットCDS1は、チャンク「A」~「L」までのデータを収容する。第2のチャンクデータセットCDS2は、第1のチャンクデータセットに収容されたチャンクに続くチャンク「M」~「X」までのデータを収容する。
 第2行目L2および第3行目L3に太い黒枠で示すように、各チャンクデータセットCDS1、CDS2において、代表チャンクが複数ずつ選択される。第1のチャンクデータセットCDS1では、先頭の2つのチャンク「A」および「B」と、直前の代表チャンク「B」から数えて所定値(例えば5個)のチャンク「G」と、さらにチャンク「G」から数えて所定値のチャンク「L」とが、代表チャンクとして選択される。第2のチャンクデータセットCDS2でも前記同様の基準に従って、「M」、「N」、「S」および「X」が代表チャンクとして選択される。
 第4行目L4に、チャンクインデックス136の設定内容を示す。第2行目L2、第3行目L3で選択された各代表チャンクのFPは、該各代表チャンクの属するチャンクデータセットの識別子に対応付けられてチャンクインデックス136に登録される。チャンクインデックス136には、例えば、代表チャンク「A」のFPに第1チャンクデータセットCDS1を特定する識別子「C1」を対応付けて記憶される。同様に、代表チャンク「B」、「G」、「L」のFPと第1チャンクデータセットCDS1の識別子「C1」とを対応付けて、チャンクインデックス136に記憶する。
 第2チャンクデータセットCDS2の代表チャンクについても同様に、各代表チャンク「M」、「N」、「S」、「X」のFPと第2チャンクデータセットCDS2の識別子「C2」を対応付けて、チャンクインデックス136に記憶する。
 第5行目L5は、ブルームフィルタ133へのチャンクデータの登録状況を示す。ブルームフィルタ133において、全てのチャンクデータからそれぞれ得られる所定数のハッシュ値に対応するビットがオンされる。つまり、ブルームフィルタ133には、ストレージシステム10で管理する全てのチャンクデータが反映される。
 第6行目L6に、第2世代のバックアップデータを示す。図4に示す第2世代のバックアップデータは、第1世代のバックアップデータと共通するチャンク「A」~「E」、「H」~「L」、「O」~「S」、「V」~「X」を含む。さらに、第2世代のバックアップデータは、白い矢印で示すように、第1世代のバックアップデータとは異なる新規チャンクデータ「f」、「g」、「m」、「n」、「t」、「u」も含む。
 第2世代バックアップデータのうち前半部分のチャンクデータ「A」~「L」と後半部分のチャンクデータ「m」~「X」とに分けて、重複データの検出を説明する。第2世代バックアップデータの先頭チャンクデータ「A」が最初の対象チャンクデータとなり、重複データが存在するか否か判定される。
 対象チャンクデータ「A」のFPは、代表チャンクとしてチャンクインデックス136に記憶されている。また、対象チャンクデータ「A」の存在はブルームフィルタ133に記憶されている。従って、メモリ112上のCDS IDX132Cに対象チャンクデータ「A」のFPが記憶されていなくても、ストレージシステム10は、チャンクインデックス136を用いることで対象チャンクデータ「A」が記憶済みであると判定できる。
 ストレージシステム10は、対象チャンクデータ「A」のFPに対応付けられているチャンクデータセット識別子(CDS ID)をチャンクインデックス136から取得する。ストレージシステム10は、そのチャンクデータセット識別子を有するチャンクデータセットをメモリ112に記憶させる。
 最初の対象チャンクデータ「A」の属するCDS IDX132Cがメモリ112に記憶される。従って、ストレージシステム10は、CDS IDX132Cを用いることで、最初の対象チャンクデータ「A」と同一のチャンクデータセットCDS1に属する他のチャンクデータ「B」~「E」が記憶済みであると判定できる。
 チャンクデータ「E」が記憶済みであると判定した後、ストレージシステム10は、次のチャンクデータ「f」を処理対象のチャンクデータとして選択する。
 対象チャンクデータ「f」のFPは、メモリ112上のチャンクデータインデックス132Cに記憶されておらず、ブルームフィルタ133からもチャンクデータ「f」の存在は窺えない。さらに、対象チャンクデータ「f」は代表チャンクでもないので、対象チャンクデータ「f」のFPはチャンクインデックス136に記憶されていない。
 従って、対象チャンクデータ「f」は新規チャンクデータであると判定されて、図示せぬ新たなチャンクデータセットに格納され、記憶部120に記憶される。対象チャンクデータ「f」を記憶するに際して、対象チャンクデータ「f」のFPはチャンクデータセット137に記憶される。さらに、対象チャンクデータ「f」は、ブルームフィルタ133にも反映される。ブルームフィルタ133において、対象チャンクデータ「f」から得られる複数のハッシュ値に対応する位置のビットがオンにされる。
 チャンクデータ「f」に続いて、チャンクデータ「g」が対象チャンクデータとして選択される。対象チャンクデータ「g」についても、チャンクデータ「f」と同様に処理されるため、説明を省略する。
 ストレージシステム10は、チャンクデータ「g」を新規チャンクデータであると判定して記憶した後、チャンクデータ「H」を対象チャンクデータとして選択し、重複の有無を判定する。
 チャンクデータ「H」の属するチャンクデータセット137に関するCDS IDX132Cがメモリ112上に存在するため、ストレージシステム10は、対象チャンクデータ「H」は記憶済みであると判定する。チャンクデータ「H」に続く他のチャンクデータ「I」、「J」、「K」、「L」についても、チャンクデータ「H」の処理について述べたと同様、CDS IDX132Cによって記憶済みであると判定される。
 チャンクデータセットの境界CBを越えた対象チャンクデータ「m」のFPは、最初の対象チャンクデータ「A」の属するチャンクデータセットに記憶されていない。対象チャンクデータ「m」のFPは、他のCDS IDX132にもチャンクインデックス136にも記憶されていないし、ブルームフィルタ133にもチャンクデータ「m」の存在は登録されていない。
 従って、ストレージシステム10は、対象チャンクデータ「m」を新規チャンクデータであると判定し、記憶部120に記憶する。ストレージシステム10は、対象チャンクデータ「m」についてCDS IDX132、ブルームフィルタ133、チャンクインデックス136を更新する。チャンクデータ「m」に続くチャンクデータ「n」が対象チャンクデータとして選択された場合も、チャンクデータ「m」で述べたように処理される。
 チャンクデータ「n」に続くチャンクデータ「O」が対象チャンクデータとして選択された場合を説明する。メモリ112に記憶されているCDS IDX132Cは、第1チャンクデータセットCDS1についてのCDS IDX132Cである。従って、メモリ112上のCDS IDX132Cに、対象チャンクデータ「O」のFPは記憶されていない。
 しかし、対象チャンクデータ「O」は第3行目L3で示したように、第1世代のバックアップデータの一部として記憶部120に記憶されている。ストレージシステム10で管理する全てのチャンクデータは、ブルームフィルタ133に反映されている。
 従って、ブルームフィルタ133は、対象チャンクデータ「O」がストレージシステム10内に存在することを所定値以上の確からしさで示す。対象チャンクデータ「O」が記憶済みであることをブルームフィルタ133が示しているにもかかわらず、対象チャンクデータ「O」のFPは、チャンクインデックス136に登録されていない。
 この場合、対象チャンクデータ「O」のFPは、記憶部120内のCDS IDX132に記憶されている可能性が高い。つまり、対象チャンクデータ「O」は代表チャンクとして選ばれなかったためにチャンクインデックス136に登録されていないが、通常のチャンクデータとしてCDS IDX132には登録されている可能性が高い。
 そこで、本実施例では、対象チャンクデータ「O」をチャンクプール134に一時的に格納し、最終的な判断を保留する。
 第7行目L7に示すように、チャンクデータ「O」に続くチャンクデータ「P」、「Q」、「R」についても、チャンクデータ「O」について述べたと同様の処理が行われて、チャンクプール134に格納される。
 チャンクプール134に格納されたチャンクデータ「R」に続いて、チャンクデータ「S」が対象チャンクデータとして選択される。対象チャンクデータ「S」のFPも、メモリ112上のCDS IDX132Cには記憶されていない。対象チャンクデータ「S」は、第2のチャンクデータセットCDS2に属するチャンクデータであり、第2のチャンクデータセットCDS2に対応するCDS IDX132はメモリ112に未だ転送されていないためである。
 ストレージシステム10の管理する全てのチャンクデータの存在が反映されているブルームフィルタ133は、対象チャンクデータ「S」が記憶済みであることを一定の確からしさで示す。
 第3行目L3、第4行目L4で示すように、対象チャンクデータ「S」は第2のチャンクデータセットCDS2の所定位置にあるため、代表チャンクとして選ばれている。チャンクインデックス136には、対象チャンクデータ「S」のFPが記憶されている。ストレージシステム10は、チャンクインデックス136を参照することで、対象チャンクデータ「S」が記憶部120に記憶されている既存データであることを知る。
 本実施例では、チャンクインデックス136に記憶されている代表チャンクデータのFPと同一FPの対象チャンクデータが検出された場合、その代表チャンクデータの属するチャンクデータセット137に関するCDS IDX132がメモリ112に転送されて記憶される。
 ストレージシステム10は、メモリ112上のCDS IDX132の更新をトリガとして、チャンクプール134に格納された判断保留中のチャンクデータについて、記憶済みであるか否かを判定する。
 対象チャンクデータ「S」の処理時にメモリ112に転送されたCDS IDX132Cには、チャンクプール134内のチャンクデータ「O」~「R」のFPが記憶されている。従って、ストレージシステム10は、チャンクプール134内のチャンクデータ「O」~「R」を記憶済みのチャンクデータであると判断する。
 チャンクデータ「S」に続くチャンクデータ「t」、「u」は、チャンクデータ「m」で述べたように、新規なチャンクデータであると判定されてチャンクデータセットに記憶される。
 チャンクデータ「u」に続くチャンクデータ「V」~「X」は、それらのFPがメモリ112上のCDS IDX132Cに記憶されているため、既存のチャンクデータであると判定される。
 第8行目L8は、ストレージシステム10によるデータ重複の判定結果を示す。判定結果「T」は、既存データと重複するデータであることを示す。判定結果「F」は、既存データと重複しないデータであることを示す。チャンクプール134に格納されたチャンクデータ「O」~「R」以外のチャンクデータについての判定結果は問題がないため、説明を省略する。
 チャンクプール134に格納されたチャンクデータ「O」~「R」については、それらのFPがチャンクインデックス136に記憶されていないと判定した時点で、新規チャンクデータであるとして取り扱うことも可能である。その場合の判定結果は、第8行目L8に点線で囲った「F」となる。
 しかし、実際には、チャンクプール134に格納されたチャンクデータ「O」~「R」は、ストレージシステム10に記憶済みのデータであり、「F」という判定結果は誤っている。
 本実施例では、上述のように、ブルームフィルタ133が存在の可能性を示していながらチャンクインデックス136では見つからなかった対象チャンクデータについては、重複判定を誤る可能性があると判断して、データ重複の判断を保留する。そして、本実施例では、メモリ112上のCDS IDX132Cが更新された場合に、チャンクプール134に格納したチャンクデータが記憶済みであるか否かを、新たなCDS IDX132Cを用いて判定する。従って、本実施例では、記憶済みデータを新規データであると誤判定するのを防止し、重複したデータを排除することができる。
 図5は、データ重複判定の処理方法の概略を示す。データ重複判定処理を実行する主体は、ストレージシステム10に設けられたノード110内の重複排除プログラム131であり、その重複排除プログラム131はマイクロプロセッサ111が実行する。従って、データ重複判定処理の主体として、ストレージシステム、ノード、マイクロプロセッサ、プログラムのいずれであってもよい。ここでは、重複排除プログラム131を動作主体として説明する。
 ノード110がデータを受信すると本処理が開始する(S1)。プログラム131は、受信データに含まれる対象チャンクデータについて、まず最初に、対象チャンクデータのFPがメモリ112上のCDS IDX132Cに存在するか検索する(S2)。
 プログラム131は、対象チャンクデータのFPがCDS IDX132Cに記憶されていると判定した場合(S2:存在する)、対象チャンクデータは記憶済みの既存チャンクデータであるを判定する(S3)。ステップS3での判定結果は確定である。
 プログラム131は、対象チャンクデータのFPがメモリ112上のCDS IDX132Cに存在しないと判定した場合(S2:存在しない)、対象チャンクデータの存在についてブルームフィルタ133を検索する(S4)。
 プログラム131は、ブルームフィルタ133が対象チャンクデータの存在を示していないと判定した場合(S4:存在しない)、対象チャンクデータはストレージシステム10に記憶されていないと判定する(S5)。この判定結果は確定である。
 プログラム131は、ブルームフィルタ133が対象チャンクデータの存在を示していると判定した場合(S4:存在するかもしれない)、代表チャンクのFPを管理しているチャンクインデックス136を検索する(S6)。
 プログラム131は、対象チャンクデータのFPがチャンクインデックス136に記憶されていないと判定した場合(S6:存在しない)、対象チャンクデータの判断を保留し(S7)、チャンクプール134に格納する(S8)。換言すれば、プログラム131は、対象チャンクデータを一応新規チャンクデータであるとして扱うが、その判定は確定ではなく、新規チャンクデータである場合の処理(記憶部120への記憶、テーブル類の更新など)はステップS7、S8の時点では未だ行わない。
 プログラム131は、チャンクインデックス136に対象チャンクデータのFPが記憶されていると判定した場合(S6:存在する)、対象チャンクデータは既存チャンクデータであると判定する(S9)。この判定結果は確定である。
 プログラム131は、対象チャンクデータのFPがチャンクインデックス136に存在すると判定した場合(S9)、対象チャンクデータの属するチャンクデータセット137に対応するCDS IDX132をメモリ112に転送して記憶させる(S10)。
 プログラム131が、チャンクプール134に格納された対象チャンクデータとは異なる他のチャンクデータを対象チャンクデータとして処理している最中に、ステップS9で既存チャンクデータであると判定した場合に、他のチャンクデータに関連するCDS IDX132がメモリ112に転送されて、メモリ112上に存在するCDS IDX132Cが更新される(S10)。
 プログラム131は、更新されたCDS IDX132Cに、チャンクプール134に格納されている対象チャンクデータのFPが記憶されているか検索する(S11)。
 プログラム131は、更新されたCDS IDX132Cにチャンクプール134内の対象チャンクデータのFPが記憶されていると判定した場合(S11:存在する)、その対象チャンクデータは既存チャンクデータであると判定する(S12)。この判断は確定である。
 プログラム131は、更新されたCDS IDX132Cにチャンクプール134内の対象チャンクデータのFPが記憶されていないと判定した場合(S11:存在しない)、その対象チャンクデータは新規チャンクデータであると判定する(S13)。この判断は確定である。
 プログラム131は、ステップS5またはステップS13で新規データ(新規チャンクデータ)であると判定した場合、新規チャンクデータをチャンクデータセット137に格納する。さらに、プログラム131は、CDS IDX132、ブルームフィルタ133およびチャンクインデックス136を最新値に更新する(S14)。
 図6および図7を用いて、図4に示した処理の詳細を説明する。図6は、データの重複を判定する処理のフローチャートである。
 先に図4との対応関係を述べる。ステップS21はステップS1に、ステップS22はステップS2に、ステップS23での判定”YES”はステップS3に、ステップS24はステップS4に、ステップS25での判定”YES”はステップS5に、ステップS26およびS27はステップS14に、ステップS28はステップS6に、ステップS29での判定”NO”はステップS7に、ステップS37はステップS8に、ステップS29での判定”YES”はステップS9に、ステップS30はステップS10に、ステップS31~S36はステップS11に、ステップS33での判定”YES”はステップS12に、ステップS33での判定”NO”はステップS13に、それぞれ対応する。
 データ重複の判定対象であるデータをノード110が受信すると、プログラム131は本処理を開始する(S21)。プログラム131は、対象チャンクデータのFPを取得し、そのFPでメモリ112上のCDS IDX132Cを検索し(S22)、対象チャンクデータのFPがメモリ112上のCDS IDX132Cに存在するか否か判定する(S23)。プログラム131は、対象チャンクデータのFPがCDS IDX132Cに存在すると判定すると(S23:YES)、本処理を終了する。
 プログラム131は、対象チャンクデータのFPがCDS IDX132Cに存在しないと判定した場合(S23:NO)、ブルームフィルタ133を検索し(S24)、ブルームフィルタ133が対象チャンクデータの存在を示すか否か判定する(S25)。
 上述の通り、ブルームフィルタ133は、チャンクデータを複数のハッシュ関数に入力して得られる複数のハッシュ値に対応する所定ビットをオンにする。従って、対象チャンクデータがストレージシステム10内に存在するのであれば、必ず全ての所定ビットがオンになっている。複数の所定ビットのうちいずれか1つでもオフになっている場合、対象チャンクデータはストレージシステム10内に存在しない。
 これに対し、一方のチャンクデータに関する複数の所定ビットの全てがオンになっている場合であっても、一方のチャンクデータがストレージシステム10内に存在することが確定するわけではない。一方のチャンクデータについての複数の所定ビットのうちの一つまたは複数が他のチャンクデータについての所定ビットと偶々一致している場合、その一致した所定ビットが両方のチャンクデータに関してオンになっているのか、それともいずれか一つのチャンクデータのみに関してオンになっているのか、区別がつかない。
 従って、ブルームフィルタ133が対象チャンクデータの存在を示す場合、それは存在の可能性を所定の確率で示すことになる。対象チャンクデータの存在を示していながら、実際には存在していないことを意味する擬陽性は、ブルームフィルタ133の構成等によっても異なるが、例えば数パーセント~十数パーセント程度である。従って、上記の所定の確率とは、(1-擬陽性の率)である。
 プログラム131は、対象チャンクデータの存在をブルームフィルタ133が示していない場合(S25:YES)、つまり対象チャンクデータが新規なチャンクデータであると判定した場合、後述する代表チャンク登録処理を実行する(S26)。プログラム131は、コンテンツ管理テーブル135に対象チャンクデータを登録した後(S27)、本処理を終了する。
 プログラム131は、対象チャンクデータの存在の可能性をブルームフィルタ133が示している場合(S25:NO)、対象チャンクデータのFPがチャンクインデックス136に登録されているか検索する(S28)。プログラム131は、対象チャンクデータのFPがチャンクインデックス136に登録されているか判定する(S29)。
 プログラム131は、対象チャンクデータのFPがチャンクインデックス136に登録されていると判定すると(S29:YES)、対象チャンクデータの属するCDS137に対応するCDS IDX132Cを記憶部120からメモリ112に転送して、メモリ112に記憶させる(S30)。
 プログラム131は、チャンクプール134内の重複判断を保留されている対象チャンクデータの全てについて、下記ステップS32~S35を実行する(S31)。
 プログラム131は、チャンクプール134内の対象チャンクデータのFPでCDS IDX132Cを検索し(S32)、対象チャンクデータのFPがメモリ112上のCDS IDX132Cに登録されているか判定する(S33)。
 プログラム131は、対象チャンクデータのFPがCDS IDX132Cに登録されていないと判定すると(S33:NO)、後述の代表チャンク登録処理(S34)を実行する。ステップS34に示す処理とステップS26に示す処理とは同一である。
 プログラム131は、対象チャンクデータをコンテンツ管理テーブル135に登録し(S35)、チャンクプール134内の他のチャンクデータを対象チャンクデータとして選択する。プログラム131は、チャンクプール134内の全てのチャンクデータについて判定した後、それらのチャンクデータをチャンクプール134から削除し、チャンクプール134内の記憶領域を解放し(S36)、本処理を終了する。
 このようにして、プログラム131は、チャンクプール134に一時的に保存されていた対象チャンクデータのそれぞれについて、重複データであるか否かを再判定し、新規チャンクデータの場合は記憶部120に記憶する。
 一方、プログラム131は、対象チャンクデータのFPがチャンクインデックス136に登録されていないと判定すると(S29:NO)、チャンクプール134が満杯であるか判定する(S38)。チャンクプール134が満杯であるとは、チャンクプール134の記憶領域を所定の上限値まで使用したことを意味する。チャンクプール134が満杯ではないと判定した場合(S38:NO)、プログラム131は本処理を終了する。
 プログラム131は、チャンクプール134が満杯であると判定すると(S38:YES)、チャンクプール134内に格納されている各チャンクデータについて以下のステップS40~S43を実行する(S39)。プログラム131は、以下のステップS40~S43において、チャンクプール134内のチャンクデータを新規チャンクデータであると判定して、記憶部120に記憶させる。
 プログラム131は、チャンクプール134内の対象チャンクデータをブルームフィルタ133に登録し(S40)、CDS137に格納する(S41)。プログラム131は、対象チャンクデータをCDS IDX132に登録し(S42)、さらにコンテンツ管理テーブル135にも登録する(S43)。プログラム131は、チャンクプール134内の全てのチャンクデータを記憶部120に記憶させ、かつ、所定のテーブル類を更新した後、チャンクプール134内のチャンクデータを削除し、チャンクプール134の記憶領域を解放する(S44)。
 図7は、図6の代表チャンク登録処理(S26、S34)の詳細を示すフローチャートである。本処理は、新規チャンクデータを記憶部120に記憶する際に実行する。
 プログラム131は、新規チャンクデータをブルームフィルタ133に登録し(S51)、CDS137に格納する(S52)。
 プログラム131は、記憶した対象チャンクデータが代表チャンクとしての所定条件を満たすか判定する(S53)。代表チャンクとなる所定条件としては、例えば、ユーザファイルの先頭から2番目までのチャンクである、または、CDS137の先頭から2番目までのチャンクである、または、直前の代表チャンクから数えて所定数番目のチャンクである、という条件を挙げることができる。
 プログラム131は、対象チャンクデータが代表チャンクデータの条件を満たすと判定すると(S53:YES)、対象チャンクデータをCDS IDX132に登録する(S54)。
 図8のフローチャートを用いてホスト計算機20からリードコマンドを受領した場合の処理を説明する。
 ノード110はホスト計算機20からリードコマンドを受信すると(S61:YES)、そのリードコマンドで指定されたファイルが重複排除処理済みであるかを判定する(S62)。リードコマンドで指定されたファイルがスタブファイルである場合、重複処理済みであると判定することができる。
 ノード110は、リードコマンドで指定されたファイルが重複排除処理を受けていないと判定すると(S62:NO)、リードコマンドで指定されたファイルを記憶部120から読み出してメモリ112に転送する(S63)。その後、ノード110は、リードコマンドで指定されたファイルをホスト計算機20に送信して、本処理を終了する。
 これに対し、ノード110は、リードコマンドで指定されたファイルが重複排除処理済みであると判定すると(S62:YES)、リードコマンド指定されたファイル(スタブファイル)に対応するコンテンツ管理テーブル135を参照する(S64)。
 ノード110は、リードコマンドで指定されたファイルを構築する複数のチャンクデータを特定し、記憶部120からメモリ112に転送させる(S65)。ノード110は、メモリ112上に集めた各チャンクデータからファイルを再構築し(S66)、再構築したファイルをホスト計算機20に送信して、本処理を終了する。
 本実施例によれば、代表チャンクのFPのみをチャンクインデックス136に記憶することで、データ重複判定を高速に行うことができる。
 本実施例によれば、チャンクインデックス136にFPが記憶されていない対象チャンクデータを直ちに新規チャンクデータと判定するのではなく、いったんチャンクプール134に保存する。本実施例では、メモリ112上のCDS IDX132Cが更新された場合に、そのCDS IDX132Cを用いて、チャンクプール134内の対象チャンクデータについて重複の有無を再度判定する。従って、本実施例によれば、データ重複判定処理の高速性と正確性とを両立させることができる。
 さらに本実施例では、メモリ112上のCDS IDX132Cを用いた判定では存在しないとされたがブルームフィルタ133は存在を示している対象チャンクデータが、代表チャンクではない場合、対象チャンクデータの判断を一時保留して、チャンクプール134に記憶する。本実施例では、メモリ112上のCDS IDX132Cが更新されるのを待ち、更新されたCDS IDX132Cを用いて、チャンクプール134内の対象チャンクデータが記憶済みであるか判定する。
 本実施例では、一時判断を保留した対象チャンクデータについて、別のタイミングで再判定する。従って、データの重複の有無を精度良く検出して排除できる。
 本実施例では、ブルームフィルタ133によって同一データの存在が否定された対象チャンクデータ以外のデータ、つまり、ブルームフィルタ133が存在可能性を示した対象チャンクデータだけを一時的に保存する。従って、チャンクプール134を効率的に使用することができる。
 本実施例では、チャンクプール134の使用量が上限値に達した場合、チャンクプール134内のチャンクデータを新規データとして扱い、記憶部120に記憶する。従って、データ重複判定が必要以上に遅れるのを防止し、限られたサイズのチャンクプール134を有効に利用して、データ重複の排除効率を高めることができる。
 1:ストレージシステム、1A:重複排除部、1B:記憶部、T1、T1C:第1管理テーブル、T2:第2管理テーブル、T3:第3管理テーブル、DS:データセット、2:ホスト計算機、10:ストレージシステム、20:ホスト計算機、110:ノード、112:メモリ、120:記憶部、131:重複排除プログラム、132:チャンクデータセットインデックス(CDS IDX)、133:ブルームフィルタ、134:チャンクプール、135:コンテンツ管理テーブル、136:チャンクインデックス

Claims (13)

  1.  データの重複を検出するためのデータ重複検出システムであって、
     受信データを分割して形成される複数のチャンクデータのそれぞれについて、記憶済みのチャンクデータと重複するかを判定するデータ重複判定部と、
     前記データ重複判定部によって重複しないと判定されたチャンクデータを記憶する記憶部と、
     前記記憶部に記憶されている各チャンクデータについて、データの同一性を示す同一性保証データとデータの格納先を示す格納先情報とを対応付けて管理する第1管理テーブルと、
     前記記憶部に記憶されている前記各チャンクデータの前記同一性保証データに基づいて作成される第2管理テーブルであって、チャンクデータが前記記憶部に記憶されていることを所定の信頼性の下で示す第2管理テーブルと、
     前記記憶部に記憶されている前記各チャンクデータをグループ化して形成される複数のチャンクデータセットを管理する第3管理テーブルであって、前記複数のチャンクデータセットをそれぞれ代表する所定のチャンクデータについての前記同一性保証データを管理する第3管理テーブルとを
    備え、
     前記データ重複判定部は、
      受信データに含まれる対象チャンクデータが前記記憶部に記憶されていると前記第2管理テーブルが示す場合であって、かつ、前記対象チャンクデータの同一性保証データが前記第3管理テーブルに記憶されていないと判定した場合に、前記対象チャンクデータを一時的に保存するための一時保存部に保存し、
      前記対象チャンクと異なる他の対象チャンクデータが前記記憶部に記憶されていると前記第2管理テーブルが示す場合であって、かつ、前記他の対象チャンクデータの同一性保証データが前記第3管理テーブルに記憶されていると判定した場合に、前記一時保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されているか判定し、
      前記一時的保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されていると判定した場合、前記一時的保存部に保存された前記対象チャンクデータは前記記憶部に記憶済みであると判定し、
      前記一時的保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されていないと判定した場合、前記一時的保存に保存された前記対象チャンクデータは前記記憶部に記憶されていないと判定する、
    データ重複検出システム。
  2.  前記第1管理テーブルは前記一つまたは複数のチャンクデータセット毎に用意されており、
     前記データ重複判定部は、前記他の対象チャンクデータが前記第3管理テーブルに記憶されていると判定した場合、前記一つまたは複数のチャンクデータセット毎の前記第1管理テーブルのうち前記他の対象チャンクデータの属するチャンクデータセットに対応する第1管理テーブルに、前記一時保存部に保存された前記対象チャンクデータについての前記同一性保証データが記憶されているかを判定する、
    請求項1に記載のデータ重複検出システム。
  3.  前記データ重複判定部は、前記一時保存部に保存された前記対象チャンクデータが前記記憶部に記憶されていないと判定した場合、前記対象チャンクデータを新規チャンクデータとして前記記憶部に記憶し、さらに前記第1管理テーブルと前記第2管理テーブルおよび前記第3管理テーブルを更新する、
    請求項2に記載のデータ重複検出システム。
  4.  前記データ重複判定部は、前記一時保存部に保存された前記対象チャンクデータを前記新規チャンクデータとして前記記憶部に記憶する場合、前記一時保存部に記憶されている前記新規チャンクデータとしての前記対象チャンクデータを破棄し、前記一時保存部の記憶領域を解放する、
    請求項3に記載のデータ重複検出システム。
  5.  前記データ重複判定部は、前記一時保存部の使用量が所定の上限値に達した場合、前記一時保存部に保存されている前記対象チャンクデータを前記新規チャンクデータとして前記記憶部に記憶する、
    請求項4に記載のデータ重複検出システム。
  6.  前記データ重複判定部はメモリを使用することができ、
     前記一つまたは複数のチャンクデータセット毎の前記第1管理テーブルは前記記憶部に記憶されており、
     前記他の対象チャンクデータの属する前記チャンクデータセットに対応する前記第1管理テーブルが前記記憶部から前記メモリに転送されて記憶される、
    請求項5に記載のデータ重複検出システム。
  7.  データ重複判定部は、
      データを受信した場合、まず最初に、前記メモリ上の前記第1管理テーブルを用いて、前記受信したデータに含まれる前記対象チャンクデータの同一性保証データが前記記憶部に記憶されているかを判定し、
      前記対象チャンクデータの前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されていないと判定した場合、前記対象チャンクデータが前記記憶部に記憶されていることを前記第2管理テーブルが示しているかを判定し、
      前記対象チャンクデータが前記記憶部に記憶されていることを前記第2管理テーブルが示している場合、前記対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されているか判定し、
      前記対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されていないと判定した場合、前記対象チャンクデータを前記時保存部に保存する、
    請求項6に記載のデータ重複検出システム。
  8.  ホスト計算機および前記記憶部に通信可能に接続され、マイクロプロセッサおよびメモリを有するコンピュータ装置を備えており、
     前記メモリに予め記憶されている所定のデータ重複判定プログラムを前記マイクロプロセッサが実行することで、前記データ重複判定部が実現されるようになっており、
     前記データ重複判定部は、第1判定部、第2判定部、第3判定部および第4判定部を備えており、
     前記第1判定部は、前記一つまたは複数のチャンクデータセット毎の前記第1管理テーブルのうち前記メモリに記憶されている第1管理テーブルに、前記受信データに含まれる前記対象チャンクデータの前記同一性保証データが記憶されているか判定し、前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されていると判定した場合、前記対象チャンクデータは前記記憶部に記憶されていると判定し、
     前記第2判定部は、前記対象チャンクデータの前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されていないと前記第1判定部が判定した場合、前記対象チャンクデータが前記記憶部に記憶されていることを前記第2管理テーブルが示しているか判定し、前記対象チャンクデータが前記記憶部に記憶されていない新規チャンクデータであると判定して前記記憶部に記憶し、
     前記第3判定部は、前記対象チャンクデータの前記同一性保証データが前記記憶部に記憶されていることを前記第2管理テーブルが示す場合、前記対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されているか判定し、前記対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されていると判定した場合、前記対象チャンクデータは前記記憶部に記憶されていると判定し、前記対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されていないと判定した場合、前記対象チャンクデータを前記一時保存部に保存し、
     前記第4判定部は、前記対象チャンクと異なる他の対象チャンクデータの前記同一性保証データが前記第3管理テーブルに記憶されていると前記第3判定部が判定した場合、前記他の対象チャンクデータの属する前記チャンクデータセットに対応する前記第1管理テーブルを前記メモリに転送して記憶し、前記一時保存部に保存された前記対象チャンクデータの前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されているか判定し、
     前記対象チャンクデータの前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されていると判定した場合、前記一時保存部に保存された前記対象チャンクデータは前記記憶部に記憶済みであると判定して前記一時保存部から削除し、
     前記対象チャンクデータの前記同一性保証データが前記メモリ上の前記第1管理テーブルに記憶されていないと判定した場合、前記一時保存部に保存された前記対象チャンクデータは前記記憶部に記憶されていない新規チャンクデータであると判定して前記記憶部に記憶し、前記対象チャンクデータを前記一時保存部から削除し、
     前記一時保存部の使用量が所定の上限値に達した場合、前記一時保存部に保存されている前記対象チャンクデータを前記新規チャンクデータとして前記記憶部に記憶する、
    請求項1に記載のデータ重複検出システム。
  9.  データの重複を検出するデータ重複検出システムを制御する方法であって、
     前記データ重複検出システムは、
      受信データを分割して形成される複数のチャンクデータのそれぞれについて、記憶済みのチャンクデータと重複するかを判定するデータ重複判定部と、
      前記データ重複判定部によって重複しないと判定されたチャンクデータを記憶する記憶部と、
      前記記憶部に記憶されている各チャンクデータについて、データの同一性を示す同一性保証データとデータの格納先を示す格納先情報とを対応付けて管理するための第1管理テーブルと、
      前記記憶部に記憶されている前記各チャンクデータの前記同一性保証データに基づいて作成される第2管理テーブルであって、チャンクデータが前記記憶部に記憶されていることを所定の信頼性の下で示す第2管理テーブルと、
      前記記憶部に記憶されている前記各チャンクデータをグループ化して形成される複数のチャンクデータセットを管理する第3管理テーブルであって、前記複数のチャンクデータセットをそれぞれ代表する所定のチャンクデータについての前記同一性保証データを管理する第3管理テーブルとを
    備えており、
     前記データ重複判定部は、
      受信データに含まれる対象チャンクデータが前記記憶部に記憶されていると前記第2管理テーブルが示す場合であって、かつ、前記対象チャンクデータの同一性保証データが前記第3管理テーブルに記憶されていないと判定した場合に、前記対象チャンクデータを一時的に保存するための一時保存部に保存し、
      前記対象チャンクと異なる他の対象チャンクデータが前記記憶部に記憶されていると前記第2管理テーブルが示す場合であって、かつ、前記他の対象チャンクデータの同一性保証データが前記第3管理テーブルに記憶されていると判定した場合に、前記一時保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されているか判定し、
      前記一時的保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されていると判定した場合、前記一時的保存部に保存された前記対象チャンクデータは前記記憶部に記憶済みであると判定し、
      前記一時的保存部に保存された前記対象チャンクデータの前記同一性保証データが前記第1管理テーブルに記憶されていないと判定した場合、前記一時的保存に保存された前記対象チャンクデータは前記記憶部に記憶されていないと判定する、
    データ重複検出システムの制御方法。
  10.  前記第1管理テーブルは前記一つまたは複数のチャンクデータセット毎に用意されており、
     前記データ重複判定部は、前記他の対象チャンクデータが前記第3管理テーブルに記憶されていると判定した場合、前記一つまたは複数のチャンクデータセット毎の前記第1管理テーブルのうち前記他の対象チャンクデータの属するチャンクデータセットに対応する第1管理テーブルに、前記一時保存部に保存された前記対象チャンクデータについての前記同一性保証データが記憶されているかを判定する、
    請求項9に記載のデータ重複検出システムの制御方法。
  11.  前記データ重複判定部は、前記一時保存部に保存された前記対象チャンクデータが前記記憶部に記憶されていないと判定した場合、前記対象チャンクデータを新規チャンクデータとして前記記憶部に記憶し、さらに前記第1管理テーブルと前記第2管理テーブルおよび前記第3管理テーブルを更新する、
    請求項10に記載のデータ重複検出システムの制御方法。
  12.  前記データ重複判定部は、前記一時保存部に保存された前記対象チャンクデータを前記新規チャンクデータとして前記記憶部に記憶する場合、前記一時保存部に記憶されている前記新規チャンクデータとしての前記対象チャンクデータを破棄し、前記一時保存部の記憶領域を解放する、
    請求項11に記載のデータ重複検出システムの制御方法。
  13.  前記データ重複判定部は、前記一時保存部の使用量が所定の上限値に達した場合、前記一時保存部に保存されている前記対象チャンクデータを前記新規チャンクデータとして前記記憶部に記憶する、
    請求項12に記載のデータ重複検出システムの制御方法。
PCT/JP2013/059462 2013-03-29 2013-03-29 データ重複検出システムおよびデータ重複検出システムの制御方法 WO2014155653A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/343,644 US9239844B2 (en) 2013-03-29 2013-03-29 Data duplication detection system and method for controlling data duplication detection system
PCT/JP2013/059462 WO2014155653A1 (ja) 2013-03-29 2013-03-29 データ重複検出システムおよびデータ重複検出システムの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/059462 WO2014155653A1 (ja) 2013-03-29 2013-03-29 データ重複検出システムおよびデータ重複検出システムの制御方法

Publications (1)

Publication Number Publication Date
WO2014155653A1 true WO2014155653A1 (ja) 2014-10-02

Family

ID=51622718

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/059462 WO2014155653A1 (ja) 2013-03-29 2013-03-29 データ重複検出システムおよびデータ重複検出システムの制御方法

Country Status (2)

Country Link
US (1) US9239844B2 (ja)
WO (1) WO2014155653A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016079809A1 (ja) * 2014-11-18 2016-05-26 株式会社日立製作所 ストレージ装置、ファイルサーバ、およびデータ記憶方法
JP2017049806A (ja) * 2015-09-02 2017-03-09 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592347B2 (en) * 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US10496490B2 (en) 2013-05-16 2019-12-03 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US10216748B1 (en) * 2015-09-30 2019-02-26 EMC IP Holding Company LLC Segment index access management in a de-duplication system
US9940060B1 (en) * 2016-05-02 2018-04-10 Pure Storage, Inc. Memory use and eviction in a deduplication storage system
US10404734B2 (en) * 2016-07-07 2019-09-03 International Business Machines Corporation Root cause analysis in dynamic software testing via probabilistic modeling
US10209901B2 (en) * 2017-01-04 2019-02-19 Walmart Apollo, Llc Systems and methods for distributive data storage
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
US10860233B2 (en) * 2019-04-12 2020-12-08 Samsung Electronics Co., Ltd. Half-match deduplication

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187546A1 (en) * 2008-01-21 2009-07-23 International Business Machines Corporation Method, System and Computer Program Product for Duplicate Detection
US20110225191A1 (en) * 2010-03-10 2011-09-15 Data Domain, Inc. Index searching using a bloom filter
WO2012032727A1 (en) * 2010-09-09 2012-03-15 Nec Corporation Storage system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8578120B2 (en) * 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
US8868520B1 (en) * 2012-03-01 2014-10-21 Netapp, Inc. System and method for removing overlapping ranges from a flat sorted data structure
US9766832B2 (en) * 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
WO2015066719A2 (en) * 2013-11-04 2015-05-07 Falconstor, Inc. Use of solid state storage devices and the like in data deduplication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187546A1 (en) * 2008-01-21 2009-07-23 International Business Machines Corporation Method, System and Computer Program Product for Duplicate Detection
US20110225191A1 (en) * 2010-03-10 2011-09-15 Data Domain, Inc. Index searching using a bloom filter
WO2012032727A1 (en) * 2010-09-09 2012-03-15 Nec Corporation Storage system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BENJAMIN ZHU: "Avoiding the Disk Bottleneck in the Data Domain Deduplication File System", PROCEEDINGS OF THE 6TH USENIX CONFERENCE ON FILE AND STORAGE TECHNOLOGIES (FAST '08, 2008, pages 1 - 14, Retrieved from the Internet <URL:http://www.cs.cmu.edu/~15-610/READINGS/optional/zhu2008.pdf> [retrieved on 20130516] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016079809A1 (ja) * 2014-11-18 2016-05-26 株式会社日立製作所 ストレージ装置、ファイルサーバ、およびデータ記憶方法
JP2017049806A (ja) * 2015-09-02 2017-03-09 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム

Also Published As

Publication number Publication date
US20150220554A1 (en) 2015-08-06
US9239844B2 (en) 2016-01-19

Similar Documents

Publication Publication Date Title
WO2014155653A1 (ja) データ重複検出システムおよびデータ重複検出システムの制御方法
US11775392B2 (en) Indirect replication of a dataset
US11650976B2 (en) Pattern matching using hash tables in storage system
US11847336B1 (en) Efficient replication using metadata
US20230359644A1 (en) Cloud-based replication to cloud-external systems
CN110431542B (zh) 管理存储网络中的i/o操作
US20190278719A1 (en) Primary Data Storage System with Data Tiering
US9720601B2 (en) Load balancing technique for a storage array
US8930307B2 (en) Method for removing duplicate data from a storage array
AU2012294218B2 (en) Logical sector mapping in a flash storage array
US10880387B2 (en) Selective token clash checking for a data write
JP2016508273A (ja) ボリューム領域の重複排除
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
US9875059B2 (en) Storage system

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14343644

Country of ref document: US

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

Ref document number: 13880024

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13880024

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP