Fibre Channel Failover Based on Fabric Connectivity
US-2016217049-A1 · Jul 28, 2016 · US
US10860508B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10860508-B2 |
| Application number | US-201815936319-A |
| Country | US |
| Kind code | B2 |
| Filing date | Mar 26, 2018 |
| Priority date | May 25, 2017 |
| Publication date | Dec 8, 2020 |
| Grant date | Dec 8, 2020 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
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.
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
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
Related publications grouped by family.
Answers are generated from the same data shown on this page.