System and method for reallocating blocks in checkpointing bitmap-based file systems
First Claim
1. A method for operating a storage system, comprising:
- maintaining a first portion of a storage operating system of the storage system for writing data to persistent storage operatively connected to the storage system;
maintaining a second portion of the storage operating system for managing a plurality of bitmaps that track an allocation status of blocks of the persistent storage;
maintaining a first bitmap of the plurality of bitmaps;
maintaining a second bitmap comprising a first copy of the first bitmap;
determining that the first portion is to write the first bitmap to the persistent storage while the second portion is to modify at least one of the first bitmap and the second bitmap;
in response to determining that the first bitmap is to be written to the persistent storage while the second portion is to modify the at least one of the first bitmap and the second bitmap, creating a third bitmap comprising a second copy of the first bitmap;
in response to creating the third bitmap, using the third bitmap by the first portion to be written to the persistent storage, and using the at least one of the first bitmap and the second bitmap by the second portion for modifications;
executing a block allocation procedure to allocate a data block to the persistent storage;
marking the data block as allocated in the first bitmap and the second bitmap; and
waiting until the first portion finishes writing the data block to the persistent storage, and in response to finishing, discarding the third bitmap.
0 Assignments
0 Petitions
Accused Products
Abstract
A computerized file system has a first software layer for writing data blocks to persistent storage, and a second software layer for receiving requests from a client, and in response to receiving a request passing a command to the first software layer. A current bit map shows data blocks of persistent storage which are allocated to holding data of the file system. A safe copy of the current bit map is maintained. A third copy of the current bit map is passed, at a selected time, to the first software layer to enable the first software layer to write data blocks containing the bit map current at the selected time to the persistent storage, and simultaneously changing the current bit map as maintained in a computer memory while data blocks containing the bit map current at the selected time are written to the persistent storage.
-
Citations
18 Claims
-
1. A method for operating a storage system, comprising:
-
maintaining a first portion of a storage operating system of the storage system for writing data to persistent storage operatively connected to the storage system; maintaining a second portion of the storage operating system for managing a plurality of bitmaps that track an allocation status of blocks of the persistent storage; maintaining a first bitmap of the plurality of bitmaps; maintaining a second bitmap comprising a first copy of the first bitmap; determining that the first portion is to write the first bitmap to the persistent storage while the second portion is to modify at least one of the first bitmap and the second bitmap; in response to determining that the first bitmap is to be written to the persistent storage while the second portion is to modify the at least one of the first bitmap and the second bitmap, creating a third bitmap comprising a second copy of the first bitmap; in response to creating the third bitmap, using the third bitmap by the first portion to be written to the persistent storage, and using the at least one of the first bitmap and the second bitmap by the second portion for modifications; executing a block allocation procedure to allocate a data block to the persistent storage; marking the data block as allocated in the first bitmap and the second bitmap; and waiting until the first portion finishes writing the data block to the persistent storage, and in response to finishing, discarding the third bitmap. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computerized storage system, comprising:
-
a first portion of a storage operating system of the storage system configured to write data to persistent storage operatively connected to the computerized storage system; a second portion of the storage operating system configured to manage a plurality of bitmaps that track an allocation status of blocks of the persistent storage; the second portion further configured to maintain a first bitmap of the plurality of bitmaps to show data allocation of the persistent storage; the second portion further configured to maintain a second bitmap comprising a first copy of the first bitmap; the second portion further configured to maintain a third bitmap comprising a second copy of the first bitmap; the first portion further configured to write the third bitmap to the persistent storage while a modification to at least one of the first bitmap and the second bit map is to occur; the second portion further configured to use the at least one of the first bitmap and the second bitmap for modifications, wherein the first portion is further configured to write the third bitmap to the persistent storage; a processor configured to; execute block allocation procedure to allocate a data block to the persistent storage; mark the data block as allocated in the first bitmap and the second bitmap; and wait until the first portion finishes writing the data block to the persistent storage, and in response to finishing, discard the third bitmap. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory computer readable media containing executable program instructions executed by a processor, comprising:
-
program instructions that maintain a first portion of a storage operating system of a storage system for writing data to persistent storage operatively connected to the storage system; program instructions that maintain a second portion of the storage operating system for managing a plurality of bitmaps that track an allocation status of blocks of the persistent storage; program instructions that maintain a first bitmap of the plurality of bitmaps; program instructions that maintain a second bitmap comprising a first copy of the first bitmap; program instructions that determine that the first portion is to write the first bitmap to the persistent storage while the second portion is to modify at least one of the first bitmap and the second bitmap; program instructions that, in response to determining that the first bitmap is to be written to the persistent storage while the second portion is to modify the at least one of the first bitmap and the second bitmap, create a third bitmap comprising a second copy of the first bitmap; program instructions that, in response to creating the third bitmap, use the third bitmap by the first portion to be written to the persistent storage, and program instructions that use the at least one of the first bitmap and the second bitmap by the second portion for modifications; program instructions that execute a block allocation procedure to allocate a data block to the persistent storage; program instructions that mark the data block as allocated in the first bitmap and the second bitmap; and program instructions that wait until the first portion finishes writing the data block to the persistent storage, and in response to finishing, discarding the third bitmap.
-
Specification