Conventionally, files and directories in a storage subsystem can be backed up with file-level operations. File-level backups yield individual files and directories on backup storage (e.g., tapes) by traversing a file system, which typically employs hierarchical storage structures. File-level backup techniques backup data on a file-by-file basis, because a file is the smallest addressable unit of data that the backup software can handle. File-level backup techniques and protocols generally have limited backup performance due to various file system overheads.
For example, a file system may support deduplication, which is a process in which the file system eliminates redundant data blocks in order to reduce the amount of storage space consumed by its stored data. A “block,” in this context, is the smallest amount of contiguous data that can be addressed by a file system. A file is formed of one or more blocks. In a deduplicated storage system, a single copy of a data block is retained, while the redundant copies are replaced by references to the retained copy. In a file-level backup, the deduplication process is reversed, as the file-level backup system copies individual files to the backup storage without regard to the underlying configuration of the data in the file system. Thus, a file-level backup of a deduplicated system consumes significantly more space on a backup tape than the original data consumed on the storage subsystem.
Further, with file-level backup techniques, the files often have to be backed up in a certain order, such as inode based ordering and directory tree based ordering. For each file, file-level backup techniques have to backup the data from the beginning to the end (i.e., based on the order of the data within the file). The constraints imposed by the ordering requirements limit backup performance. For example, the dump format of Berkeley Software Distribution (BSD) UNIX further imposes strict ordering constraints among files, as well as among data blocks of a file.
In addition, file-level backups do not preserve metadata used by the storage system. Although a restore operation will restore user data, it cannot restore the metadata in the original volume. Loss of the metadata may result in the loss of the functionality that users may have had on the original volume.
An alternative method for backing up a storage system is block-level backup, also called image-based backup. Block-level backup techniques generally allow for better performance than file-level backups. A block-level backup creates a backup image in a backup storage facility by using data blocks as the smallest addressable unit of the backup software, rather than files. In general, these techniques are faster to execute, because the backup system does not need to interact with the file system to generate the backup. The backup image can be quickly restored because the restore system can simply copy each data block to the correct position on the storage volume without executing file system operations. However, block-level restores are also limited, because the restore can only be carried out if the storage server is using the same version of the file system as the original backup. If the file system is upgraded, aspects of the new file system (e.g. file or directory metadata configuration) may not be compatible with the backup image. Thus, it would be useful to have a backup system that provides the advantages of block-level backup, such as retaining deduplication, while also being compatible with upgraded or modified file system software.