# US 2023/0409223 A1 · Compression ratio-aware data deduplication

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2023/0409223 A1
- Document ID: US20230409223A1
- Status: Published application
- Kind: A1
- Application number: 17/852,927
- Filed: 2022-06-29
- Published: 2023-12-21
- Earliest claimed: 2022-06-15
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Changxu Jiang; Fei Wang
- Web page: https://patentgrep.com/patent/US20230409223A1

## CPC

- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus comprises a processing device configured to maintain a deduplication data structure comprising sub-portions associated with different compression ratio ranges and having different numbers of data block identifiers. The processing device is also configured to identify a given data block identifier and a given compression ratio for a given data block to be stored, and to determine whether the given data block identifier is in a given one of the sub-portions having a given compression ratio range including the given compression ratio. The processing device is further configured, responsive to determining that the given data block identifier is not in the given sub-portion, to write the given data block to a physical space block of the storage system and, responsive to determining that the given data block identifier is in the given sub-portion, to increment a deduplication reference count for the given data block identifier.

## Claims

### Claim 1

An apparatus comprising:
at least one processing device comprising a processor coupled to a memory;
the at least one processing device being configured to perform steps of:
maintaining, for a storage system, a deduplication data structure comprising a number of entries for data block identifiers, the deduplication data structure comprising two or more sub-portions associated with different compression ratio ranges, the two or more sub-portions of the deduplication data structure comprising a first sub-portion having a first target length of entries for data block identifiers of data blocks having non-zero compression ratios in a first compression ratio range and at least a second sub-portion having a second target length of entries for data block identifiers of data blocks having non-zero compression ratios in a second compression ratio range, the second target length being different than the first target length, the second compression ratio range being different than the first compression ratio range;
identifying, for a given data block to be stored in the storage system, a given data block identifier and a given compression ratio;
determining whether the given data block identifier of the given data block is in a given one of the two or more sub-portions of the deduplication data structure having a given compression ratio range including the given compression ratio;
responsive to determining that the given data block identifier for the given data block is not in the given sub-portion of the deduplication data structure, writing the given data block to a given one of a plurality of physical space blocks of the storage system, the given physical space block being selected based at least in part on the given compression ratio of the given data block and an amount of unused space in the given physical space block; and
responsive to determining that the given data block identifier for the given data block is in the given sub-portion of the deduplication data structure, incrementing a deduplication reference count for the given data block identifier.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein the deduplication data structure comprises a deduplication hash table, and wherein the data block identifiers comprise hashes of content of data blocks.

### Claim 3 (depends on 1)

The apparatus of claim 1 wherein each of the two or more sub-portions of the deduplication data structure has a target length of entries computed based at least in part on its associated compression ratio range.

### Claim 4 (depends on 1)

The apparatus of claim 1 wherein maintaining the deduplication data structure comprises, responsive to receiving a new data block identifier associated with a new data block for addition to the deduplication data structure, determining whether the deduplication data structure has available space for the new data block identifier.

### Claim 5 (depends on 4)

The apparatus of claim 4 wherein determining whether the deduplication data structure has available space for the new data block identifier comprises determining whether a sum of data block identifiers across the two or more sub-portions of the deduplication data structure is less than a target total number of data block identifiers for the deduplication data structure.

### Claim 6 (depends on 4)

The apparatus of claim 4 wherein maintaining the deduplication data structure further comprises, responsive to determining that the deduplication data structure has available space for the new data block identifier:
identifying a compression ratio of the new data block; and
adding the new data block identifier to one of the two or more sub-portions of the deduplication data structure having an associated compression ratio range including the identified compression ratio of the new data block.

### Claim 7 (depends on 4)

The apparatus of claim 4 wherein maintaining the deduplication data structure further comprises, responsive to determining that the deduplication data structure does not have available space for the new data block identifier:
evicting one or more existing data block identifiers from the deduplication data structure; and
adding the new data block identifier to one of the two or more sub-portions of the deduplication data structure having an associated compression ratio range including the identified compression ratio of the new data block.

### Claim 8 (depends on 7)

The apparatus of claim 7 wherein each of the two or more sub-portions of the deduplication data structure has a target length of entries computed based at least in part on its associated compression ratio range, and wherein evicting the one or more existing data block identifiers from the deduplication data structure comprises evicting the one or more existing data block identifiers from ones of the two or more sub-portions of the deduplication data structure having numbers of entries exceeding their associated target lengths.

### Claim 9 (depends on 8)

