IP Library Granted Patent US 10,572,358
Granted Patent B1
US 10,572,358 · App. 14/741,287 · Granted Feb 25, 2020

Data management in RAID environment

Inventor: John Spongr (Rancho Santa Margarita, CA)
Assignee: Western Digital Technologies, Inc.
G06F11/2094G06F11/1451G06F11/2058G06F11/2069G06F2201/84
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,572,358
App. No.
14/741,287
Granted
Feb 25, 2020
Kind
B1
Abstract

A data storage system includes a plurality of Data Storage Devices (DSDs) having a total storage capacity available for storing user data among the plurality of DSDs. Each DSD of the plurality of DSDs has a DSD storage capacity that contributes to the total storage capacity of the plurality of DSDs. A strip size is assigned to each DSD of the plurality of DSDs based at least in part on a portion of the total storage capacity that is contributed by the DSD storage capacity of the respective DSD. Data is received for storage in a data stripe across the plurality of DSDs and the data stripe is stored across the plurality of DSDs such that each DSD of the plurality of DSDs stores a different portion of the data stripe having the strip size assigned to the DSD.

Claims (105)

1. A data storage system, comprising:

a plurality of Data Storage Devices (DSDs) collectively having a total storage capacity available for storing user data among the plurality of DSDs with each DSD of the plurality of DSDs having a DSD storage capacity that contributes to the total storage capacity of the plurality of DSDs; and

a controller configured to:

determine a weight for each DSD of the plurality of DSDs based on a percentage of the total storage capacity that is contributed by the DSD storage capacity of the respective DSD;

assign a strip size to each DSD of the plurality of DSDs based on the determined weight for the respective DSD, including:

assign a first strip size to a first DSD of the plurality of DSDs based at least in part on a first DSD storage capacity contributed by the first DSD to the total storage capacity; and

assign a second strip size to a second DSD of the plurality of DSDs based at least in part on a second DSD storage capacity contributed by the second DSD to the total storage capacity,

wherein:

the second DSD storage capacity contributed by the second DSD differs from the first DSD storage capacity contributed by the first DSD, and

the second strip size assigned to the second DSD differs from the first strip size assigned to the first DSD;

receive data for storage in a data stripe across the plurality of DSDs; and

store the data stripe across the plurality of DSDs such that each DSD of the plurality of DSDs stores a different portion of the data stripe,

wherein:

the first DSD is configured to store a first portion of the data stripe having the first strip size, and

the second DSD is configured to store a second portion of the data stripe having the second strip size.

2. The data storage system of claim 1 , wherein the controller is further configured to determine the plurality of DSDs from a larger set of DSDs by:

pairing each of one or more DSDs of the larger set with another DSD of the larger set that has the closest DSD storage capacity available for storing user data; and

for each pair of DSDs:

setting a first DSD of the pair as a DSD of the plurality of DSDs; and

setting the other DSD of the pair as a mirroring DSD for storing a copy of user data stored on the first DSD.

3. The data storage system of claim 1 , further comprising at least one mirroring DSD for storing a copy of data stored on a respective mirrored DSD of the plurality of DSDs, wherein the controller is further configured to determine the DSD storage capacity contribution for each mirrored DSD of the plurality of DSDs using a mirroring DSD storage capacity of the mirroring DSD responsive to the mirroring DSD storage capacity being less than the DSD storage capacity of the mirrored DSD.

4. The data storage system of claim 1 , wherein:

the plurality of DSDs stores a plurality of data stripes across the plurality of DSDs; and

the controller is further configured to, responsive to one of the plurality of DSDs being replaced by a replacement DSD having a DSD storage capacity less than the DSD storage capacity of the replaced DSD:

determine a difference between the DSD storage capacity of the replaced DSD and the DSD storage capacity of the replacement DSD, wherein the total storage capacity is reduced to a total replacement storage capacity for storing user data among the plurality of DSDs other than the replaced DSD and the replacement DSD;

identify incomplete data stripes of the plurality of data stripes that would be incomplete due to the smaller DSD storage capacity of the replacement DSD;

assign a replacement strip size for the incomplete data stripes to each DSD of the plurality of DSDs other than the replaced DSD and the replacement DSD, wherein the replacement strip size is based at least in part on a portion of the total replacement storage capacity that is contributed by the DSD storage capacity of the respective DSD; and

store the incomplete data stripes across the plurality of DSDs other than the replaced DSD and the replacement DSD such that for each incomplete data stripe, each DSD stores a different replacement portion of the incomplete data stripe having the replacement strip size assigned to the DSD.

5. The data storage system of claim 4 , wherein in identifying incomplete data stripes of the plurality of data stripes, the controller is further configured to determine the number of incomplete data stripes by dividing the difference between the DSD storage capacity of the replaced DSD and the DSD storage capacity of the replacement DSD by a data size for each of the plurality of data stripes.

