Abstract:
A storage system provides highly flexible data layouts that can be tailored to various different applications and use cases. The system dynamically balances performance with block sharing, based on service level objectives (SLOs). The system defines several types of data containers, including “regions”, “logical extents” and “slabs”. Each region includes one or more logical extents. Allocated to each logical extent is at least part of one or more slabs allocated to the region that includes the extent. Each slab is a set of blocks of storage from one or more physical storage devices. The slabs can be defined from a heterogeneous pool of physical storage. The system also maintains multiple “volumes” above the region layer. Each volume includes one or more logical extents from one or more regions. Layouts of the extents within the regions are not visible to any of the volumes.