Patent application number | Description | Published |
20150149500 | MULTI-LEVEL LOOKUP ARCHITECTURE TO FACILITATE FAILURE RECOVERY - The disclosed embodiments relate to a data storage system that facilitates efficiently recovering from storage device failures. Upon receiving a request to retrieve a data block from the data storage system, the system uses a hash that identifies the data block to look up a bucket and an associated cell containing the data block. Note that the bucket aggregates a large number of data blocks and is located in the associated cell that comprises a set of object storage devices (OSDs). Within the cell, the system uses the bucket to look up an OSD that contains the bucket in a local bucket database (BDB) for the cell. Within the OSD, the system uses the bucket and the hash to look up an offset and a length for the data block in a write-ahead log that stores data blocks for the bucket. Finally, the system returns the data block from the determined offset. | 05-28-2015 |
20150254320 | USING COLOCATION HINTS TO FACILITATE ACCESSING A DISTRIBUTED DATA STORAGE SYSTEM - The disclosed embodiments relate to a system that uses colocation hints to facilitate storing data blocks in a distributed data storage system, which includes a plurality of data centers. During operation, the system receives a write request from a client to write a data block to the distributed data storage system, wherein the write request includes a colocation hint that identifies a colocation group associated with the data block. In response to the write request, the system uses the colocation hint to identify one or more data centers associated with the colocation group. Next, the system writes copies of the data block to the one or more identified data centers. In this way, the system situates copies of data blocks associated with the colocation group in the same data centers when possible. | 09-10-2015 |
20160092124 | APPEND-ONLY STORAGE SYSTEM SUPPORTING OPEN AND CLOSED EXTENTS - The disclosed embodiments relate to the design of an append-only data storage system that stores sets of data blocks in extents that are located in storage devices in the system. During operation of the system, when an extent is in an open state, the system allows data blocks to be appended to the extent, and disallows operations to be performed on the extent that are incompatible with data being concurrently appended to the extent. When the extent becomes full, the system changes the extent from the open state to a closed state. Then, while the extent is in the closed state, the system disallows data blocks to be appended to the extent, and allows operations to be performed on the extent that are incompatible with data being concurrently appended to the extent. | 03-31-2016 |
20160092125 | CONSTRUCTING AN INDEX TO FACILITATE ACCESSING A CLOSED EXTENT IN AN APPEND-ONLY STORAGE SYSTEM - The disclosed embodiments relate to the design of an append-only data storage system that stores sets of data blocks in extents that are located in storage devices in the system. During operation of the system, when an extent becomes full, the system changing the extent from an open state, wherein data can be appended to the extent, to a closed state, wherein data cannot be appended to the extent. Changing the extent from the open state to the closed state includes performing the following operations at one or more storage devices that contain copies of the extent: constructing an index to facilitate accessing data blocks in a copy of the extent contained in the storage device; and appending the index to the copy of the extent in non-volatile storage in the storage device. | 03-31-2016 |
20160092491 | SYNCHRONIZING COPIES OF AN EXTENT IN AN APPEND-ONLY STORAGE SYSTEM - A append-only data storage system that stores sets of data blocks in extents that are located in storage devices. When an extent becomes full, the system changes the extent from an open state, wherein data can be appended to the extent, to a closed state, wherein data cannot be appended to the extent. This change involves performing a synchronization operation by: obtaining a list of data blocks in the extent from each storage device that has a copy of the extent; forming a union of the lists; looking up data blocks from the union in a database that maps data blocks to storage devices and extents to determine which data blocks belong in the extent; and if a copy of the extent is missing data blocks that belong in the extent, performing a remedial action before changing the extent from the open state to the closed state. | 03-31-2016 |
20160110109 | USING SCRATCH EXTENTS TO FACILITATE COPYING OPERATIONS IN AN APPEND-ONLY STORAGE SYSTEM - An append-only data storage system is described that stores sets of data blocks in extents that are located in storage devices. During operation of the system, upon receiving a request to copy an extent from a source storage device to a destination storage device, the system creates a scratch extent on the destination storage device, and associates the scratch extent with a private identifier, whereby the scratch extent can only be accessed through the private identifier. The system uses the private identifier to perform a copying operation that copies the extent from the source storage device to the scratch extent on the destination storage device. After the copying operation is complete and the scratch extent is closed, the system associates the scratch extent with a public identifier, whereby the copy of the extent on the destination storage device becomes publically accessible to other entities in the data storage system. | 04-21-2016 |
20160112293 | USING AN RPC FRAMEWORK TO FACILITATE OUT-OF-BAND DATA TRANSFERS - A system that stores sets of data blocks in extents located in storage devices is described. During operation, a receiving device receives, through an RPC framework, a first call asking to transfer an extent from a sending device to the receiving device. In response, the receiving device opens a port for a data connection that operates outside the RPC framework. The receiving device makes a second call, to the sending device through the RPC framework, asking to stream the extent to the port. The receiving device subsequently receives the extent from the sending device through the port and computes a checksum for the extent. The receiving device also receives a return from the second call, including a checksum for the extent computed by the sending device. If the computed checksum matches the received checksum, the receiving device returns the first call to indicate the transfer operation completed successfully. | 04-21-2016 |
20160139980 | ERASURE-CODING EXTENTS IN AN APPEND-ONLY STORAGE SYSTEM - A data storage system stores sets of data blocks in extents located on storage devices. During operation, the system performs an erasure-coding operation by obtaining a set of source extents, wherein each source extent is stored on a different machine in the data storage system. The system also selects a set of destination machines for storing destination extents, wherein each destination extent is stored on a different destination machine. Next, the system performs the erasure-coding operation by retrieving data from the set of source extents, performing the erasure-coding operation on the retrieved data to produce erasure-coded data, and then writing the erasure-coded data to the set of destination extents on the set of destination machines. Finally, after the erasure-coding operation is complete, the system commits results of the erasure-coding operation to enable the set of destination extents to be accessed in place of the set of source extents. | 05-19-2016 |
20160140201 | FACILITATING DISTRIBUTED DELETES IN A REPLICATED STORAGE SYSTEM - A data storage system includes multiple zones that comprise separate geographic storage locations and store replicated copies of data items. Upon receiving a delete operation at a local zone at a time t | 05-19-2016 |