Patent ID: 8793290

Claim:
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.