A significant attribute of software and/or application services operating over a Peer to Peer (P2P) network of computing devices is the ability of a particular service to marshal, direct, manage, secure, and/or utilize the cumulative resources of participating devices in the P2P network. A P2P network can utilize diverse connectivity between participants of the network along with the cumulative bandwidth of the network participants, opposed to conventional centralized network resources where a relatively low number of network server devices provide the core resources to a particular service or application. The P2P network concept is described in the first Internet Request for Comments, RFC I, “Host Software”, dated Apr. 7, 1969 (http://tools.ietf.org/html/rfel).
P2P networks can be utilized for connecting nodes (e.g., network computing devices) via largely ad hoc connections. These ad hoc connections in P2P networks are useful for many purposes, including sharing data content files containing audio, video, or any other digital data format. For example, real-time data related to telephony traffic can be transferred to a network participant utilizing P2P technology.
A pure P2P network does not have the notion of clients or servers, but instead, only equal peer nodes that can simultaneously function as both “clients” and “servers” to other nodes on the network. This model of a network arrangement differs from the traditional client-server model, where communication is directed to and from a central server. A typical example of a file transfer control device that is not P2P is a FTP server. The role of the FTP server and the role of a client device are quite distinct. For example, a client device can initiate a download or upload request from an FTP server, and the FTP server can respond by transferring the requested data.
Various network applications and channels such as Napster™, OpenNAP™, and TRC server channels use a client-server structure for some tasks (e.g., searching) and a P2P structure for others (e.g., P2P data transfer). Networks such as Gnutella™ or Freenet™ use a P2P structure for all tasks, and are sometimes referred to as true P2P networks, although Gnutella™ is greatly facilitated by directory servers that merely inform peers of the network addresses of other peers. More recently, P2P networks have achieved public recognition in the context of an absence of central indexing servers in architectures used for exchanging multimedia files (See http://en.wikipedia.org/wiki/Peer_to_peer).
At present, there are also many different services available for data backup and recovery. Many provide network solutions, where a server computer provides various data recovery services to a client computer over a network. Data backup in this context generally refers to a server storing copies of data so that the additional copies may be used to restore the original data after a data loss event. Backups are useful for disaster recovery, accidental deletion, data corruption, data migration, etc. Unfortunately, as backup systems require complete copies of data, data storage requirements can be considerable. Further, organizing this storage space and managing the backup process is a complicated process. There are also many other concerns which make traditional data backup systems difficult to effectively and affordably implement. (See http://en.wikipedia.org/wiki/Backup).
Therefore, it would be advantageous to have a robust data backup system that can provide all the crucial functions and duties of a centralized backup system but that can further take advantage of the available resources of a P2P network to improve the reliability, efficiency, and operation costs associated with the data backup system. These available P2P resources include diversified disk space, increased network bandwidth, improved CPU clock cycles, and increased system memory. Additionally, these P2P resources include advantageous nonphysical attributes, such as the ability to operate autonomously and to create or discover new solutions to enhance the system and increase overall efficiency and services in real time.
The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate various embodiments of the present invention. In the drawings:
The present invention provides for systems and methods that protect, manage, and simplify a consumer's digital devices. The invention facilitates data recovery, data migration, and device recovery, along with providing other advantageous management and protective services. In various embodiments, the digital devices being protected and/or managed can include desktop computers, server computers, laptops, game consoles, mobile communications devices, navigation devices, vehicle computers, etc.
In accordance with an embodiment of the invention, Data Protection Services (DPS) can protect stored device resources and can ensure that a device's normal usages are not degraded or impinged while in use. Additionally, DPS can protect a user of the device from any and all complexities associated with joining a network and utilizing the network's storage capability (e.g., via Remote Storage Technology). DPS also can insure that a device joining the network can be self configured and that the relationship and/or utilization of a device's resources can be handled without burdening a user with additional associated decisions and configurations. Essentially, the DPS technology resident on a device, can automatically connect the device to a network and allow the device to operate in a manner that a typical user would not be confused by.
Embodiments of the present invention facilitate solutions associated with, but not limited to, at least the following three DPS Services:
In accordance with an embodiment of the invention, Remote Storage Technology (RST) can effectively manage storage and/or communication between devices in a network. RST can provide for methods, processes, and procedures that utilize and/or manage physical storage resources on a network device. Utilizing RST, information stored on a network device is secure, hidden, and immutable within the network. In an embodiment, RST storage functionality does not interfere with a device's own storage needs. With RST, device files can be compressed and/or decompressed, encrypted and/or decrypted, split and/or stitched, erasure coded and/or decoded, packed and/or unpacked, and/or transferred in such a way as to maximize file recovery, availability, and redundancy.
In various embodiments, RST compatible protocols can allow devices in a network to communicate and transfer file fragments in an efficient and secure manner The present invention provides adequate security to protect file fragments being stored on devices or being transferred between devices within the network.
In accordance with an embodiment of the invention, Cloud Management Technology (CMT) can effectively monitor and/or manage all devices in a cloud to maintain healthy and efficient services. In this context, a cloud can be a group of peers in a P2P network having portions of data pertaining to at least one complete data file. CMT functionality is important because devices of a cloud have only a local view of the network system and cannot independently determine what is happening at a global level.
In an embodiment, CMT can monitor key performance metrics to determine which devices are functioning in a reasonable and consistent manner within a network. CMT can further aggregate critical information about a cloud, monitoring it continuously for overall health and/or efficiency, providing alarms and/or alerts when corrective action is necessary. CMT can also automatically facilitate corrective action via self-healing technology or in combination with human management and/or decision making to ensure a cloud is functioning properly.
In various embodiments, CMT compatible protocols can allow Cloud Jobs functions to query the current state of devices within a cloud, synchronize information, and self-heal cloud devices. In an embodiment, Cloud Jobs functions can act independently and/or dependently as well as synchronously and/or asynchronously in accordance with the following four Cloud Jobs management types: independent/synch, independent/async, dependent/synch, and dependent/asynch. In an embodiment, job models can allow server to device, device to device, and device to server communication.
In accordance with an embodiment of the invention, Device Tracking Service (DTS) can serve a dual purpose of deleting private information from a device that is lost or stolen, while also helping to gather information that can assist in tracking the location of that device. DTS can provide for methods, processes, and procedures that identify lost or stolen devices which have been connected to the Internet. In an embodiment, once these devices are detected, DTS can secure and/or delete all user data and then continue to utilize CMT technologies to facilitate directives regarding tracking and recovery of the detected device.
In accordance with an embodiment of the invention, Device Migration Technology (DMT) can prepare every network device's data for migration to new devices. In an embodiment, this can includes all user generated data, all purchased and. installed software, and all user or system created configurations. In an embodiment, DMT can facilitate processes and methods that configure new devices to work with the data from older devices.
The present invention utilizes various technologies and services that harnesses the power of idle electronic devices (including computers) and/or extra space that exists on hard drives all over the world (e.g., in a Peer to Peer (P2P) network). By using resources already present on a network, cost to deliver and/or maintain the above services can be significantly reduced. This technology can also create a networked user community interested in protecting their own computer as well as other computers on the networks.
The present invention can utilize a number of systems and methods that orchestrate highly complex tasks of housekeeping amongst all the devices in a system. These housekeeping tasks can insure that file chunks are spread out to optimize availability and reliability as well as protect the local computational power and performance of each end node and its use by the owner.
In embodiments, various business models, processes, and/methods can be used in conjunction with the technologies and services of the present invention. These business applications can provide unique protections for service clientele, regarding protection and/or management of their devices. In embodiments, these applications can allow for premium and/or deductable pricing structures for various data protection services.
In an exemplary embodiment, a given customer of a data service may purchase backup and/or disaster recovery services by paying a moderate data protection premium. In this embodiment, if the customer requests a recovery of data from the service, the deductable can be charged according to a predetermined pricing structure for the recovery of data. In an embodiment, data protection insurance can be offered to clientele of a data protection service, such that an insurance provider can cover associated data recovery and/or management costs corresponding to a data loss or recovery event for a member of a data insurance policy.
Operating systems compatible with embodiments of the present invention can include, but are not limited to, the following:
Windows XP, SP2 or greater
Windows Communication Foundation
Microsoft NET Framework 3.5 or greater
Data recovery associated with various embodiments of the present invention can include, but are not limited to, backup of the following data:
Backup of personalized user data, settings, and configurations
Backup of FAT, NTFS file systems
Backup local and/or attached hard drives
These data recovery solutions require minimal setup and/or configuration by a user, offer easy-to-use user interfaces, provide for full backup of complete copies of individual data files, and facilitate advanced configurations settings allowing a user to fully customize a recovery process.
Embodiments of the present invention can operate with service oriented architecture (SOA). Under this exemplary architecture, a service can be defined as a large, intrinsically unassociated unit of functionality. A service in this schema does not rely on another service to achieve an outcome and an application can orchestrate the use of various services to achieve a specific functionality. The key to SOA is the use of messaging to orchestrate a use of services. A message sequence can be changed using configuration data without recompiling an application. In embodiments of the present invention, a Control Server can provide services from a single server machine. However, these provided services can be dynamically moved to other server machines. Using SOA the present invention can declare server connections in data rather than code, without recompiling service oriented applications.
The architecture of the present invention can look and/or function as a P2P network with Control Server model as illustrated in
An example control server provides discovery, directory and/or user services. The advantage of a central control server is that it allows this technology to know where a user's data is stored. This becomes optionally advantageous as the peer network grows. As an example, a single control server can manage up to 250,000 users. A new control server can be deployed, once the maximum capacity of a single control server is reached. New installations can then use the new control server to create pods of control servers and/or users. This can reduce exposure to losing the entire network and to system redundancy.
Discovery services can act as a mechanism for finding peers in the network. Traditional P2P networks find peers by flooding the network with a single broadcast message. The present invention can employ the control server to find available (currently connected) peers, without flooding the network. For example, when a peer comes online it can register with the control server. While online, the peer can provide a periodic heartbeat to let the control server know it is still active. Before the peer disconnects it can inform the control server that it is no longer online. In this way, a control server can determine which peers are online without having to flood the network with peer search messages.
The directory services can allow peers to quickly find content by maintaining a list of where content is stored on the network. When a peer needs to find something it can query a control server for the location. Then the peer can initiate a transfer with the other peer with approval and direction from the control server. Content can be transferred from P2P and is not from a server. In this exemplary embodiment, Content can be referenced on the server for quick and easy peer discovery. An alternative method can include a broadcast search of the network for the Content. As certain Content may be unique and/or not duplicated many times on the network it can be advantageous to use directory services to locate content.
User services can allow a user to register with a content server system, process payments and/or manage their account. In addition, to the user services of the present invention can host the following websites:
The present invention uses a P2P network with control server architecture. One solution of the present invention can be object oriented and/or service oriented. Service orientation is an architectural style in which distributed application components are loosely coupled through the use of messages and/or contracts. Service oriented applications describe the messages they interact with through contracts. These contracts are to be expressed in a language and/or format easily understood by other applications, thereby reducing the number of dependencies on component implementation.
In an embodiment, the control server can host services and/or websites that control the P2P network and/or peer communications. Each service can be self contained and/or not dependent on other services. This can allow movement of services between multiple control servers. In one embodiment, registration services and/or websites can be hosted on one server, while backup, restore, profile, statistics, and/or maintenance services can be hosted on another. In an embodiment, a service can be moved to another server without code changes. The following is a listing of available services that can be associated with a control server in accordance with various embodiments of the present invention (See
In an embodiment, a Control Server Table structure can track which files are protected and/or where they are stored (See
In an embodiment, a StoredFiles table can track information related to which files are backed up and/or which machine they live on. Fields can include:
Client side services associated with various embodiments of the present invention include, but are not limited to, the following services (See
In an embodiment, an Explorer Extension can provides a context menu for include/exclude operations on files and/or directories. The Explorer Extension can also provide restore functionality (See
In an embodiment, a Control Panel Applet can allow a user to configure services via an apple interface.
In an embodiment, an Installation process can facilitate installation of the software associated with various embodiments of the present invention.
In an embodiment, an AutoUpdate process can automatically update the software associated with various embodiments of the present invention.
In an embodiment, a restore process can restore a backed-up data to its original state. An exemplary restore process can rely on an Engine, Thread and/or Task architecture and the following file naming convention.
Entire List: gets all files from storage target.
Exclude List: gets all files from storage target except those specified.
Include List: gets all files from a storage target specified in the list.
In an embodiment, the restore process is initiated by the local machine via a restore application. A user can download the restore application when needed. In an embodiment, when the user runs the restore application they can login with a valid user name, password and/or answer at least one security question. The restore process can be initiated via the user account website can then set a value in the user machine's table stating the machine is in “restore mode”.
In an embodiment, a Restore Setup process can be performed once to setup initial restore activities. In an embodiment, a Restore application may not finish before the restore setup process is complete so local data is needed to store maintain information. The following is an example of the Restore Setup process:
In an embodiment, a Restore Shutdown process can include the following:
In an embodiment, an Online Peers Thread updates a StoragePeers table with each peer's online status according to the following process:
In an embodiment, a Files Thread performs the following process for each peer in StoragePeers table:
In an embodiment, a Package Thread performs the following process after connecting to an online peer from a local machine:
In an embodiment, a Package Thread can perform the following process after a Listener Thread is utilized on all peers:
In an embodiment, a Download Thread(s) can perform the following process:
In an embodiment, a Troubleshoot Thread(s) can calculate what went wrong and how to fix the system when for example, the threads as characterized above have not been terminated, and/or the RestoreFilesToPeers, StoragePeers, and/or Packages tables are not empty.
In an embodiment, Query RestoreFiles looks for GUID.N.Contents and/or GUID.0.Metadata records where DownloadComplete is null. In an embodiment a Decode Query thread performs the following process:
In an embodiment, a Decode Task performs the following process:
In an embodiment, Query RestoreFiles looks for GUID.N.Contents records where DownloadComplete AND/OR DecodeComplete are not null. A StitchThread locates a set of GUID.*.Contents files where records can be Download and/or Decode complete. In an embodiment, StitchThread performs the following process:
In an embodiment, a Decrypt Task performs the following process:
In an embodiment, a Decompress Task performs the following process:
In an embodiment, a Reconstruct Thread performs the following process:
In various embodiments, a Logs view and a Progress view user interface can appear as illustrated in
In an embodiment, database backup structures can be stored in a central backup.vdb file stored in a directory. The database can live on peers running the software. A database can also be kept on a central server as well as in GUID.0.Metadata files.
An exemplary ProtectedFiles table structure is shown in
In an embodiment, the ProtectedFiles table can track information related to the files that are backed up on the local machine. Fields can include:
In an embodiment, a Peers table can track a peer name associated with the peer used by the local machine for storage. Fields can include:
In an embodiment, a ProtectedFilesToPeers table creates a many-to-many relationship between ProtectedFiles and/or StoragePeers. Fields can include:
In an embodiment, a RemoteDatabase table structure can track files that can be stored on a remote computer The files can be temporarily on the remote machine and/or can be moved or erased at any time. The path and/or contents of the files can be unrecognizable. Each file can be a fragment of an original file (See
In an embodiment, a StoredFiles table structure can track files stored on the local machine. Fields can include:
In an embodiment, a StoredFilestoPeers table structure can track files stored to peer's local machine. Fields can include:
In an embodiment, a Contents file contains content of the original file and/or takes the form GUID.N.M.Contents, where:
In an embodiment, a Metadata file contains Version, Contents Hash, Hash Type, Compression Type, Encryption Type, Source File Info, Access Control List, Split Count, Source Count, Erasure Count, Erasure Count Padding, and/or Split Padding. In short, the Metadata file contains the bookkeeping related to the Contents file. It takes the form GUID.N.M.Metadata, where:
In an embodiment, a Package can be a container used to make transfers more efficient by avoiding many small file transfers. A package can be sent to a single destination. Once files are protected the packages can get smaller and/or can contain related files. A peer maintenance task can check local machines for overlap and/or take action. Along with each Package the present invention can have a sister file with the same GUID and/or a .Manifest extension.
The Package structure can consist of repeating variable length records that include:
Package1
In an exemplary embodiment, a Package1 is a container used to make transfers more efficient by avoiding many small file transfers. Package1 can be used for large files. The format is the same and/or substantially similar to the Package described above, however this embodiment of the present technology uses the Package1 extension to keep small and/or Large File Threads from tripping over each other. When a Package1 file is ready for transport it is changed to Package.
In an exemplary embodiment, a Package2 is a container used for small files. The format is the same and/or substantially similar to the Package described above, however this embodiment of the present technology uses the Package2 extension to keep small and/or Large File Threads from tripping over each other. When a Package2 file is ready for transport it can be changed to Package.
In an embodiment, a Manifest can contain bookkeeping information about individual files within the related package. After the Package is successfully sent to a storage peer the Manifest is uploaded to the control server. An example Manifest is illustrated in
In an embodiment, Using is a transitional extension used to identify files in transition from one state to another. For instance, when a file is being compressed it can be renamed to Using. Likewise when decompressing and/or for other file level operations.
In an embodiment, a RestoreRequest, contains information about a source machine that a storage machine can use to return packages of files during the restore process.
In an embodiment of the invention a Backup process, is a scanner that can run on a Small File and Large File Threads traversing a disks directory structure looking for files that need to be protected. In one embodiment, the Backup Process is completed via a scanning model for FAT32. In another embodiment a scanning model for NTFS can be included to take advantage of the NTFS Change Journal (a.k.a. USN Journal).
In an embodiment, at least two file thread types can be used to process the files. For example one file thread can be for large files >5 Mb and one file thread can be for small files <=5 Mb. Large files can take much longer to process, which can cause the process to slow. Also, large files require some special handling at times.
In an embodiment, the erasure code padding, compressed, encrypted, and split file size cannot be calculated, therefore the contents of the file are processed to packaging first. Then, the metadata file is updated and processed the same way except hard coded values for the hash type, encryption type, erasure code counts, and compression counts are used. A protected file record can be added after the contents and metadata are packaged.
In an embodiment, the Large File Thread can work in a substantially similar way as the Small File Thread except the protected file record can be added after the file is acquired and updated at different stages along the way. In this embodiment, if the thread is interrupted, recovery is possible mid-process and resources are not wasted in starting over. An example task overview can include a working directory for files being processed. The working file object can be used here to store and transport data about the file and process. It can contain a storage file object which holds processing info, status and file metadata. It can also contain a protected file record that interacts with the user database.
In an embodiment, an exemplary Acquire Contents process can get the real disk-free space for a given drive. If the free space is less than the required buffer, the process will do nothing with this task and either determine if another drive has more free space and use that drive for temporary files, or put the thread to sleep for a predetermined number of minutes. This effectively gives a Transfer thread time to send files making space on the drive.
In an embodiment, if adequate space is available, the file can be acquired in accordance with the following example process:
in this example process, the file name can be changed but the contents are maintained the same; the data copied and collected.
An example Compress Contents process can include the following steps:
An example Encrypt Contents process can include the following steps:
An example Split File process can include the following steps:
The single original file can be represented on disk as N split files.
An example Erasure Code File process can include the following steps:
After GUID.N-1.0.Contents files are erasure coded the original file can be located on disk as N*(X+Y) file fragments (See
An example Process Metadata process creates a GUID.0.0.Metadata file and store (See
Compress
See Compress Contents above.
Encrypt
See Encrypt Contents above.
Erasure Code
Use fixed Erasure Code ratio of 4:4
An example Package File process can include acquisition of a list of available Packages not awaiting transfer and looping though the list of packages placing one chunk in each package. If the list of Packages is less than the number of total chunks (split and erasure code), a new Package can be created for each thereafter. When a chunk is added to the Package, data regarding the chunk is added to the Manifest. The following is added to the end of the Package:
Then the Manifest is updated, and if the Package is over 1 Mb it is moved with the Manifest to the Outgoing directory.
In an embodiment, when a Package is in process and not sitting in the outgoing directory awaiting transfer it can have one of two file extensions, .Package1 and .Package2 depending on if it is being processed by the Small File or Large File Thread respectively. This is done so that the threads do not collide. When the Package is moved to an Outgoing Folder, the “1” and “2” signifiers are truncated.
In an embodiment, when Packages are “old”, for example a set time period which can be over one hour old, they can be moved to the Outgoing Directory regardless of size. Cloud Maintenance Algorithms can handle balancing the machine so that the storage peer is not overloaded for this source.
An example Package Transfer process can include the following steps:
Although in certain embodiments it can be advantageous to distribute to the widest audience of storage peers as possible, in alternative embodiments it be beneficial to keep the target list smaller. For example, it can be more practical to have a single file fragment on a storage machine rather than a hundred fragments. In accordance with an embodiment of the invention a threshold limit can be set where this is impractical.
The remote peer receives the transferred file as follows:
In an embodiment, the remote peer can unpack the packages and update its records as follows:
In an embodiment, GUID.N.M.Contents and GUID.0.M.Metadata are created and distributed to the Cloud. Detect file is of interest using available Include, Exclude, and Always Exclude tables, created at the time of the Install. Include table contains directories that can recurse into files. Always Exclude can contain directories to calculate at install which files should not be included in a scan, e.g., temp directories, and system directories. The Exclude table can contain directories that the user can chose to not back up. The Scanner invoked via the Small File Thread looks at files <5 Mb and the Scanner invoked via the Large File Thread looks at files >=5 Mb. The Scanner invokes events that the Small and/or Large File Threads then handle accordingly.
In an embodiment, a Protect New File process can include, but is not limited to, the following steps:
In an embodiment, GUID.0.M.Metadata is created and distributed to the Cloud and creates a Protected File Record referencing the original file via an alias. An example Protecting Duplicate File process can include the following steps:
In an embodiment, GUID.N.M.Contents and GUTD.0.M.Metadata are distributed to the Cloud. Previous GUID.N.M.Contents and GUID.0.M.Metadata can be orphaned in the Cloud. In another embodiment a NTFS change journal can be used to reduce overhead. An example Protecting Content Changes process can include the following steps:
In an embodiment, GUID.0.Metadata is created and distributed to the Cloud. In another embodiment, previous GUID.0.M.Metadata can be orphaned in the Cloud. An example Protecting File Moved or Name Changed process can include, but is not limited to, the following steps:
In an embodiment, GUID.0.Metadata is created and distributed to the Cloud. In another embodiment, previous GUID.0.M.Metadata is orphaned in the Cloud. An example protecting metadata changes process can include, but is not limited to, the following steps:
Editing and/or Deployment
In an embodiment, a backup database can consist of BackupDefinition.VDB and/or vdc3 files. This can be an empty database used for definition purposes. Additionally a BackupDefinition.xml can be used to create a real working database.
Modifications to the database can be made in the BackupDefinition.VDB using the Data Builder utility by the following exemplary steps:
In an embodiment, a File Decay process occurs when a file's chunk count degrades to a level putting a successful restoration in jeopardy. Several things can happen that reduce the chunks stored on the Cloud. In some situations, reduction can be anticipated by the user, e.g., the chunks stored on the Cloud may be reduced in the Erase Ahead process. In other instances there is no prior knowledge, for instance, when a machine dies. In either case the software can be enabled to do the following:
In an embodiment, when a machine is restored from M1 to M2 it can create a situation where the same file is present on multiple machines. Depending on how this matter is handled, this situation can dictate whether a copy job is needed. If a copy job is needed, then it can occur by the following exemplary steps:
In various embodiments, Orphans occur when chunks on the Cloud are not associated with an original file on a source computer. There are many ways an Orphan can be created, such as when files are caught in working folders and outgoing/incoming folders, when a machine is uninstalled, when a file is changed, and/or when a file is deleted. Irrespective of how Orphans are created they can be handled by a substantially similar process, for example, the following steps can be employed:
No matter how a file is orphaned the software is enabled to do the following:
In various embodiments, storage is under weighted on too many machines, very few files are stored on a lot of machines.
In other embodiments, storage is over weighted on too few machines, lots of files are stored on a few machines.
In other embodiment, the overall system process can be carried out as depicted in
In an embodiment, a server process can include, but is not limited to, the following:
In an embodiment, a client process can include, but is not limited to, the following:
CloudJobSpec[ ] GetJob( )
In an embodiment a user calls a CloudJobSpec[ ] GetJob( )method to get new jobs. The method returns 1 or more CloudJobSpecs. The server queries the CloudJobs table looking for jobs for this peer. If none found it creates and returns a NothingToDo job.
SetJob(BaseJobObject)
In an embodiment a user calls a SetJob(BaseJobObject) method when the job is complete, returning the modified BaseJobObject. User cleans up any residual information. The server receives the JobObject
JobSpec
A container for passing a BaseCloudJob object to the User
Properties
String ObjectType—fully qualified job object type. E.g. GrayGrapes.Maintenance.NothingToDo
UInt JobPriority—the priority of this job
Byte[ ] SerializedObject—array of bytes containing the serialized version of ObjectType
Methods
BaseCloudJob GetCloudJobObject( )—creates an instance of the CloudJob object
Contains all the data and/or methods to perform a job on a specific client.
ICloudJob
Interface definition of a CloudJob containing the following methods:
DoServerWork( )—Server side execution—performs the server work to determine if a job is and/or create the job and/or CloudJobs record.
DoClientWork( )—Client side execution—performs the client work to process a job. The client is free to do just about anything within this method
ProcessReturn( )—Server side execution—performs and/or post client processing. This may include creating more jobs
Serialize( )—serializes the object Deserialize( )—deserializes the object
BaseCloudJob
Implement ICloudJob and/or provides default handlers for the methods described above.
Derived Jobs
Provide Jobs specific functionality for the methods above.
NothingToDo
When there is nothing for a peer to do CS returns this object.
DoServerWork( )—returns all done
DoClientWor( )—returns all done
ProcessReturn( )—returns all done
VerifySource
DoServerWork( )—generates a list (ServerList) of files (with associated chunk count and/or storage machineids) filtered by the source MachinelD.
DoClientWork( )—verifies ServerList with ProtectedFiles record information. If the User can process the difference immediately it should otherwise put the difference in list (DiffList) to return to the server.
ProcessReturn( )—process the DiffList
VerifyStorage
DoServerWork( )—generate a list (ServerList) of files filtered by storage MachineID and/or source MachineID.
DoClientWork( )—verifies ServerList with RemoteFile record information. If the User can process the difference immediately it should otherwise put the difference in list (DiffList) to return to the server. The object should allow processing for one or more source peers to be verified. The limitation can be the amount of data from the server.
RepairFiles
DoServerWork( )—generates a list (ServerList) of files filtered by source MachineID that is to be backed up again because the user's chunks count is getting critically low.
DoClientWork( )—find the ProtectedFile record associated with each file in ServerList and/or remove the record. The next scan cycle can back up the file. Move ServerList to the OrphanList as the present invention processes each item so the server can orphan the files during ProcessReturn( ).
ProcessReturn( )—orphans the files contained in the OrphanList
In an embodiment this table contains all the information to initiate and/or terminate a peer job (See
In an embodiment, a drive used for backup, restore and/or storage purposes can contain the following directory structure:
In an embodiment, a StoragePeers table can track the unique peer name of the peer used by the local machine for storage. Fields can include, but are not limited to:
In an embodiment, a RemoteFiles table structure can track files stored on the local machine. Fields can include, but are not limited to:
In an embodiment, a SourcePeers table can track the unique peer name of the peer that owns the files stored by the local machine. Fields can include, but are not limited to:
In an embodiment, a RestoreFiles table can track information related to every file that is being restored on LM. StorageName can be unique and/or take the form GUID.N.Contents or GUID.0.Metadata. Our scanning processes can make intelligent decisions about when enough file fragments have been downloaded. All bold fields are. Fields can include, but are not limited to:
RestoreFilesToStoragePeers
In an embodiment, a StoragePeers table can track information related to every peer the restore process encounters that have completed uploading files to the local machine or are\recently have been available to request files from. As the restore process runs it can update this table, inserting information returned from a call to the Control Server (GctOnlineStorageTargets exposed by the Restore Service) and/or removing information relating to peers that are no longer available to request files from. Information stored in this table is never removed once it has been altered from its initial state and/or is to be used as statistical data.
While various embodiments of the invention have been illustrated and described, many changes can be made in accordance with other embodiments of the present invention. Accordingly, the scope of the invention is not limited by the disclosure of any particular embodiment.
This application claims benefit of priority under 35 U.S. 119(e) to U.S. Provisional Application No. 61/105,371, filed Oct. 14, 2008, and incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61105371 | Oct 2008 | US |