Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
First Claim
1. A method for data storage, comprising:
- in a system that comprises multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, storing data by the servers in stripes in a storage process that (i) caches the data in a cache memory that is accessible to the servers and to the storage devices and (ii) de-stages the cached data from the cache memory to the storage devices;
continually journaling a progress of the storage process, by the servers, in a plurality of server-specific journals residing in the cache memory; and
in response to a failure associated with a given server occurring during the storage process, collecting from the server-specific journals entries relating to one or more stripes accessed by the given server, and recovering the data by the storage controller based on the collected entries of the server-specific journals,wherein the stripes each consist of N data blocks and c redundancy blocks, and wherein recovering the data comprises reconstructing the stripes based on fewer than N+c of the server-specific journals, or based on fewer than N+c server-specific portions of the cache memory.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for data storage includes, in a system that includes multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, storing data by the servers in a storage process that (i) caches the data in a cache memory that is accessible to the servers and to the storage devices and (ii) de-stages the cached data from the cache memory to the storage devices. A progress of the storage process is continually journaled, by the servers, in a plurality of server-specific journals residing in the cache memory. In response to a failure occurring during the storage process, the data is recovered by the storage controller based on the server-specific journals.
64 Citations
14 Claims
-
1. A method for data storage, comprising:
-
in a system that comprises multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, storing data by the servers in stripes in a storage process that (i) caches the data in a cache memory that is accessible to the servers and to the storage devices and (ii) de-stages the cached data from the cache memory to the storage devices; continually journaling a progress of the storage process, by the servers, in a plurality of server-specific journals residing in the cache memory; and in response to a failure associated with a given server occurring during the storage process, collecting from the server-specific journals entries relating to one or more stripes accessed by the given server, and recovering the data by the storage controller based on the collected entries of the server-specific journals, wherein the stripes each consist of N data blocks and c redundancy blocks, and wherein recovering the data comprises reconstructing the stripes based on fewer than N+c of the server-specific journals, or based on fewer than N+c server-specific portions of the cache memory. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for data storage, comprising:
-
multiple servers, which are configured to store data in stripes over a network on multiple multi-queue storage devices in a storage process that (i) caches the data in a cache memory that is accessible to the servers and to the storage devices and (ii) de-stages the cached data from the cache memory to the storage devices, and to continually journal a progress of the storage process in a plurality of server-specific journals residing in the cache memory; and at least one storage controller, which is configured, in response to a failure associated with a given server occurring during the storage process, to collect from the server-specific journals entries relating to one or more stripes accessed by the given server, and to recover the data based on the collected entries of the server-specific journals, wherein the stripes each consist of N data blocks and c redundancy blocks, and wherein the storage controller is configured to reconstruct the stripes based on fewer than N+c of the server-specific journals, or based on fewer than N+c server-specific portions of the cache memory. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification