Data storage methods and systems
AssigneesQatar Foundation for Education, Science and Community Development, Qatar University
InventorsQutaibah Malluhi, Naram Mhaisen
Life of this patent
Estimating the term…
Abstract
Data storage methods and systems for use with multiple cloud storage systems. The methods and systems use passive metadata files which are stored on cloud storage systems to eliminate the risk of a data conflict when data is being written to the multi-cloud storage system. The methods and systems enable a multi-cloud storage system to function safely without data corruption or loss due to potential conflicts. The methods and systems achieve this without the need for a central control server and without the need for the cloud storage systems or the clients to communicate with one another.
Claims20
A data storage method for storing a data file across a plurality of storage nodes, the method comprising:
- a) partitioning the data file into a plurality of data parts;
- b) selecting a data part of the plurality of data parts;
- c) generating a lock file corresponding to the data part, the lock file comprising an identifier which identifies the data part;
- d) selecting a storage node of the plurality of storage nodes;
- e) sending a lock file query to the storage node, the lock file query requesting the storage node to return a lock file query response which is indicative of whether or not the storage node already stores a lock file comprising an identifier which identifies the data part;
- f) receiving the lock file query response from the storage node and,
- if the lock file query response indicates that the storage node does not already store a lock file comprising an identifier which identifies the data part:
- uploading the lock file to the storage node;
- uploading the data part to the storage node;
- and
- sending a delete lock file instruction to the storage node to instruct the storage node to delete the lock file;
- or
- if the lock file query response indicates that the storage node already stores a lock file comprising an identifier which identifies the data part:
- modifying the data part to produce a conflicted data part;
- and
- uploading the conflicted data part to the storage node;
- and
- g) repeating b)-f) for each data part of the plurality of data parts until each storage node stores at least one data part or at least one conflicted data part.
A data storage system comprising:
- a client device which incorporates a processor and a memory, the memory storing executable instructions which, when executed by the processor, cause the client device to:
- a) partition a data file into a plurality of data parts;
- b) select a data part of the plurality of data parts;
- c) generate a lock file corresponding to the data part, the lock file comprising an identifier which identifies the data part;
- d) select a storage node of a plurality of storage nodes;
- e) send a lock file query to the storage node, the lock file query requesting the storage node to return a lock file query response which is indicative of whether or not the storage node already stores a lock file comprising an identifier which identifies the data part;
- f) receive the lock file query response from the storage node and,
- if the lock file query response indicates that the storage node does not already store a lock file comprising an identifier which identifies the data part:
- upload the lock file to the storage node;
- upload the data part to the storage node;
- and
- send a delete lock file instruction to the storage node to instruct the storage node to delete the lock file;
- or
- if the lock file query response indicates that the storage node already stores a lock file comprising an identifier which identifies the data part:
- modify the data part to produce a conflicted data part;
- and
- upload the conflicted data part to the storage node;
- and
- g) repeat b)-f) for each data part of the plurality of data parts until each storage node stores at least one data part or at least one conflicted data part.
A computer-readable medium storing executable instructions which, when executed by a computing device, cause the computing device to:
- a) partition a data file into a plurality of data parts;
- b) select a data part of the plurality of data parts;
- c) generate a lock file corresponding to the data part, the lock file comprising an identifier which identifies the data part;
- d) select a storage node of a plurality of storage nodes;
- e) send a lock file query to the storage node, the lock file query requesting the storage node to return a lock file query response which is indicative of whether or not the storage node already stores a lock file comprising an identifier which identifies the data part;
- f) receive the lock file query response from the storage node and,
- if the lock file query response indicates that the storage node does not already store a lock file comprising an identifier which identifies the data part:
- upload the lock file to the storage node;
- upload the data part to the storage node;
- and
- send a delete lock file instruction to the storage node to instruct the storage node to delete the lock file;
- or
- if the lock file query response indicates that the storage node already stores a lock file comprising an identifier which identifies the data part:
- modify the data part to produce a conflicted data part;
- and
- upload the conflicted data part to the storage node;
- and
- g) repeat b)-f) for each data part of the plurality of data parts until each storage node stores at least one data part or at least one conflicted data part.
Dependencies are inferred from the claim text.