WO2017061022A1 - データを重複排除するシステム - Google Patents

データを重複排除するシステム Download PDF

Info

Publication number
WO2017061022A1
WO2017061022A1 PCT/JP2015/078707 JP2015078707W WO2017061022A1 WO 2017061022 A1 WO2017061022 A1 WO 2017061022A1 JP 2015078707 W JP2015078707 W JP 2015078707W WO 2017061022 A1 WO2017061022 A1 WO 2017061022A1
Authority
WO
WIPO (PCT)
Prior art keywords
hash
data
accelerator
deduplication
accelerators
Prior art date
Application number
PCT/JP2015/078707
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 PCT/JP2015/078707 priority Critical patent/WO2017061022A1/ja
Publication of WO2017061022A1 publication Critical patent/WO2017061022A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention relates to a system for deduplicating data.
  • Data recording is a basic function of a computer system.
  • data is stored in some storage medium in the computer system, and processing for managing the storage destination is performed.
  • Such data retention cost is calculated as a product of the bit cost of the storage medium (the price of the storage medium / the capacity of the storage medium) and the amount of recorded data in a simple definition (without considering the running cost or the like).
  • Deduplication means that when a virtual area larger than the physical area is created and data is recorded in a certain virtual area, the same data has already been enabled by searching whether the same data is already stored in the physical recording medium.
  • it is a technique for managing a physical area in which the same data is already stored in association with a virtual area without newly storing the data in the physical area.
  • data recorded in one physical area is managed in association with a plurality of virtual areas by deduplication, so in a system that records a plurality of the same data in the virtual area, the data exceeding the physical area is retained. Can be managed.
  • This deduplication technique includes a process of searching for whether the same data is already stored in the physical area (hereinafter referred to as a duplicate determination process).
  • Many systems that perform deduplication manage duplication determination management information (information for managing hash values for each recording data and corresponding physical areas), and hash values calculated from the recording data are registered there.
  • duplication determination processing is performed by searching whether the same hash value as the hash value calculated from the data is already registered in the duplication determination management information. Since this process requires time, generally, a system that performs deduplication degrades the performance during data recording.
  • Patent Document 1 holds a hash value that is uniquely calculated from the data content of data that is already held. Then, when data is newly recorded, a hash value is calculated from the data, and by searching for whether or not the same hash value as the hash value is recorded in the system, the frequency of direct comparison of the data is reduced. Further, Patent Document 1 discloses a technique for mounting an accelerator that calculates a hash value from data separately from a main processor that controls the system, thereby reducing the time for calculating the hash value.
  • Patent Document 1 discloses an example in which an accelerator that performs hash value calculation at high speed is mounted in order to speed up duplication determination processing. However, the accelerator performs processing for searching for the same hash value in duplication determination management information. The technology to do is not disclosed. Further, there is no disclosure of a technique that uses a plurality of accelerators when it is desired to speed up the duplication determination process beyond the capability of a single accelerator.
  • a system for deduplicating a plurality of block data constituting a file requested to be written comprising a plurality of accelerators each performing duplication determination processing and a plurality of data buffers for distributing block data to each accelerator A first memory.
  • Each of the plurality of accelerators includes a second memory that shares and stores a hash table used to determine whether block data is duplicated, and generates a hash value from the block data, and the hash value from the hash table. And means for searching.
  • the system for performing deduplication can perform duplication determination processing for deduplication shared by a plurality of accelerators, the duplication determination processing can be speeded up.
  • the internal structure of the system is shown.
  • the internal structure of a deduplication accelerator is shown.
  • the flowchart of hash generation (Generate) and transfer (Route) is shown.
  • the flowchart of hash search (Search) is shown.
  • summary of embodiment is shown.
  • the system 10 of this embodiment is, for example, a storage device or a server.
  • the system 10 includes a plurality of deduplication accelerators 123 that perform duplication determination processing for deduplication of block data constituting a file requested to be written.
  • a write data buffer 400 and a write data buffer 401 for distributing block data to each deduplication accelerator 123 are provided in the DRAM 125 of the system 10.
  • Each deduplication accelerator 123 includes means for generating a hash value from block data.
  • a hash table used for determining block data duplication is shared and stored.
  • the hash table is shared based on the hash value. For example, the hash table is shared depending on whether the hash value is even or odd.
  • the deduplication accelerator 123a includes an even hash table that stores even hash values
  • the deduplication accelerator 123b includes an odd hash table that stores odd hash values.
  • Each deduplication accelerator 123 includes means for searching for a hash value from a hash table in each deduplication accelerator.
  • system 10 of the present embodiment has the following configuration.
  • a hash shared buffer for transferring the hash among the multiple deduplication accelerators 123 is provided.
  • Each deduplication accelerator 123 determines, based on the hash value of the block data, whether the hash table stored by itself is the search destination or the hash table stored by other accelerators is the search destination.
  • the deduplication accelerator 123 writes the duplication determination result obtained by the hash search in a data buffer corresponding to itself in the DRAM 125 of the system 10.
  • the hash value is transferred to the hash shared buffer.
  • Each deduplication accelerator 123 acquires a hash value that can be searched with a hash table stored in the deduplication accelerator 123 from a hash shared buffer, and performs a hash search using the hash table provided in the deduplication accelerator 123. Each deduplication accelerator 123 writes the duplication determination result obtained by the hash search in the hash shared buffer.
  • Accelerator that has transferred the hash value to the hash shared buffer acquires the duplication judgment result obtained by the hash search, and writes it in the data buffer in the DRAM 125 of the system 10.
  • the CPU of the system acquires the duplication judgment result from the data buffer, and based on this, stores the block data constituting the file requested to be written.
  • a plurality of deduplication accelerators can transfer 120 hash values without going through the CPU, and a duplication determination process can be executed between the deduplication accelerators. As a result, it is possible to prevent the CPU 120 of the system 10 from applying a load for controlling deduplication.
  • FIG. 1 shows an outline of an example of a system to which the present invention is applied, and the present invention is applicable to a system taking FIG. 1 as an example.
  • FIG. 1 shows a configuration in which a plurality of servers 102 are connected to the storage apparatus 100 via the network 101.
  • the server 102 makes various requests such as read and write to the storage apparatus 100 via the network 101 in order to manage data.
  • the server 102 and the storage device 100 may be directly connected.
  • the storage device 100 is equipped with two storage controllers 110 having the same function for high reliability of the device, and HDD (Hard Disk Drive) or SSD (Solid State Drive) (hereinafter referred to as HDD) as a storage medium for storing data. / SSD) (130) are installed.
  • HDD Hard Disk Drive
  • SSD Solid State Drive
  • two storage controllers 110 are described, but the present invention is not limited to this number of controllers.
  • only one storage controller 110 may be mounted, or three or more storage controllers 110 may be mounted.
  • the storage controller 110 includes a processor (CPU) 120, a DRAM 125, a front-end interface 121 (hereinafter referred to as FE I / F), and a back-end interface 124 (hereinafter referred to as BE I / F) that perform various controls of the storage device. ),
  • the deduplication accelerators 123a and 123b and the switch 122 are mounted. Each component is connected to each other by a switch 122.
  • This interconnection interface is, for example, PCI-Express.
  • the present invention is not limited to PCI-Express as a connection interface in the storage controller.
  • the present invention is not limited to the components shown in FIG. 1 as components in the storage controller 110.
  • the storage controller 110 may include an accelerator that encrypts data or performs lossless compression.
  • the DRAM 125 is a temporary storage area that functions as a cache or a buffer in the storage apparatus 100.
  • the DRAM 125 also functions as a data buffer and a hash buffer (details will be described later) required when the storage controller 110 performs deduplication.
  • FE I / F121 is an interface for connecting to a plurality of servers that make various requests for storage, and is FC (Fibre Channel), Ethernet (registered trademark), or the like.
  • FC Fibre Channel
  • Ethernet registered trademark
  • the present invention is not limited to FC and Ethernet (registered trademark) for the FE I / F121.
  • BE I / F124 is an interface for connecting to a plurality of HDDs / SSDs 130 installed in the storage apparatus 100, and includes SAS (Serial Attached SCSI), SATA (Serial ATA), NVMe (NVM Express), and the like. It should be noted that the present invention is not limited to SAS, SATA, and NVMe for BE I / F124.
  • the deduplication accelerators 123a and 123b are characteristic components of the present invention and are modules that perform various processes of the duplication determination process required at the time of performing deduplication in the storage controller 110 at high speed.
  • the deduplication accelerators 123a and 123b are characteristic components of the present invention and are modules that perform various processes of the duplication determination process required at the time of performing deduplication in the storage controller 110 at high speed.
  • an example in which two deduplication accelerators are mounted will be described, but the present invention is not limited to this number.
  • four deduplication accelerators may be installed. Details of this module will be described later with reference to FIG.
  • the storage device manages a plurality of HDDs / SSDs 130 as a single storage area 111 and provides an area for storing data in the server 102.
  • a RAID Redundant Arrays of Inexpensive Disks
  • the storage area protected by the RAID is provided to the server 102 as a virtual block area or a file system.
  • the data recorded from the server 102 is deduplicated for such a virtual block area or file system, and the duplication determination process in the deduplication is duplicated from the processor 120 in the storage controller 110 that has been conventionally performed. This is offloaded to the exclusion accelerators 123a and 123b.
  • the deduplication accelerator 123 is a general SSD SSD controller in which a hash generation unit 219, a hash transfer unit 216, and a hash search unit 218 described later are mounted.
  • the deduplication accelerator 123 is described as a device that performs various processes of the duplication determination process, but in addition to these operations, a general data write / read operation as an SSD is performed in parallel. It doesn't matter.
  • the deduplication accelerator 123 of this embodiment stores various data for duplication determination processing in the nonvolatile NAND flash memory (FM) 220 to be mounted, but the area other than the storage area is like a general SSD. It may be used as a user data storage area.
  • FM nonvolatile NAND flash memory
  • FIG. 2 is a diagram showing an internal configuration of the deduplication accelerator 123. As shown in FIG.
  • the deduplication accelerator 123 includes a deduplication accelerator controller 210 and a plurality of flash memory chips 221 (FM221) FM220.
  • FM221 flash memory chips 221
  • the FM 220 includes 32 FM 221s.
  • the deduplication accelerator controller 210 includes an embedded processor 215, a DRAM 213, a hash generation unit 219, a hash transfer unit 216, a hash search unit 218, an I / O interface 211, an FM interface 217, and a switch that mutually transfers data. It has 214.
  • the switch 214 connects the embedded processor 215, the DRAM 213, the hash generation unit 219, the hash transfer unit 216, the hash search unit 218, the I / O interface 211, and the FM interface 217 in the accelerator controller 210, and the data between each part is transmitted. Transfer by address or identifier (ID).
  • ID Transfer by address or identifier
  • FIG. 2 an example in which each hardware and hardware mounting logic are connected in a star shape to a single switch 214 will be described, but the present invention is limited to this example. It is not a thing. For example, it suffices to have a plurality of switches inside and connect each hardware and hardware implementation logic that need to be connected so that they can communicate with each other.
  • the I / O interface 211 is hardware implementation logic that connects to the host device. Each part of the accelerator controller 210 is connected via the switch 214. The I / O interface 211 transmits / receives various data to / from a host device. During the overlap determination process, determination target data that is a target for overlap determination is received from the host device.
  • the host device is, for example, the controller 110.
  • the embedded processor 215 is connected to each part of the accelerator controller 210 via the switch 214 and controls the accelerator controller 210 as a whole. In addition, the embedded processor 215 monitors the entire accelerator controller 210 with periodic information acquisition and interrupt reception functions. Furthermore, the embedded processor 215 polls through the I / O interface 211 whether the higher-level device needs duplicate determination processing. If it is detected that it is necessary, the I / O interface 211 receives the determination target data from the higher-level device and starts the duplication determination process.
  • the DRAM 213 is a volatile memory, and temporarily stores data being transferred in the accelerator controller 210. It also functions as a hash buffer (details will be described later) for duplication determination processing.
  • FM interface 217 is connected to FM220 by a plurality of buses (for example, 8).
  • a plurality of (for example, four) FM220s are connected to each bus, and a plurality of FM220s connected to the same bus are controlled independently using a CE (Chip Enable) signal that is also connected to the FM220.
  • CE Chip Enable
  • the FM interface 217 operates in response to a read / write request instructed by the embedded processor 215. If it is a read request, the stored data is read from at least one FM 221 in the FM 220, and if it is a write request, the data to be stored is transferred to at least one FM 221 in the FM 220.
  • the FM interface 217 has an ECC generation circuit and an ECC correction circuit. Write data with ECC added when writing data. Also, data correction is performed by ECC when reading data.
  • FM220 stores a hash table (details will be described later) for duplicate determination processing.
  • the hash generation unit 219 has a function of processing a hash generation algorithm.
  • the hash generation algorithm is, for example, MD5, SHA1, SHA256, or the like.
  • the present invention is not limited to MD5, SHA1, and SHA256 as a hash generation algorithm. Any value may be used as long as it is uniquely calculated from the data to be recorded and is representative of the value. In this embodiment, SHA256 having a very low probability (hash collision rate) of encountering different data having the same hash value is used.
  • the hash generation unit 219 generates a hash value from the determination target data received from the host device.
  • the hash transfer unit 216 determines an accelerator to perform a hash search based on the hash value generated by the hash generation unit 219, and controls the transfer of various data for that purpose.
  • the hash search unit 218 reads a part of the hash table from the FM 220 and searches whether the hash value matching the hash value generated by the hash generation unit 219 is included in the hash table. Thereafter, the hash table of FM 220 is updated based on the search result.
  • the switch 214, the I / O interface 211, the embedded processor 215, the FM interface 217, the hash generation unit 219, the hash transfer unit 216, and the hash search unit 218 described above are an ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate). Array) circuit. They may be composed of a single semiconductor element or a plurality of semiconductor elements connected to each other.
  • ASIC Application Specific Integrated Circuit
  • FPGA Field Programmable Gate
  • the storage apparatus 100 shown in FIG. 1 performs deduplication on recorded data and manages a data amount larger than a physical storage area. More specifically, one physical area is managed in association with a plurality of virtual areas. In this embodiment, the association between the physical area and the virtual area is managed by the file system. In other words, the virtual area is the concept of “file”, and the physical storage area is the HDD / SSD LBA (Logical Block Address).
  • FIG. 3 shows an example in which file data “FIle A” and “File B” exist, and these data are deduplicated and recorded in the physical area.
  • File A and File B are each divided into a plurality of 4 KB blocks and managed as “Blk A-1 to 3” and “Blk B-1 to 5”.
  • a division of a file into blocks will be described with a fixed length of 4 KB, but the present invention is not limited to this division method.
  • the division size may be smaller or larger than 4 KB, the file data may be divided into different sizes, or not even divided.
  • the file system of the present embodiment associates each block obtained by dividing the file with a fixed length of 4 KB with the HDD / SSD LBA which is a physical storage area.
  • the file system manages “Blk A-2” and “Blk B-3” in association with “LBA36” as indicated by 310.
  • the deduplication process for associating a plurality of virtual areas with one physical area is performed after the data is received from the server 102 and before being recorded in the storage area 111. This is because when the amount of data to be recorded in the physical area is R times (R ⁇ 1) due to deduplication, the data write amount when deduplication is performed before recording in the storage area 111 is reduced to R times.
  • the storage device 111 is configured by an SSD, the number of rewrites (lifetime) of the FM configuring the SSD is limited. Rather than deduplicating before recording in the storage area 111, deduplication before recording has a better effect of reducing the number of FM rewrites and extending the system life.
  • This embodiment describes the case where deduplication is performed before data is recorded, but the present invention is not limited to the case where deduplication is performed before data is recorded. For example, even if the same data is once recorded in the physical area, the same data can be found later, and deduplication can be applied.
  • duplication determination processing using a representative value is generally performed in deduplication. However, it is not complete to make a duplicate determination based on whether or not the representative values match. If there is a match, it simply indicates that there is a possibility of duplication, and if there is no match, it simply indicates that there is no duplication. Absent.
  • the candidate data that has the possibility of duplication is read, and the candidate data is completely identical to the judgment target data until the judgment target data is compared with the candidate data. I do n’t know.
  • the probability of determining that “there is a possibility of duplication” and “no duplication” after data comparison corresponds to the hash collision rate of the SHA256 algorithm, and is extremely small. If this probability is less than or equal to the data loss probability allowed by the system, there is no problem even if this data comparison is omitted.
  • the system according to the present embodiment assumes that the duplication determination error rate is equal to or less than the data loss probability allowed by the system, and determines duplication only by the duplication determination result of the deduplication accelerator.
  • FIG. 4 shows the types and locations of various buffers and tables in the storage controller 110.
  • the two write data buffers 400 and 401 are located in the DRAM 125 in the storage controller 110, and a plurality of 4 KB block data for which the hash generation units 219a and 219b in the deduplication accelerators 123a and 123b respectively perform hash generation are provided. This is a buffer for temporary storage.
  • the deduplication accelerators 123a and 123b obtain block data from the write data buffers 400 and 401, respectively.
  • the write data buffers 400 and 401 also store additional information regarding each block data. Specifically, a block data duplication determination result and a storage destination LBA. The information of the storage destination LBA changes depending on the result of the duplication determination.
  • the CPU 120 in the storage controller 110 is a multi-core processor and includes two cores 440 and 441.
  • these cores divide the file into 4 KB block data and distribute them to the two write data buffers 400 and 401.
  • the deduplication accelerators 123a and 123b obtain block data from the write data buffers 400 and 401, respectively, and perform duplication determination processing. Block data is basically distributed evenly in round robin to the write data buffers 400 and 401. However, if there is a difference in processing time when the deduplication accelerators 123a and 123b perform duplication determination, the cores 440 and 441 May distribute more block data in the shorter processing time and level the processing time of both.
  • the even hash table 430 is stored in the FM 220a in the deduplication accelerator 123a, and the hash value of the 4 KB block data constituting the file stored in the storage device 100 is registered as an even number (even hash). Yes.
  • the even hash table 430 manages the correspondence between the duplication count of the block data that is the generation source of each even hash and the storage destination LBA.
  • the hash search unit 218a in the deduplication accelerator 123a reads a part of the even hash table 430 into the DRAM 213a and uses it.
  • the hash search unit 218a adds 1 to the corresponding duplicate count when a matching hash is found, and obtains the storage destination LBA. If not found, the searched even hash is newly registered in the even hash table 430.
  • the odd hash table 431 is stored in the FM 220b in the deduplication accelerator 123b, and the hash value of the 4 KB block data constituting the file stored in the storage device 100 is registered as an odd number (odd hash). Yes.
  • the odd hash table 431 manages the correspondence between the duplication count of the block data that is the generation source of each odd hash and the storage destination LBA.
  • the hash search unit 218b in the deduplication accelerator 123b reads a part of the odd hash table 431 to the DRAM 213b and uses it.
  • the hash search unit 218b adds 1 to the corresponding duplicate count when a matching hash is found, and acquires the storage destination LBA. If not found, the searched odd hash is additionally registered in the odd hash table 431.
  • the duplication count managed by the even hash table 430 and the odd hash table 431 is the number of block data that is the source of each hash being duplicated in the file system. When block data is not duplicated, the duplicate count corresponding to the hash value is 1.
  • the even hash table 430 and the odd hash table 431 are described in the table format.
  • the hash table 430 and the odd hash table 431 need not be in the table format as long as they are information for managing hash values.
  • the even hash local buffer 420 is located in the DRAM 213a in the deduplication accelerator 123a, and is a buffer for temporarily storing a plurality of even hashes in which the deduplication accelerator 123a searches the even hash table 430.
  • the even hash local buffer 420 also stores additional information regarding each even hash. Specifically, the duplication determination result of the block data that is the generation source of the even hash and the storage destination LBA.
  • the odd hash local buffer 421 is located in the DRAM 213b in the deduplication accelerator 123b, and is a buffer for temporarily storing a plurality of odd hashes for the deduplication accelerator 123b to search the odd hash table 431.
  • the odd hash local buffer 421 also stores additional information regarding each odd hash. Specifically, the duplication determination result of the block data that is the generation source of the odd hash and the storage destination LBA.
  • the even hash shared buffer 410 is located in the DRAM 125 in the storage controller 110, and when the deduplication accelerator 123b requests the deduplication accelerator 123a to search for an even hash, a plurality of target even hashes are temporarily stored. It is a buffer for storing in.
  • the even hash shared buffer 410 also stores additional information regarding each even hash. Specifically, the duplication determination result of the block data that is the generation source of the even hash and the storage destination LBA.
  • the odd hash shared buffer 411 is located in the DRAM 125 in the storage controller 110, and when the deduplication accelerator 123a requests the deduplication accelerator 123b to search for an odd hash, a plurality of target odd hashes are temporarily stored. It is a buffer for storing in.
  • the odd hash shared buffer 411 also stores additional information regarding each odd hash. Specifically, the duplication determination result of the block data that is the generation source of the odd hash and the storage destination LBA.
  • the two write data buffers 400 and 401, the even hash shared buffer 410, and the odd hash shared buffer 411 located in the DRAM 125 are mapped to an accessible memory space not only by the CPU 120 but also by the two deduplication accelerators 123a and 123b. ing.
  • the system agent 450 in the CPU 120 is a high-speed switch included in recent CPUs for realizing low latency communication, and incorporates the function of a conventional CPU external chipset.
  • the deduplication accelerators 123a and 123b can freely access the two write data buffers 400 and 401, the even hash shared buffer 410, and the odd hash shared buffer 411 via the system agent 450 without the intervention of the cores 440 and 441.
  • FIG. 5 shows an example of information recorded in the various buffers and tables described with reference to FIG. Specifically, after File A in FIG. 3 is written to the storage apparatus 100, the storage apparatus 100 that has received the write request for File B in FIG. 3 performs deduplication before recording in the storage area 111. It shows a state in the middle. Specifically, out of the five block data that make up File B, Blk B-1 to B-4 have already completed duplication determination processing, and Blk B-5 has completed hash generation, but it still has duplication determination. It is a state that has not been done.
  • the CPU 120 In response to the File B write request, the CPU 120 distributes the five block data constituting File B to the write data buffers 400 and 401.
  • Blk B-1, B-3, and B-5 are distributed to the write data buffer 400
  • Blk B-2 and B-4 are distributed to the write data buffer 401.
  • the deduplication accelerators 123a and 123b themselves acquire block data from the write data buffers 400 and 401, respectively, and generate a hash.
  • the deduplication accelerator 123a stores the even hash of Blk B-1 and B-5 generated by itself in the even hash local buffer 420 and searches the even hash table 430 managed by itself, but the Blk generated by itself.
  • the odd hash of B-3 is stored in the odd hash shared buffer 411, and the deduplication accelerator 123b is requested to search the odd hash table 431.
  • the deduplication accelerator 123b stores the odd hash of the Blk B-4 generated by itself in the odd hash local buffer 421 and searches the odd hash table 431 managed by itself, but the Blk B-2 of the Blk B-2 generated by itself is searched.
  • the even hash is stored in the even hash shared buffer 410, and the deduplication accelerator 123a is requested to search the even hash table 430.
  • the deduplication accelerator 123a obtains an even hash from the even hash local buffer 420 and the even hash shared buffer 410, searches the even hash table 430 for a match with those, and the result (Hit: match, Miss: No match) is written in the duplicate determination result column corresponding to each hash. Since Blk B-1 and B-2 do not overlap, the result is Miss. Blk B-5 is not yet judged, so the result is not written. In the situation of FIG. 5, since it is not known whether there is an overlap in Blk B-5, LBA 42 is written as a temporary address in the storage destination LBA column of Blk B-5. The temporary address is determined before the CPU 120 deduplicates. This field is updated to the duplicate partner's stored LBA if it is determined that it is duplicated, but if it is determined that it is not duplicated thereafter, it is not updated, and the temporary address LBA 42 is actually Confirm as the storage LBA.
  • the deduplication accelerator 123b obtains the odd hash from the odd hash local buffer 421 and the odd hash shared buffer 411, searches whether there is a match with them in the odd hash table 431, and the result (Hit: match, Miss: No match) is written in the duplicate determination result column corresponding to each hash. Since BlkHB-3 overlaps with Blk A-2, the result is Hit. The result is Miss because Blk B-4 does not overlap.
  • the hash of Blk B-1 and B-2 is additionally registered in the even hash table 430.
  • the odd hash table 431 the duplication count corresponding to the hash of Blk A-2 is increased from 1 to 2, and the hash of Blk B-4 is additionally registered.
  • the deduplication accelerator 123a transfers the duplication determination result (Blk B-1 Miss) by its own even hash search to the duplication determination result of the write data buffer 400.
  • the odd hash search requested to the deduplication accelerator 123b is completed and it is detected that a duplicate determination result (Hit of Blk B-3) is written in the odd hash shared buffer 411, it is acquired and written. This is transferred to the duplication judgment result of the data buffer 400.
  • the duplicate elimination accelerator 123b transfers the duplicate judgment result (BlkBB-4 Miss) by its odd hash search to the duplicate judgment result of the write data buffer 401.
  • the even hash search requested to the deduplication accelerator 123a is completed, and it is detected that a duplicate determination result (Miss of Blk B-2) is written in the even hash shared buffer 410, it is acquired and written. Transferred to the duplication judgment result of the data buffer 401.
  • the CPU 120 confirms that the duplication judgment result from Blk B-1 to B-4 is written in the write data buffers 400 and 401, and the duplication judgment from Blk B-1 to B-4 has been completed. Can know.
  • 300 indicates that a temporary address has been set for the storage LBA corresponding to each block data of File B immediately before receiving the file B write request and before duplication determination. is there.
  • the stored LBA corresponding to Blk B-3 is updated from the temporary address LBA 40 to LBA36, but Blk B-1,
  • the temporary addresses are determined as they are as the actual storage LBAs.
  • the CPU 120 of the storage controller 110 divides the data requested to be written from the server 102 into 4 KB block data and distributes it to the write data buffers 400 and 401 in the DRAM 125 (S620).
  • the hash generation unit 219a of the deduplication accelerator 123a detects that there is block data before duplication determination in the write data buffer 400 in the DRAM 125, it acquires the block data therefrom (S600).
  • the hash generation unit 219b of the deduplication accelerator 123b detects that there is block data before duplication determination in the write data buffer 401 in the DRAM 125, it acquires the block data therefrom (S610).
  • the hash generation unit 219a of the deduplication accelerator 123a generates a hash of the acquired block data and passes it to the hash transfer unit 216a (S601).
  • the hash generation unit 219b of the deduplication accelerator 123b generates a hash of the acquired block data and passes it to the hash transfer unit 216b (S611).
  • the hash transfer unit 216a of the deduplication accelerator 123a checks whether the hash value is an even number (S602). If it is false (odd number), the hash is transferred to the odd hash shared buffer 411 in the DRAM 125 (S603). If true (even), the hash is transferred to the even hash local buffer 420 in the DRAM 213a (S604).
  • the hash transfer unit 216b of the deduplication accelerator 123b checks whether the hash value is an odd number (S612). If false (even), the hash is transferred to the even hash shared buffer 410 in the DRAM 125 (S613). If true (odd), the hash is transferred to the odd hash local buffer 421 in the DRAM 213a (S614).
  • the hash search unit 218a of the deduplication accelerator 123a detects that there is an even hash before duplication determination in the even hash local buffer 420 in the DRAM 213a or the even hash shared buffer 410 in the DRAM 125, the even hash (S700 and S701, respectively).
  • the order of acquisition is basically alternate, but when the difference in the number of even hashes before the duplication judgment between both is greater than a predetermined reference. You may get it with higher priority.
  • the hash search unit 218a reads a part 430 of the even hash table from the FM 220a and searches for the even hash (S702).
  • the hash search unit 218a reads a table in a range where the higher-order x bits of the hash subject to duplication determination match.
  • the hash search unit 218a determines whether a match with the hash that is the object of duplication determination is found (Hit) or not found (Miss) (S703).
  • the hash search unit 218a acquires the storage destination LBA of the duplicate partner block from the even hash table 430 (S704), and writes the result obtained by adding 1 to the duplicate partner duplicate count to the FM 220a (S705).
  • Miss a new entry of the searched hash is created in the even hash table 430 (S706) and added to the FM 220a (S707).
  • the hash search unit 218a If the even hash has been acquired from the even hash local buffer 420 in S700, the hash search unit 218a writes the duplicate determination result (Hit or Miss) corresponding to the even hash in the even hash local buffer 420. Further, the hash search unit 218a updates the storage destination LBA in the even-hash local buffer 420 in the case of Hit, with the storage destination LBA of the duplication partner, and in the case of Miss, determines the temporary storage destination LBA as the actual storage destination LBA. (S708).
  • the hash search unit 218a If the even hash is acquired from the even hash shared buffer 410 in S701, the hash search unit 218a writes the duplication determination result (Hit or Miss) corresponding to the even hash in the even hash shared buffer 410. At this time, the hash search unit 218a updates the storage destination LBA with the duplicated storage destination LBA in the case of Hit, and sets the temporary storage destination LBA as the actual storage destination LBA in the case of Miss. Determine (S709).
  • the hash search unit 218b of the deduplication accelerator 123b detects that there is an odd hash before duplication determination in the odd hash local buffer 421 in the DRAM 213b or the odd hash shared buffer 411 in the DRAM 125, the odd hash is acquired. (S710 and S711, respectively).
  • the order of acquisition is basically alternate, but when the difference in the number of odd hashes before duplication judgment between both is greater than a predetermined reference. You may get it with higher priority.
  • the hash search unit 218b reads a part of the odd hash table from the FM 220b and searches for the odd hash (S712).
  • the hash search unit 218b If the odd hash has been acquired from the odd hash local buffer 421 in S710, the hash search unit 218b writes the duplicate determination result (Hit or Miss) corresponding to the odd hash in the odd hash local buffer 421. Further, the hash search unit 218b updates the storage destination LBA in the odd hash local buffer 421 in the case of Hit, with the storage destination LBA of the duplication partner, and in the case of Miss, determines the temporary storage destination LBA as the actual storage destination LBA. (S718).
  • the hash search unit 218b If the odd hash has been acquired from the odd hash shared buffer 411 in S711, the hash search unit 218b writes the duplication judgment result (Hit or Miss) corresponding to the odd hash in the odd hash shared buffer 411. At this time, the hash search unit 218b updates the storage destination LBA in the odd hash shared buffer 410 in the case of Hit with the storage destination LBA of the duplication partner, and in the case of Miss, the temporary storage destination LBA as the actual storage destination LBA. Determine (S719).
  • the duplicate determination result is stored.
  • the destination LBA is acquired (S606 and S605, respectively). Then, this is transferred to the duplicate determination result and storage destination LBA fields of the write data buffer 400 of the DRAM 125 (S607).
  • the hash transfer unit 216b of the deduplication accelerator 123b detects that there is a hash with a duplicate determination result in the odd hash local buffer 421 in the DRAM 213b or the even hash shared buffer 410 in the DRAM 125, the duplicate determination result And the storage destination LBA are acquired (S616 and S615, respectively). Then, this is transferred to the duplicate determination result and storage destination LBA fields of the write data buffer 401 of the DRAM 125 (S617).
  • the CPU 120 of the storage controller 110 detects in the write data buffers 400 and 401 of the DRAM 125 that there is block data for which a duplication judgment result has been obtained, the CPU 120 obtains the duplication judgment result and the storage destination LBA (S621). Based on this result, the CPU 120 determines where to store the block data constituting the file in the storage area 111 for the file requested to be written from the server 102. Specifically, the following processing is performed.
  • the duplication determination result is Miss
  • the CPU 120 stores the block data stored in the write data buffers 400 and 401 in the HDD / SSD 130 configuring the storage area 111 according to the storage destination LBA. Thereafter, the CPU 120 deletes the block data from the write data buffer. If the duplication determination result is Hit, the CPU 120 changes the block data storage destination LBA as shown in FIG. 3, and deletes the block data from the write data buffer.
  • the file has been deduplicated.
  • the CPU 120 is not involved in the procedure of such duplication determination processing, which changes depending on whether the hash value generated from the block data is even or odd, Only distribution of block data and acquisition of duplicate determination results are performed.
  • hash generation and search are shared by two deduplication accelerators, thereby achieving double deduplication processing performance compared to a configuration using one deduplication accelerator. Further, at that time, it is possible to prevent the CPU 120 from being subjected to a load for controlling the two deduplication accelerators.
  • the storage controller 110 and the two deduplication accelerators 123a and 123b are separately provided with a data buffer, a hash shared buffer, and a hash local buffer as shown in FIG. 4 for file deletion in order to cancel deduplication.
  • the hash generation unit and the hash transfer unit perform hash generation processing and distribution control of search target hashes according to even / odd hash values, as in the case of file write.
  • the hash search unit performs an operation different from that at the time of file write when the hash search is hit. That is, the duplication count is decremented by 1, and when the duplication count becomes 0 as a result, the hash entry is deleted from the hash table. Note that the hash search cannot be missed as long as the file system is operating normally.
  • the person in charge of the hash table is assigned to the two deduplication accelerators 123a and 123b according to whether the hash value is even or odd.
  • the invention is not limited to this distribution method. Anything can be used as long as the range of values that the hash can take can be divided into two. For example, it may be sorted according to whether the most significant bit of the hash value is 1 or 0.
  • the distribution method may be uneven. For example, if the processing capability of the deduplication accelerator 123a is 3 times better than 123b, 75% of the range of values that the hash can take is managed with the hash table in 123a, and the remaining 25% is hashed in 123b. Manage with a table. By doing so, the duplication determination processing of both can be completed in substantially the same time, and the system performance is optimized.
  • duplication determination processing has been performed using two deduplication accelerators, but N is an integer of 3 or more. It is possible to perform duplication determination processing using N deduplication accelerators and further speed up deduplication.
  • N deduplication accelerators an implementation method in that case will be described.
  • N write data buffers are installed in DRAM125, one for each accelerator.
  • the CPU 120 evenly distributes block data obtained by dividing the file requested to be written from the server 102 into units of 4 KB to those buffers (if there is a difference in the processing performance of the accelerator, it may be uneven).
  • the hash generation unit of each accelerator acquires block data from the assigned write data buffer and generates a hash.
  • the hash table is divided into N pieces according to the remainder obtained by dividing the hash value by N.
  • N accelerators share them and store them in FM for management. For example, assuming that M is an integer from 0 to N-1, the M-th accelerator manages a hash table of hash values whose remainder is divided by N, and the hash search unit has a remainder that is divided by N Search for the hash of.
  • the hash transfer unit obtains a remainder obtained by dividing the hash value generated by the hash generation unit by N, and determines an accelerator for hash search according to the numerical value. For example, the hash transfer unit of the Mth accelerator transfers the hash to its own hash local buffer if the obtained remainder K (K is an integer from 0 to N-1) is equal to M, and the hash search unit uses its own hash search unit. A hash search is performed. If the remainder K is not equal to M, the hash search is requested to the Kth accelerator.
  • N hash shared buffers are installed in DRAM125 when accelerators request each other for hash search.
  • the buffer to be used is divided according to the remainder obtained by dividing the hash value by N. For example, when the hash transfer unit of the Mth accelerator requests the Kth accelerator to search for a hash whose remainder is K divided by N, the hash transfer unit transfers the hash to the Kth hash shared buffer.
  • the hash search unit of the Kth accelerator acquires a hash from the Kth hash shared buffer or its own hash local buffer, and performs a hash search.
  • the duplication judgment result is returned to the buffer from which the hash has been acquired, and the duplication judgment result is finally written in the N write data buffers in the DRAM 125, as in the case of the configuration with two deduplication accelerators.
  • the CPU 120 determines where to store the block data constituting the file in the storage area 111 for the file requested to be written from the server 102 based on this result. That is, the file has been deduplicated.
  • the CPU 120 changes according to the remainder obtained by dividing the hash value generated from the block data by N, and is not involved in such duplication determination processing procedure, and distributes block data and obtains the duplication determination result. Just do it.
  • N deduplication accelerators share hash generation and search, thereby realizing N times as many duplication determination processing performances as in the configuration using one deduplication accelerator. Can do. In other words, no matter how high the file write performance requirement is required for the storage device 100, by installing the required number of deduplication accelerators 123 in the storage device 100 and performing the duplication determination processing according to the present invention, Performance requirements can be achieved. Further, at that time, no matter how many deduplication accelerators are provided, it is possible to prevent the CPU 120 from being subjected to a load for controlling them.
  • the hash table is distributed to N according to what is the remainder after dividing by N.
  • the distribution method is limited to this as in the case of the configuration with two deduplication accelerators. It is not something. Any value can be used as long as the range of values that the hash can take can be divided into N.
  • the distribution method may be uneven.
  • the range of values that can be taken by the hash is divided into N sections by proportional distribution, and a hash table for each section is constructed so that N deduplication accelerators Share and manage.
  • the hash shared buffer (410 and 411 in FIG. 4) has been installed in the DRAM 125 in the storage controller 110, but the present invention determines the location of the hash shared buffer. It is not limited to a place. For example, it may be installed in the DRAM 213 in each deduplication accelerator 123. In this case, the duplication determination process only changes the DRAM to be read and written when accessing the hash shared buffer.
  • the effect of high performance brought about by the present invention is also the same as the effect of the configuration described so far.
  • the CPU 120 monitors the contents of the hash shared buffer on the DRAM 125 located in the immediate vicinity, it is easy to determine which accelerator is requesting which accelerator to perform a hash search and how many judgment results are returned. This is because it can be grasped. For example, when it is detected that a search request from a certain accelerator has not been received for a long time, it is understood that the hash transfer unit of the accelerator has failed. For example, when it is detected that a certain accelerator does not return a determination result for a long time, it is understood that the hash search unit of the accelerator has failed.
  • Hash table storage medium In the above description, the hash table (430 and 431 in FIG. 4) is stored in the FM 200 in the deduplication accelerator 123. It is not limited to a place. For example, PRAM (phase change memory) or ReRAM (resistance change type memory) may be used as the non-volatile memory similar to FM220. A volatile memory such as DRAM 213 may be used. However, in that case, the deduplication accelerator 123 includes a mechanism for backing up the hash table to a nonvolatile memory such as the FM 200 before the power is turned off.
  • PRAM phase change memory
  • ReRAM resistance change type memory
  • CPU 120 recognizes the number of deduplication accelerators 123 connected. Then, based on “(7) Hash table allocation” and “(8) Installation of three or more deduplication accelerators”, the hash allocation to be assigned to each deduplication accelerator is determined. Then, the CPU 120 determines the respective addresses in order to set the same number of hash shared buffers and write data buffers as the number of deduplication accelerators 123 to be distributed in the DRAM 125. The CPU 120 notifies each deduplication accelerator 123 of the hash to be handled. In addition, each deduplication accelerator 123 is notified of the addresses of all hash shared buffers. Further, each deduplication accelerator 123 is notified of the address of the write data buffer for each charge.
  • the order in which the CPU 120 notifies the deduplication accelerator 123 of information may be switched.
  • the CPU 120 may notify each information to the deduplication accelerator 123 with separate notification commands, or may notify all information with one notification command.
  • the CPU 120 receives a completion response to the notification command from each deduplication accelerator 123, the CPU 120 can start duplication determination processing. As a result, the CPU 120 can appropriately cause each deduplication accelerator 123 to share duplication determination processing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ライト要求されたファイルを構成する複数のブロックデータの重複排除を行うシステムであって、それぞれが重複判定処理をする複数のアクセラレータと、ブロックデータを各アクセラレータに分配するための複数のデータバッファを備える第一メモリと、を備える。複数のアクセラレータのそれぞれは、ブロックデータの重複判定を行うために用いるハッシュテーブルを分担して格納する第二メモリを備え、ブロックデータからハッシュ値を生成する手段と、前記ハッシュテーブルから前記ハッシュ値を探索する手段と、を備える。

