IP Library Granted Patent US 10,013,359
Granted Patent B2
US 10,013,359 · App. 14/974,429 · Granted Jul 3, 2018

Redundant disk array storage system and method using heterogeneous disks and a lookup table

Inventors: András Krisztián Fekete (Fremont, NH); Elizabeth Varki (Lee, NH)
Assignee: University of New Hampshire
G06F12/1009G06F3/064G06F3/0607G06F3/0689G06F2212/1044
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,013,359
App. No.
14/974,429
Granted
Jul 3, 2018
Kind
B2
Abstract

A redundant disk array method includes allocating identically sized logical blocks of storage units together to form a stripe on each of several data storage devices, at least two of the logical blocks in the stripe being located on different data storage devices, generating a lookup table representing a mapping between a logical location of each logical block in the stripe and a physical location of the respective logical block on the corresponding data storage device, and writing data to the physical locations of each logical block in the stripe, the physical locations being obtained from the lookup table. In some cases, at least two of the data storage devices are heterogeneous, and at least two of the data storage devices have a different total number of logical blocks.

Claims (58)

1. A computer-implemented method comprising:

allocating, by a processor, a plurality of identically sized logical blocks of storage units together to form a stripe across a plurality of data storage devices, at least two of the logical blocks in the stripe being located on different data storage devices;

generating, by the processor, a lookup table representing a mapping between a logical location of each logical block in the stripe and a physical location of the respective logical block on the corresponding data storage device; and

writing, by the processor, data to the physical locations of the logical blocks in the stripe, the physical locations of the logical blocks being obtained from the lookup table,

wherein a first one of the data storage devices has a greatest number of logical blocks that are not allocated to any stripe among all of the data storage devices;

wherein a second one of the data storage devices has a fewer number of logical blocks that are not allocated to any stripe among all of the data storage devices than the number of logical blocks that are not allocated to any stripe on the first data storage device; and

wherein the method further comprises allocating, by the processor to the same stripe, unallocated logical blocks on each of the first and second ones of the data storage devices.

2. The method of claim 1 , wherein at least two of the data storage devices are heterogeneous and have a different total number of logical blocks.

3. The method of claim 1 , wherein at least two of the data storage devices are homogeneous and have the same total number of logical blocks.

4. The method of claim 3 , wherein at least one of the data storage devices has a different total number of logical blocks than another one of the data storage devices.

5. The method of claim 1 , further comprising allocating, by the processor to the same stripe, at least two of the logical blocks at different logical locations on different ones of the data storage devices.

6. The method of claim 1 , further comprising allocating, by the processor to the same stripe, at least two of the logical blocks at the same logical location on different ones of the data storage devices.

7. The method of claim 1 , further comprising:

allocating, by the processor, a first logical block on a first data storage device to an existing stripe;

transferring, by the processor, data stored in a second logical block of the existing stripe on a second data storage device to the first logical block; and

allocating, by the processor, the second logical block to a new stripe.

8. The method of claim 1 , further comprising:

deallocating, by the processor, a first logical block on a first data storage device from a first stripe;

allocating, by the processor, the first logical block to a second stripe; and

transferring, by the processor, data stored in a second logical block of the second stripe on a second data storage device to the first logical block.

9. A system comprising:

a storage; and

a computer processor operatively coupled to the storage, the computer processor configured to execute instructions stored in the storage that when executed cause the computer processor to carry out a process comprising:

allocating a plurality of identically sized logical blocks of storage units together to form a stripe across plurality of data storage devices, at least two of the logical blocks in the stripe being located on different data storage devices;

generating a lookup table representing a mapping between a logical location of each logical block in the stripe and a physical location of the respective logical block on the corresponding data storage device; and

writing data to the physical locations of the logical blocks in the stripe, the physical locations of the logical blocks being obtained from the lookup table,

wherein a first one of the data storage devices has a greatest number of logical blocks that are not allocated to any stripe among all of the data storage devices;

wherein a second one of the data storage devices has a fewer number of logical blocks that are not allocated to any stripe among all of the data storage devices than the number of logical blocks that are not allocated to any stripe on the first data storage device; and

wherein at least two logical blocks that are allocated to the same stripe are allocated from unallocated logical blocks on each of the first and second ones of the data storage devices.

10. The system of claim 9 , wherein at least two of the data storage devices are heterogeneous and have a different total number of logical blocks.

11. The system of claim 9 , wherein at least two of the data storage devices are homogeneous and have the same total number of logical blocks.

12. The system of claim 11 , wherein at least one of the data storage devices has a different total number of logical blocks than another one of the data storage devices.

13. The system of claim 9 , wherein at least two of the logical blocks that are allocated to the same stripe are at different logical locations on different ones of the data storage devices.

14. The system of claim 9 , wherein at least two of the logical blocks that are allocated to the same stripe are at the same logical location on different ones of the data storage devices.

15. The system of claim 9 , wherein the process includes:

allocating a first logical block on a first data storage device to an existing stripe;

transferring data stored in a second logical block of the existing stripe on a second data storage device to the first logical block; and

allocating the second logical block to a new stripe.

16. The system of claim 9 , wherein the process includes:

deallocating a first logical block on a first data storage device from a first stripe;

allocating the first logical block to a second stripe; and

transferring data stored in a second logical block of the second stripe on a second data storage device to the first logical block.

17. A non-transitory computer readable storage medium having instructions encoded thereon that when executed by one or more processors cause a process to be carried out, the process comprising:

allocating a plurality of identically sized logical blocks of storage units together to form a stripe across a plurality of data storage devices, at least two of the data storage devices having a different total number of logical blocks, at least two of the logical blocks in the stripe being located on different data storage devices;

generating a lookup table representing a mapping between a logical location of each logical block in the stripe and a physical location of the respective logical block on the corresponding data storage device; and

writing data to the physical locations of the logical blocks in the stripe, the physical locations of the logical blocks being obtained from the lookup table,

wherein a first one of the data storage devices has a greatest number of logical blocks that are not allocated to any stripe among all of the data storage devices;

wherein a second one of the data storage devices has a fewer number of logical blocks that are not allocated to any stripe among all of the data storage devices than the number of logical blocks that are not allocated to any stripe on the first data storage device; and

wherein at least two logical blocks that are allocated to the same stripe are allocated from unallocated logical blocks on each of the first and second ones of the data storage devices.

18. The non-transitory computer readable storage medium of claim 17 , wherein at least two of the logical blocks that are allocated to the same stripe are at different logical locations on different ones of the data storage devices.

19. The non-transitory computer readable storage medium of claim 17 , wherein the process includes:

allocating a first logical block on a first data storage device to an existing stripe;

transferring data stored in a second logical block of the existing stripe on a second data storage device to the first logical block; and

allocating the second logical block to a new stripe.

20. The non-transitory computer readable storage medium of claim 17 , wherein the process includes:

deallocating a first logical block on a first data storage device from a first stripe;

allocating the first logical block to a second stripe; and

transferring data stored in a second logical block of the second stripe on a second data storage device to the first logical block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2015
From: FEKETE, ANDRAS KRISZTIAN; VARKI, ELIZABETH
To: UNIVERSITY OF NEW HAMPSHIRE
Reel/Frame 037336/0284 →
Continuity (2)
Provisional Application 62096586 · Dec 24, 2014
Related Publication 20160188487A1 · Jun 30, 2016
Cited By (1)
US 12,373,340