Methods and systems for managing compressed data in disk blocks
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.
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.