IP Library Granted Patent US 10,261,708
Granted Patent B1
US 10,261,708 · App. 15/497,804 · Granted Apr 16, 2019

Host data replication allocating single memory buffers to store multiple buffers of received host data and to internally process the received host data

Inventors: Venkata Ippatapu (Westborough, MA); Kenneth M. Dorman (West Brookfield, MA); Ilya Garelik (Sudbury, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/0604G06F3/065G06F3/067G06F3/0631G06F3/0656G06F12/0868G06F13/1673G06F13/28G06F15/17331G06F2212/1016G06F2212/154G06F2212/604
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,261,708
App. No.
15/497,804
Granted
Apr 16, 2019
Kind
B1
Abstract

On a local data storage system, a single buffer of contiguous local memory is allocated to store host data from multiple received host data buffers in a local cache, and local internal data processing operations may be performed on the host data with local data processing resources using the single buffer of contiguous local memory in the local memory to store the host data. On a remote data storage system onto which the host data is replicated, a single buffer of contiguous remote memory is allocated to store host data from multiple transmission units used to convey the host data to the remote data storage system, and remote internal data processing operations may be performed on the host data by one or more remote data processing resources using the single buffer of contiguous remote memory to store the host data from the received transmission units.

Claims (50)

1. A method of performing host data replication between a local data storage system and a remote data storage system, comprising:

storing host data received by the local data storage system from one or more host computers into a plurality of discontiguous received host data buffers within a local cache in the local data storage system, wherein contents of the host data buffers within the local cache is also stored into non-volatile storage of the local data storage system to persistently store the contents of the host data buffers in the local data storage system;

generating a local data buffer location list having a plurality of entries, wherein each entry in the local data buffer location list indicates a location and a length of a corresponding one of the received host data buffers in the local cache; and

in response to the local data buffer location list:

allocating a single buffer of contiguous local memory in a memory of the local data storage system, wherein the single buffer of contiguous local memory has a size that is at least as large as a total size of the received host buffers, and

performing at least one local internal data processing operation on the host data with at least one local data processing resource within the local data storage system while using the single buffer of contiguous local memory to store the host data from the received host data buffers.

2. The method of claim 1 , wherein the at least one local data processing resource includes local direct memory access circuitry coupled to the local cache and the memory of the local data storage system, and wherein the at least one local internal data processing operation includes moving the host data from the host data buffers in the local cache to the single buffer of contiguous local memory using the local direct memory access circuitry.

3. The method of claim 2 , wherein moving the host data from the host data buffers in the local cache to the single buffer of contiguous local memory includes i) indicating, responsive to the entries in the local data buffer location list, the locations of the received host data buffers in the local cache to the local direct memory access circuitry, ii) indicating a location of the single buffer of contiguous local memory in the memory of the local data storage system to the local direct memory access circuitry, and iii) triggering the local direct memory access circuitry to begin moving the host data from the received host data buffers in the local cache to the single buffer of contiguous local memory.

4. The method of claim 3 , wherein the at least one local data processing resource includes local data compression circuitry coupled to the memory of the local data storage system, and wherein the at least one local internal data processing operation includes compressing the host data in the single buffer of contiguous local memory using the local data compression circuitry.

5. The method of claim 4 , wherein compressing the host data in the single buffer of contiguous local memory includes i) indicating the location of the single buffer of contiguous local memory in the memory of the local data storage system to the local data compression circuitry coupled to the memory of the local data storage system, and ii) triggering the local data compression circuitry to begin compressing the host data in the single buffer of contiguous local memory.

6. The method of claim 5 , wherein the at least one local data processing resource includes at least one local central processing unit, and wherein the at least one local internal data processing operation includes executing a network controller module on the local central processing unit to add network header information to the host data in the single buffer of contiguous memory in the memory of the local data storage system, wherein the network header information includes mapping information indicating locations within a remote cache of the remote data storage system into which the host data is to be stored.

7. The method of claim 6 , wherein the at least one local data processing resource further includes a local network interface controller, and wherein the at least one local internal data processing operation includes executing a TCP/IP module on the local central processing unit to cause a large send offload operation to be performed by a local network interface card in the local data storage system by passing the single buffer of contiguous memory to the local network interface controller to cause the local network interface controller to i) divide the host data stored in the single buffer of contiguous memory into packets, and ii) transmit the packets as transmission units to the remote data storage system.

8. The method of claim 6 , further comprising:

receiving the transmission units by the remote data storage system;

allocating a single buffer of contiguous remote memory in a memory of the remote data storage system, wherein the single buffer of contiguous remote memory has a size that is at least as large as a total size of the received transmission units; and

performing at least one remote internal data processing operation on the host data with at least one remote data processing resource within the remote data storage system while using the single buffer of contiguous remote memory to store the host data contained within the received transmission units.

9. The method of claim 8 , wherein the at least one remote data processing resource includes remote data compression circuitry coupled to the memory of the remote data storage system, and wherein the at least one remote internal data processing operation includes decompressing the host data in the single buffer of contiguous remote memory using the remote data compression circuitry.

10. The method of claim 9 , wherein the at least one remote data processing resource includes remote direct memory access circuitry coupled to the remote cache and the memory of the remote data storage system, and further comprising:

generating, at the remote data storage system from mapping information in transmission unit metadata, a remote data buffer location list having a plurality of entries, wherein each entry in the remote data buffer location list indicates a location and a length of a buffer within the remote cache of the remote data storage system into which the replicated host data is to be stored, and wherein the replicated host data in the remote cache is also stored into non-volatile storage of the remote data storage system to persistently store the replicated host data on the remote data storage system; and

wherein the at least one remote internal data processing operation includes moving the host data from the single buffer of contiguous remote memory to the locations within the remote cache of the remote data storage system into which the replicated host data is to be stored, responsive to the entries in the remote data buffer location list, using the remote direct memory access circuitry.

11. A system for replicating host data, comprising:

a local data storage system having processing circuitry and at least one memory with program code stored thereon for execution on the processing circuitry, wherein the local data storage system is configured and arranged to:

store host data received by the local data storage system from one or more host computers into a plurality of discontiguous received host data buffers within a local cache in the local data storage system, wherein contents of the host data buffers within the local cache is also stored into non-volatile storage of the local data storage system to persistently store the contents of the host data buffers in the local data storage system;

generate a local data buffer location list having a plurality of entries, wherein each entry in the local data buffer location list indicates a location and a length of a corresponding one of the received host data buffers in the local cache; and

in response to the local data buffer location list:

allocate a single buffer of contiguous local memory in a memory of the local data storage system, wherein the single buffer of contiguous local memory has a size that is at least as large as a total size of the received host buffers, and

perform at least one local internal data processing operation on the host data with at least one local data processing resource within the local data storage system while using the single buffer of contiguous local memory to store the host data from the received host data buffers.

12. The system of claim 11 , wherein the at least one local data processing resource includes local direct memory access circuitry coupled to the local cache and the memory of the local data storage system, and wherein the local data storage system is further configured and arranged to perform the at least one local internal data processing operation at least in part by moving the host data from the host data buffers in the local cache to the single buffer of contiguous local memory using the local direct memory access circuitry.

13. The system of claim 12 , wherein the local data storage system is further configured and arranged to move the host data from the host data buffers in the local cache to the single buffer of contiguous local memory at least in part by i) indicating, responsive to the entries in the local data buffer location list, the locations of the received host data buffers in the local cache to the local direct memory access circuitry, ii) indicating a location of the single buffer of contiguous local memory in the memory of the local data storage system to the local direct memory access circuitry, and iii) triggering the local direct memory access circuitry to begin moving the host data from the received host data buffers in the local cache to the single buffer of contiguous local memory.

14. The system of claim 13 , wherein the at least one local data processing resource includes local data compression circuitry coupled to the memory of the local data storage system, and wherein the local data storage system is further configured and arranged to perform the at least one local internal data processing operation at least in part by compressing the host data in the single buffer of contiguous local memory using the local data compression circuitry.

