Patent ID: 8849759
Filing Date: 2014-09-30
Classification: G06F

Abstract:
1. A computer implemented method for enabling file-oriented shared concurrent read/write access to versioned objects in an object storage system, the object storage system including a plurality of storage servers; the method comprising: expressing all updates to versioned objects as a transactional manifest submitted using an object interface; wherein each transactional manifest includes a unique version identifier which can be generated by any of the plurality of storage servers without requiring global synchronization with other storage servers; wherein the unique version identifier incorporates a timestamp of a transaction and an identifier of a source storage server; the unique version identifier references a separately stored payload solely with a chunk identifier formed as a cryptographic hash of the payload, with no reference to storage servers holding the payload; and the unique version identifier can be applied by each receiving storage server in any order to produce version manifests which will represent the same object payload and metadata on all receiving storage servers once the full set of transactional manifests created by any node during a specific time period has been applied; and maintaining a pending manifest to support file-oriented access in a same context as the version manifests for an object, wherein the pending manifest is a file which: exports a file under shared concurrent read/write access NAS semantics while implementing it as a local file which encodes: a set of blocks which have been modified using file operations since the pending manifest was created, but which have not been collected into a chunk for use by the object storage system; a set of chunk references which have been created to represent portions of the file modified using file operations since the pending manifest was created, but which have not been published in a transactional manifest modifying the object; and a reference to the version of the object to be modified, wherein this reference version is the source for all payload not otherwise defined in the pending manifest; and is translated to a transactional manifest in accordance with object storage systems create once rules to be applied to the object with a timestamp based on the creation or last synchronization of the pending manifest when the pending manifest is fully closed by all shared file access clients or is otherwise synchronized.