IP Library Granted Patent US 7,953,929
Granted Patent B1
US 7,953,929 · App. 12/721,900 · Granted May 31, 2011

Expanding the storage capacity of a virtualized data storage system

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,953,929
App. No.
12/721,900
Granted
May 31, 2011
Kind
B1
Abstract

A system, method, apparatus, and computer-readable medium are provided for expanding the data storage capacity of a virtualized storage system, such as a storage cluster. According to one method, maps are generated and stored that define a stripe pattern for storing data on the storage nodes of a storage cluster. The stripe pattern for each map is defined such that when a storage node is added to a cluster and the data is re-striped according to the new map, only the data that will subsequently reside in the new storage node is moved to the new storage cluster during re-striping. The stripe pattern may be further defined so that during re-striping no movement of data occurs between two storage nodes that existed in the cluster prior to the addition of the new storage node. The stripe pattern may be further defined such that during re-striping an equal amount of data is moved from each of the storage nodes that existed in the cluster prior to the addition of the new storage node to the new storage node.

Claims (55)

1. A method for expanding a data storage capacity of a storage cluster having two or more storage nodes, the method comprising:

storing two or more maps, each map defining a stripe pattern for storing data on the storage nodes;

striping data across the storage nodes of the storage cluster according to a first map;

in response to an addition of a new storage node to the storage cluster, re-striping the data across the storage nodes according to a second map,

wherein data on the storage nodes is divided into storage zones, and

wherein re-striping the data across the storage nodes according to a second map comprises

identifying one or more storage zones to be moved to the new storage node based on the first and second maps, and

individually moving each of the identified storage zones to the new storage node; and

locking each storage zone individually while each storage zone is moved to the new storage node.

2. The method of claim 1 , wherein the stripe pattern for each map is defined such that when the storage cluster is striped according to the first map and the new storage node is added to the cluster, data is re-striped between the storage nodes according to the second map such that only the data that will subsequently reside in the new storage node is moved to the new storage node during re-striping.

3. The method of claim 2 , wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, no movement of data occurs between two storage nodes that existed in the storage cluster prior to the addition of the new storage node.

4. The method of claim 3 , wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, an equal amount of data is moved to the new storage node from each of the storage nodes that existed in the storage cluster prior to the addition of the new storage node.

5. The method of claim 1 , wherein each of the identified storage zones are moved to the new storage node in physical order.

6. The method of claim 1 , wherein each of the identified storage zones are moved to the new storage node in the order that the identified storage zones were most recently accessed.

7. The method of claim 1 , further comprising making each storage zone available for access on the new storage node immediately after each storage zone has been moved to the new storage node.

8. The method of claim 7 , further comprising freeing and making available for data storage the space previously occupied by a storage zone immediately after a storage zone has been moved to the new storage node.

9. The method of claim 7 , further comprising:

receiving a data write including data intended for one of the storage nodes that existed in the storage cluster prior to the addition of the new storage node;

storing the data for the data write on the new storage node; and

subsequently moving the stored data from the new storage node to its intended location on the storage node that existed in the storage cluster prior to the addition of the new storage node.

10. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to:

store two or more maps, each map defining a stripe pattern for storing data on a plurality of storage nodes;

stripe data across the storage nodes of a cluster according to a first map;

in response to an addition of a new storage node to the cluster, re-stripe the data across the storage nodes according to a second map,

wherein data on the storage nodes is divided into storage zones, and

wherein to re-stripe the data across the storage nodes according to a second map, the computer storage medium having further computer-executable instructions stored thereon which, when executed by the computer, cause the computer to

identify one or more storage zones to be moved to the new storage node based on the first and second maps, and

individually move each of the identified storage zones to the new storage node; and

lock each storage zone individually while each storage zone is moved to the new storage node.

11. The computer storage medium of claim 10 , wherein the stripe pattern for each map is defined such that when the storage cluster is striped according to the first map and the new storage node is added to the cluster, data is re-striped between the storage nodes according to the second map such that only the data that will subsequently reside in the new storage node is moved to the new storage node during re-striping.

12. The computer storage medium of claim 11 , wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, no movement of data occurs between two storage nodes that existed in the storage cluster prior to the addition of the new storage node.

13. The computer storage medium of claim 12 , wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, an equal amount of data is moved to the new storage node from each of the storage nodes that existed in the storage cluster prior to the addition of the new storage node.

14. The computer storage medium of claim 10 , wherein each of the identified storage zones are moved to the new storage node in physical order.

15. The computer storage medium of claim 10 , wherein each of the identified storage zones are moved to the new storage node in the order that the identified storage zones were most recently accessed.

16. The computer storage medium of claim 10 , having further computer-executable instructions stored thereon which, when executed by the computer, cause the computer to make each storage zone available for access on the new storage node immediately after each storage zone has been moved to the new storage node.

17. The computer storage medium of claim 16 , having further computer-executable instructions stored thereon which, when executed by the computer, cause the computer to free and make available for data storage the space previously occupied by a storage zone immediately after a storage zone has been moved to the new storage node.

18. The computer storage medium of claim 16 , having further computer-executable instructions stored thereon which, when executed by the computer, cause the computer to:

receive a data write including data intended for one of the storage nodes that existed in the storage cluster prior to the addition of the new storage node;

store the data for the data write on the new storage node; and

subsequently move the stored data from the new storage node to its intended location on the storage node that existed in the storage cluster prior to the addition of the new storage node.

19. A computer system, comprising:

a processor;

a memory communicatively coupled to the processor; and

a kernel module (i) which executes in the processor from the memory and (ii) which, when executed by the processor, causes the computer system to expand a data storage capacity of a storage cluster having two or more storage nodes by

storing two or more maps, each map defining a stripe pattern for storing data on the storage nodes;

striping data across the storage nodes of a cluster according to a first map;

in response to an addition of a new storage node to the cluster, re-striping the data across the storage nodes according to a second map,

wherein data on the storage nodes is divided into storage zones, and

wherein re-striping the data across the storage nodes according to a second map comprises

identifying one or more storage zones to be moved to the new storage node based on the first and second maps, and

individually moving each of the identified storage zones to the new storage node; and

locking each storage zone individually while each storage zone is moved to the new storage node.

20. The computer system of claim 19 , wherein the stripe pattern for each map is defined such that when the storage cluster is striped according to the first map and the new storage node is added to the cluster, data is re-striped between the storage nodes according to the second map such that only the data that will subsequently reside in the new storage node is moved to the new storage node during re-striping;

wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, no movement of data occurs between two storage nodes that existed in the storage cluster prior to the addition of the new storage node; and

wherein the stripe pattern for each map is further defined such that when the new storage node is added to the cluster and the cluster is re-striped according to the second map, an equal amount of data is moved to the new storage node from each of the storage nodes that existed in the storage cluster prior to the addition of the new storage node.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC,
To: AMZETTA TECHNOLOGIES, LLC,
Reel/Frame 053007/0151 →
CHANGE OF NAME Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 053007/0233 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2010
From: CHATTERJEE, PARESH; BALAKRISHNAN, NARAYANAN; NARAYANAN, AJIT; MUTHIRISAVENUGOPAL, VIJAYARANKAN
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 024067/0213 →