Apparatus, System, and Method for a Virtual Storage Layer
First Claim
1. A method for providing a virtual storage layer for a storage client, comprising:
- presenting a logical address space of a non-volatile storage device to a storage client, wherein a logical capacity of the logical address space exceeds a physical storage capacity of the non-volatile storage device;
performing persistent storage operations on storage entities addressable within the logical address space in response to storage requests from a storage client;
maintaining storage metadata that associates logical addresses for persistent storage entities in the logical address space with physical storage locations on the non-volatile storage device; and
in response to performing the persistent storage operations, the storage metadata further associating an ordered sequence of the storage operations with each storage entity.
11 Assignments
0 Petitions
Accused Products
Abstract
A virtual storage layer (VSL) 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 VSL 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 VSL maintains storage metadata to allocate ranges of the logical address space to storage entities. The VSL 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 VSL 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 VSL.
183 Citations
26 Claims
-
1. A method for providing a virtual storage layer for a storage client, comprising:
-
presenting a logical address space of a non-volatile storage device to a storage client, wherein a logical capacity of the logical address space exceeds a physical storage capacity of the non-volatile storage device; performing persistent storage operations on storage entities addressable within the logical address space in response to storage requests from a storage client; maintaining storage metadata that associates logical addresses for persistent storage entities in the logical address space with physical storage locations on the non-volatile storage device; and in response to performing the persistent storage operations, the storage metadata further associating an ordered sequence of the storage operations with each storage entity. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A non-transitory computer-readable storage medium comprising instructions to cause a computing device to perform a method for a virtual storage layer, 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; segmenting the logical address space into logical identifiers comprising a first portion and a second portion, the first portion referencing respective storage entities, and the second portion 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 representing a storage entity using a respective 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 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 second portion of the specified logical identifier.
-
-
26. A storage system implemented at least in part by a computing device, comprising:
-
a non-volatile storage device; a virtual storage layer comprising an interface to present to storage clients, 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 first portion referencing storage entities, and a second portion referencing storage entity offsets, an interface for persisting storage entities in the logical address space, wherein in response to a request from a storage client to persist a storage entity at a specified logical identifier, the virtual storage layer binds logical identifiers in a contiguous range of logical identifiers allocated to the storage entity to an ordered, log-based sequence of storage operations on the non-volatile storage device comprising the persisted storage entity.
-
Specification