Systems and methods for distributed storage
First Claim
1. A method for distributed storage using a plurality of computing devices communicatively coupled via a network, comprising:
- storing an electronic file in a local storage layer of one of the plurality of computing devices;
asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices, in portions, over the network to others of the plurality of computing devices such that the electronic file is stored across the other computing devices in a distributed storage layer;
asynchronously transmitting the electronic file stored in the distributed storage layer over the network to a cloud storage layer such that the electronic file is mirrored in the cloud storage layer;
storing in the local storage layer of each of the plurality of computing devices, for each electronic file stored in the distributed storage layer, metadata having pointers to locations of the portions the electronic files stored in the local storage layer and distributed storage layer,wherein asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices includes;
partitioning the electronic file into fixed or variable sized portions;
hashing the portions onto the storage devices of the other computing devices, via the network;
updating the metadata to include pointers to the hashed portions'"'"' locations; and
transmitting, via the network, the metadata to the other computing devices using a gossip protocol; and
storing and retrieving an edited version of the electronic file, wherein storing includes, at one of the plurality of computing devices;
comparing the edited version with the electronic file to generate a diff file, the diff file containing differences between the edited version and the electronic file;
partitioning the diff file into fixed or variable sized portions;
hashing the portions of the diff file onto the storage devices of the other computing devices, via the network;
updating the metadata to include pointers to the locations of the hashed portions of the diff file;
transmitting, via the network, the metadata to the other computing devices using a gossip protocol, andwherein retrieving the edited version at one of the plurality of computing devices, comprises;
determining locations of portions of the electronic file and portions of the diff file from the metadata;
retrieving the portions of the electronic file and the diff file from said locations, via the network; and
assembling the edited version based on the retrieved portions of the electronic file and the diff file on the local storage layer.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques for distributed storage using a plurality of computing devices connected to a network can include storing an electronic file in a local storage layer of one of the computing devices. The stored electronic file can be asymmetrically transmitted, in portions, over the network to other computing devices to store the file across the other computing devices in a distributed storage layer. The electronic file can be asynchronously transmitted over the network to a cloud storage layer such that the electronic file is mirrored in the cloud storage layer. The local storage layer of each computing device can store, for each electronic file stored in the distributed storage layer, metadata having pointers to locations of the portions the electronic files stored in the local storage layer and distributed storage layer. The electronic files stored in the distributed storage layer can be displayed as stored in a single logical drive.
27 Citations
24 Claims
-
1. A method for distributed storage using a plurality of computing devices communicatively coupled via a network, comprising:
-
storing an electronic file in a local storage layer of one of the plurality of computing devices; asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices, in portions, over the network to others of the plurality of computing devices such that the electronic file is stored across the other computing devices in a distributed storage layer; asynchronously transmitting the electronic file stored in the distributed storage layer over the network to a cloud storage layer such that the electronic file is mirrored in the cloud storage layer; storing in the local storage layer of each of the plurality of computing devices, for each electronic file stored in the distributed storage layer, metadata having pointers to locations of the portions the electronic files stored in the local storage layer and distributed storage layer, wherein asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices includes; partitioning the electronic file into fixed or variable sized portions; hashing the portions onto the storage devices of the other computing devices, via the network; updating the metadata to include pointers to the hashed portions'"'"' locations; and transmitting, via the network, the metadata to the other computing devices using a gossip protocol; and storing and retrieving an edited version of the electronic file, wherein storing includes, at one of the plurality of computing devices; comparing the edited version with the electronic file to generate a diff file, the diff file containing differences between the edited version and the electronic file; partitioning the diff file into fixed or variable sized portions; hashing the portions of the diff file onto the storage devices of the other computing devices, via the network; updating the metadata to include pointers to the locations of the hashed portions of the diff file; transmitting, via the network, the metadata to the other computing devices using a gossip protocol, and wherein retrieving the edited version at one of the plurality of computing devices, comprises; determining locations of portions of the electronic file and portions of the diff file from the metadata; retrieving the portions of the electronic file and the diff file from said locations, via the network; and assembling the edited version based on the retrieved portions of the electronic file and the diff file on the local storage layer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory computer-readable medium containing computer-executable instructions that when executed cause one or more computer devices to perform a method for distributed storage using a plurality of computing devices communicatively coupled via a network, comprising:
-
storing an electronic file in a local storage layer of one of the plurality of computing devices; asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices, in portions, over the network to others of the plurality of computing devices such that the electronic file is stored across the other computing devices in a distributed storage layer; asynchronously transmitting the electronic file stored in the distributed storage layer over the network to a cloud storage layer such that the electronic file is mirrored in the cloud storage layer; storing in the local storage layer of each of the plurality of computing devices, for each electronic file stored in the distributed storage layer, metadata having pointers to locations of the portions the electronic files stored in the local storage layer and distributed storage layer, wherein asynchronously transmitting the electronic file stored in the local storage layer of one of the plurality of computing devices includes; partitioning the electronic file into fixed or variable sized portions; hashing the portions onto the storage devices of the other computing devices, via the network; updating the metadata to include pointers to the hashed portions'"'"' locations; and transmitting, via the network, the metadata to the other computing devices using a gossip protocol; and storing and retrieving an edited version of the electronic file, wherein storing includes, at one of the plurality of computing devices; comparing the edited version with the electronic file to generate a diff file, the diff file containing differences between the edited version and the electronic file; partitioning the diff file into fixed or variable sized portions; hashing the portions of the diff file onto the storage devices of the other computing devices, via the network; updating the metadata to include pointers to the locations of the hashed portions of the diff file; transmitting, via the network, the metadata to the other computing devices using a gossip protocol, and wherein retrieving the edited version at one of the plurality of computing devices, comprises; determining locations of portions of the electronic file and portions of the diff file from the metadata; retrieving the portions of the electronic file and the diff file from said locations, via the network; and assembling the edited version based on the retrieved portions of the electronic file and the diff file on the local storage layer. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A system for distributed storage, comprising:
-
a plurality of computing devices communicatively coupled with a network, each computing device having associated therewith one or more processors and one or more storage devices; a distributed storage layer including a portion of the one or more storage devices of each of the plurality of computing devices; a local storage layer defined on the one or more storage devices of each computing device having stored thereon metadata having pointers to locations of portions of electronic files stored in the local storage layer and distributed storage layer; wherein the one or more processors of each computing device are configured to communicate, via the network, with others of the one or more computing devices such that portions of an electronic file stored in the local storage layer of a first computing device are asynchronously stored across the other computing devices in the distributed storage layer; wherein the one or more processors of each computing device are configured to communicate, via the network, with a cloud storage layer such that the electronic file stored in the distributed storage layer is asynchronously mirrored in the cloud layer, wherein the one or more processors of the first computing device are further configured to partition the electronic file into fixed or variable sized portions, hash the portions onto the storage devices of the other computing devices, via the network, update the metadata to include pointers to the hashed portions'"'"' locations, and transmit, via the network, the metadata to the other computing devices using a gossip protocol such that the portions of the electronic file are asynchronously stored across the other computing devices in the distributed storage layer, and wherein the one or more processors of the first computing device are further configured to store an edited version of the electronic file, wherein said storing includes; comparing the edited version with the electronic file to generate a diff file, the diff file containing differences between the edited version and the electronic file; partitioning the diff file into fixed or variable sized portions; hashing the portions of the diff file onto the storage devices of the other computing devices, via the network; updating the metadata to include pointers to the locations of the hashed portions of the diff file; transmitting, via the network, the metadata to the other computing devices using a gossip protocol; and and wherein the one or more processors of a second computing device are configured to retrieve the edited version of the electronic file, wherein said retrieving the edited version comprises; determining locations of portions of the electronic file and portions of the diff file from the metadata; retrieving the portions of the electronic file and the diff file from said locations, via the network; and assembling the edited version based on the retrieved portions of the electronic file and the diff file on the local storage layer. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
-
Specification