IP Library › Granted Patent US 10,803,086
Granted Patent B2
US 10,803,086 · App. 15/660,753 · Granted Oct 13, 2020

Reducing data amplification when resynchronizing components of an object replicated across different sites

Inventors: Pascal Renauld (Palo Alto, CA); Enning Xiang (San Jose, CA); Eric Knauft (San Francisco, CA)
Assignee: VMware, Inc.
G06F16/27G06F3/065G06F3/067G06F3/0619G06F3/0665G06F3/0689G06F9/45558G06F16/188G06F2009/45583G06F2009/45595
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 10,803,086
App. No.
15/660,753
Filed
Jul 26, 2017
Granted
Oct 13, 2020
Kind
B2
Art Unit
2168
USPC
707/617
Abstract

Component objects of a virtual disk are backed by first storage nodes, which are at a primary site, and second storage nodes, which are at a secondary site. The method of resynchronizing the component objects of the virtual disk includes, at a coordinating node at the primary site, responsive to a second storage node coming back online, identifying an out-of-sync block of the second storage node, locating the out-of-sync block in an address space maintained for blocks of the virtual disk, and transmitting a resync command to a replication module of a coordinating node at the secondary site, the resync command identifying the out-of-sync block within the address space.

Claims (34)

1. A method of resynchronizing component objects of a virtual disk, that are backed by first storage nodes, which are at a primary site, and second storage nodes, which are at a secondary site, comprising:

at a coordinating node at the primary site, responsive to an out-of-sync storage node from the second storage nodes coming back online, identifying an out-of-sync block of the out-of-sync storage node, locating the out-of-sync block in an address space maintained for blocks of the virtual disk, and transmitting a resync command to a coordinating node at the secondary site, the resync command identifying the out-of-sync block within the address space, wherein in response to the resync command the coordinating node at the secondary site resyncs the out-of-sync block using at least one of one or more data blocks and one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

2. The method of claim 1 , wherein the address space is maintained for data blocks of the virtual disk and the out-of-sync block is one of the data blocks.

3. The method of claim 1 , wherein the address space is maintained for code blocks of the virtual disk and the out-of-sync block is one of the code blocks, and each of the code blocks is generated by performing an erasure coding operation on data blocks of the virtual disk, wherein the code blocks of the virtual disk comprise the one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node, and wherein the data blocks of the virtual disk comprise the one or more data blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

4. The method of claim 3 , further comprising:

at the coordinating node at the primary site, maintaining first metadata for the code blocks of the virtual disk including the out-of-sync block, the first metadata defining the address space maintained for the code blocks, and maintaining second metadata for the data blocks of the virtual disk, the second metadata defining the address space maintained for the data blocks.

5. The method of claim 3 , wherein the coordinating node at the secondary site resyncing the out-of-sync block comprises the coordinating node at the secondary site generating contents for the out-of-sync block by performing a mathematical operation on the contents of the at least one of one or more data blocks and one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node, and writing the generated contents to the out-of-sync block at the out-of-sync storage node.

6. The method of claim 5 , wherein the coordinating node at the secondary site includes an erasure coding engine that performs the mathematical operation.

7. The method of claim 1 , wherein the coordinating node at the secondary site resyncing the out-of-sync block comprises the coordinating node at the secondary site reading contents from one of the second storage nodes other than the out-of-sync storage node and writing the contents into the out-of-sync block at the out-of-sync storage node, wherein the contents are stored in a data block or a code block of the at least one of one or more data blocks and one or more code blocks.

8. The method of claim 7 , wherein the coordinating node at the secondary site uses a RAID 1 engine for performing the reading and the writing.

9. A non-transitory computer readable storage medium comprising instructions that are executable in a computer system to cause the computer system to perform a method of resynchronizing component objects of a virtual disk, that are backed by first storage nodes, which are at a primary site, and second storage nodes, which are at a secondary site, the method comprising:

responsive to an out-of-sync storage node from the second storage nodes coming back online, identifying an out-of-sync block of the out-of-sync storage node;

