Snapshots and thin-provisioning in distributed storage over shared storage devices
First Claim
Patent Images
1. A method for data storage, comprising:
- in a system that comprises one or more storage controllers, multiple servers and multiple storage devices that communicate over a network, running user applications on the servers;
storing, in a memory of the one or more storage controllers, a data structure, which (i) represents thinly-provisioned user volumes used by the servers in storing data on the storage devices, and (ii) specifies for the user volumes a logical-to-physical mapping between logical addresses and physical addresses of the storage devices;
generating, in a given server that is configured to run one or more of the user applications, storage commands that access one or more of the user volumes, by performing in the given server;
(i) retrieving at least a part of the logical-to-physical mapping from the memory of the one or more storage controllers to the given server, using direct remote access to the memory of the one or more storage controllers and without executing code on the one or more storage controllers;
(ii) translating the logical addresses accessed by the storage commands into the respective physical addresses, using the retrieved at least part of the logical-to-physical mapping; and
(iii) generating the storage commands that specify the translated physical addresses; and
sending the storage commands, which specify the physical addresses, from the given server that is configured to run the one or more of the user applications directly to one or more of the storage devices, without executing code on the one or more storage controllers.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for data storage includes, in a system that includes one or more storage controllers, one or more servers and one or more storage devices, defining one or more data structures that represent thinly-provisioned user volumes used by the servers in storing data on the storage devices. One or more of the data structures are shared among the storage controllers and the servers. One or more of the user volumes are accessed by the servers, using the shared data structures and without executing code on the storage controllers.
39 Citations
28 Claims
-
1. A method for data storage, comprising:
-
in a system that comprises one or more storage controllers, multiple servers and multiple storage devices that communicate over a network, running user applications on the servers; storing, in a memory of the one or more storage controllers, a data structure, which (i) represents thinly-provisioned user volumes used by the servers in storing data on the storage devices, and (ii) specifies for the user volumes a logical-to-physical mapping between logical addresses and physical addresses of the storage devices; generating, in a given server that is configured to run one or more of the user applications, storage commands that access one or more of the user volumes, by performing in the given server; (i) retrieving at least a part of the logical-to-physical mapping from the memory of the one or more storage controllers to the given server, using direct remote access to the memory of the one or more storage controllers and without executing code on the one or more storage controllers; (ii) translating the logical addresses accessed by the storage commands into the respective physical addresses, using the retrieved at least part of the logical-to-physical mapping; and (iii) generating the storage commands that specify the translated physical addresses; and sending the storage commands, which specify the physical addresses, from the given server that is configured to run the one or more of the user applications directly to one or more of the storage devices, without executing code on the one or more storage controllers. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computing system, comprising:
-
multiple physical servers, which are configured to run user applications and to communicate with multiple storage devices over a network; and one or more physical storage controllers, which have a memory and are configured to store in the memory a data structure that (i) represents thinly-provisioned user volumes used by the servers in storing data on the storage devices, and (ii) specifies for the user volumes a logical-to-physical mapping between logical addresses and physical addresses of the storage devices, wherein a given physical server, which is configured to run one or more of the user applications, is further configured to generate storage commands that access one or more of the user volumes, by performing; (i) retrieving at least a part of the logical-to-physical mapping from the memory of the one or more storage controllers to the given server, using direct remote access to the memory of the one or more storage controllers and without executing code on the one or more storage controllers; (ii) translating the logical addresses accessed by the storage commands into the respective physical addresses, using the retrieved at least part of the logical-to-physical mapping; and (iii) generating the storage commands that specify the translated physical addresses, and wherein the given server that is configured to run the one or more of the user applications is further configured to send the storage commands, which specify the physical addresses, directly from the given server to one or more of the storage devices, without executing code on the one or more storage controllers. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A server, comprising:
-
a physical network interface for communicating over a communication network with multiple storage devices and with one or more storage controllers; and a physical processor, which is configured to run one or more user applications, and to generate storage commands that access one or more thinly-provisioned user volumes on the storage devices, by; (i) retrieving to the server, using direct remote access to a memory of the one or more storage controllers and without executing code on the one or more storage controllers, at least a part of a logical-to-physical mapping between logical addresses and physical addresses of the storage devices, wherein the logical-to-physical mapping is stored in the memory in a data structure that (a) represents the thinly-provisioned user volumes, and (b) specifies the logical-to-physical mapping for the user volumes; (ii) translating the logical addresses accessed by the storage commands into the respective physical addresses, using the retrieved at least part of the logical-to-physical mapping; and (iii) generating the storage commands that specify the translated physical addresses, wherein the physical processor that is configured to run the one or more user applications is further configured to send the storage commands, which specify the physical addresses, directly to one or more of the storage devices without executing code on the one or more storage controllers.
-
Specification