Extent Map Prefetching for Sparse File Restore
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing deduplication storage systems face inefficiencies in restore performance due to ineffective prefetching mechanisms, particularly when dealing with extent-based reads, leading to wasteful I/O operations and reduced throughput.
Innovation Solution
Implementing an extent-based prefetching mechanism that uses an extent map to identify valid data regions and avoid invalid data, allowing the filesystem or application to generate prefetches that target only the valid data regions, optionally utilizing multi-streamed restore components for parallel read-ahead operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If traditional read-ahead prefetching is used for extent-based reads, then read performance may be improved in sequential scenarios, but wasteful I/O operations occur when reading non-sequential extents
Solution Approach 1:
The file is segmented into extents with valid data and holes (invalid data). The extent map divides the file into discrete segments, allowing the prefetching mechanism to target only valid extents rather than reading continuously through the entire file, thus avoiding wasteful I/O operations on invalid data regions.
Solution Approach 2:
The extent map is prepared in advance to identify which extents contain valid data before prefetching begins. This preliminary action allows the system to pre-calculate which regions should be prefetched, avoiding wasteful I/O operations on holes while maintaining read performance through proactive loading of valid extents into the read-ahead cache.
2Speed
If prefetch horizon is increased to improve read performance in slow storage scenarios, then more data is prefetched, but I/O waste increases when reading only specific extents
Solution Approach 1:
Different regions of the file are treated differently based on their validity status. Valid extents are prefetched with appropriate horizon calculations, while holes are explicitly excluded from prefetching. This local differentiation ensures that I/O resources are concentrated on useful data regions, improving both read performance and I/O efficiency simultaneously.
Solution Approach 2:
The extent map is prepared in advance to identify which extents contain valid data before prefetching begins. This preliminary action allows the system to pre-calculate which regions should be prefetched, avoiding wasteful I/O operations on holes while maintaining read performance through proactive loading of valid extents into the read-ahead cache.
3Ease of manufacture
If simple prefetching is used for files with holes, then implementation is simple, but restore performance deteriorates due to reading invalid data
Solution Approach 1:
The extent map serves as an intermediary data structure that sits between the simple prefetching mechanism and the actual file data. It provides the necessary information about valid extents to the prefetching logic, enabling the system to maintain implementation simplicity while achieving improved restore performance through targeted prefetching of only valid data regions.
Data Source
AI summary
Improving read performance using pre-fetches by encoding an extent map identifying valid data of the file as extents that may be interspersed with holes constituting invalid data, and storing the extent map in the client. The extent map generates pre-fetches of data that land on only extents of the file and avoids the holes, by one of: transferring, upon the read request, the extent map to a filesystem storing the file, and bringing the extents from the extent map into memory ahead of the read request; or using, in the network client, the extent map to generate prefetch requests and execute read-ahead operations on the filesystem. The method may also apply where the application only wants to read what has changed since the last backup. In this case, the application has a map of what has changed, and can choose to read just the right extents.


