IP Library Granted Patent US 11,620,068
Granted Patent B2
US 11,620,068 · App. 17/142,557 · Granted Apr 4, 2023

Data transfer optimizations

Inventors: Amitai Alkalay (Kadima, IL); Lior Kamran (Rishon LeZion, IL); Vasu Subramanian (Chapel Hill, NC)
Assignee: EMC IP Holding Company LLC
G06F3/065G06F3/0619G06F3/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,620,068
App. No.
17/142,557
Granted
Apr 4, 2023
Kind
B2
Abstract

Techniques for performing data transfers may include determining a first page of user data to be transferred from a source data storage system to a target data storage system, wherein the source data storage system has a source page size granularity denoting a first size of backend I/O operations on the source data storage system, wherein the target data storage system has a target page size granularity denoting a second size of backend I/O operations on the target data storage system; performing processing on the source data storage system that constructs a second page of user data that is the second size, wherein the second page of user data includes the first page of user data that is the first size and another page of user data that is the first size; and transferring the second page of user data from the source to the target data storage system.

Claims (40)

1. A method of performing data transfers comprising:

receiving, at a source data storage system, a client write I/O operation from a host, wherein the client write I/O operation writes new user data to a first page of user data stored at a first logical address of a logical device, wherein the client write I/O operation modifies existing user data, as stored at the first logical address of the logical device prior to the client write I/O operation, by storing the new user data to the first logical address of the logical device;

responsive to the first client write I/O operation from the host, determining that the first page of user data including the new user data is to be transferred from the source data storage system to a target data storage system, wherein the source data storage system is a first data storage array and the target data storage system is a second data storage array, wherein the source data storage system and the target data storage system are separate physical data storage arrays connected by a network, wherein the source data storage system includes first backend non-volatile storage devices for storing user data and metadata, and wherein the target data storage system includes second backend non-volatile storage devices for storing user data and metadata, wherein the source data storage system has a source page size granularity denoting a first size of backend I/O operations on the source data storage system that read and write user data and metadata stored on the first backend non-volatile storage devices of the source data storage system, wherein the target data storage system has a target page size granularity that is different from the source page size granularity and denotes a second size of backend I/O operations on the target data storage system that read and write user data and metadata stored on the second backend non-volatile storage devices of the target data storage system, wherein the first page of user data is the first size and the first page of user data is stored at the first logical address of the logical device having physical storage provisioned from at least one of the first backend non-volatile storage devices of the source data storage system;

performing first processing on the source data storage system that constructs a second page of user data to be transferred from the source data storage system to the target data storage, wherein the second page of user data is the second size, wherein the second page of user data includes modified user data and unmodified user data, and wherein the modified user data of the second page of user data includes the first page of user data comprising the new user data written by the client write I/O operation, and wherein the unmodified user data of the second page includes an additional page of user data that is the first size; and

transferring the second page of user data comprising the modified user data and the unmodified user data from the source data storage system to the target data storage system.

2. The method of claim 1 , further comprising:

receiving the second page of user data at the target data storage system; and

performing a single backend write operation on the target data storage system, wherein the single backend write operation writes the second page of user data on a first backend non-volatile storage device of the second backend non-volatile storage devices of the target data storage system, wherein the first page of user data and the additional page of user data are stored at consecutive locations on the first backend non-volatile storage device of the target data storage system.

3. The method of claim 2 , further comprising:

storing the second page of user data as a first record in a log file of the target data storage system; and

flushing the first record from the log file of the target data storage system, wherein said flushing the first record includes performing the single backend write operation on the target data storage system that writes the second page of user data on the first backend non-volatile storage device of the target data storage system.

4. The method of claim 3 , wherein the first page of user data and the additional page of user data are stored at sequential consecutive logical addresses of the logical device.

5. The method of claim 1 , wherein the source data storage system uses only non-volatile solid state drives (SSDs) as the first backend non-volatile storage devices of the source data storage system.

6. The method of claim 5 , wherein the non-volatile SSDs include flash-based storage devices.

7. The method of claim 5 , wherein the second backend non-volatile storage devices of the target data storage system include non-volatile SSDs and rotating disk drives.

8. The method of claim 7 , wherein the source data storage system uses first metadata to map user data pages stored at logical addresses of one or more logical devices to corresponding physical storage locations on the first backend non-volatile storage devices of the source data storage system, wherein the target data storage system uses second metadata to map user data pages stored at logical addresses of one or more logical devices to corresponding physical storage locations on the second backend non-volatile storage devices of the target data storage system, wherein the source data storage system stores user data pages and the first metadata on non-volatile SSDs of the first backend non-volatile storage devices, and wherein the target data storage system stores the second metadata on non-volatile SSDs of the second backend non-volatile storage devices and at least some of user data pages on rotating disk drives of the second backend non-volatile storage devices.

9. The method of claim 1 , wherein the second page of user data is transferred from the source data storage system to the target data storage system in connection with replicating data of the logical device from the source data storage system to the target data storage system.

10. The method of claim 9 , further comprising:

taking a first snapshot of the logical device on the first data storage system at a first point in time;

taking a second snapshot of the logical device on the first data storage system at a second point in time; and

determining the first page of user data as a data difference between the first snapshot and the second snapshot.

11. The method of claim 10 , wherein prior to determining the first page of user data, prior to performing the first processing and prior to transferring the second page of user data, the method includes establishing a replication session comprising:

sending the target page size granularity from the target data storage system to the source data storage system.

12. The method of claim 1 , wherein the second page of user data is transferred from the source data storage system to the target data storage system in connection with migrating data of the logical device from the source data storage system to the target data storage system.

13. The method of claim 1 , wherein the backend I/O operations of the source data storage system include read operations that each read an amount of data equal to the source page size granularity from one of the first backend non-volatile storage devices of the source data storage system, and wherein the backend I/O operations of the source data storage system include write operations that each write an amount of data equal to the source page size granularity to one of the first backend non-volatile storage devices of the source data storage system.

14. The method of claim 1 , wherein the backend I/O operations of the target data storage system include read operations that each read an amount of data equal to the target page size granularity from one of the second backend non-volatile storage devices of the target data storage system, and wherein the backend I/O operations of the target data storage system include write operations that each write an amount of data equal to the target page size granularity to one of the second backend non-volatile storage devices of the target data storage system.

15. The method of claim 1 , wherein the target page size granularity is larger than the source page size granularity and wherein the target page size granularity is an integer multiple of the source page size granularity.

16. The method of claim 15 , wherein the target page size granularity is at least twice the source page size granularity.

17. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of performing data transfers comprising:

receiving, at a source data storage system, a client write I/O operation from a host, wherein the client write I/O operation writes new user data to a first page of user data stored at a first logical address of a logical device, wherein the client write I/O operation modifies existing user data, as stored at the first logical address of the logical device prior to the client write I/O operation, by storing the new user data to the first logical address of the logical device;

responsive to the first client write I/O operation from the host, determining that the first page of user data including the new user data is to be transferred from the source data storage system to a target data storage system, wherein the source data storage system is a first data storage array and the target data storage system is a second data storage array, wherein the source data storage system and the target data storage system are separate physical data storage arrays connected by a network, wherein the source data storage system includes first backend non-volatile storage devices for storing user data and metadata, and wherein the target data storage system includes second backend non-volatile storage devices for storing user data and metadata, wherein the source data storage system has a source page size granularity denoting a first size of backend I/O operations on the source data storage system that read and write user data and metadata stored on the first backend non-volatile storage devices of the source data storage system, wherein the target data storage system has a target page size granularity that is different from the source page size granularity and denotes a second size of backend I/O operations on the target data storage system that read and write user data and metadata stored on the second backend non-volatile storage devices of the target data storage system, wherein the first page of user data is the first size and the first page of user data is stored at the first logical address of the logical device having physical storage provisioned from at least one of the first backend non-volatile storage devices of the source data storage system;

performing first processing on the source data storage system that constructs a second page of user data to be transferred from the source data storage system to the target data storage, wherein the second page of user data is the second size, wherein the second page of user data includes modified user data and unmodified user data, and wherein the modified user data of the second page of user data includes the first page of user data comprising the new user data written by the client write I/O operation, and wherein the unmodified user data of the second page includes an additional page of user data that is the first size; and

transferring the second page of user data comprising the modified user data and the unmodified user data from the source data storage system to the target data storage system.

18. A non-transitory computer readable memory comprising code stored thereon that, when executed, performs a method of performing data transfers comprising:

receiving, at a source data storage system, a client write I/O operation from a host, wherein the client write I/O operation writes new user data to a first page of user data stored at a first logical address of a logical device, wherein the client write I/O operation modifies existing user data, as stored at the first logical address of the logical device prior to the client write I/O operation, by storing the new user data to the first logical address of the logical device;

responsive to the first client write I/O operation from the host, determining that the first page of user data including the new user data is to be transferred from the source data storage system to a target data storage system, wherein the source data storage system is a first data storage array and the target data storage system is a second data storage array, wherein the source data storage system and the target data storage system are separate physical data storage arrays connected by a network, wherein the source data storage system includes first backend non-volatile storage devices for storing user data and metadata, and wherein the target data storage system includes second backend non-volatile storage devices for storing user data and metadata, wherein the source data storage system has a source page size granularity denoting a first size of backend I/O operations on the source data storage system that read and write user data and metadata stored on the first backend non-volatile storage devices of the source data storage system, wherein the target data storage system has a target page size granularity that is different from the source page size granularity and denotes a second size of backend I/O operations on the target data storage system that read and write user data and metadata stored on the second backend non-volatile storage devices of the target data storage system, wherein the first page of user data is the first size and the first page of user data is stored at the first logical address of the logical device having physical storage provisioned from at least one of the first backend non-volatile storage devices of the source data storage system;

performing first processing on the source data storage system that constructs a second page of user data to be transferred from the source data storage system to the target data storage, wherein the second page of user data is the second size, wherein the second page of user data includes modified user data and unmodified user data, and wherein the modified user data of the second page of user data includes the first page of user data comprising the new user data written by the client write I/O operation, and wherein the unmodified user data of the second page includes an additional page of user data that is the first size; and

transferring the second page of user data comprising the modified user data and the unmodified user data from the source data storage system to the target data storage system.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2021
From: ALKALAY, AMITAI; KAMRAN, LIOR; SUBRAMANIAN, VASU
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054828/0168 →
Continuity (1)
Related Publication 20220214812A1 · Jul 7, 2022