IP Library Granted Patent US 8,176,405
Granted Patent B2
US 8,176,405 · App. 12/246,195 · Granted May 8, 2012

Data integrity validation in a computing environment

Assignee: International Business Machines Corporation
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 8,176,405
App. No.
12/246,195
Granted
May 8, 2012
Kind
B2
Abstract

A method for validating data in a data storage system comprising associating a first data chunk with first check data and storing the first data chunk and the first check data on a first storage device. Additional associated data chunks of the first data and associated additional check data are stored on at least one of the first storage device or one or more additional storage devices. At least a portion of the first check data and at least a portion of the additional check data are stored to a second storage device, which is distinct from the first storage device and the additional storage devices. I/O access to the second storage device is minimized by retaining at least a portion of the first check data and at least a portion of the additional check data in a readily accessible storage medium, during servicing of a first I/O request.

Claims (54)

1. A method for validating data in a data storage system, the method comprising:

associating a first data chunk with first check data calculated for the first data chunk, so that the first check data is accessed together with the first data chunk in a single input/output (I/O) operation directed to the first data chunk, wherein first data is stored across one or more storage devices in data chunks, so that the first data chunk and first check data are stored on a first storage device, and one or more additional associated data chunks of the first data and associated additional check data are stored on at least one of the first storage device or one or more additional storage devices;

storing at least a portion of the first check data and at least a portion of the additional check data to a second storage device, so that the portion of the first check data is accessed together with the portion of the additional check data in a single I/O operation directed to the second storage device, wherein the second storage device is distinct from the first storage device and the additional storage devices; and

minimizing I/O access to the second storage device by retaining at least a portion of the first check data and at least a portion of the additional check data in a readily accessible storage medium, during servicing of a first I/O request, wherein the associating, storing, and minimizing are performed by one or more drive proxies implemented to virtualize the first storage device and the additional storage devices.

2. The method of claim 1 , wherein the minimizing comprises:

reading, during servicing of the first I/O request directed to read the first data chunk, the portions of the first check data and the additional check data from the second storage device; and

retaining, during servicing of the first I/O request, the read portions of the first check data and the additional check data until any additional I/O requests directed to the additional data chunks finish accessing the portion of the additional check data that was read together with the portion of the first check data from the second storage device.

3. The method of claim 1 , wherein the minimizing comprises:

updating, during servicing of the first I/O request directed to write the first data chunk, the portion of the first check data stored on the second storage device; and

retaining, during servicing of the first I/O request, the updated portion of the first check data until any additional I/O requests directed to write one or more additional associated data chunks finish updating the portion of the additional check data.

4. The method of claim 1 , wherein an I/O manager assists the drive proxies in the minimizing by:

allocating a shared data structure;

inserting stripe information, information relating to the first I/O request and the first storage device, and information relating to any additional I/O requests to the first storage device or the additional storage devices into the shared data structure; and

appending the shared data structure to the first I/O request and each of the additional I/O requests.

5. The method of claim 1 , wherein the minimizing comprises maintaining a common cache to store the portion of the first check data.

6. The method of claim 1 , wherein check data associated with a data chunk is used to validate the data chunk.

7. The method of claim 1 , wherein a portion of check data stored on the second storage device is used to validate the check data stored on the first device.

8. The method of claim 1 , wherein the associating, storing, and minimizing are performed by a single drive proxy, wherein the single drive proxy is a disk interface.

9. A system for validating data in a storage system, the system comprising:

a controller in communication with one or more first storage devices for storing first data, wherein the first data is comprised of data chunks,

wherein each data chunk is associated with check data stored with the data chunk such that a first data chunk and associated first check data are accessed in a single input/output (I/O) operation, and the first check data is used to validate the first data chunk;

wherein a second storage device stores a portion of the first check data and a portion of additional check data associated with additional data chunks from among the data chunks, such that the stored portions are accessed in a single I/O operation, and the portion of the first check data is used to validate the first check data; and

