IP Library Granted Patent US 11,340,814
Granted Patent B1
US 11,340,814 · App. 15/498,653 · Granted May 24, 2022

Placing data in a data storage array based on detection of different data streams within an incoming flow of data

Inventors: Nickolay Alexandrovich Dalmatov (Saint Petersburg, RU); Richard P. Ruef (Santa Cruz, CA); Kurt W. Everson (Missouri City, TX)
Assignee: EMC IP Holding Company LLC
G06F3/0644G06F3/0604G06F3/0631G06F3/0653G06F3/0673G06F3/0683G06F3/0685G06F3/0688G06F3/0689G06F12/0253G06F2212/1044
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,340,814
App. No.
15/498,653
Granted
May 24, 2022
Kind
B1
Abstract

A technique performs stream-based storage of data. The technique involves receiving, by processing circuitry of data storage equipment, an incoming flow of data. The technique further involves detecting, by the processing circuitry, different data streams within the incoming flow of data. The technique further involves performing, by the processing circuitry, data placement operations based on the different data streams detected within the incoming flow of data. The data placement operations are configured and operative to place data of each data stream of the different data streams in a different segment of storage provided by a data storage array of the data storage equipment. With data of each data stream being placed in a different segment, the resulting operation is more efficient, e.g., optimized sequential reads and writes, more effective data prefetching, more effective auto-tiering of data, and so on.

Claims (77)

1. In data storage equipment, a method of performing stream-based storage of data, the method comprising:

receiving, by processing circuitry of the data storage equipment, an incoming flow of data;

detecting, by the processing circuitry, different data streams within the incoming flow of data; and

performing, by the processing circuitry, data placement operations based on the different data streams detected within the incoming flow of data, the data placement operations being configured and operative to place data of each data stream of the different data streams in a different segment of storage provided by a data storage array of the data storage equipment;

wherein detecting the different data streams within the incoming flow of data includes:

evaluating the incoming flow of data, and

based on a result of evaluating the incoming flow of data, identifying existence of multiple data stream sources that provide the different data streams;

wherein performing the data placement operations includes:

placing the data of a first data stream in a first segment of storage, and the data of a second data stream in a second segment of storage that is different from the first segment of storage; and

wherein the method further comprises:

prior to performing the data placement operations, forming the first segment of storage and the second segment of storage from the data storage array, each segment of storage being formed from multiple storage devices of the data storage array.

2. A method as in claim 1 wherein the data storage equipment is constructed and arranged to store host data on behalf of a set of host computers; and

wherein identifying the existence of the multiple data stream sources includes:

identifying a first host computer application running on the set of host computers as a data stream source that provides the first data stream, and a second host computer application running on the set of host computers as a data stream source that provides the second data stream.

3. A method as in claim 1 wherein the data storage equipment is constructed and arranged to store host data on behalf of a set of host computers; and

wherein identifying the existence of the multiple data stream sources includes:

identifying a first user of the set of host computers as a data stream source that provides the first data stream, and a second user of the set of host computers as a data stream source that provides the second data stream.

4. A method as in claim 1 wherein the data storage equipment is constructed and arranged to store host data on behalf of a set of host computers; and

wherein identifying the existence of the multiple data stream sources includes:

identifying a first data stream source and a second data stream source which is different from the first data stream source based on communications between the data storage equipment and the set of host computers.

5. A method as in claim 1 , further comprising:

generating first digests as at least some of the data of the first data stream, and second digests as at least some of the data of the second data stream,

wherein the first digests are placed in the first segment of storage, and the second digests are placed in the second segment of storage; and

wherein the first digests and the second digests uniquely identify respective blocks of data for deduplication.

6. A method as in claim 1 wherein placing the data of the first data stream and the second data stream includes:

separating the incoming flow of data into the first data stream and the second data stream, and

performing inline data placement that places the first data stream in the first segment of storage and the second data stream in the second segment of storage, each segment of storage being formed from multiple storage devices of the data storage array.

7. A method as in claim 1 wherein placing the data of the first data stream and the second data stream includes:

storing, as the incoming flow of data, aggregated data within the data storage array, the aggregated data including the data of the first data stream and the data of the second data stream intermixed with each other, and

performing background data placement that reads the aggregated data from the data storage array, separates the data of first data stream and the data of the second data stream from the aggregated data read from the data storage array, and places the data of the first data stream in the first segment of storage and the data of the second data stream in the second segment of storage, each segment of storage being formed from multiple storage devices of the data storage array.

8. A method as in claim 1 wherein the data of the first data stream is placed in the first segment of storage and the data of the second data stream is placed in the second segment of storage during a first time period, each segment of storage being formed from multiple storage devices of the data storage array; and

wherein the method further comprises:

during a second time period after the first time period, providing a garbage collection service that (i) combines valid data of the first data stream together and re-places the valid data of the first data stream in the data storage array, and (ii) combines valid data of the second data stream together and re-places the valid data of the second data stream in the data storage array, the re-placed valid data of the first data stream and the re-placed valid data of the second data stream residing in different segments of storage formed from the multiple storage devices of the data storage array.

