IP Library Patent Application 18750605
Patent Application
App. No. 18/750,605

Delayed Parity Write for Redundant Storage Across Namespaces in Data Storage Devices

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 None
App. No.
18/750,605
Abstract

Systems and methods for delayed parity write for redundant storage of data in redundant array of independent disk (RAID) arrays, such as across namespaces configured in a RAID set are described. The RAID set includes storage locations distributed across data storage devices and/or namespaces on those data storage devices for receiving host data. Host data is stored in RAID stripe sets of blocks distributed among the RAID set storage locations as the host data is received. Storage of corresponding parity blocks is delayed until a parity write trigger event. Responsive to determining the parity write trigger event, the parity blocks for the RAID stripes are stored to corresponding storage locations.

Claims (121)

1 . A system, comprising:

at least one controller configured to, alone or in combination:

determine a redundant array of independent disks (RAID) configuration comprising a RAID set of storage locations distributed among at least one data storage device, wherein each data storage device of the at least one data storage device comprises a non-volatile storage medium configured to store host data for at least one host system;

store, based on the RAID configuration, host data in at least one stripe set of blocks in the RAID set of storage locations;

delay, responsive to storing the host data in the at least one stripe set of blocks and until a parity write trigger event is determined, storing at least one parity block for each stripe set of blocks in the at least one stripe set of blocks;

determine that the parity write trigger event has occurred; and

store, responsive to the parity write trigger event, the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks.

2 . The system of claim 1 , wherein:

the set of data storage locations comprises data storage locations in a plurality of namespaces allocated in the at least one data storage device;

the at least one controller is further configured to, alone or in combination, determine a plurality of host connections to the plurality of namespaces in the at least one data storage device; and

each stripe set of blocks and corresponding at least one parity block for the at least one stripe set of blocks are distributed among the plurality of namespaces.

3 . The system of claim 2 , wherein:

each namespace of the plurality of namespaces has a first allocated capacity;

at least one namespace of the plurality of namespaces allocates a portion of the first allocated capacity to a floating namespace pool; and

the at least one controller is further configured to, alone or in combination, selectively allocate capacity from the floating namespace pool to at least one namespace of the plurality of namespaces for storing the at least one parity block.

4 . The system of claim 1 , wherein the at least one controller is further configured to, alone or in combination:

determine, based on at least one user configured parameter received from a user, at least one of the following:

a time delay value for determining the parity write trigger event;

a scheduled time value for determining the parity write trigger event;

a workload threshold value for determining the parity write trigger event;

a device risk threshold value for determining the parity write trigger event; and

a manual event parameter for determining the parity write trigger event; and

use the at least one user configured parameter to determine the parity write trigger event.

5 . The system of claim 1 , wherein:

the at least one stripe set of blocks comprises a first stripe set of blocks;

the at least one controller is further configured to, alone or in combination:

receive the host data for the first stripe set of blocks;

determine a first priority value associated with the host data for the first stripe set of blocks;

receive the host data for a second stripe set of blocks;

determine a second priority value associated with host data for the second stripe set of blocks;

generate, based on the second priority value indicating no delayed parity, a second set of parity blocks for the second stripe set of blocks;

store, without delay, the second set of parity blocks for the second stripe set of blocks; and

generate, based on the first priority value indicating delayed parity and responsive to the parity write trigger event, a first set of parity blocks for the first stripe set of blocks; and

storing the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks includes storing the first set of parity blocks.

6 . The system of claim 1 , wherein the at least one controller is further configured to, alone or in combination:

store, in a RAID stripe data structure, block location identifiers for each stripe set of blocks in the at least one stripe set of blocks;

identify, in the RAID stripe data structure, the at least one stripe set of blocks with a delayed parity identifier;

store, in the RAID stripe data structure and responsive to the parity write trigger event, parity block location identifiers for each of the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks; and

remove, responsive to storing the parity block location identifiers, corresponding delayed parity identifiers for each stripe set of blocks in the at least one stripe set of blocks.

7 . The system of claim 1 , wherein:

determining the parity write trigger event comprises a current time value meeting a time-based threshold value;

the time-based threshold value is selected from:

a time delay value; and

a scheduled time value; and

the at least one controller is further configured to, alone or in combination:

monitor the current time value; and

compare the current time value to the time-based threshold value for each stripe set of blocks to determine the parity write trigger event for that stripe set of blocks.

8 . The system of claim 1 , wherein:

determining the parity write trigger event comprises a current workload value meeting a workload threshold value; and

the at least one controller is further configured to, alone or in combination:

monitor the current workload value; and

compare the current workload value to the workload threshold value for the at least one stripe set of blocks.

9 . The system of claim 1 , wherein:

determining the parity write trigger event comprises a device risk value associated with the at least one data storage device hosting the RAID set of storage locations meeting a device risk threshold value; and

the at least one controller is further configured to, alone or in combination:

monitor the device risk value for the at least one data storage device; and

compare the device risk value to the device risk threshold value for the at least one stripe set of blocks.

10 . The system of claim 9 , further comprising:

a plurality of data storage devices in communication with the at least one controller, wherein:

the at least one data storage device comprises the plurality of data storage devices;

monitoring the device risk value comprises:

receiving at least one device parameter from each data storage device of the plurality of data storage devices; and

