Data resychronization methods and systems in continuous data protection
Example embodiments relate generally to data resynchronization methods and systems in continuous data protection (CDP) and more specifically to an input and output (I/O) filtering framework and log management system to seek a near-zero recovery point objective (RPO).
1. A method, comprising:
obtaining a snapshot of a computing object;
intercepting, from an input/output (I/O) path, an I/O stream for the computing object;
forming a recoverable log chain based at least in part on applying a replicated I/O stream to the snapshot, the replicated I/O stream based at least in part on the intercepted I/O stream; and
based at least in part on a condition of the intercepted I/O stream or the replicated I/O stream:
filtering the intercepted I/O stream to identify changed data blocks, and
using the changed data blocks to resynchronize the recoverable log chain with a state of the computing object.
2. The method of claim 1 , further comprising:
maintaining at least one bitmap corresponding to a plurality of data blocks of the computing object; and
modifying, in response to a data block of the plurality of data blocks being changed, a corresponding bit within the at least one bitmap to indicate that the data block is changed.
3. The method of claim 1 , wherein using the changed data blocks to resynchronize the recoverable log chain comprises:
transmitting data of the changed data blocks to a log receiver service for resynchronization of the recoverable log chain.
4. The method of claim 1 , further comprising:
maintaining a first buffer that tracks modified data blocks of the computing object; and
maintaining a second buffer that reads modified data of the modified data blocks of the computing object and transmits the modified data to a log receiver service for resynchronization of the recoverable log chain.
5. The method of claim 1 , wherein the snapshot and the recoverable log chain are stored using a backup system that is different from a host system for the computing object.
6. The method of claim 1 , wherein the condition comprises an interruption or discontinuity associated with the I/O stream, an interruption or discontinuity associated with the replicated I/O stream, or both.
7. The method of claim 1 , wherein the intercepted I/O stream is filtered to identify changed data blocks based at least in part on an I/O filter switching to a resynchronization mode from a synchronization mode.
8. The method of claim 1 , wherein the computing object comprises a virtual disk.
9. An apparatus, comprising:
one or more memories storing processor-executable code; and
one or more processors coupled with the one or more memories and individually or collectively operable to execute the code to cause the apparatus to:
obtain a snapshot of a computing object;
intercept, from an input/output (I/O) path, an I/O stream for the computing object;
form a recoverable log chain based at least in part on applying a replicated I/O stream to the snapshot, the replicated I/O stream based at least in part on the intercepted I/O stream; and
based at least in part on a condition of the intercepted I/O stream or the replicated I/O stream:
filter the intercepted I/O stream to identify changed data blocks, and
use the changed data blocks to resynchronize the recoverable log chain with a state of the computing object.
10. The apparatus of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:
maintain at least one bitmap corresponding to a plurality of data blocks of the computing object; and
modify, in response to a data block of the plurality of data blocks being changed, a corresponding bit within the at least one bitmap to indicate that the data block is changed.
11. The apparatus of claim 9 , wherein, to use the changed data blocks to resynchronize the recoverable log chain, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:
transmit data of the changed data blocks to a log receiver service for resynchronization of the recoverable log chain.
12. The apparatus of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:
maintain a first buffer that tracks modified data blocks of the computing object; and
maintain a second buffer that reads modified data of the modified data blocks of the computing object and transmits the modified data to a log receiver service for resynchronization of the recoverable log chain.
13. The apparatus of claim 9 , wherein the one or more processors are individually or collectively operable to execute the code to cause the apparatus to store the snapshot and the recoverable log chain using a backup system that is different from a host system for the computing object.
14. The apparatus of claim 9 , wherein the condition comprises an interruption or discontinuity associated with the I/O stream, an interruption or discontinuity associated with the replicated I/O stream, or both.
15. The apparatus of claim 9 , wherein the one or more processors are individually or collectively operable to execute the code to cause the apparatus to filter the intercepted I/O stream to identify changed data blocks based at least in part on an I/O filter switching to a resynchronization mode from a synchronization mode.
16. A non-transitory computer-readable medium storing code, the code comprising instructions executable by one or more processors to:
obtain a snapshot of a computing object;
intercept, from an input/output (I/O) path, an I/O stream for the computing object;
form a recoverable log chain based at least in part on applying a replicated I/O stream to the snapshot, the replicated I/O stream based at least in part on the intercepted I/O stream; and
based at least in part on a condition of the intercepted I/O stream or the replicated I/O stream:
filter the intercepted I/O stream to identify changed data blocks, and
use the changed data blocks to resynchronize the recoverable log chain with a state of the computing object.
17. The non-transitory computer-readable medium of claim 16 , wherein the instructions are further executable by the one or more processors to:
maintain at least one bitmap corresponding to a plurality of data blocks of the computing object; and
modify, in response to a data block of the plurality of data blocks being changed, a corresponding bit within the at least one bitmap to indicate that the data block is changed.
18. The non-transitory computer-readable medium of claim 16 , wherein the instructions to use the changed data blocks to resynchronize the recoverable log chain are executable by the one or more processors to:
transmit data of the changed data blocks to a log receiver service for resynchronization of the recoverable log chain.
19. The non-transitory computer-readable medium of claim 16 , wherein the instructions are further executable by the one or more processors to:
maintain a first buffer that tracks modified data blocks of the computing object; and
maintain a second buffer that reads modified data of the modified data blocks of the computing object and transmits the modified data to a log receiver service for resynchronization of the recoverable log chain.
20. The non-transitory computer-readable medium of claim 16 , wherein the condition comprises an interruption or discontinuity associated with the I/O stream, an interruption or discontinuity associated with the replicated I/O stream, or both.