CPC G06F 3/064 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0653 (2013.01); G06F 3/0659 (2013.01); G06F 3/0665 (2013.01); G06F 3/0673 (2013.01)] | 17 Claims |
1. A method of storage space accounting in a data storage system, comprising:
providing a mapping layer of a storage appliance, the mapping layer including a plurality of block pointer trees, the plurality of block pointer trees including at least a first block pointer tree, the first block pointer tree having a first top level, a first mid-level, and a first leaf level;
implementing data deduplication in a virtual layer of the storage appliance;
uniquely associating the first top level of the first block pointer tree with a first storage object;
determining a first amount of logical storage space consumed by the first storage object from a first mapping of logical block addresses (LBAs) of the first storage object to a plurality of first virtual blocks in the virtual layer in which the data deduplication is implemented;
logging, at intervals, first information pertaining to a plurality of first leaf pointers in the first leaf level of the first block pointer tree that point to the plurality of first virtual blocks in the virtual layer, the logging of the first information including logging, at each interval for each first virtual block, an indication of whether the first virtual block is currently uniquely owned by the first storage object, each first virtual block being mapped to a respective physical block from among a plurality of physical blocks in a physical layer of the storage appliance;
determining a first amount of physical storage space consumed by the first storage object from the logged first information, the determining of the first amount of physical storage space including determining, from the logged indication for each first virtual block, that the plurality of first virtual blocks are currently uniquely owned by the first storage object; and
in response to determining that plurality of first virtual blocks are uniquely owned by the first storage object, deleting the first storage object from the storage appliance or moving the first storage object to a different storage appliance, the deleting or moving of the first storage object including releasing the respective physical block to which each first virtual block is mapped.
|