Description

データを重複排除するシステム
 本発明は、データを重複排除するシステムに関する。
 データ記録は、コンピュータシステムの基本的な機能である。多くのコンピュータシステムでは、データをコンピュータシステム内の何らかの記憶媒体に格納し、その格納先を管理する処理を行っている。こうしたデータの保持コストは、簡単な定義(ランニングコスト等を考慮しない)において、記憶媒体のビットコスト(記憶媒体の価格÷記憶媒体の容量)と記録データ量の積として算出される。
 近年、データの保持コスト削減を目的として、記憶媒体に記録するデータ量を削減する技術が広く用いられている。こうしたデータ量削減技術の一つに重複排除がある。
 重複排除とは、物理領域より大きな仮想領域を作成し、ある仮想領域にデータを記録する際、物理記録媒体に同一のデータが既に格納されているか探索し、同一のデータが既に可能されていた場合には、データを物理領域に新たに記憶せず、同一データが既に格納されている物理領域を、仮想領域に対応付けて管理する技術である。このように、重複排除によって、一つの物理領域に記録されたデータを複数の仮想領域に対応付けて管理するため、仮想領域に同一データを複数記録するシステムにおいては、物理領域以上のデータを保持し管理する事が可能となる。
 この重複排除技術は、物理領域に既に同一データが格納されているかを探索する処理(以降、重複判定処理と呼ぶ)を含む。重複排除を行う多くのシステムは、重複判定管理情報(記録データ毎のハッシュ値とそれに対応する物理領域とを管理する情報)を管理しており、記録データから算出したハッシュ値はそこに登録される。新たにデータを記録する際に、そのデータから算出したハッシュ値と同一のハッシュ値がこの重複判定管理情報に既に登録されているかを探索することで重複判定処理を行う。この処理には時間を要する為、一般的に重複排除を行うシステムはデータ記録時の性能が低下する。
 特許文献1では、既に保持しているデータについて、そのデータ内容から一意に算出されるハッシュ値を保持する。そして、新たにデータを記録する際にデータからハッシュ値を算出し、このハッシュ値と同一のハッシュ値がシステム内に記録されているかを探索することで、データを直接比較する頻度を低減する。さらに、特許文献1では、システムを制御する主プロセサとは別に、データからハッシュ値を算出するアクセラレータを搭載し、ハッシュ値を算出する時間を削減する技術について開示されている。
US 2013/0018853
特許文献1では、重複判定処理を高速化するため、ハッシュ値演算を高速に行うアクセラレータを搭載した例について開示されているが、重複判定管理情報において同一のハッシュ値を探索する処理をアクセラレータが実施する技術は開示されていない。さらに、重複判定処理を一台のアクセラレータの能力を超えて高速化したい場合に、複数台のアクセラレータを用いる技術も開示されていない。
 ライト要求されたファイルを構成する複数のブロックデータの重複排除を行うシステムであって、それぞれが重複判定処理をする複数のアクセラレータと、ブロックデータを各アクセラレータに分配するための複数のデータバッファを備える第一メモリと、を備える。複数のアクセラレータのそれぞれは、ブロックデータの重複判定を行うために用いるハッシュテーブルを分担して格納する第二メモリを備え、ブロックデータからハッシュ値を生成する手段と、前記ハッシュテーブルから前記ハッシュ値を探索する手段と、を備える。
重複排除を行うシステムが、重複排除のための重複判定処理を複数台のアクセラレータに分担して行わせることができるため、重複判定処理の高速化を実現できる。
システムの内部構成を示す。 重複排除アクセラレータの内部構成を示す。 重複排除の概要を示す。 データバッファ、ハッシュバッファ、ハッシュテーブルの配置を示す。 データバッファ、ハッシュバッファ、ハッシュテーブルの使用例を示す。 ハッシュの生成(Generate)と転送(Route)のフローチャートを示す。 ハッシュの探索(Search)のフローチャートを示す。 実施形態の概要を示す。
 まず、図8を用いて、本実施形態の概要を説明する。本実施形態のシステム10は、例えばストレージ装置や、サーバである。システム10は、ライト要求されたファイルを構成するブロックデータの重複排除のための重複判定処理をする重複排除アクセラレータ123を複数台備える。システム10のDRAM125内に、ブロックデータを各重複排除アクセラレータ123に分配するためのライトデータバッファ400及びライトデータバッファ401を備える。ライトデータバッファは重複排除アクセラレータ123の数だけ存在し、1つのライトデータバッファが1つの重複排除アクセラレータに対応付けられている。
 各重複排除アクセラレータ123は、ブロックデータからハッシュ値を生成する手段を備える。
 各重複排除アクセラレータ123のメモリ内に、ブロックデータの重複判定を行うために用いるハッシュテーブルが分担して格納される。ハッシュテーブルは、ハッシュ値に基づいて分担されている。例えば、ハッシュテーブルは、ハッシュ値が偶数か奇数かで分担される。本実施形態では、重複排除アクセラレータ123aは偶数のハッシュ値を格納する偶数ハッシュテーブルを備え、重複排除アクセラレータ123bは奇数のハッシュ値を格納する奇数ハッシュテーブルを備える。
 各重複排除アクセラレータ123は、各重複排除アクセラレータ内のハッシュテーブルからハッシュ値が存在するかを探索する手段を備える。
 これにより、重複排除を行うシステム10が、重複排除のための重複判定処理を複数台のアクセラレータに分担して行わせることができるため、システムに要求された書き込み性能に合わせた重複判定処理の高速化を実現できる。
 さらに、本実施形態のシステム10は、以下の構成を備える。
 システム10のDRAM125内に、複数台の重複排除アクセラレータ123間でハッシュを転送するためのハッシュ共有バッファを備える。
 各重複排除アクセラレータ123は、ブロックデータのハッシュの値に基づいて、自身が格納するハッシュテーブルが探索先であるか、その他のアクセラレータが格納するハッシュテーブルが探索先であるかを判断する。
 自身が格納するハッシュテーブルが探索先である場合は、自身が備えるハッシュテーブルを用いてハッシュ探索を行う。重複排除アクセラレータ123は、そのハッシュ探索で得られた重複判定結果をシステム10のDRAM125内の自身に対応するデータバッファに書く。
 その他の重複排除アクセラレータ123が格納するハッシュテーブルが探索先である場合は、ハッシュ共有バッファにそのハッシュ値を転送する。
 各重複排除アクセラレータ123は、自身が格納するハッシュテーブルで探索可能なハッシュ値を、ハッシュ共有バッファから取得し、自身が備えるハッシュテーブルを用いてハッシュ探索を行う。各重複排除アクセラレータ123は、そのハッシュ探索で得られた重複判定結果をハッシュ共有バッファに書く。
 ハッシュ共有バッファにハッシュ値を転送したアクセラレータは、そのハッシュ探索で得られた重複判定結果を取得し、それをシステム10のDRAM125内のデータバッファに書く。
 最後に、システムのCPUは、データバッファから重複判定結果を取得し、それに基づいて、ライト要求されたファイルを構成するブロックデータの格納を行う。
 以上のように、複数台の重複排除アクセラレータはCPUを介さずに120ハッシュ値を転送し、重複排除アクセラレータ間で重複判定処理を実行することができる。これにより、重複排除を制御する負荷がシステム10のCPU120にかからないようにすることができる。
 (1)システム構成
 図1を用いて、本発明が適用されるシステム構成について説明する。図1は、本発明が適用されるシステムの例の概要について示しており、本発明は、図1を例とするシステムに適用可能なものである。
 図1は、複数台のサーバ102が、ネットワーク101を経由してストレージ装置100と接続する構成を示している。サーバ102は、データを管理するために、ストレージ装置100に対して、ネットワーク101を介してリード及びライト等の各種要求を行う。なお、サーバ102とストレージ装置100は直接接続されていてもよい。
 ストレージ装置100は、同一の機能を有するストレージコントローラ110を装置の高信頼化のために2台搭載し、データを保持する記憶媒体としてHDD(Hard Disk Drive)やSSD(Solid State Drive)(以降HDD/SSDと記す)130を複数台搭載している。尚、本実施例では、ストレージコントローラ110が2台の例について記すが、本発明はこのコントローラ数に限定されるものではない。例えば、ストレージ装置には、ストレージコントローラ110が1台のみ搭載されてもよいし、3台以上搭載されてもよい。
 ストレージコントローラ110は、内部にストレージ装置の各種制御を行うプロセサ(CPU)120、DRAM125、、フロントエンドインターフェース121(以降FE I/Fと記す。)、バックエンドインターフェース124(以降BE I/Fと記す)、、重複排除アクセラレータ123a及び123b、スイッチ122の各コンポーネントを搭載する。また各コンポーネントは、スイッチ122にて相互に接続されている。この相互接続インターフェースは例えばPCI-Expressである。尚、本発明は、ストレージコントローラ内の接続インターフェースとして、PCI-Expressに限定されるものではない。
 また、本発明はストレージコントローラ110内のコンポーネントとして図1に示すコンポーネントに限定されるものではない。例えば、ストレージコントローラ110にはデータを暗号化したり、可逆圧縮したりするアクセラレータ等を搭載しても良い。
 DRAM125は、ストレージ装置100内においてキャッシュやバッファとして機能する一時記憶領域である。DRAM125は、ストレージコントローラ110が重複排除を行う際に必要な、データバッファやハッシュバッファ(詳細は後述)としても機能する。
 FE I/F121は、ストレージに各種要求を行う複数のサーバと接続するためのインターフェースであり、FC(Fibre Channel)やEthernet(登録商標)等である。尚、本発明は、FE I/F121について、FC及びEthernet(登録商標)に限定するものではない。
 BE I/F124は、ストレージ装置100に搭載される複数のHDD/SSD130と接続する為のインターフェースであり、SAS(Serial Attached SCSI)やSATA(Serial ATA)、NVMe(NVM Express)等がある。尚、本発明は、BE I/F124について、SAS、SATA、NVMeに限定されるものではない。
 重複排除アクセラレータ123a及び123bは、本発明の特徴的なコンポーネントであり、ストレージコントローラ110にて重複排除を行う際に必要な、重複判定処理の各種処理を高速に行うモジュールである。本実施例では重複排除アクセラレータを2台搭載する例について記すが、本発明はこの台数に限定されるものではない。例えば、重複排除アクセラレータを4台搭載するとしてもよい。このモジュールの詳細については、図2を用いて後述する。
 ストレージ装置は、複数のHDD/SSD130を纏めて一つの記憶領域111として管理し、サーバ102にデータを記憶するための領域を提供する。このとき、HDD/SSD130の故障によってデータを消失しないように記憶領域111の中でRAID(Redundant Arrays of Inexpensive Disks)を構成し、複数台のHDD/SSD130の故障に対応する。そして、このRAIDにより保護された記憶領域を仮想ブロック領域や、ファイルシステムとしてサーバ102に提供する。本実施例では、こうした仮想ブロック領域、またはファイルシステムに対して、サーバ102より記録するデータを重複排除し、重複排除における重複判定処理を、従来実施してきたストレージコントローラ110内のプロセサ120から、重複排除アクセラレータ123a及び123bにオフロードするものである。
 (2)重複排除アクセラレータの構成
 次に、図2を用いて本発明が適用される重複排除アクセラレータ123(図1の123aまたは123b)の内部構成について説明する。尚、本実施例の重複排除アクセラレータ123は、一般的なSSDのSSDコントローラに後述のハッシュ生成ユニット219、ハッシュ転送ユニット216、ハッシュ探索ユニット218を搭載したものである。なお、本実施例における、重複排除アクセラレータ123は、重複判定処理の各種処理を実施する装置として記述するが、こうした動作以外に一般的なSSDとしてのデータ書き込み・読み出し動作を平行して実施するとしても構わない。本実施例の重複排除アクセラレータ123は、搭載する不揮発性のNAND型フラッシュメモリ(FM)220に重複判定処理のための各種データを格納するが、その格納領域以外の領域を一般的なSSDのようにユーザデータ記憶領域として用いても良い。
 図2は、重複排除アクセラレータ123の内部構成を示す図である。
 重複排除アクセラレータ123は内部に、重複排除アクセラレータコントローラ210と複数のフラッシュメモリチップ221(FM221)のFM220を備える。例えば、FM220は32個のFM221を含む。
 重複排除アクセラレータコントローラ210は、その内部に組み込みプロセサ215、DRAM 213、ハッシュ生成ユニット219、ハッシュ転送ユニット216、ハッシュ探索ユニット218、I/Oインターフェース211、FMインターフェース 217、及びデータ転送を相互に行うスイッチ214を備えている。
 スイッチ214は、アクセラレータコントローラ210内の組み込みプロセサ215、DRAM 213、ハッシュ生成ユニット219、ハッシュ転送ユニット216、ハッシュ探索ユニット218、I/Oインターフェース211、FMインターフェース217を接続し、各部位間のデータをアドレスまたは識別子(ID)によって転送する。尚、本実施例では、図2に示すように、単一のスイッチ214に各ハードウェア及びハードウェア実装論理がスター状に接続された例について記すが、本発明は、この例に限定されるものではない。例えば内部に複数のスイッチを有し、接続が必要な各ハードウェア及びハードウェア実装論理が通信可能なように接続されていればそれで良い。
 I/Oインターフェース211は、上位装置と接続するハードウェア実装論理である。スイッチ214を介してアクセラレータコントローラ210の各部位と接続する。I/Oインターフェース211は、上位装置との間で各種データを送受信する。重複判定処理時には重複判定対象となる判定対象データを上位装置から受信する。上位装置は、例えばコントローラ110である。
 組み込みプロセサ215は、スイッチ214を介してアクセラレータコントローラ210の各部位と接続し、アクセラレータコントローラ210全体を制御する。また、組み込みプロセサ215は、定期的な情報取得、及び割り込み受信機能によって、アクセラレータコントローラ210全体を監視する。さらに、組み込みプロセサ215は、I/Oインターフェース211を通じて、上位装置が重複判定処理を必要としているかをポーリングする。必要と検知した場合には、I/Oインターフェース211に上位装置からの判定対象データの受信を行わせ、重複判定処理を開始する。
 DRAM213は、揮発性メモリであり、アクセラレータコントローラ210内での転送中のデータを一時的に格納する。また、重複判定処理のためのハッシュバッファ(詳細は後述)としても機能する。
 FMインターフェース217は、複数バス(例えば8)によってFM220と接続する。各バスには複数(例えば4)のFM220を接続し、同じくFM220に接続されるCE(Chip Enable)信号を用い、同一バスに接続された複数FM220を独立して制御する。
 FMインターフェース217は、組み込みプロセサ215より指示されるリード/ライト要求に応じて動作する。もし、リード要求であればFM220内の少なくとも1つのFM221から格納データをリードし、ライト要求であれば格納すべきデータをFM220内の少なくとも1つのFM221に転送する。
 また、FMインターフェース217はECC生成回路、ECC訂正回路を有する。データ書き込み時にデータに対してECCを付加して書き込む。また、データ読み出し時にECCによってデータ訂正を行う。
 FM220は、重複判定処理のためのハッシュテーブル(詳細は後述)を格納する。
 ハッシュ生成ユニット219は、ハッシュ生成アルゴリズムを処理する機能を有する。ハッシュ生成アルゴリズムは、例えばMD5、、SHA1、、SHA256等である。尚本発明は、ハッシュ生成アルゴリズムとしてMD5、、SHA1、、SHA256に限定されるものではない。記録するデータから一意に算出され、その値を代表とする値ならばいかなる値でもよい。本実施例では、同一ハッシュ値となるような相違なデータに遭遇する確率(ハッシュ衝突率)が極めて小さいSHA256を用いる。ハッシュ生成ユニット219は、上位装置から受信した判定対象データからハッシュ値を生成する。
 ハッシュ転送ユニット216は、ハッシュ生成ユニット219で生成されたハッシュの値に基づいて、ハッシュ探索を行うべきアクセラレータを判定し、そのための各種データの転送を制御する。
 ハッシュ探索ユニット218は、FM220からハッシュテーブルの一部をリードし、ハッシュ生成ユニット219で生成されたハッシュ値と一致するハッシュ値がハッシュテーブルに含まれているか探索する。その後、この探索結果に基づいて、FM220のハッシュテーブルを更新する。
 以上説明した、スイッチ214、I/Oインターフェース211、組み込みプロセサ215、FMインターフェース217、ハッシュ生成ユニット219、ハッシュ転送ユニット216、ハッシュ探索ユニット218は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)の回路として実装することができる。それらを一つの半導体素子で構成してもよいし、相互に接続した複数の半導体素子で構成してもよい。
 (3)重複排除処理の概要
 続いて、図3を用いて重複排除の概要について説明する。本実施例の図1に示すストレージ装置100は、記録データに対して重複排除を実施し、物理的な記憶領域以上のデータ量を管理する。より具体的には、一つの物理領域を複数の仮想領域に対応付けて管理する。本実施例では、こうした物理領域と仮想領域の対応付けをファイルシステムによって管理する。つまり、仮想領域となるのは、「ファイル」という概念となり、物理的な記憶領域となるのはHDD/SSDのLBA(Logical Block Address)となる。図3では、「FIle A」と「File B」のファイルデータが存在し、これらのデータを重複排除して物理領域に記録する例を示している。本実施例のシステムではFile A及びFile Bは、それぞれ4KBの複数のブロックに分割し「Blk A-1~3」、「Blk B-1~5」として管理する。本実施例では、こうしたファイルのブロックへの分割は、4KBの固定長にて実施する場合について述べるが、本発明はこの分割方法に限定されるものではない。分割サイズを4KBより小さくしても大きくしても良いし、ファイルデータを異なるサイズに分割しても良いし、分割さえしなくても良い。
 本実施例のファイルシステムは、ファイルを4KBの固定長で分割したブロック毎に、物理的な記憶領域であるHDD/SSDのLBAとの対応付けを行う。図3では、「File A」の部分領域である「Blk A-2」と「File B」の部分領域である「Blk B-3」のデータ内容が同一である場合に、重複排除される前と後の「Blk B-3」の対応LBAの変化を示している。ファイルシステムは、重複排除後は310に示すように「Blk A-2」と「Blk B-3」を共に「LBA36」に対応付けて管理する。この場合、File Aを読み出す場合には「LBA36」からファイルデータの一部を読み出し、File Bを読みだす場合にも「LBA36」からファイルデータの一部を読み出すこととなる。ファイルシステムは、重複排除によりHDD/SSDがデータ記憶可能なLBA空間以上のデータ量のファイル群を利用する事が出来る。これにより、ストレージ装置100のビットコストは低下する。
 仮想領域上に同一データを記録する際、複数の仮想領域を一つの物理領域に対応付ける重複排除処理は、データをサーバ102から受信後、記憶領域111に記録する前に行うことが望ましい。なぜなら、重複排除によって物理領域に記録すべきデータ量がR倍(R<1)になる場合、記憶領域111に記録前に重複排除した時のデータ書き込み量はR倍に減るからである。記憶装置111がSSDで構成されている場合、SSDを構成するFMの書き換え回数(寿命)には限りがある。記憶領域111に記録後に重複排除するよりも記録前に重複排除したほうが、FMの書き換え回数が減少してシステム寿命が長くなるという良い効果がある。
 本実施例は、データを記録する前に重複排除する場合について記すが、本発明は、データを記録する前に重複排除する場合に限定されるものではない。例えば、同一データであっても一旦物理領域に記録し、後に同一データを見つけ、重複排除する場合でも適用することができる。
 重複排除では、ファイルを分割して得られたブロックの各データ(判定対象データ)と同一のデータが既に記録されているかを探索する必要がある。これは、厳密には、判定対象データと記録済みの全データとを比較することで可能である。しかし、大量のファイルデータを扱う場合、判定対象データと記録済みの全データとの比較には、膨大な時間を要し、現実的に不可能である。
 このため、記録済みデータからある代表値を作成してそのテーブルを準備しておき、重複判定時に判定対象データから算出した代表値を、テーブルに記載された各代表値と比較することで、同一データの可能性のあるデータ(候補データ)を探索する。こうした代表値を使った重複判定処理は、重複排除では一般に行われている。ただし、代表値が一致するかどうかで重複判定を行うことは完全ではなく、一致であれば「重複の可能性が有る」、不一致であれば「重複は完全に無い」ことが示されるに過ぎない。そのため、「重複の可能性が有る」と判断された後に、重複の可能性のある候補データを読み出し、判定対象データと候補データとを比較するまで、候補データが判定対象データと完全に同一かはわからない。しかし、「重複の可能性が有る」と判断され、データ比較後に「重複ではなかった」と判断される確率(重複判定ミス率)は、SHA256アルゴリズムのハッシュ衝突率に相当し、は極めて小さい。この確率がシステムの許容するデータ消失確率以下である場合、このデータ比較を省略しても問題はない。本実施例のシステムは、重複判定ミス率がシステムの許容するデータ消失確率以下のシステムであるとし、重複排除アクセラレータの重複判定結果のみで重複を判定する。
 (4)重複判定処理に用いるバッファ及びテーブル
 続いて、図4及び図5を用いて重複排除アクセラレータ123が、重複判定処理を行う際に用いる各種バッファ及びテーブルについて説明する。
 図4は、ストレージコントローラ110において、各種バッファ及びテーブルの種類と設置場所を示している。
 2つのライトデータバッファ400、401は、ストレージコントローラ110内のDRAM125の中に位置し、それぞれ重複排除アクセラレータ123a、123b内のハッシュ生成ユニット219a、219bがハッシュ生成を行う対象となる4KBブロックデータを複数個、一時的に格納するためのバッファである。重複排除アクセラレータ123a、123bはそれぞれライトデータバッファ400、401からブロックデータを取得する。ライトデータバッファ400、401は、各ブロックデータに関する付加情報も格納する。具体的には、ブロックデータの重複判定結果と格納先LBAである。格納先LBAの情報は、重複判定の結果次第で変化する。
 ストレージコントローラ110内のCPU120はマルチコアプロセッサであり、2つのコア440、441を含む。ストレージ装置100がサーバ102からファイルのライト要求を受けると、これらのコアはそのファイルを4KB単位のブロックデータに分割し、2つのライトデータバッファ400、401に分配する。重複排除アクセラレータ123a、123bはそれぞれライトデータバッファ400、401からブロックデータを取得して重複判定処理を行う。ブロックデータは基本的にはライトデータバッファ400、401にラウンドロビンで均等に分配されるが、重複排除アクセラレータ123a、123bが重複判定を行う際の処理時間に差がある場合は、コア440、441は処理時間の短いほうに多くのブロックデータを配り、両者の処理時間を平準化してもよい。
 偶数ハッシュテーブル430は、重複排除アクセラレータ123a内のFM220aの中に格納され、ストレージ装置100が格納するファイルを構成する4KBブロックデータのハッシュ値のうち、偶数であるもの(偶数ハッシュ)が登録されている。偶数ハッシュテーブル430は、各偶数ハッシュの生成元であるブロックデータの重複カウントと格納先LBAとの対応を管理している。重複排除アクセラレータ123a内のハッシュ探索ユニット218aは、偶数ハッシュ探索を行う際に、偶数ハッシュテーブル430の一部をDRAM213aに読み出して利用する。ハッシュ探索ユニット218aは、偶数ハッシュテーブル430に対してハッシュ探索をかけた結果、一致するハッシュが見つかった場合には対応する重複カウントを1加算し、格納先LBAを取得するが、一致するハッシュが見つからなかった場合には、探索した偶数ハッシュを新たに偶数ハッシュテーブル430に追加登録する。
 奇数ハッシュテーブル431は、重複排除アクセラレータ123b内のFM220bの中に格納され、ストレージ装置100が格納するファイルを構成する4KBブロックデータのハッシュ値のうち、奇数であるもの(奇数ハッシュ)が登録されている。奇数ハッシュテーブル431は、各奇数ハッシュの生成元であるブロックデータの重複カウントと格納先LBAとの対応を管理している。重複排除アクセラレータ123b内のハッシュ探索ユニット218bは、奇数ハッシュ探索を行う際に、奇数ハッシュテーブル431の一部をDRAM213bに読み出して利用する。ハッシュ探索ユニット218bは、奇数ハッシュテーブル431に対してハッシュ探索をかけた結果、一致するハッシュが見つかった場合には対応する重複カウントを1加算し、格納先LBAを取得するが、一致するハッシュが見つからなかった場合には、探索した奇数ハッシュを新たに奇数ハッシュテーブル431に追加登録する。
 上記の偶数ハッシュテーブル430、奇数ハッシュテーブル431で管理されている重複カウントとは、各ハッシュの生成元であるブロックデータがファイルシステムにおいて重複参照されている数である。ブロックデータが重複参照されていない場合、そのハッシュ値に対応する重複カウントは1である。
 なお、本実施形態では、偶数ハッシュテーブル430及び奇数ハッシュテーブル431はテーブルの形式で説明するが、ハッシュ値を管理する情報であればテーブルの形式でなくてもよい。
 偶数ハッシュ局所バッファ420は、重複排除アクセラレータ123a内のDRAM213aの中に位置し、重複排除アクセラレータ123aが偶数ハッシュテーブル430に探索をかける偶数ハッシュを複数個、一時的に格納するためのバッファである。偶数ハッシュ局所バッファ420は、各偶数ハッシュに関する付加情報も格納する。具体的には、偶数ハッシュの生成元であるブロックデータの重複判定結果と格納先LBAである。
 奇数ハッシュ局所バッファ421は、重複排除アクセラレータ123b内のDRAM213bの中に位置し、重複排除アクセラレータ123bが奇数ハッシュテーブル431に探索をかける奇数ハッシュを複数個、一時的に格納するためのバッファである。奇数ハッシュ局所バッファ421は、各奇数ハッシュに関する付加情報も格納する。具体的には、奇数ハッシュの生成元であるブロックデータの重複判定結果と格納先LBAである。
 偶数ハッシュ共有バッファ410は、ストレージコントローラ110内のDRAM125の中に位置し、重複排除アクセラレータ123bが、重複排除アクセラレータ123aに偶数ハッシュの探索を依頼する際に、対象の偶数ハッシュを複数個、一時的に格納するためのバッファである。偶数ハッシュ共有バッファ410は、各偶数ハッシュに関する付加情報も格納する。具体的には、偶数ハッシュの生成元であるブロックデータの重複判定結果と格納先LBAである。
 奇数ハッシュ共有バッファ411は、ストレージコントローラ110内のDRAM125の中に位置し、重複排除アクセラレータ123aが、重複排除アクセラレータ123bに奇数ハッシュの探索を依頼する際に、対象の奇数ハッシュを複数個、一時的に格納するためのバッファである。奇数ハッシュ共有バッファ411は、各奇数ハッシュに関する付加情報も格納する。具体的には、奇数ハッシュの生成元であるブロックデータの重複判定結果と格納先LBAである。
 DRAM125の中に位置する2つのライトデータバッファ400、401、偶数ハッシュ共有バッファ410、奇数ハッシュ共有バッファ411は、CPU120だけでなく、2つの重複排除アクセラレータ123a及び123bもアクセス可能なメモリ空間にマップされている。CPU120内のシステムエージェント450は、近年のCPUが低レイテンシ通信の実現のために内包している高速スイッチで、従来のCPU外付けチップセットの機能を取り込んでいる。重複排除アクセラレータ123a及び123bは、コア440、441の介在なしに、システムエージェント450経由で2つのライトデータバッファ400、401、偶数ハッシュ共有バッファ410、奇数ハッシュ共有バッファ411に自由にアクセスできる。
 図5は、図4を用いて説明した各種バッファ及びテーブルに記録される情報の一例を示している。具体的には、ストレージ装置100に図3のFile Aがライトされた後、図3のFile Bのライト要求を受けたストレージ装置100が、記憶領域111に記録する前に重複排除を行っている途中の状態を示している。詳細には、File Bを構成する5つのブロックデータのうち、Blk B-1からB-4までは重複判定処理が終わっていて、Blk B-5はハッシュ生成が終わっているが、まだ重複判定されていない状態である。
 File Aを構成する3つのブロックデータのうち、Blk A-3から生成されたハッシュ値が偶数、Blk A-1、A-2から生成されたハッシュ値が奇数になったとすると、File Aがライトされた後、File Bがライトされる前は、偶数ハッシュテーブル430にはBlk A-3のハッシュ、奇数ハッシュテーブル431にはBlk A-1、A-2から生成されたハッシュが登録されている。この時点では、各ハッシュに対応する重複カウントは1である。
 File Bのライト要求を受けて、CPU120は、File Bを構成する5つのブロックデータをライトデータバッファ400、401へ分配する。ここでは、Blk B-1、B-3、B-5がライトデータバッファ400、Blk B-2、B-4がライトデータバッファ401に分配されたとする。
 重複排除アクセラレータ123a、123bは自らそれぞれライトデータバッファ400、401からブロックデータを取得してハッシュ生成を行う。
 File Bのブロックデータのうち、Blk B-1、B-2、B-5から生成されたハッシュ値が偶数、Blk B-3、B-4から生成されたハッシュ値が奇数になったとする。ただし、Blk B-3はBlk A-2と同一データのため、両者のハッシュ値は一致する。
 重複排除アクセラレータ123aは、自身が生成したBlk B-1とB-5の偶数ハッシュを偶数ハッシュ局所バッファ420に格納し、自身が管理する偶数ハッシュテーブル430に探索をかけるが、自身が生成したBlk B-3の奇数ハッシュは奇数ハッシュ共有バッファ411に格納し、重複排除アクセラレータ123bへ奇数ハッシュテーブル431に探索をかけるよう依頼する。
 重複排除アクセラレータ123bは、自身が生成したBlk B-4の奇数ハッシュを奇数ハッシュ局所バッファ421に格納し、自身が管理する奇数ハッシュテーブル431に探索をかけるが、自身が生成したBlk B-2の偶数ハッシュは偶数ハッシュ共有バッファ410に格納し、重複排除アクセラレータ123aへ偶数ハッシュテーブル430に探索をかけるよう依頼する。
 重複排除アクセラレータ123aは、偶数ハッシュ局所バッファ420や偶数ハッシュ共有バッファ410から偶数ハッシュを取得し、それらと一致するものが偶数ハッシュテーブル430内にあるか探索を行い、その結果(Hit:一致あり、Miss:一致なし)をそれぞれのハッシュに対応する重複判定結果の欄に書く。Blk B-1とB-2は重複しないので結果はMissである。Blk B-5はまだ判定前であるため、結果が書かれていない。図5の状況では、Blk B-5に重複しているものがあるか分からないため、Blk B-5の格納先LBAの欄は仮のアドレスとしてLBA 42が書かれている。仮のアドレスはCPU120が重複排除する前に決めておくものである。この欄は、重複していると判定された場合は重複する相手の格納LBAに更新されるが、この後、重複していないと判定された場合は更新されず、仮のアドレスLBA 42が実際の格納LBAとして確定する。
 重複排除アクセラレータ123bは、奇数ハッシュ局所バッファ421や奇数ハッシュ共有バッファ411から奇数ハッシュを取得し、それらと一致するものが奇数ハッシュテーブル431内にあるか探索を行い、その結果(Hit:一致あり、Miss:一致なし)をそれぞれのハッシュに対応する重複判定結果の欄に書く。Blk B-3はBlk A-2と重複するので結果はHitである。Blk B-4は重複しないので結果はMissである。
 Blk B-1からB-4のハッシュ探索後の時点では、偶数ハッシュテーブル430では、Blk B-1、B-2のハッシュが追加登録されている。一方、奇数ハッシュテーブル431では、Blk A-2のハッシュに対応する重複カウントが1から2に増え、Blk B-4のハッシュが追加登録されている。
 重複排除アクセラレータ123aは、自身の偶数ハッシュ探索による重複判定結果(Blk B-1のMiss)をライトデータバッファ400の重複判定結果に転写する。また、重複排除アクセラレータ123bに依頼していた奇数ハッシュ探索が終わって、奇数ハッシュ共有バッファ411に重複判定結果(Blk B-3のHit)が書かれたことを検知すると、それを取得し、ライトデータバッファ400の重複判定結果に転写する。
 一方、重複排除アクセラレータ123bは、自身の奇数ハッシュ探索による重複判定結果(Blk B-4のMiss)をライトデータバッファ401の重複判定結果に転写する。また、重複排除アクセラレータ123aに依頼していた偶数ハッシュ探索が終わって、偶数ハッシュ共有バッファ410に重複判定結果(Blk B-2のMiss)が書かれたことを検知すると、それを取得し、ライトデータバッファ401の重複判定結果に転写する。
 CPU120は、Blk B-1からB-4までの重複判定結果がライトデータバッファ400、401に書かれていることを確認し、Blk B-1からB-4までの重複判定が終わっていることを知ることができる。
 図3において、300で示されるのが、File Bのライト要求を受けた直後の重複判定前の時点で、File Bの各ブロックデータに対応する格納LBAに仮のアドレスを設定している状態である。Blk B-1からB-4までの重複判定後は、320で示されるように、Blk B-3に対応する格納LBAは仮のアドレスLBA 40からLBA36に更新されるが、Blk B-1、B-2、B-4に対応する格納LBAは仮のアドレスがそのまま実際の格納LBAとして確定する。
 (5)重複判定処理の流れ
 続いて、図6及び図7のラダーチャートを参照しながら、本実施例における重複判定処理の流れを説明する。
 図6において、ストレージコントローラ110のCPU120は、サーバ102からライト要求されたデータを4KB単位のブロックデータに分割し、DRAM125にあるライトデータバッファ400、401に分配する(S620)。
 重複排除アクセラレータ123aのハッシュ生成ユニット219aはDRAM125にあるライトデータバッファ400に重複判定前のブロックデータがあることを検知すると、そこからブロックデータを取得する(S600)。重複排除アクセラレータ123bのハッシュ生成ユニット219bはDRAM125にあるライトデータバッファ401に重複判定前のブロックデータがあることを検知すると、そこからブロックデータを取得する(S610)。
 重複排除アクセラレータ123aのハッシュ生成ユニット219aは取得したブロックデータのハッシュ生成を行い、ハッシュ転送ユニット216aに渡す(S601)。重複排除アクセラレータ123bのハッシュ生成ユニット219bは取得したブロックデータのハッシュ生成を行い、ハッシュ転送ユニット216bに渡す(S611)。
 重複排除アクセラレータ123aのハッシュ転送ユニット216aはハッシュ値が偶数であるか調べる(S602)。偽(奇数)ならばDRAM125にある奇数ハッシュ共有バッファ411にハッシュを転送する(S603)。真(偶数)ならばDRAM213aにある偶数ハッシュ局所バッファ420にハッシュを転送する(S604)。重複排除アクセラレータ123bのハッシュ転送ユニット216bはハッシュ値が奇数であるか調べる(S612)。偽(偶数)ならばDRAM125にある偶数ハッシュ共有バッファ410にハッシュを転送する(S613)。真(奇数)ならばDRAM213aにある奇数ハッシュ局所バッファ421にハッシュを転送する(S614)。
 この後、図7のハッシュ探索処理に遷移する。
 図7において、重複排除アクセラレータ123aのハッシュ探索ユニット218aは、DRAM213aにある偶数ハッシュ局所バッファ420、またはDRAM125にある偶数ハッシュ共有バッファ410に重複判定前の偶数ハッシュがあることを検知すると、その偶数ハッシュを取得する(それぞれS700、S701)。取得する順序は基本的に交互とするが、両者の重複判定前の偶数ハッシュ数の差が所定基準よりも多くなった場合は。多いほうを優先して取得してもよい。そして、ハッシュ探索ユニット218aは、FM220aから偶数ハッシュテーブルの430一部を読み出し、偶数ハッシュの探索を行う(S702)。例えば、ハッシュ探索ユニット218aは、重複判定の対象となっているハッシュの上位xビットが一致する範囲のテーブルを読み出す。ハッシュ探索ユニット218aは、重複判定の対象となっているハッシュに一致するものが見つかった(Hit)か見つからなかった(Miss)かを判断する(S703)。ハッシュ探索ユニット218aは、Hitの場合は偶数ハッシュテーブル430から重複相手のブロックの格納先LBAを取得し(S704)、重複相手の重複カウントを1加算したものをFM220aに書き戻す(S705)。Missの場合は偶数ハッシュテーブル430に探索したハッシュの新規エントリを作成し(S706)、FM220aに追記する(S707)。
 S700において偶数ハッシュを偶数ハッシュ局所バッファ420から取得していた場合は、ハッシュ探索ユニット218aは、偶数ハッシュ局所バッファ420に、偶数ハッシュに対応する重複判定結果(HitまたはMiss)を書く。さらに、ハッシュ探索ユニット218aは、偶数ハッシュ局所バッファ420に、Hitの場合は格納先LBAを重複相手の格納先LBAで更新し、Missの場合は仮の格納先LBAを実際の格納先LBAとして決定する(S708)。
 また、S701において偶数ハッシュを偶数ハッシュ共有バッファ410から取得していた場合は、ハッシュ探索ユニット218aは、偶数ハッシュ共有バッファ410に、偶数ハッシュに対応する重複判定結果(HitまたはMiss)を書く。この際、ハッシュ探索ユニット218aは、偶数ハッシュ共有バッファ410に、Hitの場合は格納先LBAを重複相手の格納先LBAで更新し、Missの場合は仮の格納先LBAを実際の格納先LBAとして決定する(S709)。
 一方、重複排除アクセラレータ123bのハッシュ探索ユニット218bは、DRAM213bにある奇数ハッシュ局所バッファ421、またはDRAM125にある奇数ハッシュ共有バッファ411に重複判定前の奇数ハッシュがあることを検知すると、その奇数ハッシュを取得する(それぞれS710、S711)。取得する順序は基本的に交互とするが、両者の重複判定前の奇数ハッシュ数の差が所定基準よりも多くなった場合は。多いほうを優先して取得してもよい。そして、ハッシュ探索ユニット218bは、FM220bから奇数ハッシュテーブルの一部を読み出し、奇数ハッシュの探索を行う(S712)。そのハッシュに一致するものが見つかった(Hit)か見つからなかった(Miss)かを判断する(S713)。Hitの場合は重複相手の格納先LBAを取得し(S714)、重複相手の重複カウントを1加算したものをFM220bに書き戻す(S715)。Missの場合は探索したハッシュの新規エントリを作成し(S716)、FM220bに追記する(S717)。
 S710において奇数ハッシュを奇数ハッシュ局所バッファ421から取得していた場合は、ハッシュ探索ユニット218bは、奇数ハッシュ局所バッファ421に、奇数ハッシュに対応する重複判定結果(HitまたはMiss)を書く。さらに、ハッシュ探索ユニット218bは、奇数ハッシュ局所バッファ421に、Hitの場合は格納先LBAを重複相手の格納先LBAで更新し、Missの場合は仮の格納先LBAを実際の格納先LBAとして決定する(S718)。
 また、S711において奇数ハッシュを奇数ハッシュ共有バッファ411から取得していた場合は、ハッシュ探索ユニット218bは、奇数ハッシュ共有バッファ411に、奇数ハッシュに対応する重複判定結果(HitまたはMiss)を書く。この際、ハッシュ探索ユニット218bは、奇数ハッシュ共有バッファ410に、Hitの場合は格納先LBAを重複相手の格納先LBAで更新し、Missの場合は仮の格納先LBAを実際の格納先LBAとして決定する(S719)。
 この後、図6における、ハッシュ探索処理以降の処理に戻る。
 重複排除アクセラレータ123aのハッシュ転送ユニット216aは、DRAM213aにある偶数ハッシュ局所バッファ420、またはDRAM125にある奇数ハッシュ共有バッファ411に重複判定結果の出たハッシュがあることを検知すると、その重複判定結果と格納先LBAを取得する(それぞれS606、S605)。そして、DRAM125のライトデータバッファ400の重複判定結果と格納先LBAの欄にこれを転写する(S607)。
 一方、重複排除アクセラレータ123bのハッシュ転送ユニット216bは、DRAM213bにある奇数ハッシュ局所バッファ421、またはDRAM125にある偶数ハッシュ共有バッファ410に重複判定結果の出たハッシュがあることを検知すると、その重複判定結果と格納先LBAを取得する(それぞれS616、S615)。そして、DRAM125のライトデータバッファ401の重複判定結果と格納先LBAの欄にこれを転写する(S617)。
 最後に、ストレージコントローラ110のCPU120は、DRAM125のライトデータバッファ400、401において、重複判定結果の出たブロックデータがあることを検知すると、その重複判定結果と格納先LBAを取得する(S621)。CPU120は、サーバ102からライト要求されたファイルについて、ファイルを構成するブロックデータを記憶領域111のどこに格納するかを、この結果に基づいて決定する。具体的には、次の処理を行う。重複判定結果がMissの場合、CPU120は、ライトデータバッファ400、401に格納されているブロックデータを、格納先LBAに従って記憶領域111を構成するHDD/SSD130に格納する。その後、CPU120は、ライトデータバッファから当該ブロックデータを削除する。また、重複判定結果がHitの場合、CPU120は、図3に示されるようにブロックデータの格納先LBAを変更し、ライトデータバッファから当該ブロックデータを削除する。
 すなわち、これでファイルの重複排除が行われたことになる。図6及び図7に示されるように、重複判定処理の流れにおいて、CPU120は、ブロックデータから生成されたハッシュ値が偶数か奇数かによって変わる、このような重複判定処理の手順に関与せず、ブロックデータの分配と重複判定結果の取得のみを行うだけである。つまり、本発明によれば、2台の重複排除アクセラレータでハッシュの生成と探索を分担して行うことで、1台の重複排除アクセラレータを用いた構成の時の2倍の重複判定処理性能を実現することができ、さらにその際に、2台の重複排除アクセラレータを制御する負荷がCPU120にかからないようにすることができる。
 (6)重複排除解除の流れ
 本実施例のこれまでの説明においては、サーバ102からファイルのライト要求がきた時に重複排除を実施する流れを述べたが、サーバ102からファイルの削除要求がきた時には重複排除の状態が解除されることがある。ここでは、その流れについて簡単に説明する。
 ストレージコントローラ110や2台の重複排除アクセラレータ123a、123bは、重複排除の解除を行うために、図4に示すようなデータバッファ、ハッシュ共有バッファ、ハッシュ局所バッファを、ファイル削除用に別途備える。ハッシュ生成ユニット、ハッシュ転送ユニットは、ファイルライト時と同様に、ハッシュ生成処理、ハッシュ値の偶数/奇数に応じた探索対象ハッシュの振り分け制御を行う。ただし、ハッシュ探索ユニットは、ファイル削除時には、ハッシュ探索がHitした場合にファイルライト時とは異なる動作を行う。すなわち、重複カウントを1減算し、その結果、重複カウントが0になったら、ハッシュテーブルからそのハッシュのエントリを削除する。なお、ここでハッシュ探索がMissすることは、ファイルシステムが正常に動作している限りありえない。
 (7)ハッシュテーブルの振り分け方
 本実施例のこれまでの説明においては、ハッシュ値が偶数か奇数かに応じてハッシュテーブルの管理担当を2台の重複排除アクセラレータ123a、123bに振り分けたが、本発明はこの振り分け方に限定されるものではない。ハッシュがとりうる値の範囲を2つに分けることができれば、何でも良い。例えば、ハッシュ値の最上位ビットが1か0かで振り分けても良い。
 さらに、振り分け方は不均等であっても良い。例えば、重複排除アクセラレータ123aの処理能力が123bの3倍優れている場合は、ハッシュがとりうる値の範囲のうち75%を123a内のハッシュテーブルで管理し、残りの25%を123b内のハッシュテーブルで管理する。そうすれば、両者の重複判定処理は、ほぼ同じ時間で終わるようにすることができ、システム性能が最適化される。
 (8)3台以上の重複排除アクセラレータの搭載
 本実施例のこれまでの説明においては、2台の重複排除アクセラレータを用いて重複判定処理を実施していたが、Nを3以上の整数として、N台の重複排除アクセラレータを用いて重複判定処理を実施し、さらに重複排除の高速化を図ることも可能である。ここでは、その場合の実施方法を説明する。
 まず、DRAM125にライトデータバッファをN個設置し、アクセラレータ毎に1つを割り当てる。CPU120はサーバ102からライト要求されたファイルを4KB単位に分割したブロックデータを、それらのバッファに均等に分配する(アクセラレータの処理性能に差がある場合は、不均等でもよい)。各アクセラレータのハッシュ生成ユニットは、割り当てられたライトデータバッファからブロックデータを取得してハッシュを生成する。
 ハッシュテーブルは、ハッシュ値をNで割った余りに従ってN個に分けて構成する。N台のアクセラレータはそれらを分担してFMに格納して管理する。例えば、Mを0~N-1の整数として、第M番のアクセラレータは、Nで割った余りがMのハッシュ値のハッシュテーブルを管理し、そのハッシュ探索ユニットは、Nで割った余りがMのハッシュの探索を行う。
 各アクセラレータにおいて、ハッシュ転送ユニットは、ハッシュ生成ユニットが生成したハッシュの値をNで割った余りを求め、その数値に従って、ハッシュ探索するアクセラレータを判断する。例えば、第M番のアクセラレータのハッシュ転送ユニットは、求めた余りK(Kは0~N-1の整数)がMと等しければ自身のハッシュ局所バッファにハッシュを転送し、自身のハッシュ探索ユニットでハッシュ探索を行うが、余りKがMと等しくなければ第K番のアクセラレータにハッシュ探索を依頼する。
 ハッシュ探索をアクセラレータ同士が依頼しあう際に用いるハッシュ共有バッファは、DRAM125にN個設置する。ハッシュ値をNで割った余りに従って、用いるバッファを分ける。例えば、第M番のアクセラレータのハッシュ転送ユニットは、Nで割った余りがKのハッシュの探索を第K番のアクセラレータに依頼する際、第K番のハッシュ共有バッファにハッシュを転送する。第K番のアクセラレータのハッシュ探索ユニットは、第K番のハッシュ共有バッファ、または自身のハッシュ局所バッファからハッシュを取得して、ハッシュ探索を行う。
 重複判定結果は、2台の重複排除アクセラレータによる構成時と同様に、ハッシュを取得したバッファに返され、最終的にDRAM125内のN個のライトデータバッファに重複判定結果が書かれる。
 CPU120は、サーバ102からライト要求されたファイルについて、ファイルを構成するブロックデータを記憶領域111のどこに格納するかを、この結果に基づいて決定する。すなわち、これでファイルの重複排除が行われたことになる。重複判定処理の流れにおいて、CPU120は、ブロックデータから生成されたハッシュ値をNで割った余りによって変わる、このような重複判定処理の手順に関与せず、ブロックデータの分配と重複判定結果の取得のみを行うだけである。
 本発明によれば、N台の重複排除アクセラレータでハッシュの生成と探索を分担して行うことで、1台の重複排除アクセラレータを用いた構成の時のN倍の重複判定処理性能を実現することができる。すなわち、ストレージ装置100に要求されるファイルの書き込み性能要件がどれだけ高くても、それに必要な台数の重複排除アクセラレータ123をストレージ装置100に搭載し、本発明による重複判定処理を行うことで、その性能要件を達成することができる。さらに、その際に、重複排除アクセラレータの台数がどれだけ多くても、それらを制御する負荷がCPU120にかからないようにすることができる。
 なお、以上の説明では、Nで割った余りが何であるかに従って、ハッシュテーブルをN個に振り分けたが、2台の重複排除アクセラレータによる構成時の説明と同様に、振り分け方はこれに限定されるものではない。ハッシュがとりうる値の範囲をN個に分けることができれば、何でも良い。
 さらに、振り分け方は不均等であっても良い。例えば、N台の重複排除アクセラレータの処理能力の比に従って、ハッシュがとりうる値の範囲を比例配分によってN個の区間に分け、区間毎のハッシュテーブルを構成して、N台の重複排除アクセラレータが分担して管理する。そうすれば、全体の重複判定処理は、ほぼ同じ時間で終わるようにすることができ、システム性能が最適化される。
 (9)ハッシュ共有バッファの位置
 これまでの説明においては、ハッシュ共有バッファ(図4の410、411)をストレージコントローラ110内のDRAM125に設置していたが、本発明はハッシュ共有バッファの位置をこの場所に限定するものではない。例えば、各重複排除アクセラレータ123内のDRAM213に設置しても良い。この場合の重複判定処理の流れは、ハッシュ共有バッファにアクセスする際に読み書きするDRAMが変わるだけである。本発明によってもたらされる高性能化の効果もこれまでの説明の構成による効果と変わらない。
 ただし、ハッシュ共有バッファはストレージコントローラ110内のDRAM125に設置するほうが、ストレージ装置100の障害をCPU120が検知する観点では優れている。なぜなら、CPU120は、すぐ近くに位置するDRAM125上のハッシュ共有バッファの内容を監視することで、どのアクセラレータがどのアクセラレータにハッシュ探索を依頼しており、どれだけの判定結果が返っているかを簡単に把握することができるからである。例えば、あるアクセラレータからの探索依頼が長時間来ていない状態が続いていることを検知した場合は、そのアクセラレータのハッシュ転送ユニットが障害を起こしていることが分かる。例えば、あるアクセラレータが判定結果を長時間返していない状態が続いていることを検知した場合は、そのアクセラレータのハッシュ探索ユニットが障害を起こしていることが分かる。
 (10)ハッシュテーブルの格納媒体
 これまでの説明においては、ハッシュテーブル(図4の430、431)を重複排除アクセラレータ123内のFM200に格納していたが、本発明はハッシュテーブルの格納先をこの場所に限定するものではない。FM220と同様の不揮発性メモリとして、例えばPRAM(相変化メモリ)やReRAM(抵抗変化型メモリ)を用いるとしても良い。また、DRAM213などの揮発性メモリを用いるとしても良い。ただし、その場合には、電源を切断する前にFM200などの不揮発性メモリへハッシュテーブルをバックアップする機構を重複排除アクセラレータ123に備える。
 (11)重複排除アクセラレータが接続されたときの処理
 CPU120は、重複排除アクセラレータ123が接続されたことを検出すると、以下の処理を行う。
 CPU120は、接続されている重複排除アクセラレータ123の台数を認識する。そして、前述の”(7)ハッシュテーブルの振り分け”及び”(8)3台以上の重複排除アクセラレータの搭載”に基づいて、各重複排除アクセラレータに担当させるハッシュの振り分けを決定する。そして、CPU120は、振り分ける重複排除アクセラレータ123の数と同数のハッシュ共有バッファ及びライトデータバッファをDRAM125内に設定するため、それぞれのアドレスを決定する。 CPU120は、各重複排除アクセラレータ123に、担当させるハッシュを通知する。また、各重複排除アクセラレータ123に、すべてのハッシュ共有バッファのアドレスを通知する。また、各重複排除アクセラレータ123に、担当毎のライトデータバッファのアドレスを通知する。ここで、CPU120が重複排除アクセラレータ123に情報を通知する順番は入れ替わってもよい。CPU120は各情報を別々の通知コマンドで重複排除アクセラレータ123に通知してもよいし、1つの通知コマンドですべての情報を通知してもよい。CPU120は、各重複排除アクセラレータ123から通知コマンドに対する完了応答を受信すると、重複判定の処理を開始することができる。これにより、CPU120は各重複排除アクセラレータ123に適切に重複判定処理を分担させることができる。