determining, based on the at least one device parameter, the device risk value for each data storage device of the plurality of data storage devices;

the parity write trigger event occurs if a number of device risk values for the plurality of data storage devices meet the device risk threshold value; and

the number of device risk values is based on a recoverable number of failures for the RAID configuration.

11 . A computer-implemented method, comprising:

determining a redundant array of independent disks (RAID) configuration comprising a RAID set of storage locations distributed among at least one data storage device, wherein each data storage device of the at least one data storage device comprises a non-volatile storage medium configured to store host data for at least one host system;

storing, based on the RAID configuration, host data in at least one stripe set of blocks in the RAID set of storage locations;

delaying, responsive to storing the host data in the at least one stripe set of blocks and until a parity write trigger event is determined, storing at least one parity block for each stripe set of blocks in the at least one stripe set of blocks;

determining that the parity write trigger event has occurred; and

storing, responsive to the parity write trigger event, the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks.

12 . The computer-implemented method of claim 11 , further comprising:

determining a plurality of host connections to a plurality of namespaces allocated in the at least one data storage device, wherein:

the set of data storage locations comprises data storage locations in the plurality of namespaces; and

each stripe set of blocks and corresponding at least one parity block for the at least one stripe set of blocks are distributed among the plurality of namespaces.

13 . The computer-implemented method of claim 12 , further comprising:

selectively allocating capacity from a floating namespace pool to at least one namespace of the plurality of namespaces for storing the at least one parity block, wherein:

each namespace of the plurality of namespaces has a first allocated capacity; and

at least one namespace of the plurality of namespaces allocates a portion of the first allocated capacity to the floating namespace pool.

14 . The computer-implemented method of claim 11 , further comprising:

determining, based on at least one user configured parameter received from a user, at least one of the following:

a time delay value for determining the parity write trigger event;

a scheduled time value for determining the parity write trigger event;

a workload threshold value for determining the parity write trigger event;

a device risk threshold value for determining the parity write trigger event; and

a manual event parameter for determining the parity write trigger event; and

using the at least one user configured parameter to determine the parity write trigger event.

15 . The computer-implemented method of claim 11 , further comprising:

receiving the host data for a first stripe set of blocks, wherein the at least one stripe set of blocks comprises the first stripe set of blocks;

determining a first priority value associated with the host data for the first stripe set of blocks;

receiving the host data for a second stripe set of blocks;

determining a second priority value associated with host data for the second stripe set of blocks;

generating, based on the second priority value indicating no delayed parity, a second set of parity blocks for the second stripe set of blocks;

storing, without delay, the second set of parity blocks for the second stripe set of blocks; and

generating, based on the first priority value indicating delayed parity and responsive to the parity write trigger event, a first set of parity blocks for the first stripe set of blocks, wherein storing the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks includes storing the first set of parity blocks.

16 . The computer-implemented method of claim 11 , further comprising:

storing, in a RAID stripe data structure, block location identifiers for each stripe set of blocks in the at least one stripe set of blocks;

identifying, in the RAID stripe data structure, the at least one stripe set of blocks with a delayed parity identifier;

storing, in the RAID stripe data structure and responsive to the parity write trigger event, parity block location identifiers for each of the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks; and

removing, responsive to storing the parity block location identifiers, corresponding delayed parity identifiers for each stripe set of blocks in the at least one stripe set of blocks.

17 . The computer-implemented method of claim 11 , further comprising:

monitoring a current time value; and

comparing the current time value to a time-based threshold value for each stripe set of blocks to determine the parity write trigger event for that stripe set of blocks, wherein:

determining the parity write trigger event comprises the current time value meeting the time-based threshold value; and

the time-based threshold value is selected from:

a time delay value; and

a scheduled time value.

18 . The computer-implemented method of claim 11 , further comprising:

monitoring a current workload value; and

comparing the current workload value to a workload threshold value for the at least one stripe set of blocks, wherein determining the parity write trigger event comprises the current workload value meeting the workload threshold value.

19 . The computer-implemented method of claim 11 , further comprising:

monitoring a device risk value for the at least one data storage device; and

comparing the device risk value to a device risk threshold value for the at least one stripe set of blocks, wherein determining the parity write trigger event comprises the device risk value associated with the at least one data storage device hosting the RAID set of storage locations meeting the device risk threshold value.

20 . A system comprising:

a processor;

a memory;

means for determining a redundant array of independent disks (RAID) configuration comprising a RAID set of storage locations distributed among at least one data storage device, wherein each data storage device of the at least one data storage device comprises a non-volatile storage medium configured to store host data for at least one host system;

means for storing, based on the RAID configuration, host data in at least one stripe set of blocks in the RAID set of storage locations;

means for delaying, responsive to storing the host data in the at least one stripe set of blocks and until a parity write trigger event is determined, storing at least one parity block for each stripe set of blocks in the at least one stripe set of blocks;

means for determining that the parity write trigger event has occurred; and

means for storing, responsive to the parity write trigger event, the at least one parity block for each stripe set of blocks in the at least one stripe set of blocks.

Assignments (2)
PATENT COLLATERAL AGREEMENT (AR) Recorded Aug 23, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0695 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2024
From: BABU, DINESH; SABESAN, SRIDHAR; GURURAJ, PAVAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 067805/0587 →