15. The system of claim 14 , wherein the local data storage system is further configured and arranged to compress the host data in the single buffer of contiguous local memory at least in part by i) indicating the location of the single buffer of contiguous local memory in the memory of the local data storage system to the local data compression circuitry coupled to the memory of the local data storage system, and ii) triggering the local data compression circuitry to begin compressing the host data in the single buffer of contiguous local memory.

16. The system of claim 15 , further comprising:

a remote data storage system having processing circuitry and at least one memory with program code stored thereon for execution on the processing circuitry; and

wherein the at least one local data processing resource includes at least one local central processing unit, and wherein the local data storage system is further configured and arranged to perform the at least one local internal data processing operation at least in part by executing a network controller module on the local central processing unit to add network header information to the host data in the single buffer of contiguous memory in the memory of the local data storage system, wherein the network header information includes mapping information indicating locations within a remote cache of the remote data storage system into which the host data is to be stored.

17. The system of claim 16 , wherein the at least one local data processing resource further includes a local network interface controller, and wherein the local data storage system is further configured and arranged to perform the at least one local internal data processing operation at least in part by executing a TCP/IP module on the local central processing unit to cause a large send offload operation to be performed by a local network interface card in the local data storage system by passing the single buffer of contiguous memory to the local network interface controller to cause the local network interface controller to i) divide the host data stored in the single buffer of contiguous memory into packets, and ii) transmit the packets as transmission units to the remote data storage system.

18. The system of claim 16 , wherein the remote data storage system is configured and arranged to:

receive the transmission units;

allocate a single buffer of contiguous remote memory in the memory of the remote data storage system, wherein the single buffer of contiguous remote memory has a size that is at least as large as a total size of the received transmission units; and

perform at least one remote internal data processing operation on the host data with at least one remote data processing resource within the remote data storage system while using the single buffer of contiguous remote memory to store the host data contained within the received transmission units.

19. The system of claim 18 , wherein the at least one remote data processing resource includes remote data compression circuitry coupled to the memory of the remote data storage system, and wherein the remote data storage system is further configured and arranged to perform the at least one remote internal data processing operation at least in part by decompressing the host data in the single buffer of contiguous remote memory using the remote data compression circuitry.

20. The system of claim 19 , wherein the at least one remote data processing resource includes remote direct memory access circuitry coupled to the remote cache and the memory of the remote data storage system, and wherein the remote data storage system is further configured and arranged to:

generate, from mapping information in transmission unit metadata, a remote data buffer location list having a plurality of entries, wherein each entry in the remote data buffer location list indicates a location and a length of a buffer within the remote cache of the remote data storage system into which the replicated host data is to be stored, and wherein the replicated host data in the remote cache is also stored into non-volatile storage of the remote data storage system to persistently store the replicated host data on the remote data storage system; and

perform the at least one remote internal data processing operation at least in part by moving the host data from the single buffer of contiguous remote memory to the locations within the remote cache of the remote data storage system into which the replicated host data is to be stored, responsive to the entries in the remote data buffer location list, using the remote direct memory access circuitry.

21. A computer program product, comprising:

at least one non-transitory computer readable medium storing program code for, the program code, when executed by processing circuitry, causing the processing circuitry to perform the steps of:

storing host data received by the local data storage system from one or more host computers into a plurality of discontiguous received host data buffers within a local cache in the local data storage system, wherein contents of the host data buffers within the local cache is also stored into non-volatile storage of the local data storage system to persistently store the contents of the host data buffers in the local data storage system;

generating a local data buffer location list having a plurality of entries, wherein each entry in the local data buffer location list indicates a location and a length of a corresponding one of the received host data buffers in the local cache; and

in response to the local data buffer location list:

allocating a single buffer of contiguous local memory in a memory of the local data storage system, wherein the single buffer of contiguous local memory has a size that is at least as large as a total size of the received host buffers, and

performing at least one local internal data processing operation on the host data with at least one local data processing resource within the local data storage system while using the single buffer of contiguous local memory to store the host data from the received host data buffers.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2017
From: IPPATAPU, VENKATA L. R.; DORMAN, KENNETH M.; GARELIK, ILYA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042344/0070 →