100…ストレージ装置、110…ストレージコントローラ、120…CPU、123、123a、123b…重複排除アクセラレータ、125…DRAM、210…重複排除アクセラレータコントローラ、213…DRAM、219、219a、219b…ハッシュ生成ユニット、216、216a、216b…ハッシュ転送ユニット、218、218a、218b…ハッシュ探索ユニット、220…NAND型フラッシュメモリ。

Claims (7)

  1.  ライト要求されたファイルを構成する複数のブロックデータの重複排除を行うシステムであって、
     それぞれが重複判定処理をする複数のアクセラレータと、
     前記ブロックデータを各前記アクセラレータに分配するための複数のデータバッファを備える第一メモリと、を備え、
     前記複数のアクセラレータのそれぞれは、
     前記ブロックデータの重複判定を行うために用いるハッシュテーブルを分担して格納する第二メモリを備え、
     前記ブロックデータからハッシュ値を生成する手段と、
     前記ハッシュテーブルから前記ハッシュ値を探索する手段と、を備える
     ことを特徴とするシステム。
  2.  前記システムは、ライト要求された前記ファイルを前記複数のブロックデータに分割し、前記複数のデータバッファのそれぞれに分配するCPUを備え、
     前記複数のアクセラレータのそれぞれは、
     自身に対応する前記複数のデータバッファの1つから前記複数のブロックデータのうちの第一ブロックデータを取得し、前記第一ブロックデータの前記ハッシュ値を生成し、
     当該ハッシュ値に基づいて、自身が格納する前記ハッシュテーブルが探索先であるか、その他の前記アクセラレータが格納する前記ハッシュテーブルが探索先であるかを判断する
     ことを特徴とする請求項1に記載のシステム。
  3.  前記複数のアクセラレータのそれぞれは、前記判断結果が、自身が格納する前記ハッシュテーブルが探索先である場合は、自身の前記第二メモリから読み出した前記ハッシュテーブルを用いてハッシュ探索を行い、当該ハッシュ探索で得られた重複判定結果を前記システムの前記第一メモリ内の前記複数のデータバッファの1つに書く
     ことを特徴とする請求項2に記載のシステム。
  4.  前記第一メモリ内に、前記複数のアクセラレータ間で前記ハッシュ値を転送するためのハッシュ共有バッファを備え、
     前記複数のアクセラレータのそれぞれは、前記判断結果が、その他の前記アクセラレータが格納する前記ハッシュテーブルが探索先である場合は、前記ハッシュ共有バッファに前記ハッシュ値を転送し、
     前記複数のアクセラレータのそれぞれは、自身が格納する前記ハッシュテーブルで探索可能な前記ハッシュを、前記ハッシュ共有バッファから取得し、自身の前記第二メモリから読み出した前記ハッシュテーブルを用いてハッシュ探索を行い、当該ハッシュ探索で得られた重複判定結果を前記ハッシュ共有バッファに書き、
     前記ハッシュ共有バッファに前記ハッシュ値を転送した前記アクセラレータは、当該ハッシュ値の前記ハッシュ探索で得られた前記重複判定結果を、前記ハッシュ共有バッファから取得し、当該重複判定結果を前記第一メモリ内の前記複数のデータバッファの1つに書く
     ことを特徴とする請求項2に記載のシステム。
  5.  前記CPUは、前記複数のデータバッファから前記重複判定結果を取得し、当該重複判定結果に基づいて、ライト要求された前記ファイルを構成する前記ブロックデータの格納を行う
     ことを特徴とする請求項3乃至4に記載のシステム。
  6.  請求項2に記載の前記システムであって、
     前記複数のアクセラレータは、前記探索先の判断を、当該ハッシュ値を前記複数のアクセラレータの数で割った余りの値に基づいて行う
     ことを特徴とする請求項2に記載のシステム。
  7.  それぞれがブロックデータの重複判定処理をする複数のアクセラレータと、
     複数のブロックデータを前記複数のアクセラレータに分配するCPUと、
     を備え、
     前記複数のアクセラレータのそれぞれは、
     ハッシュ値に基づいて分担されている、前記分配されたブロックデータの重複判定を行うためのハッシュ管理情報を有し、
     前記分配されたブロックデータからハッシュ値を生成し、
     前記ハッシュ管理情報から、前記ハッシュ値を探索する
     ことを特徴とするシステム。
