Method and system for updating data in a data storage system
First Claim
1. A method in a data storage system for updating stored data with received data in a cache associated with said data storage system, where said data storage system comprises N data storage drives, where data and calculated parity are striped across said N data storage drives for a stripe, said method comprising the steps of:
- receiving data into a cache associated with said data storage system;
determining if said received data in said cache includes sequential data for a plurality of complete stripes;
calculating parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe if said data is sequential for each of said plurality of complete stripes;
coalescing said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes;
calculating parity for a particular stripe by logically XORing said received data and fetched data from said data storage system if said cache is not determined to include all sequential data contained within said particular stripe, where fetched data is fetched from said N data storage drives into said cache;
coalescing said particular stripe with said plurality of complete stripes; and
writing said coalesced data to each of said N data storage drives, such that input/output operations within said data storage system are minimized.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for a data storage system to update stored data with received data in a cache associated with the data storage system where the data storage system comprises N data storage drives is provided, where data and calculated parity are striped across the N data storage drives. An associated cache is provided with the data storage system for receiving data. The data in the cache is periodically examined to determine if the data includes all sequential data contained within a complete stripe within the data storage system. Data is fetched from the N data storage drives into the cache and the parity for the stripe is calculated by logically combining the received data in the cache and fetched data from the data storage drives if the cache is determined not to include all sequential data contained within the complete stripe. Alternatively, the parity for the stripe is calculated by logically combining only data within the cache for the stripe, if data in the cache is determined to include all sequential data contained within a complete stripe, thereby minimizing the number of input/output operations required to update data.
95 Citations
14 Claims
-
1. A method in a data storage system for updating stored data with received data in a cache associated with said data storage system, where said data storage system comprises N data storage drives, where data and calculated parity are striped across said N data storage drives for a stripe, said method comprising the steps of:
-
receiving data into a cache associated with said data storage system;
determining if said received data in said cache includes sequential data for a plurality of complete stripes;
calculating parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe if said data is sequential for each of said plurality of complete stripes;
coalescing said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes;
calculating parity for a particular stripe by logically XORing said received data and fetched data from said data storage system if said cache is not determined to include all sequential data contained within said particular stripe, where fetched data is fetched from said N data storage drives into said cache;
coalescing said particular stripe with said plurality of complete stripes; and
writing said coalesced data to each of said N data storage drives, such that input/output operations within said data storage system are minimized. - View Dependent Claims (2, 3)
dividing the cache into a plurality of pages;
storing a predefined unit of said received data in each page of the cache; and
associating a position in said N data storage drives with each said page of received data according to the stored data position which the received data will update.
-
-
3. A method in a data storage system for updating stored data with received data in a cache associated with said data storage system according to claim 1, said step of calculating said parity for each of said plurality of complete stripes, further comprising the step of:
XORing said received data within said cache for each of said plurality of complete stripes.
-
4. A system in a data storage system for updating stored data with received data in a cache associated with said data storage system, where said data storage system comprises N data storage drives, where data and calculated parity are striped across said N data storage drives for a stripe, said system comprising:
-
a cache associated with said data storage system for receiving data;
means for determining if said received data in said cache includes sequential data for a plurality of complete stripes;
means for calculating parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe if said data is sequential for each of said plurality of complete stripes;
means for coalescing said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes;
means for calculating parity for a particular stripe by logically XORing said received data and fetched data from said data storage system if said cache is not determined to include all sequential data contained within said particular stripe, where fetched data is fetched from said N data storage drives into said cache;
means for coalescing said particular stripe with said plurality of complete stripes; and
means for writing said coalesced data to each of said N data storage drives, such that input/output operations within said data storage system are minimized. - View Dependent Claims (5, 6)
means for dividing the cache into a plurality of pages;
means for storing a predefined unit of said received data in each page of the cache; and
means for associating a position in said N data storage drives with each said page of received data according to the stored data position which the received data will update.
-
-
6. A system in a data storage system for updating stored data with received data in a cache associated with said data storage system according to claim 4, said means for calculating said parity for each of said plurality of complete stripes further comprising:
an XOR controller for performing said calculation by logically combining said received data for each of said plurality of complete stripes.
-
7. A method in a RAID data storage system for updating stored data with received data in a cache associated with said RAID data storage system, where said RAID data storage system comprises N data storage drives, where data and calculated parity are striped across said N RAID data storage drives for a stripe, said method comprising the steps of:
-
receiving data into a cache associated with said RAID data storage system;
determining if said received data in said cache includes sequential data for a plurality of complete stripes;
calculating parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe if said data is sequential for each of said plurality of complete stripes;
coalescing said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes;
calculating parity for a particular stripe by logically XORing said received data and fetched data from said RAID data storage system if said cache is not determined to include all sequential data contained within said particular stripe, where fetched data is fetched from said N RAID data storage drives into said cache;
coalescing said particular stripe with said plurality of complete stripes; and
writing said coalesced data to each of said N RAID data storage drives, such that input/output operations within said RAID data storage system are minimized. - View Dependent Claims (8, 9)
dividing the cache into a plurality of pages;
storing a predefined unit of said received data in each page of the cache; and
associating a position in said N RAID data storage drives with each said page of received data according to the stored data position which the received data will update.
-
-
9. A method in a RAID data storage system for updating stored data with received data in a cache associated with said RAID data storage system according to claim 7, said step of calculating said parity for each of said plurality of complete stripes, further comprising the step of:
XORing said received data within said cache for each of said plurality of complete stripes.
-
10. A system in a RAID data storage system for updating stored data with received data in a cache associated with said RAID data storage system, where said RAID data storage system comprises N RAID data storage drives, where data and calculated parity are striped across said N RAID data storage drives for a stripe, said system comprising:
-
a cache associated with said RAID data storage system for receiving data;
means for determining if said received data in said cache includes sequential data for a plurality of complete stripes;
means for calculating parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe if said data is sequential for each of said plurality of complete stripes;
means for coalescing said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes;
means for calculating parity for a particular stripe by logically XORing said received data and fetched data from said RAID data storage system if said cache is not determined to include all sequential data contained within said particular stripe, where fetched data is fetched from said N RAID data storage drives into said cache;
means for coalescing said particular stripe with said plurality of complete stripes; and
means for writing said coalesced data to each of said N RAID data storage drives, such that input/output operations within said RAID data storage system are minimized. - View Dependent Claims (11, 12)
means for dividing the cache into a plurality of pages;
means for storing a predefined unit of said received data in each page of the cache; and
means for associating a position in said N RAID data storage drives with each said page of received data according to the stored data position which the received data will update.
-
-
12. A system in a RAID data storage system for updating stored data with received data in a cache associated with said RAID data storage system according to claim 10, said means for calculating said parity for each of said plurality of complete stripes further comprising:
an XOR controller for performing said calculation by logically combining said received data for each of said plurality of complete stripes.
-
13. A program product for updating stored data with received data in a cache associated with a data storage system, where said data storage system comprises N data storage drives, said program product comprising:
-
a data processing system usable medium;
a data updating program encoded within said data processing system usable medium that, in response to receiving data into said cache determines if said received data in said cache includes sequential data for a plurality of complete stripes, calculates parity for each of said plurality of complete stripes by logically combining only said received data for each of said plurality of complete stripe in response to determining that said data in said cache is sequential for each of said plurality of complete stripes, coalesces said received data for each of said plurality of complete stripes and said calculated parity for each of said plurality of complete stripes, calculates parity for a particular stripe by logically XORing said received data and fetched data from said data storage system in response to determining that said cache does not include all sequential data contained within said particular stripe, where fetched data is fetched from said N data storage drives into said cache;
coalescing said particular stripe with said plurality of complete stripes; and
writes said coalesced data to each of said N data storage drives, such that input/output operations within said data storage system are minimized. - View Dependent Claims (14)
stores a predefined unit of said received data in each page of the cache; and
associates a position in said N data storage drives with each said page of received data according to the stored data position which the received data will update.
-
Specification