Extent reads at random offsets by synthesizing extents to leverage sequential restore performance
Improving extent-based read performance using pre-fetches by utilizing synthesized sequential extent files in a deduplication storage system. Extent information is obtained for changes between two generations (e.g., Generation 0 and Generation 1) of backup files. In a client-server system, the client will instruct the filesystem to create a new synthesized file corresponding to the extents. Upon receiving this request, a filesystem server will create the new synthesized file. The new synthesized file can be read sequentially to leverage the benefits of prefetching. The extents can be patched into a target file that may be stored on different storage using the extent information.
1 . A computer-implemented method for improving extent-based read performance of a file using data pre-fetches in a client-server network, comprising:
obtaining extent information for delta changes between a first generation backup file and a second generation backup file;
receiving, in a filesystem server and from a client, an instruction to create a new synthesized file corresponding to the extent information;
storing the extent information in a storage comprising part of a deduplication backup process executed by a data storage server running a Data Domain filesystem (DDFS), and wherein the client comprises a DDBoost client;
returning the extent information to the backup process for patching into a target file using a DDBoost application programming interface (API) to read the new synthesized file, wherein the API includes a read buffer with offset/length extent information of data of the new synthesized file; and
creating, upon receiving this instruction, a new synthesized file comprising extents of the extent information as contiguous data that can be read sequentially to leverage the benefits of the pre-fetches.
2 . The method of claim 1 further comprising patching the extents into the target file that may be stored on different storage using the extent information.
3 . The method of claim 1 wherein the extent information comprises a sequence of offsets and lengths, with each offset and length pair defining a corresponding extent of data added to the first generation backup file to synthesize the second generation backup file.
4 . The method of claim 3 wherein the pre-fetches move data from the extents into a read-ahead cache to be sent to an application of the client in response to a read request, and further wherein a prefetch generated by a pre-fetch request comprises a hint that a read input/output (I/O) operation is imminent for purposes of filling the read-ahead cache and preventing a need to issue a blocking I/O operation for the read request.
5 . The method of claim 4 wherein the benefits of the pre-fetches comprise at least one of: preventing wasted input/output operations created by attempting to pre-fetch data beyond an end of an extent, or failing to pre-fetch any data at a beginning of an extent.
6 . The method of claim 3 wherein the sequence of offsets comprise an extent map, with each offset defining a corresponding extent.
7 . The method of claim 3 wherein the filesystem includes a multi-streamed restore component providing multiple streams to issue read-ahead operations for the pre-fetches in parallel, and further wherein the pre-fetches move the data into the read-ahead cache using the multiple streams.
8 . The method of claim 1 wherein the system comprises a Change Based Tracking (CBT) system, and wherein the delta changes are synthesized into a backup file stored by the application as part of a backup operation.
9 . A system for improving read performance of a file using data pre-fetches in a client-server network, comprising:
a server hosting a filesystem storing data in storage for an application executed in the network;
a network client hosting the application;
a backup processing component obtaining extent information for delta changes between a first generation backup file and a second generation backup file;
a data storage server running a Data Domain filesystem (DDFS), and wherein the client comprises a DDBoost client;
a storage storing the extent information in a storage comprising part of a deduplication backup process executed by the data storage server, wherein the extent information is returned to the backup process for patching into a target file using a DDBoost application programming interface (API) to read the new synthesized file, wherein the API includes a read buffer with offset/length extent information of data of the new synthesized file; and
a server component receiving, from the network client, an instruction to create a new synthesized file corresponding to the extent information, and creating, upon receiving this instruction, a new synthesized file comprising extents of the extent information as contiguous data that can be read sequentially to leverage the benefits of the pre-fetches.
10 . The system of claim 9 further comprising a read-ahead cache, wherein the pre-fetches move data from a prefetched extents into the read-ahead cache to be sent to the application in response to the read request, and further wherein the prefetch comprises a hint that a read input/output (I/O) operation is imminent for purposes of filling the read-ahead cache and preventing a need to issue a blocking I/O operation for the read request, and yet further wherein the benefits of the pre-fetches comprise at least one of: preventing wasted input/output operations created by attempting to pre-fetch data beyond an end of an extent, or failing to pre-fetch any data at a beginning of an extent.