IP Library Granted Patent US 11,099,768
Granted Patent B2
US 11,099,768 · App. 16/747,811 · Granted Aug 24, 2021

Transitioning from an original device to a new device within a data storage array

Inventors: Kundan Kumar (Bangalore, IN); Kurumurthy Gokam (Bangalore, IN); Md Haris Iqbal (Bangalore, IN); Remesh Parakunnath (Bangalore, IN)
Assignee: EMC IP Holding Company LLC
G06F3/065G06F3/0604G06F3/0683G06F13/1668G06F13/4282G06F2213/0032G06F2213/0036
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,099,768
App. No.
16/747,811
Granted
Aug 24, 2021
Kind
B2
Abstract

A technique provides transitioning from an original device to a new device within a data storage array. The technique involves initiating a copying activity within the data storage array, the copying activity copying data from the original device to the new device. The technique further involves, while the data is being copied from the original device to the new device, routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device. The technique further involves, after the data has been copied from the original device to the new device, performing a configuration change which routes I/O requests that target the logical storage to the new device rather than the original device.

Claims (77)

1. A method of transitioning from an original device to a new device within a data storage array, the method comprising:

initiating a copying activity within the data storage array, the copying activity copying data from the original device to the new device;

while the data is being copied from the original device to the new device, routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device; and

after the data has been copied from the original device to the new device, performing a configuration change which routes input/output (I/O) requests that target the logical storage to the new device rather than the original device.

2. The method as in claim 1 wherein the data storage array uses different I/O entry functions to access different storage devices;

wherein the method further comprises:

prior to initiating the copying activity, processing I/O requests targeting the logical storage using a first I/O entry function that accesses the original device, and

after the configuration change is performed, processing I/O requests targeting the logical storage using a second I/O entry function that accesses the new device rather than the first I/O entry function that accesses the original device.

3. The method as in claim 2 wherein the data storage array executes a kernel which addresses the first I/O entry function via a first function pointer and addresses the second I/O entry function via a second function pointer;

wherein the kernel manages access to the logical storage via an I/O path which initially includes the first function pointer when processing I/O requests targeting the logical storage using the first I/O entry function; and

wherein performing the configuration change includes:

modifying the I/O path to use the second function pointer in place of the first function pointer, the kernel processing I/O requests targeting the logical storage using the second I/O entry function in response to modifying the I/O path to use the second function pointer.

4. The method as in claim 3 wherein at least some of the write requests originate from a set of hosts; and

wherein the copying activity and the configuration change are performed transparently from the perspective of the set of hosts.

5. The method as in claim 2 wherein initiating the copying activity within the data storage array includes:

receiving a user command to transition from the original device to the new device, and

in response to the user command, reading the data from the original device and writing the data to the new device.

6. The method as in claim 5 wherein receiving the user command includes:

obtaining, as a transition command, an IOCTL system call which includes:

(i) a first identifier which identifies, as the storage device to transition from, the original device, and

(ii) a second identifier which identifies, as the storage device to transition to, the new device, and

wherein starting the background copy operation includes the method further comprises:

in response to the IOCTL system call, starting a background copy operation that reads the data from the original device and writes the data to the new device, the background copy operation being transparent to a set of hosts that access the logical storage.

7. The method as in claim 5 wherein the original device has a first series of sectors;

wherein the new device has a second series of sectors which matches the first series of sectors; and

wherein reading the data from the original device and writing the data to the new device includes:

sequentially reading data from the first series of sectors of the original device and writing the data to the second series of sectors of the new device to preserve data sector locations.

8. The method as in claim 2 wherein routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device includes:

processing I/O requests using a third I/O entry function that accesses both the original device and the new device, the third I/O entry function being different from the first I/O entry function and the second I/O entry function.

9. The method as in claim 8 wherein the data storage array executes a kernel which addresses the first I/O entry function via a first function pointer, addresses the second I/O entry function via a second function pointer, and addresses the third I/O entry function via a third function pointer;

wherein the kernel manages access to the logical storage via an I/O path which initially includes the first function pointer when processing I/O requests targeting the logical storage using the first I/O entry function; and

wherein routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device further includes:

prior to processing I/O requests using the third I/O entry function, modifying the I/O path to use the third function pointer in place of the first function pointer, the kernel processing I/O requests targeting the logical storage using the third I/O entry function in response to modifying the I/O path to use the third function pointer.

10. The method as in claim 9 wherein processing I/O requests using the third I/O entry function includes:

cloning write operations targeting the logical storage to both the original device and the new device.

