Abstract:
Embodiments of the present disclosure relate to techniques for performing a merge update for a database. In particular, certain embodiments of a method include generating a message comprising a first key and a first transaction associated with the first key, the first transaction indicating a transaction to perform other than for key-value pairs comprising the first key. The method further includes storing the message in a database. The method further includes merging the message with a first key-value pair stored in the database, the first-key value pair comprising the first key. The method further includes performing the first transaction based on merging the message with the first key-value pair.
Abstract:
Exemplary methods, apparatuses, and systems include a proxy intercepting, from a client, a plurality of requests addressed to a first server. The proxy adds an entry for each of the plurality of requests to a data structure. Each entry includes data from one of the plurality of requests. The proxy forwards each of the plurality of requests to the first server. In response to detecting the first server was unavailable or otherwise failed, the proxy reconnects to the first server when the first server recovers or connects to a second server serving as a backup for the first server. The proxy transmits to the first or second server one or more commands using the entries of the data structure to restore state information for the client.
Abstract:
Exemplary methods, apparatuses, and systems generate an encryption key based upon data content of a portion of data to be encrypted by the encryption key. The encryption key is stored as one of a plurality of encryption keys within a subset of storage. Each of the plurality of encryption keys is generated based upon corresponding data content. A checksum representing the plurality of encryption keys is calculated. In response to receiving an input/output (I/O) request for data encrypted by the encryption key, a verification checksum representing the plurality of encryption keys is calculated. The requested data is decrypted using the encryption key in response to verifying the checksum and verification checksum match.
Abstract:
Systems and methods for inspection and repair of VSAN object metadata. A user-space indirection layer is maintained to map logical addresses of VSAN objects to physical memory addresses of their metadata. Commands may then be sent from the user space to distributed object manager (DOM) clients, with the physical addresses of metadata of objects to be inspected. DOM owners thus may bypass their own indirection layers to retrieve object metadata directly from received user commands. Retrieved information is then used to reconstruct and repair object metadata. Repaired metadata may be written back to the VSAN by transmitting a write request containing the physical address at which the repaired metadata is to be written. DOM owners may be placed in a specified mode in which received I/O instructions are ignored unless they are designated as being for metadata repair purposes, such as by including a physical address.
Abstract:
A method for modifying key-value pairs of a B+ tree is provided. The method receives a request to modify a particular key-value pair. Each node of the tree has a modification number. The method traverses a path on the tree from the root node toward the particular node. The traversing includes upon reaching a parent node of the path, acquiring a shared lock on both the parent node and a child node one level below the parent node. Upon determining that the child node is the particular node, the method stores the modification number of the particular node, releases the shared lock on the particular node, compares a current modification number of the node with its stored number, and acquires an exclusive lock on the node if the numbers are the same. The method increments the current modification number of the node and modifies it while in the exclusive lock.
Abstract:
A method of managing storage space of a storage device, wherein the storage device includes a plurality of snapshots of a file, includes the steps of: in response to a request to delete a first snapshot, determining a first amount of time that elapsed between a creation of the first snapshot and a creation of a second snapshot that is a child snapshot of the first snapshot: and after determining the first amount of time, executing a first process to delete the first snapshot over a first time interval, wherein the first time interval is based on the first amount of time.
Abstract:
A method of managing storage space of a storage device containing a plurality of snapshots of a file includes the steps of: recording a first count record that includes a number of data blocks that are owned by a first snapshot; after recording the first count record, recording a second count record that includes a number of data blocks that are both owned by the first snapshot and shared with a second snapshot that is a child snapshot of the first snapshot; and determining an amount of reclaimable space of the first snapshot as the difference between the numbers of data blocks of the first and second count records.
Abstract:
The disclosure herein describes storing data using a capacity data storage tier and a smaller performance data storage tier. The capacity data storage tier includes capacity data storage hardware configured to store log-structured leaf pages (LLPs), and the performance data storage tier includes performance data storage hardware. A virtual address table (VAT) includes a set of virtual address entries referencing the LLPs. A tree-structured index includes index nodes referencing the set of virtual address entries of the VAT. Data to be stored is received, and at least a first portion of metadata associated with the received data is stored in the LLPs using the VAT, and at least a second portion of metadata associated with the received data is stored in the performance data storage tier. The architecture reduces space usage of the performance data storage tier.
Abstract:
The location of resources for file services are located within the same site, thereby eliminating or reducing performance issues caused by cross-site accesses in a stretched cluster environment. A file server placement algorithm initially places file servers at a site based at least in part on host workload and affinity settings, and can perform failover to move the file servers to a different location (e.g., to a different host on the same site or to another site) in the event of a failure of the host where the file servers were initially placed. File servers may be co-located with clients at a location based on client latencies and site workload. Failover support is also provided in the event that the sites in the stretched cluster have different subnet addresses.
Abstract:
System and method for managing snapshots of storage objects in a storage system use a consolidation operation to reduce read amplification for stored snapshots of a storage object that are stored in log segments in the storage system according to a log-structured file system as storage service objects. The consolidation operation involves identifying target log segments among the log segments that include live blocks that are associated with the latest snapshot of the storage object and determining the number of the live blocks included in each of the target log segments. Based on the number of the live blocks in each of the target log segments, candidate consolidation log segments are determined from the target log segments. The live blocks in the candidate consolidation log segments are then consolidated to new log segments, which are uploaded to the storage system as new storage service objects.