US7496586B1
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method and apparatus for compressing data in a file system
Assignee: Oracle America Inc
•
Filing: 2004-05-26
•
Granted: 2009-02-24
•
Expires: 2024-05-26
Abstract
Abstract A method for storing a data block, comprising compressing the data block using a first compression algorithm to obtain a compressed data block, generating a data block compression header, combining the compressed data and the data compression header to obtain a compressed data block package, storing the compressed data block package in a storage pool, obtaining a compressed data block package location, calculating a data block checksum for the compressed data block, and storing a first indirect block in the storage pool, wherein the first indirect block comprises the compressed data block package location, the data block checksum, and a compression flag.
Inventors
- 👤 Jeffrey S. Bonwick
- 👤 Matthew A. Ahrens
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-04 16:12
CPC Classifications
H; H03; H03M; H03M7/00; H03M7/30; G; G06; G06F; G06F16/00; G06F16/10; Y; Y10; Y10S; Y10S707/00; Y10S707/99941; Y10S707/99942
Claims Analysis
Total Claims: 14
Claim 1
Independent Claim
313 words
A method for storing a file comprising: receiving a request to store the file in a storage pool, obtaining and compressing a first portion of the file to obtain a first compressed data block; obtaining and compressing a second portion of the file to a second compressed data block; generating a first compressing header for the first compressed data block; generating a second compression header for the second compressed data block; combining the first compressed data block and the first compression header to obtain a first compressed data block package; storing the first compressed data block package in a storage pool at a first location; combining the second compressed data block and the second compression header to obtain a second compressed data block package; storing the second compressed data block package in the storage pool at a second location; calculating a first checksum for the first compressed data block; calculating a second checksum for the second compressed data block; and building a first indirect block comprising the first location, the first checksum, the second location, and the second checksum, a first set compression flag indicating that the first location comprises the first compressed data block, and a second set compression flag indicating that the second location comprises the second compressed data block; storing the first indirect block in the storage pool at a third location; building a second indirect block comprising the third location and a first non-set compression flag indicating that the third location includes an uncompressed first indirect block; and storing the second indirect block in the storage pool at a fourth location, wherein the first location, second location, third location, and fourth location are separate physical locations in the storage pool, wherein the first indirect block and the second indirect block are used to obtain the first compressed data block and the second compressed data block during a read operation.
Claim 2
Independent Claim
313 words
A method for storing a file comprising: receiving a request to store the file in a storage pool, obtaining and compressing a first portion of the file to obtain a first compressed data block; obtaining and compressing a second portion of the file to a second compressed data block; generating a first compressing header for the first compressed data block; generating a second compression header for the second compressed data block; combining the first compressed data block and the first compression header to obtain a first compressed data block package; storing the first compressed data block package in a storage pool at a first location; combining the second compressed data block and the second compression header to obtain a second compressed data block package; storing the second compressed data block package in the storage pool at a second location; calculating a first checksum for the first compressed data block; calculating a second checksum for the second compressed data block; and building a first indirect block comprising the first location, the first checksum, the second location, and the second checksum, a first set compression flag indicating that the first location comprises the first compressed data block, and a second set compression flag indicating that the second location comprises the second compressed data block; storing the first indirect block in the storage pool at a third location; building a second indirect block comprising the third location and a first non-set compression flag indicating that the third location includes an uncompressed first indirect block; and storing the second indirect block in the storage pool at a fourth location, wherein the first location, second location, third location, and fourth location are separate physical locations in the storage pool, wherein the first indirect block and the second indirect block are used to obtain the first compressed data block and the second compressed data block during a read operation.
Claim 3
Dependent Claim
28 words
The method of claim 1 , further comprising: calculating a third checksum for the first indirect block, wherein the third checksum is stored in the second indirect block.
Claim 4
Dependent Claim
56 words
The method of claim 1 , wherein the first compression header comprises a compressed size of the first compressed data block, an uncompressed size of a first data block corresponding to the first compressed data block, and information about the compression algorithm used to compress the first data block corresponding to the first compressed data block.
Claim 5
Dependent Claim
25 words
The method of claim 1 , wherein a storage pool allocator includes functionality to compress first data block to obtain the first compressed data block.
Claim 6
Dependent Claim
16 words
The method of claim 1 , wherein the storage pool comprises at least one storage device.
Claim 7
Dependent Claim
20 words
The method of claim 1 , wherein storing the first compressed data block package comprises using a storage pool allocator.
Claim 8
Dependent Claim
337 words
A computer system for storing a file comprising: a processor; a memory; a storage device; and software instructions stored in the memory for enabling the computer system under control of the processor, to: receive a request to store the file in the storage pool, obtain and compress a first portion of the file to obtain a first compressed data block; obtain and compress a second portion of the file to a second compressed data block; generate a first compression header for the first compressed data block; generate a second compression header for the compressed data block; combine the first compressed data block and the first compression header to obtain a first compressed data block package; store the first compressed data block package in a storage pool at a first location; combine the second compressed data block and the second compression header to obtain a second compressed data block package; store the second compressed data block package in the storage pool at a second location; calculate a first checksum for the first compressed data block; calculate a second checksum for the second compressed data block; and build a first indirect block comprising the first location, the first checksum, the second location, and the second checksum, a first set compression flag indicating the first location comprises the first compressed data block, and a second set compression flag indicating that the second location comprises the second compressed data block; store the first indirect block in the storage pool at a third location; build a second indirect block comprising the third location and a first non-set compression flag indicating that the third location includes an uncompressed first indirect block; and store the second indirect block in the storage pool at a fourth location, wherein the first location, second location, third location, and fourth location are separate physical locations in the storage pool, wherein the first indirect block and the second indirect block are used to obtain the first compressed data block and the second compressed data block during a read operation.
Claim 9
Dependent Claim
337 words
A computer system for storing a file comprising: a processor; a memory; a storage device; and software instructions stored in the memory for enabling the computer system under control of the processor, to: receive a request to store the file in the storage pool, obtain and compress a first portion of the file to obtain a first compressed data block; obtain and compress a second portion of the file to a second compressed data block; generate a first compression header for the first compressed data block; generate a second compression header for the compressed data block; combine the first compressed data block and the first compression header to obtain a first compressed data block package; store the first compressed data block package in a storage pool at a first location; combine the second compressed data block and the second compression header to obtain a second compressed data block package; store the second compressed data block package in the storage pool at a second location; calculate a first checksum for the first compressed data block; calculate a second checksum for the second compressed data block; and build a first indirect block comprising the first location, the first checksum, the second location, and the second checksum, a first set compression flag indicating the first location comprises the first compressed data block, and a second set compression flag indicating that the second location comprises the second compressed data block; store the first indirect block in the storage pool at a third location; build a second indirect block comprising the third location and a first non-set compression flag indicating that the third location includes an uncompressed first indirect block; and store the second indirect block in the storage pool at a fourth location, wherein the first location, second location, third location, and fourth location are separate physical locations in the storage pool, wherein the first indirect block and the second indirect block are used to obtain the first compressed data block and the second compressed data block during a read operation.
Claim 10
Dependent Claim
31 words
The computer system of claim 7 , further comprising instructions to: calculate a third checksum for the first indirect block, wherein the third checksum is stored in the second indirect block.
Claim 11
Dependent Claim
57 words
The computer system of claim 7 , wherein the first compression header comprises a compressed size of the first compressed data block, an uncompressed size of a first data block corresponding to the first compressed data block, and information about the compression algorithm used to compress the first data block corresponding to the first compressed data block.
Claim 12
Dependent Claim
26 words
The computer system of claim 7 , wherein a storage pool allocator includes functionality to compress first data block to obtain the first compressed data block.
Claim 13
Dependent Claim
17 words
The computer system of claim 7 , wherein the storage pool comprises at least one storage device.
Claim 14
Dependent Claim
21 words
The computer system of claim 7 , wherein storing the first compressed data block package comprises using a storage pool allocator.
References Cited (Backward Citations)
US4144522A
Cited
US5129085A
Cited
US5155847A
Cited
US5371885A
Cited
US5410667A
Cited
US5403639A
Cited
US6892211B2
Cited
US7174352B2
Cited
US5819292A
Cited
US5675802A
Cited
US20020004883A1
Cited
US6795966B1
Cited
US6209111B1
Cited
US6145069A
Cited
US20050235154A1
Cited
US6341341B1
Cited
US7032154B2
Cited
US6745284B1
Cited
US7231564B2
Cited
US20020055942A1
Cited
US6745305B2
Cited
US20020087788A1
Cited
US20030033477A1
Cited
US20020161972A1
Cited
US7162486B2
Cited
US7043677B1
Cited
US20060256965A1
Cited
US20030126107A1
Cited
US20030145167A1
Cited
US6829617B2
Cited
US20030177243A1
Cited
US7133964B2
Cited
US7200715B2
Cited
US20060168409A1
Cited
US6857001B2
Cited
US7007196B2
Cited
US20040225834A1
Cited
US20040098720A1
Cited
US20040107314A1
Cited
US20040123063A1
Cited
US20060218644A1
Cited
US20040234000A1
Cited
US20050010620A1
Cited
US20050097270A1
Cited
US20080133872A1
Cited
US7200603B1
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2012-02-24 | 2012-08-25 | 2013-02-24 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2016-02-24 | 2016-08-25 | 2017-02-24 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2020-02-24 | 2020-08-25 | 2021-02-24 | $7700.00 | Window Closed / Lapsed |