11. The method as in claim 2 wherein the original device is a SAS/SATA SSD (Serial Attached SCSI/Serial ATA solid state drive);

wherein processing I/O requests targeting the logical storage using the first I/O entry function that accesses the original device includes:

performing I/O operations on the SAS/SATA SSD in accordance with a Serial Attached SCSI/Serial ATA Solid State protocol;

wherein the new device is a NVMe (Non-Volatile Memory Express) drive; and

wherein processing I/O requests targeting the logical storage using the second I/O entry function that accesses the new device includes:

performing I/O operations on the NVMe drive in accordance with a Non-Volatile Memory Express protocol.

12. The method as in claim 11 , further comprising:

prior to initiating the copying activity, adding the NVMe drive to the data storage array while I/O operations are performed on the SAS/SATA SSD.

13. A data storage array, comprising:

a set of interfaces;

memory; and

control circuitry coupled to the set of interfaces and the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to:

initiate a copying activity within the data storage array, the copying activity copying data from an original device to a new device,

while the data is being copied from the original device to the new device, route write requests received through the set of interfaces that target logical storage which is currently supported by the original device to both the original device and the new device, and

after the data has been copied from the original device to the new device, perform a configuration change which routes input/output (I/O) requests received through the set of interfaces that target the logical storage to the new device rather than the original device.

14. The data storage array as in claim 13 wherein the data storage array uses different I/O entry functions to access different storage devices;

wherein the control circuitry is constructed and arranged to:

prior to initiating the copying activity, process I/O requests targeting the logical storage using a first I/O entry function that accesses the original device, and

after the configuration change is performed, process I/O requests targeting the logical storage using a second I/O entry function that accesses the new device rather than the first I/O entry function that accesses the original device.

15. The data storage array as in claim 14 wherein the data storage array executes a kernel which addresses the first I/O entry function via a first function pointer and addresses the second I/O entry function via a second function pointer;

wherein the kernel manages access to the logical storage via an I/O path which initially includes the first function pointer when processing I/O requests targeting the logical storage using the first I/O entry function; and

wherein the control circuitry, when performing the configuration change, is constructed and arranged to:

modify the I/O path to use the second function pointer in place of the first function pointer, the kernel processing I/O requests targeting the logical storage using the second I/O entry function in response to modifying the I/O path to use the second function pointer.

16. The data storage array as in claim 15 wherein the control circuitry, when initiating the copying activity within the data storage array, is constructed and arranged to:

receive a user command to transition from the original device to the new device, and

in response to the user command, read the data from the original device and writing the data to the new device.

17. The data storage array as in claim 16 wherein the control circuitry, when routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device, is constructed and arranged to:

process I/O requests using a third I/O entry function that accesses both the original device and the new device, the third I/O entry function being different from the first I/O entry function and the second I/O entry function.

18. The data storage array as in claim 17 wherein the original device is a SAS/SATA SSD (Serial Attached SCSI/Serial ATA solid state drive);

wherein the control circuitry, when processing I/O requests targeting the logical storage using the first I/O entry function that accesses the original device, is constructed and arranged to:

perform I/O operations on the SAS/SATA SSD in accordance with a Serial Attached SCSI/Serial ATA Solid State protocol;

wherein the new device is a NVMe (Non-Volatile Memory Express) drive; and

wherein the control circuitry, when processing I/O requests targeting the logical storage using the second I/O entry function that accesses the new device, is constructed and arranged to:

perform I/O operations on the NVMe drive in accordance with a Non-Volatile Memory Express protocol.

19. A computer program product having a non-transitory computer readable medium which stores a set of instructions to transition from an original device to a new device within a data storage array; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

initiating a copying activity within the data storage array, the copying activity copying data from the original device to the new device;

while the data is being copied from the original device to the new device, routing write requests that target logical storage which is currently supported by the original device to both the original device and the new device; and

after the data has been copied from the original device to the new device, performing a configuration change which routes input/output (I/O) requests that target the logical storage to the new device rather than the original device.

20. The computer program product as in claim 19 wherein the data storage array uses different I/O entry functions to access different storage devices;

wherein the method further comprises:

prior to initiating the copying activity, processing I/O requests targeting the logical storage using a first I/O entry function that accesses the original device, and

after the configuration change is performed, processing I/O requests targeting the logical storage using a second I/O entry function that accesses the new device rather than the first I/O entry function that accesses the original device.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) 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
Reel/Frame 060438/0742 →
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 (052216/0758) 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 IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2020
From: KUMAR, KUNDAN; GOKAM, KURUMURTHY; IQBAL, MD HARIS; PARAKUNNATH, REMESH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051803/0644 →