PCT/JP2015/078707 2015-10-09 2015-10-09 データを重複排除するシステム WO2017061022A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/078707 WO2017061022A1 (ja) 2015-10-09 2015-10-09 データを重複排除するシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/078707 WO2017061022A1 (ja) 2015-10-09 2015-10-09 データを重複排除するシステム

Publications (1)

Publication Number Publication Date
WO2017061022A1 true WO2017061022A1 (ja) 2017-04-13

Family

ID=58487335

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/078707 WO2017061022A1 (ja) 2015-10-09 2015-10-09 データを重複排除するシステム

Country Status (1)

Country Link
WO (1) WO2017061022A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064884A (zh) * 2020-12-02 2021-07-02 上海金融期货信息技术有限公司 基于自定义哈希的双源行情去重方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013514561A (ja) * 2010-09-09 2013-04-25 日本電気株式会社 ストレージシステム
WO2014155668A1 (ja) * 2013-03-29 2014-10-02 株式会社 東芝 データの重複をハッシュテーブルに基づいて排除するためのストレージシステム、ストレージコントローラ及び方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013514561A (ja) * 2010-09-09 2013-04-25 日本電気株式会社 ストレージシステム
WO2014155668A1 (ja) * 2013-03-29 2014-10-02 株式会社 東芝 データの重複をハッシュテーブルに基づいて排除するためのストレージシステム、ストレージコントローラ及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YUKI TSUBOUCHI ET AL.: "An SSE-Based Method for Increasing Throughput of SHA-1 Computation for Deduplication Storage", IPSJ SIG NOTES HIGH PERFORMANCE COMPUTING (HPC), vol. 2012, no. 31, 15 April 2012 (2012-04-15), pages 1 - 7, XP055373390, ISSN: 2186 2583 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064884A (zh) * 2020-12-02 2021-07-02 上海金融期货信息技术有限公司 基于自定义哈希的双源行情去重方法和系统
CN113064884B (zh) * 2020-12-02 2023-09-05 上海金融期货信息技术有限公司 基于自定义哈希的双源行情去重方法和系统

