Nonce Mechanism for Multi-Fabric Storage Initialization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In storage systems with multiple fabric modules, the 'split brain' problem arises when a new storage device is added, leading to inconsistencies and potential data corruption due to communication and synchronization issues between fabric modules, causing initialization errors and system crashes.

Innovation Solution

The implementation of a nonce mechanism, where a non-repeating value associated with each data block is used to ensure atomicity in write operations, preventing multiple storage controllers from erasing data written by other controllers by matching and modifying the nonce stored locally on the storage device.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If multiple fabric modules are used to provide network connectivity to storage devices, then the storage system achieves higher availability and redundancy, but communication and synchronization issues arise causing split brain problems and data corruption

Engineering Contradiction:
Improvestorage system availabilityVSAvoidfabric module synchronization complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

A nonce mechanism is introduced as an intermediary to coordinate write operations between multiple fabric modules. The nonce acts as a mediator that tracks which controller should write to each data block, preventing split brain scenarios where multiple controllers simultaneously believe they have authority to write the same block.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system changes the state parameter of each data block by associating it with a specific nonce value. When a controller wants to write to a block, it checks the block's associated nonce; if the nonce matches the controller's current nonce, the write is permitted. This parameter change approach transforms the coordination problem into a simple state-checking mechanism.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If a nonce mechanism is implemented to prevent split brain problems, then data corruption is prevented and write operation atomicity is ensured, but the system requires additional nonce management overhead

Engineering Contradiction:
Improvedata integrityVSAvoidnonce management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Each data block carries its own nonce identifier, making the nonce information self-contained with the data block rather than requiring separate tracking structures. The block itself serves to identify which controller should write to it, eliminating the need for external nonce management databases or complex coordination protocols.

Inventive Principle:
Principle #25Self-service

3Productivity

If fabric modules independently initialize new storage devices, then device availability is improved, but initialization errors and system crashes occur due to conflicting initialization attempts

Engineering Contradiction:
Improvedevice initialization speedVSAvoidinitialization stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

Before allowing any fabric module to initialize a new storage device, the system performs a preliminary check to determine which controller currently holds the valid nonce for the device's data blocks. This preliminary action prevents conflicting initialization attempts by ensuring only the authorized controller proceeds with initialization, while other controllers wait.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11681448B2Multiple device IDs in a multi-fabric module storage system
Publication Date: 2023.06.20 PURE STORAGE INC
  • US11681448B2 patent drawing
  • US11681448B2 patent drawing
  • US11681448B2 patent drawing

AI summary

Fabric modules in a storage system offer differing device IDs from a deterministic sequence to a storage device being added to the storage system. The storage device that is being added accepts a device ID that is higher in the deterministic sequence. The fabric module that offered the device ID same as was accepted by the storage device determines to proceed with initializing the storage device.