# US 2022/0035772 A1 · System and method for mirroring a file system journal

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2022/0035772 A1
- Document ID: US20220035772A1
- Status: Published application
- Kind: A1
- Application number: 16/943,576
- Filed: 2020-07-30
- Published: 2022-02-03
- Earliest claimed: 2020-07-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Suraj Raju; Max Laier; Ron Steinke
- Web page: https://patentgrep.com/patent/US20220035772A1

## CPC

- G06F 16/182: Distributed file systems
- G06F 16/1865: {Transactional file systems}
- G06F 16/1734: {Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs}
- G06F 16/1815: {Journaling file systems}
- G06F 16/1824: {implemented using Network-attached Storage [NAS] architecture (distributed or networked storage systems G06F3/067; protocols for distributed storage of data in a network H04L67/1097)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for mirroring a file system journal are described herein. A method as described herein can include receiving, by a system operatively coupled to a processor, transactional file system updates corresponding to a write operation to be performed at a first node of the system; transferring, by the system, the transactional file system updates from an initiator node of the system to a first journal at the first node and a second journal at a second node of the system that is logically distinct from the first node and the initiator node; and committing, by the system, the transactional file system updates to the first journal and the second journal.

## Claims

### Claim 1

A data storage system, comprising:
a memory that stores computer executable components; and
a processor that executes the computer executable components stored in the memory, wherein the computer executable components comprise:
a write processing component that generates transactional file system updates corresponding to a write operation to be performed at a first participant node of the data storage system;
a journal transfer component that transfers the transactional file system updates from an initiator node of the data storage system to a first journal at the first participant node and a second journal at a second participant node of the data storage system that is logically distinct from the first participant node and the initiator node; and
a journal commit component that facilitates commitment of the transactional file system updates to the first journal and the second journal.

### Claim 2 (depends on 1)

The data storage system of claim 1, wherein the computer executable components further comprise:
a journal state component that obtains a generation indicator associated with the data storage system in response to generating the transactional file system updates corresponding to the write operation, wherein the journal transfer component transfers the generation indicator with the transactional file system updates to the first journal and the second journal.

### Claim 3 (depends on 2)

The data storage system of claim 2, wherein the journal state component updates the generation indicator in response to a change in operational state of at least one node of the data storage system selected from a group comprising the initiator node, the first participant node, and the second participant node.

### Claim 4 (depends on 2)

The data storage system of claim 2, wherein the generation indicator is a first generation indicator, and wherein the journal commit component aborts the commitment of the transactional file system updates to the first journal and the second journal in response to at least one of the first participant node or the second participant node being associated with a second generation indicator that is different from the first generation indicator.

### Claim 5 (depends on 2)

The data storage system of claim 2, wherein the generation indicator is stored in a first data block of the first participant node and a second data block of the second participant node, and wherein the first data block and the second data block are distinct from the first journal and the second journal, respectively.

### Claim 6 (depends on 1)

The data storage system of claim 1, wherein the journal commit component facilitates the commitment of the transactional file system updates to the first journal and the second journal via a two-phase commit (2PC) transaction.

### Claim 7 (depends on 6)

The data storage system of claim 6, wherein the transactional file system updates comprise respective updates to one or more storage blocks associated with the first participant node and 2PC transaction information.

### Claim 8 (depends on 1)

The data storage system of claim 1, wherein the computer executable components further comprise:
a data write component that facilitates writing the transactional file system updates to one or more disks of the first participant node in response to the transactional file system updates being successfully committed to the first journal.

### Claim 9 (depends on 8)

The data storage system of claim 8, wherein the computer executable components further comprise:
a journal update component that removes the transactional file system updates from the first journal in response to the transactional file system updates being successfully written to the one or more disks of the first participant node.

### Claim 10 (depends on 9)

The data storage system of claim 9, wherein the journal update component further removes the transactional file system updates from the second journal in response to the transactional file system updates being successfully written to the one or more disks of the first participant node.

### Claim 11 (depends on 1)

The data storage system of claim 1, wherein the computer executable components further comprise:
a journal restore component that restores the transactional file system updates as transferred to the first journal using the transactional file system updates as transferred to the second journal in response to the transactional file system updates becoming inaccessible on the first journal.

### Claim 12

A method, comprising:
receiving, by a system operatively coupled to a processor, transactional file system updates corresponding to a write operation to be performed at a first node of the system;
transferring, by the system, the transactional file system updates from an initiator node of the system to a first journal at the first node and a second journal at a second node of the system that is logically distinct from the first node and the initiator node; and
committing, by the system, the transactional file system updates to the first journal and the second journal.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
obtaining, by the system, a generation indicator associated with the system in response to receiving the transactional file system updates; and
transferring, by the system, the generation indicator with the transactional file system updates to the first journal and the second journal.

### Claim 14 (depends on 12)

The method of claim 12, wherein committing the transactional file system updates comprises committing the transactional file system updates to the first journal and the second journal via a two-phase commit transaction.

### Claim 15 (depends on 12)

The method of claim 12, further comprising:
writing, by the system, the transactional file system updates to one or more disks of the first node in response to committing the transactional file system updates to the first journal and the second journal.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
removing, by the system, the transactional file system updates from the first journal and the second journal in response to writing the transactional file system updates to the one or more disks of the first node.

### Claim 17

A non-transitory machine-readable medium comprising computer executable instructions that, when executed by a processor of a data storage system, facilitate performance of operations, the operations comprising:
generating file system updates and transaction information corresponding to a write operation directed to a primary participant node of the data storage system;
transferring the file system updates and the transaction information from an initiator node of the data storage system to a first journal at the primary participant node and a second journal at a secondary participant node of the data storage system that is logically distinct from the primary participant node and the initiator node; and
committing the file system updates and the transaction information to the first journal and the second journal.

### Claim 18 (depends on 17)

The non-transitory machine-readable medium of claim 17, wherein the operations further comprise:
obtaining a generation number associated with the data storage system in response to receiving the file system updates and the transaction information; and
transferring the generation number to the first journal and the second journal.

### Claim 19 (depends on 17)

The non-transitory machine-readable medium of claim 17, wherein the operations further comprise:
committing the file system updates and the transaction information to the first journal and the second journal via a two-phase commit transaction.

### Claim 20 (depends on 17)

The non-transitory machine-readable medium of claim 17, wherein the operations further comprise:
writing the file system updates and the transaction information to one or more drives at the primary participant node in response to committing the file system updates and the transaction information to the first journal and the second journal; and
removing the file system updates and the transaction information from the first journal and the second journal in response to writing the file system updates and the transaction information to the one or more drives at the primary participant node.
