Abstract:
A network storage server receives multiple write requests from a set of clients via a network and internally buffers multiple data blocks written by the write requests. At a consistency point, the storage server commits the data blocks to a nonvolatile mass storage facility. The consistency point process includes using a storage operating system in the network storage server to compress the data blocks, encrypt selected data blocks, and store the compressed and (possibly) encrypted data blocks in the nonvolatile mass storage facility. Data blocks can also be fingerprinted in parallel with compression and/or encryption, to facilitate subsequent deduplication. Data blocks can be indexed and classified according to content or attributes of the data. Encryption can be applied at different levels of logical container granularity, where a separate, unique cryptographic key is used for each encrypted data container.
Abstract:
Methods and systems for a computing cluster are provided. An application programming interface (API) at a manager application is exposed. The API specifies input identifying nodes and connections between the nodes to implement storage protection policies in the computing cluster. A user input that includes instructions to implement multiple destination nodes and respective connections between a source node and the destination nodes is received. A topology that includes the source node, the destination nodes, and the connections between the source node and the destination nodes is traversed. Based on traversing the topology, commands are sent to a storage system of the cluster to implement a destination volume corresponding to the destination node and multiple protection configurations. Each of the protection configurations corresponds to a respective one of the connections.
Abstract:
A network storage controller uses a non-volatile solid-state memory (NVSSM) subsystem as a global cache that is shared between a number of network storage servers in a network storage system. Portions of global cache are allocated to each of the network storage servers. Allocation of portions of the global cache is controlled based on a usage pattern of the global cache by each of the network storage servers. The storage operating system determines, for example, a percentage of cache hit and/or a response time for responding to the requests from the clients by a particular network storage server with a particular allocated portion. The percentage of cache hit and response time are projected for various potential sizes of the particular portion. A size of the particular portion that provides a better percentage of cache hit and/or response time is selected, and reallocated to the particular network storage server.
Abstract:
The technique introduced here involves using a block address and a corresponding generation number as a “fingerprint” to uniquely identify a sequence of data within a given storage domain. Each block address has an associated generation number which indicates the number of times that data at that block address has been modified. This technique can be employed, for example, to maintain cache coherency among multiple storage nodes. It can also be employed to avoid sending the data to a network node over a network if it already has the data.
Abstract:
Methods and apparatuses for updating members of a data storage reliability group are provided. In one exemplary method, a reliability group includes a data zone in a first storage node and a checksum zone in a second data storage node. The method includes updating a version counter associated with the data zone in response to destaging a data object from a staging area of the data zone to a store area of the data zone without synchronizing the destaging with the state of the checksum zone. The method further includes transmitting, from the data zone to the checksum zone, an update message indicating completion of the destaging of the data object, wherein the update message includes a current value of the version counter.
Abstract:
In one embodiment, a node of a cluster is coupled to a storage array of storage devices. The node executes a storage input/output (I/O) stack having a redundant array of independent disks (RAID) layer that organizes the storage devices within the storage array as a plurality of RAID groups. Configuration information is stored as a cluster database. The configuration information identifies the RAID groups associated with the storage devices. Each RAID group is associated with a plurality of segments and each segment has a different RAID configuration.
Abstract:
The present invention is a method for accelerating proxy Input/Output (proxyI/O). The method includes the step of receiving a command at a primary target storage system. The primary target storage system may be part of a clustered storage array. The command may be a command which was transmitted by an initiator system via a storage area network, and may include a request for data. The method further includes the step of forwarding the command to a session layer of the primary target storage system. Further, when a virtualization layer of the primary target storage system determines that a portion of the data requested in the data request is not stored by the primary target storage system, but is stored by a proxy target storage system included in the plurality of storage systems, the method further includes providing a proxyIO request to a proxy initiator of the primary target storage system. Further, the method may further include, based on the proxyIO request, generating a proxyDataIn request and providing the proxyDataIn request to an I/O controller for the primary target storage system.
Abstract:
A policy framework is maintained on the computing device, and the computing device communicates with a policy server of an enterprise network over a network to receive a set of policy instructions. The policy instructions are executed through the policy framework in order to implement one or more policies that control the mobile computing device's access to resources of the enterprise network.
Abstract:
Systems and methods that allow operators to configure how files and directories are placed within file system views into a storage system, and how these configured file placements are performed by the distributed system. Possible features include a mechanism by which the desired placement of files and directories can be specified, a mechanism by which the placement goals can be realized in a given topology of a distributed system, and a mechanism by which changes to the placement of objects can applied retroactively. The disclosed embodiments may be able to scale to managing hundreds of billions of files spanning thousands of file system views, especially in the presence of disconnected operation.
Abstract:
Disclosed are systems, computer-readable mediums, and methods for efficiency sets in a distributed system. A first efficiency set is determined for a first volume of data. Determining the first efficiency set includes selecting block identifiers for data blocks of the first volume, where each block identifier is used to access a particular data block corresponding to the first volume. Determining the first efficiency set further includes applying a mask to the selected block identifiers to mask at least one bit of each selected block identifier. The first efficiency set is compared to a second efficiency set for a second data store, and based on the comparison, an amount of unique data blocks of the first volume is approximated.