9. A method as in claim 8 , further comprising:

during a third time period after the second time period, providing the garbage collection service which then combines remaining valid data of the first data stream and remaining valid data of the second data stream together and re-places the remaining valid data of the first data stream and the remaining valid data of the second data stream in the data storage array;

wherein at least some of the remaining valid data of the first data stream and at least some of the remaining valid data of the second data stream reside together in a common segment of the data storage array.

10. A method as in claim 1 , further comprising:

after the data of the first data stream is placed in the first segment of storage and the data of the second data stream is placed in the second segment of storage, waiting for a predefined amount of time to expire, and

after the predefined amount of time has expired, providing a garbage collection service that combines remaining valid data of the first data stream and remaining valid data of the second data stream together and re-places the remaining valid data of the first data stream and the remaining valid data of the second data stream in the data storage array;

wherein at least some of the remaining valid data of the first data stream and at least some of the remaining valid data of the second data stream reside together in a common segment of the data storage array.

11. A method as in claim 1 , further comprising:

while performing the data placement operations that place the data of the first data stream in the first segment of storage and the data of the second data stream in the second segment of storage, storing addresses for the data of the first data stream and the data of the second data stream in records of a log, the records being stored in temporal order to indicate relative data arrival time.

12. A method as in claim 1 wherein, upon completion of the data placement operations, particular data of the first data stream resides in the first segment of storage and particular data of the second data stream resides in the of storage second segment during a first time period;

wherein the method further comprises:

providing a garbage collection service which re-places the particular data of the first data stream within the first segment of storage and re-places the particular data of the second data stream within the second segment of storage during a second time period which occurs after the first time period.

13. A method as in claim 12 wherein the method further comprises:

disabling stream preservation for the particular data of the first data stream and for the particular data of the second data stream; and

based on disabling stream preservation for the particular data of the first data stream and for the particular data of the second data stream, further providing the garbage collection service which re-places the particular data of the first data stream and re-places the particular data of the second data stream within a new segment of storage during a third time period which occurs after the second time period.

14. A method as in claim 13 wherein disabling stream preservation for the particular data of the first data stream and for the particular data of the second data stream includes:

disabling stream preservation for the particular data of the first data stream and for the particular data of the second data stream after the particular data of the first data stream and the particular data of the second data stream have sat idle for a predefined amount of time.

15. A method as in claim 14 wherein further providing the garbage collection service which re-places the particular data of the first data stream and re-places the particular data of the second data stream within the new segment of storage includes:

combining the particular data of the first data stream and the particular data of the second data stream within the new segment of storage.

16. Data storage equipment, comprising:

a communications interface;

memory; and

control circuitry coupled to the communications interface and the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to:

receive an incoming flow of data,

detect different data streams within the incoming flow of data, and

perform data placement operations through the communications interface based on the different data streams detected within the incoming flow of data, the data placement operations being configured and operative to place data of each data stream of the different data streams in a different segment of storage provided by a data storage array;

wherein the control circuitry, when detecting the different data streams within the incoming flow of data, is constructed and arranged to:

evaluate the incoming flow of data, and

based on a result of evaluating the incoming flow of data, identify existence of multiple data stream sources that provide the different data streams;

wherein the control circuitry, when performing the data placement operations, is constructed and arranged to:

place the data of a first data stream in a first segment of storage, and the data of a second data stream in a second segment of storage that is different from the first segment of storage; and

wherein the control circuitry is further constructed and arranged to:

prior to performing the data placement operations, form the first segment of storage and the second segment of storage from the data storage array, each segment of storage being formed from multiple storage devices of the data storage array.

17. A computer program product having a non-transitory computer readable medium which stores a set of instructions to perform stream-based storage of data; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

receiving an incoming flow of data;

detecting different data streams within the incoming flow of data; and

performing data placement operations based on the different data streams detected within the incoming flow of data, the data placement operations being configured and operative to place data of each data stream of the different data streams in a different segment of storage provided by a data storage array of data storage equipment;

wherein detecting the different data streams within the incoming flow of data includes:

evaluating the incoming flow of data, and

based on a result of evaluating the incoming flow of data, identifying existence of multiple data stream sources that provide the different data streams;

wherein performing the data placement operations includes:

placing the data of a first data stream in a first segment of storage, and the data of a second data stream in a second segment of storage that is different from the first segment of storage; and

wherein the method further comprises:

prior to performing the data placement operations, forming the first segment of storage and the second segment of storage from the data storage array, each segment of storage being formed from multiple storage devices of the data storage array.

Assignments (8)
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 (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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2017
From: DALMATOV, NIKOLAY ALEXANDROVICH; RUEF, RICHARD P.; EVERSON, KURT W.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042742/0731 →
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 →
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 →