Storage Node Data Synchronization Using Pointer-Based Chunking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-node active/active storage clusters, data synchronization during node failback operations often causes performance hiccups due to the suspension of I/O operations, leading to an undesirable client experience.

Innovation Solution

A method where data is iteratively transferred from one node to another using pointers to manage memory pool chunks, allowing continuous I/O operations during synchronization, with additional pointers generated until the data size falls below a predefined threshold, enabling efficient synchronization and minimizing downtime.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If data synchronization is performed between storage nodes during failback operations, then data consistency is improved, but I/O operations must be suspended causing performance degradation

Engineering Contradiction:
Improvedata consistencyVSAvoidI/O operation throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the memory pool into multiple chunks and uses multiple pointers to track different data regions. This allows the system to synchronize specific data portions independently rather than suspending all I/O operations for complete data synchronization, thereby maintaining productivity while achieving reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary data synchronization actions by writing data portions from the first node to the second node before complete failback is required. This preliminary action reduces the amount of data that needs to be synchronized during actual failback, minimizing I/O suspension time while ensuring data consistency.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If complete data synchronization is performed before failback, then data consistency is improved, but the duration of I/O suspension increases

Engineering Contradiction:
Improvedata consistencyVSAvoidI/O suspension duration
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies partial action by synchronizing only the necessary data portions identified by pointer differences rather than performing complete data synchronization. This reduces the time required for synchronization while maintaining data consistency, as only the divergent data regions need to be transferred.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

By performing preliminary synchronization of data portions before failback operations, the patent reduces the amount of data that requires synchronization during the actual failback event, thereby minimizing I/O suspension duration while ensuring data consistency is achieved.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If iterative pointer-based data transfer is used during failback, then I/O operation continuity is improved, but the complexity of data management increases

Engineering Contradiction:
ImproveI/O operation continuityVSAvoiddata management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces pointers as intermediary elements that track data regions in the memory pool. These pointers serve as mediators between the data storage structure and the synchronization process, enabling continuous I/O operations while managing data transfer complexity through structured pointer-based tracking rather than direct data management.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11151005B2System and method for storage node data synchronization
Publication Date: 2021.10.19 EMC IP HLDG CO LLC
  • US11151005B2 patent drawing
  • US11151005B2 patent drawing
  • US11151005B2 patent drawing

AI summary

A method, computer program product, and computing system for writing, from a first node to a second node, a first portion of data from a memory pool in the first node defined by, at least in part, a first pointer. One or more input/output (IO) operations may be received while writing the first portion of data to the second node. Data from the one or more IO operations may be stored within the memory pool after the first pointer.