The apparatus of claim 8 wherein evicting the one or more existing data block identifiers from the deduplication data structure comprises evicting the one or more existing data block identifiers from ones of the two or more sub-portions of the deduplication data structure having numbers of entries exceeding their associated target lengths that are one of least recently used and least frequently used.

### Claim 10 (depends on 1)

The apparatus of claim 1 wherein the at least one processing device is further configured to perform the step of, responsive to determining that an amount of unused space of the given physical space block exceeds a designated threshold, performing a background data copy operation to reduce the amount of unused space of the given physical space block.

### Claim 11 (depends on 10)

The apparatus of claim 10 wherein the storage system comprises a plurality of virtual logical blocks that map logical data blocks to physical space of the plurality of physical space blocks, and wherein the given physical space block is limited to mapping a designated number of the plurality of virtual logical blocks.

### Claim 12 (depends on 11)

The apparatus of claim 11 wherein the background data copy operation comprises:
migrating a first one of the plurality of virtual logical blocks currently mapped to the given physical space block to another one of the plurality of physical space blocks; and
allocating a second one of the plurality of virtual logical blocks to the given physical space block.

### Claim 13 (depends on 12)

The apparatus of claim 12 wherein the first virtual logical block maps a first logical data block having a first compression ratio and the second virtual logical block maps a second logical data block having a second compression ratio.

### Claim 14 (depends on 13)

The apparatus of claim 13 wherein the second compression ratio is lower than the first compression ratio.

### Claim 15

A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform steps of:
maintaining, for a storage system, a deduplication data structure comprising a number of entries for data block identifiers, the deduplication data structure comprising two or more sub-portions associated with different compression ratio ranges, the two or more sub-portions of the deduplication data structure comprising a first sub-portion having a first target length of entries for data block identifiers of data blocks having non-zero compression ratios in a first compression ratio range and at least a second sub-portion having a second target length of entries for data block identifiers of data blocks having non-zero compression ratios in a second compression ratio range, the second target length being different than the first target length, the second compression ratio range being different than the first compression ratio range;
identifying, for a given data block to be stored in the storage system, a given data block identifier and a given compression ratio;
determining whether the given data block identifier of the given data block is in a given one of the two or more sub-portions of the deduplication data structure having a given compression ratio range including the given compression ratio;
responsive to determining that the given data block identifier for the given data block is not in the given sub-portion of the deduplication data structure, writing the given data block to a given one of a plurality of physical space blocks of the storage system, the given physical space block being selected based at least in part on the given compression ratio of the given data block and an amount of unused space in the given physical space block; and
responsive to determining that the given data block identifier for the given data block is in the given sub-portion of the deduplication data structure, incrementing a deduplication reference count for the given data block identifier.

### Claim 16 (depends on 15)

The computer program product of claim 15 wherein the deduplication data structure comprises a deduplication hash table, and wherein the data block identifiers comprise hashes of content of data blocks.

### Claim 17 (depends on 15)

The computer program product of claim 15 wherein each of the two or more sub-portions of the deduplication data structure has a target length of entries computed based at least in part on its associated compression ratio range.

### Claim 18

A method comprising:
maintaining, for a storage system, a deduplication data structure comprising a number of entries for data block identifiers, the deduplication data structure comprising two or more sub-portions associated with different compression ratio ranges, the two or more sub-portions of the deduplication data structure comprising a first sub-portion having a first target length of entries for data block identifiers of data blocks having non-zero compression ratios in a first compression ratio range and at least a second sub-portion having a second target length of entries for data block identifiers of data blocks having non-zero compression ratios in a second compression ratio range, the second target length being different than the first target length, the second compression ratio range being different than the first compression ratio range;
identifying, for a given data block to be stored in the storage system, a given data block identifier and a given compression ratio;
determining whether the given data block identifier of the given data block is in a given one of the two or more sub-portions of the deduplication data structure having a given compression ratio range including the given compression ratio;
responsive to determining that the given data block identifier for the given data block is not in the given sub-portion of the deduplication data structure, writing the given data block to a given one of a plurality of physical space blocks of the storage system, the given physical space block being selected based at least in part on the given compression ratio of the given data block and an amount of unused space in the given physical space block; and
responsive to determining that the given data block identifier for the given data block is in the given sub-portion of the deduplication data structure, incrementing a deduplication reference count for the given data block identifier;
wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

### Claim 19 (depends on 18)

The method of claim 18 wherein the deduplication data structure comprises a deduplication hash table, and wherein the data block identifiers comprise hashes of content of data blocks.

### Claim 20 (depends on 18)

The method of claim 18 wherein each of the two or more sub-portions of the deduplication data structure has a target length of entries computed based at least in part on its associated compression ratio range.
