IP Library Granted Patent US 8,793,290
Granted Patent B1
US 8,793,290 · App. 13/034,483 · Granted Jul 29, 2014

Metadata management for pools of storage disks

Inventors: Arvind Pruthi (Los Gatos, CA); Shailesh P. Parulekar (Pune, IN); Mayur Shardul (Pune, IN)
Assignee: Toshiba Corporation
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,793,290
App. No.
13/034,483
Granted
Jul 29, 2014
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for managing metadata for pools of storage disks, are described. In some implementations, a system includes a processor, a memory and a storage system. The storage system contains a storage pool including multiple storage devices. Further, the storage system is configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied. In addition, the processor is configured to perform operations including accessing at least portions of the bitmap, and managing, based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage.

Claims (129)

1. A system comprising:

a processor;

a memory coupled with the processor; and

a storage system coupled with the processor, the storage system comprising a storage pool including multiple storage devices, the storage system configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool,

wherein the processor is configured to perform operations comprising

accessing at least portions of the bitmap, and

managing, based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in the memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the system further comprises a metadata structure associated with the storage pool and stored in the persistent storage associated with the storage pool, the metadata structure including:

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap,

wherein the list of available metadata blocks includes, for each of the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

information comprising a total number of free metadata blocks corresponding to the set, and

one or more ranges of free metadata blocks within the set, each range of free metadata blocks comprising a set index of a first free metadata block in the range and the number of free metadata blocks in the range, and

wherein said managing further includes

for each of the sets, relocating previously allocated metadata blocks into ranges of free metadata blocks in accordance with the list of available metadata blocks to obtain a range of free metadata blocks such that the index of the first free metadata block in the obtained range has a maximum value, and

updating the bitmap to indicate that the previously allocated metadata blocks are free and that the relocated metadata blocks are occupied.

2. The system of claim 1 , wherein:

said managing further includes

serving requests for allocating metadata blocks to a virtual volume based on the generated list of available metadata blocks,

updating the list of available metadata blocks to remove the allocated metadata blocks from the list of available metadata blocks, and

updating the bitmap to indicate that the allocated metadata blocks are occupied, and

wherein each of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool further includes a header, said managing further including writing in each of the allocated metadata blocks' headers

an identifier of the virtual volume to which the metadata block has been allocated, and

an index of the bitmap.

3. The system of claim 1 , wherein the specified metadata block is contained in a single data extent.

4. The system of claim 1 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

5. A system comprising:

a processor;

a memory coupled with the processor; and

a storage system coupled with the processor, the storage system comprising a storage pool including multiple storage devices, the storage system configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool,

wherein the processor is configured to perform operations comprising

accessing at least portions of the bitmap, and

managing, based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in the memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the system further comprises a metadata structure associated with the storage pool and stored in the persistent storage associated with the storage pool, the metadata structure including:

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap, and

wherein said managing further includes:

identifying, in accordance with the list of available metadata blocks, one or more of the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool having respective numbers of free metadata blocks larger than a predetermined value;

relocating previously allocated metadata blocks from the identified one or more of the sets to other of the sets;

removing from the specified metadata block respective output addresses corresponding to the identified one or more of the sets; and

updating the bitmap to indicate that the previously allocated metadata blocks from the identified one or more of the sets are free and that the relocated metadata blocks are occupied.

6. The system of claim 5 , wherein the specified metadata block is contained in a single data extent.

7. The system of claim 5 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

8. A system comprising:

a processor;

a memory coupled with the processor; and

a storage system coupled with the processor, the storage system comprising a storage pool including multiple storage devices, the storage system configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool,

wherein the processor is configured to perform operations comprising

accessing at least portions of the bitmap, and

managing, based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in the memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the system further comprises a metadata structure associated with the storage pool and stored in the persistent storage associated with the storage pool, the metadata structure including:

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap,

wherein the metadata structure associated with the storage pool further includes lists of virtual volume record blocks, each of the virtual volume record blocks including attributes of the respective virtual volume, each of the lists having one or more contiguous data extents corresponding to respective virtual volume record blocks associated with respective virtual volumes from among the one or more virtual volumes associated with the storage pool, and wherein the specified metadata block further includes (iii) respective output addresses corresponding to the lists of the virtual volume record blocks, and

wherein said managing further includes

deleting a virtual volume from among the one or more virtual volumes associated with the storage pool,

wherein each of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool further includes a header, said managing further including for each of the metadata blocks corresponding to the deleted virtual volume

obtaining from the metadata block's header an index of the bitmap, and

updating the bitmap to indicate that the metadata block corresponding to the obtained index is free,

removing the virtual volume record block associated with the deleted virtual volume from a corresponding list of virtual volume record blocks, and

updating the list of available metadata blocks to append the metadata blocks corresponding to the deleted virtual volume to the list of available metadata blocks.

9. The system of claim 8 , wherein the specified metadata block is contained in a single data extent.

10. The system of claim 8 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

11. A method comprising:

providing a storage pool including multiple storage devices, the storage pool being configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool;

accessing, by a data processor, at least portions of the bitmap; and

managing, by the data processor based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the method further comprises storing in the persistent storage associated with the storage pool a metadata structure associated with the storage pool, the metadata structure including

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap,

wherein the list of available metadata blocks includes, for each of the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

information comprising a total number of free metadata blocks corresponding to the set, and

one or more ranges of free metadata blocks within the set, each range of free metadata blocks comprising a set index of a first free metadata block in the range and the number of free metadata blocks in the range, and

wherein said managing further includes

for each of the sets, relocating previously allocated metadata blocks into ranges of free metadata blocks in accordance with the list of available metadata blocks to obtain a range of free metadata blocks such that the index of the first free metadata block in the obtained range has a maximum value, and

updating the bitmap to indicate that the previously allocated metadata blocks are free and that the relocated metadata blocks are occupied.

12. The method of claim 11 , wherein:

said managing further includes

serving requests for allocating metadata blocks to a virtual volume based on the generated list of available metadata blocks,

updating the list of available metadata blocks to remove the allocated metadata blocks from the list of available metadata blocks, and

updating the bitmap to indicate that the allocated metadata blocks are occupied, and

wherein each of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool further includes a header, said managing further including writing in each of the allocated metadata blocks' headers

an identifier of the virtual volume to which the metadata block has been allocated, and

an index of the bitmap.

13. The method of claim 11 , wherein the specified metadata block is contained in a single data extent.

14. The method of claim 11 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

15. A method comprising:

providing a storage pool including multiple storage devices, the storage pool being configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool;

accessing, by a data processor, at least portions of the bitmap; and

managing, by the data processor based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the method further comprises storing in the persistent storage associated with the storage pool a metadata structure associated with the storage pool, the metadata structure including

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap, and

wherein said managing further includes:

identifying, in accordance with the list of available metadata blocks, one or more of the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool having respective numbers of free metadata blocks larger than a predetermined value;

relocating previously allocated metadata blocks from the identified one or more of the sets to other of the sets;

removing from the specified metadata block respective output addresses corresponding to the identified one or more of the sets; and

updating the bitmap to indicate that the previously allocated metadata blocks from the identified one or more of the sets are free and that the relocated metadata blocks are occupied.

16. The method of claim 15 , wherein the specified metadata block is contained in a single data extent.

17. The method of claim 15 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

18. A method comprising:

providing a storage pool including multiple storage devices, the storage pool being configured to store in persistent storage associated with the storage pool a bitmap that is configured to indicate whether metadata blocks corresponding to one or more virtual volumes associated with the storage pool are free or occupied, each of the metadata blocks including multiple output addresses corresponding to the storage pool, the output addresses linking a virtual volume from among the one or more virtual volumes to the storage pool;

accessing, by a data processor, at least portions of the bitmap; and

managing, by the data processor based on information from the accessed portions, at least some of the metadata blocks stored in the persistent storage,

wherein said accessing comprises identifying, as part of initiating the storage pool and based on indications from the bitmap, free metadata blocks from among the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool,

wherein said managing comprises generating in memory a list of available metadata blocks to include the identified free metadata blocks,

wherein the method further comprises storing in the persistent storage associated with the storage pool a metadata structure associated with the storage pool, the metadata structure including

sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool, each of the sets having a predetermined number of data extents, each of the data extents representing contiguous storage locations in a physical storage device from among the multiple storage devices, and

a specified metadata block including (i) respective output addresses corresponding to the sets and (ii) the bitmap,

wherein the metadata structure associated with the storage pool further includes lists of virtual volume record blocks, each of the virtual volume record blocks including attributes of the respective virtual volume, each of the lists having one or more contiguous data extents corresponding to respective virtual volume record blocks associated with respective virtual volumes from among the one or more virtual volumes associated with the storage pool, and wherein the specified metadata block further includes (iii) respective output addresses corresponding to the lists of the virtual volume record blocks; and

wherein said managing further includes

deleting a virtual volume from among the one or more virtual volumes associated with the storage pool,

wherein each of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool further includes a header, said managing further including for each of the metadata blocks corresponding to the deleted virtual volume

obtaining from the metadata block's header an index of the bitmap, and

updating the bitmap to indicate that the metadata block corresponding to the obtained index is free,

removing the virtual volume record block associated with the deleted virtual volume from a corresponding list of virtual volume record blocks, and

updating the list of available metadata blocks to append the metadata blocks corresponding to the deleted virtual volume to the list of available metadata blocks.

19. The method of claim 18 , wherein the specified metadata block is contained in a single data extent.

20. The method of claim 18 , wherein the sets of the metadata blocks corresponding to the one or more virtual volumes associated with the storage pool and the specified metadata block form a management hierarchy of no more than two levels.

Assignments (9)
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: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
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 INTERNATIONAL LTD.
To: TOSHIBA CORPORATION
Reel/Frame 032208/0241 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2011
From: MARVELL INDIA PVT. LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 026598/0358 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2011
From: PARULEKAR, SHAILESH P; SHARDUL, MAYUR
To: MARVELL INDIA PVT. LTD.
Reel/Frame 026530/0379 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2011
From: MARVELL SEMICONDUCTOR, INC.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 026529/0197 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2011
From: PRUTHI, ARVIND
To: MARVELL SEMICONDUCTOR, INC.
Reel/Frame 026529/0118 →
Continuity (1)
Provisional Application 61307804 · Feb 24, 2010