wherein one or more drive proxies virtualize the first storage devices and minimize I/O accesses to the second storage device, wherein the drive proxies access the stored portions of the first check data and the additional check data, in response to receiving I/O requests to read or write the first data.

10. The system of claim 9 , wherein the minimizing comprises:

reading, during servicing of a first I/O request directed to read the first data chunk, the stored portions of the first check data and the additional check data from the second storage device; and

retaining, during servicing of the first I/O request, the read portions of the first check data and the additional check data until any additional I/O requests directed to the additional data chunks finish accessing the portion of the additional check data that was read together with the portion of the first check data from the second storage device.

11. The system of claim 9 , wherein the minimizing comprises:

updating, during servicing of a first I/O request directed to write the first data chunk, the portion of the first check data stored on the second storage device; and

retaining, during servicing of the first I/O request, the updated portion of the first check data until any additional I/O requests directed to write one or more additional associated data chunks finish updating the portion of the additional check data.

12. The system of claim 9 , wherein an I/O manager assists the drive proxies in the minimizing by:

allocating a shared data structure;

inserting stripe information, information relating to the first I/O request and the first storage device, and information relating to any additional I/O requests to the first storage device or the additional storage devices into the shared data structure; and

appending the shared data structure to the first I/O request and each of the additional I/O requests.

13. The system of claim 9 , wherein the minimizing comprises maintaining a common cache to store the portion of the first check data.

14. A computer program product comprising a computer useable storage medium having a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:

associate a first data chunk with first check data calculated for the first data chunk, so that the first check data is accessed together with the first data chunk in a single input/output (I/O) operation directed to the first data chunk,

wherein first data is stored across one or more storage devices in data chunks, so that the first data chunk and the first check data are stored on a first storage device, and one or more additional associated data chunks of the first data and associated additional check data are stored on at least one of the first storage device or one or more additional storage devices;

store at least a portion of the first check data and at least a portion of the additional check data to a second storage device, so that the portion of the first check data is accessed together with the portion of the additional check data in a single I/O operation directed to the second storage device,

wherein the second storage device is distinct from the first storage device and the additional storage devices; and

minimize I/O access to the second storage device by retaining at least a portion of the first check data and at least a portion of the additional check data in a readily accessible storage medium, during servicing of a first I/O request,

wherein the associating, storing, and minimizing are performed by one or more drive proxies implemented to virtualize the first storage device and the additional storage devices.

15. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to:

read, during servicing of the first I/O request directed to read the first data chunk, the portions of the first check data and the additional check data from the second storage device; and

retain, during servicing of the first I/O request, the read portions of the first check data and the additional check data until any additional I/O requests directed to the additional data chunks finish accessing the portion of the additional check data that was read together with the portion of the first check data from the second storage device.

16. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to:

update, during servicing of the first I/O request directed to write the first data chunk, the portion of the first check data stored on the second storage device; and

retain, during servicing of the first I/O request, the updated portion of the first check data until any additional I/O requests directed to write one or more additional associated data chunks finish updating the portion of the additional check data.

17. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to:

allocate a shared data structure;

insert stripe information, information relating to the first I/O request and the first storage device, and information relating to any additional I/O requests to the first storage device or the additional storage devices into the shared data structure; and

append the shared data structure to the first I/O request and each of the additional I/O requests.

18. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to maintain a common cache to store the portion of the first check data.

19. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to validate a data chunk with associated check data.

20. The computer program product of claim 14 , wherein the computer readable program when executed on a computer further causes the computer to validate check data stored on the first device with a portion of the check data stored on the second storage device.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09/05/2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0456 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0133 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2008
From: HAFNER, JAMES LEE; BELLUOMINI, WENDY ANN; DEWEY, DOUGLAS WILLIAM
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021639/0093 →
Continuity (2)
Continuation In Part 11860461 · Sep 24, 2007
Related Publication 20100088579A1 · Apr 8, 2010