US2006206665A1PendingUtilityA1

Accelerated RAID with rewind capability

Assignee: QUANTUM CORPPriority: Sep 20, 2002Filed: May 13, 2006Published: Sep 14, 2006
Est. expirySep 20, 2022(expired)· nominal 20-yr term from priority
Inventors:Tim Orsley
G06F 11/2066Y10S707/99953G06F 11/1076G06F 2211/103G06F 2211/1004G06F 11/1441G06F 11/2069Y10S707/99955
45
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A method for storing data in a fault-tolerant storage subsystem having an array of failure independent data storage units, by dividing the storage area on the storage units into a logical mirror area and a logical stripe area, such that when storing data in the mirror area, duplicating the data by keeping a duplicate copy of the data on a pair of storage units, and when storing data in the stripe area, storing data as stripes of blocks, including data blocks and associated error-correction blocks.

Claims

exact text as granted — not AI-modified
1 - 55 . (canceled)  
     
     
         56 . A method for storing data in a fault-tolerant storage subsystem having an array of failure independent data storage units, comprising the steps of: 
 dividing the data storage area on the data storage units into a logical mirror area and a logical stripe area, such that when storing data in the mirror area, duplicating the data by keeping a duplicate copy of the data on a pair of storage units, and when storing data in the stripe area, storing data as stripes of blocks, including data blocks and associated error-correction blocks;    storing a data set in the stripe area, and storing an associated log cache in the mirror area;    in response to a request from a host to write data to the storage subsystem: storing the host data in the log cache in the mirror area, and acknowledging completion of the write to the host;    copying said host data from the log cache in the mirror area to the data set in the stripe area.    
     
     
         57 . The method of  claim 56 , wherein: 
 the log cache comprises a write log having multiple time-sequential entries, each entry including a data block, the data block address in the data set, and a data block time stamp.    
     
     
         58 . The method of  claim 57 , wherein: 
 said request from the host includes said host data and a block address in the data set for storing the host data;    the step of storing the host data in the log cache in response to said host request further includes the steps of entering the host data, said block address and a time stamp in an entry in the log cache.    
     
     
         59 . The method of  claim 57 , wherein: 
 the step of copying said host data from the log cache in the mirror area to the data set in the stripe area, further comprises the steps of: copying the host data in said log cache entry in the mirror area to said block address in the data set in the stripe area.    
     
     
         60 . The method of  claim 57 , further comprising the steps of: 
 archiving said log cache entry in an archive; and    purging said entry from the cache log.    
     
     
         61 . The method of  claim 58  further comprising the steps of: 
 in response to a request to recreate a state of the data set at a selected time: 
 obtaining a copy of the data set created at a back-up time prior to the selected time;  
 obtaining a cache log associated with said data set copy, the associated cache log including entries created time-sequentially immediately subsequent to said back-up time; and  
 time-sequentially transferring each data block in each entry of said associated cache log, to the corresponding block address in the data set copy, until said selected time stamp is reached in an entry of the associated cache log.  
   
     
     
         62 . The method of  claim 57 , wherein the storage subsystem further includes a cache memory, the method further comprising the steps of: 
 in response to a request to write data to the storage subsystem: storing the data in the cache memory, acknowledging completion of the write, and copying the data from the cache memory to the log cache in the mirror area.    
     
     
         63 . The method of  claim 62 , further comprising the steps of: 
 copying said data from the log cache in the mirror area to the data set in the stripe area.    
     
     
         64 . The method of  claim 63 , further comprising the steps of: 
 in response to a request to read data from the storage subsystem: 
 determining if the requested data is in the cache memory, and if so, providing the requested data from the cache memory,  
 otherwise, determining if the requested data is in the log cache in the mirror area, and if so, providing the requested data from the log cache,  
 otherwise, determining if the requested data is in the data set in the stripe area, and if so, providing the requested data from the data set.  
   
     
     
         65 . The method of  claim 57 , further comprising the steps of compressing the data stored in the mirror area.  
     
     
         66 . The method of  claim 57 , wherein the data storage units comprise data disk drives.  
     
     
         67 . A fault-tolerant storage subsystem comprising: 
 an array of failure independent data storage units;    a controller that logically divides the data storage area on data the storage units into a logical mirror area and a logical stripe area, wherein the controller stores data in the mirror area by duplicating the data and keeping a duplicate copy of the data on a pair of storage units, and the controller stores data in the stripe area as stripes of blocks, including data blocks and associated error-correction blocks;    the controller further maintains a data set in the stripe area, and an associated log cache in the mirror area; and    in response to a request to write incoming data to the storage subsystem, the controller stores the incoming data in the log cache in the mirror area, and acknowledges completion of the write, and the controller copies said incoming data from the log cache in the mirror area to the data set in the stripe area.    
     
     
         68 . The storage subsystem of  claim 67 , wherein: 
 the log cache comprises a write log having multiple time sequential entries, each entry including a data block, the data block address in the data set, and time stamp.    
     
     
         69 . The storage subsystem of  claim 68 , wherein: 
 said request includes said incoming data and a block address in the data set for storing the incoming data; and    the controller enters the incoming data, said block address and a time stamp in an entry in the log cache.    
     
     
         70 . The storage subsystem of  claim 69 , wherein in response to a request to read data from the data set, the controller further: 
 determines if the requested data is in the log cache in the mirror area, and if so, provides the requested data from the log cache,    otherwise, the controller determines if the requested data is in the data set in the stripe area, and if so, provides the requested data from the data set.    
     
     
         71 . The storage subsystem of  claim 69 , wherein: 
 the controller copies said incoming data from the log cache in the mirror area to the data set in the stripe area, by copying the incoming data in said log cache entry in the mirror area to said block address in the data set in the stripe area.    
     
     
         72 . The storage subsystem of  claim 69 , further comprising a cache memory, wherein: 
 in response to a request to write data to the data set, the controller stores the data in the cache memory, and acknowledges completion of the write; and    the controller further copies the data from the cache memory to the log cache in the mirror area.    
     
     
         73 . The storage subsystem of  claim 72 , wherein the controller further copies said data from the log cache in the mirror area to the data set in the stripe area.  
     
     
         74 . The storage subsystem of  claim 73 , wherein in response to a request to read data from the data set, the controller further: 
 determines if the requested data is in the cache memory, and if so, provides the requested data from the cache memory,    otherwise, the controller determines if the requested data is in the log cache in the mirror area, and if so, provides the requested data from the log cache,    otherwise, the controller determines if the requested data is in the data set in the stripe area, and if so, provides the requested data from the data set.    
     
     
         75 . The storage subsystem of  claim 68 , wherein the controller further compresses the data stored in the mirror area.  
     
     
         76 . A data organization manager for a fault-tolerant storage subsystem having an array of failure independent data storage units, the data organization manager comprising: 
 a controller that logically divides the data storage area on the data storage units into a hybrid of logical mirror area and a logical stripe area, wherein the controller stores data in the mirror area by duplicating the data and keeping a duplicate copy of the data on a pair of storage units, and the controller stores data in the stripe area as stripes of blocks, including data blocks and associated error-correction blocks;    the controller maintains a data set in the stripe area, and an associated log cache in the mirror area, and in response to a request to write data to the storage subsystem, the controller further: stores the data in the log cache in the mirror area, acknowledges completion of the write, and copies said data from the log cache in the mirror area to the data set in the stripe area.    
     
     
         77 . The data organization manager of  claim 76 , wherein: 
 the log cache comprises a write log having multiple time sequential entries, each entry including a data block, the data block address in the data set, and time stamp;    said request includes said data and a block address in the data set for storing the data; and    the controller enters the data, said block address and a time stamp in an entry in the log cache.    
     
     
         78 . The data organization manager of  claim 76 , wherein in response to a request to read data from the storage subsystem, the controller further: 
 determines if the requested data is in the log cache in the mirror area, and if so, provides the requested data from the log cache;    otherwise, the controller determines if the requested data is in the data set in the stripe area, and if so, provides the requested data from the data set.    
     
     
         79 . The data organization manager of  claim 77 , wherein: 
 the controller copies said data from the log cache in the mirror area to the data set in the stripe area, by copying the data in said log cache entry in the mirror area to said block address in the data set in the stripe area.    
     
     
         80 . The data organization manager of  claim 79 , wherein in response to a request to recreate a state of the data set at a selected time, the controller further: 
 obtains a copy of the data set created at a back-up time prior to the selected time;    obtains a cache log associated with said data set copy, the associated cache log including entries created time sequentially immediately subsequent to said back-up time; and    time sequentially transfers each data block in each entry of said associated cache log, to the corresponding block address in the data set copy, until said selected time stamp is reached in an entry of the associated cache log.    
     
     
         81 . The data organization manager of  claim 77 , further comprising a cache memory, wherein: 
 in response to a request to write data to the data set, the controller stores the data in the cache memory, and acknowledges completion of the write; and    the controller further copies the data from the cache memory to the log cache in the mirror area.    
     
     
         82 . The data organization manager of  claim 81 , wherein the controller further copies said data from the log cache in the mirror area to the data set in the stripe area.  
     
     
         83 . The data organization manager of  claim 76 , wherein in response to a request to read data from the data set, the controller further: 
 determines if the requested data is in the cache memory, and if so, provides the requested data from the cache memory,    otherwise, the controller determines if the requested data is in the log cache in the mirror area, and if so, provides the requested data from the log cache,    otherwise, the controller determines if the requested data is in the data set in the stripe area, and if so, provides the requested data from the data set.    
     
     
         84 . The data organization manager of  claim 81 , further comprising a memory backup module including non-volatile memory and a battery, wherein the storage subsystem is normally powered from a power supply; 
 wherein, upon detecting power failure from the power supply, the controller powers the cache memory and the non-volatile memory from the battery instead, and copies the data content of the cache memory to the non-volatile memory, and upon detecting restoration of power from the power supply, the controller copies back said data content from the non-volatile memory to the cache memory.    
     
     
         85 . The data organization manager of  claim 84 , wherein said cache memory comprises random access memory (RAM), and said non-volatile memory comprises flash memory (FLASH).  
     
     
         86 . The data organization manager of  claim 84 , wherein said battery comprises a rechargeable battery that is normally trickle charged by the power supply.  
     
     
         87 . The data organization manager of  claim 76 , wherein the controller further reserves one of the storage units as a spare for use in case one of the other storage units fails, such that while the spare storage unit is not in use, the controller further: 
 replicates the log cache data stored in the mirror area into the spare storage unit, such that multiple copies of that data are stored in the spare storage unit; and    upon receiving a request to read data from the data set, the controller determines if the requested data is in the spare storage unit, and if so, the controller selects a copy of the requested data in the spare storage unit that can be provided with minimum read latency relative to other copies of the selected data, and provides the selected copy of the requested data.    
     
     
         88 . The data organization manager of  claim 77 , wherein the controller further compresses the data stored in the mirror area and the cache.

Join the waitlist — get patent alerts

Track US2006206665A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.