Method and system for fast ordered writes with target collaboration
First Claim
Patent Images
1. A method for processing write requests comprising:
- receiving, by a first storage module, a first commit request from a client, wherein the first commit request is associated with a first data and comprises an address, wherein the address is generated by applying a consistent hashing function to at least an object identifier and an offset associated with the first data, wherein the address is associated with the first storage module;
in response to receiving the first commit request;
processing the first commit request, wherein processing the first commit request causes a first copy of the first data to be stored in persistent storage in the first storage module, wherein the first copy of the first data was received from the client and by the first storage module prior to the first storage module receiving the first commit request;
generating, by the first storage module, a second commit request for a second storage module;
transmitting the second commit request to the second storage module;
receiving a first commit reply from the second storage module indicating that a second copy of the first data is stored in persistent storage in the second storage module, wherein the second copy of the first data was received from the client and by the second storage module prior to the first storage module receiving the first commit request;
in response to receiving the first commit reply and after processing the first commit request, generating, by the first storage module, a second commit reply corresponding to the first commit request; and
transmitting the second commit reply to the client.
5 Assignments
0 Petitions
Accused Products
Abstract
In general, embodiments of the technology relate to a method and system for performing fast ordered writes in a storage appliance that includes multiple separate storage modules. More specifically, embodiments of the technology enable multicasting of data to multiple storage modules in a storage appliance, where the order in which the write requests are processed is the same across all storage modules in the storage appliance.
83 Citations
16 Claims
-
1. A method for processing write requests comprising:
-
receiving, by a first storage module, a first commit request from a client, wherein the first commit request is associated with a first data and comprises an address, wherein the address is generated by applying a consistent hashing function to at least an object identifier and an offset associated with the first data, wherein the address is associated with the first storage module; in response to receiving the first commit request; processing the first commit request, wherein processing the first commit request causes a first copy of the first data to be stored in persistent storage in the first storage module, wherein the first copy of the first data was received from the client and by the first storage module prior to the first storage module receiving the first commit request; generating, by the first storage module, a second commit request for a second storage module; transmitting the second commit request to the second storage module; receiving a first commit reply from the second storage module indicating that a second copy of the first data is stored in persistent storage in the second storage module, wherein the second copy of the first data was received from the client and by the second storage module prior to the first storage module receiving the first commit request; in response to receiving the first commit reply and after processing the first commit request, generating, by the first storage module, a second commit reply corresponding to the first commit request; and transmitting the second commit reply to the client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A storage appliance, comprising:
-
a fabric; a storage array operatively connected to the fabric and comprising a first storage module and a second storage module, wherein the first storage module is configured to; receive, via the fabric, a first commit request from a client, wherein the first commit request is associated with a first data and comprises an address, wherein the address is generated by applying a consistent hashing function to at least an object identifier and an offset associated with the first data, wherein the address is associated with the first storage module; in response to receiving the first commit request; process the first commit request, wherein processing the first commit request causes a first copy of the first data to be stored in persistent storage in the first storage module, wherein the first copy of the first data was received from the client and by the first storage module prior to the first storage module receiving the first commit request; generate a second commit request for a second storage module; transmit, via the fabric, the second commit request to the second storage module; receive, via the fabric, a first commit reply from the second storage module indicating that a second copy of the first data is stored in persistent storage in the second storage module, wherein the second copy of the first data was received from the client and by the second storage module prior to the first storage module receiving the first commit request; in response to receiving the first commit reply and after processing the first commit request, generate a second commit reply corresponding to the first commit request; and transmit, via the fabric, the second commit reply to the client. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
Specification