6. The data storage system of claim 1 , wherein:

the plurality of DSDs stores a plurality of data stripes across the plurality of DSDs; and

the controller is further configured to, responsive to one of the plurality of DSDs being replaced by a replacement DSD having a DSD storage capacity greater than the DSD storage capacity of the replaced DSD:

assign a new strip size to each DSD of the plurality of DSDs including the replacement DSD based at least in part on a portion of a new total storage capacity for the plurality of DSDs that is contributed by the DSD storage capacity of the respective DSD;

receive data for storage in a new data stripe; and

store the new data stripe across the plurality of DSDs including the replacement DSD such that each DSD stores a different portion of the new data stripe having the new strip size assigned to the DSD.

7. The data storage system of claim 1 , wherein the controller is further configured to, responsive to one or more new DSDs being added to the plurality of DSDs:

assign a new strip size to each new DSD of the one or more new DSDs based at least in part on a portion of a new total storage capacity for the one or more new DSDs that is contributed by a DSD storage capacity of the respective new DSD;

receive data for storage in a new data stripe; and

store the new data stripe across the one or more new DSDs such that each new DSD stores a different portion of the new data stripe having the new strip size assigned to the new DSD.

8. The data storage system of claim 1 , wherein the plurality of DSDs includes at least one Solid-State Drive (SSD).

9. The data storage system of claim 1 , wherein the controller is further configured to assign a strip size to each DSD of the plurality of DSDs based at least in part on a DSD storage capacity contributed by the DSD to the total storage capacity.

10. A method of operating a data storage system including a plurality of Data Storage Devices (DSDs) collectively having a total storage capacity available for storing user data among the plurality of DSDs, with each DSD of the plurality of DSDs having a DSD storage capacity that contributes to the total storage capacity of the plurality of DSDs, the method comprising:

determining a weight for each DSD of the plurality of DSDs based on a percentage of the total storage capacity that is contributed by the DSD storage capacity of the respective DSD;

assigning a strip size to each DSD of the plurality of DSDs based on the determined weight for the respective DSD, including:

assigning a first strip size to a first DSD of the plurality of DSDs based at least in part on a first DSD storage capacity contributed by the first DSD to the total storage; and

assigning a second strip size to a second DSD of the plurality of DSDs based at least in part on a second DSD storage capacity contributed by the second DSD to the total storage capacity,

wherein:

the second DSD storage capacity contributed by the second DSD differs from the first DSD storage capacity contributed by the first DSD, and

the second strip size assigned to the second DSD differs from the first strip size assigned to the first DSD;

receiving data for storage in a data stripe across the plurality of DSDs; and

storing the data stripe across the plurality of DSDs such that each DSD of the plurality of DSDs stores a different portion of the data stripe,

wherein:

the first DSD stores a first portion of the data stripe having the first strip size, and

the second DSD stores a second portion of the data stripe having the second strip size.

11. The method of claim 10 , wherein the method further comprises determining the plurality of DSDs from a larger set of DSDs by:

pairing each of one or more DSDs of the larger set with another DSD of the larger set that has the closest DSD storage capacity available for storing user data; and

for each pair of DSDs:

setting a first DSD of the pair as a DSD of the plurality of DSDs; and

setting the other DSD of the pair as a mirroring DSD for storing a copy of user data stored on the first DSD.

12. The method of claim 10 , wherein:

the data storage system further includes at least one mirroring DSD for storing a copy of user data stored on a respective mirrored DSD of the plurality of DSDs; and

the method further comprises determining the DSD storage capacity contribution for each mirrored DSD of the plurality of DSDs using a mirroring DSD storage capacity of the mirroring DSD responsive to the mirroring DSD storage capacity being less than the DSD storage capacity of the mirrored DSD.

13. The method of claim 10 , wherein:

the plurality of DSDs stores a plurality of data stripes across the plurality of DSDs; and

the method further comprises, responsive to one of the plurality of DSDs being replaced by a replacement DSD having a DSD storage capacity less than the DSD storage capacity of the replaced DSD:

determining a difference between the DSD storage capacity of the replaced DSD and the DSD storage capacity of the replacement DSD, wherein the total storage capacity is reduced to a total replacement storage capacity for storing user data among the plurality of DSDs other than the replaced DSD and the replacement DSD;

identifying incomplete data stripes of the plurality of data stripes that would be incomplete due to the smaller DSD storage capacity of the replacement DSD;

assigning a replacement strip size for the incomplete data stripes to each DSD of the plurality of DSDs other than the replaced DSD and the replacement DSD, wherein the replacement strip size is based at least in part on a portion of the total replacement storage capacity that is contributed by the DSD storage capacity of the respective DSD; and

storing the incomplete data stripes across the plurality of DSDs other than the replaced DSD and the replacement DSD such that for each incomplete data stripe, each DSD stores a different replacement portion of the incomplete data stripe having the replacement strip size assigned to the DSD.

14. The method of claim 13 , wherein in identifying incomplete data stripes of the plurality of data stripes, the method further comprises determining the number of incomplete data stripes by dividing the difference between the DSD storage capacity of the replaced DSD and the DSD storage capacity of the replacement DSD by a data size for each of the plurality of data stripes.

15. The method of claim 10 , wherein:

the plurality of DSDs stores a plurality of data stripes across the plurality of DSDs and

the method further comprises, responsive to one of the plurality of DSDs being replaced by a replacement DSD having a DSD storage capacity greater than the DSD storage capacity of the replaced DSD:

assigning a new strip size to each DSD of the plurality of DSDs including the replacement DSD based at least in part on a portion of a new total storage capacity for the plurality of DSDs that is contributed by the DSD storage capacity of the respective DSD;

receiving data for storage in a new data stripe; and

storing the new data stripe across the plurality of DSDs including the replacement DSD such that each DSD stores a different portion of the new data stripe having the new strip size assigned to the DSD.

16. The method of claim 10 , wherein the method further comprises, responsive to one or more new DSDs being added to the plurality of DSDs:

assigning a new strip size to each new DSD of the one or more new DSDs based at least in part on a portion of a new total storage capacity for the one or more new DSDs that is contributed by a DSD storage capacity of the respective new DSD;

receiving data for storage in a new data stripe; and

storing the new data stripe across the one or more new DSDs such that each new DSD stores a different portion of the new data stripe having the new strip size assigned to the new DSD.

17. The method of claim 10 , wherein the plurality of DSDs includes at least one Solid-State Drive (SSD).

18. The method of claim 10 , further comprising assigning a strip size to each DSD of the plurality of DSDs based at least in part on a DSD storage capacity contributed by the DSD to the total storage capacity.

19. A controller for a data storage system including a plurality of Data Storage Devices (DSDs) having a total storage capacity available for storing user data among the plurality of DSDs with each DSD of the plurality of DSDs having a DSD storage capacity that contributes to the total storage capacity of the plurality of DSDs, the controller comprising:

an interface for communicating with the plurality of DSDs; and

a processor configured to:

determine a weight for each DSD of the plurality of DSDs based on a percentage of the total storage capacity that is contributed by the DSD storage capacity of the respective DSD;

assign a strip size to each DSD of the plurality of DSDs based on the determined weight for the respective DSD, including:

assign a first strip size to a first DSD of the plurality of DSDs based at least in part on a first DSD storage capacity contributed by the first DSD to the total storage capacity; and

assign a second strip size to a second DSD of the plurality of DSDs based at least in part on a second DSD storage capacity contributed by the second DSD to the total storage capacity;

wherein:

the second DSD storage capacity contributed by the second DSD differs from the first DSD storage capacity contributed by the first DSD, and

the second strip size assigned to the second DSD differs from the first strip size assigned to the first DSD;

receive data for storage in a data stripe across the plurality of DSDs; and

store the data stripe across the plurality of DSDs such that each DSD of the plurality of DSDs stores a different portion of the data stripe, wherein the first DSD stores a first portion of the data stripe having the first strip size and the second DSD stores a second portion of the data stripe having the second strip size.

20. The controller of claim 19 , wherein the processor is further configured to assign a strip size to each DSD of the plurality of DSDs based at least in part on a DSD storage capacity contributed by the DSD to the total storage capacity.

21. An apparatus for operating a data storage system including a plurality of Data Storage Devices (DSDs) having a total storage capacity available for storing user data among the plurality of DSDs with each DSD of the plurality of DSDs having a DSD storage capacity that contributes to the total storage capacity of the plurality of DSDs, the apparatus comprising:

means for determining a weight for each DSD of the plurality of DSDs based on a percentage of the total storage capacity that is contributed by the DSD storage capacity of the respective DSD;

means for assigning a strip size to each DSD of the plurality of DSDs based on the determined weight for the respective DSD, including:

means for assigning a first strip size to a first DSD of the plurality of DSDs based at least in part on a first DSD storage capacity contributed by the first DSD to the total storage capacity; and

means for assigning a second strip size to a second DSD of the plurality of DSDs based at least in part on a second DSD storage capacity contributed by the second DSD to the total storage capacity;

wherein:

the second DSD storage capacity contributed by the second DSD differs from the first DSD storage capacity contributed by the first DSD, and

the second strip size assigned to the second DSD differs from the first strip size assigned to the first DSD;

means for receiving data for storage in a data stripe across the plurality of DSDs; and

means for storing the data stripe across the plurality of DSDs such that each DSD of the plurality of DSDs stores a different portion of the data stripe, wherein the first DSD stores a first portion of the data stripe having the first strip size and the second DSD stores a second portion of the data stripe having the second strip size.

Assignments (8)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2015
From: SPONGR, JOHN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 036804/0774 →