US20190108103A9 - Computing device replication using file system change detection methods and systems - Google Patents

Computing device replication using file system change detection methods and systems Download PDF

Info

Publication number
US20190108103A9
US20190108103A9 US14/977,614 US201514977614A US2019108103A9 US 20190108103 A9 US20190108103 A9 US 20190108103A9 US 201514977614 A US201514977614 A US 201514977614A US 2019108103 A9 US2019108103 A9 US 2019108103A9
Authority
US
United States
Prior art keywords
file
mft
computing device
log
file system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/977,614
Other versions
US20170177452A1 (en
Inventor
Nitin Parab
Joshua Schwartz
Shashi Sharma
Aaron Brown
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Axci (an Abc) LLC
Efolder Inc
Original Assignee
Efolder Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Efolder Inc filed Critical Efolder Inc
Priority to US14/977,614 priority Critical patent/US20190108103A9/en
Assigned to AXCIENT, INC. reassignment AXCIENT, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PARAB, NITIN, BROWN, AARON, SCHWARTZ, JOSHUA, SHARMA, SHASHI
Assigned to STRUCTURED ALPHA LP reassignment STRUCTURED ALPHA LP SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AXCIENT, INC.
Assigned to SILVER LAKE WATERMAN FUND, L.P. reassignment SILVER LAKE WATERMAN FUND, L.P. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AXCIENT, INC.
Publication of US20170177452A1 publication Critical patent/US20170177452A1/en
Assigned to AXCIENT, INC. reassignment AXCIENT, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: SILVER LAKE WATERMAN FUND, L.P.
Assigned to AXCIENT, INC. reassignment AXCIENT, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: STRUCTURED ALPHA LP
Assigned to AXCIENT HOLDINGS, LLC reassignment AXCIENT HOLDINGS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AXCI (AN ABC) LLC
Assigned to AXCI (AN ABC) LLC reassignment AXCI (AN ABC) LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AXCIENT, INC.
Assigned to EFOLDER, INC. reassignment EFOLDER, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AXCIENT HOLDINGS, LLC
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EFOLDER, INC.
Publication of US20190108103A9 publication Critical patent/US20190108103A9/en
Assigned to MUFG UNION BANK, N.A. reassignment MUFG UNION BANK, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EFOLDER, INC.
Assigned to EFOLDER, INC. reassignment EFOLDER, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: WELLS FARGO BANK, NATIONAL ASSOCIATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • G06F17/30088
    • G06F17/30091
    • G06F17/30117
    • G06F17/30368
    • G06F17/30371
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Definitions

  • the present technology may be generally described as providing systems and methods for efficiently detecting both metadata and file data changes in file systems, and efficiently replicating the file system metadata changes from client system to the backup server system by accessing the on disk data structures of the client systems file system directly and comparing two point in time copies of these data structures.
  • the present technology provides efficient methods and systems for determining file system changes on a client computing device.
  • the solution leverages knowledge obtained from master file tables used by the new technology file system (NTFS), which records changes to objects in the file system such as directories and files.
  • NTFS new technology file system
  • the present technology can identify changes in a file system over time without having to resort to walking the entire file system, such as with a file system scan operation.
  • file system information other than the user file data is often referred to as file system metadata and (b) in file systems the types of changes include (but are not limited to) namespace changes like new file or directory create/delete/rename/link or file/directory metadata changes like access permission changes or the file data change.
  • the present technology may be directed to methods to detect the list of files that changed and file data change that comprise: (a) reading a disk of a client computing device by a replication agent of a replication server by sequentially walking the inode table of a file system of the client computing device for the two point in time copies of the file system; (b) comparing the first table of inodes of the file system of the client computing device to a second table of inodes of the file system of the client computing device; (c) detecting changed inodes between the first set of inodes and the second set of inodes; (d) translating the changed inodes data stream offsets into on disk locations; (e) determining blocks changed in two versions of the data stream by reading and comparing; (f) generating a file data change log generating a disk image of the client computing device that is capable of being mounted by a hypervisor so as to create a virtual machine using the file system backup and the blocks of changed data.
  • the present technology may be directed to walk through all the inodes starting from index zero to max allocated and compare two inodes at same index in two different versions of the file system to identify changes in a file system name space over time. This method is much faster than performing a full directory walk of two versions of the file system to compare directory listings of each directory.
  • the present technology may be directed to methods that comprise: (a) obtaining pairs of master file table (MFT) entries in file identifier numerical order, the pairs of MFT entries being obtained from a first snapshot of a client computing device and a second snapshot of the client computing device; (b) creating a record for a second MFT entry of a pair of MFT entries if a first of the pair of MFT entries is invalid and the second MFT entry is valid; (c) deleting a record for a first MFT entry of the pair of MFT entries if the first of the pair of MFT entries is valid and the second MFT entry is invalid; (d) wherein if both the first MFT entry and the second MFT entry are valid and generation numbers of the first and second MFT entries refer to a same object, the method further comprises obtaining name attributes for each of the first and second MFT entries; (e) further wherein: (i) if name attributes from the first MFT entry do not exist in the second MFT entry, an unlink record is generated; and
  • the present technology may be directed to log the namespace changes detected, as described previously, in a metadata log and replay each operation in the log on the backup server.
  • the backup server could be a server or cloud a data store.
  • no metadata log is required or applied to backup server.
  • the metadata and namespace changes are replicated by copying all the disk blocks of the file system that are used to store the file system metadata and namespace information.
  • most file systems support cloning of just the file system namespace and metadata without the file data.
  • the replication client can be configured to use existing file system cloning tools (like ntfsclone for NTFS) to replicate full file system namespace and metadata from the client computing device to the replication appliance. By using NTFSclone a NTFS shell volume is generated and saved on the replication appliance, thus keeping the ondisk format the same.
  • FIG. 1 is a flowchart of a method for determining changes in a file system, as well as generating a change record with attributes.
  • FIG. 2 is a flowchart of a method for transmitting changed data to a cloud data center (store) using master file table changes and SHA1 signature maps.
  • FIG. 3 is a flowchart of an example method for determining changes in a secure data stream of an NTFS file system.
  • FIG. 4 is a flowchart of a method of walking inodes of snapshots, transmitting changed data and metadata.
  • FIG. 5 is a flowchart of a method of using master file tables for determining changes in a file system, as well as creating a change log indicative of the changes.
  • FIG. 6 is a flowchart of a method for determining changes in a file system and using the determined changes to locate changed blocks on a disk, as well as creating a bootable disk image.
  • FIG. 7 is a block diagram of an exemplary architecture in which embodiments of the present technology may be practiced.
  • FIG. 8 illustrates an exemplary computing system that may be used to implement embodiments according to the present technology
  • each of the changes results in changes to blocks on the disk of the client computing device, which are referred to as “changed blocks”.
  • changed blocks Once file system changes are deduced, the present technology can translate these file system changes to disk locations, allowing changed blocks of data to be obtained from the client computing device.
  • the changed blocks can be replicated to a cloud data store over a network.
  • the NTFS ondisk format is designed to be a collection of streams/files. Even the metadata about each stream, referred to as an “inode,” is stored in a special stream/file called MFT (Master File Table) as series of entries with the first entry being a master file table entry (MFTEntry) for the MFT file itself.
  • MFTEntry can also be referred to herein as an “inode”. First few MFTEntries in the MFT Table are reserved for special system files.
  • the MFTEntry for a file contains one or more name attributes which specify a file name, parent identifier (such as an inode number or file identifier), a time entry, a sequence number, and a log sequence number—just to name a few.
  • a time entry is a time stamp associated with a change in an inode which is recorded by the NTFS file system.
  • a sequence number can include a numerical identifier that corresponds to a reuse of an inode. For example, if the object associated with an inode no longer exists (such as if it is deleted), the NTFS file system can update the sequence number of the inode if it is reused for a new object.
  • the log sequence can refer to log entries for when the NTFS file system logs anticipated file system operations to objects, the actual changes, and a notation that the operation was completed. Each of these attributes provides clues as to what objects within the file system have actually changed between any two snapshots.
  • NTFS MFTEntry contains the name of the object and also the file identifier (MFTEntry number) of the parent directory.
  • MFTEntry number file identifier
  • NTFS does not allow hard links to directories.
  • objects Using these two properties of NTFS, given a file identifier it is possible to do a reverse lookup of the paths of associated files and/or directories (referred to generally as “objects”) including hard links by simply walking up the parent identifiers for the inodes.
  • objects a reverse lookup of the paths of associated files and/or directories (referred to generally as “objects”) including hard links by simply walking up the parent identifiers for the inodes.
  • a hard link is a directory entry that associates a file name with a file on a file system.
  • An NTFS replication client of the present technology can exploit this feature to replicate changes in file system namespace without a top down scan, which is a scan starting from a root directory.
  • File creation events can be determined by detecting the existence of a new MFTEntry in an MFT table and the entire path of the new file and/or a directory can be located without scanning the whole file system namespace, usually occurring in a top-down manner.
  • cloud data store uses file system metadata to allow pure inode based operations without ordering requirements.
  • a new file and/or directory create operation can be executed by simply creating two entries with key value pairs of ⁇ dir-inode-number+entry-name, child-inode-num> and ⁇ child-inode-num, inode-attr> without requiring the corresponding entries for the full path of the new file and/or directory.
  • a full path like /foo/bar.txt can be created in reverse order (unlike traditional UNIX file systems) or any order. As long as all the create operations are applied for all the parents the file system will eventually be consistent.
  • cloud data store (or a replication appliance) can accept namespace operations in any order and because each MFTEntry of each NTFS file system contains all file names and parent identifiers it is possible to replicate the NTFS namespace to a cloud data store (or a replication appliance) by walking the MFT entries in file identifier order.
  • the replication client walks through the MFT file one MFT entry at a time. For each MFT entry with a create time and/or a modified time after previous replication, the system will send the corresponding create/setattr (set attributes) operation with the parent identifier to the cloud data store (or a replication appliance). It is also possible for the system to determine if the MFT entry obtained got a new hard link (because link count increases) and a new name attribute will exist.
  • the method will comprise a replication client obtaining 102 two master file tables for a client computing device.
  • the first master file table will correspond with a first snapshot and the second master file table will correspond with a second snapshot. These snapshots are obtained at two different points in time.
  • the second snapshot can include a current version of a file system for the client computing device, while the first snapshot is a backup of the client computing device taken at some point in the past.
  • the method will include the replication client obtaining a master file table entry (MFTEntry) for a given file identifier from the first snapshot and the second snapshot.
  • MFTEntry master file table entry
  • this step includes obtaining the MFT tables from each of the first and second snapshots.
  • the replication client reads the MFT tables together as pairs where the first MFT table is of previous version of the file system and second MFT table is the current version of the file system.
  • both MFT tables have a file identifier of “file 1 ” which is the first entry in each of respective MFT tables.
  • the replication client will examine each of these pairs in sequential order such as “file 2 ” from the first MFT table and “file 2 ” from the second MFT table, and so on.
  • the replication client need only walk the MFT tables to deduce changes. The exact details of how these changes can be detected are provided below.
  • An MFT table is comprised of an ordered list of entries referred to as “inodes”.
  • changes to MFT table entries can correspond to changes in a file name, a parent identifier, a time entry, sequence number, log sequence number, and any combinations thereof. These attributes are described in greater detail above.
  • the method includes the replication client generating 104 a create record for MFTEntry- 2 .
  • the method includes the replication client generating 106 a delete record for MFTEntry- 1 .
  • the replication client determines that both MFTEntries refer to same file.
  • the method can include the replication client inspecting the name attributes in both MFTEntries.
  • the method can include replication client generating an unlink record 108 for every NameAttribute from MFTEntry- 1 that does not exist in MFTEntry- 2 .
  • the method can include the replication client generating 110 a link record for every NameAttribute from MFTEntry- 2 that does not exist in MFTEntry- 1 .
  • the method can include the replication client inspecting all other attributes in both MFTEntries. If some attributes are not the same between MFTEntry- 1 and MFTEntry- 2 , the method can include replication client generating a 112 a set-attribute record where attributes are set.
  • the method includes the replication client determining 114 that generation numbers between MFTEntry- 1 and MFTEntry- 2 are different from one another.
  • the method can include replication client generating a link record 110 for every NameAttribute from MFTEntry- 2 illustrated in FIG. 2 .
  • FIG. 2 illustrates an example method of data stream (e.g., file) replication, which occurs once differences are detected between MFTEntry- 1 and MFTEntry- 2 which indicate that an object change (e.g., file or directory) has occurred. For example, if a file name has changed the replication client can determine that a file name property has changed (e.g., a user changed the file name) or that the original file has been replaced by a new file with a different name.
  • a file name property e.g., a user changed the file name
  • the method refers also to replication using SHA1 (e.g., secure hashing) maps of the client computing device to replicate changes over a network connection, as is discussed in U.S. patent application Ser. No. ______, (Attorney Docket No. PA7073US) filed on Dec. 21, 2015, entitled “Cloud Storage using Merkle Trees.”
  • SHA1 secure hashing
  • the method comprises the replication client determining 202 MFT entries with a create time or a modify time which is temporally subsequent to a prior replication (e.g., snapshot).
  • the method includes obtaining 204 a SHA1 signature map for the previous version of the file from a cloud data store, as well as computing 206 a SHA1 signature map for the current version of the file.
  • the method can comprise detecting 208 changed blocks of data using the SHA1 signature maps. Once the changed blocks of data are determined the method can comprise the replication client transmitting 210 all new blocks to the cloud data store.
  • the replication client can use BULK_PUT_BLOCK application programming interface (API).
  • the method includes transmitting 212 the new SHA1 signature map for the file to the cloud data center by the replication client. Note that the actual data blocks are replicated to the cloud data store in an operation that is separate from the process used to transmit the SHA1 signature map.
  • One of the reserved MFTEntry is used for access control lists (ACL) information and is called secure file in an NFTS formatted file system. All ACLs are stored in a data stream in the secure file in a sequential manner. The ACLs in the data stream are indexed by two indices stored in the secure file where one index called SDH maps ‘hash’ of the ACL to the location of the ACL in the data stream and other index called SSI contains mapping from SecurityID security identifier to offset into the secure data where an ACL is stored. This SecurityID is stored in the STANDARD_INFORMATION of the MFTEntry of all files.
  • NTFS stores an ACL only once and every time a new file is created with an ACL, if the ACL is already stored in the secure data stream then the new MFTEntry gets the same SecurityID. If a new ACL which does not already exists in the data stream is created by the system, only then it is stored and it gets appended to the data stream and is assigned a new SecurityID.
  • the replication client will detect change in the size and or update time of the secure file and replicate the changes. In some embodiments, the replication client will utilize metadata that will maintain the same SecurityID as in the source NTFS volume. In some embodiments, the metadata is provided with a new key-value pair as ⁇ SecurityID, ACL> and the SecurityID can be stored in the inode attributes just the way NTFS stores it in MFTEntry.
  • the method can comprise a step of determining 302 if a $Secure data stream has been modified. If so, the method comprises reading 304 the $Secure data stream and obtaining 306 all new ACLs added to the $Secure data stream.
  • the method can comprise reading and parsing 308 $SSI, as well as determining 310 the SecurityID of each of the new ACL in the SSI.
  • the method includes transmitting 312 a change record to the cloud data store which is a vector of the pair ⁇ SecurityID, ACL>.
  • the present technology can be applied to systems and methods that utilize snapshots and differential files for replication of the client computing device.
  • FIG. 4 illustrates an example method for replicating metadata changes for a client computing device.
  • the method includes a scanner of a replication client performing 402 a top-down walk of an entire file system tree (taken from a snapshot) and comparing 404 the file system tree with a previous snapshot to determine namespace changes.
  • the method includes generating 406 a metadata log with the namespace changes.
  • the method comprises the scanner comparing 408 the file modified time for inode pairs to determine list of changed files.
  • the method includes evaluating 410 the file system metadata and namespace (directory hierarchy) in two locations on the appliance.
  • the method further comprises generating 412 a shell NTFS volume image that has all file system metadata (ACLs and even file block map) and namespace (directory hierarchy). No file data is obtained in this step, in some embodiments.
  • the method comprises obtaining differential metadata which stores only the file system name space (directory hierarchy).
  • the method includes the scanner transferring 414 the metadata log to the replication appliance where it is applied to the NTFS shell volume.
  • the method includes performing 416 another top-down walk of NTFS shell volume (via fuse mount for example) and comparing 418 with a previous version of differential metadata.
  • the method includes generating 420 new differential metadata based on the comparison.
  • no metadata log is required or applied to backup server.
  • the metadata and namespace changes are replicated by copying all the disk blocks of the file system that are used to store the file system metadata and namespace information.
  • most file systems support cloning of just the file system namespace and metadata without the file data.
  • the replication client can be configured to use existing file system cloning tools (like ntfsclone for NTFS) to replicate full file system namespace and metadata from the client computing device to the replication appliance. By using NTFSclone a NTFS shell volume is generated and saved on the replication appliance, thus keeping the ondisk format the same.
  • the replication client uses one or more of the following properties/attributes of a NTFS ondisk inode (called MFT entry).
  • MFT entry a NTFS ondisk inode
  • NTFS stores a generation number in the inode that makes it possible to detect reuse of inode for new object (file/directory).
  • NTFS stores object (file/directory) name in the inode itself which makes it possible to detect “rename” operations on inodes.
  • NTFS also stores parent file identifiers of an object (file/directory) in the inode itself which makes it possible to detect “move” operations on inodes.
  • MFT Table Two versions of MFT table are compared for each MFT record and change log is generated as follows:
  • FIG. 5 an example method that is executed by the replication client using the rules set forth above. If the two MFT records are same the replication client does nothing. Again, the comparison includes comparing pairs of MFT entries to one another in a sequential manner (e.g., following inode file identifiers in numerical order from top to bottom).
  • first MFT entry is unused and used in second MFT entry then enter a create entry 502 into a log record. If the first MFT entry is unused in a new MFT table and unused in an older MFT table then create 504 a log entry that reflects a delete operation.
  • a log object (file/dir) is created 506 for the new first MFT entry and the old first MFT entry is deleted.
  • a log entry is created 508 that indicates that the file/directory has changed.
  • the method ignores directory changes and log entries are created only for files. This is due to directories being replicated in other processes, such as when metadata is replicated.
  • MFT record has (same generation number) a different name (or additional name) then a log entry is created 510 that is indicative of a rename.
  • a log entry is created 512 that indicate a move.
  • the backup server can require that change records are addressed by a full file path and not only by inode numbers.
  • the file change log address files using file identifiers.
  • the backup-sender converts the file identifier to a namespace path by opening the file by using file identifier and then performing a getFileInformation operation on the handle to get full path of the file.
  • a change log for this process can be converted or transformed into a “refined log” as follows. For every directory rename or move record, the replication client is configured to perform a full tree walk of a directory and add a “create file” record for all the children files within the directory. If one of the child files already had a “modified file” record, that record is replaced with “create file” record. For every file rename or move record the replication client can add a “create file” record for that file and delete any “modified file” record for that file.
  • a refined log contains only “file data change” records which are either “incremental change” (modify) or “full backup” (create). This refined log is used by the replication client to send FCRs to the appliance.
  • Example code for generating the refined version of the FILE_CHANGE_LOG generated is provided below.
  • the refine log generation is done by a separate program whose input is the DIR_CHANGE_LOG and FILE_CHANGE_LOG and output is REFINED_FILE_CHANGE_LOG.
  • the code specifies:
  • HashMap FILE_LOG read(FILE_CHANGE_LOG)
  • DIR_LOG read(DIR_CHANGE_LOG) for dir in DIR_LOG do //Walk the directory pointed by record for file in dir do //Remove any record that exist in FILE_LOG for this file
  • FILE_LOG.remove(file) //Add file as create record in FILE_LOG
  • FIG. 6 illustrates an example method for determining changes to a file system and using the changes to create a disk image that can be booted by a hypervisor (for example) to instantiate a virtual machine.
  • the disk image can also be booted by a physical device (e.g., bare metal hardware).
  • the method comprises reading 602 a disk of a client computing device by a replication agent of a replication appliance.
  • reading comprises walking a first set of inodes of a file system of the client computing device at a first point in time. Again, these inodes belong to an MFT table for the client computing device. A second set of inodes of a file system backup are also read for the client computing device.
  • the method includes comparing 604 the first set of inodes of the file system of the client computing device to the second set of inodes of the file system backup of the client computing device.
  • the method comprises detecting 606 changed inodes between the first set of inodes and the second set of inodes and translating 608 the changed inodes into namespace locations. Again, this can be accomplished by using file identifiers, which point to locations on the disk where objects within the file system are located.
  • the method can comprise obtaining 610 blocks of changed data using the namespace locations.
  • the method can also include generating 612 a disk image of the client computing device that is capable of being mounted by a hypervisor so as to create a virtual machine using the file system backup and the blocks of changed data.
  • Architecture 700 may include a cloud data store 705 , which can comprise a block store 710 for storing blocks of data for a client computing device 715 .
  • the client computing device 715 is coupled to a replication appliance 720 that employs a replication client 725 (NTFS based) and a scanner 730 .
  • a replication client 725 (NTFS based)
  • a scanner 730 The replication client 725 and scanner 730 are described in many of the embodiments above.
  • a cloud-based computing environment is a resource that typically combines the computational power of a large model of processors and/or that combines the storage capacity of a large model of computer memories or storage devices.
  • systems that provide a cloud resource may be utilized exclusively by their owners, such as GoogleTM or Yahoo!TM; or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources.
  • the cloud may be formed, for example, by a network of servers, with each server (or at least a plurality thereof) providing processor and/or storage resources. These servers may manage workloads provided by multiple users (e.g., cloud resource consumers or other users). Typically, each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depend on the type of business associated with the user.
  • the block store 710 may include a deduplicating block store that stores blocks of data for one or more objects, such as a file, a group of files, or an entire disk. Additionally the block store 710 may comprise Merkle trees that include hash-type representations of objects within the deduplicating block store. That is, for each object (or group of blocks), a Merkle tree exists that represents the blocks of the object.
  • the block store 705 can implement storage for differential backups instead of Merkle trees.
  • the deduplicating block store may include immutable object addressable block storage.
  • the deduplicating block store may form an underlying storage foundation that allows for the storing of blocks of objects.
  • the identifiers of the blocks are a unique representation of the block, generated for example by using a uniform hash function.
  • FIG. 8 illustrates an exemplary computing system 800 that may be used to implement an embodiment of the present technology.
  • the computing system 800 of FIG. 8 includes one or more processors 810 and memory 820 .
  • Main memory 820 stores, in part, instructions and data for execution by processor 810 .
  • Main memory 820 can store the executable code when the system 800 is in operation.
  • the system 800 of FIG. 8 may further include a mass storage device 830 , portable storage medium drive(s) 840 , output devices 850 , user input devices 860 , a graphics display 870 , and other peripheral devices 880 .
  • the system 800 may also comprise network storage 845 .
  • FIG. 8 The components shown in FIG. 8 are depicted as being connected via a single bus 890 .
  • the components may be connected through one or more data transport means.
  • Processor unit 810 and main memory 820 may be connected via a local microprocessor bus, and the mass storage device 830 , peripheral device(s) 880 , portable storage device 840 , and graphics display 870 may be connected via one or more input/output (I/O) buses.
  • I/O input/output
  • Mass storage device 830 which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit 810 . Mass storage device 830 can store the system software for implementing embodiments of the present technology for purposes of loading that software into main memory 820 .
  • Portable storage device 840 operates in conjunction with a portable non-volatile storage medium, such as a floppy disk, compact disk or digital video disc, to input and output data and code to and from the computing system 800 of FIG. 8 .
  • the system software for implementing embodiments of the present technology may be stored on such a portable medium and input to the computing system 800 via the portable storage device 840 .
  • Input devices 860 provide a portion of a user interface.
  • Input devices 860 may include an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys.
  • the system 800 as shown in FIG. 8 includes output devices 850 . Suitable output devices include speakers, printers, network interfaces, and monitors.
  • Graphics display 870 may include a liquid crystal display (LCD) or other suitable display device. Graphics display 870 receives textual and graphical information, and processes the information for output to the display device.
  • LCD liquid crystal display
  • Peripherals 880 may include any type of computer support device to add additional functionality to the computing system.
  • Peripheral device(s) 880 may include a modem or a router.
  • the components contained in the computing system 800 of FIG. 8 are those typically found in computing systems that may be suitable for use with embodiments of the present technology and are intended to represent a broad category of such computer components that are well known in the art.
  • the computing system 800 can be a personal computer, hand held computing system, telephone, mobile computing system, workstation, server, minicomputer, mainframe computer, or any other computing system.
  • the computer can also include different bus configurations, networked platforms, multi-processor platforms, etc.
  • Various operating systems can be used including UNIX, Linux, Windows, Macintosh OS, Palm OS, and other suitable operating systems.
  • module may also refer to any of an application-specific integrated circuit (“ASIC”), an electronic circuit, a processor (shared, dedicated, or group) that executes one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality.
  • ASIC application-specific integrated circuit
  • individual modules may include separately configured web servers.
  • Some of the above-described functions may be composed of instructions that are stored on storage media (e.g., computer-readable medium).
  • the instructions may be retrieved and executed by the processor.
  • Some examples of storage media are memory devices, tapes, disks, and the like.
  • the instructions are operational when executed by the processor to direct the processor to operate in accord with the technology. Those skilled in the art are familiar with instructions, processor(s), and storage media.
  • Non-volatile media include, for example, optical or magnetic disks, such as a fixed disk.
  • Volatile media include dynamic memory, such as system RAM.
  • Transmission media include coaxial cables, copper wire and fiber optics, among others, including the wires that comprise one embodiment of a bus.
  • Transmission media can also take the form of acoustic or light waves, such as those generated during radio frequency (RF) and infrared (IR) data communications.
  • RF radio frequency
  • IR infrared
  • Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, any other physical medium with patterns of marks or holes, a RAM, a PROM, an EPROM, an EEPROM, a FLASHEPROM, any other memory chip or data exchange adapter, a carrier wave, or any other medium from which a computer can read.
  • a bus carries the data to system RAM, from which a CPU retrieves and executes the instructions.
  • the instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU.
  • Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • LAN local area network
  • WAN wide area network
  • Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computing device file system change detection and change replication methods and systems are described herein. In one embodiment, the change detection is accomplished by comparing two master file tables of two different versions of the same file system and inferring file system name space change, file system metadata change and file data change. The method includes creating a file system name space change log and file data change log for any objects associated with the changes to the file system. The method also includes replicating these change logs to the replication server and applying the change logs to the data store on replication server.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is related to U.S. patent application Ser. No. 14/864,850, filed Sep. 24, 2015, entitled “Distributed and Deduplicating Data Storage System and Methods of Use,” U.S. patent application Ser. No. 13/889,164, filed May 7, 2013, entitled “Cloud Storage Using Merkle Trees,” U.S. patent application Ser. No. 14/522,527, filed Oct. 23, 2014, entitled “Systems and Methods for Restoring a File,” and U.S. patent application Ser. No. ______, filed Dec. 21, 2015, entitled “Cloud Storage Using Merkle Trees,” all of which are hereby incorporated by reference herein in their entireties including all references and appendices cited therein
  • FIELD OF THE INVENTION
  • The present technology may be generally described as providing systems and methods for efficiently detecting both metadata and file data changes in file systems, and efficiently replicating the file system metadata changes from client system to the backup server system by accessing the on disk data structures of the client systems file system directly and comparing two point in time copies of these data structures.
  • SUMMARY OF THE PRESENT TECHNOLOGY
  • Generally speaking, the present technology provides efficient methods and systems for determining file system changes on a client computing device. The solution leverages knowledge obtained from master file tables used by the new technology file system (NTFS), which records changes to objects in the file system such as directories and files. The present technology can identify changes in a file system over time without having to resort to walking the entire file system, such as with a file system scan operation.
  • For context, file system information other than the user file data is often referred to as file system metadata and (b) in file systems the types of changes include (but are not limited to) namespace changes like new file or directory create/delete/rename/link or file/directory metadata changes like access permission changes or the file data change.
  • According to some embodiments, the present technology may be directed to methods to detect the list of files that changed and file data change that comprise: (a) reading a disk of a client computing device by a replication agent of a replication server by sequentially walking the inode table of a file system of the client computing device for the two point in time copies of the file system; (b) comparing the first table of inodes of the file system of the client computing device to a second table of inodes of the file system of the client computing device; (c) detecting changed inodes between the first set of inodes and the second set of inodes; (d) translating the changed inodes data stream offsets into on disk locations; (e) determining blocks changed in two versions of the data stream by reading and comparing; (f) generating a file data change log generating a disk image of the client computing device that is capable of being mounted by a hypervisor so as to create a virtual machine using the file system backup and the blocks of changed data.
  • For context, most file systems allocate inodes for each object (file/directory) in a simple indexed table (like master file table table, MFT in NTFS) giving each inode a number, referred to as a file number. On deletion of an inode the index number is free and can be used for new object (file/directory) later. According to some embodiments, the present technology may be directed to walk through all the inodes starting from index zero to max allocated and compare two inodes at same index in two different versions of the file system to identify changes in a file system name space over time. This method is much faster than performing a full directory walk of two versions of the file system to compare directory listings of each directory.
  • According to some embodiments, the present technology may be directed to methods that comprise: (a) obtaining pairs of master file table (MFT) entries in file identifier numerical order, the pairs of MFT entries being obtained from a first snapshot of a client computing device and a second snapshot of the client computing device; (b) creating a record for a second MFT entry of a pair of MFT entries if a first of the pair of MFT entries is invalid and the second MFT entry is valid; (c) deleting a record for a first MFT entry of the pair of MFT entries if the first of the pair of MFT entries is valid and the second MFT entry is invalid; (d) wherein if both the first MFT entry and the second MFT entry are valid and generation numbers of the first and second MFT entries refer to a same object, the method further comprises obtaining name attributes for each of the first and second MFT entries; (e) further wherein: (i) if name attributes from the first MFT entry do not exist in the second MFT entry, an unlink record is generated; and (ii) if name attributes from the second MFT entry do not exist in the first MFT entry, a link record is generated.
  • According to some embodiments, the present technology may be directed to log the namespace changes detected, as described previously, in a metadata log and replay each operation in the log on the backup server. According to some embodiments, the backup server could be a server or cloud a data store.
  • In some embodiments, no metadata log is required or applied to backup server. The metadata and namespace changes are replicated by copying all the disk blocks of the file system that are used to store the file system metadata and namespace information. For context, most file systems support cloning of just the file system namespace and metadata without the file data. The replication client can be configured to use existing file system cloning tools (like ntfsclone for NTFS) to replicate full file system namespace and metadata from the client computing device to the replication appliance. By using NTFSclone a NTFS shell volume is generated and saved on the replication appliance, thus keeping the ondisk format the same.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Certain embodiments of the present technology are illustrated by the accompanying figures. It will be understood that the figures are not necessarily to scale and that details not necessary for an understanding of the technology or that render other details difficult to perceive may be omitted. It will be understood that the technology is not necessarily limited to the particular embodiments illustrated herein.
  • FIG. 1 is a flowchart of a method for determining changes in a file system, as well as generating a change record with attributes.
  • FIG. 2 is a flowchart of a method for transmitting changed data to a cloud data center (store) using master file table changes and SHA1 signature maps.
  • FIG. 3 is a flowchart of an example method for determining changes in a secure data stream of an NTFS file system.
  • FIG. 4 is a flowchart of a method of walking inodes of snapshots, transmitting changed data and metadata.
  • FIG. 5 is a flowchart of a method of using master file tables for determining changes in a file system, as well as creating a change log indicative of the changes.
  • FIG. 6 is a flowchart of a method for determining changes in a file system and using the determined changes to locate changed blocks on a disk, as well as creating a bootable disk image.
  • FIG. 7 is a block diagram of an exemplary architecture in which embodiments of the present technology may be practiced;
  • FIG. 8 illustrates an exemplary computing system that may be used to implement embodiments according to the present technology;
  • DESCRIPTION OF EXEMPLARY EMBODIMENTS
  • While this technology is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail several specific embodiments with the understanding that the present disclosure is to be considered as an exemplification of the principles of the technology and is not intended to limit the technology to the embodiments illustrated.
  • It will be understood that like or analogous elements and/or components, referred to herein, may be identified throughout the drawings with like reference characters. It will be further understood that several of the figures are merely schematic representations of the present technology. As such, some of the components may have been distorted from their actual scale for pictorial clarity.
  • To be sure, each of the changes results in changes to blocks on the disk of the client computing device, which are referred to as “changed blocks”. Once file system changes are deduced, the present technology can translate these file system changes to disk locations, allowing changed blocks of data to be obtained from the client computing device. The changed blocks can be replicated to a cloud data store over a network.
  • For context, the NTFS ondisk format is designed to be a collection of streams/files. Even the metadata about each stream, referred to as an “inode,” is stored in a special stream/file called MFT (Master File Table) as series of entries with the first entry being a master file table entry (MFTEntry) for the MFT file itself. A MFTEntry can also be referred to herein as an “inode”. First few MFTEntries in the MFT Table are reserved for special system files. The MFTEntry for a file contains one or more name attributes which specify a file name, parent identifier (such as an inode number or file identifier), a time entry, a sequence number, and a log sequence number—just to name a few. A time entry is a time stamp associated with a change in an inode which is recorded by the NTFS file system. A sequence number can include a numerical identifier that corresponds to a reuse of an inode. For example, if the object associated with an inode no longer exists (such as if it is deleted), the NTFS file system can update the sequence number of the inode if it is reused for a new object. The log sequence can refer to log entries for when the NTFS file system logs anticipated file system operations to objects, the actual changes, and a notation that the operation was completed. Each of these attributes provides clues as to what objects within the file system have actually changed between any two snapshots.
  • It is noteworthy to mention that NTFS MFTEntry contains the name of the object and also the file identifier (MFTEntry number) of the parent directory. Secondly, it is noteworthy to mention that NTFS does not allow hard links to directories. Using these two properties of NTFS, given a file identifier it is possible to do a reverse lookup of the paths of associated files and/or directories (referred to generally as “objects”) including hard links by simply walking up the parent identifiers for the inodes. It will be understood that a hard link is a directory entry that associates a file name with a file on a file system. An NTFS replication client of the present technology can exploit this feature to replicate changes in file system namespace without a top down scan, which is a scan starting from a root directory.
  • File creation events can be determined by detecting the existence of a new MFTEntry in an MFT table and the entire path of the new file and/or a directory can be located without scanning the whole file system namespace, usually occurring in a top-down manner.
  • The present technology of cloud data store (or a replication appliance) uses file system metadata to allow pure inode based operations without ordering requirements. A new file and/or directory create operation can be executed by simply creating two entries with key value pairs of <dir-inode-number+entry-name, child-inode-num> and <child-inode-num, inode-attr> without requiring the corresponding entries for the full path of the new file and/or directory. Thus a full path like /foo/bar.txt can be created in reverse order (unlike traditional UNIX file systems) or any order. As long as all the create operations are applied for all the parents the file system will eventually be consistent.
  • It is noteworthy to mention that because cloud data store (or a replication appliance) can accept namespace operations in any order and because each MFTEntry of each NTFS file system contains all file names and parent identifiers it is possible to replicate the NTFS namespace to a cloud data store (or a replication appliance) by walking the MFT entries in file identifier order.
  • In some embodiments, the replication client walks through the MFT file one MFT entry at a time. For each MFT entry with a create time and/or a modified time after previous replication, the system will send the corresponding create/setattr (set attributes) operation with the parent identifier to the cloud data store (or a replication appliance). It is also possible for the system to determine if the MFT entry obtained got a new hard link (because link count increases) and a new name attribute will exist.
  • Referring now to FIG. 1, which comprises an example method for detecting changes to a file system of a client computing device. In some embodiments, the method will comprise a replication client obtaining 102 two master file tables for a client computing device. The first master file table will correspond with a first snapshot and the second master file table will correspond with a second snapshot. These snapshots are obtained at two different points in time. In some instances, the second snapshot can include a current version of a file system for the client computing device, while the first snapshot is a backup of the client computing device taken at some point in the past.
  • The method will include the replication client obtaining a master file table entry (MFTEntry) for a given file identifier from the first snapshot and the second snapshot. In more detail, in some embodiments this step includes obtaining the MFT tables from each of the first and second snapshots.
  • To be sure, the replication client reads the MFT tables together as pairs where the first MFT table is of previous version of the file system and second MFT table is the current version of the file system. For example, both MFT tables have a file identifier of “file 1” which is the first entry in each of respective MFT tables. The replication client will examine each of these pairs in sequential order such as “file 2” from the first MFT table and “file 2” from the second MFT table, and so on. Thus, the replication client need only walk the MFT tables to deduce changes. The exact details of how these changes can be detected are provided below.
  • An MFT table is comprised of an ordered list of entries referred to as “inodes”.
  • In some embodiments, changes to MFT table entries can correspond to changes in a file name, a parent identifier, a time entry, sequence number, log sequence number, and any combinations thereof. These attributes are described in greater detail above.
  • In some embodiments, if an MFTEntry-1 is invalid in the first MFT table but an MFTEntry-2 is valid in another MFT table then the method includes the replication client generating 104 a create record for MFTEntry-2.
  • Similarly, if an MFTEntry-1 is valid in the first MFT table but MFTEntry-2 in the second MFT table is invalid then the method includes the replication client generating 106 a delete record for MFTEntry-1.
  • In some embodiments, if both MFTEntries are valid and generation numbers are same the replication client determines that both MFTEntries refer to same file. In these instances where it is determined that both MFTEntries refer to same file, the method can include the replication client inspecting the name attributes in both MFTEntries. The method can include replication client generating an unlink record 108 for every NameAttribute from MFTEntry-1 that does not exist in MFTEntry-2. Similarly, the method can include the replication client generating 110 a link record for every NameAttribute from MFTEntry-2 that does not exist in MFTEntry-1.
  • Similarly, in the instances where the replication client has determined that both MFTEntries refer to same same file, the method can include the replication client inspecting all other attributes in both MFTEntries. If some attributes are not the same between MFTEntry-1 and MFTEntry-2, the method can include replication client generating a 112 a set-attribute record where attributes are set.
  • In some embodiments, the method includes the replication client determining 114 that generation numbers between MFTEntry-1 and MFTEntry-2 are different from one another. In these instances, the method can include replication client generating a link record 110 for every NameAttribute from MFTEntry-2 illustrated in FIG. 2.
  • FIG. 2 illustrates an example method of data stream (e.g., file) replication, which occurs once differences are detected between MFTEntry-1 and MFTEntry-2 which indicate that an object change (e.g., file or directory) has occurred. For example, if a file name has changed the replication client can determine that a file name property has changed (e.g., a user changed the file name) or that the original file has been replaced by a new file with a different name.
  • For context, the method refers also to replication using SHA1 (e.g., secure hashing) maps of the client computing device to replicate changes over a network connection, as is discussed in U.S. patent application Ser. No. ______, (Attorney Docket No. PA7073US) filed on Dec. 21, 2015, entitled “Cloud Storage using Merkle Trees.”
  • In some embodiments, the method comprises the replication client determining 202 MFT entries with a create time or a modify time which is temporally subsequent to a prior replication (e.g., snapshot).
  • According to some embodiments, the method includes obtaining 204 a SHA1 signature map for the previous version of the file from a cloud data store, as well as computing 206 a SHA1 signature map for the current version of the file.
  • The method can comprise detecting 208 changed blocks of data using the SHA1 signature maps. Once the changed blocks of data are determined the method can comprise the replication client transmitting 210 all new blocks to the cloud data store. For example, the replication client can use BULK_PUT_BLOCK application programming interface (API).
  • In some embodiments, the method includes transmitting 212 the new SHA1 signature map for the file to the cloud data center by the replication client. Note that the actual data blocks are replicated to the cloud data store in an operation that is separate from the process used to transmit the SHA1 signature map.
  • One of the reserved MFTEntry is used for access control lists (ACL) information and is called secure file in an NFTS formatted file system. All ACLs are stored in a data stream in the secure file in a sequential manner. The ACLs in the data stream are indexed by two indices stored in the secure file where one index called SDH maps ‘hash’ of the ACL to the location of the ACL in the data stream and other index called SSI contains mapping from SecurityID security identifier to offset into the secure data where an ACL is stored. This SecurityID is stored in the STANDARD_INFORMATION of the MFTEntry of all files. Note that NTFS stores an ACL only once and every time a new file is created with an ACL, if the ACL is already stored in the secure data stream then the new MFTEntry gets the same SecurityID. If a new ACL which does not already exists in the data stream is created by the system, only then it is stored and it gets appended to the data stream and is assigned a new SecurityID.
  • In some embodiments, the replication client will detect change in the size and or update time of the secure file and replicate the changes. In some embodiments, the replication client will utilize metadata that will maintain the same SecurityID as in the source NTFS volume. In some embodiments, the metadata is provided with a new key-value pair as <SecurityID, ACL> and the SecurityID can be stored in the inode attributes just the way NTFS stores it in MFTEntry.
  • An example ACL replication process is illustrated in FIG. 3. The method can comprise a step of determining 302 if a $Secure data stream has been modified. If so, the method comprises reading 304 the $Secure data stream and obtaining 306 all new ACLs added to the $Secure data stream.
  • Next, the method can comprise reading and parsing 308 $SSI, as well as determining 310 the SecurityID of each of the new ACL in the SSI.
  • The method includes transmitting 312 a change record to the cloud data store which is a vector of the pair <SecurityID, ACL>.
  • In some embodiments, the present technology can be applied to systems and methods that utilize snapshots and differential files for replication of the client computing device.
  • FIG. 4 illustrates an example method for replicating metadata changes for a client computing device.
  • In some embodiments, the method includes a scanner of a replication client performing 402 a top-down walk of an entire file system tree (taken from a snapshot) and comparing 404 the file system tree with a previous snapshot to determine namespace changes. The method includes generating 406 a metadata log with the namespace changes. The method comprises the scanner comparing 408 the file modified time for inode pairs to determine list of changed files. Next, the method includes evaluating 410 the file system metadata and namespace (directory hierarchy) in two locations on the appliance. The method further comprises generating 412 a shell NTFS volume image that has all file system metadata (ACLs and even file block map) and namespace (directory hierarchy). No file data is obtained in this step, in some embodiments.
  • In one embodiment, the method comprises obtaining differential metadata which stores only the file system name space (directory hierarchy).
  • In some embodiments, the method includes the scanner transferring 414 the metadata log to the replication appliance where it is applied to the NTFS shell volume. According to some embodiments, the method includes performing 416 another top-down walk of NTFS shell volume (via fuse mount for example) and comparing 418 with a previous version of differential metadata. In some embodiments the method includes generating 420 new differential metadata based on the comparison.
  • For context, the method refers to U.S. patent application Ser. No. 14/864,850, filed Sep. 24, 2015, entitled “Distributed and Deduplicating Data Storage System and Methods of Use.”
  • In some embodiments, no metadata log is required or applied to backup server. The metadata and namespace changes are replicated by copying all the disk blocks of the file system that are used to store the file system metadata and namespace information. For context, most file systems support cloning of just the file system namespace and metadata without the file data. The replication client can be configured to use existing file system cloning tools (like ntfsclone for NTFS) to replicate full file system namespace and metadata from the client computing device to the replication appliance. By using NTFSclone a NTFS shell volume is generated and saved on the replication appliance, thus keeping the ondisk format the same.
  • Optimized Namespace Change Tracking
  • As mentioned above, most file systems allocate inodes for each object (file/directory) in a simple indexed table MFT giving each inode a number, referred to as a file number. On deletion of an inode the index number is free and can be used for new object (file/directory) later. Using file system tools it is possible to walk through all the inodes starting from index zero to max allocated. Instead of performing a full directory walk of two versions of the file system to compare metadata of two versions of files (like modified time or other attributes) to determine if a file has changed, the replication client can directly compare two versions of the file inodes. Since this solution directly reads the inodes one by one the replication client can avoid having to read the directories, which is required in top down namespace walk.
  • The replication client uses one or more of the following properties/attributes of a NTFS ondisk inode (called MFT entry). In one embodiment, NTFS stores a generation number in the inode that makes it possible to detect reuse of inode for new object (file/directory). In another embodiment, NTFS stores object (file/directory) name in the inode itself which makes it possible to detect “rename” operations on inodes. NTFS also stores parent file identifiers of an object (file/directory) in the inode itself which makes it possible to detect “move” operations on inodes. In NTFS all the inodes are stored as a simple ondisk array in a special file called MFT Table. Two versions of MFT table are compared for each MFT record and change log is generated as follows:
  • FIG. 5 an example method that is executed by the replication client using the rules set forth above. If the two MFT records are same the replication client does nothing. Again, the comparison includes comparing pairs of MFT entries to one another in a sequential manner (e.g., following inode file identifiers in numerical order from top to bottom).
  • If the first MFT entry is unused and used in second MFT entry then enter a create entry 502 into a log record. If the first MFT entry is unused in a new MFT table and unused in an older MFT table then create 504 a log entry that reflects a delete operation.
  • If the generation number is different, a log object (file/dir) is created 506 for the new first MFT entry and the old first MFT entry is deleted.
  • If the MFT entry in both versions is identical except for a modified time then a log entry is created 508 that indicates that the file/directory has changed. In some embodiments, the method ignores directory changes and log entries are created only for files. This is due to directories being replicated in other processes, such as when metadata is replicated.
  • If the MFT record has (same generation number) a different name (or additional name) then a log entry is created 510 that is indicative of a rename.
  • If the MFT record has (same generation number) a different parent identifier then a log entry is created 512 that indicate a move.
  • In some embodiments the backup server can require that change records are addressed by a full file path and not only by inode numbers. However, the file change log address files using file identifiers. The backup-sender converts the file identifier to a namespace path by opening the file by using file identifier and then performing a getFileInformation operation on the handle to get full path of the file.
  • A change log for this process can be converted or transformed into a “refined log” as follows. For every directory rename or move record, the replication client is configured to perform a full tree walk of a directory and add a “create file” record for all the children files within the directory. If one of the child files already had a “modified file” record, that record is replaced with “create file” record. For every file rename or move record the replication client can add a “create file” record for that file and delete any “modified file” record for that file.
  • A refined log contains only “file data change” records which are either “incremental change” (modify) or “full backup” (create). This refined log is used by the replication client to send FCRs to the appliance.
  • Following is an example list of pseudo-code to generate the FILE_CHANGE_LOG and DIR_CHANGE_LOG:
  • Example code for generating the refined version of the FILE_CHANGE_LOG generated is provided below. The refine log generation is done by a separate program whose input is the DIR_CHANGE_LOG and FILE_CHANGE_LOG and output is REFINED_FILE_CHANGE_LOG. In one embodiment, the code specifies:
  • HashMap FILE_LOG = read(FILE_CHANGE_LOG)
    List DIR_LOG = read(DIR_CHANGE_LOG)
    for dir in DIR_LOG
    do
    //Walk the directory pointed by record
    for file in dir
    do
    //Remove any record that exist in FILE_LOG for this file
    FILE_LOG.remove(file)
    //Add file as create record in FILE_LOG
    FILE_LOG.add(file, “Created”)
    done
    done
    Flush(FILE_LOG)
  • FIG. 6 illustrates an example method for determining changes to a file system and using the changes to create a disk image that can be booted by a hypervisor (for example) to instantiate a virtual machine. The disk image can also be booted by a physical device (e.g., bare metal hardware).
  • In some embodiments, the method comprises reading 602 a disk of a client computing device by a replication agent of a replication appliance. In one example, reading comprises walking a first set of inodes of a file system of the client computing device at a first point in time. Again, these inodes belong to an MFT table for the client computing device. A second set of inodes of a file system backup are also read for the client computing device.
  • Next, the method includes comparing 604 the first set of inodes of the file system of the client computing device to the second set of inodes of the file system backup of the client computing device.
  • In some embodiments, the method comprises detecting 606 changed inodes between the first set of inodes and the second set of inodes and translating 608 the changed inodes into namespace locations. Again, this can be accomplished by using file identifiers, which point to locations on the disk where objects within the file system are located.
  • Next, the method can comprise obtaining 610 blocks of changed data using the namespace locations.
  • The method can also include generating 612 a disk image of the client computing device that is capable of being mounted by a hypervisor so as to create a virtual machine using the file system backup and the blocks of changed data.
  • Referring now to the drawings, and more particularly, to FIG. 7, which includes a schematic diagram of an exemplary architecture 700 for practicing the present invention. Architecture 700 may include a cloud data store 705, which can comprise a block store 710 for storing blocks of data for a client computing device 715.
  • In some embodiments the client computing device 715 is coupled to a replication appliance 720 that employs a replication client 725 (NTFS based) and a scanner 730. The replication client 725 and scanner 730 are described in many of the embodiments above.
  • A cloud-based computing environment. In general, a cloud-based computing environment is a resource that typically combines the computational power of a large model of processors and/or that combines the storage capacity of a large model of computer memories or storage devices. For example, systems that provide a cloud resource may be utilized exclusively by their owners, such as Google™ or Yahoo!™; or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources.
  • The cloud may be formed, for example, by a network of servers, with each server (or at least a plurality thereof) providing processor and/or storage resources. These servers may manage workloads provided by multiple users (e.g., cloud resource consumers or other users). Typically, each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depend on the type of business associated with the user.
  • In some instances the block store 710 may include a deduplicating block store that stores blocks of data for one or more objects, such as a file, a group of files, or an entire disk. Additionally the block store 710 may comprise Merkle trees that include hash-type representations of objects within the deduplicating block store. That is, for each object (or group of blocks), a Merkle tree exists that represents the blocks of the object.
  • In other embodiments, the block store 705 can implement storage for differential backups instead of Merkle trees.
  • According to some embodiments, the deduplicating block store may include immutable object addressable block storage. The deduplicating block store may form an underlying storage foundation that allows for the storing of blocks of objects. The identifiers of the blocks are a unique representation of the block, generated for example by using a uniform hash function.
  • FIG. 8 illustrates an exemplary computing system 800 that may be used to implement an embodiment of the present technology. The computing system 800 of FIG. 8 includes one or more processors 810 and memory 820. Main memory 820 stores, in part, instructions and data for execution by processor 810. Main memory 820 can store the executable code when the system 800 is in operation. The system 800 of FIG. 8 may further include a mass storage device 830, portable storage medium drive(s) 840, output devices 850, user input devices 860, a graphics display 870, and other peripheral devices 880. The system 800 may also comprise network storage 845.
  • The components shown in FIG. 8 are depicted as being connected via a single bus 890. The components may be connected through one or more data transport means. Processor unit 810 and main memory 820 may be connected via a local microprocessor bus, and the mass storage device 830, peripheral device(s) 880, portable storage device 840, and graphics display 870 may be connected via one or more input/output (I/O) buses.
  • Mass storage device 830, which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit 810. Mass storage device 830 can store the system software for implementing embodiments of the present technology for purposes of loading that software into main memory 820.
  • Portable storage device 840 operates in conjunction with a portable non-volatile storage medium, such as a floppy disk, compact disk or digital video disc, to input and output data and code to and from the computing system 800 of FIG. 8. The system software for implementing embodiments of the present technology may be stored on such a portable medium and input to the computing system 800 via the portable storage device 840.
  • Input devices 860 provide a portion of a user interface. Input devices 860 may include an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. Additionally, the system 800 as shown in FIG. 8 includes output devices 850. Suitable output devices include speakers, printers, network interfaces, and monitors.
  • Graphics display 870 may include a liquid crystal display (LCD) or other suitable display device. Graphics display 870 receives textual and graphical information, and processes the information for output to the display device.
  • Peripherals 880 may include any type of computer support device to add additional functionality to the computing system. Peripheral device(s) 880 may include a modem or a router.
  • The components contained in the computing system 800 of FIG. 8 are those typically found in computing systems that may be suitable for use with embodiments of the present technology and are intended to represent a broad category of such computer components that are well known in the art. Thus, the computing system 800 can be a personal computer, hand held computing system, telephone, mobile computing system, workstation, server, minicomputer, mainframe computer, or any other computing system. The computer can also include different bus configurations, networked platforms, multi-processor platforms, etc. Various operating systems can be used including UNIX, Linux, Windows, Macintosh OS, Palm OS, and other suitable operating systems.
  • As used herein, the term “module” may also refer to any of an application-specific integrated circuit (“ASIC”), an electronic circuit, a processor (shared, dedicated, or group) that executes one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality. In other embodiments, individual modules may include separately configured web servers.
  • Some of the above-described functions may be composed of instructions that are stored on storage media (e.g., computer-readable medium). The instructions may be retrieved and executed by the processor. Some examples of storage media are memory devices, tapes, disks, and the like. The instructions are operational when executed by the processor to direct the processor to operate in accord with the technology. Those skilled in the art are familiar with instructions, processor(s), and storage media.
  • It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the technology. The terms “computer-readable storage medium” and “computer-readable storage media” as used herein refer to any medium or media that participate in providing instructions to a CPU for execution. Such media can take many forms, including, but not limited to, non-volatile media, volatile media and transmission media. Non-volatile media include, for example, optical or magnetic disks, such as a fixed disk. Volatile media include dynamic memory, such as system RAM. Transmission media include coaxial cables, copper wire and fiber optics, among others, including the wires that comprise one embodiment of a bus. Transmission media can also take the form of acoustic or light waves, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, any other physical medium with patterns of marks or holes, a RAM, a PROM, an EPROM, an EEPROM, a FLASHEPROM, any other memory chip or data exchange adapter, a carrier wave, or any other medium from which a computer can read.
  • Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution. A bus carries the data to system RAM, from which a CPU retrieves and executes the instructions. The instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU.
  • Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. Exemplary embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
  • Aspects of the present invention are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
  • While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the technology to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the technology as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the technology should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.

Claims (16)

What is claimed is:
1. A method, comprising:
a replication agent obtaining a first master file table for a client computing device;
obtaining a second master file table for the client computing device;
comparing the first master file table with the second master file table to determine changes to the first master file table relative to the second master file table that are indicative of changes to a file system of the client computing device; and
creating a file system name space change log and file data change log for the file system, comprising of directories and files.
2. The method according to claim 1, further comprising replicating the changed inodes on the replication appliance to a cloud data store.
3. The method according to claim 1, wherein detecting changed inodes comprises detecting a change in an inode generation number of an inode of the first set of inodes that is indicative of reuse of the inode for a new object.
4. The method according to claim 3, wherein if reuse is detected, the method further comprises creating an entry in a log that records creation of the new object and deletion of an old object which was replaced by the new object.
5. The method according to claim 1, wherein the changes are determined from examining log sequence numbers within the first and second master file tables.
6. The method according to claim 1, wherein detecting changed inodes comprises detecting a modified time entry of an inode of the first set of inodes which is indicative of a change in an object associated with the inode.
7. The method according to claim 1, wherein detecting changed inodes comprises detecting a new name for an inode of the first set of inodes, and further logging the new name in a log.
8. The method according to claim 1, wherein detecting changed inodes comprises detecting a change to a parent identifier for an inode of the first set of inodes which is indicative of movement of the inode within the file system.
9. The method according to claim 1, further comprising copying metadata and namespace changes for the file system by copying only the disk blocks that store the metadata and namespace information (cloned shell volume) to the replication appliance.
10. The method according to claim 1, wherein translating the changed inodes into namespace locations comprises obtaining file identifiers of the changed inodes and performing file path identification to obtain a file path for each of the changed inodes based on the file identifiers.
11. The method according to claim 1, further comprising converting the file data change log to a refined log by:
performing a tree walk of a directory in a file system for the client computing device for a directory rename operation of a directory or file move operations of a file;
adding a create record for child files of the directory or the object;
delete any modified file record if the file; and
wherein the refined log comprises file change records that are an incremental change or a full backup of the client computing device.
12. A system, comprising:
a cloud data store; and
a replication appliance associated with a client computing device, the replication appliance comprising a processor and memory, wherein the processor executes logic stored in memory to:
obtain a first master file table of a file system for a client computing device;
obtain a second master file table of the file system for the client computing device;
compare the first master file table with the second master file table to determine changes to the first master file table relative to the second master file table that are indicative of changes to a file system of the client computing device;
create a file data change log for any objects associated with the changes to the file system; and
replicate blocks associated with the objects on the replication appliance to the cloud data store.
13. The system according to claim 12, wherein the processor further executes the logic to replicate metadata of the file system onto the replication appliance.
14. The system according to claim 13, wherein the processor further executes the logic to convert the file data change log to a refined log by:
performing a tree walk of a directory in a file system for the client computing device for a directory rename operation of a directory or file move operations of a file;
adding a record for child files of the directory or the object;
delete any modified file record if the file; and
wherein the refined log comprises file change records that are an incremental change or a full backup of the client computing device.
15. The system according to claim 12, wherein the changes include file name changes, parent identifier changes, sequence number changes, time signature changes, log sequence changes, and any combinations thereof.
16. A method, comprising:
obtaining pairs of master file table (MFT) entries in file identifier numerical order, the pairs MFT entries being obtained from a first snapshot of a client computing device and a second snapshot of the client computing device;
creating a record for a second MFT entry of a pair of MFT entries if a first of the pair of MFT entries is invalid and the second MFT entry is valid;
deleting a record for a first MFT entry of the pair of MFT entries if the first of the pair of MFT entries is valid and the second MFT entry is invalid;
wherein if both the first MFT entry and the second MFT entry are valid and generation numbers of the first and second MFT entries refer to a same object, the method further comprises obtaining name attributes for each of the first and second MFT entries;
further wherein:
if name attributes from the first MFT entry that do not exist in the second MFT entry, an unlink record is generated; and if name attributes from the second MFT entry that do not exist in the first MFT entry, a link record is generated.
US14/977,614 2013-05-07 2015-12-21 Computing device replication using file system change detection methods and systems Abandoned US20190108103A9 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/977,614 US20190108103A9 (en) 2013-05-07 2015-12-21 Computing device replication using file system change detection methods and systems

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/889,164 US9705730B1 (en) 2013-05-07 2013-05-07 Cloud storage using Merkle trees
US14/864,850 US20170090786A1 (en) 2013-05-07 2015-09-24 Distributed and Deduplicating Data Storage System and Methods of Use
US14/977,614 US20190108103A9 (en) 2013-05-07 2015-12-21 Computing device replication using file system change detection methods and systems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/864,850 Continuation-In-Part US20170090786A1 (en) 2010-09-30 2015-09-24 Distributed and Deduplicating Data Storage System and Methods of Use

Publications (2)

Publication Number Publication Date
US20170177452A1 US20170177452A1 (en) 2017-06-22
US20190108103A9 true US20190108103A9 (en) 2019-04-11

Family

ID=58409284

Family Applications (4)

Application Number Title Priority Date Filing Date
US13/889,164 Active 2034-11-09 US9705730B1 (en) 2010-09-30 2013-05-07 Cloud storage using Merkle trees
US14/864,850 Abandoned US20170090786A1 (en) 2010-09-30 2015-09-24 Distributed and Deduplicating Data Storage System and Methods of Use
US14/977,614 Abandoned US20190108103A9 (en) 2013-05-07 2015-12-21 Computing device replication using file system change detection methods and systems
US15/599,417 Active US10599533B2 (en) 2013-05-07 2017-05-18 Cloud storage using merkle trees

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US13/889,164 Active 2034-11-09 US9705730B1 (en) 2010-09-30 2013-05-07 Cloud storage using Merkle trees
US14/864,850 Abandoned US20170090786A1 (en) 2010-09-30 2015-09-24 Distributed and Deduplicating Data Storage System and Methods of Use

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/599,417 Active US10599533B2 (en) 2013-05-07 2017-05-18 Cloud storage using merkle trees

Country Status (1)

Country Link
US (4) US9705730B1 (en)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US8577851B2 (en) 2010-09-30 2013-11-05 Commvault Systems, Inc. Content aligned block-based deduplication
US10284437B2 (en) 2010-09-30 2019-05-07 Efolder, Inc. Cloud-based virtual machines and offices
US8578109B2 (en) 2010-09-30 2013-11-05 Commvault Systems, Inc. Systems and methods for retaining and using data block signatures in data protection operations
US9705730B1 (en) 2013-05-07 2017-07-11 Axcient, Inc. Cloud storage using Merkle trees
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US9116850B2 (en) 2010-12-14 2015-08-25 Commvault Systems, Inc. Client-side repository in a networked deduplicated storage system
US9251186B2 (en) 2012-06-13 2016-02-02 Commvault Systems, Inc. Backup using a client-side signature repository in a networked storage system
US9785647B1 (en) 2012-10-02 2017-10-10 Axcient, Inc. File system virtualization
US9852140B1 (en) 2012-11-07 2017-12-26 Axcient, Inc. Efficient file replication
US9665591B2 (en) 2013-01-11 2017-05-30 Commvault Systems, Inc. High availability distributed deduplicated storage system
US9397907B1 (en) 2013-03-07 2016-07-19 Axcient, Inc. Protection status determinations for computing devices
US9842152B2 (en) * 2014-02-19 2017-12-12 Snowflake Computing, Inc. Transparent discovery of semi-structured data schema
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10223394B1 (en) * 2015-03-24 2019-03-05 Amazon Technologies, Inc. Data reconciliation
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
KR101977109B1 (en) * 2015-11-17 2019-08-28 (주)마크애니 Large simultaneous digital signature service system based on hash function and method thereof
US10592357B2 (en) 2015-12-30 2020-03-17 Commvault Systems, Inc. Distributed file system in a distributed deduplication data storage system
US10574751B2 (en) * 2016-03-22 2020-02-25 International Business Machines Corporation Identifying data for deduplication in a network storage environment
US10242065B1 (en) * 2016-06-30 2019-03-26 EMC IP Holding Company LLC Combining merkle trees in graph databases
US10867040B2 (en) * 2016-10-17 2020-12-15 Datto, Inc. Systems and methods for detecting ransomware infection
US10673823B2 (en) * 2016-10-17 2020-06-02 Microsoft Technology Licensing, Llc Migration containers
US10909105B2 (en) * 2016-11-28 2021-02-02 Sap Se Logical logging for in-memory metadata store
US10291408B2 (en) 2016-12-23 2019-05-14 Amazon Technologies, Inc. Generation of Merkle trees as proof-of-work
US20180181310A1 (en) * 2016-12-23 2018-06-28 Cloudendure Ltd. System and method for disk identification in a cloud based computing environment
US10511445B1 (en) 2017-01-05 2019-12-17 Amazon Technologies, Inc. Signature compression for hash-based signature schemes
US10608824B1 (en) 2017-01-09 2020-03-31 Amazon Technologies, Inc. Merkle signature scheme tree expansion
US10652330B2 (en) 2017-01-15 2020-05-12 Google Llc Object storage in cloud with reference counting using versions
US10783269B1 (en) * 2017-03-02 2020-09-22 Apple Inc. Cloud messaging system
US11163721B1 (en) * 2017-04-25 2021-11-02 EMC IP Holding Company LLC Snapshot change list and file system indexing
US10387271B2 (en) * 2017-05-10 2019-08-20 Elastifile Ltd. File system storage in cloud using data and metadata merkle trees
US10649852B1 (en) * 2017-07-14 2020-05-12 EMC IP Holding Company LLC Index metadata for inode based backups
CN109408279A (en) * 2017-08-16 2019-03-01 北京京东尚科信息技术有限公司 Data back up method and device
US10282129B1 (en) 2017-10-24 2019-05-07 Bottomline Technologies (De), Inc. Tenant aware, variable length, deduplication of stored data
US10545696B2 (en) * 2017-11-14 2020-01-28 Samsung Electronics Co., Ltd. Data deduplication using KVSSD
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US11177961B2 (en) * 2017-12-07 2021-11-16 Nec Corporation Method and system for securely sharing validation information using blockchain technology
CN108228767B (en) * 2017-12-27 2022-03-15 中国地质大学(武汉) Method and device for directionally deleting files by smart phone and storage device
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US10671370B2 (en) * 2018-05-30 2020-06-02 Red Hat, Inc. Distributing file system states
US10754737B2 (en) * 2018-06-12 2020-08-25 Dell Products, L.P. Boot assist metadata tables for persistent memory device updates during a hardware fault
US11163750B2 (en) 2018-09-27 2021-11-02 International Business Machines Corporation Dynamic, transparent manipulation of content and/or namespaces within data storage systems
CN109614036B (en) * 2018-11-16 2022-05-10 新华三技术有限公司成都分公司 Storage space deployment method and device
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
US11474912B2 (en) * 2019-01-31 2022-10-18 Rubrik, Inc. Backup and restore of files with multiple hard links
US11392541B2 (en) 2019-03-22 2022-07-19 Hewlett Packard Enterprise Development Lp Data transfer using snapshot differencing from edge system to core system
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
US11616810B2 (en) 2019-06-04 2023-03-28 Datto, Inc. Methods and systems for ransomware detection, isolation and remediation
US10990675B2 (en) 2019-06-04 2021-04-27 Datto, Inc. Methods and systems for detecting a ransomware attack using entropy analysis and file update patterns
US11347881B2 (en) 2020-04-06 2022-05-31 Datto, Inc. Methods and systems for detecting ransomware attack in incremental backup
US11048693B2 (en) 2019-06-05 2021-06-29 International Business Machines Corporation Resolution of ordering inversions
US11681586B2 (en) * 2019-06-28 2023-06-20 Rubrik, Inc. Data management system with limited control of external compute and storage resources
US11157451B2 (en) 2019-06-28 2021-10-26 Rubrik, Inc. Adaptable multi-layered storage for deduplicating electronic messages
US10921987B1 (en) * 2019-07-31 2021-02-16 EMC IP Holding Company LLC Deduplication of large block aggregates using representative block digests
CN112887421B (en) * 2019-07-31 2023-07-18 创新先进技术有限公司 Block chain state data synchronization method and device and electronic equipment
US11467775B2 (en) 2019-10-15 2022-10-11 Hewlett Packard Enterprise Development Lp Virtual persistent volumes for containerized applications
US11392458B2 (en) * 2019-10-25 2022-07-19 EMC IP Holding Company LLC Reconstructing lost data objects by generating virtual user files from available nodes within a cluster
US11442896B2 (en) 2019-12-04 2022-09-13 Commvault Systems, Inc. Systems and methods for optimizing restoration of deduplicated data stored in cloud-based storage resources
US11455319B2 (en) * 2020-01-29 2022-09-27 EMC IP Holding Company LLC Merkle tree forest for synchronizing data buckets of unlimited size in object storage systems
US11461362B2 (en) * 2020-01-29 2022-10-04 EMC IP Holding Company LLC Merkle super tree for synchronizing data buckets of unlimited size in object storage systems
US11868214B1 (en) * 2020-02-02 2024-01-09 Veritas Technologies Llc Methods and systems for affinity aware container prefetching
US11645161B2 (en) 2020-03-26 2023-05-09 Hewlett Packard Enterprise Development Lp Catalog of files associated with snapshots
US11687267B2 (en) 2020-04-14 2023-06-27 Hewlett Packard Enterprise Development Lp Containerized application manifests and virtual persistent volumes
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
US11693573B2 (en) 2020-06-18 2023-07-04 Hewlett Packard Enterprise Development Lp Relaying storage operation requests to storage systems using underlying volume identifiers
US11755229B2 (en) * 2020-06-25 2023-09-12 EMC IP Holding Company LLC Archival task processing in a data storage system
US10860717B1 (en) * 2020-07-01 2020-12-08 Morgan Stanley Services Group Inc. Distributed system for file analysis and malware detection
US10990676B1 (en) * 2020-07-01 2021-04-27 Morgan Stanley Services Group Inc. File collection method for subsequent malware detection
US11481371B2 (en) 2020-07-27 2022-10-25 Hewlett Packard Enterprise Development Lp Storage system capacity usage estimation
US11960773B2 (en) 2020-07-31 2024-04-16 Hewlett Packard Enterprise Development Lp Modifying virtual persistent volumes based on analysis of performance metrics
US20220197944A1 (en) * 2020-12-22 2022-06-23 Netapp Inc. File metadata service
CN112699084B (en) * 2021-01-06 2022-10-28 青岛海尔科技有限公司 File cleaning method and device, storage medium and electronic device
US11599506B1 (en) * 2021-10-28 2023-03-07 EMC IP Holding Company LLC Source namespace and file copying
US11481372B1 (en) * 2022-04-13 2022-10-25 Aleksei Neganov Systems and methods for indexing multi-versioned data
US20230359593A1 (en) * 2022-05-09 2023-11-09 Netapp, Inc. Object versioning support for a file system

Family Cites Families (214)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379412A (en) 1992-04-20 1995-01-03 International Business Machines Corporation Method and system for dynamic allocation of buffer storage space during backup copying
JP3497886B2 (en) 1994-05-10 2004-02-16 富士通株式会社 Server data linking device
US5574905A (en) 1994-05-26 1996-11-12 International Business Machines Corporation Method and apparatus for multimedia editing and data recovery
US5860107A (en) 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US6272492B1 (en) 1997-11-21 2001-08-07 Ibm Corporation Front-end proxy for transparently increasing web server functionality
US9292111B2 (en) 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
US6205527B1 (en) 1998-02-24 2001-03-20 Adaptec, Inc. Intelligent backup and restoring system and method for implementing the same
US6122629A (en) 1998-04-30 2000-09-19 Compaq Computer Corporation Filesystem data integrity in a single system image environment
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6233589B1 (en) 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
GB2343768A (en) 1998-08-17 2000-05-17 Connected Place Limited Merging a sequence of delta files
AU6104800A (en) 1999-07-16 2001-02-05 Intertrust Technologies Corp. Trusted storage systems and methods
AU2001229332A1 (en) 2000-01-10 2001-07-24 Connected Corporation Administration of a differential backup system in a client-server environment
US6651075B1 (en) 2000-02-16 2003-11-18 Microsoft Corporation Support for multiple temporal snapshots of same volume
WO2001082098A1 (en) 2000-04-27 2001-11-01 Fortress Technologies, Inc. Network interface device having primary and backup interfaces for automatic dial backup upon loss of a primary connection and method of using same
US6971018B1 (en) 2000-04-28 2005-11-29 Microsoft Corporation File protection service for a computer system
EP1168174A1 (en) 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Automatic backup/recovery process
US6950871B1 (en) 2000-06-29 2005-09-27 Hitachi, Ltd. Computer system having a storage area network and method of handling data in the computer system
WO2002039245A2 (en) 2000-11-09 2002-05-16 Change Tools, Inc. A user definable interface system, method and computer program product
CA2438481A1 (en) 2001-03-27 2002-10-03 British Telecommunications Public Limited Company File synchronisation
US20030011638A1 (en) 2001-07-10 2003-01-16 Sun-Woo Chung Pop-up menu system
US7216135B2 (en) 2002-02-15 2007-05-08 International Business Machines Corporation File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address
US6877048B2 (en) 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US7165154B2 (en) 2002-03-18 2007-01-16 Net Integration Technologies Inc. System and method for data backup
US7051050B2 (en) 2002-03-19 2006-05-23 Netwrok Appliance, Inc. System and method for restoring a single file from a snapshot
US7058656B2 (en) 2002-04-11 2006-06-06 Sun Microsystems, Inc. System and method of using extensions in a data structure without interfering with applications unaware of the extensions
US7058902B2 (en) 2002-07-30 2006-06-06 Microsoft Corporation Enhanced on-object context menus
US7024581B1 (en) 2002-10-09 2006-04-04 Xpoint Technologies, Inc. Data processing recovery system and method spanning multiple operating system
US7055010B2 (en) 2002-11-06 2006-05-30 Synology Inc. Snapshot facility allowing preservation of chronological views on block drives
JP2004171249A (en) 2002-11-20 2004-06-17 Hitachi Ltd Backup execution decision method for database
US7624143B2 (en) 2002-12-12 2009-11-24 Xerox Corporation Methods, apparatus, and program products for utilizing contextual property metadata in networked computing environments
US7809693B2 (en) 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US7320009B1 (en) 2003-03-28 2008-01-15 Novell, Inc. Methods and systems for file replication utilizing differences between versions of files
EP1620778B1 (en) 2003-05-06 2013-12-25 Aptare, Inc. System to capture, transmit and persist backup and recovery meta data
US7558927B2 (en) 2003-05-06 2009-07-07 Aptare, Inc. System to capture, transmit and persist backup and recovery meta data
US7328366B2 (en) 2003-06-06 2008-02-05 Cascade Basic Research Corp. Method and system for reciprocal data backup
US20050010835A1 (en) 2003-07-11 2005-01-13 International Business Machines Corporation Autonomic non-invasive backup and storage appliance
US7398285B2 (en) 2003-07-30 2008-07-08 International Business Machines Corporation Apparatus and system for asynchronous replication of a hierarchically-indexed data store
US20050193235A1 (en) 2003-08-05 2005-09-01 Miklos Sandorfi Emulated storage system
US7225208B2 (en) 2003-09-30 2007-05-29 Iron Mountain Incorporated Systems and methods for backing up data files
JP4267420B2 (en) 2003-10-20 2009-05-27 株式会社日立製作所 Storage apparatus and backup acquisition method
US7188118B2 (en) 2003-11-26 2007-03-06 Veritas Operating Corporation System and method for detecting file content similarity within a file system
JP4319017B2 (en) 2003-12-02 2009-08-26 株式会社日立製作所 Storage system control method, storage system, and storage device
EP1538536A1 (en) 2003-12-05 2005-06-08 Sony International (Europe) GmbH Visualization and control techniques for multimedia digital content
US20050152192A1 (en) 2003-12-22 2005-07-14 Manfred Boldy Reducing occupancy of digital storage devices
US7315965B2 (en) 2004-02-04 2008-01-01 Network Appliance, Inc. Method and system for storing data using a continuous data protection system
US7406488B2 (en) 2004-02-04 2008-07-29 Netapp Method and system for maintaining data in a continuous data protection system
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7277905B2 (en) 2004-03-31 2007-10-02 Microsoft Corporation System and method for a consistency check of a database backup
US7246258B2 (en) 2004-04-28 2007-07-17 Lenovo (Singapore) Pte. Ltd. Minimizing resynchronization time after backup system failures in an appliance-based business continuance architecture
US7266655B1 (en) 2004-04-29 2007-09-04 Veritas Operating Corporation Synthesized backup set catalog
US7356729B2 (en) 2004-06-14 2008-04-08 Lucent Technologies Inc. Restoration of network element through employment of bootable image
US20060013462A1 (en) 2004-07-15 2006-01-19 Navid Sadikali Image display system and method
US7389314B2 (en) 2004-08-30 2008-06-17 Corio, Inc. Database backup, refresh and cloning system and method
US7979404B2 (en) 2004-09-17 2011-07-12 Quest Software, Inc. Extracting data changes and storing data history to allow for instantaneous access to and reconstruction of any point-in-time data
JP4325524B2 (en) 2004-09-29 2009-09-02 日本電気株式会社 Switch device and system, backup and restore method and program
US7546323B1 (en) 2004-09-30 2009-06-09 Emc Corporation System and methods for managing backup status reports
US7401192B2 (en) 2004-10-04 2008-07-15 International Business Machines Corporation Method of replicating a file using a base, delta, and reference file
KR101277016B1 (en) 2004-11-05 2013-07-30 텔코디아 테크놀로지스, 인코포레이티드 Network discovery mechanisms
US7814057B2 (en) 2005-04-05 2010-10-12 Microsoft Corporation Page recovery using volume snapshots and logs
CN101253745B (en) 2005-07-18 2011-06-22 博通以色列研发公司 Method and system for transparent TCP offload
US20070038884A1 (en) 2005-08-10 2007-02-15 Spare Backup, Inc. System and method of remote storage of data using client software
US7743038B1 (en) 2005-08-24 2010-06-22 Lsi Corporation Inode based policy identifiers in a filing system
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US9063881B2 (en) * 2010-04-26 2015-06-23 Cleversafe, Inc. Slice retrieval in accordance with an access sequence in a dispersed storage network
US20070112895A1 (en) 2005-11-04 2007-05-17 Sun Microsystems, Inc. Block-based incremental backup
JP4546387B2 (en) 2005-11-17 2010-09-15 富士通株式会社 Backup system, method and program
US7730425B2 (en) 2005-11-30 2010-06-01 De Los Reyes Isabelo Function-oriented user interface
US20070204153A1 (en) 2006-01-04 2007-08-30 Tome Agustin J Trusted host platform
US20070180207A1 (en) 2006-01-18 2007-08-02 International Business Machines Corporation Secure RFID backup/restore for computing/pervasive devices
US7667686B2 (en) 2006-02-01 2010-02-23 Memsic, Inc. Air-writing and motion sensing input for portable devices
US7676763B2 (en) 2006-02-21 2010-03-09 Sap Ag Method and system for providing an outwardly expandable radial menu
US20070208918A1 (en) 2006-03-01 2007-09-06 Kenneth Harbin Method and apparatus for providing virtual machine backup
US20070220029A1 (en) 2006-03-17 2007-09-20 Novell, Inc. System and method for hierarchical storage management using shadow volumes
JP4911576B2 (en) 2006-03-24 2012-04-04 株式会社メガチップス Information processing apparatus and write-once memory utilization method
US7650369B2 (en) 2006-03-30 2010-01-19 Fujitsu Limited Database system management method and database system
US7552044B2 (en) 2006-04-21 2009-06-23 Microsoft Corporation Simulated storage area network
US7945726B2 (en) 2006-05-08 2011-05-17 Emc Corporation Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
US7653832B2 (en) 2006-05-08 2010-01-26 Emc Corporation Storage array virtualization using a storage block mapping protocol client and server
US8949312B2 (en) 2006-05-25 2015-02-03 Red Hat, Inc. Updating clients from a server
US7568124B2 (en) 2006-06-02 2009-07-28 Microsoft Corporation Driving data backups with data source tagging
US8302091B2 (en) 2006-06-05 2012-10-30 International Business Machines Corporation Installation of a bootable image for modifying the operational environment of a computing system
US7624134B2 (en) 2006-06-12 2009-11-24 International Business Machines Corporation Enabling access to remote storage for use with a backup program
US7873601B1 (en) 2006-06-29 2011-01-18 Emc Corporation Backup of incremental metadata in block based backup systems
JP2008015768A (en) 2006-07-05 2008-01-24 Hitachi Ltd Storage system and data management method using the same
US7783956B2 (en) 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US20080027998A1 (en) 2006-07-27 2008-01-31 Hitachi, Ltd. Method and apparatus of continuous data protection for NAS
US7809688B2 (en) 2006-08-04 2010-10-05 Apple Inc. Managing backup of content
US7752487B1 (en) 2006-08-08 2010-07-06 Open Invention Network, Llc System and method for managing group policy backup
AU2007295949B2 (en) 2006-09-12 2009-08-06 Adams Consulting Group Pty. Ltd. Method system and apparatus for handling information
US8332442B1 (en) 2006-09-26 2012-12-11 Symantec Corporation Automated restoration of links when restoring individual directory service objects
US7769731B2 (en) 2006-10-04 2010-08-03 International Business Machines Corporation Using file backup software to generate an alert when a file modification policy is violated
US7832008B1 (en) 2006-10-11 2010-11-09 Cisco Technology, Inc. Protection of computer resources
US8117163B2 (en) 2006-10-31 2012-02-14 Carbonite, Inc. Backup and restore system for a computer
JP4459215B2 (en) 2006-11-09 2010-04-28 株式会社ソニー・コンピュータエンタテインメント GAME DEVICE AND INFORMATION PROCESSING DEVICE
US7620765B1 (en) 2006-12-15 2009-11-17 Symantec Operating Corporation Method to delete partial virtual tape volumes
US20080154979A1 (en) 2006-12-21 2008-06-26 International Business Machines Corporation Apparatus, system, and method for creating a backup schedule in a san environment based on a recovery plan
US8369326B2 (en) 2006-12-29 2013-02-05 Prodea Systems, Inc. Multi-services application gateway
US8880480B2 (en) 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US7647338B2 (en) 2007-02-21 2010-01-12 Microsoft Corporation Content item query formulation
US20080229050A1 (en) 2007-03-13 2008-09-18 Sony Ericsson Mobile Communications Ab Dynamic page on demand buffer size for power savings
US9497028B1 (en) * 2007-05-03 2016-11-15 Google Inc. System and method for remote storage auditing
US7974950B2 (en) 2007-06-05 2011-07-05 International Business Machines Corporation Applying a policy criteria to files in a backup image
US8010900B2 (en) 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US7631155B1 (en) 2007-06-30 2009-12-08 Emc Corporation Thin provisioning of a file system and an iSCSI LUN through a common mechanism
US8676273B1 (en) 2007-08-24 2014-03-18 Iwao Fujisaki Communication device
TW200917063A (en) 2007-10-02 2009-04-16 Sunonwealth Electr Mach Ind Co Survey method for a patent searching result
JP4412509B2 (en) 2007-10-05 2010-02-10 日本電気株式会社 Storage system capacity expansion control method
US8117164B2 (en) 2007-12-19 2012-02-14 Microsoft Corporation Creating and utilizing network restore points
US9503354B2 (en) 2008-01-17 2016-11-22 Aerohive Networks, Inc. Virtualization of networking services
JP2009205333A (en) 2008-02-27 2009-09-10 Hitachi Ltd Computer system, storage device, and data management method
JP4481338B2 (en) 2008-03-28 2010-06-16 株式会社日立製作所 Backup system, storage device, and data backup method
JP4413976B2 (en) 2008-05-23 2010-02-10 株式会社東芝 Information processing apparatus and version upgrade method for information processing apparatus
US9038087B2 (en) * 2008-06-18 2015-05-19 Microsoft Technology Licensing, Llc Fence elision for work stealing
US20090319653A1 (en) 2008-06-20 2009-12-24 International Business Machines Corporation Server configuration management method
US8826181B2 (en) 2008-06-28 2014-09-02 Apple Inc. Moving radial menus
US8245156B2 (en) 2008-06-28 2012-08-14 Apple Inc. Radial menu selection
US8060476B1 (en) 2008-07-14 2011-11-15 Quest Software, Inc. Backup systems and methods for a virtual computing environment
US8103718B2 (en) * 2008-07-31 2012-01-24 Microsoft Corporation Content discovery and transfer between mobile communications nodes
US9177271B2 (en) 2008-08-14 2015-11-03 Hewlett-Packard Development Company, L.P. Heterogeneous information technology (IT) infrastructure management orchestration
US8117410B2 (en) 2008-08-25 2012-02-14 Vmware, Inc. Tracking block-level changes using snapshots
US8279174B2 (en) 2008-08-27 2012-10-02 Lg Electronics Inc. Display device and method of controlling the display device
US8452731B2 (en) * 2008-09-25 2013-05-28 Quest Software, Inc. Remote backup and restore
US8099572B1 (en) 2008-09-30 2012-01-17 Emc Corporation Efficient backup and restore of storage objects in a version set
US8495624B2 (en) 2008-10-23 2013-07-23 International Business Machines Corporation Provisioning a suitable operating system environment
US20100104105A1 (en) 2008-10-23 2010-04-29 Digital Cinema Implementation Partners, Llc Digital cinema asset management system
US20100114832A1 (en) * 2008-10-31 2010-05-06 Lillibridge Mark D Forensic snapshot
US20100179973A1 (en) 2008-12-31 2010-07-15 Herve Carruzzo Systems, methods, and computer programs for delivering content via a communications network
US9383897B2 (en) 2009-01-29 2016-07-05 International Business Machines Corporation Spiraling radial menus in computer systems
US8352717B2 (en) 2009-02-09 2013-01-08 Cs-Solutions, Inc. Recovery system using selectable and configurable snapshots
US8819113B2 (en) 2009-03-02 2014-08-26 Kaseya International Limited Remote provisioning of virtual machines
US8504785B1 (en) 2009-03-10 2013-08-06 Symantec Corporation Method and apparatus for backing up to tape drives with minimum write speed
US8370835B2 (en) 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8099391B1 (en) 2009-03-17 2012-01-17 Symantec Corporation Incremental and differential backups of virtual machine files
US8260742B2 (en) * 2009-04-03 2012-09-04 International Business Machines Corporation Data synchronization and consistency across distributed repositories
JP5317807B2 (en) 2009-04-13 2013-10-16 株式会社日立製作所 File control system and file control computer used therefor
US20100268689A1 (en) 2009-04-15 2010-10-21 Gates Matthew S Providing information relating to usage of a simulated snapshot
US8601389B2 (en) 2009-04-30 2013-12-03 Apple Inc. Scrollable menus and toolbars
US8200926B1 (en) * 2009-05-28 2012-06-12 Symantec Corporation Methods and systems for creating full backups
US8549432B2 (en) 2009-05-29 2013-10-01 Apple Inc. Radial menus
US8345707B2 (en) * 2009-06-03 2013-01-01 Voxer Ip Llc Method for synchronizing data maintained at a plurality of nodes
US8321688B2 (en) 2009-06-12 2012-11-27 Microsoft Corporation Secure and private backup storage and processing for trusted computing and data services
US8533608B1 (en) 2009-06-29 2013-09-10 Generation E Consulting Run-book automation platform with actionable document
US8457018B1 (en) * 2009-06-30 2013-06-04 Emc Corporation Merkle tree reference counts
US8849955B2 (en) 2009-06-30 2014-09-30 Commvault Systems, Inc. Cloud storage and networking agents, including agents for utilizing multiple, different cloud storage sites
US8244914B1 (en) 2009-07-31 2012-08-14 Symantec Corporation Systems and methods for restoring email databases
JP2011039804A (en) 2009-08-12 2011-02-24 Hitachi Ltd Backup management method based on failure contents
US8209568B2 (en) 2009-08-21 2012-06-26 Novell, Inc. System and method for implementing an intelligent backup technique for cluster resources
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8335784B2 (en) 2009-08-31 2012-12-18 Microsoft Corporation Visual search and three-dimensional results
US8886788B2 (en) 2009-08-31 2014-11-11 Accenture Global Services Limited Enterprise-level management, control and information aspects of cloud console
US8645647B2 (en) 2009-09-02 2014-02-04 International Business Machines Corporation Data storage snapshot with reduced copy-on-write
JP2013011919A (en) 2009-09-17 2013-01-17 Hitachi Ltd Storage apparatus and snapshot control method of the same
US8625769B1 (en) 2009-10-13 2014-01-07 Signal Perfection, Ltd. System for managing, scheduling, monitoring and controlling audio and video communication and data collaboration
US8589913B2 (en) 2009-10-14 2013-11-19 Vmware, Inc. Tracking block-level writes
US8112505B1 (en) 2009-10-20 2012-02-07 Wanova Technologies, Ltd. On-demand block-level file system streaming to remote desktops
US8856080B2 (en) 2009-10-30 2014-10-07 Microsoft Corporation Backup using metadata virtual hard drive and differential virtual hard drive
US8296410B1 (en) 2009-11-06 2012-10-23 Carbonite, Inc. Bandwidth management in a client/server environment
US8572337B1 (en) 2009-12-14 2013-10-29 Symantec Corporation Systems and methods for performing live backups
US9465532B2 (en) 2009-12-18 2016-10-11 Synaptics Incorporated Method and apparatus for operating in pointing and enhanced gesturing modes
US8190574B2 (en) 2010-03-02 2012-05-29 Storagecraft Technology Corporation Systems, methods, and computer-readable media for backup and restoration of computer information
CA2794339C (en) 2010-03-26 2017-02-21 Carbonite, Inc. Transfer of user data between logical data sites
CA2794341C (en) 2010-03-29 2017-09-12 Carbonite, Inc. Managing backup sets based on user feedback
US8935212B2 (en) 2010-03-29 2015-01-13 Carbonite, Inc. Discovery of non-standard folders for backup
US8037345B1 (en) 2010-03-31 2011-10-11 Emc Corporation Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata
US8224935B1 (en) * 2010-05-12 2012-07-17 Symantec Corporation Systems and methods for efficiently synchronizing configuration data within distributed computing systems
US9298563B2 (en) 2010-06-01 2016-03-29 Hewlett Packard Enterprise Development Lp Changing a number of disk agents to backup objects to a storage device
US20130091183A1 (en) 2010-06-15 2013-04-11 Nigel Edwards Volume Management
US8773370B2 (en) 2010-07-13 2014-07-08 Apple Inc. Table editing systems with gesture-based insertion and deletion of columns and rows
US20120065802A1 (en) 2010-09-14 2012-03-15 Joulex, Inc. System and methods for automatic power management of remote electronic devices using a mobile device
US8606752B1 (en) 2010-09-29 2013-12-10 Symantec Corporation Method and system of restoring items to a database while maintaining referential integrity
US8589350B1 (en) 2012-04-02 2013-11-19 Axcient, Inc. Systems, methods, and media for synthesizing views of file system backups
US8954544B2 (en) 2010-09-30 2015-02-10 Axcient, Inc. Cloud-based virtual machines and offices
US9705730B1 (en) 2013-05-07 2017-07-11 Axcient, Inc. Cloud storage using Merkle trees
US10284437B2 (en) 2010-09-30 2019-05-07 Efolder, Inc. Cloud-based virtual machines and offices
US8924360B1 (en) 2010-09-30 2014-12-30 Axcient, Inc. Systems and methods for restoring a file
US9235474B1 (en) 2011-02-17 2016-01-12 Axcient, Inc. Systems and methods for maintaining a virtual failover volume of a target computing system
JP5816424B2 (en) 2010-10-05 2015-11-18 富士通株式会社 Information processing device, tape device, and program
US8417674B2 (en) * 2010-11-16 2013-04-09 Actifio, Inc. System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states
US8904126B2 (en) 2010-11-16 2014-12-02 Actifio, Inc. System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage
US8495262B2 (en) 2010-11-23 2013-07-23 International Business Machines Corporation Using a table to determine if user buffer is marked copy-on-write
US8635187B2 (en) 2011-01-07 2014-01-21 Symantec Corporation Method and system of performing incremental SQL server database backups
US8412680B1 (en) 2011-01-20 2013-04-02 Commvault Systems, Inc System and method for performing backup operations and reporting the results thereof
US9311324B2 (en) * 2011-01-26 2016-04-12 Mitre Corporation Synchronizing data among a federation of servers with intermittent or low signal bandwidth
US8510597B2 (en) 2011-02-08 2013-08-13 Wisconsin Alumni Research Foundation Providing restartable file systems within computing devices
US20120210398A1 (en) 2011-02-14 2012-08-16 Bank Of America Corporation Enhanced Backup and Retention Management
US8458137B2 (en) 2011-02-22 2013-06-04 Bank Of America Corporation Backup and retention monitoring
CN103548000A (en) 2011-03-21 2014-01-29 惠普发展公司,有限责任合伙企业 Data backup prioritization
US8745003B1 (en) 2011-05-13 2014-06-03 Emc Corporation Synchronization of storage using comparisons of fingerprints of blocks
US8621274B1 (en) 2011-05-18 2013-12-31 Netapp Inc. Virtual machine fault tolerance
WO2012178040A1 (en) * 2011-06-23 2012-12-27 CohortFS, LLC Client-based data replication
US8706703B2 (en) * 2011-06-27 2014-04-22 International Business Machines Corporation Efficient file system object-based deduplication
US8966457B2 (en) 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
WO2013086040A2 (en) * 2011-12-05 2013-06-13 Doyenz Incorporated Universal pluggable cloud disaster recovery system
US8600947B1 (en) 2011-12-08 2013-12-03 Symantec Corporation Systems and methods for providing backup interfaces
US20130166511A1 (en) 2011-12-21 2013-06-27 International Business Machines Corporation Determining an overall assessment of a likelihood of a backup set resulting in a successful restore
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
KR101930263B1 (en) * 2012-03-12 2018-12-18 삼성전자주식회사 Apparatus and method for managing contents in a cloud gateway
US9183094B2 (en) 2012-05-25 2015-11-10 Symantec Corporation Backup image duplication
US20140089619A1 (en) * 2012-09-27 2014-03-27 Infinera Corporation Object replication framework for a distributed computing environment
US9495379B2 (en) 2012-10-08 2016-11-15 Veritas Technologies Llc Locality aware, two-level fingerprint caching
US20140149358A1 (en) 2012-11-29 2014-05-29 Longsand Limited Configuring computing devices using a template
US9021452B2 (en) 2012-12-27 2015-04-28 Commvault Systems, Inc. Automatic identification of storage requirements, such as for use in selling data storage management solutions
US9336226B2 (en) 2013-01-11 2016-05-10 Commvault Systems, Inc. Criteria-based data synchronization management
US9031829B2 (en) 2013-02-08 2015-05-12 Machine Zone, Inc. Systems and methods for multi-user multi-lingual communications
US10275397B2 (en) 2013-02-22 2019-04-30 Veritas Technologies Llc Deduplication storage system with efficient reference updating and space reclamation
US9940069B1 (en) * 2013-02-27 2018-04-10 EMC IP Holding Company LLC Paging cache for storage system
US9110964B1 (en) * 2013-03-05 2015-08-18 Emc Corporation Metadata optimization for network replication using differential encoding
US9397907B1 (en) 2013-03-07 2016-07-19 Axcient, Inc. Protection status determinations for computing devices
US9292153B1 (en) 2013-03-07 2016-03-22 Axcient, Inc. Systems and methods for providing efficient and focused visualization of data
US20160110261A1 (en) 2013-05-07 2016-04-21 Axcient, Inc. Cloud storage using merkle trees
US9372757B2 (en) * 2013-10-18 2016-06-21 Netapp, Inc. Incremental block level backup
US9774410B2 (en) 2014-06-10 2017-09-26 PB, Inc. Radiobeacon data sharing by forwarding low energy transmissions to a cloud host
US9954946B2 (en) * 2015-11-24 2018-04-24 Netapp, Inc. Directory level incremental replication

Also Published As

Publication number Publication date
US20170090786A1 (en) 2017-03-30
US9705730B1 (en) 2017-07-11
US10599533B2 (en) 2020-03-24
US20170257254A1 (en) 2017-09-07
US20170177452A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
US20190108103A9 (en) Computing device replication using file system change detection methods and systems
US10540236B2 (en) System and method for multi-hop data backup
US9659077B2 (en) System and method for efficient database record replication using different replication strategies based on the database records
US10740184B2 (en) Journal-less recovery for nested crash-consistent storage systems
TWI609277B (en) Location independent files
US10496611B1 (en) Method and system for file name based command execution in a storage system
US11435901B1 (en) Backup services for distributed file systems in cloud computing environments
US11150981B2 (en) Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US11803429B2 (en) Managing alert messages for applications and access permissions
US11681653B2 (en) Namespace representation and enhanced browsability for replicated file systems
US10496493B1 (en) Method and system for restoring applications of particular point in time
TWI571754B (en) Method for performing file synchronization control, and associated apparatus
US11531644B2 (en) Fractional consistent global snapshots of a distributed namespace
CN111801661B (en) Transactional operations in a multi-host distributed data management system
US11593230B2 (en) Efficient mechanism for data protection against cloud region failure or site disasters and recovery time objective (RTO) improvement for backup applications
CH718428A2 (en) System and method of inspecting sections of archives for the detection of malware using empty sparse files
CN111801661A (en) Transaction operations in a multi-host distributed data management system

Legal Events

Date Code Title Description
AS Assignment

Owner name: AXCIENT, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PARAB, NITIN;SCHWARTZ, JOSHUA;SHARMA, SHASHI;AND OTHERS;SIGNING DATES FROM 20151216 TO 20151218;REEL/FRAME:037496/0218

AS Assignment

Owner name: STRUCTURED ALPHA LP, CANADA

Free format text: SECURITY INTEREST;ASSIGNOR:AXCIENT, INC.;REEL/FRAME:042542/0364

Effective date: 20170530

AS Assignment

Owner name: SILVER LAKE WATERMAN FUND, L.P., CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:AXCIENT, INC.;REEL/FRAME:042577/0901

Effective date: 20170530

AS Assignment

Owner name: AXCIENT, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILVER LAKE WATERMAN FUND, L.P.;REEL/FRAME:043106/0389

Effective date: 20170726

AS Assignment

Owner name: AXCIENT, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:STRUCTURED ALPHA LP;REEL/FRAME:043840/0227

Effective date: 20171011

AS Assignment

Owner name: EFOLDER, INC., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AXCIENT HOLDINGS, LLC;REEL/FRAME:044370/0412

Effective date: 20170901

Owner name: AXCIENT HOLDINGS, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AXCI (AN ABC) LLC;REEL/FRAME:044368/0556

Effective date: 20170726

Owner name: AXCI (AN ABC) LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AXCIENT, INC.;REEL/FRAME:044367/0507

Effective date: 20170726

AS Assignment

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:EFOLDER, INC.;REEL/FRAME:044563/0633

Effective date: 20160725

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT,

Free format text: SECURITY INTEREST;ASSIGNOR:EFOLDER, INC.;REEL/FRAME:044563/0633

Effective date: 20160725

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MUFG UNION BANK, N.A., ARIZONA

Free format text: SECURITY INTEREST;ASSIGNOR:EFOLDER, INC.;REEL/FRAME:061559/0703

Effective date: 20221027

AS Assignment

Owner name: EFOLDER, INC., COLORADO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION;REEL/FRAME:061634/0623

Effective date: 20221027