Offloaded disaggregated storage architecture

US10860508B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10860508-B2
Application numberUS-201815936319-A
CountryUS
Kind codeB2
Filing dateMar 26, 2018
Priority dateMay 25, 2017
Publication dateDec 8, 2020
Grant dateDec 8, 2020

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.

Data management functions are offloaded from a main controller to individual storage devices in a multi-device storage environment. The main controller receives a data management request from a host system, and responds by determining one or more storage devices and one or more data management operations to be performed by the one or more storage devices. The main controller initiates performance of a data management function corresponding to the data management request, by sending one or more data management commands to the one or more storage devices, and initiating one or more data transfers, such as a direct memory access operation to transfer data between a memory buffer of a storage device and a host memory buffer of the host system, and an internal data transfer between two or more of the storage devices using an internal communication fabric of the data storage subsystem.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of offloading data management functions in a multi-device storage environment, the method comprising: at a main controller subsystem connected to a plurality of storage devices in a data storage subsystem of the multi-device storage environment: receiving a data write request from a host system external to the multi-device storage environment; determining, based on the data write request, one or more storage devices of the plurality of storage devices and one or more data management commands to be performed by the one or more storage devices; and initiating performance of a data write function corresponding to the data write request, including: sending the one or more data management commands to the one or more storage devices thereby causing a respective storage device to perform a plurality of data transfers, the plurality of data transfers comprising: a first data transfer including a direct memory access operation to transfer data between a memory buffer of the respective storage device of the data storage subsystem and a host memory buffer of the host system performed in response to receiving the one or more data management commands from the main controller subsystem, and a second data transfer including an internal data transfer between two or more of the storage devices using an internal communication fabric of the data storage subsystem that interconnects the plurality of storage devices performed in response to receiving the one or more data management commands from the main controller subsystem; determining a data stripe including a set of memory blocks, each memory block in the set of memory blocks located in a respective storage device of the one or more storage devices; after determining the data stripe, for each set of write data in one or more sets of write data specified by the data write request: determining a first controller memory buffer from one or more controller memory buffers, the first controller memory buffer corresponding to a first storage device of the one or more storage devices where parity data for the data stripe is to be stored, determining a second controller memory buffer from the one or more controller memory buffers, the second controller memory buffer corresponding to a second storage device of the one or more storage devices where the set of write data is to be stored; after determining the first controller memory buffer and the second controller memory buffer, initiating two data transfers using the direct memory access operation to send the write data specified by the data write request to the first controller memory buffer and the second controller memory buffer, and after initiating the two data transfers, receiving one or more data transfer completion notifications corresponding to the two data transfers; and sending a completion notification to the host system, the completion notification indicating the data write function has completed. 2. The method of claim 1 , wherein initiating performance of the data write function further comprises: upon receiving the one or more data transfer completion notifications, (i) sending a data write command to the second storage device to write the set of write data from the second controller memory buffer to non-volatile memory in the second storage device, and (ii) sending a parity computation command to the first storage device to perform a parity computation on the set of write data in the first controller memory buffer. 3. The method of claim 2 , wherein initiating the two data transfers using the direct memory access operation comprises: sending a first data transfer command to a respective network interface controller, of one or more network interface controllers in the data storage subsystem, to transfer data from a first host memory buffer to the first controller memory buffer; and sending a second data transfer command to a respective network interface controller in the one or more network interface controllers in the data storage subsystem to transfer data from a second host memory buffer to the second controller memory buffer, the first host memory buffer and the second host memory buffer accessible to the host system. 4. The method of claim 2 , further comprising closing the data stripe, including writing parity data computed by the first storage device to non-volatile memory in the first storage device. 5. The method of claim 2 , further comprising updating one or more mapping tables in accordance with the storage devices to which the one or more sets of write data were written. 6. The method of claim 5 , wherein updating of the one or more mapping tables is initiated by the main controller subsystem. 7. The method of claim 5 , wherein the one or more mapping tables are computed by the main controller subsystem. 8. The method of claim 5 , wherein: the one or more mapping tables includes a Virtual Erase Block Address (VEBA) table previously computed by the main controller subsystem; and updating the one or more mapping tables includes updating a Drives Virtualization Table (DVT) that maps logical addresses to storage devices. 9. The method of claim 1 , wherein the data write function includes encryption, compression, and/or redundant code computation. 10. A main controller subsystem configured to connect to a plurality of storage devices in a data storage subsystem of a multi-device storage environment, the main controller subsystem comprising: means for receiving a data write request from a host system external to the multi-device storage environment; means for determining, based on the data write request, one or more storage devices of the plurality of storage devices and one or more data management commands to be performed by the one or more storage devices; and means for initiating performance of a data write function corresponding to the data write request, including: means for sending the one or more data management commands to the one or more storage devices thereby causing a respective storage device to perform a plurality of data transfers, the plurality of data transfers comprising: a first data transfer including a direct memory access operation to transfer data between a memory buffer of the respective storage device of the data storage subsystem and a host memory buffer of the host system performed in response to receiving the one or more data management commands from the main controller subsystem, and a second data transfer including an internal data transfer between two or more of the storage devices using an internal communication fabric of the data storage subsystem that interconnects the plurality of storage devices performed in response to receiving the one or more data management commands from the main controller subsystem; means for determining a data stripe including a set of memory blocks, each memory block in the set of memory blocks located in a respective storage device of the one or more storage devices, and after determining the data stripe, for each set of write data in one or more sets of write data specified by the data write request: determining a first controller memory buffer from one or more controller memory buffers, the first controller memory buffer corresponding to a first storage device of the one or more storage devices where parity data for the data stripe is to be stored; determining a second controller memory buffer from the one or more controller memory buffers, the second controller memory buffer corresponding to a second storage device of the one or more storage devices where the set of write data is to be stored; after determining the first controller memory buffer and the second controller memory buffer, initiating

Assignees

Inventors

Classifications

  • Data buffering arrangements · CPC title

  • Non-volatile semiconductor memory arrays · CPC title

  • Parity data distribution in semiconductor storages, e.g. in SSD · CPC title

  • Improving I/O performance · CPC title

  • Migration mechanisms · 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 US10860508B2 cover?
Data management functions are offloaded from a main controller to individual storage devices in a multi-device storage environment. The main controller receives a data management request from a host system, and responds by determining one or more storage devices and one or more data management operations to be performed by the one or more storage devices. The main controller initiates performan…
Who is the assignee on this patent?
Western Digital Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06F13/28. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 08 2020 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 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).