Unlimited file system snapshots and clones
First Claim
1. A non-transitory computer readable storage medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to perform a method for creating a snapshot of a hierarchical block tree (HBT), said method comprising:
- obtaining a copy of a first version of a root block of the HBT prior to overwriting the first version of the root block with a second version of the root block;
designating the copy of a first version of a root block as a root block of the snapshot;
associating an existing dead list of the HBT with the snapshot, wherein the existing dead list specifies a block referenced in a second snapshot and not currently referenced in the snapshot, wherein the second snapshot is associated with the HBT and is created prior to the snapshot;
overwriting the first version of the root block with a second version of the root block;
associating the HBT with an empty dead list, wherein the HBT comprises the second version of the root block; and
updating the empty dead list associated with the HBT, wherein the empty dead list is updated when a first block referenced by the root block of the snapshot ceases to be referenced by the second version of the root block, wherein updating the empty dead list associated with the HBT comprises adding a block pointer associated with the first block and a birth time of the first block to the empty dead list.
2 Assignments
0 Petitions
Accused Products
Abstract
The invention relates to a system that includes a file system configured to create a snapshot of a hierarchical block tree (HBT) and a storage pool. After the snapshot has been created, the storage pool includes a snapshot, where the snapshot includes a copy of a first version of a root block and the HBT, where the HBT includes a second version of the root block. Further, the copy of the first version of the root block is created prior to overwriting the first version of the root block with the second version of the root block, the second version of the root block comprises references to a first block and a second block, and the copy of the first version of the root block comprises a reference to the first block and no reference to the second block.
-
Citations
11 Claims
-
1. A non-transitory computer readable storage medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to perform a method for creating a snapshot of a hierarchical block tree (HBT), said method comprising:
-
obtaining a copy of a first version of a root block of the HBT prior to overwriting the first version of the root block with a second version of the root block; designating the copy of a first version of a root block as a root block of the snapshot; associating an existing dead list of the HBT with the snapshot, wherein the existing dead list specifies a block referenced in a second snapshot and not currently referenced in the snapshot, wherein the second snapshot is associated with the HBT and is created prior to the snapshot; overwriting the first version of the root block with a second version of the root block; associating the HBT with an empty dead list, wherein the HBT comprises the second version of the root block; and updating the empty dead list associated with the HBT, wherein the empty dead list is updated when a first block referenced by the root block of the snapshot ceases to be referenced by the second version of the root block, wherein updating the empty dead list associated with the HBT comprises adding a block pointer associated with the first block and a birth time of the first block to the empty dead list. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
Specification