摘要:
A system for data storage includes multiple servers, which are configured to communicate over a network with multiple multi-queue storage devices and with at least one storage controller, to store on the storage devices compressed data belonging to a user volume, to specify storage locations, in which the compressed data is stored on the storage devices, in a shared data structure that is shared and modified by the servers using remote direct memory access, and to coordinate access to the compressed data by the servers by querying the shared data structure, without executing code on a processor of the storage controller.
摘要:
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 blocks by the servers on the storage devices. A shared data structure, which is accessible to the servers using remote direct memory access and which maps hash values calculated over the data blocks to respective storage locations of the data blocks on the storage devices, is maintained. The data blocks stored on the storage device are deduplicated, by looking-up the shared data structure by the servers without executing code on a processor of the storage controller.
摘要:
A method for data storage includes, in a system that includes multiple servers and multiple storage devices, holding in a server a definition of a stripe that includes multiple memory locations on the storage devices, to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements. One or more of the data elements in the stripe are modified by the server, by executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements, and storing the modified data elements in the storage devices only in response to successful completion of the atomic command.
摘要:
A method for data storage, in a system that includes multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, includes receiving in a server, from an application running on the server, a request to access data belonging to one or more stripes. The stripes are stored on the storage devices and are shared with one or more other servers. In response to the request, the following are performed at least partially in parallel: (i) requesting one or more global locks that prevent the other servers from accessing the stripes, and (ii) reading at least part of the stripes from the storage devices speculatively, irrespective of whether the global locks are granted. Execution of the request is completed upon verifying that the speculatively-read data is valid.
摘要:
A method for data storage includes, in a system that includes one or more storage controllers, multiple servers and multiple multi-queue storage devices, assigning in each storage device server-specific queues for queuing data-path storage commands exchanged with the respective servers. At least some of the data-path storage commands are exchanged directly between the servers and the storage devices, not via the storage controllers, to be queued and executed in accordance with the corresponding server-specific queues.
摘要:
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.
摘要:
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, running, in a server among the servers, multiple data-path instances (DPs) that operate independently of one another and issue storage commands for execution in the multi-queue storage devices. The storage commands, issued by the multiple DPs running in the server, are multiplexed using an Input-Output Multiplexer (I/O MUX) process. The multiplexed storage commands are executed in the multi-queue storage devices.
摘要:
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.
摘要:
An apparatus for data storage management includes one or more processors, and an interface for connecting to a communication network that connects one or more servers and one or more storage devices. The one or more processors are configured to receive a configuration of the communication network, including a definition of multiple network connections that are used by the servers to access the storage devices using a remote direct memory access protocol transported over a lossy layer-2 protocol, to calculate, based on the configuration, respective maximum bandwidths for allocation to the network connections, and to reduce a likelihood of congestion in the communication network, notwithstanding the lossy layer-2 protocol, by instructing the servers and the storage devices to comply with the maximum bandwidths.
摘要:
A method for data storage includes, in a system that includes one or more storage controllers, multiple servers and multiple multi-queue storage devices, assigning in each storage device server-specific queues for queuing data-path storage commands exchanged with the respective servers. At least some of the data-path storage commands are exchanged directly between the servers and the storage devices, not via the storage controllers, to be queued and executed in accordance with the corresponding server-specific queues.