Method and apparatus for expanding a virtual storage device
First Claim
1. A method for expanding a virtual storage device, comprising:
- expanding the virtual storage device that includes N storage device units by adding M storage device units, wherein each of the N storage device units and the M storage device units have B strips available for data storage, wherein each of the B strips in the N storage device units are assigned a logical address according to an initial mapping function, wherein data in the M storage device units is not required to be initialized, wherein data stored in the B strips in the N storage device units have an original physical location corresponding to the initial mapping function, and wherein each of the B strips in the initial mapping function are arranged in the same order as the B strips in the M storage device units;
assigning a logical address to each of the B strips in the M storage device units according to a new storage device mapping function, wherein the logical addresses assigned to the B strips in the M storage device units are sequentially concatenated to the highest logical address in the initial mapping function;
identifying by logical address in the initial mapping function each strip in each of the (N+M)×
B strips available for data storage;
assigning a new logical address to each of the B strips in the combined N+M storage device units according to a final mapping function;
assigning a first status value to each strip that has a location in the virtual storage device that does not conform to the final mapping function, wherein all strips except the first N strips of the initial mapping function and the last strip of the new storage device mapping function have the first status value;
assigning a second status value to each strip that has a location in the virtual storage device that conforms to the final mapping function, wherein the first N strips of the initial mapping function and the last strip of the new storage device mapping function have the second status value, wherein data in strips having the second status value are not copied elsewhere while expanding the virtual storage device, wherein strips having the second status value always maintain the second status value while expanding the virtual storage device;
after assigning first and second status values, selecting a first strip associated with the first status value, wherein the first strip associated with the first status value is the first strip in the new storage device mapping function;
identifying the logical address of the selected first strip, wherein the logical address of the selected first strip is the address of the first strip in the new storage device mapping function;
determining a destination location for the selected first strip, wherein the destination location for the selected first strip is determined by applying the logical address of the selected first strip to the final mapping function;
writing data in a second strip occupying the destination location for the selected first strip to a first temporary storage buffer, wherein the data in the second strip is associated with a second logical address, wherein the first temporary storage buffer is separate from the virtual storage device; and
writing data stored in the original location of the selected first strip to the destination location for the selected first strip, wherein the destination location for the selected first strip conforms to the final mapping function.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention provides for the expansion of a virtual storage device. Expansion of the virtual storage device includes adding one or more additional storage device units to an existing virtual storage device. Blocks or strips included in an added storage device unit are assigned addresses, to allow the added storage capacity to be accessed immediately. In order to reestablish a pattern of data storage addresses from the original storage device units of the pre-expanded virtual storage device across all of the storage device units of the post-expanded virtual storage device, temporary storage is provided. In particular, as a strip of data is relocated to its proper post-expand location, the data occupying that location is placed in a temporary storage buffer. Data in the temporary storage buffer is then written to the proper post-expand location for that data, with displaced data being written to a second temporary storage buffer.
-
Citations
18 Claims
-
1. A method for expanding a virtual storage device, comprising:
-
expanding the virtual storage device that includes N storage device units by adding M storage device units, wherein each of the N storage device units and the M storage device units have B strips available for data storage, wherein each of the B strips in the N storage device units are assigned a logical address according to an initial mapping function, wherein data in the M storage device units is not required to be initialized, wherein data stored in the B strips in the N storage device units have an original physical location corresponding to the initial mapping function, and wherein each of the B strips in the initial mapping function are arranged in the same order as the B strips in the M storage device units; assigning a logical address to each of the B strips in the M storage device units according to a new storage device mapping function, wherein the logical addresses assigned to the B strips in the M storage device units are sequentially concatenated to the highest logical address in the initial mapping function; identifying by logical address in the initial mapping function each strip in each of the (N+M)×
B strips available for data storage;assigning a new logical address to each of the B strips in the combined N+M storage device units according to a final mapping function; assigning a first status value to each strip that has a location in the virtual storage device that does not conform to the final mapping function, wherein all strips except the first N strips of the initial mapping function and the last strip of the new storage device mapping function have the first status value; assigning a second status value to each strip that has a location in the virtual storage device that conforms to the final mapping function, wherein the first N strips of the initial mapping function and the last strip of the new storage device mapping function have the second status value, wherein data in strips having the second status value are not copied elsewhere while expanding the virtual storage device, wherein strips having the second status value always maintain the second status value while expanding the virtual storage device; after assigning first and second status values, selecting a first strip associated with the first status value, wherein the first strip associated with the first status value is the first strip in the new storage device mapping function; identifying the logical address of the selected first strip, wherein the logical address of the selected first strip is the address of the first strip in the new storage device mapping function; determining a destination location for the selected first strip, wherein the destination location for the selected first strip is determined by applying the logical address of the selected first strip to the final mapping function; writing data in a second strip occupying the destination location for the selected first strip to a first temporary storage buffer, wherein the data in the second strip is associated with a second logical address, wherein the first temporary storage buffer is separate from the virtual storage device; and writing data stored in the original location of the selected first strip to the destination location for the selected first strip, wherein the destination location for the selected first strip conforms to the final mapping function. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A data storage system, comprising a plurality of storage device units comprising N original storage device units and M new storage device units;
a controller interconnected to the plurality of storage device units, including; memory, including; executable instructions for performing control and mapping functions; a data moved array in which each available strip in a virtual storage device is identified, wherein the virtual storage device comprises the plurality of storage device units; and a final mapping function for determining a location of a stripe of data in the virtual storage device, and a redundancy information array in which each stripe in the data storage system is identified, and wherein for each stripe a redundancy information value is contained in the redundancy information coverage array indicating whether all of the strips associated this stripe are protected by redundancy information; wherein for each of the identified strips a status value is contained in the data moved array indicating whether a location of each of the identified strips conforms to the final mapping function, wherein the status values initially indicate the first N strips and the last strip in the data moved array have a location that conforms to the final mapping function, wherein data in the M new storage device units is not required to be initialized. - View Dependent Claims (12, 13, 14, 15, 16)
-
17. A method for restriping a virtual data storage device, comprising:
-
mapping N original storage device units according to an initial mapping function; mapping M new storage device units according to a new disk mapping function, wherein the new disk mapping function maps the M new storage device units sequentially concatenated to the N original storage device units, wherein data in the M new storage device units is not required to be initialized, wherein each of the strips in the M new storage device units are represented in the new disk mapping function in the same order as in the M new storage device units; associating a first status value or a second status value with each strip included in said N+M storage device units, wherein the first status value indicates that an associated strip needs to be relocated to conform to a final mapping function, wherein all strips except the first N strips of the initial mapping function and the last strip of the new storage device mapping function have the first status value;
wherein the second status value indicates that an associated strip does not need to be relocated to conform to the final mapping function, wherein the first N strips of the initial mapping function and the last strip of the new disk mapping function have the second status value, wherein data in strips having the second status value are not copied elsewhere while expanding the virtual storage device, wherein strips having the second status value always maintain the second status value while expanding the virtual storage device;identifying a first strip associated with the first status value, wherein the first strip associated with the first status value is the first strip in the new disk mapping function;
identifying a second strip occupying a destination location of the first strip according to the final mapping function;moving the second strip to a first temporary storage buffer, wherein the first temporary storage buffer is separate from the virtual storage device; and moving the first strip to the destination location of the first strip. - View Dependent Claims (18)
-
Specification