Relocating compressed extents using file-system hole list
First Claim
Patent Images
1. A method of writing data in a data storage system, the method comprising:
- aggregating a set of data received in I/O (Input/Output) requests into a batch of data, the batch of data including multiple extents, each extent directed to a respective logical address in a file system running in the data storage system;
compressing a current extent of the batch of data to produce a compressed extent, the current extent directed to a logical address that is already backed by a fragment in the data storage system, such that a write of the compressed extent is an overwrite; and
performing an FS-relocate operation, the FS-relocate operation (i) accessing an FS-hole list provided for the file system to select a hole large enough to accommodate the compressed extent, each hole in the FS-hole list representing a range of storage in the file system that contains no currently-valid data, and (ii) placing the compressed extent into the selected hole found in the FS-hole list,wherein the FS-hole list contains multiple queues, each queue specifying a respective set of holes of a respective size, and wherein selecting a hole large enough to accommodate the compressed extent includes (i) selecting, based on a size of the compressed extent, the queue that specifies holes that are minimally large enough to accommodate the compressed extent, and (ii) identifying one of the holes from the selected queue as the selected hole.
4 Assignments
0 Petitions
Accused Products
Abstract
A technique for writing data in a file system includes aggregating data received in a set of I/O requests into a batch that includes multiple extents of data. After compressing a current extent of the batch and determining that the compressed extent does not fit in a space where a previous version of the extent is stored, the technique performs an FS-relocate operation by accessing an F S-hole list provided for the file system and selecting a hole, from the FS-relocate list, which is large enough to accommodate the compressed extent. The technique then places the compressed extent in the selected hole.
10 Citations
17 Claims
-
1. A method of writing data in a data storage system, the method comprising:
-
aggregating a set of data received in I/O (Input/Output) requests into a batch of data, the batch of data including multiple extents, each extent directed to a respective logical address in a file system running in the data storage system; compressing a current extent of the batch of data to produce a compressed extent, the current extent directed to a logical address that is already backed by a fragment in the data storage system, such that a write of the compressed extent is an overwrite; and performing an FS-relocate operation, the FS-relocate operation (i) accessing an FS-hole list provided for the file system to select a hole large enough to accommodate the compressed extent, each hole in the FS-hole list representing a range of storage in the file system that contains no currently-valid data, and (ii) placing the compressed extent into the selected hole found in the FS-hole list, wherein the FS-hole list contains multiple queues, each queue specifying a respective set of holes of a respective size, and wherein selecting a hole large enough to accommodate the compressed extent includes (i) selecting, based on a size of the compressed extent, the queue that specifies holes that are minimally large enough to accommodate the compressed extent, and (ii) identifying one of the holes from the selected queue as the selected hole. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A data storage system, comprising control circuitry that includes a set of processing units coupled to memory, the control circuitry constructed and arranged to:
-
aggregate a set of data received in I/O (Input/Output) requests into a batch of data, the batch of data including multiple extents, each extent directed to a respective logical address in a file system running in the data storage system; compress a current extent of the batch of data to produce a compressed extent, the current extent directed to a logical address that is already backed by a fragment in the data storage system, such that a write of the compressed extent is an overwrite; and perform an FS-relocate operation, the FS-relocate operation (i) accessing an FS-hole list provided for the file system to select a hole large enough to accommodate the compressed extent, each hole in the FS-hole list representing a range of storage in the file system that contains no currently-valid data, and (ii) placing the compressed extent into the selected hole found in the FS-hole list, wherein the control circuitry is constructed and arranged to perform the FS-relocate operation in response to first determining that no hole large enough to accommodate the compressed extent is contained in a batch-hole list, the batch-hole list formed by (i) obtaining a set of mapping metadata that maps all of the extents in the batch of data, (ii) identifying a set of holes pointed to by the set of mapping metadata, and (iii) adding each of the identified set of holes to the batch-hole list.
-
-
14. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a data storage system, cause the control circuitry to perform a method for writing data, the method comprising:
-
aggregating a set of data received in I/O (Input/Output) requests into a batch of data, the batch of data including multiple extents, each extent directed to a respective logical address in a file system running in the data storage system; compressing a current extent of the batch of data to produce a compressed extent, the current extent directed to a logical address that is already backed by a fragment in the data storage system, such that a write of the compressed extent is an overwrite; and performing an FS-relocate operation, the FS-relocate operation (i) accessing an FS-hole list provided for the file system to select a hole large enough to accommodate the compressed extent, each hole in the FS-hole list representing a range of storage in the file system that contains no currently-valid data, and (ii) placing the compressed extent into the selected hole found in the FS-hole list, wherein the FS-hole list contains multiple queues, each queue specifying a respective set of holes of a respective size, and wherein selecting a hole large enough to accommodate the compressed extent includes (i) selecting, based on a size of the compressed extent, the queue that specifies holes that are minimally large enough to accommodate the compressed extent, and (ii) identifying one of the holes from the selected queue as the selected hole. - View Dependent Claims (15, 16, 17)
-
Specification