Systems and methods for storage allocation
First Claim
1. An apparatus, comprising:
- a storage controller configured to manage a logical address space of a storage device, and to translate logical identifiers of the logical address space to data stored on the storage device,wherein the storage controller is configured to segment the logical address space into a plurality of different regions, the regions having different respective allocation granularities that determine a capacity of storage resource allocations within the respective regions, andwherein the storage controller is further configured to allocate storage resources within the regions of the logical address space in accordance with the respective allocation granularities of the regions, such that the storage controller allocates resource units of a first capacity responsive to allocation operations within a first region of the logical address space and allocates resource units of a second, different capacity responsive to allocation operations within a second region of the logical address space.
6 Assignments
0 Petitions
Accused Products
Abstract
Resources of an address space are managed in dynamically sized ranges, extents, sets, and/or blocks. The address space may be divided into regions, each corresponding to a different, respective allocation granularity. Allocating a block within a first region of the address space may comprise allocating a particular number of logical addresses (e.g., a particular range, set, and/or block of addresses), and allocating a block within a different region may comprise allocating a different number of logical addresses. The regions may be configured to reduce the metadata overhead needed to identify free address blocks (and/or maintain address block allocations), while facilitating efficient use of the address space for differently sized data structures.
369 Citations
25 Claims
-
1. An apparatus, comprising:
-
a storage controller configured to manage a logical address space of a storage device, and to translate logical identifiers of the logical address space to data stored on the storage device, wherein the storage controller is configured to segment the logical address space into a plurality of different regions, the regions having different respective allocation granularities that determine a capacity of storage resource allocations within the respective regions, and wherein the storage controller is further configured to allocate storage resources within the regions of the logical address space in accordance with the respective allocation granularities of the regions, such that the storage controller allocates resource units of a first capacity responsive to allocation operations within a first region of the logical address space and allocates resource units of a second, different capacity responsive to allocation operations within a second region of the logical address space. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer program product comprising a non-transitory computer readable storage medium storing computer usable program code executable to perform operations, the operations comprising:
-
translating logical identifiers of a logical address space to storage addresses of data corresponding to the logical identifiers stored on a non-volatile storage device; and allocating storage resources within respective allocation regions of the logical address space, each allocation region having a respective granularity that determines a capacity for storage resource allocations within the region, such that allocating a storage resource within a first allocation region of the logical address space comprises allocating a first capacity of storage resources, and allocating a storage resource within a second allocation region of the logical address space comprises allocating a second capacity of storage resources, different from the first capacity of storage resources. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
-
-
22. A method, comprising:
-
translating logical identifiers of a logical address space to respective storage locations of a non-volatile storage device by use of a forward map, the respective storage locations being used to store data associated with the logical identifiers; and allocating storage resources for objects to be stored on the non-volatile storage device, wherein allocating storage resources for an object comprises; selecting one of a plurality of allocation regions within the logical address space for the object, each allocation region having a respective granularity, such that a capacity of a storage resource allocation within a first one of the plurality of allocation regions differs from a capacity of a storage resource allocation within a second one of the plurality of allocation regions, and allocating storage resources for the object within the selected allocation region of the logical address space, wherein allocating the storage resources comprises allocating a first logical identifier within the selected allocation region of the logical address space, and translating the first logical identifier to a storage location of stored data of the object on the non-volatile storage device. - View Dependent Claims (23, 24, 25)
-
Specification