-
Notifications
You must be signed in to change notification settings - Fork 594
Description
We would like to create the first class notion of a tiered storage device implementing the IDevice interface. The device would take an ordered sequence of devices in the tiered hierarchy, e.g., [ LocalStorageDevice("C:..."), LocalStorageDevice("D:..."), AzurePageBlobStorageDevice("...") ]
It would also take in a parameter for commit level, i.e., after up to what level of completion do we return a "commit" for a page write. For example, we may wish to commit (1) as soon as the page is written to local storage, or (2) after the page is written to local storage and cloud storage.
Each tier would be associated with a range of addresses (segments) that are present at that tier. Reads are served by the highest tier that has the data. Each tier other than the last is also probably limited in size, e.g., 200GB for local SSD #1 via configuration. We can delete old segments from a tier by incrementing the valid start address for that segment and deleting the segment when it is safe to do so.