IP Library Granted Patent US 11,748,020
Granted Patent B2
US 11,748,020 · App. 17/802,791 · Granted Sep 5, 2023

Reestablishing redundancy in redundant storage

Inventors: Siamak Nazari (Mountain View, CA); Jin Wang (Cupertino, CA); Jonathan McDowell (Belfast, GB); Srinivasa D. Murthy (Cupertino, CA)
Assignee: Nebuon, Inc.
G06F3/065G06F3/0613G06F3/0665G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,748,020
App. No.
17/802,791
Granted
Sep 5, 2023
Kind
B2
Abstract

Storage redundancy may be resynchronized without determining a snapshot difference. A storage component ( 210 ) owning a volume ( 122 ) can maintain current and expected generation numbers ( 212, 214 ) based on modification requests received and modification requests that a backup component ( 220 ) acknowledges completing. The backup ( 220 ) can maintain current and expected generation numbers ( 222, 224 ) based on modification requests received and applied to a backup volume ( 124 ). If either component ( 210, 220 ) fails and later returns to service, differences between the owner's current and expected generation numbers ( 212, 214 ) and the backup's current and expected generation numbers ( 222, 224 ) indicate which modification requests may have been missed and need to be reconstructed to restore synchronization.

Claims (52)

1. A process comprising:

for a sequence of requests to write data in a virtual volume owned by a first storage processing unit, the first storage processing unit processing each of the requests by:

assigning to the request to a generation number sequentially from a sequence of generation numbers;

applying the request to first persistent storage associated with the first storage processing unit; and

transmitting the request and the generation number of the request to a second storage processing unit;

for each of the requests the second storage processing unit receives from the first storage processing unit, the second storage processing unit processing the request by:

applying the request to second persistent storage associated with the second storage processing unit; and

updating resynchronization data of the second storage processing unit, the resynchronization data distinguishing which generation numbers from the sequence of generation numbers do not correspond to the requests processed by the second storage processing unit.

2. The process of claim 1 , wherein in response to the second storage processing unit returning to service after being unavailable, the process further comprises:

the second storage processing unit retrieving the resynchronization data and informing the first storage processing unit of a set of generation numbers for which the second storage processing unit has not process requests; and

the first storage processing unit creating reconstructed requests corresponding to generation numbers in the set, and transmitting the reconstructed requests to the second storage processing unit.

3. The process of claim 1 , wherein for each of the requests that the second storage processing unit receives from the first storage processing unit, the second storage processing unit further processes the request by sending an acknowledgement to the first storage processing unit, the acknowledgement indicating that the second processing unit has applied the request.

4. The process of claim 3 , further comprising:

the first processing unit maintaining a current generation number indicating the generation number last assigned to one of the requests; and

the first processing unit updating an expected generation number in response to receiving from the second processing unit an acknowledgement corresponding to a prior value of the expected generation number.

5. The process of claim 1 , wherein the second processing unit updating the resynchronization data, comprises:

the second processing unit, in response to the generation number of the request being greater than a value of a current generation number kept by the second processing unit, setting the current generation number to the generation number of the request; and

the second processing unit, in response to the generation number of the request matching a value of an expected generation number kept by the second processing unit, changing the value of the expected generation number to a generation number that follows in the sequence of generation numbers and does not correspond to any of the IO requests processed by the second processing unit.

6. The process of claim 1 , wherein the resynchronization data comprises:

a current generation number indicating a greatest of the generation numbers of the requests that the second storage processing unit has applied; and

an expected generation number indicating a least of the generation number of the request that the second storage processing unit has not applied.

7. The process of claim 6 , wherein the resynchronization data further comprises a bit map containing bits that map to generation numbers and are set or not depending on whether the second storage processing unit has processed the request corresponding to the generation numbers.

8. A storage processing unit comprising:

a persistent memory; and

a processor configured to process a sequence of requests to write data in a virtual volume associated with the storage processing unit, the storage processing unit processing each of the requests by:

assigning to the request to a generation number sequentially from a sequence of generation numbers;

applying the request to first persistent storage associated with the first storage processing unit;

transmitting the request and the generation number of the request to a backup storage component that maintains a backup of the virtual volume;

maintaining in the persistent memory a current generation number indicating the generation number last assigned to one of the requests; and

in response to receiving from the backup storage component an acknowledgement corresponding to a value of an expected generation number in persistent memory, updating in the expected generation number.

9. The storage processing unit of claim 8 , wherein the processor is further configured to execute a resynchronization process after recovering from a failed state, the resynchronization process comprising:

accessing values of the current generation number and the expected generation number from the persistent memory;

communicating the values of the current generation number and the expected generation number to the backup storage component;

receiving from the backup storage component a set of reconstructed requests that correspond to generation numbers determined based on the values of the current generation number and the expected generation number from the persistent memory.

10. The storage processing unit of claim 8 , wherein the processor is further configured to execute a resynchronization process after the backup storage component recovers from a failed state, the resynchronization process comprising:

receiving from the backup storage component resynchronization data indicating generation numbers corresponding to requests that the backup storage component has not applied;

reconstructing a set of reconstructed requests that the storage processing unit has applied and that correspond to generation numbers of the requests that the backup storage component has not applied; and

transmitting the reconstructed request to the backup storage component.

11. A storage processing unit comprising:

a persistent memory; and

a processor configured to process a sequence of requests to write data in a virtual volume associated with a primary storage component, the storage processing unit processing each of the requests by:

receiving the request and a generation number of the request from the primary storage component, the generation number being from a sequence of generation numbers;

applying the request to persistent storage associated with the storage processing unit;

acknowledging to the primary storage component that the storage processing unit applied the request; and

updating resynchronization data in the persistent memory, the resynchronization data distinguishing which generation numbers from the sequence of generation numbers do not correspond to requests processed by the storage processing unit.

12. The storage processing unit of claim 10 , wherein updating the resynchronization data comprises:

in response to the generation number of the request being greater than a value of a current generation number in the persistent memory, setting the current generation number to the generation number of the request; and

in response to the generation number of the request matching a value of an expected generation number in the persistent memory, changing the value of the expected generation number to a generation number that follows in the sequence of generation numbers and does not correspond to any of the TO requests processed by the second processing unit.

13. The storage processing unit of claim 12 , wherein the processor is further configured to execute a resynchronization process after recovering from a failed state, the resynchronization process comprising:

accessing values of the current generation number and the expected generation number from the persistent memory;

communicating the values of the current generation number and the expected generation number to the second storage processing unit;

receiving from the second storage processing unit a set of reconstructed requests that correspond to generation numbers determined based on the values of the current generation number and the expected generation number from the persistent memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2024
From: NEBULON, INC.; NEBULON LTD
To: NVIDIA CORPORATION
Reel/Frame 067005/0154 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2022
From: NAZARI, SIAMAK; WANG, JIN; MCDOWELL, JONATHAN; MURTHY, SRINIVASA
To: NEBULON, INC.
Reel/Frame 060914/0317 →
Continuity (2)
Provisional Application 62983475 · Feb 28, 2020
Related Publication 20230104473A1 · Apr 6, 2023