IP Library Granted Patent US 12675217
Granted Patent B2
US 12675217 · App. 18/893,126 · Granted Jul 7, 2026

Methods and systems for managing compressed data in disk blocks

Inventors: Roopesh Chuggani (Jaipur, IN); Girish Hebbale Venkatasubbaiah (Bangalore, IN); Dnyaneshwar Nagorao Pawar (Bangalore, IN); Venkateswarlu Tella (Bangalore, IN); Kevin Daniel Varghese (Milpitas, CA); Sushilkumar Gangadharan (San Jose, CA)
Assignee: NetApp, Inc.
G06F3/0608G06F3/0638G06F3/0674
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12675217
App. No.
18/893,126
Granted
Jul 7, 2026
Kind
B2
Abstract

Methods and systems involve sequentially storing compressed data segments received at a storage system in disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments.

Claims (102)

1 . A method executed by one or more processors, comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

using a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determining that the compressed data segment is stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

setting the reference count value of the compressed data segment as a reference count value of the non-overlapping disk block.

2 . The method of claim 1 , wherein the disk blocks are fixed size disk blocks, where a size of each disk block is same.

3 . The method of claim 1 , further comprising:

determining that another compressed data segment is not stored in a non-overlapping disk block; and

setting the reference count value of the another compressed data segment as a reference count value of an overlapping disk block minus a reference count value of each of all other compressed data segments stored in the overlapping disk block, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

4 . The method of claim 1 , further comprising:

determining that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repacking the sequential compressed data chunk in one or more new disk blocks.

5 . The method of claim 4 , wherein the threshold size is a first threshold size when the sequential compressed data chunk involves an overlapping disk block only on one side and is a second threshold size when the sequential compressed data chunk involves overlapping disk blocks on both sides, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

6 . The method of claim 1 , further comprising:

determining that a size of a sequential compressed data chunk stored in the disk blocks is larger than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

outputting a recommendation that the sequential compressed data chunk be repacked when an aggregate number of other sequential compressed data chunks with a same recommendation is equal to or greater than a threshold number.

7 . A non-transitory computer-readable storage medium containing program instructions, wherein execution of the program instructions by one or more processors of a computer causes the one or more processors to perform steps comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

using a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determining that the compressed data segment is stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

setting the reference count value of the compressed data segment as a reference count value of the non-overlapping disk block.

8 . The non-transitory computer-readable storage medium of claim 7 , wherein the disk blocks are fixed size disk blocks, where a size of each disk block is same.

9 . The non-transitory computer-readable storage medium of claim 7 , wherein the steps further comprise:

determining that another compressed data segment is not stored in a non-overlapping disk block; and

setting the reference count value of the another compressed data segment as a reference count value of an overlapping disk block minus a reference count value of each of all other compressed data segments stored in the overlapping disk block, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

10 . The non-transitory computer-readable storage medium of claim 7 , wherein the steps further comprise:

determining that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repacking the sequential compressed data chunk in one or more new disk blocks.

11 . The non-transitory computer-readable storage medium of claim 10 , wherein the threshold size is a first threshold size when the sequential compressed data chunk involves an overlapping disk block only on one side and is a second threshold size when the sequential compressed data chunk involves overlapping disk blocks on both sides, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

12 . The non-transitory computer-readable storage medium of claim 7 , wherein the steps further comprise:

determining that a size of a sequential compressed data chunk stored in the disk blocks is larger than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

outputting a recommendation that the sequential compressed data chunk be repacked when an aggregate number of other sequential compressed data chunks with a same recommendation is equal to or greater than a threshold number.

13 . A system comprising:

memory; and

at least one processor configured to:

receive a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially store the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

use a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determine that the compressed data segment is not stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

set the reference count value of the compressed data segment as a reference count value of an overlapping disk block minus a reference count value of each of all other compressed data segments stored in the overlapping disk block, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

14 . The system of claim 13 , wherein the at least one processor is configured to:

determine that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repack the sequential compressed data chunk in one or more new disk blocks.

15 . A method executed by one or more processors, comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

using a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determining that the compressed data segment is not stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

setting the reference count value of the compressed data segment as a reference count value of an overlapping disk block minus a reference count value of each of all other compressed data segments stored in the overlapping disk block, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

16 . A method executed by one or more processors, comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determining that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repacking the sequential compressed data chunk in one or more new disk blocks,

wherein the threshold size is a first threshold size when the sequential compressed data chunk involves an overlapping disk block only on one side and is a second threshold size when the sequential compressed data chunk involves overlapping disk blocks on both sides, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

17 . A method executed by one or more processors, comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determining that a size of a sequential compressed data chunk stored in the disk blocks is larger than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

outputting a recommendation that the sequential compressed data chunk be repacked when an aggregate number of other sequential compressed data chunks with a same recommendation is equal to or greater than a threshold number.

18 . A non-transitory computer-readable storage medium containing program instructions, wherein execution of the program instructions by one or more processors of a computer causes the one or more processors to perform steps comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

using a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determining that the compressed data segment is not stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

setting the reference count value of the compressed data segment as a reference count value of an overlapping disk block minus a reference count value of each of all other compressed data segments stored in the overlapping disk block, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

19 . A non-transitory computer-readable storage medium containing program instructions, wherein execution of the program instructions by one or more processors of a computer causes the one or more processors to perform steps comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determining that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repacking the sequential compressed data chunk in one or more new disk blocks,

wherein the threshold size is a first threshold size when the sequential compressed data chunk involves an overlapping disk block only on one side and is a second threshold size when the sequential compressed data chunk involves overlapping disk blocks on both sides, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

20 . A non-transitory computer-readable storage medium containing program instructions, wherein execution of the program instructions by one or more processors of a computer causes the one or more processors to perform steps comprising:

receiving a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially storing the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determining that a size of a sequential compressed data chunk stored in the disk blocks is larger than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

outputting a recommendation that the sequential compressed data chunk be repacked when an aggregate number of other sequential compressed data chunks with a same recommendation is equal to or greater than a threshold number.

21 . A system comprising:

memory; and

at least one processor configured to:

receive a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially store the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

use a reference count value of a compressed data segment stored in at least one of the disk blocks to determine whether the compressed data segment is garbage collectible, wherein the reference count value is a number of references made to the compressed data segment;

determine that the compressed data segment is stored in a non-overlapping disk block, wherein the non-overlapping disk block is a disk block having data from a single compressed data segment; and

set the reference count value of the compressed data segment as a reference count value of the non-overlapping disk block.

22 . A system comprising:

memory; and

at least one processor configured to:

receive a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially store the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determine that a size of a sequential compressed data chunk stored in the disk blocks is equal to or smaller than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

repack the sequential compressed data chunk in one or more new disk blocks,

wherein the threshold size is a first threshold size when the sequential compressed data chunk involves an overlapping disk block only on one side and is a second threshold size when the sequential compressed data chunk involves overlapping disk blocks on both sides, wherein the overlapping disk block is a disk block having data from multiple compressed data segments.

23 . A system comprising:

memory; and

at least one processor configured to:

receive a plurality of compressed data segments to be stored in disk blocks at a storage system;

sequentially store the compressed data segments in the disk blocks such that at least one of the disk blocks includes compressed data from at least two of the compressed data segments;

determine that a size of a sequential compressed data chunk stored in the disk blocks is larger than a threshold size, the sequential compressed data chunk including one or more of the compressed data segments stored in the disk blocks; and

output a recommendation that the sequential compressed data chunk be repacked when an aggregate number of other sequential compressed data chunks with a same recommendation is equal to or greater than a threshold number.