Similar Documents

Publication Publication Date Title
US9665305B1 (en) Tiering data between two deduplication devices
US10042751B1 (en) Method and system for multi-tier all-flash array
US9442844B2 (en) Apparatus, system, and method for a storage layer
US8578127B2 (en) Apparatus, system, and method for allocating storage
US10396994B1 (en) Method and apparatus for creating a short hash handle highly correlated with a globally-unique hash signature
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
TWI789904B (zh) 控制非揮發性記憶體之記憶體系統及方法
US9424184B2 (en) Apparatus, systems, and methods for nameless writes
US9342465B1 (en) Encrypting data in a flash-based contents-addressable block device
US9824041B2 (en) Dual access memory mapped data structure memory
WO2017216887A1 (ja) 情報処理システム
WO2012066528A1 (en) Scalable block data storage using content addressing
WO2015162758A1 (ja) ストレージシステム
US9367398B1 (en) Backing up journal data to a memory of another node
US20230384982A1 (en) Network storage gateway
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
WO2017061022A1 (ja) データを重複排除するシステム
JP2020086477A (ja) 大規模ストレージシステム及び大規模ストレージシステムにおけるデータ配置方法
US20180307427A1 (en) Storage control apparatus and storage control method
US10191690B2 (en) Storage system, control device, memory device, data access method, and program recording medium
WO2016194121A1 (ja) ストレージシステム、計算機装置、及び、重複排除デバイス
CN116662217A (zh) 持久性存储器装置及应用持久性存储器装置的方法

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP