Abstract:
An example storage system may include storage media and a storage controller. The storage controller may be to establish virtual volumes, private data stores, and a deduplication data store, each being a virtual storage space of the storage media, wherein each of the private data stores is associated with one of the virtual volumes and the deduplication data store is shared among the virtual volumes. The storage controller may, in response to receiving input data that is to be stored in a given one of the virtual volumes, determine a signature for the input data and select between storing the input data in the private data store associated with the given one of the virtual volumes and storing the input data in the deduplication data store. The storage controller may select where to store the input data based on whether a metadata storage location addressed by a first portion of the signature includes valid metadata, and, if so: whether the metadata includes a back-pointer to one of the virtual volumes, and whether a second portion of the signature matches a key included in the metadata.
Abstract:
Example implementations relate to data chunk storage. For example, an implementation includes an apparatus that includes a processor. The processor is to receive a first data chunk from a source device and to generate a first fingerprint of the first data chunk. In response to a determination that the first fingerprint matches a second fingerprint of a second data chunk, the processor is to select a storage pool from a plurality of storage pools at a storage device to store the first data chunk based on the first data chunk and based on the second data chunk. The plurality of storage pools includes a first storage pool associated with first particular data chunks with non-colliding fingerprints and a second storage pool associated with second particular data chunks with colliding fingerprints.
Abstract:
In some examples, a system converts a virtual volume from a first volume type to a second volume type without modifying the virtual volume, the converting comprising accessing a source metadata associated with the virtual volume, the source metadata including information for the first volume type, and generating a destination metadata associated with the virtual volume, the destination metadata including information for the second volume type. While the virtual volume is being converted from the first volume type to the second volume type, the system processes a write operation that accesses a portion of the virtual volume and changes data in the accessed portion of the virtual volume.
Abstract:
A technique includes receiving a command in a target port, where the command is provided by an initiator and is associated with a write operation. The technique includes, in response to the command, using the target to process a data transfer for the initiator associated with the write operation. The processing includes, based on a characteristic of the command, selectively using memory for the transfer pre-allocated by a storage array controller prior to receipt of the command by the target port or requesting an allocation of memory for the transfer from the storage array controller.
Abstract:
Example method includes: negotiating, with a client device, a number of simultaneous I/O commands allowed in a single session between a storage device and the client device; pre-allocating a number of immediate data buffers for the single session based on the negotiated number of simultaneous I/O commands; receiving a write I/O command with immediate data, wherein the immediate data is transmitted within a single PDU as the I/O command; transitioning the pre-allocated buffers from a network interface state to a driver state in an atomic operation, the driver state enabling the pre-allocated buffers to be accessed by a driver layer of the storage device exclusively, and the atomic operation preventing other I/O commands from transitioning the network interface state of the pre-allocated buffers until the atomic operation is completed; and writing the immediate data to the pre-allocated buffers that are in the driver state.
Abstract:
A port processor to receive a read command in a target port. In response, use the target to process a data transfer that includes use of memory for the read transfer allocated by a storage array controller prior to receipt of the read command by the target port or while processing the data transfer and selectively mark such memory as repurposable. The port processor to receive a write command in the target port. In response to receipt of the write command, use the target to process a data transfer for the initiator associated with the write operation, wherein the process includes use of memory that the storage array controller pre-allocated or allocated based on receipt of the read command by the target port for the transfer to the storage array controller and marked as repurposable.
Abstract:
Techniques to copy data from a source region to a destination region, and to update in cache a source region timestamp and a destination region timestamp.