IP Library Granted Patent US 8,892,846
Granted Patent B2
US 8,892,846 · App. 14/047,600 · Granted Nov 18, 2014

Metadata management for virtual volumes

Inventors: Arvind Pruthi (Los Gatos, CA); Shailesh P. Parulekar (Pune, IN); Mayur Shardul (Pune, IN)
Assignee: Toshiba Corporation
G06F12/08G06F3/0689G06F3/0611G06F3/0665
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,892,846
App. No.
14/047,600
Granted
Nov 18, 2014
Kind
B2
Abstract

Methods, apparatus, and systems, including computer programs encoded on a computer storage medium, manage metadata for virtual volumes. In some implementations, a method includes: loading into memory at least a portion of metadata for a virtual volume (VV) that spans data extents of different persistent storage devices, wherein the metadata comprises virtual metadata block (VMB) descriptors and virtual metadata blocks (VMBs); mapping an address of the VV to a VMB number and an index of an extent pointer within a VMB identified by the VMB number, wherein the extent pointer indicates an extent within one of the different persistent storage devices; locating a VMB descriptor in the memory based on the VMB number; and locating the identified VMB in the memory or not in the memory based on the located VMB descriptor.

Claims (41)

1. A method comprising

loading into memory at least a portion of metadata for a virtual volume (VV) that spans data extents of different persistent storage devices, wherein the metadata comprises virtual metadata block (VMB) descriptors and virtual metadata blocks (VMBs);

mapping an address of the VV to a VMB number and an index of an extent pointer within a VMB identified by the VMB number, wherein the extent pointer indicates an extent within one of the different persistent storage devices;

locating a VMB descriptor in the memory based on the VMB number; and

locating the identified VMB in the memory or in one of the different persistent storage devices based on the located VMB descriptor.

2. The method of claim 1 , wherein locating the identified VMB not in the memory comprises locating the identified VMB in one of the different persistent storage devices, and the method comprises:

selecting for eviction another VMB that is in the memory;

swapping out the selected VMB to free memory space for the identified VMB; and

updating VMB descriptors for the selected VMB and the identified VMB.

3. The method of claim 2 , wherein the selecting comprises using an Adaptive Replacement Cache (ARC), and the updating comprises changing IN_CORE and SWAPPED_OUT flags in the VMB descriptors for the selected VMB and the identified VMB.

4. The method of claim 2 , wherein the loading comprises loading metadata for multiple sparse virtual volumes, and locating the VMB descriptor comprises locating the VMB descriptor in the memory, based on a VV identifier and the VMB number, using a hash table.

5. The method of claim 1 , wherein each of the VMBs includes VV identifier and VMB number meta-metadata, and each of the VMBs for a specified virtual volume includes a same number of extent pointers, each extent referenced by one of the extent pointers in the VMBs for the specified virtual volume has a same number of blocks, and the mapping comprises:

determining the VMB number by dividing a block offset by the number of extent pointers per VMB and by the number of blocks per extent; and

determining the index of the extent pointer by dividing the block offset by the number of blocks per extent, modulo the number of extent pointers per VMB.

6. The method of claim 1 , wherein the different persistent storage devices comprise flash memory devices.

7. The method of claim 1 , wherein the extent pointer is a logical address.

8. An apparatus comprising

a processor,

a memory coupled with the processor; and

a computer-readable medium embodying a program operable to cause the processor to perform operations comprising (i) loading into the memory at least a portion of metadata for a virtual volume (VV) that spans data extents of different persistent storage devices, wherein the metadata comprises virtual metadata block (VMB) descriptors and virtual metadata blocks (VMBs), (ii) mapping an address of the VV to a VMB number and an index of an extent pointer within a VMB identified by the VMB number, wherein the extent pointer indicates an extent within one of the different persistent storage devices, (iii) locating a VMB descriptor in the memory based on the VMB number, and (iv) locating the identified VMB in the memory or in one of the different persistent storage devices based on the located VMB descriptor.

9. The apparatus of claim 8 , wherein locating the identified VMB not in the memory comprises locating the identified VMB in one of the different persistent storage devices, and the operations comprise:

selecting for eviction another VMB that is in the memory;

swapping out the selected VMB to free memory space for the identified VMB; and

updating VMB descriptors for the selected VMB and the identified VMB.

10. The apparatus of claim 9 , wherein the selecting comprises using an Adaptive Replacement Cache (ARC), and the updating comprises changing IN_CORE and SWAPPED_OUT flags in the VMB descriptors for the selected VMB and the identified VMB.

11. The apparatus of claim 9 , wherein the loading comprises loading metadata for multiple sparse virtual volumes, and locating the VMB descriptor comprises locating the VMB descriptor in the memory, based on a VV identifier and the VMB number, using a hash table.

12. The apparatus of claim 8 , wherein each of the VMBs includes VV identifier and VMB number meta-metadata, and each of the VMBs for a specified virtual volume includes a same number of extent pointers, each extent referenced by one of the extent pointers in the VMBs for the specified virtual volume has a same number of blocks, and the mapping comprises:

determining the VMB number by dividing a block offset by the number of extent pointers per VMB and by the number of blocks per extent; and

determining the index of the extent pointer by dividing the block offset by the number of blocks per extent, modulo the number of extent pointers per VMB.

13. The apparatus of claim 8 , wherein the different persistent storage devices comprise flash memory devices.

14. The apparatus of claim 8 , wherein the extent pointer is a logical address.

15. A system comprising

a storage pool comprising different persistent storage devices; and

a data processing apparatus configured to (i) load into memory at least a portion of metadata for a virtual volume (VV) that spans data extents of the different persistent storage devices, wherein the metadata comprises virtual metadata block (VMB) descriptors and virtual metadata blocks (VMBs), (ii) map an address of the VV to a VMB number and an index of an extent pointer within a VMB identified by the VMB number, wherein the extent pointer indicates an extent within one of the different persistent storage devices, (iii) locate a VMB descriptor in the memory based on the VMB number, and (iv) locate the identified VMB in the memory or in one of the different persistent storage devices based on the located VMB descriptor.

16. The system of claim 15 , the data processing apparatus configured to select for eviction a VMB that is in the memory, swap out the selected VMB to free memory space for the identified VMB, and update VMB descriptors for the selected VMB and the identified VMB.

17. The system of claim 16 , the data processing apparatus configured to use an Adaptive Replacement Cache (ARC), and change IN_CORE and SWAPPED_OUT flags in the VMB descriptors for the selected VMB and the identified VMB.

18. The system of claim 16 , the data processing apparatus configured to load metadata for multiple sparse virtual volumes, and locate the VMB descriptor in the memory, based on a VV identifier and the VMB number, using a hash table.

19. The system of claim 15 , wherein each of the VMBs includes VV identifier and VMB number meta-metadata, and each of the VMBs for a specified virtual volume includes a same number of extent pointers, each extent referenced by one of the extent pointers in the VMBs for the specified virtual volume has a same number of blocks, and the data processing apparatus is configured to determine the VMB number by dividing a block offset by the number of extent pointers per VMB and by the number of blocks per extent, and determine the index of the extent pointer by dividing the block offset by the number of blocks per extent, modulo the number of extent pointers per VMB.

20. The system of claim 15 , wherein the storage pool comprises RAID (Redundant Array of Independent Disks) groups.

21. The system of claim 15 , wherein the extent pointer is a logical address.

22. The system of claim 15 , comprising a NAS (Network-Attached Storage) system.

Assignments (6)
MERGER Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: K.K. PANGEA
Reel/Frame 055659/0471 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2018
From: TOSHIBA CORPORATION
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 047262/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2014
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 032207/0977 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2014
From: MARVELL INTERNATIONAL LTD.
To: TOSHIBA CORPORATION
Reel/Frame 032208/0241 →
Continuity (4)
Continuation 12788097 · May 26, 2010
Provisional Application 61243085 · Sep 16, 2009
Provisional Application 61181772 · May 28, 2009
Related Publication 20140040540A1 · Feb 6, 2014