Apparatus, system, and method for a storage layer
First Claim
1. A method comprising:
- presenting a logical address space of a solid-state storage device to a storage client, wherein a logical capacity of the logical address space exceeds a total physical storage capacity of a full physical address space of the solid-state storage device;
performing persistent storage operations on storage entities addressable within the logical address space in response to storage requests from the storage client;
maintaining storage metadata that associates logical addresses for the storage entities in the logical address space with physical storage locations on the non-volatile storage device; and
associating an ordered sequence of write storage operations with the storage entities.
11 Assignments
0 Petitions
Accused Products
Abstract
A storage layer for a non-volatile storage device presents a large, logical address space having a logical capacity that may exceed the storage capacity of the non-volatile storage device. The storage layer implements persistent storage operations within the logical address space; storage operations performed within the logical address space may be persisted on the non-volatile storage device. The storage layer maintains storage metadata to allocate ranges of the logical address space to storage entities. The storage layer provides for allocation of contiguous logical address ranges, which may be implemented by segmenting logical identifiers into a first portion referencing storage entities, and a second portion referencing storage entity offsets. The storage layer persists data on the non-volatile storage device in a sequential, log-based format. Accordingly, storage clients, such as file systems, databases, and other applications, may delegate logical allocations, physical storage bindings, and/or crash-recovery to the storage layer.
358 Citations
26 Claims
-
1. A method comprising:
-
presenting a logical address space of a solid-state storage device to a storage client, wherein a logical capacity of the logical address space exceeds a total physical storage capacity of a full physical address space of the solid-state storage device; performing persistent storage operations on storage entities addressable within the logical address space in response to storage requests from the storage client; maintaining storage metadata that associates logical addresses for the storage entities in the logical address space with physical storage locations on the non-volatile storage device; and associating an ordered sequence of write storage operations with the storage entities. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory computer-readable storage medium comprising instructions to cause a computing device to perform a method, the method comprising:
-
presenting a logical address space of a non-volatile storage device to storage clients, wherein a logical capacity of the logical address space exceeds a physical storage capacity of the non-volatile storage device; dividing logical identifiers of the logical address space into respective high-order portions and low-order portions, the first high-order portions referencing respective storage entities, and the low-order portions referencing storage entity offsets; persisting storage entities addressable within the logical address space in response to requests from the storage clients; maintaining storage metadata entries, each entry representing a storage entity using a respective high-order first portion of a logical identifier in the logical address space; and in response to persisting a storage entity at a specified logical identifier in the logical address space, identifying a storage metadata entry corresponding to the first high-order portion of the specified logical identifier, and binding an offset in the identified storage metadata entry to a physical storage location on the non-volatile storage device comprising the persisted storage entity using the low-order portion of the specified logical identifier.
-
-
20. A storage system implemented at least in part by a computing device, comprising:
-
a non-volatile storage device; a storage layer comprising, an interface configured to present a logical address space of the non-volatile storage device, the logical address space comprising a logical capacity that exceeds a physical storage capacity of the non-volatile storage device, wherein logical identifiers in the logical address space are segmented into a respective first portion configured to reference storage entities, and a second portion configured to reference offsets within storage entities, and an interface for persisting storage entities in association with identifiers of the logical address space, wherein in response to a request from a storage client to persist a designated storage entity at a specified logical identifier, the storage layer is configured to bind logical identifiers in a contiguous range of logical identifiers allocated to the designated storage entity to an ordered, log-based sequence of storage operations on the non-volatile storage device comprising the designated storage entity to be persisted.
-
-
21. An apparatus, comprising:
-
an interface configured to present a logical address space of a solid-state storage medium, wherein a size of the logical address space presented by the interface exceeds a total storage capacity corresponding to a full physical address space of the solid-state storage medium; a storage controller configured to store data within respective storage locations of the solid-state storage medium in association with identifiers of the logical address space; and a storage layer configured to associate the identifiers of the logical address space with the respective storage locations of the solid-state storage medium, wherein the storage controller comprises one or more hardware and machine-readable instructions stored on a non-transitory storage medium. - View Dependent Claims (22, 23, 24, 25)
-
-
26. An apparatus, comprising:
-
a storage layer configured to present a logical address space corresponding to a non-volatile storage medium, wherein a size of the logical address space presented by the storage layer exceeds a storage capacity of the non-volatile storage medium; a storage module configured to store data at respective physical addresses of the non-volatile storage medium in association with identifiers of the logical address space, wherein the storage layer is configured to associate the identifiers of the logical address space with the respective physical addresses of the non-volatile storage medium; and an allocation module configured to divide the identifiers of the logical address space, such that the identifiers comprise respective unique identifier portions and respective offset portions, and wherein the allocation module is configured to allocate ranges of identifiers in accordance with a size of the offset portions of the identifiers, wherein the storage controller comprises one or more of a circuit and machine-executable instructions recorded on a non-transitory storage medium.
-
Specification