Offloading raid update operations to disk controllers

US9507535B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9507535-B2
Application numberUS-201314236230-A
CountryUS
Kind codeB2
Filing dateMar 15, 2013
Priority dateMar 15, 2013
Publication dateNov 29, 2016
Grant dateNov 29, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An improved technique involves performing computations for partial stripe updates in a RAID at individual disk controllers rather than at the RAID controller. When a RAID controller receives a request to update old payload data at a block in a particular disk with update data, it sends the update data to the controller of that particular disk. The disk controller reads internally old data from the block, computes the difference between new and old data, replaces the old data on disk with the new data, and returns the difference to the RAID controller. The RAID controller computes difference values of the parity data from the difference values of the payload data received from the disk controllers. It then sends these difference values to the controllers of disks storing parity data. A controller of a disk storing parity data reads internally the corresponding data block, adds to it the difference value, and writes the result back to disk.

First claim

Opening claim text (preview).

What is claimed is: 1. In a storage system including a redundant array of disks having an array controller, each disk of the redundant array of disks including a disk controller apart from the array controller, a method of updating data stored on the redundant array of disks, the method comprising: receiving, by the disk controller of a particular disk of the redundant array of disks, a request to update particular data stored in a block on the particular disk, the request including an input value; reading, by the disk controller of the particular disk, the particular data from the block on the particular disk; performing, by the disk controller of the particular disk, an update operation on the particular data stored in the block on the particular disk, the update operation including a swapping operation involving the particular data and the input value and serving to produce an update result; and writing, by the disk controller of the particular disk, the update result to the block on the particular disk; wherein the input value includes a replacement value; wherein performing the update operation on the particular data stored in the block on the particular disk includes: generating a difference value which is a difference between the particular data and the replacement value, the difference value serving as the update result, and sending the difference value to the array controller. 2. A method as in claim 1 , wherein the particular data, and the replacement value are payload data including an array of binary values; wherein generating the difference value includes: performing an XOR operation on the particular data and the replacement value. 3. In a storage system including a redundant array of disks having an array controller, each disk of the redundant array of disks including a disk controller apart from the array controller, a method of updating data stored on the redundant array of disks, the method comprising: receiving, by the disk controller of a particular disk of the redundant array of disks, a request from the array controller to update particular parity data stored in a block on the particular disk, the request including a difference value, the array controller having obtained the difference value in response to a communication from a disk controller of a different disk that stores a portion of payload data associated with the particular parity data; reading, by the disk controller of the particular disk, the particular parity data from the block on the particular disk; performing, by the disk controller of the particular disk, an update operation on the particular parity data stored in the block on the particular disk, the update operation including a swapping operation involving the particular parity data and the difference value and serving to produce an update result, wherein performing the update operation on the data stored in the block on the particular disk includes: performing an addition operation on the difference value to the particular parity data stored in the block on the particular disk to produce, as the update result, a new parity data value, and replacing the data stored in the block on the particular disk with the new parity data value. 4. A method as in claim 3 , wherein the particular parity data is a codeword produced from the payload data by a generator matrix; wherein performing the addition operation includes: receiving from the array controller a product of a vector of difference values and a column of the generator matrix. 5. In a storage system including a redundant array of disks having an array controller, each disk of the redundant array of disks including a disk controller apart from the array controller, a method of updating data, the method comprising: receiving, by the array controller, a request to update particular payload data stored in a block on a particular disk of the redundant array of disks, the request including an input value; sending, by the array controller, the input value and an address of the block to the disk controller of the particular disk, this disk controller serving to i) generate a difference value which is a difference between the particular payload data and the input value, and ii) swap the particular payload data stored in the block on the particular disk with the input value; receiving, by the array controller, the difference value from the disk storing payload data; computing, by the array controller, a parity difference value based on the received difference value; obtaining another block address on another disk of the redundant array of disks; and sending, by the array controller, the parity difference value to the disk controller of the other disk, this disk controller serving to i) read old parity data stored at the other block address, ii) add the parity difference value to the old parity data to yield a new parity value, and iii) replace the old parity data stored at the other block address with the new parity value. 6. A method as in claim 5 , wherein a generator matrix represents a systematic coding of payload data, the generator matrix containing an identity matrix and a parity matrix; wherein computing the parity difference values includes: applying elements of the parity matrix to the parity difference values, and excluding elements of the identity matrix from the parity difference values. 7. A storage system constructed and arranged to update data stored on the redundant array of disks, the storage system comprising: a redundant array of disks having an array controller, each disk of the redundant array of disks including a disk controller apart from the array controller, each disk controller including: a data interface; memory; and a controller including controlling circuitry, the controlling circuitry being constructed and arranged to: receive, by the disk controller of a particular disk of the redundant array of disks, a request to update particular data stored in a block on the particular disk, the request including an input value, the input value including a replacement value; read the particular data from the block on the particular disk; perform, by the disk controller of the particular disk, an update operation on the particular data stored in the block on the particular disk, the update operation serving to produce an update result, wherein performing the update operation includes: generating a difference value which is a difference between the particular data and the replacement value, the difference value serving as the update result, and sending the difference value to the array controller via the data interface; and write, by the disk controller of the particular disk, the update result to the block on the particular disk. 8. A storage system as in claim 7 , wherein the particular data, and the replacement value are payload data including an array of binary values; wherein generating the difference value includes: performing an XOR operation on the particular data and the replacement value. 9. A storage system as in claim 7 , wherein the disk controller is configured to execute SCSI commands. 10. A storage system as in claim 7 , wherein the controlling circuitry is further constructed and arranged to: receive a parity update request from the array controller to update particular parity data stored in a block on the particular disk, the request including a difference value, the array controller having obtained the difference value in response to a communication from a disk controller of a different disk that stores a portion of payload data associated with the particular parity data; read the particular parity data from the block on the particular

Assignees

Inventors

Classifications

  • G06F3/0619Primary

    in relation to data integrity, e.g. data losses, bit errors · CPC title

  • Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title

  • Disk arrays, e.g. RAID, JBOD · CPC title

  • Improving I/O performance · CPC title

  • at area level, e.g. provisioning of virtual or logical volumes · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9507535B2 cover?
An improved technique involves performing computations for partial stripe updates in a RAID at individual disk controllers rather than at the RAID controller. When a RAID controller receives a request to update old payload data at a block in a particular disk with update data, it sends the update data to the controller of that particular disk. The disk controller reads internally old data from …
Who is the assignee on this patent?
Emc Corp, Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F3/0619. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Nov 29 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).