locating the out-of-sync block in an address space maintained for blocks of the virtual disk; and

transmitting a resync command to a coordinating node at the secondary site, the resync command identifying the out-of-sync block within the address space, wherein in response to the resync command the coordinating node at the secondary site resyncs the out-of-sync block using at least one of one or more data blocks and one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

10. The non-transitory computer readable medium of claim 9 , wherein the address space is maintained for data blocks of the virtual disk and the out-of-sync block is one of the data blocks, and wherein the data blocks of the virtual disk comprise the one or more data blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

11. The non-transitory computer readable medium of claim 9 , wherein the address space is maintained for code blocks of the virtual disk and the out-of-sync block is one of the code blocks, and each of the code blocks is generated by performing an erasure coding operation on data blocks of the virtual disk, and wherein the code blocks of the virtual disk comprise the one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

12. The non-transitory computer readable medium of claim 11 , wherein the method further comprises:

maintaining first metadata for the code blocks of the virtual disk including the out-of-sync block, the first metadata defining the address space maintained for the code blocks; and

maintaining second metadata for the data blocks of the virtual disk, the second metadata defining the address space maintained for the data blocks.

13. A computer system for resynchronizing component objects of a virtual disk, which are at a primary site, and second storage nodes, which are at a secondary site, comprising:

a coordinating node at the primary site; and

a coordinating node at the secondary site, wherein

the coordinating node at the primary site is configured to

responsive to an out-of-sync storage node coming back online, identify an out-of-sync block of the out-of-sync storage node, locate the out-of-sync block in an address space maintained for blocks of the virtual disk, and transmit a resync command to the coordinating node at the secondary site, the resync command identifying the out-of-sync block within the address space, and

the coordinating node at the secondary site is configured to execute the resync command to resync the out-of-sync block using at least one of one or more data blocks and one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

14. The computer system of claim 13 , wherein the address space is maintained for data blocks of the virtual disk and the out-of-sync block is one of the data blocks, and wherein the data blocks of the virtual disk comprise the one or more data blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

15. The computer system of claim 13 , wherein the address space is maintained for code blocks of the virtual disk and the out-of-sync block is one of the code blocks, and each of the code blocks is generated by performing an erasure coding operation on data blocks of the virtual disk, and wherein the code blocks of the virtual disk comprise the one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node.

16. The computer system of claim 15 , wherein the coordinating node at the primary site is further configured to:

maintain first metadata for the code blocks of the virtual disk including the out-of-sync block, the first metadata defining the address space maintained for the code blocks, and

maintain second metadata for the data blocks of the virtual disk, the second metadata defining the address space maintained for the data blocks.

17. The computer system of claim 15 , wherein the coordinating node at the secondary site resyncing the out-of-sync block comprises the coordinating node at the secondary site generating contents of the out-of-sync block by performing a mathematical operation on the contents of the at least one of one or more data blocks and one or more code blocks stored locally at the secondary site in one or more of the second storage nodes other than the out-of-sync storage node, and writing the generated contents to the out-of-sync block at the out-of-sync storage node.

18. The computer system of claim 17 , wherein the coordinating node at the secondary site includes an erasure coding engine that performs the mathematical operation.

19. The computer system of claim 13 , wherein the coordinating node at the secondary site resyncing the out-of-sync block comprises the coordinating node at the secondary site reading contents from one of the second storage nodes other than the out-of-sync storage node and writing the contents into the out-of-sync block at the out-of-sync storage node, wherein the contents are stored in a data block or a code block of the at least one of one or more data blocks and one or more code blocks.

20. The computer system of claim 19 , wherein the replication module of the coordinating node at the secondary site uses a RAID 1 engine for performing the reading and the writing.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2017
From: RENAULD, PASCAL; XIANG, ENNING; KNAUFT, ERIC
To: VMWARE, INC.
Reel/Frame 043311/0909 →
Continuity (1)
Related Publication 20190034505A1 · Jan 31, 2019