IP Library Granted Patent US 8,856,440
Granted Patent B2
US 8,856,440 · App. 13/230,832 · Granted Oct 7, 2014

Volatile memory representation of nonvolatile storage device set

Inventor: Karan Mehra (Sammamish, WA)
Assignee: Microsoft Corporation
G06F3/0665G06F3/0605G06F3/0644G06F3/0689
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,856,440
App. No.
13/230,832
Granted
Oct 7, 2014
Kind
B2
Abstract

The storage devices of a storage device set (e.g., a RAID array) may generate a nonvolatile representation of the configuration of the storage device set, including logical disks, spaces, storage pools, and layout and provisioning plans, on the physical media of the storage devices. A computer accessing the storage device set may also generate a volatile memory representation of the storage device set to use while accessing the storage devices; however, the nonvolatile representation may not be performant due to its different usage and characteristics. Presented herein are techniques for accessing the storage device set according to a volatile memory representation comprising a hierarchy of logical disks, slabs, and extents, and an accessor comprising a provisioning component that handles slab accesses while applying provisioning plans, and that interfaces with a lower-level layout component that translates slab accesses into storage device accesses while applying layout plans to the storage device set.

Claims (92)

1. A method of allocating, on a device having a processor, capacity for logical disks on a storage device set comprising at least one storage device, the method comprising:

executing on the processor instructions configured to:

upon receiving an allocation request to allocate capacity for a logical disk:

generate at least one slab specifying a layout plan and that together satisfy the capacity of the allocation request, and

for respective slabs, allocate extents on the storage devices that together satisfy the layout plan; and

upon receiving an access request to access at least one location of a logical disk:

identify at least one slab comprising respective locations of the layout access request; and

for respective slabs:

identify the layout plan of the slab; and

access the extents of the slab according to the layout plan.

2. The method of claim 1 , the storage device set represented as a storage device set representation comprising:

a logical disk set comprising logical disks respectively represented as a sequence of slabs;

a slab set comprising slabs respectively represented as a collection of extents; and

an extent set comprising extents respectively represented as a storage device, a physical address, and an extent length.

3. The method of claim 2 :

the storage device set representation having a hierarchical structure comprising:

a first hierarchical level representing the logical disks;

a second hierarchical level representing the slabs; and

a third hierarchical level representing the extents; and

identifying a location within a logical disk comprising:

identifying the slab comprising the location of the logical disk; and

identifying at least one extent within the slab comprising the location.

4. The method of claim 1 :

a first slab allocated for a logical disk specifying a first layout plan; and

a second slab allocated for the logical disk specifying a second layout plan that is different from the first layout plan.

5. The method of claim 4 :

at least one capacity request received from an application specifying a slab usage; and

the provisioning component configured to select a layout plan according to the slab usage of the slab.

6. The method of claim 1 :

a first slab allocated for a logical disk having a first slab capacity; and

a second slab allocated for the logical disk having a second slab capacity that is different from the first slab capacity.

7. The method of claim 1 , the instructions configured to, upon allocating an extent, initialize the extent with a default value.

8. The method of claim 1 :

respective logical disks having a provisioning plan;

allocating the extents on the storage devices comprising: upon receiving the allocation request to allocate capacity for a logical disk, allocate extents according to the provisioning plan of the logical disk; and

accessing the slabs of a logical disk comprising: accessing the extents of the slabs according to the provisioning plan of the logical disk.

9. The method of claim 8 , the provisioning plan selected according to a provisioning plan set comprising:

a fixed provisioning plan specifying a prompt allocation of slabs satisfying the capacity of the logical disk; and

a delayed provisioning plan specifying an allocation of slabs for a logical disk while accessing the slabs in response to an access request.

10. The method of claim 9 , accessing the slabs for a logical disk according to a delayed provisioning plan comprising:

upon receiving an access request specifying a location of the logical disk:

identifying a slab associated with the location of the access request;

upon identifying the slab, accessing the slab according to the access request; and

upon failing to identify a slab associated with the location of the access request:

allocating a slab for the logical disk, and

associating the slab with the location of the logical disk specified by the access request.

11. The method of claim 10 :

the access request comprising a read request specifying a location of the logical disk; and

the instructions configured to, upon failing to identify a slab associated with the location of the read request, return a default value in response to the read request.

12. The method of claim 10 , allocating the slab comprising: allocating a slab with a small capacity that satisfies the access request.

13. The method of claim 10 :

the storage device set comprising an available capacity; and

at least one logical disk having a provisioned capacity exceeding the available capacity of the storage device set.

14. The method of claim 10 :

the storage device set comprising an available capacity;

respective logical disks having a provisioned capacity within the available capacity of the storage device set; and

a total provisioned capacity of the logical disks exceeding the available capacity of the storage device set.

15. The method of claim 10 , the instructions configured to, upon receiving an allocation request to allocate capacity for a logical disk according to a fixed provisioning plan, allocate a reduced number of slabs that together satisfy the capacity of the logical disk.

16. A system for allocating capacity for logical disks on a storage device set comprising at least one storage device, the system comprising:

a layout component configured to:

upon receiving a slab allocation request specifying a layout plan, allocate extents on the storage devices that together satisfy the slab allocation request and the layout plan; and

upon receiving a layout access request to access a slab, access the extents of the slab according to the layout plan; and

a provisioning component configured to:

upon receiving a capacity request to allocate capacity for a logical disk, generate at least one slab allocation request specifying a layout plan;

present respective logical disks as a sequence of slabs; and

upon receiving an access request to access a location of the logical disk:

identify at least one slab comprising the location of the access, and

generate a layout access request to access the slab according to the access request.

17. The system of claim 16 , the layout plan selected from a layout plan set comprising:

a monolithic layout plan specifying an allocation of extents on one storage device;

a striping layout plan specifying an allocation of extents on at least two storage devices that together provide the capacity of the slab allocation request;

a mirroring layout plan specifying an allocation of extents that respectively provide the capacity of the slab allocation request and that are mirrored; and

a verifying layout plan specifying an allocation of:

at least one data extent on at least one storage device that together provide the capacity of the slab allocation request; and

at least one verifier extent on at least one other storage device that stores verifiers for the data extents.

18. The system of claim 17 , the layout component configured to, upon detecting a failure of a failed storage device:

for respective extents of the failed storage device:

identify the slab comprising the extent, and

allocate a substitute extent for the slab; and

for respective slabs comprising at least one substitute extent and having a resilient layout plan, initiate a repair of the slab including the substitute extent.

19. The system of claim 18 :

the storage device set comprising at least three storage devices; and

allocating the substitute extents comprising: distributing the substitute extents allocated from the failed storage device across other storage devices of the storage device set.

20. A nonvolatile memory device storing instructions that, when executed on a processor of a storage manager, cause the storage manager to allocate capacity for logical disks on a storage device set comprising at least one storage device, by:

upon receiving an allocation request to allocate capacity for a logical disk:

generating at least one slab specifying a layout plan and that together satisfy the capacity of the allocation request, and

for respective slabs, allocating extents on the storage devices that together satisfy the layout plan; and

upon receiving an access request to access at least one location of a logical disk:

identifying at least one slab comprising respective locations of the layout access request; and

for respective slabs:

identifying the layout plan of the slab; and

accessing the extents of the slab according to the layout plan.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2011
From: MEHRA, KARAN
To: MICROSOFT CORPORATION
Reel/Frame 026952/0765 →
Continuity (1)
Related Publication 20130067159A1 · Mar 14, 2013