Systems and methods for providing nonlinear journaling
First Claim
Patent Images
1. A nonlinear method of journaling data being written to a first storage unit, wherein said first storage unit is part of a system comprising a plurality of storage units that execute transactions global to the system, comprising:
- storing a plurality of groups of data in a journal located in persistent storage, the data groups associated with data to be written to the first storage unit, wherein a first data group associated with a first global transaction is stored prior to a second data group associated with a second global transaction being stored, and the second data group is stored prior to a third data group associated with a third global transaction being stored, wherein the second global transaction is distributed among two or more storage units, such that the second global transaction is associated with a request to write data to the first storage unit and a request to write different data to at least one other storage unit;
storing information about the location and status of each of said plurality of groups of data, wherein the information about the status of a group of data includes a transaction state of the associated global transaction;
providing a data structure linking the stored groups of data and the information about each of said groups of data, wherein the first data group is linked to the second data group, and the second data group is linked to the third data group; and
providing for the unlinking of any data group and its corresponding stored information, without regards to the order in which the data group was stored in the journal, wherein providing for the unlinking comprises;
determining that the transaction state of the second global transaction indicates that the second global transaction is done, and further determining that all data writes associated with the second global transaction and the first storage unit have been written to the first storage unit;
linking the first data group to the third data group; and
unlinking the second data group.
12 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment, systems and methods are provided for nonlinear journaling. In one embodiment, groups of data designated for storage in a data storage unit are journaled into persistent storage. In one embodiment, the journal data is recorded nonlinearly. In one embodiment, a linked data structure records data and data descriptors in persistent storage.
382 Citations
17 Claims
-
1. A nonlinear method of journaling data being written to a first storage unit, wherein said first storage unit is part of a system comprising a plurality of storage units that execute transactions global to the system, comprising:
-
storing a plurality of groups of data in a journal located in persistent storage, the data groups associated with data to be written to the first storage unit, wherein a first data group associated with a first global transaction is stored prior to a second data group associated with a second global transaction being stored, and the second data group is stored prior to a third data group associated with a third global transaction being stored, wherein the second global transaction is distributed among two or more storage units, such that the second global transaction is associated with a request to write data to the first storage unit and a request to write different data to at least one other storage unit; storing information about the location and status of each of said plurality of groups of data, wherein the information about the status of a group of data includes a transaction state of the associated global transaction; providing a data structure linking the stored groups of data and the information about each of said groups of data, wherein the first data group is linked to the second data group, and the second data group is linked to the third data group; and providing for the unlinking of any data group and its corresponding stored information, without regards to the order in which the data group was stored in the journal, wherein providing for the unlinking comprises; determining that the transaction state of the second global transaction indicates that the second global transaction is done, and further determining that all data writes associated with the second global transaction and the first storage unit have been written to the first storage unit; linking the first data group to the third data group; and unlinking the second data group. - View Dependent Claims (2, 3, 4, 5, 6, 15)
-
-
7. A system for journaling data writes into a linked data structure in conjunction with storage of the data writes, comprising:
-
a first data storage unit, wherein said first data storage unit is part of a system comprising a plurality of data storage units that execute transactions global to the system; persistent memory associated with said first data storage unit; a program module configured to journal into a linked data structure in said persistent memory data writes to said first data storage unit, said data writes comprising data to be written to said first data storage unit and respective locations in said first data storage unit to write said data, said data writes associated with a first global transaction, a second global transaction and a third global transaction, wherein a first entry associated with the first global transaction is stored in the linked data structure prior to a second entry associated with the second global transaction being stored, the second entry is stored in the linked data structure prior to a third entry associated with the third global transaction being stored, wherein the first entry comprises a link to the second entry in the linked data structure, and the second entry comprises a link to the third entry in the linked data structure, wherein each entry is associated with status information comprising a transaction state of the associated global transaction, wherein the second global transaction is distributed among two or more data storage units, such that the second global transaction is associated with a request to write data to the first data storage unit and a request to write different data to at least one other data storage unit, wherein said program module is configured to journal said data writes nonlinearly; and a process module configured to; determine that the transaction state of the second global transaction indicates that the second global transaction is done, and further determine that the data writes associated with the second global transaction and the first data storage unit have been written to said first data storage unit; link the first entry to the third entry; and unlink the second entry. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 16, 17)
-
Specification