High reliability, high performance disk array storage system
First Claim
1. A general purpose computer including at least one memory and at least one computer usable medium having computer usable code means for storing data on at least one data storage device having at least one old data set stored thereon, the computer usable code means including:
- computer readable code means for receiving an update of at least a portion of the old data set;
computer readable code means for modifying, in memory, the old data set using the update, to render a modification;
computer readable code means for writing at least a record of the modification to a log; and
computer readable code means for writing at least a portion of the modification to the data storage device, wherein the portion of the old data is at least plural old strips of a stride, the update is at least plural new strips, the computer readable code means for writing the modification to the data storage device writes the modification to a new physical location on the data storage device that is different from the physical location of the old data set, and the computer usable code means includes;
computer readable code means for generating at least one new parity strip using at least the new strips, wherein the means for writing the record to the log also writes at least an address of the new physical location and an address of the physical location of the old data set to the log, without writing the modification and the new parity strip to the log.
1 Assignment
0 Petitions
Accused Products
Abstract
A system for ensuring high reliability in a block service disk array system while promoting high performance by logically writing all changes to strides on the array while physically writing ahead to a log only a subset of the changes. Specifically, for changes of only a strip or so, the changes are written to a log, along with a commit record, and then written to disk, later deleting the changes from the log. In contrast, for relatively larger changes, i.e., for an entire (or nearly entire) stride, the old stride is not overwritten by the new, but rather is written to a new location on the disk, with the new and old locations and a commit record (but not the new stride itself) being logged and with the entries for the locations in the stride mapping table swapped with each other. In an alternate embodiment, blocks can be written to temporary locations in a RAID-1 area and lazily moved to home locations in a RAID-5 area of an array of disks.
-
Citations
31 Claims
-
1. A general purpose computer including at least one memory and at least one computer usable medium having computer usable code means for storing data on at least one data storage device having at least one old data set stored thereon, the computer usable code means including:
-
computer readable code means for receiving an update of at least a portion of the old data set;
computer readable code means for modifying, in memory, the old data set using the update, to render a modification;
computer readable code means for writing at least a record of the modification to a log; and
computer readable code means for writing at least a portion of the modification to the data storage device, wherein the portion of the old data is at least plural old strips of a stride, the update is at least plural new strips, the computer readable code means for writing the modification to the data storage device writes the modification to a new physical location on the data storage device that is different from the physical location of the old data set, and the computer usable code means includes;
computer readable code means for generating at least one new parity strip using at least the new strips, wherein the means for writing the record to the log also writes at least an address of the new physical location and an address of the physical location of the old data set to the log, without writing the modification and the new parity strip to the log. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
computer readable code means for generating at least one delta parity strip using the old strip and an old parity strip; and
computer readable code means for generating a new parity strip using the delta parity strip and the modification, wherein the means for writing the record to the log also writes at least the modification and the new parity strip to the log.
-
-
4. The computer of claim 3, wherein the means for writing the modification to the data storage device also writes the new parity strip to the data storage device, the modification being written to the physical location of the old data set.
-
5. The computer of claim 3, wherein the computer readable code means for generating use an XOR operator.
-
6. The computer of claim 3, further comprising computer readable code means for discarding from the log the parity strips and the modification, after the parity strips and the modification have been written to the data storage device.
-
7. The computer of claim 1, wherein the new physical location is determined using a stride mapping table.
-
8. The computer of claim 1, further comprising a stride mapping table including respective entries for the new physical location and the physical location of the old data set, and the computer further comprises computer readable code means for exchanging the entries in the table for each other.
-
9. The computer of claim 1, wherein the computer readable code means for generating use an XOR operator.
-
10. The computer of claim 1, further comprising computer readable code means for discarding from the log the addresses of the physical locations, after the modification has been written to the data storage device.
-
11. For a block service disk array across which data is arranged in strides, each stride defining a respective strip on a respective disk of the array, a computer-implemented method including acts to logically write all changes to strides while physically writing ahead to a log only a subset of the changes, wherein the disk array has at least one old stride stored thereon, and the method further includes:
-
receiving an update of at least a portion of the stride;
modifying the old stride using the update to render a modification;
writing at least a commit record of the modification to a log;
writing at least a portion of the modification to the disk array;
wherein the portion of the old stride is at least plural old strips of the stride, the update is at least plural new strips, and the acts further include;
generating at least one new parity strip using at least the new strips;
writing at least an address of the new physical location and an address of the physical location of the old stride to the log, without writing the modification and the new parity strip to the log. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
writing at least a commit record of the modification to a log; and
writing at least a portion of the modification to the disk array.
-
-
14. The method of claim 13, wherein the portion of the old data is at least one old strip and the update is at least one new strip, and the acts further include:
-
generating at least one delta parity strip using the old strip and an old parity strip; and
generating a new parity strip using the delta parity strip and the modification, wherein the modification and the new parity strip are written to the log.
-
-
15. The method of claim 14, wherein the new parity strip is written to the disk array and the modification is written to the physical location of the old stride.
-
16. The method of claim 14, wherein the delta parity strip is generated using an XOR operator.
-
17. The method of claim 15, further comprising the act of discarding from the log the parity strips and the modification, after the parity strips and the modification have been written to the disk array.
-
18. The method of claim 13, wherein the modification is written to the disk array to a new physical location that is different from the physical location of the old stride.
-
19. The method of claim 18, wherein the new physical location is determined using a stride mapping table.
-
20. The method of claim 19, wherein the portion of the old stride is at least plural old strips of the stride, the update is at least plural new strips, and the acts further include:
-
generating at least one new parity strip using at least the new strips;
writing at least an address of the new physical location and an address of the physical location of the old stride to the log, without writing the modification and the new parity strip to the log.
-
-
21. The method of claim 13, further comprising the act of exchanging stride mapping table entries for the new physical location and the location of the old stride for each other.
-
22. The method of claim 21, further comprising the act of discarding from the log the addresses of the physical locations, after the modification has been written to the disk array.
-
23. A computer program device comprising:
-
a computer program storage device readable by a digital processing apparatus; and
a program on the program storage device and including instructions executable by the digital processing apparatus for performing method acts for storing data on a data storage device, the method acts comprising;
receiving an update of at least a portion of an existing stride of data stored on a block service disk array;
determining whether to write just the update to disk or to write a modified version of the entire stride to disk;
if the modified version of the entire stride is to be written to disk, determining a new location to which the modified version of the stride is to be written, the new location being different from an old location at which the existing stride is stored; and
writing a commit record of the modification to a log along with at least the new location, when the modified version of the entire stride is to be or has been written to disk, and otherwise writing a commit record of the modification to a log along with at least the update, when just the update is to be written to disk. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31)
generating at least one delta parity strip using the old strip and an old parity strip; and
generating a new parity strip using the delta parity strip and the update, wherein the update and the new parity strip are written to the log.
-
-
26. The computer program product of claim 25, wherein the new parity strip is written to the disk array and the update is written to the physical location of the old stride.
-
27. The computer program product of claim 26, wherein the delta parity strip is generated using an XOR operator.
-
28. The computer program product of claim 26, wherein the method acts further comprise discarding from the lot the parity strips and the update, after the parity strips and the update have been written to the disk array.
-
29. The computer program product of claim 24, wherein the portion of the existing stride is plural old strips and the update is plural new strips, and when the modified version of the entire stride is to be or has been written to disk, the new location is determined using the stride mapping table.
-
30. The computer program product of claim 29, wherein the method acts further include:
-
generating at least one new parity strip using at least the new strips;
writing at least an address of the new location and an address of the location of the existing stride to the log, without writing the stride and the new parity strip to the log.
-
-
31. The computer program product of claim 30, wherein the method acts further comprise discarding from the log the addresses of the physical locations, after the stride has been written to the disk array.
Specification