IP Library Granted Patent US 7,512,862
Granted Patent B1
US 7,512,862 · App. 11/106,170 · Granted Mar 31, 2009

Compression of data for protection

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 7,512,862
App. No.
11/106,170
Granted
Mar 31, 2009
Kind
B1
Abstract

A storage system, such as a file server, receives a request to perform a write operation that affects a data block. In response, the storage system determines if the data block may be compressed to fit inside a redundancy block for protection. If the data block may be sufficiently compressed, the data block is written to the storage device and the compressed version of the data block is written to the protection block. If the data block may not be sufficiently compressed, the data block is written to the storage device and another data protection scheme, e.g. parity, is used to protect the data. A map, checksum and/or other tracking technique is used to associate stripes of data with the protection scheme used to protect data in the stripe.

Claims (33)

1. A computer-implemented method comprising:

writing a plurality of data blocks in a stripe, wherein the stripe spans a plurality of physical storage devices;

for each data block of the plurality of data blocks, writing a compressed version of the data block to a protection block, wherein the protection block is located on a different physical storage device than a storage device storing the data block; and

recovering the data block using the compressed version of the data in the protection block.

2. The computer-implemented method of claim 1 , wherein writing the compressed version is in response to a determination that the data block can be compressed to fit within the protection block.

3. The computer-implemented method of claim 1 , further comprising reducing the number of reads of another data block in the stripe associated with writing the data block.

4. The computer-implemented method of claim 1 , wherein the data block is recovered using the compressed version of the data in the protection block in response to failure of the data block and another block in the stripe.

5. The computer-implemented method of claim 1 , wherein writing the compressed version to the protection block is in response to determining that a size of the compressed version is less than or equal to a size of the protection block and the method further comprises:

writing parity data to the protection block when the size of the compressed version is greater than the size of the protection block;

associating the stripe with a first type of protection scheme when the compressed version is written to the protection block; and

associating the stripe with a second type of protection scheme when the parity data is written to the protection block.

6. The computer-implemented method of claim 5 , wherein the second type of protection scheme is a parity protection scheme in accordance with at least one of: RAID-4, RAID-5, RAID-6 and RAID Double Parity (RAID-DP).

7. The computer-implemented method of claim 5 , wherein associating the stripe with the first type of protection scheme comprises writing to a map or a checksum area in the stripe.

8. The computer-implemented method of claim 5 , further comprising:

receiving a request to write a second data block in the stripe;

determining a size of a compressed version of the second data block; and

when the size of the compressed version of the second data block is greater than the size of the protection block, writing parity data to the protection block and re-associating the stripe with the second type of protection scheme when the stripe was previously associated with the first protection scheme.

9. A storage server, comprising:

a client interface through which to communicate with one or more clients;

a storage interface through which to communicate with an array of storage devices;

a processor to execute file system operations for data stored in the array of storage devices; and

a memory storing instructions which, when executed by the processor, cause the storage server to perform a set of operations, including:

writing a plurality of data blocks in a stripe across an array of storage devices;

when each data block in the plurality of data blocks is compressible according to a predetermined compressibility criterion, writing a compressed version of each data block to a protection block on one of the storage devices which does not contain the plurality of data blocks; and

when one data block in the plurality of data blocks is not compressible according to the predetermined compressibility criterion, writing a parity of the stripe to the protection block.

10. The storage server of claim 9 , further comprising updating a map containing correlations between data stripes and types of protection schemes.

11. The storage server of claim 9 , further comprising writing a bit to a checksum area of the stripe to indicate a type of protection scheme to be associated with the stripe.

12. The storage server of claim 9 , wherein the protection block is duplicated on another storage device in the array of storage devices which does not contain the plurality of data blocks.

13. The storage server of claim 9 , wherein the compressed versions of the plurality of data blocks are distributed across a plurality of storage devices.

14. The storage server of claim 9 , further comprising:

writing a second plurality of data blocks in a second stripe across the array of storage devices;

when each data block in the second plurality of data blocks is compressible according to a predetermined compressibility criterion, writing a compressed version of each data block in the second plurality to a second protection block in one of the storage devices which does not contain the first protection block or the second plurality of data blocks; and

when one data block in the second plurality of data blocks is not compressible according to the predetermined compressibility criterion, writing a parity of the second stripe to the second protection block.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Apr 11, 2025
From: NETWORK APPLIANCE, INC.; NETAPP NC CORPORATION
To: NETAPP, INC.
Reel/Frame 071490/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2005
From: TAYLOR, JAMES A.
To: NETWORK APPLIANCE, INC.
Reel/Frame 016478/0588 →