IP Library Granted Patent US 10,031,703
Granted Patent B1
US 10,031,703 · App. 14/144,633 · Granted Jul 24, 2018

Extent-based tiering for virtual storage using full LUNs

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,031,703
App. No.
14/144,633
Granted
Jul 24, 2018
Kind
B1
Abstract

Example embodiments of the present invention relate a method, a system, and a computer program product for extent-based tiering for virtual storage using full LUNs. The method includes exposing a virtual LUN comprising a first LUN in a first tier of storage having a first latency and a second LUN in a second tier of storage having a second latency and managing the virtual LUN according to properties of the first LUN, properties of the second LUN, and a policy.

Claims (99)

1. A method comprising:

exposing to a storage host, via a virtual service layer spanning a first storage array including storage having a first latency and a second storage array including storage having a second latency, a virtual logical unit (LUN) comprising a first LUN in a first tier of storage provided by the first storage array having the first latency and a second LUN in a second tier of storage provided by the second storage array having the second latency, wherein the first latency is lower than the second latency; and managing the virtual LUN according to properties of the first LUN, properties of the second LUN, and an indicator written to the first LUN in the first tier of storage provided by the first storage array indicating that data satisfying a policy is stored in the second LUN in the second tier of storage provided by the second storage array, wherein managing the virtual LUN comprises:

directing a plurality of write I/O for processing to the first LUN in the first tier at a first time;

moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time, wherein moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time comprises:

creating a first snapshot of data in the first LUN in the first tier;

transferring data in the first snapshot to the second LUN in the second tier;

creating a second snapshot of data in the second LUN in the second tier; and

erasing the data written to the first snapshot from the first LUN in the first tier; and,

processing an I/O command for data, wherein a first portion of the data exists in the first tier and a second portion of the data exists in the second tier, wherein data is read from the second tier only for blocks in which the indicator indicates that the data does not exist in the first tier.

2. The method of claim 1 wherein managing the virtual LUN comprises:

directing a read I/O for processing to the first LUN in the first tier;

determining whether data returned by the first LUN in the first tier is data satisfying the read I/O;

if the data returned by the first LUN is data satisfying the read I/O, then providing the data in response to the receive read I/O; and

if the data returned by the first LUN is the indicator indicating that the data satisfying the read I/O is stored on the second LUN in the second tier, then redirecting the read I/O to the second LUN in the second tier according to the indicator.

3. The method of claim 1 wherein managing the virtual LUN comprises:

examining a cache to determine whether data satisfying the read I/O is stored in the cache or on the second LUN in the second tier;

if the data satisfying the read I/O is stored in the cache then returning the data in response to the read I/O; and

if the data satisfying the read I/O is not stored in the cache then directing the read I/O for processing to the second LUN in the second tier.

4. The method of claim 1 wherein managing the virtual LUN comprises managing tiering of data stored on the virtual LUN according to the policy, comprising:

reading data satisfying the policy from the second LUN in the second tier; and

writing the data satisfying the policy to the first LUN in the first tier.

5. The method of claim 1 wherein managing the virtual LUN comprises managing tiering of data stored on the virtual LUN according to the policy, comprising:

reading data satisfying the policy from the first LUN in the first tier;

writing the data satisfying the policy to the second LUN in the second tier; and

writing the indicator to the first LUN in the first tier indicating that the data satisfying the policy is stored in the second LUN in the second tier.

6. The method of claim 5 wherein writing the indicator to the first LUN in the first tier indicating that the data satisfying the policy is stored in the second LUN in the second tier comprises writing an empty pattern to the first LUN in place of the data satisfying the policy.

7. The method of claim 6

wherein writing an empty pattern to the first LUN in place of the data satisfying the policy comprises writing a deduplication-size block to the first LUN indicative of the data satisfying the policy being written to the second LUN;

the method further comprising deduplicating a plurality of empty patterns written to the first LUN to enable reduction of storage required on the first LUN.

8. The method of claim 1 wherein exposing a virtual LUN comprises:

exposing the second LUN in the second tier to a user;

receiving a request from the user for increased LUN performance; and

initializing the first LUN in the first tier for exposure with the second LUN in the second tier as the virtual LUN.

9. The method of claim 1 wherein exposing a virtual LUN comprises:

exposing the first LUN in the first tier to a user;

receiving a request from the user for increased storage capacity; and

initializing the second LUN in the second tier for exposure with the first LUN in the first tier as the virtual LUN.

10. The method of claim 1 wherein managing the virtual LUN comprises:

