IP Library Granted Patent US 10,437,691
Granted Patent B1
US 10,437,691 · App. 15/472,271 · Granted Oct 8, 2019

Systems and methods for caching in an erasure-coded system

Inventors: Deodatta Barhate (Pune, IN); Sushrut Gajbhiye (Pune, IN); Aniruddha Gokhale (Pune, IN)
Assignee: Veritas Technologies LLC
G06F11/2094G06F3/061G06F3/0619G06F3/0644G06F3/0683G06F11/1076H03M13/154H03M13/1515H03M13/6502G06F2201/81G06F2201/85
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 10,437,691
App. No.
15/472,271
Granted
Oct 8, 2019
Kind
B1
Abstract

The disclosed computer-implemented method for caching in an erasure-coded system may include partitioning data into data chunks and storing the data chunks across at least two data storage devices. The method may also include encoding the data chunks into at least one parity chunk and storing the at least one parity chunk on at least one parity storage device. The method may further include caching (parity and/or data functions) to at least one storage device, when a threshold value is reached. The method may include detecting a storage failure on one of the data storage devices and subsequent thereto, prioritizing the caching of certain functions over those of others. Various other methods, systems, and computer-readable media are also disclosed.

Claims (55)

1. A computer-implemented method for caching in an erasure-coded system, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

partitioning data into a plurality of data chunks and storing the plurality of partitioned data chunks across at least two data storage devices;

encoding the plurality of partitioned data chunks into at least one parity chunk and storing the at least one parity chunk on at least one parity storage device;

in a normal mode:

for each of the at least two data storage devices, caching data reads to the data storage device when a number of reads to the data storage device reaches a data read threshold; and

for the parity storage device, caching local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritizing caching parity writes that include reads and writes over parity writes that do not include reads; and

in a degraded mode, initiated in response to detecting a storage failure on one of the at least two data storage devices:

for the at least two data storage devices, prioritizing the caching of the data reads to the data storage device that failed over data storage devices that did not fail; and

for the parity storage device, continuing to cache local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritize caching parity writes that include reads and writes over parity writes that do not include reads.

2. The computer-implemented method according to claim 1 , further comprising:

identifying a plurality of local parity writes to the parity storage device;

determining that a number of the local parity writes reaches the parity threshold value; and

in response to determining that the number of the local parity writes reaches the parity threshold value, caching the local parity writes to the parity storage device.

3. The computer-implemented method according to claim 2 , further comprising:

prioritizing the caching of a parity write corresponding to a partial stripe write to the parity storage device over the caching of a parity write that does not involve a parity read.

4. The computer-implemented method according to claim 1 , wherein the at least two data storage devices comprise more than two data storage devices.

5. The computer-implemented method according to claim 4 , further comprising caching the data reads to two of the at least two data storage devices.

6. The computer-implemented method according to claim 1 , further comprising encoding the plurality of partitioned data chunks into a plurality of parity chunks and storing the plurality of parity chunks on a plurality of parity storage devices.

7. The computer-implemented method according to claim 1 , wherein at least one of the at least two data storage devices and the at least one parity storage device comprise a same storage device.

8. A system for caching in an erasure-coded system, which includes at least a cache and a plurality of storage devices, the system comprising:

a partitioning module, stored in memory, that partitions data into a plurality of data chunks and stores the plurality of partitioned data chunks across at least two data storage devices;

an encoding module, stored in memory, that encodes the plurality of partitioned data chunks into at least one parity chunk and stores the at least one parity chunk on at least one parity storage device;

a caching module, stored in memory, that:

in a normal mode:

for each of the at least two data storage devices, caches data reads to the data storage device when a number of reads to the data storage device reaches a data read threshold; and

for the parity storage device, caches local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritizes caching parity writes that include reads and writes over parity writes that do not include reads; and

in a degraded mode, initiated in response to detecting a storage failure on one of the at least two data storage devices:

for the at least two data storage devices, prioritizes the caching of the data reads to the data storage device that failed over data storage devices that did not fail; and

for the parity storage device, continues to cache local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritize caching parity writes that include reads and writes over parity writes that do not include reads.

9. The system according to claim 8 , wherein the caching module is further configured to:

identify a plurality of local parity writes to the parity storage device;

determine that a number of the local parity writes reaches the parity threshold value; and

in response to determining that the number of the local parity writes reaches the parity threshold value, cache the local parity writes to the parity storage device.

10. The system according to claim 9 , wherein the caching module prioritizes caching of a parity write corresponding to a partial stripe write to the at least one parity storage device over a parity write which does not involve a parity read.

11. The system according to claim 10 , wherein the data caching module caches a plurality of data reads to two of the at least two data storage devices.

12. The system according to claim 8 , wherein the partitioning module stores the plurality of partitioned data chunks on more than two data storage devices.

13. The system according to claim 8 , wherein the encoding module encodes the plurality of partitioned data chunks into a plurality of parity chunks and stores the plurality of parity chunks on a plurality of parity storage devices.

14. The system according to claim 8 , wherein the partitioning module and the encoding module respectively store the plurality of partitioned data chunks and the at least one parity chunk on a common storage device.

15. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

partition data into a plurality of data chunks and store the plurality of partitioned data chunks across at least two data storage devices;

encode the plurality of partitioned data chunks into at least one parity chunk and store the at least one parity chunk on at least one parity storage device;

in a normal mode:

for each of the at least two data storage devices, cache data reads to the data storage device when a number of reads to the data storage device reaches a data read threshold; and

for the at least one parity storage device, cache local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritize caching parity writes that include reads and writes over parity writes that do not include reads; and

in a degraded mode, initiated in response to detecting a storage failure on one of the at least two data storage devices:

for the at least two data storage devices, prioritize the caching of the data reads to the data storage device that failed over data storage devices that did not fail; and

for the at least one parity storage device, continue to cache local parity writes to the parity storage device when a number of local parity writes reaches a parity threshold value and prioritize caching parity writes that include reads and writes over parity writes that do not include reads.

16. The non-transitory computer-readable medium according to claim 15 , wherein the instructions further cause the computing device to:

identify a plurality of local parity writes to the parity storage device;

determine that a number of the local parity writes reaches the parity threshold value; and

in response to determining that the number of the local parity writes reaches the parity threshold value, cache the local parity writes to the parity storage device.

17. The non-transitory computer-readable medium according to claim 16 , wherein the one or more computer-executable instructions cause the computing device to cache a plurality of data reads on two of the at least two data storage devices.

18. The non-transitory computer-readable medium according to claim 15 , wherein the instructions further cause the computing device to prioritize caching of a parity write corresponding to a partial stripe write to the at least one parity storage device over a parity write which does not involve a parity read.

19. The non-transitory computer-readable medium according to claim 15 , wherein the one or more computer-executable instructions cause the computing device to encode the plurality of partitioned data chunks into a plurality of parity chunks and store the plurality of parity chunks on a plurality of parity storage devices.

20. The non-transitory computer-readable medium according to claim 15 , wherein the one or more computer-executable instructions cause the computing device to store the plurality of partitioned data chunks and the at least one parity chunk on a common storage device.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 075377/0130 →
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0931 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Jul 10, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 043141/0403 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2017
From: BARHATE, DEODATTA; GAJBHIYE, SUSHRUT; GOKHALE, ANIRUDDHA
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 041772/0353 →
Cited By (1)
US 12,640,839