System and method for effectuating a transactional journal with a dedicated data container in a delta log-based storage system
A method, computer program product, and computing system for processing an input/output (IO) request on a storage processor within a storage system. An entry is generated in a transactional journal for the IO request. A copy of the entry is stored in the transactional journal in a dedicated data container in volatile memory of the storage processor. In response to processing a subsequent IO request associated with the entry, the entry is at least partially overwritten in the dedicated data container.
1 . A computer-implemented method, executed on a computing device, comprising:
processing an input/output (IO) request on a storage processor within a storage system;
generating an entry in a transactional journal for the IO request;
storing a copy of the entry in the transactional journal in a dedicated data container in volatile memory of the storage processor;
in response to processing a subsequent IO request associated with the entry, at least partially overwriting the entry in the dedicated data container;
determining that a predefined storage capacity of the dedicated data container is met;
generating a storage location marker in the transactional journal;
copying each entry from the dedicated data container to a second dedicated data container;
generating a persisted copy of the dedicated data container by copying each entry from the dedicated data container to the transactional journal after the storage location marker; and
copying new entries in the transactional journal to the second dedicated data container.
2 . The computer-implemented method of claim 1 , wherein the dedicated data container includes a dedicated array of entries for each flushing client that flushes data to persistent storage within the storage system.
3 . The computer-implemented method of claim 1 , further comprising:
detecting a failure event associated with the storage system.
4 . The computer implemented method of claim 3 , further comprising:
recovering each entry of the dedicated data container by:
generating a new dedicated data container; and
loading each entry from a persisted copy of the dedicated data container to the new dedicated data container.
5 . The computer implemented method of claim 1 , further comprising:
performing an optimistic data deduplication operation based on the IO request.
6 . The computer implemented method of claim 5 , further comprising:
identifying an incorrect data deduplication resulting from the optimistic data deduplication operation; and
resolving the incorrect data deduplication by restoring a previous state of the entry associated with the incorrect data deduplication.
7 . A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:
processing an input/output (IO) request on a storage processor within a storage system;
generating an entry in a transactional journal for the IO request;
storing a copy of the entry in the transactional journal in a dedicated data container in volatile memory of the storage processor;
in response to processing a subsequent IO request associated with the entry, at least partially overwriting the entry in the dedicated data container;
determining that a predefined storage capacity of the dedicated data container is met;
generating a storage location marker in the transactional journal;
copying each entry from the dedicated data container to a second dedicated data container;
generating a persisted copy of the dedicated data container by copying each entry from the dedicated data container to the transactional journal after the storage location marker; and
copying new entries in the transactional journal to the second dedicated data container.
8 . The computer program product of claim 7 , wherein the dedicated data container includes a dedicated array of entries for each flushing client that flushes data to persistent storage within the storage system.
9 . The computer program product of claim 7 , wherein the operations further comprise:
detecting a failure event associated with the storage system.
10 . The computer program product of claim 9 , wherein the operations further comprise:
recovering each entry of the dedicated data container by:
generating a new dedicated data container; and
loading each entry from a persisted copy of the dedicated data container to the new dedicated data container.
11 . The computer program product of claim 7 , wherein the operations further comprise:
performing an optimistic data deduplication operation based on the IO request.
12 . The computer program product of claim 11 , wherein the operations further comprise:
identifying an incorrect data deduplication resulting from the optimistic data deduplication operation; and
resolving the incorrect data deduplication by restoring a previous state of the entry associated with the incorrect data deduplication.
13 . A computing system comprising:
a memory; and
a processor configured to process an input/output (IO) request on a storage processor within a storage system, wherein the processor is further configured to generate an entry in a transactional journal for the IO request, wherein the processor is further configured to store a copy of the entry in the transactional journal in a dedicated data container in volatile memory of the storage processor, wherein the processor is further configured to, in response to processing a subsequent IO request associated with the entry, at least partially overwrite the entry in the dedicated data container, wherein the processor is further configure to determine that a predefined storage capacity of the dedicated data container is met, wherein the processor is further configured to generate a storage location marker in the transactional journal, wherein the processor is further configured to copy each entry from the dedicated data container to a second dedicated data container, wherein the processor is further configured to generate a persisted copy of the dedicated data container by copying each entry from the dedicated data container to the transactional journal after the storage location marker, and wherein the processor is further configured to copy new entries in the transactional journal to the second dedicated data container.
14 . The computing system of claim 13 , wherein the dedicated data container includes a dedicated array of entries for each flushing client that flushes data to persistent storage within the storage system.
15 . The computing system of claim 13 , wherein the processor is further configured to:
detect a failure event associated with the storage system.
16 . The computing system of claim 15 , wherein the processor is further configured to:
recover each entry of the dedicated data container by:
generating a new dedicated data container; and
loading each entry from a persisted copy of the dedicated data container to the new dedicated data container.
17 . The computing system of claim 13 , wherein the processor is further configured to:
perform an optimistic data deduplication operation based on the IO request.