receiving a plurality of write I/Os;

analyzing the plurality of write I/Os to determine properties of the plurality of write I/Os;

if the write I/Os are sequential or exceed a first size threshold, directing the write I/Os to the second LUN in the second tier; and

if the write I/Os are random or are below a second size threshold, directing the write I/Os to the first LUN in the first tier.

11. The method of claim 1 further comprising:

continuing to direct new write I/Os for processing to the first LUN in the first tier after the first snapshot is created;

wherein erasing the data written to the first snapshot from the first LUN in the first tier comprises erasing data written to the first snapshot from the first LUN in the first tier except for data that was overwritten by new write I/Os directed for processing to the first LUN in the first tier.

12. The method of claim 1 wherein creating a first snapshot of data in the first LUN in the first tier comprises:

receiving a request from a user for a requested snapshot of the second LUN in the second tier;

allocating a new volume for the first snapshot of data in the first LUN in the first tier; and

redirecting I/Os intended for the second LUN in the second tier to the new volume for the first snapshot in the first tier.

13. The method according to claim 1 , further including determining that data for an I/O operation is not in a correct one of the first and second tiers and needs to be managed from the first tier to the second tier, and sending a read I/O to the first tier for the data to move to the second tier, wherein the first tier returns the data, which is written to the second tier.

14. The method according to claim 1 , further including determining whether data satisfying a read I/O is located in the first tier or the second tier via metadata in a cache associated with the virtual service layer.

15. The method according to claim 1 , wherein the virtualization layer does not manage mapping between the first LUN and the second LUN.

16. A system comprising:

a first storage array including storage having a first latency and a first logical unit (LUN) therein;

a second storage array including storage having a second latency and a second LUN therein, wherein the first latency is lower than the second latency;

a virtual service layer spanning the first storage array and the second storage array configured to expose to a storage host a virtual LUN comprising the first LUN in the first tier of storage provided by the first storage array having the first latency and the second LUN in the second tier of storage provided by the second storage array having the second latency; and

a manager configured to manage the virtual LUN according to properties of the first LUN, properties of the second LUN, and an indicator written to the first LUN in the first tier of storage provided by the first storage array indicating that data satisfying a policy is stored in the second LUN in the second tier of storage provided by the second storage array, wherein managing the virtual LUN comprises:

directing a plurality of write I/O for processing to the first LUN in the first tier at a first time;

moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time, wherein moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time comprises:

creating a first snapshot of data in the first LUN in the first tier;

transferring data in the first snapshot to the second LUN in the second tier;

creating a second snapshot of data in the second LUN in the second tier; and

erasing the data written to the first snapshot from the first LUN in the first tier; and,

processing an I/O command for data, wherein a first portion of the data exists in the first tier and a second portion of the data exists in the second tier, wherein data is read from the second tier only for blocks in which the indicator indicates that the data does not exist in the first tier.

17. The system of claim 16 further comprising:

a controller configured to direct read I/Os for processing to the first LUN in the first tier and determine whether data returned by the first LUN in the first tier is data satisfying the read I/O;

wherein the manager is further configured to, if the data returned by the first LUN is data satisfying the read I/O, provide the data in response to the receive read I/O, and, if the data returned by the first LUN is the indicator indicating that the data satisfying the read I/O is stored on the second LUN in the second tier, redirect the read I/O to the second LUN in the second tier according to the indicator.

18. The system of claim 16 further comprising:

a controller configured to examine a cache to determine whether data satisfying the read I/O is stored in the cache or on the second LUN in the second tier; and

wherein the manager is further configured to, if the data satisfying the read I/O is stored in the cache, return the data in response to the read I/O, and, if the data satisfying the read I/O is not stored in the cache, direct the read I/O for processing to the second LUN in the second tier.

19. The system of claim 16 wherein the manager is further configured to manage tiering of data stored on the virtual LUN according to the policy from the second LUN in the second tier to the first LUN in the first tier by reading data satisfying the policy from the second LUN in the second tier and writing the data satisfying the policy to the first LUN in the first tier.

20. The system of claim 16 wherein the manager is further configured to manage tiering of data stored on the virtual LUN according to the policy from the first LUN in the first tier to the second LUN in the second tier by reading data satisfying the policy from the first LUN in the first tier, writing the data satisfying the policy to the second LUN in the second tier, and writing the indicator to the first LUN in the first tier indicating that the data satisfying the policy is stored in the second LUN in the second tier.

21. The system of claim 20 wherein the manager is further configured to write an empty pattern to the first LUN in place of the data satisfying the policy.

