WO2014157244A1 - ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム - Google Patents
ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム Download PDFInfo
- Publication number
- WO2014157244A1 WO2014157244A1 PCT/JP2014/058353 JP2014058353W WO2014157244A1 WO 2014157244 A1 WO2014157244 A1 WO 2014157244A1 JP 2014058353 W JP2014058353 W JP 2014058353W WO 2014157244 A1 WO2014157244 A1 WO 2014157244A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- storage
- mbf
- management information
- stored
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
Definitions
- the present invention relates to a storage control device, a storage control method, and a storage control program.
- a technique for effectively utilizing the storage capacity of a storage As a technique for effectively utilizing the storage capacity of a storage (storage device), a technique called duplicate data removal, duplicate elimination, etc., which does not store duplicate data in the storage is known.
- a Bloom filter or a multi-stage Bloom filter is usually used to determine whether or not data is duplicated.
- the multistage Bloom filter has a data structure in which the Bloom filter is multistaged (see, for example, Patent Document 1).
- This multistage Bloom filter has a search function for a storage area (address range) in which data is stored. Therefore, if a multistage Bloom filter is used, deduplication of data can be performed at high speed.
- the size of the multistage Bloom filter used for data management also increases. For this reason, when a multistage Bloom filter is used, a relatively large-capacity memory is mounted on the apparatus.
- patent documents 2 and 3 and non-patent document 1 also exist as documents related to the technology disclosed in this document.
- a storage control apparatus is provided.
- the storage is handled as a device having a plurality of data storage areas divided into a plurality of data areas, and the correspondence between the addresses in the storage and the hash values of each data in the storage is determined by a plurality of hash logs.
- each data in the data area in which each data is stored are registered, and each data in the data area is any data storage area
- a control unit that manages the correspondence relationship with the identification information of the data management information that can be used to identify whether the data is stored in the block map;
- a first storage unit that stores the plurality of hash logs and data management information related to each data area;
- a second storage unit capable of reading and writing data faster than the first storage unit;
- the controller is When the read target data is read from the storage, the data management information identified by the identification information associated with the logical address of the read target data in the block map is not stored in the second storage unit
- the data management information stored in the first storage unit is read on the second storage unit instead of any data management information on the second storage unit, and the read data management information Based on the above, the hash log related to the data storage area in which the read target data is stored is identified, and the read target data is read from the storage using information on the identified hash log, If the data management information
- FIG. 1 is an explanatory diagram of the configuration and usage of the storage control device according to the embodiment.
- FIG. 2 is a functional block diagram of the storage control device.
- FIG. 3 is an explanatory diagram of MBF.
- FIG. 4 is an explanatory diagram of a hash table.
- FIG. 5 is an explanatory diagram of a block map.
- FIG. 6A is a flowchart (part 1) of the storage process.
- FIG. 6B is a flowchart (part 2) of the storage process.
- FIG. 7 is a flowchart of the reading process.
- FIG. 8A is an explanatory diagram of hit frequency management information.
- FIG. 8B is an explanatory diagram of hit frequency management information.
- FIG. 8C is an explanatory diagram of hit frequency management information.
- FIG. 9 is a flowchart of the duplicate removal process.
- FIG. 1 shows the configuration and usage of the storage control apparatus 10 according to this embodiment.
- the storage control apparatus 10 is an apparatus in which an OS (Operating System), a storage control program 18 and the like are installed in an HDD (Hard Disk Drive) 13 of a computer 50.
- the computer 50 in which the CPU (Central Processing Unit) 11 loads and executes the storage control program 18 (and OS) on the RAM (Random Access Memory) 12 is the storage control device 10.
- the computer 50 on which the storage control program 18 is installed is a normal computer. Therefore, although detailed description of each component is omitted, the storage control device 10 (computer 50) is a flash ROM (Read Only Memory; “ROM” in FIG. 1) that stores firmware such as IPL (Initial Program Loader). Is provided.
- the storage control device 10 also includes a chip set (that is, a single integrated circuit or a plurality of integrated circuits connected by a bus) that connects the components.
- the storage control device 10 has a communication interface (“I / F”) for communicating with the storage 30 and a communication interface (for communicating with at least one user terminal 100) ( “I / F”).
- the storage 30 connected to the storage controller 10 has a plurality of physical blocks (unit storage areas) for storing data, and a physical block for reading / writing data is represented by a physical block address (PBA: Phsycal Block Address). ) Is a device that can be specified.
- PBA Phsycal Block Address
- the storage control device 10 is connected to the storage 30 as an HDD, an SSD (Solid State Drive), or a combination of a plurality of HDDs and / or SSDs.
- an HDD an SSD (Solid State Drive)
- SSD Solid State Drive
- data storage target data or the like
- data LBA Logical Block Address
- the storage target data is data that the storage control apparatus 10 is trying to store in the storage 30.
- the verification hash value of the storage target data is a hash value calculated from the storage target data and used for final determination as to whether or not data having the same content as the storage target data exists in the storage 30. That is.
- a secure hash value calculated by an algorithm such as MD5 (Message-Digest 5), SHA (Secure Hash Algorithm) -1, SHA-256, or the like is usually used.
- FIG. 2 shows a functional block diagram of the storage control apparatus 10.
- the storage control device 10 includes a storage processing unit 41, a read processing unit 42, and a superimposition removal processing unit 43.
- the storage control device 10 holds the hit frequency management information 20, the block map 21, the MBF cache table 24, the hash log cache table 28, the write target MBF 31w, the MBF table 22, and the hash log table 23 on the RAM 12 / in the HDD 13. It works in the state.
- the hit frequency management information 20, the block map 21, the write target MBF 31w, etc. on the RAM 12 are stored in the HDD 13.
- the storage control device 10 is restarted, the same information as before the stop is prepared on the RAM 12 based on the information stored in the HDD 13.
- the storage processing unit 41, the read processing unit 42, and the superimposition removal processing unit 43 are units (functional blocks) realized by the CPU 11 (control unit) executing the storage control program 18 (and OS). Although details of the processing units 41 to 43 will be described later, each processing unit describes the storage 30 as a plurality of storage areas (hereinafter referred to as data storage areas) in which all storage areas (or most storage areas) have the same size. ). Each processing unit handles the storage 30 as an apparatus in which the plurality of data storage areas are divided into a plurality of groups (data areas).
- the MBF table 22 in the HDD 13 is a table that can store a plurality of multi-layer Bloom filters (MBF) 31 in association with MBF-IDs that are identification information of each MBF 31.
- MBF multi-layer Bloom filters
- the MBF cache table 24 on the RAM 12 is a table that can store m (m is usually 2 or more) MBFs 31 in association with the MBF-ID of each MBF 31.
- the MBF cache table 24 also stores information for enabling the MBF 31 to be swept out from the MBF cache table 24 to be selected by an LRU (Least Recently Used) algorithm.
- the MBF cache table 24 is also a table that does not store any MBF 31 when the operation of the storage control apparatus 10 is started, like the MBF table 22.
- the write target MBF 31w on the RAM 12 is an MBF 31 in which when a certain storage target data is written in the storage 30, a verification hash value of the storage target data is registered.
- the contents and MBF-ID are the same as the write target MBF 31w (hereinafter referred to as a new MBF 31). ) Is added to the MBF cache table 24. Further, a process of initializing the write target MBF 31w and changing the MBF-ID of the write target MBF 31w to a new ID is performed.
- the MBF cache table 24 has already been stored in the MBF cache table 24 when the MBF cache table 24 of the new MBF 31 (write target MBF 31w) is added, the most recently used MBF 31 is the MBF cache table 24. Swept from. The MBF 31 is also swept out from the MBF cache table 24 when the MBF 31 is read from the MBF table 22.
- the MBF 31 is swept out from the MBF cache table 24, it is determined whether or not the MBF 31 to be swept out is stored in the MBF table 22. Then, when the MBF 31 swept out from the MBF cache table 24 is not yet stored in the MBF table 22, the MBF 31 is added to the MBF table 22.
- the MBF 31 has a data structure that can determine whether or not data having the same content as the storage target data is stored in the storage 30 by using the MBF 31, similarly to a normal BF (bloom filter). However, the MBF 31 can also search a data storage area in which desired data is written.
- X is an integer value of 2 or more.
- X is also expressed as the number of divisions.
- the MBF 31 having the stage number M of 3 and the division number X of 4 usually has the configuration schematically shown in FIG.
- the horizontal length of each BF indicates the size (number of bits) of each BF
- the vertical relationship between the BFs indicates the correspondence between the BFs.
- the correspondence relationship described above is a correspondence relationship between BFs.
- the Xi ⁇ 1 BFs of the M-th stage MBF 31 of the M ( ⁇ 2) stages (hereinafter also referred to as the lowest-stage BF) have storages. Thirty different data storage areas are associated with each other.
- the MBF 31 is directly / indirectly associated with the lowermost BF and the lowermost BF when the storage target data is written in the data storage area associated with the lowermost BF.
- the hash value for verification of the storage target data is registered and used in each BF.
- the BF directly associated with a certain lowermost BF is the BF one level higher associated with the lowermost BF.
- the BF indirectly associated with a certain lowermost BF is a BF that is associated with the lowermost BF via several BFs and that is two or more upper BFs.
- processing target data data having the same content as certain data
- a verification hash value of the processing target data is calculated.
- (2) Check whether the calculated verification hash value (hereinafter referred to as a calculated hash value) is registered in BF1-1.
- the processing target data is “16 data storage areas managed by the MBF 31 in FIG. 3” (hereinafter referred to as check target areas). It is determined that it is not stored in (notation) and the process is terminated.
- BF can be misjudged (false positive). Therefore, data having the same contents as the processing target data may not be stored in the data storage area searched by the above procedure.
- the hash log table 23 in the HDD 13 basically includes, for each data actually stored in the storage 30, a PBA of a physical block in which the data is stored and a verification hash value of the data. It is a table for storing combinations. However, the hash log table 23 stores, for each data storage area, a combination of a PBA of a physical block in which data is stored and a hash value for data verification.
- the hash log table 23 has a configuration capable of storing a hash log 25 having a hash value field and a PBA field for each BF designation information at the lowest level. ing.
- the lowermost BF designation information is, for example, a combination of an MBF-ID of a certain MBF 31 and identification information (hereinafter referred to as BF-ID) in the MBF 31 of a certain lowermost BF of the MBF 31.
- This lowermost BF designation information can specify one lowermost BF stored in the storage control apparatus 10 as an element of any MBF31, and the MBF-ID of the MBF including the lowermost BF is known. It only has to be information.
- each bottom BF of the MBF 31 is associated with a specific (unique) data storage area of the storage 30. Accordingly, each hash log 25 in the hash log table 23 is associated with a specific data storage area of the storage 30 via the lowest BF designation information associated with the hash log 25.
- the hash log 25 associated with a certain data storage area in the hash log table 23 is a table in which records relating to data written in the data storage area are stored.
- the record relating to the data written in a certain data area is a record in which the verification hash value of the data and the PBA of the logical block in which the data is written are set.
- the hash log table 23 when the number of the lowest BF of each MBF 31 is expressed as L, for each MBF 31, “L sets of hash logs and lowest BF designation information” (hereinafter, hash by MBF) Log information) is stored.
- the hash log table 23 at the start of operation of the storage control apparatus 10 does not hold any single MBF hash log information, similarly to the MBF table.
- the hash log table 23 is a table that is updated in the same procedure as the MBF table update procedure.
- a hash log cache table 28 capable of storing m + 1 pieces of hash log information for each MBF is prepared on the RAM 12 (FIG. 2) of the storage controller 10.
- the hash log cache table 28 stores “Hash log information by MBF in which no record is stored in each hash log 25” regarding the write target MBF 31w (hereinafter, hash log information by MBF). Only the initial value) is stored.
- the hash log information for each MBF related to the MBF 31 is stored in the hash log. It is swept from the cache table 28.
- the MBF-specific hash log information related to the MBF 31 is swept out of the hash log cache table 28.
- the MBF-specific hash log information swept out from the hash log cache table 28 is not yet stored in the hash log table 22, the MBF-specific hash log information is added to the hash log table 22. .
- the hash log cache table 28 is updated to a portion where the hash log information for each MBF has not been stored so far, or the hash log information for each MBF that has been swept out is stored. An initial value of hash log information for each MBF related to the MBF 31 is added.
- FIG. 5 shows the configuration of the block map 21 on the RAM 12. As shown in FIG. 5, the block map 21 has an LBA field, an MBF-ID field, and a hash value field.
- This block map 21 is a table to which a record in which the LBA and the verification hash value of the storage target data are respectively set in the LBA field and the hash value field is added each time the storage target data is stored in the storage 30. is there.
- the MBF-ID of the MBF 31 in which the verification hash value of the storage target data is registered is set in the MBF-ID field of the record.
- the storage processing unit 41 normally waits (monitors) that a write request for the storage 30 is received by the communication interface (“I / F”) for the user terminal 100.
- the storage processing unit 41 When a write request for certain information is transmitted from the user terminal 100, the storage processing unit 41 has a size that allows the information (hereinafter referred to as storage target information) to be stored in one physical block of the storage 30. It is determined whether it is information. When the storage target information is information of a size that can be stored in one physical block, the storage processing unit 41 treats the storage target information itself as storage target data, as shown in FIGS. 6A and 6B. Execute the storage process of the specified procedure.
- storage target information information of a size that can be stored in one physical block
- the storage processing unit 41 divides the storage target information into a plurality of data of a size that can be stored in the physical block. And the storage process part 41 performs the storage process (FIG. 6A and FIG. 6B) which used the data as storage object data for every data obtained by the division
- the storage processing unit 41 that has started the storage process first calculates a hash value for verification of the storage target data (step S101).
- the storage processing unit 41 selects the lowest BF in which the calculated verification hash value (hereinafter referred to as “calculated hash value”) is registered from among the MBF 31 and the write target MBF 31 w on the MBF cache table 24. Search is performed (step S102). That is, the storage processing unit 41 performs the processes (2) to (5a) described above for each MBF 31 and the write target MBF 31w on the MBF cache table 24.
- step S102 is performed only for the write target BF 31w for a while after the operation of the storage control apparatus 10 is started.
- the storage processing unit 41 determines whether or not the number of data registrations of the write target MBF 31w is less than the predetermined number. (FIG. 6B; Step S111).
- the storage processing unit 41 writes the storage target data in the storage 30 when the number of data registrations of the write target MBF 31w is less than the predetermined number (step S111; YES) (step S116).
- the storage processing unit 41 stores the PBA of the physical block into which the storage target data is written (hereinafter referred to as storage destination PBA) associated with each bottom BF of the write target MBF 31w. Select from PBAs of free physical blocks in the storage area. An empty physical block is a physical block in which no data is stored.
- the storage destination PBA the next address of the address that is the previous storage destination PBA is normally selected.
- the storage processing unit 41 that has written the storage target data in the storage 30 registers the calculated hash value in the write target MBF 31w (step S117). That is, the storage processing unit 41 is directly / indirectly associated with the lowermost BM of the write target MBF 31w and the lowermost BF, which is associated with the data storage area storing the storage target data. , The calculated hash value is registered in each BF of the write target MBF 31w. In step S117, the storage processing unit 41 also performs a process of adding “1” to the number of data registrations of the writing target MBF 31w in the RAM 12 that it manages.
- the storage processing unit 41 that has finished the process of step S117 stores the storage destination PBA and the calculated hash value in the hash log 25 on the hash log cache table 28 that is associated with the lowest BM in which the calculated hash value is registered.
- the set record is added (step S118). More specifically, the storage processing unit 41 stores the storage destination PBA in the hash log 25 on the hash log cache table 28 associated with the lowest BM designation information indicating the lowest BM in which the calculated hash value is registered. Add a record with a calculated hash value.
- the storage processing unit 41 adds a record in which the storage destination LBA, the MBF-ID of the writing target BF 31 w, and the calculated hash value are set to the block map 21 (step S 119), and then performs the writing process.
- the write destination LBA is the LBA included in the received write request, or the LBA and the position of the storage target data in the storage target information (information instructed to write by the write request). It is the calculated LBA.
- step S117 After the operation of the storage control device 10 is started, when the process of step S117 is executed the same number of times as the “predetermined number”, the data registration number of the write target BF 31w becomes the “default number”. If the search in step S102 (or S104) fails under the situation where the data registration number of the write target BF31w is the “predetermined number”, the storage processing unit 41 determines that the data registration number of the write target MBF 31w is It is determined that the number is not less than the predetermined number (step S111; NO).
- the storage processing unit 41 stores (adds) the MBF 31 having the same content and MBF-ID as the write target MBF 31w in the MBF cache table 24 (step S113).
- the storage processing unit 41 stores (adds) a copy of the write target MBF 31w (hereinafter referred to as the new MBF 31) whose data registration number has become the “predetermined number” in the MBF cache table 24 (step S113). ).
- step S113 processing for adding the MBF 31 on the MBF cache table 24 to the MBF table 22 may be performed. Specifically, during the process of step S113, the storage processing unit 41 first determines whether m MBFs 31 are stored on the MBF cache table.
- the storage processing unit 41 adds the new MBF 31 to the MBF cache table, and then ends the process of step S113.
- the storage processing unit 41 identifies the most recently used MBF 31 on the MBF cache table as the target MBF 31. Next, the storage processing unit 41 determines whether or not the MBF-ID of the target MBF 31 is stored on the RAM 12 as a registered MBF-ID.
- the storage processing unit 41 performs the following three processes.
- the storage processing unit 41 stores the new MBF 31 in the part where the target MBF 31 is stored on the MBF cache table, and then ends the process of step S113.
- the storage processing unit 41 stores the target MBF 31 on the MBF cache table without performing the above three processes.
- the new MBF 31 is stored in the part.
- the storage process part 41 complete finishes the process of step S113.
- the storage processing unit 41 that has completed the process of step S113 initializes the write target MBF and performs a process of changing the MBF-ID of the write target MBF to a new ID (step S114).
- the new ID is an MBF-ID that is different from any existing MBF-ID.
- the new ID is generated, for example, by adding “1” to the MBF-ID of the write target MBF.
- the storage processing unit 41 stores the initial value of the MBF-specific hash log information related to the new MBF 31 in the hash log cache table (step S115).
- step S115 the initial value of the MBF hash log information related to the new MBF 31 is stored in the portion of the hash log cache table where the MBF hash log information related to the target MBF 31 is stored.
- the storage processing unit 41 completes the writing process after executing the processes of steps S116 to S119 already described.
- the storage processing unit 41 stores the hash value on the hash log cache table 28 associated with the lowermost BF.
- a record relating to duplicate data of the storage target data is searched from the hash log (step S104).
- the record related to the duplicate data of the storage target data is a record in which the value of the hash value field matches the calculated hash value.
- step S105 When a record related to duplicate data of the storage target data cannot be searched (step S105; NO), the storage processing unit 41 executes the processing after step S111 (FIG. 6B) as in the case where the search of step S102 fails. Then, the writing process is finished.
- step S105 when a record related to duplicate data of the storage target data can be retrieved (step S105; YES), the storage processing unit 41 performs a hit frequency management process (step S106; details will be described later).
- the storage processing unit 41 After completing the hit frequency management process, the storage processing unit 41 adds to the block map 21 a record in which the storage destination LBA, the MBF-ID of the MBF 31 including the searched lowermost BF, and the calculated hash value are set (step S107). Then, the storage processing unit 41 ends this writing process.
- the read processing unit 42 is a unit (functional block) that reads data from the storage 30.
- FIG. 7 shows a flowchart of a read process performed when the read processing unit 42 reads certain data from the storage 30.
- the read target data is data that the read processing unit 42 is about to read from the storage 30.
- the read target LBA is the LBA of the read target data.
- the read processing unit 42 that has started the read process first searches the block map 21 for the MBF-ID and hash value associated with the read target LBA (step S201).
- the read processing unit 42 sets the block size ALL0 data as the read result of the data of the read target LBA (step S202). S208).
- the block size ALL0 data is data in which all bits are “0” and the size matches the block size.
- step S208 ends this read process.
- the block map 21 stores storage destination LBAs of all data stored in the storage 30 in the past (see FIGS. 6A and 6B). Therefore, when the MBF-ID associated with the read target LBA cannot be searched (step S202; NO), the read target data (data identified by the read target LBA) does not exist. Therefore, the block size ALL0 data is used as the result of reading the data of the read target LBA.
- the read processing unit 42 determines whether or not the corresponding MBF 31 exists on the RAM 12 (step S203). ).
- the corresponding MBF 31 is the MBF 31 to which the MBF-ID searched in the process of step S201 is assigned.
- the process of step S203 is not a process of determining whether or not a corresponding MBF 31 exists in all MBFs 31 on the MBF cache table, but in all the MBFs 31 and the write target MBF 31w on the MBF cache table. This is a process for determining whether or not the corresponding MBF 31 exists.
- step S203 If the corresponding MBF 31 does not exist on the RAM 12 (step S203; NO), the read processing unit 42 performs the following processing in step S204.
- the read processing unit 42 first identifies the most recently used MBF 31 on the MBF cache table as the target MBF 31. Next, the storage processing unit 41 determines whether or not the MBF-ID of the target MBF 31 is stored on the RAM 12 as a registered MBF-ID.
- the storage processing unit 41 performs the following three processes as described above.
- the storage processing unit 41 that has completed these processes reads the corresponding MBF 31 from the MBF table 22 and stores it on the MBF cache table as the MBF 31 instead of the target MBF 31. Further, the storage processing unit 41 reads the MBF-specific hash log information related to the corresponding MBF 31 from the hash log table 22 and stores it in the hash log cache table as information instead of the MBF-specific hash log information related to the target MBF 31.
- the storage processing unit 41 ends the process of step S204.
- the read processing unit 42 performs a process having almost the same content as the process performed by the storage processing unit 41 in steps S113 and S115 (FIG. 6B) of the storage process in step S204.
- the reason for not determining the number of MBFs 31 on the MBF cache table is that step S204 is not executed unless the number of MBFs 31 on the MBF cache table is 3. It is.
- step S204 After completing the process in step S204, the read processing unit 42 starts the process after step S205.
- step S203 If the corresponding MBF 31 exists on the RAM 12 (step S203), the read processing unit 42 performs a hit frequency management process (details will be described later) in step S210, and then starts the processes in and after step S205. .
- step S205 the read processing unit 42 searches the corresponding MBF 31 for the lowest BF in which the verification hash value (hereinafter referred to as a processing target hash value) searched in the process of step S201 is registered.
- the read processing unit 42 searches for the PBA associated with the processing target hash value from the hash log on the hash log cache log table 28 that is associated with the searched lowermost BF (step S206).
- the read processing unit 42 reads the data of the physical block indicated by the searched PBA from the storage 30 as read target data (step S207). Then, the read processing unit 42 ends this read process.
- the deduplication processing unit 43 is a unit (functional block) that performs deduplication on data already stored in the storage 30.
- the storage controller 10 stores the duplicate data of the storage target data only from the MBF 31 and the MBF-specific hash log information on the RAM 12 when the storage target data is stored in the storage 30 (see FIGS. 6A and 6B). Determine the presence or absence. Therefore, if the storage control device 10 is used, a case where “a device that reads the MBF 31 in the HDD 13 onto the RAM 12 to determine the presence of duplicate data” or “a device in which the hash log table 22 exists on the RAM 12” is used. Rather, the storage target data can be stored in the storage 30 at a high speed. In addition, the storage control device 10 is a device that requires less storage capacity of the RAM 12 than “a device in which the hash log table 22 and the MBF table 23 exist on the RAM 12”.
- the storage control device 10 is a device that determines the presence / absence of duplicate data from only the MBF 31 and the MBF-specific hash log information on the RAM 12, the storage target data in which the duplicate data actually exists is stored in the storage 30. It is also a device that may write.
- the storage capacity of the storage 30 is wasted. For this reason, it is desirable to perform deduplication on data already stored in the storage 30. However, depending on the deduplication method, the response speed to the read request is slow.
- the verification hash value of the data A to D is stored in the hash log information # 1 for each MBF, and then the verification hash value of the data having the same contents as the data A to D Are stored in the hash log information # 2 to # 5 for each MBF.
- m 2.
- data duplication can be eliminated in various ways.
- the file ⁇ read by referring only to the hash log information # 1 for MBF is the hash log information for each MBF. If # 2 to # 5 are not referenced, reading is impossible.
- the storage control device 10 is a device that loads MBF and MBF-specific hash log information required for data reading on the RAM 12 (see FIG. 7) and loads the information from the HDD. Therefore, when the duplication of data is eliminated by updating the hash log information # 1 by MBF and the block map 21, the maximum number of times of loading the information from the HDD until then is the minimum when the file ⁇ is read from the HDD. But you have to load the information twice.
- hit frequency management information 20 which is information that is referred to and updated by hit frequency management processing will be described.
- the hit frequency management information 20 includes first queue information to N + 1th queue information.
- the i-th queue information includes a plurality of MBF-IDs held in the i-th queue and information indicating the positional relationship of these MBF-IDs in the i-th queue.
- the hit frequency management process actually performed by the CPU 11 functioning as the storage processing unit 41 or the read processing unit 42 represents a queue in which the combination and order of the MBF-ID held is different from that of the previous one. As described above, it is a process of changing the contents of some queue information. However, for convenience of explanation, it is assumed below that the first to N + 1th queues 40 1 to 40 N + 1 which are hardware queues of the above specifications exist, as schematically shown in FIG. 8A. The contents of the frequency management process will be described.
- the hit frequency management process is a process of updating the hit frequency management information 20 using the MBF-ID of the MBF 31 searched / specified before the execution.
- the MBF-ID hereinafter referred to as a processing target ID
- the processing target ID is the MBF-ID of the corresponding MBF 31 searched in the process of step S201 in the reading process (FIG. 7).
- the hit frequency management process is a process executed when the MBF 31 on the RAM 12 can be used as it is, that is, when a cache hit occurs. . Therefore, it can be said that the processing target ID is the MBF-ID of the MBF 31 that has a cache hit.
- the CPU 11 that has started the hit frequency management process first handles the processing target ID as input data to the first queue 40 1 , and the same data as the input data (processing target ID) exists in the first queue 40 1 . Determine whether or not.
- the CPU 11 registers (adds) the input data to the first queue 40 1 as schematically shown in FIG. 8B. ) And then the hit frequency management process is terminated.
- the CPU 11 extracts the data from the first queue 40 1 . Then, as schematically shown in FIG. 8C, the CPU 11 treats the extracted data (the same data as the processing target ID) as input data to the second queue 40 2 , and sends it to the second queue 40 2 . Then, the same processing as the processing for the first queue 40 1 is performed.
- the CPU 11 registers the input data in the first queue 40 1 as schematically shown in FIG. 8C ( After adding), the hit frequency management process is terminated.
- the CPU 11 takes out the data from the second queue 40 2 .
- the CPU 11 handles the extracted data as input data to the third queue (not shown), and has the same content as the processing for the first queue 40 1 (and the second queue 40 2 ) for the third queue. Process.
- the processing performed by the CPU 11 for the Nth queue 40 N when the same data as the input data can be extracted from the N-1th queue (not shown) is the same processing as the processing for the first queue 40 1 .
- the processing performed by the CPU 11 for the (N + 1) th queue 40 N + 1 when the same data as the input data can be extracted from the Nth queue 40 N is slightly different from the processing for the first queue 40 1 .
- the CPU 11 first determines whether or not the same data as the processing target data exists in the N + 1 queue 40 N + 1 . To do. If the same data as the processing target ID does not exist in the (N + 1) th queue 40 N + 1 , the CPU 11 registers the processing target ID in the (N + 1) th queue 40 N + 1 and then performs hit frequency management. The process ends. On the other hand, if the processing target ID exists in the (N + 1) th queue 40 N + 1 , the CPU 11 takes out the processing target ID from the (N + 1) th queue 40 N + 1 and re-registers it in the (N + 1) th queue 40 N + 1 . In other words, the CPU 11 changes the position of the processing target ID in the (N + 1) -th queue 40 N + 1 to the head that takes the longest time to be discarded. Then, the CPU 11 ends the hit frequency management process.
- the deduplication processing unit 43 refers to the hit information management information 20 to grasp the status of the (N + 1) th queue 40 N + 1 according to a predetermined schedule (every Z1 hour; every day, Z2 time, etc.). Do.
- the duplicate removal processing unit 43 extracts all MBF-IDs from the (N + 1) th queue 40 N + 1 .
- the MBF-ID is handled as a processing target MBF-ID
- each hash log 25 related to the MBF-ID is handled as a processing target hash log. Perform removal processing.
- Each hash log 25 related to a certain MBF-ID is a hash log 25 associated with each bottom BF of the MBF 31 identified by the MBF-ID.
- the deduplication processing unit 43 that has started deduplication processing on a certain processing target hash log first calculates a hash value (that is, a verification hash value of certain data) on the first record of the processing target hash log. Obtained as a processing target hash value (step S301).
- the deduplication processing unit 43 searches the MBF 31 in the storage control apparatus 10 for the MBF 31 in which the processing target hash value is registered, and from the searched MBF 31, the processing target hash value is registered.
- the lower BM is searched (step S302).
- the MBF-ID does not match any MBF-ID extracted from the (N + 1) -th queue 40 N + 1 , and the processing target hash value is registered in the process of step S302 before the previous time. This is a process of searching for the MBF 31 in which the processing target hash value is registered from among the MBFs whose presence / absence is not checked.
- step S303 When the MBF 31 in which the processing target hash value is registered can be searched (step S303; NO), the deduplication processing unit 43 sets the processing target hash value from the hash log associated with the searched bottom BF.
- the record being deleted is deleted (step S304). If the hash log associated with the searched lowermost BF exists in the hash log table and the hash log cache table, the process of step S304 is performed on the hash logs in both tables. Done.
- step S305 the duplicate removal processing unit 43 first searches the block map for a record in which the MBF-ID of the searched MBF and the processing target hash value are set. Then, the duplicate removal processing unit 43 changes the MBF-ID on the retrieved record to the processing target MBF-ID (step S305), and then performs the determination in step S306. If no record for which the processing target hash value is set is found during the process of step S304, the duplicate removal processing unit 43 performs the determination of step S306 without performing the process of step S305.
- step S306 the duplicate removal processing unit 43 determines whether or not the loop processing end condition in steps S302 to S306 is satisfied.
- the loop processing end condition in steps S302 to S306 is, for example, a condition in which the loop processing is repeated until the search in step S302 fails or the loop processing is not repeated (the processing in steps S302 to S305 is performed once). That is.
- the deduplication processing unit 43 restarts the processes after step S302 when the loop processing end conditions of steps S302 to S306 are not satisfied.
- step S302 fails (step S303; YES)
- the duplicate removal processing unit 43 determines whether or not the processing of all the records in the processing target hash log has been completed (step S307).
- the deduplication processing unit 43 also determines whether or not the processing of all the records in the processing target hash log has been completed even when the loop processing end condition of steps S302 to S306 is satisfied (step S306; YES) (step S306: YES). Step S307).
- step S307 When the processing of all the records of the processing target hash log has not been completed (step S307; NO), the deduplication processing unit 43 returns to step S301, and calculates the hash value on the next record of the processing target hash log. Acquired as a processing target hash value.
- the deduplication processing unit 43 ends the deduplication processing when the processing of all the records of the processing target hash log is completed.
- the MBF-ID_ ⁇ is input to the (N + 1) -th queue 40 N + 1 by the above-described hit frequency management process (see FIG. 8C) because the MBF-ID_ ⁇ is discarded from the N-th queue 40 N that is a FIFO queue. This is when MBF-ID_ ⁇ has been previously taken out from the (N-1) th queue. Since the N-1 queue is also a FIFO queue, the MBF-ID_ ⁇ is taken out from the N-1 queue before the MBF-ID_ ⁇ is discarded from the N-1 queue. This is when MBF-ID_ ⁇ is taken out.
- each other queue is also a FIFO queue
- MBF-ID_ ⁇ is not taken out from the previous queue before MBF-ID_ ⁇ is discarded from each queue, MBF-ID_ ⁇ is not input to the next queue. Therefore, the MBF-ID registered in the (N + 1) -th queue is the MBF-ID of the MBF having a particularly high recent hit frequency.
- the duplicate removal process performed by the duplicate removal processing unit 43 performs the duplicate removal while maintaining the contents of each hash log associated with such an MBF. And if the contents of each hash log associated with MBF with particularly high recent hit frequency are maintained, the average number of times of loading information from the HDD that is normally required when reading a file should not be increased. Can do. Therefore, it can be said that the deduplication by the deduplication process and the hit frequency management process described above can perform deduplication without reducing the response speed to the read request.
- the storage control apparatus 10 described above can be modified in various ways.
- the storage control device 10 can be transformed into a device in which the block map 21 is stored in the HDD 13.
- the storage control device 10 can be transformed into a device that does not have the hash log cache table 28 (a device that always accesses the hash log table 23).
- MBF information that has the same function and is not classified into MBF can be adopted. That is, instead of MBF, data in the data area in which each data is stored is registered and can be used to specify in which data storage area each data in the data area is stored. Information can also be adopted. Further, instead of the hit frequency management process, a process of counting the usage frequency / frequency of each MBF may be employed. The hit frequency management process can be transformed into a process for actually controlling the hardware queue.
- the storage control device 10 can be transformed into a dedicated device or a device integrated with the storage 30.
- the storage control device 10 can be modified to a device that is used by being connected to a storage device 30 to be accessed with a logical block address (a storage device 30 in which the logical block address is converted into a physical block address). This modification can be realized only by using the LBA of the storage device 30 instead of the PBA.
- the storage control program 18 can be recorded and distributed on a portable recording medium such as a flexible disk or a CD-ROM (Compact Disc Read Read Memory).
- a portable recording medium such as a flexible disk or a CD-ROM (Compact Disc Read Read Memory).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データ管理情報(MBF等)の記憶のために使用される,高速にアクセスできる記憶手段(第2記憶部)の記憶容量が少なくても良好に重複除去を行えるストレージ制御装置。ストレージ制御装置10は、ストレージ30に記憶されたデータを記憶領域別に管理する複数のMBF31を備え、一部のMBF31をRAM12上にキャッシュし、データの書込時には、RAM12上のMBF31のみに基づき重複の有無を判定する。また、ストレージ制御装置10は、各MBFの利用状況に基づき、MBFの利用頻度が高い方のハッシュログの内容が維持される形で、ストレージ30内に格納済みのデータの重複除去を行う。
Description
本発明は、ストレージ制御装置とストレージ制御方法とストレージ制御プログラムとに関する。
ストレージ(記憶装置)の記憶容量の有効活用を図る技術として、データ重複除去、重複排除等と呼ばれている,重複したデータをストレージ内に記憶しない技術が知られている。そして、データ重複除去を行う装置では、データが重複しているか否かの判定に、通常、ブルームフィルタや多段ブルームフィルタが用いられている。
多段ブルームフィルタは、ブルームフィルタを多段化したデータ構造である(例えば、特許文献1参照)。この多段ブルームフィルタは、データが記憶されている記憶領域(アドレス範囲)の検索機能を有している。従って、多段ブルームフィルタを用いれば、データの重複除去が高速に行えるのであるが、ストレージサイズが大きくなるにつれ、データの管理に使用する多段ブルームフィルタのサイズも大きくなる。そのため、多段ブルームフィルタを用いる場合には、比較的に大容量のメモリを装置に搭載することが行われている。
尚、本書で開示する技術に関連する文献としては、以下の特許文献2、3、非特許文献1も存在している。
"2Q: a low overhead high performance buffer replacement algorithm" T. Johnson and Dennis Shasha, Very Large Database Systems Conference1994,September, 1994.
開示の技術の課題は、多段ブルームフィルタの記憶のために使用される,高速にアクセスできる記憶手段(第2記憶部)の記憶容量が少なくても、良好に重複除去を行える技術を提供することにある。
開示の技術の一態様のストレージ制御装置は、
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第1記憶部と、
前記第1記憶部よりも高速にデータを読み書きできる第2記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該データ管理情報を前記第2記憶部上のいずれかのデータ管理情報の代わりに前記第2記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも1つのデータ管理情報を選択し、選択した少なくとも1つのデータ管理情報が関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する。
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第1記憶部と、
前記第1記憶部よりも高速にデータを読み書きできる第2記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該データ管理情報を前記第2記憶部上のいずれかのデータ管理情報の代わりに前記第2記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも1つのデータ管理情報を選択し、選択した少なくとも1つのデータ管理情報が関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する。
上記技術によれば、データ管理情報(多段ブルームフィルタ等)の記憶のために使用される,高速にアクセスできる記憶手段(第2記憶部)の記憶容量が少なくても、良好に重複除去を行える。
以下、開示の技術の一実施形態に係るストレージ制御装置について、図面を参照して詳細に説明する。
図1に、本実施形態に係るストレージ制御装置10の構成及び使用形態を示す。
この図1に示してあるように、ストレージ制御装置10は、コンピュータ50のHDD(Hard Disk Drive)13に、OS(Operating System)、ストレージ制御プログラム18等をインストールした装置である。換言すれば、CPU(Central Processing Unit)11が、ストレージ制御プログラム18(及びOS)をRAM(Random Access Memory)12上にロードして実行しているコンピュータ50が、ストレージ制御装置10である。
ストレージ制御プログラム18がインストールされるコンピュータ50は、通常のコンピュータである。そのため、各構成要素の詳細説明は省略するが、ストレージ制御装置10(コンピュータ50)は、IPL(Initial Program Loader)等のファームウェアを記憶したフラッシュROM(Read Only Memory;図1では、“ROM”)を備える。また、ストレージ制御装置10は、各構成要素間を接続するチップセット(つまり、1つの集積回路又はバスで接続された複数の集積回路)を備える。
さらに、ストレージ制御装置10は、ストレージ30との間で通信を行うための通信インタフェース(“I/F”)、及び、少なくとも1台のユーザ端末100との間で通信を行うための通信インタフェース(“I/F”)を備える。
ストレージ制御装置10に接続されるストレージ30は、データを格納するための複数の物理ブロック(単位記憶領域)を有し、データをリード/ライトする物理ブロックを、物理ブロックアドレス(PBA:Phsycal Block Address)で指定できる装置である。
ストレージ制御装置10には、ストレージ30として、HDDや、SSD(Solid State Drive)や、HDD及び/又はSSDを複数台組み合わせた装置が接続される。
以下、ストレージ制御装置10の構成及び動作をさらに具体的に説明する。
尚、以下の説明において、データ(格納対象データ等)とは、ストレージ30の1つの物理ブロックに記憶できるサイズの情報のことである。また、データのLBA(Logical Block Address;論理ブロックアドレス)とは、データの格納先/読込先アドレスとして、ユーザ端末100(ユーザ端末100内のストレージ制御装置10用のドライバ)が使用するアドレスのことである。
格納対象データとは、ストレージ制御装置10がストレージ30内に格納しようとしているデータのことである。また、格納対象データの検証用ハッシュ値とは、格納対象データから算出される,格納対象データと同一内容のデータがストレージ30内に存在しているか否かの最終判定に使用されるハッシュ値のことである。この検証用ハッシュ値としては、通常、MD5(Message-Digest 5)、SHA(Secure Hash Algorithm)-1、SHA-256等のアルゴリズムにより算出されるセキュアハッシュ値が使用される。
図2に、ストレージ制御装置10の機能ブロック図を示す。
この図2に示してあるように、ストレージ制御装置10は、格納処理部41、読込処理部42及び重畳除去処理部43を備える。また、ストレージ制御装置10は、ヒット頻度管理情報20、ブロックマップ21、MBFキャッシュテーブル24、ハッシュログキャッシュテーブル28、書込対象MBF31w、MBFテーブル22及びハッシュログテーブル23をRAM12上/HDD13内に保持した状態で動作する。尚、ストレージ制御装置10の停止時には、RAM12上のヒット頻度管理情報20、ブロックマップ21、書込対象MBF31w等が、HDD13内に保存される。そして、ストレージ制御装置10の再起動時には、HDD13内に保存した情報に基づき、RAM12上に停止前と同じ情報が用意される。
この図2に示してあるように、ストレージ制御装置10は、格納処理部41、読込処理部42及び重畳除去処理部43を備える。また、ストレージ制御装置10は、ヒット頻度管理情報20、ブロックマップ21、MBFキャッシュテーブル24、ハッシュログキャッシュテーブル28、書込対象MBF31w、MBFテーブル22及びハッシュログテーブル23をRAM12上/HDD13内に保持した状態で動作する。尚、ストレージ制御装置10の停止時には、RAM12上のヒット頻度管理情報20、ブロックマップ21、書込対象MBF31w等が、HDD13内に保存される。そして、ストレージ制御装置10の再起動時には、HDD13内に保存した情報に基づき、RAM12上に停止前と同じ情報が用意される。
格納処理部41、読込処理部42及び重畳除去処理部43は、ストレージ制御プログラム18(及びOS)を、CPU11(制御部)が実行することにより実現されるユニット(機能ブロック)である。処理部41~43の詳細については後述するが、各処理部は、ストレージ30を、全記憶領域(又は大部分の記憶領域)が同一サイズの複数の記憶領域(以下、データ記憶領域と表記する)に分割されている装置として取り扱う。また、各処理部は、ストレージ30を、当該複数のデータ記憶領域が複数のグループ(データ領域)に分けられている装置として取り扱う。
HDD13内のMBFテーブル22は、複数の多段ブルームフィルタ(MBF:Multi-layer Blume Filter)31を、各MBF31の識別情報であるMBF-IDに対応づけて記憶できるテーブルである。MBFテーブル22の具体的な更新手順については後述するが、このMBFテーブル22は、ストレージ制御装置10の運用開始時には、MBF31を1個も記憶しておらず、ストレージ制御装置10の運用開始後に、MBF31が追加されるテーブルとなっている。
RAM12上のMBFキャッシュテーブル24は、m(mは、通常、2以上)個のMBF31を、各MBF31のMBF-IDに対応づけて記憶できるテーブルである。MBFキャッシュテーブル24には、MBFキャッシュテーブル24から掃き出すMBF31を、LRU(Least Recently Used)アルゴリズムにより選択できるようにするための情報も記憶される。
尚、このMBFキャッシュテーブル24も、MBFテーブル22と同様に、ストレージ制御装置10の運用開始時には、MBF31を1個も記憶していないテーブルである。
RAM12上の書込対象MBF31wは、或る格納対象データがストレージ30内に書き込まれた際に、当該格納対象データの検証用ハッシュ値が登録されるMBF31である。
ここで、書込対象MBF31wと、MBFテーブル22上のMBF31と、MBFキャッシュテーブル24上のMBF31との間の関係を説明しておくことにする。
具体的な処理手順については後述するが、書込対象MBF31wに既定数の検証用ハッシュ値が登録されると、内容及びMBF-IDが書込対象MBF31wと同じMBF31(以下、新MBF31と表記する)がMBFキャッシュテーブル24に追加される。さらに、書込対象MBF31wを、初期化し、書込対象MBF31wのMBF-IDを新IDに変更する処理が行われる。
また、新MBF31(書込対象MBF31w)のMBFキャッシュテーブル24の追加時に、MBFキャッシュテーブル24に既にm個のMBF31が記憶されていた場合には、最も過去に利用されたMBF31がMBFキャッシュテーブル24から掃き出される。尚、MBFキャッシュテーブル24からのMBF31の掃き出しは、MBFテーブル22からのMBF31の読み込み時にも行われる。
MBFキャッシュテーブル24からのMBF31の掃き出し時には、掃き出されるMBF31がMBFテーブル22に記憶されているものであるか否が判断される。そして、MBFキャッシュテーブル24から掃き出されるMBF31がMBFテーブル22に未だ記憶されていないものであった場合には、当該MBF31がMBFテーブル22に追加される。
次に、MBF31の構成を、MBF31の利用法と共に説明する。
MBF31は、通常のBF(ブルームフィルタ)と同様に、それを用いることにより、格納対象データと同一内容のデータがストレージ30に格納されているか否かを判定できるデータ構造である。ただし、MBF31は、所望のデータが書き込まれているデータ記憶領域の検索も行えるものとなっている。
具体的には、M(≧2)段のMBF31は、通常、i(i=1~M)段目のBFとして、Xi-1個のBFを含む。また、通常、M段のMBF31のj(j=2~M)段目のBFのサイズ(ビット数)は、1段目のBFのサイズの1/Xj-1とされる。尚、Xは、2以上の整数値である。以下、Xのことを、分割数とも表記する。
M段のMBF31の1段目のBFは、2段目のX個のBFと対応づけられる。また、M段(M≧3)のMBF31のj(j=2~M-1)段目の各BFは、j+1段目の,互いに異なるX個のBFと対応付けられる。
要するに、段数Mが3であり分割数Xが4であるMBF31は、通常、図3に模式的に示した構成を有している。尚、この図3は、各BFの横方向の長さが各BFのサイズ(ビット数)を示し、BF間の上下関係がBF間の対応関係を示しているものである。
以上、説明した対応関係はBF間の対応関係であったが、M(≧2)段のMBF31のM段目のXi-1個のBF(以下、最下段BFとも表記する)には、ストレージ30の,互いに異なるデータ記憶領域が対応付けられる。
そして、MBF31は、或る最下段BFに対応づけられているデータ記憶領域内に格納対象データを書き込んだ際に、当該最下段BFと、当該最下段BFに直接的/間接的に対応づけられている各BFとに、格納対象データの検証用ハッシュ値を登録して使用するものとなっている。尚、或る最下段BFに直接的に対応づけられているBFとは、当該最下段BFに対応づけられている,1段上のBFのことである。また、或る最下段BFに間接的に対応づけられているBFとは、当該最下段BFに幾つかのBFを介して対応づけられている,2段以上の上のBFのことである。
従って、使用しているMBF31が図3に示したものである場合、例えば、以下の手順で、或るデータ(以下、処理対象データと表記する)と同内容のデータが記憶されているデータ記憶領域を検索することができる。
(1)処理対象データの検証用ハッシュ値を算出。
(2)算出した検証用ハッシュ値(以下、算出ハッシュ値と表記する)がBF1-1に登録されているか否かをチェック。
(3a)算出ハッシュ値がBF1-1に登録されていなかった場合には、処理対象データが“図3のMBF31の管理対象となっている16個のデータ記憶領域”(以下、チェック対象領域と表記する)に記憶されていないと判定して処理を終了。
(3b)算出ハッシュ値がBF1-1に登録されていた場合には、BF1-1に対応づけられている2段目のBF2-1~2-4の中から、算出ハッシュ値が登録されているBFを特定(検索)。
(4a)算出ハッシュ値が登録されている2段目のBFが特定できなかった場合には、処理対象データがチェック対象領域に記憶されていないと判定して処理を終了。尚、1段目のBF1-1に算出ハッシュ値が登録されているにも拘わらず、2段目の全BFに算出ハッシュ値が登録されていない場合があるのは、BFが、誤判定(擬陽性)があり得るものであるためである。
(4b)算出ハッシュ値が登録されている2段目のBFが特定できた場合には、特定されたBFに対応付けられている4個の最下段BF(例えば、BF3-1~3-4)の中から、算出ハッシュ値が登録されている最下段BFを特定。
(5a)算出ハッシュ値が登録されている最下段BFが特定できなかった場合には、算出ハッシュ値が登録されている2段目のBFを未チェックのBFの中から特定してから、(4)〔(4a)又は(4b)〕に戻る。
(5b)算出ハッシュ値が登録されている最下段BFが特定できた場合には、処理対象データと同内容のデータが記憶されているデータ記憶領域を検索結果として処理を終了。
(2)算出した検証用ハッシュ値(以下、算出ハッシュ値と表記する)がBF1-1に登録されているか否かをチェック。
(3a)算出ハッシュ値がBF1-1に登録されていなかった場合には、処理対象データが“図3のMBF31の管理対象となっている16個のデータ記憶領域”(以下、チェック対象領域と表記する)に記憶されていないと判定して処理を終了。
(3b)算出ハッシュ値がBF1-1に登録されていた場合には、BF1-1に対応づけられている2段目のBF2-1~2-4の中から、算出ハッシュ値が登録されているBFを特定(検索)。
(4a)算出ハッシュ値が登録されている2段目のBFが特定できなかった場合には、処理対象データがチェック対象領域に記憶されていないと判定して処理を終了。尚、1段目のBF1-1に算出ハッシュ値が登録されているにも拘わらず、2段目の全BFに算出ハッシュ値が登録されていない場合があるのは、BFが、誤判定(擬陽性)があり得るものであるためである。
(4b)算出ハッシュ値が登録されている2段目のBFが特定できた場合には、特定されたBFに対応付けられている4個の最下段BF(例えば、BF3-1~3-4)の中から、算出ハッシュ値が登録されている最下段BFを特定。
(5a)算出ハッシュ値が登録されている最下段BFが特定できなかった場合には、算出ハッシュ値が登録されている2段目のBFを未チェックのBFの中から特定してから、(4)〔(4a)又は(4b)〕に戻る。
(5b)算出ハッシュ値が登録されている最下段BFが特定できた場合には、処理対象データと同内容のデータが記憶されているデータ記憶領域を検索結果として処理を終了。
尚、上記したように、BFは、誤判定(擬陽性)があり得るものである。従って、上記手順により検索されたデータ記憶領域内に、処理対象データと同内容のデータが記憶されていない場合もある。
図2に戻って、説明を続ける。
HDD13内のハッシュログテーブル23は、基本的には、ストレージ30内に実際に格納されているデータ毎に、そのデータが格納されている物理ブロックのPBAと、そのデータの検証用ハッシュ値との組み合わせを記憶しておくためのテーブルである。ただし、ハッシュログテーブル23には、データ記憶領域別に、データが格納されている物理ブロックのPBAとデータの検証用ハッシュ値との組み合わせが記憶される。
具体的には、図4に模式的に示してあるように、ハッシュログテーブル23は、ハッシュ値フィールドとPBAフィールドとを備えたハッシュログ25を、最下段BF指定情報別に記憶できる構成を有している。
最下段BF指定情報は、例えば、或るMBF31のMBF-IDと、当該MBF31の或る最下段BFの,当該MBF31内における識別情報(以下、BF-IDと表記する)との組み合わせである。この最下段BF指定情報は、いずれかのMBF31の要素としてストレージ制御装置10内に記憶されている1個の最下段BFを特定でき、且つ、当該最下段BFを含むMBFのMBF-IDが分かる情報でありさえすれば良い。
既に説明したように、MBF31の各最下段BFは、ストレージ30の,特定の(独自の)データ記憶領域と対応づけられる。従って、ハッシュログテーブル23内の各ハッシュログ25は、自身が対応づけられている最下段BF指定情報を介して、ストレージ30の,特定のデータ記憶領域に対応づけられていることになる。
そして、ハッシュログテーブル23内の或るデータ記憶領域に対応づけられているハッシュログ25は、当該データ記憶領域内に書き込まれたデータに関するレコードが記憶されるテーブルとなっている。ここで、或るデータ領域内に書き込まれたデータに関するレコードとは、当該データの検証用ハッシュ値と当該データが書き込まれている論理ブロックのPBAが設定されたレコードのことである。
以上、説明したように、ハッシュログテーブル23には、各MBF31の最下段BFの数をLと表記すると MBF31毎に、“L組のハッシュログ及び最下段BF指定情報”(以下、MBF別ハッシュログ情報と表記する)が記憶される。ただし、ストレージ制御装置10の運用開始時におけるハッシュログテーブル23は、MBFテーブルと同様に、MBF別ハッシュログ情報を1個も保持していない。そして、ハッシュログテーブル23は、MBFテーブルの更新手順と同様の手順で更新されるテーブルとなっている。
すなわち、ストレージ制御装置10のRAM12(図2)上には、m+1個のMBF別ハッシュログ情報を記憶できるハッシュログキャッシュテーブル28が用意されている。ストレージ制御装置10の運用開始時、このハッシュログキャッシュテーブル28は、書込対象MBF31wに関する“各ハッシュログ25にレコードが1つも記憶されていないMBF別ハッシュログ情報”(以下、MBF別ハッシュログ情報の初期値と表記する)のみを記憶した状態にある。
また、新MBF31(内容及びMBF-IDが書込対象MBF31wと同じMBF31)の追加により、MBFキャッシュテーブル24から或るMBF31が掃き出される際には、当該MBF31に関するMBF別ハッシュログ情報がハッシュログキャッシュテーブル28から掃き出される。MBFテーブルからのMBF31の読込により、MBFキャッシュテーブル24から或るMBF31が掃き出される際にも、当該MBF31に関するMBF別ハッシュログ情報がハッシュログキャッシュテーブル28から掃き出される。
そして、ハッシュログキャッシュテーブル28から掃き出されるMBF別ハッシュログ情報がハッシュログテーブル22に未だ記憶されていないものであった場合には、当該MBF別ハッシュログ情報がハッシュログテーブル22に追加される。
また、新MBF31のMBFテーブルへの追加時には、ハッシュログキャッシュテーブル28の、それまでMBF別ハッシュログ情報が記憶されていなかった部分又は掃き出ししたMBF別ハッシュログ情報が記憶されていた部分に、新MBF31に関するMBF別ハッシュログ情報の初期値が追加される。
図5に、RAM12上のブロックマップ21の構成を示す。
この図5に示してあるように、ブロックマップ21は、LBAフィールド、MBF-IDフィールド及びハッシュ値フィールドを有する。
この図5に示してあるように、ブロックマップ21は、LBAフィールド、MBF-IDフィールド及びハッシュ値フィールドを有する。
このブロックマップ21は、格納対象データがストレージ30内に格納される度に、当該格納対象データのLBA及び検証用ハッシュ値がそれぞれLBAフィールド及びハッシュ値フィールドに設定されたレコードが追加されるテーブルである。或る格納対象データに関するレコードがブロックマップ21に追加される際、当該レコードのMBF-IDフィールドには、当該格納対象データの検証用ハッシュ値が登録されているMBF31のMBF-IDが設定される。
説明の便宜上、ヒット頻度管理情報20(図2)の詳細は後述することにする。
以下、格納処理部41、読込処理部42及び重複除去処理部43の機能を、説明する。
まず、格納処理部41の機能を説明する。
格納処理部41は、通常は、ストレージ30に対するライト要求が、ユーザ端末100用の通信インタフェース(“I/F”)によって受信されるのを待機(監視)している。
格納処理部41は、通常は、ストレージ30に対するライト要求が、ユーザ端末100用の通信インタフェース(“I/F”)によって受信されるのを待機(監視)している。
ユーザ端末100から或る情報のライト要求が送信されてきた場合、格納処理部41は、当該情報(以下、格納対象情報と表記する)が、ストレージ30の1個の物理ブロックに記憶できるサイズの情報であるか否かを判断する。そして、格納処理部41は、格納対象情報が、1個の物理ブロックに記憶できるサイズの情報であった場合には、格納対象情報自体を格納対象データとして取り扱って、図6A及び図6Bに示した手順の格納処理を実行する。
一方、格納対象情報が、1個の物理ブロックに記憶できるサイズの情報でなかった場合、格納処理部41は、格納対象情報を、物理ブロックに記憶可能なサイズの複数のデータに分割する。そして、格納処理部41は、分割により得られたデータ毎に、そのデータを格納対象データとした格納処理(図6A及び図6B)を実行する。
図6Aに示してあるように、格納処理を開始した格納処理部41は、まず、格納対象データの検証用ハッシュ値を算出する(ステップS101)。
次いで、格納処理部41は、算出した検証用ハッシュ値(以下、算出ハッシュ値と表記する)が登録されている最下段BFを、MBFキャッシュテーブル24上の各MBF31及び書込対象MBF31wの中から検索する(ステップS102)。すなわち、格納処理部41は、上記した(2)~(5a)の処理を、MBFキャッシュテーブル24上の各MBF31及び書込対象MBF31wに対して行う。
既に説明したように、ストレージ制御装置10の運用開始時、MBFキャッシュテーブル24上には、1個もMBF31が記憶されていない。従って、ステップS102の検索は、ストレージ制御装置10の運用開始後、しばらくの間は、書込対象BF31wのみに対して行われる。
算出ハッシュ値が登録されている最下段BFを検索できなかった場合(ステップS103;YES)、格納処理部41は、書込対象MBF31wのデータ登録数が既定数未満であるか否かを判断する(図6B;ステップS111)。
そして、格納処理部41は、書込対象MBF31wのデータ登録数が既定数未満であった場合(ステップS111;YES)には、格納対象データをストレージ30内に書き込む(ステップS116)。このステップS116の処理時、格納処理部41は、格納対象データを書き込む物理ブロックのPBA(以下、格納先PBAと表記する)を、書込対象MBF31wの各最下段BFに対応付けられているデータ記憶領域内の空き物理ブロックのPBAの中から選択する。尚、空き物理ブロックとは、データが格納されていない物理ブロックのことである。また、格納先PBAとしては、通常、前回の格納先PBAとしたアドレスの次アドレスが選択される。
格納対象データをストレージ30内に書き込んだ格納処理部41は、算出ハッシュ値を書込対象MBF31wに登録する(ステップS117)。すなわち、格納処理部41は、格納対象データを格納したデータ記憶領域に対応づけられている,書込対象MBF31wの最下段BMと、当該最下段BFに直接的/間接的に対応づけられている,書込対象MBF31wの各BFとに、算出ハッシュ値を登録する。また、このステップS117にて、格納処理部41は、自身が管理している,RAM12の書込対象MBF31wのデータ登録数に、“1”を加算する処理も行う。
ステップS117の処理を終えた格納処理部41は、算出ハッシュ値を登録した最下段BMに対応付けられている,ハッシュログキャッシュテーブル28上のハッシュログ25に、格納先PBAと算出ハッシュ値とを設定したレコードを追加する(ステップS118)。より具体的には、格納処理部41は、算出ハッシュ値を登録した最下段BMを示す最下段BM指定情報に対応付けられているハッシュログキャッシュテーブル28上のハッシュログ25に、格納先PBAと算出ハッシュ値とを設定したレコードを追加する。
そして、格納処理部41は、ブロックマップ21に、格納先LBAと、書込対象BF31wのMBF-IDと、算出ハッシュ値とを設定したレコードを追加(ステップS119)してから、この書込処理を終了する。尚、書込先LBAとは、受信したライト要求に含まれるLBA、又は、当該LBAと、格納対象データの,格納対象情報(ライト要求で書き込みが指示されている情報)内での位置とから算出されるLBAのことである。
ストレージ制御装置10の運用開始後、ステップS117の処理が“既定数”と同回数実行されると、書込対象BF31wのデータ登録数が“既定数”となる。そして、書込対象BF31wのデータ登録数が“既定数”となっている状況下、ステップS102(又はS104)の検索に失敗した場合、格納処理部41は、書込対象MBF31wのデータ登録数が既定数未満ではないと判断する(ステップS111;NO)。
従って、格納処理部41は、書込対象MBF31wと、内容、MBF-IDが同じMBF31を、MBFキャッシュテーブル24に記憶(追加)する(ステップS113)。換言すれば、格納処理部41はデータ登録数が“既定数”となった書込対象MBF31wのコピー(以下、新MBF31と表記する)を、MBFキャッシュテーブル24に記憶(追加)する(ステップS113)。
尚、このステップS113では、MBFキャッシュテーブル24上のMBF31をMBFテーブル22に追加する処理などが行われる場合がある。具体的には、ステップS113の処理時、格納処理部41は、まず、m個のMBF31がMBFキャッシュテーブル上に記憶されているか否かを判断する。
m個のMBF31がMBFキャッシュテーブル上に記憶されていなかった場合、格納処理部41は、新MBF31を、MBFキャッシュテーブルに追加してから、ステップS113の処理を終了する。
これに対して、m個のMBF31がMBFキャッシュテーブルに記憶されていた場合、格納処理部41は、MBFキャッシュテーブル上の、最も過去に利用されたMBF31を注目MBF31として特定する。次いで、格納処理部41は、注目MBF31のMBF-IDが、登録済MBF-IDとしてRAM12上に記憶されているか否かを判断する。
注目MBF31のMBF-IDが登録済MBF-IDとしてRAM12上に記憶されていなかった場合、格納処理部41は、以下の3処理を行う。
(a)注目MBF31をそのMBF-IDと共にMBFテーブルに追加する処理
(b)注目MBF31に関する,ハッシュログキャッシュテーブル28上のMBF別ハッシュログ情報をハッシュログテーブルに追加する処理
(c)MBFテーブルに追加したMBF31のMBF-IDを、登録済MBF-IDとしてRAM12上に記憶する処理
(a)注目MBF31をそのMBF-IDと共にMBFテーブルに追加する処理
(b)注目MBF31に関する,ハッシュログキャッシュテーブル28上のMBF別ハッシュログ情報をハッシュログテーブルに追加する処理
(c)MBFテーブルに追加したMBF31のMBF-IDを、登録済MBF-IDとしてRAM12上に記憶する処理
これらの処理を終えた格納処理部41は、MBFキャッシュテーブル上の,注目MBF31が記憶されていた部分に新MBF31を記憶してから、ステップS113の処理を終了する。
一方、注目MBF31のMBF-IDが登録済MBF-IDとしてRAM12上に記憶されていた場合、格納処理部41は、上記3処理を行うことなく、MBFキャッシュテーブル上の,注目MBF31が記憶されていた部分に新MBF31を記憶する。そして、格納処理部41は、ステップS113の処理を終了する。
ステップS113の処理を終えた格納処理部41は、書込対象MBFを初期化し、書込対象MBFのMBF-IDを新IDに変更する処理(ステップS114)を行う。ここで、新IDとは、既存のいずれのMBF-IDとも異なるMBF-IDのことである。新IDは、例えば、書込対象MBFのMBF-IDに“1”を加算することにより生成される。
次いで、格納処理部41は、新MBF31に関するMBF別ハッシュログ情報の初期値をハッシュログキャッシュテーブルに記憶する(ステップS115)。このステップS115では、ハッシュログキャッシュテーブルの,注目MBF31に関するMBF別ハッシュログ情報が記憶されていた部分に、新MBF31に関するMBF別ハッシュログ情報の初期値が記憶される。
そして、格納処理部41は、既に説明したステップS116~S119の処理を実行してから、書込処理を終了する。
以下、書込処理の残りのステップの処理の内容を説明する。
算出ハッシュ値が登録されている最下段BFを検索できた場合(図6A、ステップS103;YES)、格納処理部41は、当該最下段BFに対応づけられている,ハッシュログキャッシュテーブル28上のハッシュログから、格納対象データの重複データに関するレコードを検索する(ステップS104)。ここで、格納対象データの重複データに関するレコードとは、ハッシュ値フィールドの値が算出ハッシュ値と一致しているレコードのことである。
格納対象データの重複データに関するレコードを検索できなかった場合(ステップS105;NO)、格納処理部41は、ステップS102の検索に失敗した場合と同様に、ステップS111(図6B)以降の処理を実行して書込処理を終了する。
一方、格納対象データの重複データに関するレコードを検索できた場合(ステップS105;YES)、格納処理部41は、ヒット頻度管理処理(ステップS106;詳細は後述)を行う。
ヒット頻度管理処理を終えた格納処理部41は、ブロックマップ21に、格納先LBAと、検索した最下段BFを含むMBF31のMBF-IDと、算出ハッシュ値とを設定したレコードを追加する(ステップS107)。そして、格納処理部41は、この書込処理を終了する。
次に、読込処理部42(図2)の機能を説明する。
読込処理部42は、ストレージ30からのデータの読み込みを行うユニット(機能ブロック)である。
図7に、読込処理部42が、或るデータをストレージ30から読み込む際に行う読込処理の流れ図を示す。尚、この流れ図及び以下の説明において、読込対象データとは、読込処理部42がストレージ30から読み込もうとしているデータのことである。また、読込対象LBAとは、読込対象データのLBAのことである。読込処理部42は、ストレージ30に対するリード要求が、ユーザ端末100から送信されてきた場合、この読込処理を何回か実行することにより要求された情報を用意して、ユーザ端末100に返送する。
図7に示してあるように、読込処理を開始した読込処理部42は、まず、読込対象LBAと対応づけられているMBF-ID及びハッシュ値をブロックマップ21から検索する(ステップS201)。
読込対象LBAと対応づけられているMBF-ID等を検索できなかった場合(ステップS202;NO)、読込処理部42は、ブロックサイズのALL0データを読込対象LBAのデータの読込結果とする(ステップS208)。尚、ブロックサイズのALL0データとは、全ビットが“0”であり、サイズがブロックサイズと一致するデータのことである。
そして、ステップS208の処理を終えた読込処理部42は、この読込処理を終了する。
要するに、ブロックマップ21には、過去にストレージ30内に格納された全てのデータの格納先LBAが記憶されている(図6A及び図6B参照)。従って、読込対象LBAと対応づけられているMBF-ID等を検索できなかった場合(ステップS202;NO)、読込対象データ(読込対象LBAで識別されるデータ)が存在していないことになる。そのため、ブロックサイズのALL0データが、読込対象LBAのデータの読込結果とされる。
一方、読込対象LBAと対応づけられているMBF-ID等が検索できた場合(ステップS202;YES)、読込処理部42は、対応MBF31がRAM12上に存在するか否かを判断する(ステップS203)。ここで、対応MBF31とは、ステップS201の処理で検索されたMBF-IDが割り当てられているMBF31のことである。尚、ステップS203の処理は、MBFキャッシュテーブル上の全MBF31の中に、対応MBF31が存在するか否かを判断する処理ではなく、MBFキャッシュテーブル上の全MBF31と書込対象MBF31wとの中に、対応MBF31が存在しているか否かを判断する処理である。
対応MBF31がRAM12上に存在していなかった場合(ステップS203;NO)、読込処理部42は、ステップS204にて、以下の処理を行う。
読込処理部42は、まず、MBFキャッシュテーブル上の、最も過去に利用されたMBF31を注目MBF31として特定する。次いで、格納処理部41は、注目MBF31のMBF-IDが、登録済MBF-IDとしてRAM12上に記憶されているか否かを判断する。
注目MBF31のMBF-IDが登録済MBF-IDとしてRAM12上に記憶されていなかった場合、格納処理部41は、上記したものと同じ以下の3処理を行う。
(a)注目MBF31をそのMBF-IDと共にMBFテーブルに追加する処理
(b)注目MBF31に関する,ハッシュログキャッシュテーブル28上のMBF別ハッシュログ情報をハッシュログテーブルに追加する処理
(c)MBFテーブルに追加したMBF31のMBF-IDを、登録済MBF-IDとしてRAM12に記憶する処理
(a)注目MBF31をそのMBF-IDと共にMBFテーブルに追加する処理
(b)注目MBF31に関する,ハッシュログキャッシュテーブル28上のMBF別ハッシュログ情報をハッシュログテーブルに追加する処理
(c)MBFテーブルに追加したMBF31のMBF-IDを、登録済MBF-IDとしてRAM12に記憶する処理
これらの処理を終えた格納処理部41は、MBFテーブル22から対応MBF31を読み込んで、注目MBF31の代わりのMBF31としてMBFキャッシュテーブル上に記憶する。また、格納処理部41は、ハッシュログテーブル22から対応MBF31に関するMBF別ハッシュログ情報を読み込んで、注目MBF31に関するMBF別ハッシュログ情報の代わりの情報としてハッシュログキャッシュテーブルに記憶する。
そして、格納処理部41は、ステップS204の処理を終了する。
要するに、読込処理部42は、格納処理部41が、格納処理のステップS113、S115(図6B)にて行う処理とほぼ同内容の処理を、ステップS204にて行う。尚、ステップS204にて、MBFキャッシュテーブル上のMBF31の数に関する判断が行われていないのは、ステップS204が、MBFキャッシュテーブル上のMBF31の数が3となっていないと実行されないステップであるためである。
ステップS204の処理を終えた読込処理部42は、ステップS205以降の処理を開始する。
また、対応MBF31がRAM12上に存在していた場合(ステップS203)、読込処理部42は、ステップS210にてヒット頻度管理処理(詳細は後述)を行ってから、ステップS205以降の処理を開始する。
ステップS205にて、読込処理部42は、ステップS201の処理で検索された検証用ハッシュ値(以下、処理対象ハッシュ値と表記する)が登録されている最下段BFを対応MBF31から検索する。次いで、読込処理部42は、検索した最下段BFに対応づけられている,ハッシュログキャッシュログテーブル28上のハッシュログから処理対象ハッシュ値に対応づけられているPBAを検索する(ステップS206)。その後、読込処理部42は、検索したPBAが示している物理ブロックのデータを、読込対象データとしてストレージ30から読み込む(ステップS207)。そして、読込処理部42は、この読込処理を終了する。
以下、重複除去処理部43、ヒット頻度管理処理及びヒット頻度管理情報20について、説明する。
重複除去処理部43は、ストレージ30内に既に格納されているデータに対して重複除去を行うユニット(機能ブロック)である。
すなわち、ストレージ制御装置10は、上記したように、格納対象データのストレージ30への格納時(図6A、6B参照)、RAM12上のMBF31及びMBF別ハッシュログ情報だけから、格納対象データの重複データの有無を判断する。従って、ストレージ制御装置10を用いておけば、『HDD13内のMBF31もRAM12上に読み出して重複データの有無を判断する装置』や『ハッシュログテーブル22がRAM12上に存在する装置』を用いた場合よりも、格納対象データをストレージ30内に高速に格納することが出来る。また、ストレージ制御装置10は、『ハッシュログテーブル22及びMBFテーブル23がRAM12上に存在する装置』よりもRAM12の記憶容量が少なくて済む装置となっていることにもなる。
ただし、ストレージ制御装置10は、RAM12上のMBF31及びMBF別ハッシュログ情報だけから重複データの有無を判断する装置であるが故に、重複データが実際には存在している格納対象データをストレージ30に書き込む場合がある装置ともなっている。
そして、同じデータがストレージ30内に存在したのでは、ストレージ30の記憶容量が無駄に消費されることになる。そのため、ストレージ30内に既に格納されているデータに対して重複除去を行うことが望ましいのであるが、重複除去のやり方によっては、リード要求に対する応答速度が遅くなってしまう。
具体的には、例えば、ファイルαの書き込みにより、データA~Dの検証用ハッシュ値がMBF別ハッシュログ情報#1に記憶され、その後、データA~Dと同内容のデータの検証用ハッシュ値が、それぞれ、MBF別ハッシュログ情報#2~#5に記憶された場合を考える。尚、説明の便宜上、m=2であるとする。
この場合、様々な形でデータの重複がなくなるようにすることができる。ただし、MBF別ハッシュログ情報#1及びブロックマップ21を更新することによってデータの重複をなくした場合、MBF別ハッシュログ情報#1のみの参照で読み出せていたファイルαが、MBF別ハッシュログ情報#2~#5を参照しなければ読み出せなくなってしまう。
そして、ストレージ制御装置10は、データの読込に必要とされるMBF及びMBF別ハッシュログ情報がRAM12上になかった場合(図7参照)、HDDからそれらの情報をロードする装置である。従って、MBF別ハッシュログ情報#1及びブロックマップ21の更新によりデータの重複をなくした場合、それまで、HDDからの情報の最大ロード回数が1回であったファイルαの読み出し時に、HDDから最少でも、2回、情報をロードしなければならなくなる。
このように、重複除去のやり方によっては、リード要求に対する応答速度が遅くなってしまう。
リード要求に対する応答速度が遅くならない形での重複除去を可能とするために想到した処理が、以下で説明するヒット頻度管理処理及び重複除去処理である。
まず、ヒット頻度管理処理により参照・更新される情報であるヒット頻度管理情報20の概要を説明する。
ヒット頻度管理情報20は、第1キュー情報~第N+1キュー情報を含む。ここで、第i(i=1~N+1)キュー情報とは、『MBF-IDを複数個保持でき、任意位置のMBF-IDの取り出しが可能なFIFO(First In, First Out)キュー』である第iキューを表す情報のことである。第iキュー情報には、第iキュー内に保持されている複数のMBF-IDや、それらのMBF-IDの第iキュー内での位置関係を示す情報が含まれる。
次に、ヒット頻度管理処理の内容を説明する。尚、格納処理部41又は読込処理部42として機能しているCPU11が実際に行うヒット頻度管理処理は、保持しているMBF-IDの組み合わせや順番がそれまでとは異なるキューを表すものとなるように、幾つかのキュー情報の内容を変更する処理である。ただし、説明の便宜上、以下では、図8Aに模式的に示したように、上記仕様のハードウェアキューである第1~第N+1キュー401~40N+1が存在しているものとして、ヒット頻度管理処理の内容を説明することにする。
ヒット頻度管理処理は、その実行前に検索/特定されたMBF31のMBF-IDを用いて、ヒット頻度管理情報20を更新する処理である。尚、ヒット頻度管理処理の実行前に検索/特定されたMBF31のMBF-ID(以下、処理対象IDと表記する)とは、書込処理(図6A)では、ステップS102の処理で検索されたMBF31のMBF-IDのことである。また、処理対象IDとは、読込処理(図7)では、ステップS201の処理で検索された対応MBF31のMBF-IDのことである。
既に説明した書込処理及び読込処理の処理手順から明らかなように、ヒット頻度管理処理は、RAM12上のMBF31がそのまま使用できる場合、すなわち、キャッシュヒットした場合、に実行される処理となっている。従って、処理対象IDは、キャッシュヒットしたMBF31のMBF-IDとなっていると言うことが出来る。
ヒット頻度管理処理を開始したCPU11は、まず、処理対象IDを第1キュー401への入力データとして取り扱って、入力データ(処理対象ID)と同じデータが第1キュー401内に存在しているか否かを判断する。
そして、CPU11は、入力データと同じデータが第1キュー401内に存在していなかった場合には、図8Bに模式的に示したように、入力データを第1キュー401に登録(追加)してから、ヒット頻度管理処理を終了する。
一方、入力データと同じデータが第1キュー401内に存在していた場合、CPU11は、当該データを第1キュー401から取り出す。そして、CPU11は、図8Cに模式的に示してあるように、取り出したデータ(処理対象IDと同じデータ)を第2キュー402への入力データとして取り扱って、第2キュー402に対して、第1キュー401に対する処理と同内容の処理を行う。
すなわち、CPU11は、入力データと同じデータが第2キュー402内に存在していなかった場合には、図8Cに模式的に示してあるように、入力データを第1キュー401に登録(追加)してから、ヒット頻度管理処理を終了する。一方、入力データと同じデータが第2キュー402内に存在していた場合、CPU11は、当該データを第2キュー402から取り出す。そして、CPU11は、取り出したデータを第3キュー(図示略)への入力データとして取り扱って、第3キューに対して、第1キュー401(及び第2キュー402)に対する処理と同内容の処理を行う。
第N-1キュー(図示略)から入力データと同じデータが取り出せた場合にCPU11が第Nキュー40Nに対して行う処理も、第1キュー401に対する処理と同内容の処理である。ただし、第Nキュー40Nから入力データと同じデータが取り出せた場合にCPU11が第N+1キュー40N+1に対して行う処理は、第1キュー401に対する処理とは若干異なる。
具体的には、第Nキュー40Nから入力データと同じデータが取り出せた場合、CPU11は、まず、第N+1キュー40N+1内に処理対象データと同じデータが存在しているか否かを判断する。そして、CPU11は、第N+1キュー40N+1内に処理対象IDと同じデータが存在していなかった場合には、処理対象IDを第N+1キュー40N+1に登録してから、ヒット頻度管理処理を終了する。一方、第N+1キュー40N+1内に処理対象IDが存在していた場合、CPU11は、処理対象IDを第N+1キュー40N+1から取り出して第N+1キュー40N+1に登録し直す。換言すれば、CPU11は、処理対象IDの第N+1キュー40N+1内の位置を、破棄されるまでに最も時間がかかる先頭に変更する。そして、CPU11は、ヒット頻度管理処理を終了する。
次に、重複除去処理部43の機能を説明する。
重複除去処理部43は、ヒット情報管理情報20を参照することにより第N+1キュー40N+1の状況を把握する処理を、予め定められているスケジュール(Z1時間毎;毎日、Z2時等)に従って行う。
そして、重複除去処理部43は、第N+1キュー40N+1内に1つ以上のMBF-IDが存在していた場合には、第N+1キュー40N+1から全MBF-IDを取り出す。そして、取り出したMBF-ID毎に、そのMBF-IDを処理対象MBF-IDとして取り扱うと共に、そのMBF-IDに関する各ハッシュログ25を処理対象ハッシュログとして取り扱って、図9に示した手順の重複除去処理を行う。尚、或るMBF-IDに関する各ハッシュログ25とは、当該MBF-IDで識別されるMBF31の各最下段BFに対応づけらているハッシュログ25のことである。
すなわち、或る処理対象ハッシュログに対する重複除去処理を開始した重複除去処理部43は、まず、処理対象ハッシュログの最初のレコード上のハッシュ値(つまり、或るデータの検証用ハッシュ値)を、処理対象ハッシュ値として取得する(ステップS301)。
次いで、重複除去処理部43は、ストレージ制御装置10内のMBFの中から、処理対象ハッシュ値が登録されているMBF31を検索すると共に、検索したMBF31から,処理対象ハッシュ値が登録されている最下段BMを検索する(ステップS302)。このステップS302の処理は、第N+1キュー40N+1から取り出したいずれのMBF-IDともMBF-IDが一致しておらず、かつ、前回以前のステップS302の処理で処理対象ハッシュ値の登録の有無がチェックされていないMBFの中から、処理対象ハッシュ値が登録されているMBF31を検索する処理である。
処理対象ハッシュ値が登録されているMBF31を検索できた場合(ステップS303;NO)、重複除去処理部43は、検索した最下段BFに対応づけらているハッシュログから処理対象ハッシュ値が設定されているレコードを削除する(ステップS304)。このステップS304の処理は、検索した最下段BFに対応づけらているハッシュログが、ハッシュログテーブル内及びハッシュログキャッシュテーブル内に存在していた場合には、両テーブル内のハッシュログに対して行われる。
続くステップS305にて、重複除去処理部43は、まず、検索したMBFのMBF-IDと処理対象ハッシュ値とが設定されているレコードをブロックマップから検索する。そして、重複除去処理部43は、検索したレコード上のMBF-IDを処理対象MBF-IDに変更(ステップS305)してから、ステップS306の判断を行う。尚、ステップS304の処理時に処理対象ハッシュ値が設定されているレコードを見出せなかった場合、重複除去処理部43は、このステップS305の処理を行うことなく、ステップS306の判断を行う。
ステップS306にて、重複除去処理部43は、ステップS302~S306のループ処理の終了条件が満たされたか否かを判断する。ここで、ステップS302~S306のループ処理の終了条件とは、例えば、ステップS302の検索に失敗するまでループ処理を繰り返す、ループ処理を繰り返さない(ステップS302~S305の処理を1回行う)といった条件のことである。
そして、重複除去処理部43は、ステップS302~S306のループ処理の終了条件が満たされていなかった場合には、ステップS302以降の処理を再び開始する。
重複除去処理部43は、ステップS302の検索に失敗した場合(ステップS303;YES)には、処理対象ハッシュログの全レコードの処理が完了したか否かを判断する(ステップS307)。重複除去処理部43は、ステップS302~S306のループ処理の終了条件が満たされた場合(ステップS306;YES)にも、処理対象ハッシュログの全レコードの処理が完了したか否かを判断する(ステップS307)。
処理対象ハッシュログの全レコードの処理が完了していなかった場合(ステップS307;NO)、重複除去処理部43は、ステップS301に戻って、処理対象ハッシュログの次のレコード上のハッシュ値を、処理対象ハッシュ値として取得する。
そして、重複除去処理部43は、処理対象ハッシュログの全レコードの処理が完了したときに、この重複除去処理を終了する。
要するに、上記したヒット頻度管理処理(図8C参照)により、第N+1キュー40N+1にMBF-ID_βが入力されるのは、FIFOキューである第Nキュー40NからMBF-ID_βが破棄される以前に、第N-1キューから、MBF-ID_βが取り出されたときである。また、第N-1キューもFIFOキューであるので、第N-1キューからMBF-ID_βが取り出されるのは、第N-1キューからMBF-ID_βが破棄される以前に、第N-2キューから、MBF-ID_βが取り出されたときである。
他の各キューもFIFOキューであるので、各キューからMBF-ID_βが破棄される以前に、前キューからMBF-ID_βが取り出されないと、次キューにMBF-ID_βが入力されない。従って、第N+1キューに登録されるMBF-IDは、最近のヒット頻度が特に高いMBFのMBF-IDとなる。
また、重複除去処理部43が行う重複除去処理は、そのようなMBFに対応づけられている各ハッシュログの内容を維持して、重複除去を行うものとなっている。そして、最近のヒット頻度が特に高いMBFに対応づけられている各ハッシュログの内容を維持しておけば、通常、ファイルの読み込み時に必要なHDDからの情報の平均的なロード回数を増やさないことができる。従って、上記した重複除去処理及びヒット頻度管理処理による重複除去は、リード要求に対する応答速度が遅くならない形で重複除去を行えるものとなっていると言うことができる。
《変形形態》
上記したストレージ制御装置10は、各種の変形が行えるものである。例えば、ストレージ制御装置10を、ブロックマップ21がHDD13に記憶される装置に変形することができる。また、ストレージ制御装置10を、ハッシュログキャッシュテーブル28がない装置(常に、ハッシュログテーブル23に対するアクセスが行われる装置)に変形することができる。
上記したストレージ制御装置10は、各種の変形が行えるものである。例えば、ストレージ制御装置10を、ブロックマップ21がHDD13に記憶される装置に変形することができる。また、ストレージ制御装置10を、ハッシュログキャッシュテーブル28がない装置(常に、ハッシュログテーブル23に対するアクセスが行われる装置)に変形することができる。
MBFの代わりに、同様の機能を有する,MBFに分類されない情報を採用することも出来る。すなわち、MBFの代わりに、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できる情報を採用することも出来る。また、ヒット頻度管理処理の代わりに、各MBFの利用回数/頻度を計数する処理を採用することもできる。ヒット頻度管理処理を、実際にハードウェアキューを制御する処理に変形することもできる。
ストレージ制御装置10を、専用の装置や、ストレージ30と一体化された装置に変形することも出来る。ストレージ制御装置10を、論理ブロックアドレスでアクセスすべき記憶装置30(内部で論理ブロックアドレスが物理ブロックアドレスに変換される記憶装置30)に接続して使用する装置に変形することも出来る。尚、この変形は、PBAの代わりに記憶装置30のLBAが使用されるようにするだけで実現できる。
また、ストレージ制御プログラム18を、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)等の可搬型記録媒体に記録して配布することが出来る。
10 ストレージ制御装置
11 CPU
12 RAM
13 HDD
18 ストレージ制御プログラム
20 ヒット頻度管理情報
21 ブロックマップ
22 MBF
23 ハッシュログテーブル
24 MBFキャッシュテーブル
25 ハッシュログ
28、ハッシュログキャッシュテーブル
30 ストレージ
31 多段ブルームフィルタ(MBF)
31w 書込対象MBF
40 キュー
41 格納処理部
42 読込処理部
43 後処理部
50 コンピュータ
100 ユーザ端末
11 CPU
12 RAM
13 HDD
18 ストレージ制御プログラム
20 ヒット頻度管理情報
21 ブロックマップ
22 MBF
23 ハッシュログテーブル
24 MBFキャッシュテーブル
25 ハッシュログ
28、ハッシュログキャッシュテーブル
30 ストレージ
31 多段ブルームフィルタ(MBF)
31w 書込対象MBF
40 キュー
41 格納処理部
42 読込処理部
43 後処理部
50 コンピュータ
100 ユーザ端末
Claims (7)
- ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第1記憶部と、
前記第1記憶部よりも高速にデータを読み書きできる第2記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該データ管理情報を前記第2記憶部上のいずれかのデータ管理情報の代わりに前記第2記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも1つのデータ管理情報を選択し、選択した少なくとも1つのデータ管理情報が関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御装置。 - 前記データ管理情報が、
関連付けられているデータ領域内のデータ記憶領域毎に、当該データ記憶領域に格納されたデータが登録されるブルームフィルタを含む多段ブルームフィルタである
ことを特徴とする請求項1に記載のストレージ制御装置。 - 前記制御部は、
各データ管理情報の利用状況に基づき、前記第1記憶部に記憶されている複数のデータ管理情報を、利用頻度の多寡に基づき二分する機能を有し、
前記所定の条件が満たされた場合に、利用頻度の多い方の1つ以上のデータ管理情報の中から前記少なくとも1つのデータ管理情報を選択する
ことを特徴とする請求項1又は2に記載のストレージ制御装置。 - 前記第2記憶部は、書込用データ管理情報及び書込用ハッシュログを記憶し、
前記制御部は、
前記格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合、前記格納対象データを前記ストレージ内に格納すると共に、前記格納対象データを書込用データ管理情報に登録し、書込用ハッシュログ及びブロックマップを更新する
ことを特徴とする請求項1から3のいずれか一項に記載のストレージ制御装置。 - 重複除去を行ってストレージにデータを格納するストレージ制御方法において、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第1記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第1記憶部又は前記第1記憶部よりも高速にデータを読み書きできる第2記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該データ管理情報を前記第2記憶部上のいずれかのデータ管理情報の代わりに前記第2記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも1つのデータ管理情報を選択し、選択した少なくとも1つのデータ管理情報が関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御方法。 - コンピュータを、重複除去を行ってストレージにデータを格納するストレージ制御装置として動作させるストレージ制御プログラムであって、
前記コンピュータに、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第1記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第1記憶部又は前記第1記憶部よりも高速にデータを読み書きできる第2記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該データ管理情報を前記第2記憶部上のいずれかのデータ管理情報の代わりに前記第2記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第2記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも1つのデータ管理情報を選択し、選択した少なくとも1つのデータ管理情報が関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する
処理を行わせるストレージ制御プログラム。 - ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているハッシュログの識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログとを記憶する第1記憶部と、
前記第1記憶部よりも高速にデータを読み書きできる第2記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるハッシュログが前記第2記憶部上に記憶されていなかった場合には、前記第1記憶部に記憶されている当該ハッシュログを前記第2記憶部上のいずれかのハッシュログの代わりに前記第2記憶部上に読み出し、読み出したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データのハッシュ値と同じハッシュ値を保持したハッシュログが前記第2記憶部に記憶されていなかった場合には、他のハッシュログを用いて前記格納対象データの重複データの有無を判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各ハッシュログの利用状況を基にした優先度にしたがい、少なくとも1つのハッシュログを選択し、選択した少なくとも1つのハッシュログが関連づけられているデータ領域上のデータについての,他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/861,153 US10048866B2 (en) | 2013-03-29 | 2015-09-22 | Storage control apparatus and storage control method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013074643A JP6098301B2 (ja) | 2013-03-29 | 2013-03-29 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
JP2013-074643 | 2013-03-29 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/861,153 Continuation US10048866B2 (en) | 2013-03-29 | 2015-09-22 | Storage control apparatus and storage control method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014157244A1 true WO2014157244A1 (ja) | 2014-10-02 |
Family
ID=51624213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2014/058353 WO2014157244A1 (ja) | 2013-03-29 | 2014-03-25 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10048866B2 (ja) |
JP (1) | JP6098301B2 (ja) |
WO (1) | WO2014157244A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016194121A1 (ja) * | 2015-06-01 | 2016-12-08 | 株式会社日立製作所 | ストレージシステム、計算機装置、及び、重複排除デバイス |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6089890B2 (ja) * | 2013-03-29 | 2017-03-08 | 富士通株式会社 | ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム |
JP6327994B2 (ja) * | 2014-07-28 | 2018-05-23 | ルネサスエレクトロニクス株式会社 | 制御システムおよび半導体装置 |
CN111427855B (zh) * | 2016-09-28 | 2024-04-12 | 华为技术有限公司 | 一种存储***中重复数据删除方法、存储***及控制器 |
JP2018185760A (ja) * | 2017-04-27 | 2018-11-22 | 株式会社東芝 | データの重複を排除するためのストレージ装置 |
US10776268B2 (en) | 2018-04-19 | 2020-09-15 | Western Digital Technologies, Inc. | Priority addresses for storage cache management |
US10977189B2 (en) * | 2019-09-06 | 2021-04-13 | Seagate Technology Llc | Reducing forward mapping table size using hashing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073276A1 (en) * | 2000-12-08 | 2002-06-13 | Howard John H. | Data storage system and method employing a write-ahead hash log |
JP2011118712A (ja) * | 2009-12-04 | 2011-06-16 | Fujitsu Ltd | データ管理プログラム、データ管理装置、およびデータ管理方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651138A (en) * | 1994-08-31 | 1997-07-22 | Motorola, Inc. | Data processor with controlled burst memory accesses and method therefor |
US20020161961A1 (en) * | 2001-01-17 | 2002-10-31 | Ajile Systems, Inc. | Multiple virtual machine environment management system |
US7149841B2 (en) * | 2003-03-31 | 2006-12-12 | Micron Technology, Inc. | Memory devices with buffered command address bus |
US7484039B2 (en) * | 2005-05-23 | 2009-01-27 | Xiaogang Qiu | Method and apparatus for implementing a grid storage system |
GB2445764A (en) * | 2007-01-22 | 2008-07-23 | Surfcontrol Plc | Resource access filtering system and database structure for use therewith |
JP5162701B2 (ja) | 2009-03-05 | 2013-03-13 | 株式会社日立ソリューションズ | 統合重複排除システム、データ格納装置、及びサーバ装置 |
JP5359941B2 (ja) | 2010-03-10 | 2013-12-04 | 富士通株式会社 | データ管理装置及びデータ管理方法 |
JP5623239B2 (ja) * | 2010-10-28 | 2014-11-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 書込みレコードの重複を排除する記憶装置、及びその書込み方法 |
JP5989574B2 (ja) * | 2013-02-28 | 2016-09-07 | 株式会社東芝 | 計算機、メモリ管理方法およびプログラム |
US9342443B2 (en) * | 2013-03-15 | 2016-05-17 | Micron Technology, Inc. | Systems and methods for memory system management based on thermal information of a memory system |
US9292204B2 (en) * | 2013-05-24 | 2016-03-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method of rebuilding READ cache for a rebooted node of a multiple-node storage cluster |
US9274967B2 (en) * | 2013-08-07 | 2016-03-01 | Nimble Storage, Inc. | FIFO cache simulation using a bloom filter ring |
JP2015084266A (ja) * | 2013-10-25 | 2015-04-30 | マイクロン テクノロジー, インク. | 半導体装置 |
JP2016126813A (ja) * | 2015-01-08 | 2016-07-11 | マイクロン テクノロジー, インク. | 半導体装置 |
-
2013
- 2013-03-29 JP JP2013074643A patent/JP6098301B2/ja active Active
-
2014
- 2014-03-25 WO PCT/JP2014/058353 patent/WO2014157244A1/ja active Application Filing
-
2015
- 2015-09-22 US US14/861,153 patent/US10048866B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073276A1 (en) * | 2000-12-08 | 2002-06-13 | Howard John H. | Data storage system and method employing a write-ahead hash log |
JP2011118712A (ja) * | 2009-12-04 | 2011-06-16 | Fujitsu Ltd | データ管理プログラム、データ管理装置、およびデータ管理方法 |
Non-Patent Citations (1)
Title |
---|
YOSHIHIRO TSUCHIYA ET AL.: "DBLK: Deduplication for primary block storage", MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST), 2011 IEEE 27TH SYMPOSIUM, 23 May 2011 (2011-05-23), pages 1 - 5 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016194121A1 (ja) * | 2015-06-01 | 2016-12-08 | 株式会社日立製作所 | ストレージシステム、計算機装置、及び、重複排除デバイス |
Also Published As
Publication number | Publication date |
---|---|
US20160011788A1 (en) | 2016-01-14 |
US10048866B2 (en) | 2018-08-14 |
JP6098301B2 (ja) | 2017-03-22 |
JP2014199574A (ja) | 2014-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014157244A1 (ja) | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム | |
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US9767140B2 (en) | Deduplicating storage with enhanced frequent-block detection | |
US20160342545A1 (en) | Data memory device | |
JP5881859B2 (ja) | ストレージ装置 | |
EP3321792B1 (en) | Method for deleting duplicated data in storage system, storage system and controller | |
US20170206166A1 (en) | Cache bypass utilizing a binary tree | |
JP6089890B2 (ja) | ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム | |
US9710283B2 (en) | System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting | |
WO2017149592A1 (ja) | ストレージ装置 | |
JP6724534B2 (ja) | 情報処理装置、重複除去プログラム、及び重複除去方法 | |
JP2018073261A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
US20160062895A1 (en) | Method for disk defrag handling in solid state drive caching environment | |
JP2017049806A (ja) | ストレージ制御装置およびストレージ制御プログラム | |
KR20210076828A (ko) | 키-값 장치 및 이의 블록 인터페이스 에뮬레이션 방법 | |
JP4189342B2 (ja) | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 | |
KR20120098068A (ko) | 플래시 메모리 배드 블록 관리 장치 및 방법 | |
US11249666B2 (en) | Storage control apparatus | |
CN108334457B (zh) | 一种io处理方法及装置 | |
KR101153688B1 (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
US8688916B2 (en) | Storage system and data processing method using cache memory | |
KR101379161B1 (ko) | 저장장치에서 블룸필터를 적용한 역매핑 방법 및 시스템 | |
US10740015B2 (en) | Optimized management of file system metadata within solid state storage devices (SSDs) | |
JP2010160544A (ja) | キャッシュメモリシステム及びキャッシュメモリの制御方法 | |
CN117608477A (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: 14773344 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: 14773344 Country of ref document: EP Kind code of ref document: A1 |