22. The system of claim 21

wherein the manager is further configured to write a deduplication-size block to the first LUN indicative of the data satisfying the policy being written to the second LUN.

23. The system of claim 16

wherein the virtualization layer is further configured to expose the second LUN in the second tier to a user; and

wherein the manager is further configured to receive a request from the user for increased LUN performance and initialize the first LUN in the first tier for exposure with the second LUN in the second tier as the virtual LUN.

24. The system of claim 16

wherein the virtualization layer is further configured to expose the first LUN in the first tier to a user; and

wherein the manager is further configured to receive a request from the user for increased storage capacity and initialize the second LUN in the second tier for exposure with the first LUN in the first tier as the virtual LUN.

25. The system of claim 16 further comprising a controller configured to receive a plurality of write I/Os, analyze the plurality of write I/Os to determine properties of the plurality of write I/Os, if the write I/Os are sequential or exceed a first size threshold, direct the write I/Os to the second LUN in the second tier, and, if the write I/Os are random or are below a second size threshold, direct the write I/Os to the first LUN in the first tier.

26. The system of claim 16

wherein the controller is further configured to continue to direct new write I/Os for processing to the first LUN in the first tier after the first snapshot is created; and

wherein the manager is further configured to erase data written to the first snapshot from the first LUN in the first tier except for data that was overwritten by new write I/Os directed for processing to the first LUN in the first tier.

27. The system of claim 16

wherein the manager is further configured to receive a request from a user for a requested snapshot of the second volume in the second tier and allocate a new volume for the first snapshot of data in the first LUN in the first tier; and

wherein the controller is further configured to redirect I/Os intended for the second volume in the second tier to the new volume for the first snapshot in the first tier.

28. A computer program product including a non-transitory computer readable storage medium having computer program code encoded thereon that, when executed on one or more processors of a computer system, causes the computer system to:

expose to a storage host, via a virtual service layer spanning a first storage array including storage having a first latency and a second storage array including storage having a second latency, a virtual LUN comprising a first LUN in a first tier of storage provided by the first storage array having the first latency and a second LUN in a second tier of storage provided by the second storage array having the second latency, wherein the first latency is lower than the second latency;

manage the virtual LUN according to properties of the first LUN, properties of the second LUN, and an indicator written to the first LUN in the first tier of storage provided by the first storage array that data satisfying a policy is stored in the second LUN in the second tier of storage provided by the second storage array, wherein managing the virtual LUN comprises:

directing a plurality of write I/O for processing to the first LUN in the first tier at a first time; and

moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time, wherein moving data written to the first LUN in the first tier to the second LUN in the second tier at a second time comprises:

creating a first snapshot of data in the first LUN in the first tier;

transferring data in the first snapshot to the second LUN in the second tier; and

creating a second snapshot of data in the second LUN in the second tier;

erasing the data written to the first snapshot from the first LUN in the first tier and,

processing an I/O command for data, wherein a first portion of the data exists in the first tier and a second portion of the data exists in the second tier, wherein data is read from the second tier only for blocks in which the indicator indicates that the data does not exist in the first tier.

29. The computer program product of claim 28 wherein the first LUN in the first tier has more performant snapshot capabilities than the second storage array in the second tier.

Assignments (7)
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 (047648/0422) Recorded May 20, 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 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
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 AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
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 047648/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2017
From: NATANZON, ASSAF; FRANK, SHAHAR; GAL, YOCHAI
To: EMC CORPORATION
Reel/Frame 044837/0244 →
Cited By (47)
US 12,197,390 US 12,204,413 US 12,204,768 US 12,204,788 US 12,212,624 US 12,216,903 US 12,229,402 US 12,229,437 US 12,235,743 US 12,236,117 US 12,242,425 US 12,253,922 US 12,253,941 US 12,260,106 US 12,271,264 US 12,271,359 US 12,277,106 US 12,282,799 US 12,293,111 US 12,314,131 US 12,314,163 US 12,314,170 US 12,314,183 US 12,340,107 US 12,341,848 US 12,366,972 US 12,373,289 US 12,373,340 US 12,379,854 US 12,393,340 US 12,393,353 US 12,430,053 US 12,430,059 US 12,439,544 US 12,475,041 US 12,481,442 US 12,487,920 US 12,511,239 US 12,524,309 US 12,547,317 US 12,561,093 US 12,572,421 US 12,619,469 US 12,682,949 US 12,687,973 US 12,699,512 US 12,717,709