TWI810363B - 使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法 - Google Patents
使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法 Download PDFInfo
- Publication number
- TWI810363B TWI810363B TW108132792A TW108132792A TWI810363B TW I810363 B TWI810363 B TW I810363B TW 108132792 A TW108132792 A TW 108132792A TW 108132792 A TW108132792 A TW 108132792A TW I810363 B TWI810363 B TW I810363B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- controller
- ethernet
- read
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 56
- 238000013507 mapping Methods 0.000 claims abstract description 224
- 230000015654 memory Effects 0.000 claims abstract description 201
- 239000000872 buffer Substances 0.000 claims abstract description 90
- 238000012546 transfer Methods 0.000 claims abstract description 86
- 230000004044 response Effects 0.000 claims description 64
- 238000003860 storage Methods 0.000 claims description 57
- 230000005540 biological transmission Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 12
- 239000002699 waste material Substances 0.000 claims description 9
- 230000005055 memory storage Effects 0.000 claims description 8
- 239000004744 fabric Substances 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 claims 1
- 238000013500 data storage Methods 0.000 description 32
- 238000001152 differential interference contrast microscopy Methods 0.000 description 22
- 238000012005 ligant binding assay Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000007726 management method Methods 0.000 description 12
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 11
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 11
- 230000032258 transport Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 9
- 239000000463 material Substances 0.000 description 8
- 239000003999 initiator Substances 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 239000002775 capsule Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/323—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the physical layer [OSI layer 1]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
- Bus Control (AREA)
Abstract
一種用於讀取儲存資料的系統,可以包括一或多個乙太網路驅動器和控制器,兩者均被配置為通信地連接到主機設備。控制器可以從主機裝置接收第一讀取命令,使用第一讀取命令和映射表確定一或多個乙太網路驅動器中的第一驅動器,將第一讀取命令轉譯為第二讀取命令,並發送第二讀取命令到第一驅動器。回應於接收第二讀取命令,第一驅動器可以獨立於控制器向主機裝置發送第一遠端資料傳輸指令。第一遠端資料傳輸指令可包括從第一驅動器讀取的儲存資料,以使主機裝置將從第一驅動器讀取的儲存資料寫入至透過第二讀取命令指示的主機裝置中的一或多個記憶體緩衝器。
Description
本公開總體上關於用於儲存資料的系統和方法,包括實現乙太網路驅動器和乙太網路開放通道驅動器的可擴充部署的儲存系統和方法。
傳統的固態驅動器(solid state drive,SSD)裝置保持傳統的硬碟驅動器(hard disk drive,HDD)規格,以實現向後兼容性。例如,這樣的傳統HDD規格包括機械(例如,外形尺寸)、電子(例如,串列連接小型電腦系統介面(serial attached SCSI,SAS)和序列先進技術附件(serial advanced technology attachment,SATA)匯流排)和軟體(例如,驅動器)規格。這種向後兼容性使SSD可以在各個區段(segment)中快速部署。
同時,開放通道(Open-Channel)裝置維持低
階NAND管理,例如,糾錯(Error Correction,ECC),及公開諸如程式化、讀取和抹除之類的NAND API,將快閃記憶體管理卸載到上層。因此,在較高階運行的池級(pool level)快閃轉譯層(flash translation layer,FTL)可以提供更大的彈性和更高的效率。根據NVMe(NVM Express)標準,非揮發性記憶體儲存裝置外接存取(NVMe over Fabric,NVMeoF)傳輸可以透過快速媒體(例如,遠端直接記憶體存取(remote direct memory access,RDMA)、光纖通道(Fibre Channel,FC)、無線頻帶(InfiniBand,IB))存取遠端裝置,以低延遲(latency)存取已分類的磁碟。
在根據第一態樣的一或多個實施例中,一種用於讀取儲存的資料的系統,可以包括:一或多個乙太網路驅動器,被配置為通信地連接到主機裝置;及控制器,與該主機裝置和該一或多個乙太網路驅動器通信。該控制器可以從該主機裝置接收第一讀取命令,該第一讀取命令包括第一組一或多個輸入參數和指示在該主機裝置中的一或多個記憶體緩衝器的第一組一或多個輸出參數。該控制器可以從使用一或多個輸入參數中之至少其一和映射表來確定該一或多個乙太網路驅動器中的第一驅動器。該控制器可以從將該第一讀取命令轉譯成第二讀取命令,該第二讀取命令包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數。該控制器可以從將該第二讀
取命令發送到該第一驅動器。回應於接收該第二讀取命令,該第一驅動器可以獨立於該控制器向該主機裝置發送第一遠端資料傳輸指令。該第一遠端資料傳輸指令可以包括從該第一驅動器讀取的儲存資料,以使該主機裝置將從該第一驅動器讀取的該儲存資料寫入至由該第二組一或多個輸出參數指示的該一或多個記憶體緩衝器。
在根據第二態樣的一或多個實施例中,一種用於儲存資料的系統可以包括被配置為通信地連接到主機裝置的一或多個乙太網路驅動器,及與該主機裝置和一或多個乙太網路驅動器通信的控制器。控制器可以從主機裝置接收第一寫入命令。第一寫入命令可以包括第一組一或多個輸入參數和指示主機中的一或多個記憶體緩衝器的第一組一或多個輸出參數。控制器可以使用一或多個輸入參數之至少其一和映射表中來確定一或多個乙太網路驅動器中的第一驅動器。控制器可以將第一寫入命令轉譯成第二寫入命令。第二寫入命令可以包括第二組一或多個輸出參數,其指示主機裝置中的一或多個記憶體緩衝器。控制器可以將第二寫入命令發送到第一驅動器。回應於接收第二寫入命令,第一驅動器可以獨立於該控制器發送第一遠端資料傳輸指令到主機裝置。第一遠端資料傳輸指令可以使主機裝置從透過第二組一或多個輸出參數指示的一或多個記憶體緩衝器讀取資料,並將讀取的資料從一或多個記憶體緩衝器遠端寫入第一驅動器。
在根據第三態樣的一或多個實施例中,一種
用於讀取儲存資料的方法,可以包括:透過與主機裝置和一或多個乙太網路驅動器通信的儲存系統的控制器,從該主機裝置接收第一讀取命令。該第一讀取命令可以包括第一組一或多個輸入參數和指示在該主機裝置中的一或多個記憶體緩衝器的第一組一或多個輸出參數。可以使用該一或多個輸入參數中之至少其一和映射表以確定與該主機裝置通信的一或多個乙太網路驅動器中的第一驅動器。可以將該第一讀取命令轉譯為第二讀取命令。該第二讀取命令可以包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數。將該第二讀取命令發送至該第一驅動器。回應於接收該第二讀取命令,透過該第一驅動器獨立於該控制器發送第一遠端資料傳輸指令至該主機裝置。該第一遠端資料傳輸指令可以包括從該第一驅動器讀取的儲存資料,以使該主機裝置寫入從該第一驅動器讀取的該儲存資料到透過該第二組一或多個輸出參數表示的該一或多個記憶體緩衝器。
在根據第四態樣的一或多個實施例中,一種儲存資料的方法,可以包括:透過與主機裝置和一或多個乙太網路驅動器通信的控制器,從該主機裝置接收第一寫入命令。該第一寫入命令可以包括第一組一或多個輸入參數和指示在該主機中的一或多個記憶體緩衝器的第一組一或多個輸出參數。可以使用一或多個輸入參數中之至少其一和映射表來確定與主機裝置通信的該一或多個乙太網路驅動器中的第一驅動器。可以將該第一寫入命令轉譯成第
二寫入命令。該第二寫入命令可以包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數。可以將該第二寫入命令發送到該第一驅動器。回應於接收該第二寫入命令,可以獨立於該控制器向該主機裝置發送第一遠端資料傳輸指令。該第一遠端資料傳輸指令可以使主機裝置從由該第二組一或多個輸出參數指示的該一或多個記憶體緩衝器讀取資料,且從該一或多個記憶體緩衝器遠端將該讀取資料寫入該第一驅動器。
在根據第五態樣的一或多個實施例中,一種在具有多個開放通道驅動器的儲存系統中進行廢料收集的方法,包括:透過儲存系統的控制器,執行廢料收集命令,該廢料收集命令包括識別一或多個乙太網路驅動器中的第一驅動器的第一驅動器識別符。該方法進一步包括透過該控制器,使用映射表分配在一或多個乙太網路驅動器中的目標驅動器中的目標位址處的自由區塊。透過該控制器,使用映射表以該第一驅動器識別符,識別該第一驅動器中的源位址,及透過該控制器,發送移動命令至該第一驅動器,該移動命令包括該源位址、該目標位址和該目標驅動器。該方法進一步包括回應於接收該移動命令,透過該第一驅動器從該第一驅動器中該識別的源位址中讀取資;及透過該第一驅動器,發送程式命令至該目標驅動器,並使該目標驅動器將從識別的源位址讀取的該資料複製到該目標驅動器中該目標位址處的該自由區塊。
在根據第六態樣的一或多個實施例中,一種
用於在具有多個開放通道驅動器的儲存系統中解除分配資源的方法,包括:透過儲存系統的控制器,接收包含第一位址的解除分配命令。該方法進一步包括透過控制器,使用映射表在一或多個乙太網路驅動器中的目標驅動器中的第一位址處的資源解除分配。該方法進一步包括回應於解除分配資源,透過控制器,更新映射表以指示第一位址處的資源不再包含有效資料或無效。
在根據另一態樣的一或多個實施例中,本文描述的一或多個實施例針對用於使用乙太網路驅動器或乙太網路開放通道驅動器的部署和管理來儲存資料的系統和方法。回應於從主機裝置接收的命令,儲存系統的控制器可以控制一或多個乙太網路驅動器以從主機裝置遠端讀取資料或向主機裝置遠端寫入資料。控制器還可使用乙太網路開放通道驅動器執行快閃轉譯層(FTL)管理,並控制一或多個乙太網路開放通道驅動器,以自動或在主機電腦指導下執行廢料收集。這可以提供NAND儲存器有效的、高性能、大規模的部署。
在根據另一態樣的一或多個實施例中,一種用於儲存資料的系統,包括一或多個乙太網路驅動器和控制器,該控制器被配置為通信地連接到主機裝置。控制器被配置為從主機裝置接收包括第一位址的第一讀取命令和包括主機裝置的記憶體空間中的位址的第一描述符,並使用映射表以第一位址來識別一或多個乙太網路驅動器中的第一驅動器和識別的第一驅動器中的第二位址,並將包括
第一描述符和識別的第二位址的第二讀取命令發送給識別的第一驅動器。識別的第一驅動器被配置為回應於接收第二讀取命令、讀取來自識別的第一驅動器中的識別的第二位址的資料、並使用第一遠端資料傳輸指令(例如,使用遠端DMA寫入命令)發送資料至主機裝置,並使主機裝置將從識別的第二位址讀取的資料寫入到包含在第一描述符中的主機裝置的記憶體空間中的位址。
在根據另一態樣的一或多個實施例中,一種用於儲存資料的方法,包括:透過儲存系統的控制器,從主機裝置接收第一讀取命令,該第一讀取命令包括第一位址,且第一描述符包括主機裝置的記憶體空間中的位址;透過控制器,使用映射表以第一位址識別一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址;且透過控制器,將第二讀取命令發送給識別的第一驅動器,第二讀取命令包括第一描述符和識別的第二位址。該方法進一步包括:回應於接收第二讀取命令,透過識別的第一驅動器從識別的第一驅動器中識別的第二位址讀取資料;及透過識別的第一驅動器,使用第一遠端資料傳輸指令發送資料(例如,使用遠端DMA寫入命令)到主機裝置,並使主機裝置將從識別的第二位址讀取的資料寫入到第一描述符中包含的主機裝置的記憶體空間中的位址。
在根據另一態樣的一或多個實施例中,一種用於儲存資料的方法,包括:透過儲存系統的控制器,從主機裝置接收第一寫入命令,該第一寫入命令包括第一位
址和主機裝置的記憶體空間中的第一位址;透過控制器,使用映射表以第一位址識別一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址,且透過控制器,將第二寫入命令發送到識別的第一驅動器,第二寫入命令包括第一描述符和識別的第二位址。該方法進一步包括回應於接收第二寫入命令,透過由識別的第一驅動器向主機裝置發送第一遠端資料傳輸指令(例如,使用遠端DMA讀取命令)以讀取資料,並使主機裝置從包括在第一描述符中的主機裝置的記憶體空間中的位址讀取資料,及在識別的第一驅動器中的識別的第二位址處遠端寫入從包括在第一描述符的主機裝置的記憶體空間中的位址讀取的資料。該方法進一步包括:透過控制器,使用映射表利用第一位址和第一描述符,識別一或多個乙太網路驅動器中的第二驅動器、識別的第二驅動器中的第三位址及包括在主機裝置的記憶體空間的位址中的第二描述符間,並透過控制器,將第三寫入命令發送到識別的第二驅動器,該第三寫入命令包括第二描述符和識別的第三位址。該方法進一步包括回應於接收第三寫入命令,透過由識別的第二驅動器向主機裝置發送第二遠端資料傳輸指令(例如,使用遠端DMA讀取命令)來讀取資料,並使主機裝置從包括在第二描述符中的主機裝置的記憶體空間中的位址讀取資料,並在識別的第二驅動器中的識別的第三位址處遠端寫入從包括在第二描述符中的主機裝置的記憶體空間中的位址讀取的資料。
104:乙太網路NIC
106:控制器
108:控制器快閃轉譯層
110:NAND型記憶體
112:乙太網路驅動器
150:控制器
152:PCIe介面
153:網路中介層
154:控制器PCIe
156:控制器FTL
158:NAND型記憶體
160:NVMe驅動器
162:乙太網路驅動器
204:乙太網路NIC
206:控制器
207:ECC管理器
208:NAND控制器
210:NAND型記憶體
212:乙太網路開放通道驅動器
250:中介層
252:PCIe
256:控制器
257:ECC管理器
258:NAND控制器
260:NAND
262:乙太網路開放通道驅動器
272:乙太網路開放通道驅動器
302:資料儲存系統
304:映射控制器
306:映射表
308:乙太網路交換器
310:上行鏈路資料路徑
312:乙太網路驅動器
314:乙太網路NIC
316:控制器
318:NAND
352:資料儲存系統
354:映射控制器
356:FTL映射
358:乙太網路交換器
359:上行鏈路資料路徑
360:乙太網路開放通道驅動器
362:控制器
364:ECC
366:NAND控制器
368:NAND
372:乙太網路NIC
380:TOR
382:計算節點
384:映射控制器
386:FTL映射
388:JBOF
402:主機
450:描述符
451:描述符ID
452:位址
453:長度
502:主機
601:乙太網路開放通道驅動器
602:乙太網路開放通道驅動器
606:映射控制器
608:FTL映射
620:主機
702:步驟
704:步驟
706:步驟
708:步驟
710:步驟
712:步驟
752:步驟
754:步驟
756:步驟
758:步驟
760:步驟
802:步驟
804:步驟
806:步驟
808:步驟
810:步驟
812:步驟
814:步驟
816:步驟
852:步驟
854:步驟
856:步驟
858:步驟
860:步驟
902:步驟
904:步驟
906:步驟
908:步驟
910:步驟
912:步驟
914:步驟
916:步驟
918:步驟
1002:步驟
1004:步驟
1006:步驟
[圖1A]示出根據本公開的一或多個實施例的乙太網路驅動器的方塊圖。
[圖1B]示出根據本公開的一或多個實施例,經由中介層(interposer)的乙太網路驅動器的方塊圖。
[圖1C]示出根據本公開的一或多個實施例的資料儲存系統的方塊圖。
[圖1D]示出根據本公開的一或多個實施例,包括記憶體空間的位址的描述符(descriptor)的方塊圖。
[圖2A至圖2D]示出根據本發明的一或多實施例,資料儲存系統的操作的方塊圖。
[圖3A]示出根據本公開的一或多個實施例,乙太網路開放通道驅動器的方塊圖。
[圖3B]示出根據本公開的一或多個實施例,經由中介層的乙太網路開放通道驅動器的方塊圖。
[圖3C]示出根據本公開的一或多個實施例,資料儲存系統的方塊圖。
[圖4]示出根據本公開的一或多個實施例,資料儲存系統的方塊圖。
[圖5A至5D]示出根據本公開的一或多個實施例的資料儲存系統的操作的方塊圖。
[圖6A至6B]示出根據本發明的一或多個實施例的資料儲存系統的廢料收集操作的方塊圖。
[圖7A]示出根據本發明的一或多個實施例,用於從乙太網路驅動器讀取資料的方法。
[圖7B]示出根據本發明的一或多個實施例,用於從乙太網路驅動器讀取資料的方法。
[圖8A]示出根據本發明的一或多個實施例,用於寫入資料至乙太網路驅動器的方法。
[圖8B]示出根據本發明的一或多個實施例,用於寫入資料至乙太網路驅動器的方法。
[圖9]示出根據本公開的一或多個實施例,用於廢料收集的方法。
[圖10]示出根據本公開的一或多個實施例,用於資源解除分配(de-allocation)的方法。
本文描述的實施例提供某些改進,包括提供有效的資源利用和乙太網路驅動器或啟用乙太網路的驅動器的可擴充部署。本文提供的一或多個實施例實現用於乙太網路驅動器或乙太網路開放通道驅動器的可擴充部署的結構,從而利用將實體磁碟簡單而彈性的萃取至儲存區塊(block storage)池中,實現多個驅動器的總頻寬,同時保留直接連接的非揮發性資料儲存(例如NVMe SSD)的高性能。
一般而言,為了符合HDD的向後兼容性,SSD裝置通常包括一個內部控制器,該內部控制器可實現
快閃轉譯層(FTL)、將邏輯區塊位址(logical block address,LBA)映射到實體NAND頁面(page)、執行廢料收集(garbage collection,GC)等。這種架構施加資源利用的低效率。此外,在傳統的“簡單磁碟捆綁”(just a bunch of disk,JBOD)或“簡單快閃捆綁”(just a bunch of flash,JBOF)中,通常實現用於遠端存取的磁碟打包,以便控制器將傳輸層資料包(例如NVMeoF資料包)解封包至本地連接的磁碟中。這種架構很方便,但是它利用複雜的計算和記憶體機制進行高性能轉換。此外,由於傳統電腦形狀因素(form factor)(例如2U機殼(enclosure)),其需要大的空間體積。
在本文描述的一或多個實施例中,控制器可以從主機裝置接收包括主機裝置的記憶體空間的第一位址和第一描述符(參見圖1D)的讀取命令、發送第二讀取命令到乙太網路驅動器(或乙太網路開放通道驅動器),以便乙太網路驅動器可以在無需控制器進一步干預(intervention)的情況下向主機裝置發送遠端資料傳輸指令(例如,遠端DMA寫入命令)並導致主機裝置將從乙太網路驅動器讀取的資料寫入到第一描述符所描述的主機裝置的記憶體空間中的位址(參見圖1D)。類似地,在本公開的一個或多個實施例中,控制器被配置為從主機裝置接收包括第二位址和描述主機裝置的記憶體空間的第二描述符的寫入命令,向乙太網路驅動器(或乙太網路開放通道驅動器)發送第二寫入命令,以便乙太網路驅動器可以在無需控制器進一步干
預的情況下向主機裝置發送遠端資料傳輸指令(例如,遠端DMA讀取命令),並使主機裝置讀取從透過第二描述符描述的主機裝置的記憶體空間中的位址讀取資料,並將資料遠端寫入乙太網路驅動器。使用此配置,聯網的乙太網路儲存裝置可以將儲存裝置控制器上的傳輸處理(例如NVMeoF傳輸處理)卸載到其本地儲存驅動器上,並透過乙太網路協定與主機裝置進行通信,以便可以在主機與本地儲存驅動器之間直接傳輸資料,而無需儲存裝置控制器的干預。因此,主機裝置可以直接存取乙太網路驅動器,而無需儲存裝置控制器進行協定轉換和資料傳輸處理所需的計算和記憶體資源的管理負擔(overhead)。主機還可以透過驅動器上各個網路控制器的較高聚合頻寬(aggregated bandwidth),而不是透過儲存控制器的單個網路控制器(這是一個瓶頸)來實現自身與本地乙太網路驅動器之間資料傳輸的好處。此外,在不受限於儲存裝置控制器的傳統電腦形狀因素的情況下,外殼可以僅是機械元件和電力單元,從而節省了空間。乙太網路開放通道驅動器的使用還可以實現有效的大規模部署,從而實現本地連接體驗,同時允許可擴充的池管理(pool management)(例如,動態供應和橫向擴展(scale-out))。
在本文描述的一或多個實施例中,儲存系統可以包括控制器和多個乙太網路驅動器(或乙太網路開放通道驅動器)。控制器可以執行廢料收集命令(在從主機發出的方向或由控制器自動產生),該廢料收集命令包括識
別乙太網路驅動器(或乙太網路開放通道驅動器)目標的驅動器識別符、在目標驅動器中目標位址處分配自由區塊(free block)、識別目標驅動器中的源位址,並將包含源位址,目標位址和目標驅動器的移動命令發送到目標驅動器。目標驅動器可以將程式化命令發送到目標驅動器,並使目標驅動器將從源位址讀取的資料複製到目標驅動器中目標位址處的自由區塊。使用此配置,可以透過乙太網路驅動器(或乙太網路開放通道驅動器)之間的連接實現全局池級(global pool level)的廢料收集,從而在池中提供NAND裝置的有效部署。
圖1A和圖1B各自示出根據本公開的一或多個實施例的乙太網路驅動器。現在參考圖1A,乙太網路驅動器112可以透過封裝來支持NVMe區塊功能,例如邏輯區塊位址(logical block address,LBA)的讀取和寫入,從而為NVMe裝置提供乙太網路連接。例如,乙太網路驅動器112可以接收或發送封裝在NVMeoF封包(packet)中的NVMe讀取和寫入。
如圖1A所示,乙太網路驅動器112包括乙太網路NIC 104、為NVMeoF配置的控制器106、控制器快閃轉譯層(FTL)108、和NAND型記憶體110。乙太網路NIC 104可以是乙太網路驅動器112和主機(例如,主機或裝置)之間的介面。因此,主機可以直接存取乙太網路驅動器112。為了實現這一點,控制器106可以被配置用於NVMeoF功能。控制器106可以利用控制器FTL 108,該控
制器將主機側或檔案系統邏輯區塊位址映射到NAND型記憶體110的實體位址。因此,可以將NVMeoF傳輸協定處理卸載到乙太網路驅動器112本身,且主機可以直接存取乙太網路驅動器112,而無需協定轉換和資料傳輸所需的單獨儲存控制器中的計算管理負擔。
現在參考圖1B,乙太網路驅動器162包括具有網路中介層153的NVMe驅動器160。網路中介層153可包括用作乙太網路驅動器162和主機之間的介面的乙太網路NIC 104、為NVMeoF協定配置的控制器150,及PCIe介面152。NVMe驅動器160包括配置為與網路中介層的PCIe介面152通信的另一個PCIe介面152、配置為實現PCIe 154的控制器、控制器FTL 156和NAND型記憶體158。因此,可以利用網路中介層153來實現NVMe驅動器160,該網路中介層153提供用於主機直接與乙太網路驅動器162通信。讀取和寫入功能因此可以利用NVMeoF(非揮發性記憶體儲存裝置外接存取)來實現。
在根據本公開的一或多個實施例的乙太網路驅動器中,乙太網路適配器(adapter)(例如,乙太網路NIC 104)可以透過任何乙太網路協定(例如,RDMA、TCP、UDP)提供IP連接。因此,NVMeoF協定允許從連接到網路的任何主機遠端存取乙太網路驅動器,且RDMA網路則致能從乙太網路裝置至主機/從主機至乙太網路裝置的的高帶寬和低延遲的資料傳輸。根據本公開的一或多個實施例,乙太網路驅動器112和162可以具有啟動器功能及目標
功能。因此,每個作為啟動器的乙太網路驅動器都可以將命令發送到另一個乙太網路驅動器,並啟動與該驅動器之間的資料傳輸。
圖1C示出根據本公開的一或多個實施例的示例資料儲存系統302。參考圖1C,資料儲存系統302是JBOF儲存系統,其中乙太網路驅動器312被組織在一或多個JBOF機殼中。在一或多個實施例中,資料儲存系統302包括映射控制器304、映射表(mapping table)306,乙太網路交換器(Ethernet switch)308和多個乙太網路驅動器312。其他實施例包含比圖1C中所示更多或更少的組件。乙太網路交換器308可以聚合從乙太網路驅動器經由上行鏈路資料路徑310到上部TOR交換器(未示出)的連接性。透過這種配置,遠端主機可以以驅動器的乙太網路NIC的全部帶寬連接到每個乙太網路驅動器(上行鏈路資料路徑310配置有足夠的帶寬,以容納以全帶寬單獨運行的所有驅動器)。此外,帶寬是可擴充的,且可以實現多個驅動器的完全聚集。映射控制器304可以在乙太網路驅動器JBOF中提供虛擬化層(virtualization layer)功能。根據本公開的一或多個實施例,映射控制器304可以將實體LBA映射到虛擬邏輯單元號碼(logical unit number,LUN)內的虛擬LBA,反之亦然。
在一或多個實施例中,映射控制器304具有基於大型DRAM的LBA到實體頁面的全局映射(global mapping),從而實現從遠端主機到任何乙太網路裝置的快
速存取。映射控制器304可以被配置為從主機或乙太網路驅動器接收命令。透過映射控制器304接收的命令可以包括NVMe管理命令(admin command)和NVMe I/O命令(例如,讀取、寫入、刷新等)。這樣的NVMe命令可以包括LBA作為參數(例如,命令特定的Dword字段(field))。映射控制器304可以被配置為參考和管理映射表306(例如,是儲存在可存取映射控制器304的電腦記憶體中的資料結構),以確定與包含在NVMe命令的LBA相對應的實體頁面的位址。例如,當映射控制器304從主機接收到包含LBA(SLBA)作為要讀取的資料的起始位址的讀取命令時,它可以確定與SLBA相對應的位址(目標LBA,目標LUN),其中(目標LBA,目標LUN)表示乙太網路驅動器的LUN中的LBA,用於尋址要讀取的資料的實體位置。
在一或多個實施例中,乙太網路驅動器312可各自包括乙太網路NIC 314、控制器316和NAND型記憶體318。乙太網路NIC 314可被配置為用作乙太網路驅動器312與乙太網路交換器308之間的介面。控制器316可執行本地功能,包括對NAND型記憶體318的讀/寫功能。在一或多個實施例中,乙太網路驅動器312可被配置為彼此之間通信及/或傳輸資料(例如,通過乙太網路交換器308)。儘管當前描述的實施例實現乙太網路驅動器312和乙太網路交換器308,但是可以結合映射控制器304來實現其他類型的驅動器和交換器。例如,乙太網路驅動器312可以包括乙太網路驅動器112(見圖1A)或乙太網路驅動器162(請
參見圖1B)。
圖1D示出根據本公開的一或多個實施例的包括記憶體空間的位址的描述符的方塊圖。在一或多個實施例中,當控制器(例如,圖1C中的映射控制器304)從主機接收命令(例如,讀取、寫入、廢料收集等)以控制一或多個乙太網路驅動器(例如在圖1C中的乙太網路驅動器312),命令可以包括一或多個輸入參數(例如,作為輸入到乙太網路驅動器的資料的位址或長度)和一或多個輸出參數(例如,作為從乙太網路驅動器輸出的資料的位址或長度)。
在一或多個實施例中,輸入參數或輸出參數可包括描述主機或乙太網路驅動器的記憶體空間的位址的描述符。參考圖1D,在一或多個實施例中,用於描述記憶體空間的位址的描述符450可以包括描述符識別符(identifier,ID)451、記憶體空間的位址452、及記憶體空間中的長度453(或儲存在記憶體空間中的資料的長度)。例如,從主機(透過控制器)接收到的讀取命令可以包括輸出參數、描述符,該描述符用於描述主機中的記憶體緩衝器,以便主機可以從一或多個乙太網路驅動器讀取資料並寫入資料到描述符中包含的位址(主機中記憶體緩衝器的)。在一或多個實施例中,命令可以包括用於描述主機或乙太網路驅動器中的多個記憶體空間的多個描述符。
在一或多個實施例中,描述符450可以是用於描述實體區域指標(Physical Region Pointer,PRP)的描述
符。在一或多個實施例中,描述符450可以是分散聚集列表(Scatter Gather List,SGL)描述符,其可以指向列表中的其他SGL描述符。在一或多個實施例中,從主機接收的命令可以包括作為輸出參數,用於描述主機中的多個分散的記憶體緩衝器的SGL描述符的分散收集列表。在本公開中描述的任何實施例中,“描述符”可以被理解為指PRP描述符或SGL,但不限於此。
圖2A至圖2D示出根據本公開的一或多個實施例的用於儲存資料的系統的示例操作的圖。圖2A示出乙太網路驅動器JBOD或JBOF(例如,圖1C中的資料儲存系統302)中的單個LBA的示例讀取命令流程(read command flow)。圖2A中的乙太網路驅動器JBOD包括:配置為通信地連接到主機402(例如,主機或裝置)的一或多個乙太網路驅動器312,及被配置為通信地連接到主機402的映射控制器304。乙太網路驅動器312可以包括封裝有NVMeoF之至少其一支持NVMe I/O命令(例如,LBA的讀取和寫入)的驅動器。圖2A至2B的圖中示出的系統和方法包使用NVMeoF傳輸,但是,該系統和方法可以應用於其他傳輸,例如網路小型電腦系統介面(Internet Small Computer System Interface,iSCSI)、RDMA的iSCSI擴充(iSCSI Extensions for RDMA,iSER)、光纖通道(FC)、乙太網路光纖通道(Fibre Channel over Ethernet,FCoE)或其他任何傳輸方式。
在一或多個實施例中,映射控制器304可以
被配置為從主機402接收第一讀取命令,且該第一讀取命令可以包括主機的記憶體空間的第一位址(例如,LBA)和第一描述符。該第一讀取命令可以是非揮發性記憶體儲存裝置外接存取(NVMeoF)讀取命令。例如,參考圖2A,該遠端主機402在NVMeoF傳輸上發送NVMe讀取命令到映射控制器304。在一或多個實施例中,主機具有標準的NVMeoF驅動器。對於圖2A所示的讀取操作,不需要在主機級別進行任何軟體適配。讀取命令可以包括具有以下各項的NVMe隊列條目(Queue Entry,QE):(1)輸入參數包括要從中讀取資料的LBA和要讀取的資料長度,及(2)輸出參數包括描述符(例如圖1D中的描述符450),其包括在要讀取的資料將被寫入的主機的記憶體空間中的位址。在一或多個實施例中,描述符可以是圖1D中的描述符450。
在一或多個實施例中,映射控制器304可以被配置為使用映射表的第一位址來識別乙太網路驅動器312中的目標驅動器和在識別的目標驅動器中的目標位址(例如,LUN中的LBA偏移)。例如,參考圖2A,映射控制器304可以確定乙太網路驅動器中與該LBA相對應的位置。在一或多個實施例中,使用映射表306,映射控制器304可以將(目標LBA,目標LUN)確定為目標乙太網路驅動器的LUN內的LBA偏移,該LBA偏移尋址要讀取的資料的實體位置。在一或多個實施例中,映射表306是將實體LBA映射到虛擬LBA和虛擬LUN的查找表(Look up Table,LUT)。
在一或多個實施例中,映射控制器304可以被配置為向識別的目標驅動器發送第二讀取命令,並且第二讀取命令可以包括第一描述符和識別的目標位址。第二讀取命令可以是NVMe讀取命令。例如,參考圖2A,映射控制器304可以將讀取命令發送到具有目標LBA、目標LUN和包括在主機的記憶體空間中的描述符位址的目標乙太網路驅動器。在一或多個實施例中,發送到目標乙太網路驅動器的讀取命令是NVMe讀取命令。
在一或多個實施例中,識別的目標驅動器可以被配置為回應於接收第二讀取命令,從識別的目標驅動器中識別的目標位址讀取資料。識別的目標驅動器可以配置為向主機發出第一遠端資料傳輸指令(例如,通過RDMA寫入命令),並使主機將從識別的第二位址讀取的資料寫入到第一描述符中包含的主機的記憶體空間的位址中。第一遠端資料傳輸指令可以是RDMA寫入命令。例如,參考圖2A,目標乙太網路驅動器從目標LBA讀取資料,且對主機執行RDMA寫入操作,以將從驅動器讀取的資料傳輸到透過描述符所描述的主機記憶體空間。這種資料傳輸可以在不利用主機CPU的情況下進行,例如透過啟用RDMA的NIC(RDMA enabled NIC,RNIC)。
參考圖2A,一旦完成向主機的資料傳輸,則目標乙太網路驅動器將確認發送到映射控制器304。然後,映射控制器304將NVMeoF狀態封包(capsule)發送到主機402。在一或多個實施例中,NVMeoF狀態封包是
NVMeoF回應封包,其包含格式化為完成隊列條目的回應。在圖2A所示的操作流程中,資料傳輸可以由乙太網路驅動器執行,從而實現可擴充的部署,因為沒有帶內控制(in-band control)帶來的瓶頸,單個JBOF控制器可以處理所有主機讀/寫請求及與主機之間的資料傳輸。
圖2B示出根據本公開的一或多個實施例的另一示例讀取操作。更特別地,圖2B示出存取乙太網路驅動器JBOD(例如,圖1C中的資料儲存系統)中的多個LBA的讀取命令流程。例如,參考圖2B所示,在遠端主機402透過NVMeoF傳輸向映射控制器304發送NVMe讀取命令(包括(1)輸入參數,例如,要從中讀取資料的LBA,及要讀取的資料的長度,及(2)輸出參數,例如,描述符(例如,圖1D中的描述符450),包括主機記憶體空間中要從驅動器讀取的資料將被寫入的位址)之後,映射控制器304可以確定乙太網路驅動器中與該LBA相對應的多個位置。在一或多個實施例中,使用映射表306,映射控制器304可以確定(或識別)第一目標乙太網路驅動器的位址(目標LBA1,目標LUN1),該位址尋址要讀取的資料的第一部分(資料1)的實體位置,並確定(或識別)第二目標乙太網路驅動器的位址(目標LBA2,目標LUN2),該位址尋址要讀取的資料的第二部分(資料2)的實體位置。映射控制器304還可以將NVMe讀取命令轉譯成包括第一描述符(描述符1)的第一讀取命令和包括第二描述符(描述符2)的第二讀取命令。第一描述符(Descriptor1)和第二描述符(Descriptor2)可以分
別在主機的記憶體空間中包括與所確定的兩個目標位址相對應的兩個位址,從而可以將從兩個目標位址讀取的資料儲存在主機的記憶體空間中,其分別由第一和第二描述符描述。映射控制器304然後可以將第一讀取命令發送到具有目標LBA1、目標LUN1和第一描述符的第一目標乙太網路驅動器,且還將第二讀取命令發送到具有目標LBA2、目標LUN2和第二描述符的第二目標乙太網路驅動器。第一目標乙太網路驅動器可以從目標位址(LBA1)讀取資料(資料1),並且對主機執行RDMA寫入操作,以將讀取的資料(資料1)傳輸到第一描述符中包含的主機記憶體空間中的位址(位址1)。同樣,第二目標乙太網路驅動器可以從目標位址(LBA2)中讀取資料(資料2),且對主機執行RDMA寫入操作,以將讀取資料(資料2)傳輸到第二描述符(位址2)中包含的主機記憶體空間中的位址。一旦完成向主機的資料傳輸,第一和第二目標乙太網路驅動器便分別向映射控制器304發送確認。在從兩個乙太網路驅動器接收到確認之後,映射控制器304可以向主機402發送NVMeoF狀態封包。
雖然圖2B示出跨越兩個驅動器的讀取命令,但可以應用任何數量的驅動器,例如,條帶(stripe)(RAID-0),鏡像(mirror)(RAID-1)或甚至更複雜的佈局,例如RAID-5/6和糾刪碼(erasure code)。利用圖2B的配置映射控制器可以向乙太網路驅動器發送多個讀取命令,並且每個驅動器可以透過RDMA將適當的資料傳輸到主機。結
果,可以聚集帶寬並且可以平行處理命令。此外,資料路徑中可能沒有瓶頸。
參照圖2C,其示出了根據本公開的一或多個實施例的示例寫入操作。更具體地,圖2C示出乙太網路驅動器JBOD或JBOF(例如,圖1C中的資料儲存系統302)中的單個LBA的示例寫入命令流程。
在一或多個實施例中,映射控制器304可以被配置為從主機402接收第一寫入命令,且該第一寫入命令可以包括第一位址(例如,LBA)和包括主機的記憶體空間的第一描述符。第一寫入命令可以是NVMeoF寫入命令。例如,參考圖2C,遠端主機402透過NVMeoF傳輸將NVMe寫入命令發送到映射控制器304。寫入命令可以包括NVMe隊列條目(Queue Entry,QE),該NVMe隊列條目具有(1)輸入參數,例如LBA和(2)輸出參數,例如,描述符(例如,圖1D中的描述符450),其包括主機記憶體空間的位址。
在一或多個實施例中,映射控制器304可以被配置為在確定的目標驅動器中使用映射表利用第一位址來識別乙太網路驅動器312中的目標驅動器和目標位址(例如,LUN中的LBA偏移)。例如,參考圖2C,映射控制器304可以確定乙太網路驅動器中與該LBA相對應的位置。在一或多個實施例中,使用映射表306,映射控制器304可以將(目標LBA,目標LUN)確定為目標乙太網路驅動器的LUN內的LBA偏移,該LBA偏移尋址要寫入的資料的
實體位置。
在一或多個實施例中,映射控制器304可以被配置為向識別的目標驅動器發送第二寫入命令,且第二寫入命令可以包括描述符,該描述符包括主機的記憶體空間中的位址和識別的目標位址。第二寫入命令可以是NVMeoF寫入命令。例如,參考圖2C,映射控制器304可以將寫入命令發送到具有目標LBA、目標LUN和目標描述符的目標乙太網路驅動器到主機記憶體空間中的位址。在一或多個實施例中,發送到目標乙太網路驅動器的寫入命令是NVMe寫入命令。
在一或多個實施例中,識別的目標驅動器可以被配置為回應於接收第二寫入命令,向主機發送遠端資料傳輸指令,並使描述符中包含的主機從記憶體空間的位址中讀取資料,並在識別的目標驅動器中的識別的目標位址處遠端寫入從描述符中包含的位址讀取的資料。在一或多個實施例中,遠端資料傳輸指令是RDMA讀取命令。例如,參考圖2C,目標乙太網路驅動器對主機執行RDMA讀取,以從識別的目標驅動器中目標位址處的主機記憶體空間(包含在描述符中)中的位址(位址)遠端讀取資料(資料),或導致主機402識別的目標驅動器中目標位址處的主機記憶體空間(包含在描述符中)中的位址讀取的資料遠端寫入資料。如圖2A和2C所示,在讀取和寫入命令中,都可以將資料直接從乙太網路驅動器傳輸到主機的記憶體。因此,I/O帶寬可在所有磁碟上擴充。
參照圖2D,其示出根據本公開的一或多個實施例的另一示例寫入操作。更特別地,圖2D示出存取乙太網路驅動器JBOD(例如,圖1C中的資料儲存系統)中的多個LBA的寫入命令流程。例如,參考圖2D,在遠端主機402透過NVMeoF傳輸將NVMe寫入命令(包括(1)輸入參數,例如要寫入資料的LBA,及要寫入的資料的長度,及(2)輸出參數,例如描述符(例如,圖1D中的描述符450),包括要從中讀取資料的主機的記憶體空間中的位址)發送到映射控制器304之後,映射控制器304可以確定乙太網路中的多個位置與此LBA對應的驅動器。在一或多個實施例中,使用映射表306,映射控制器304可以確定(或識別)第一目標乙太網路驅動器的第一位址(目標LBA1,目標LUN1),該第一位址是要寫入資料的第一部分(資料1)的位址,並確定(或識別)第二目標乙太網路驅動器的第二位址(目標LBA2,目標LUN2),該第二位址是要寫入資料的第二部分(資料2)的位址。映射控制器304還可以將NVMe寫入命令轉譯成包括第一描述符(描述符1(Descriptor1))的第一寫入命令和包括第二描述符(描述符2(Descriptor2))的第二寫入命令。第一描述符和第二描述符可以分別包括在主機的記憶體空間中與所確定的兩個目標位址相對應的兩個
位址,使得從第一描述符(Descriptor1)和第二描述符(Descriptor2)所指向的位址讀取的資料分別儲存在第一目標位址(LBA1,LUN1)和第二目標位址(LBA2,LUN2)。映射控制器304然後可以將第一寫入命令發送到具有目標LBA1、目標LUN1和第一描述符(Descriptor1)的第一目標乙太網路驅動器,且還將第二寫入命令發送至具有目標LBA2、目標LUN2和第二描述符(Descriptor2)的第二目標乙太網路驅動器。第一目標乙太網路驅動器可以對主機執行RDMA讀取,以傳輸從第一目標位址(LBA1)的主機記憶體空間中的第一描述符(位址1)中包含的位址讀取的資料(資料1)。類似地,第二目標乙太網路驅動器可以對主機執行RDMA讀取,以從第二目標位址(LBA2)的主機記憶體空間中的第二描述符(位址2)中包含的位址中讀取資料(資料2)。一旦完成向主機的資料傳輸,第一和第二目標乙太網路驅動器便向映射控制器304發送確認。在從兩個乙太網路驅動器接收到確認之後,映射控制器304可以向主機402發送NVMeoF狀態封包。
圖3A和圖3B各自示出根據本公開的一或多個實施例的乙太網路開放通道驅動器。現在參考圖3A,乙太網路開放通道驅動器212可以支援開放通道功能,諸如對頁面進行程式化、讀取頁面及抹除區塊。可以支援進一步功能,例如檢索裝置的幾何形狀或任何其他開放通道的擴充功能。
如圖3A所示,乙太網路開放通道驅動器212
包括乙太網路NIC 204、控制器206和NAND型記憶體210。在一或多個實施例中,與在圖1A中的乙太網路驅動器112相比,乙太網路開放通道驅動器212不包括控制器快閃轉譯層(FTL)。乙太網路NIC 204可以是乙太網路開放通道驅動器212和主機(例如,主機電腦或裝置)之間的介面。因此,主機可以直接存取乙太網路開放通道驅動器212。控制器206包括糾錯碼(Error Correction Code,ECC)管理器207和NAND控制器208。NAND控制器208可以支援諸如程式化、讀取和抹除的NAND API。在沒有FTL映射的情況下,乙太網路開放通道驅動器212可以將快閃記憶體管理卸載到上層(見圖3C)。因此,在較高層運行的池級FTL可以提供更大的彈性和更高的效率。
現在參考圖3B,乙太網路開放通道驅動器272包括具有網路中介層250的PCIe開放通道驅動器262。網路中介層250可以包括用作乙太網路開放通道驅動器262、主機、PCIe介面252之間的介面的乙太網路NIC 204。PCIe開放通道驅動器262包括配置為與網路中介層的PCIe介面252通信的另一個PCIe介面252、控制器256和NAND型記憶體260。控制器256包括糾錯碼(ECC)管理器257和NAND控制器258。NAND控制器258可以支援諸如程式化、讀取和抹除的NAND API。在一或多個實施例中,與圖1B中的NVMe驅動器160相比,PCIe開放通道驅動器262可以不包括控制器快閃轉譯層(FTL),因為該功能可以由主機或單獨的控制器提供。乙太網路開放通道驅動器
272可以利用網路中介層250來實現,該網路中介層250提供了主機直接與PCIe開放通道驅動器162通信。
在一或多個實施例中,乙太網路開放通道驅動器212和272可以發送或接收透過NVMe協定命令背負的開放通道命令(例如,讀取、寫入、抹除)。乙太網路適配器(例如,乙太網路NIC 204)可為任何網路和傳輸協定提供實體和資料鏈路層連接性-IP上的RDMA、RoCE(融合乙太網路上的RDMA)、iWARP(網際網路廣域RDMA協定)、TCP、UDP、IP等。一或多個實施例中,非揮發性記憶體儲存裝置外接存取協定允許從連接到網路的任何主機遠端存取乙太網路開放通道驅動器,而RDMA網路則允許從乙太網路開放通道裝置到主機的高帶寬和低延遲資料傳輸。根據本公開的一或多個實施例,乙太網路開放通道驅動器212和272可以具有發起者功能及目標。因此,每個作為啟動器的乙太網路開放通道驅動器都可以將命令發送到另一個乙太網路開放通道驅動器。
圖3C示出根據本公開的一或多個實施例的示例資料儲存系統352。參考圖3C,資料儲存系統352是JBOF儲存系統,其中乙太網路開放通道驅動器360被組織在一或多個JBOF外殼中。在一或多個實施例中,資料儲存系統352包括映射控制器354、快閃轉譯層(FTL)映射356、乙太網路交換器308和多個乙太網路開放通道驅動器360。其他實施例包含比圖3C中所示更多或更少的組件。乙太網路交換器358可以聚合從乙太網路開放通道驅動器
經由上行鏈路資料路徑359到上層TOR交換器(未示出)的連接性。因此,遠端主機可以使用驅動器的乙太網路NIC的全部帶寬連接到每個乙太網路開放通道驅動器(上行鏈路資料路徑359配置有足夠的帶寬,以容納以全帶寬單獨運行的所有驅動器)。此外,帶寬是可擴充的,且可以實現多個乙太網路開放通道驅動器的完全聚合。映射控制器354可以在乙太網路開放通道驅動器JBOF中提供虛擬化層功能。根據本公開的一或多個實施例,映射控制器354可以將LBA映射到NAND中的位址(例如,區塊號(block number)、頁面號(page number)、驅動器號(drive number)等),反之亦然。因此,乙太網路開放通道JBOF中的映射控制器354可以提供JBOF的全局FTL管理,從而使得能夠從上層進行區塊存取。
在一或多個實施例中,映射控制器354具有基於大型DRAM的LBA全局映射到實體頁面,從而致能從遠端主機到任何乙太網路裝置的快速存取。映射控制器354可以被配置為從主機或乙太網路驅動器接收命令。透過映射控制器354接收的命令可以包括NVMe管理命令和NVMe I/O命令(例如、讀取、寫入、刷新等)。這樣的NVMe命令可以包括LBA作為參數(例如,命令特定Dword字段)。映射控制器354可以被配置為參考和管理FTL映射356(例如,儲存在可存取映射控制器354的電腦記憶體中的資料結構或查找表(LUT)),以確定實體區塊的位址及與NVMe命令中包含的LBA對應的頁面。FTL映射356可以將
主機側或檔案系統邏輯區塊位址映射到NAND型記憶體(例如,NAND 368)的實體位址。例如,當映射控制器354從主機接收到包含LBA(SLBA)作為要讀取的資料的起始位址的讀取命令時,它可以確定對應於尋址要讀取的資料的實體位置的SLBA的實體位址(目標區塊號,目標頁面號,目標驅動器號)。
在一或多個實施例中,每個開放通道乙太網路驅動器360可以包括乙太網路NIC 372、控制器362和NAND型記憶體368。乙太網路NIC 372可以被配置為充當乙太網路驅動器360和乙太網路交換器358之間的介面。控制器362可以包括ECC管理器364和支援諸如程式化、讀取和抹除之類的NAND API的NAND控制器366。在一或多個實施例中,乙太網路驅動器360可以被配置為在彼此之間通信及/或傳輸資料(例如,通過乙太網路交換器358)。儘管當前描述的實施例實現乙太網路驅動器360和乙太網路交換器358,但是可以結合映射控制器354來實現其他類型的驅動器和交換器。例如,乙太網路開放通道驅動器360可以包括乙太網路開放通道驅動器212(參見圖3A)或乙太網路開放通道驅動器272(參見圖3B)。
圖4示出根據本公開的一或多個實施例的資料儲存系統的方塊圖。圖4所示的資料儲存系統包括:TOR交換器380、多個計算節點382(例如,電腦或計算裝置)、包括FTL映射386的映射控制器384及多個JBOF 388。計算節點382可以經由TOR交換器380存取多個JBOF 388的
聚合連接性。映射控制器384可以在多個JBOF 388中提供虛擬化層功能。根據本公開的一或多個實施例,映射控制器384可以將LBA映射到多個JBOF 388之中NAND中的位址(例如,區塊號、頁面號、驅動器號等),反之亦然。
圖5A至5D示出圖示根據本公開的一或多個實施例的用於儲存資料的系統的示例操作的圖。圖5A至圖5D示出的操作流程類似於圖2A至圖2D所示,除了映射控制器304、映射表306和乙太網路驅動器312被映射控制器354、FTL映射356和乙太網路開放通道驅動器360代替之外。因此,將僅描述與圖2A至圖2D所示的實施方式的不同之處,且將省略多餘的描述。
圖5A示出乙太網路開放通道驅動器JBOD或JBOF(例如,圖3C中的資料儲存系統352)中的單個LBA的示例讀取命令流程。圖5A中的乙太網路開放通道驅動器JBOD包括配置為通信地連接到主機502(例如主機或裝置)的一或多個乙太網路開放通道驅動器360和本身也被配置為通信地連接到主機502的映射控制器354。乙太網路開放通道驅動器360可以發送或接收透過NVMe協定命令背負的開放通道命令(例如,讀取、寫入、抹除)。乙太網路開放通道驅動器360可以包括至少一個乙太網路開放通道驅動器,其支援開放通道程式和頁面的讀取及方塊的開放通道抹除。
在一或多個實施例中,參考圖5A,遠端主機502透過NVMeoF傳輸將NVMe讀取命令發送到映射控制
器354。讀取命令可以包括NVMe隊列條目(QE),其具有(1)輸入參數,例如,要從中讀取資料的LBA)和要讀取的資料的長度,及(2)輸出參數,例如,描述符(例如,圖1D中的描述符450),包括要在其上寫入要讀取的資料的主機的記憶體空間中的位址。
在一或多個實施例中,參考圖5A,映射控制器354可以確定與該LBA相對應的乙太網路開放通道驅動器中的位置。在一或多個實施例中,使用FTL映射356,映射控制器354可以確定與尋址要讀取的資料的實體位置的LBA相對應的(目標區塊號,目標頁面號,目標驅動器號)。目標區塊號、目標頁面號、目標驅動器號可以分別識別目標區塊、目標頁面和目標乙太網路開放通道驅動器。
在一或多個實施例中,參考圖5A,映射控制器354可以以目標區塊號、目標頁面號及包括主機記憶體空間中的位址的描述符,向目標乙太網路開放通道驅動器發送讀取命令。在一或多個實施例中,讀取命令是開放通道讀取命令。
在一或多個實施例中,參考圖5A,目標乙太網路開放通道驅動器從目標區塊和目標頁面讀取資料,且對主機執行RDMA寫入,以將讀取的資料(資料)傳輸到描述符中包含的主機記憶體空間中的位址(Address)。參考圖5A,一旦到主機的資料傳輸完成,則目標乙太網路開放通道驅動器可以向映射控制器354發送確認。然後,映
射控制器354可以將NVMeoF狀態封包發送到主機502。
圖5B示出根據本公開的一或多個實施例的另一示例讀取操作。更特別地,圖5B示出存取乙太網路開放通道驅動器JBOD(例如,圖3C中的資料儲存系統)中的多個LBA的讀取命令流程。例如,參考圖5B,在遠端主機502透過NVMeoF傳輸將NVMe讀取命令(包括(1)輸入參數,例如,要從中讀取資料的LBA,及要讀取的資料的長度,及(2)輸出參數,例如,描述符(例如,圖1D中的描述符450)包括主機記憶體空間中將要從資料儲存系統讀取的資料寫入的位址)發送到映射控制器354之後,映射控制器354可以確定與該LBA相對應的乙太網路開放通道驅動器中的多個位置。在一或多個實施例中,使用FTL映射356,映射控制器354可以確定(或識別)第一目標乙太網路開放通道驅動器的位址(目標區塊1,目標頁面1,目標驅動器1),其尋址要讀取的資料的第一部分(資料1)的實體位置,並確定(或識別)第二目標乙太網路開放通道驅動器的位址(目標區塊2,目標頁面2,目標驅動器2),該位址尋址要讀取的資料的第二部分的實體位置(資料2)。映射控制器354還可以將NVMe讀取命令轉譯為包括第一描述符(Descriptor1)的第一讀取命令和包括第二描述符(Descriptor2)的第二讀取命令。第一描述符和第二描述符可以分別包括在主機的記憶體空間中與所確定的兩個目標位址相對應的兩個位址,從而可以從兩個目標位址讀取的資料可以儲存在主機記憶體空間的第一和第二描述符中包
括的位址處。映射控制器354可以然後將第一讀取命令與目標區塊1、目標頁面1和第一描述符發送到第一目標乙太網路開放通道驅動器(由驅動器1識別),且還將第二讀取命令與目標區塊2、目標頁面2和第二描述符發送到第二目標乙太網路開放通道驅動器(由驅動器2識別)。第一目標乙太網路開放通道驅動器可以從目標位址(區塊1,頁面1)中讀取資料(資料1),且對主機執行RDMA寫入操作,以將讀取資料(資料1)傳輸到主機記憶體空間(位址1)中第一描述符中包含的位址。類似地,第二目標乙太網路開放通道驅動器可以從目標位址(區塊2,頁面2)讀取資料(資料2),且對主機執行RDMA寫入操作,以將讀取資料(資料2)傳輸到主機記憶體空間(位址2)中第二描述符中包含的位址。一旦完成向主機的資料傳輸,第一和第二目標乙太網路開放通道驅動器中的每一個都可以發送確認到映射控制器354。在從兩個乙太網路開放通道驅動器接收到確認之後,映射控制器354可以將NVMeoF狀態封包發送到主機502。
參照圖5C,其示出根據本公開的一或多個實施例的示例性寫入操作。更特別地,圖5C示出乙太網路開放通道驅動器JBOD或JBOF(例如,圖3C中的資料儲存系統352)中的單個LBA的示例寫入命令流程。
在一或多個實施例中,參考圖5C,遠端主機502透過NVMeoF傳輸將NVMe寫入命令發送到映射控制器354。寫入命令可以包括NVMe隊列條目(QE),該NVMe
隊列條目(QE)具有(1)輸入參數,例如LBA和(2)輸出參數,例如描述符(例如,圖1D中的描述符450)包括主機記憶體空間位址中的位址(描述符)。
在一或多個實施例中,參考圖5C,映射控制器354可以確定與該LBA相對應的乙太網路開放通道驅動器中的位置,例如,要寫入的資料的實體位置的位址(目標區塊號,目標頁面號,目標驅動器號)。替代地,映射控制器354可以根據區塊分配策略(例如,自由區塊中的先進先出(first-in-first-out,FIFO)、延長快閃記憶體使用壽命或更佳利用儲存的策略)來分配新區塊,並且確定分配的區塊的位址(目標區塊號,目標頁面號,目標驅動器號)作為要寫入的資料的實體位置。該位址(目標區塊號,目標頁面號,目標驅動器號)識別目標區塊、目標頁面和目標乙太網路開放通道驅動器。
在一或多個實施例中,參考圖5C,映射控制器354可以與目標區塊號、目標頁面號、驅動器號及包括主機的記憶體空間中的位址的描述符,向目標乙太網路開放通道驅動器發送開放通道程式化命令。目標乙太網路開放通道驅動器對主機執行RDMA讀取,以從目標位址(在目標乙太網路開放通道驅動器中)主機記憶體空間中的描述符中包含的位址(位址)遠端讀取資料(資料)),或使主機502從目標位址(在目標乙太網路開放通道驅動器中)的主機記憶體空間中的描述符中包含的位址(Address)讀取的資料(資料)遠端寫入。
參考圖5C,一旦完成向主機的資料傳輸,則目標乙太網路開放通道驅動器可以向映射控制器354發送確認。映射控制器354可以用新的位置(例如,新區塊和頁面)更新FTL映射356。例如,映射控制器354可以使舊位置無效且設置新位置。映射控制器354然後可以向主機502發送NVMeoF狀態封包。
參照圖5D,其示出根據本公開的一或多個實施例的另一示例寫入操作。更特別地,圖5D示出存取乙太網路驅動器JBOD(例如,圖3C中的資料儲存系統)中的多個LBA的寫入命令流程。例如,參考圖5D,在遠端主機502透過NVMeoF傳輸將NVMe寫入命令(包括(1)輸入參數,例如要在其上寫入資料的LBA,及要寫入的資料長度,及(2)輸出參數,例如,描述符(例如,圖1D中的描述符450)包括主機記憶體空間中要從中讀取資料的位址)發送到映射控制器354之後,映射控制器354可以確定與該LBA相對應的乙太網路開放通道驅動器中的多個位置。在一或多個實施例中,使用FTL映射356,映射控制器354可以確定(或識別)第一目標乙太網路開放通道驅動器的第一位址(目標區塊1,目標頁面1,目標驅動器1),該位址是位於寫入資料的第一部分(資料1),並確定(或識別)第二目標乙太網路開放通道驅動器的第二位址(目標區塊2,目標頁面2,目標驅動器2),該位址是位於寫入資料的第二部分(資料2)。映射控制器354還可以將NVMe寫入命令轉譯成包括第一描述符(描述符1)的第一開放通道程式化命
令,且轉譯成包括第二描述符(描述符2)的第二開放通道程式化命令。第一描述符和第二描述符可以分別包括在主機的記憶體空間中與確定的兩個目標位址相對應的兩個位址,從而從第一描述符(描述符1)中包含的位址讀取資料且第二描述符(描述符2)可以分別儲存在第一目標位址(區塊1,頁面1,驅動器1)和第二目標位址(區塊2,頁面2,驅動器2)。可替換地,映射控制器354可以根據區塊分配策略(例如,FIFO,用於延長快閃記憶體的使用壽命或更佳地利用儲存的策略)來分配兩個新區塊,並確定分配的區塊的位址(區塊1,頁面1,驅動器1)和(區塊2,頁面2,驅動器2)作為要寫入的資料的實體位置。
參照圖5D,映射控制器304然後可以以區塊1、頁面1、驅動器1和第一描述符(描述符1)將第一開放通道程式化命令發送到的第一目標乙太網路開放通道驅動器(由驅動器1識別),且還以區塊2、頁面2、驅動器2和第二描述符(描述符2)將第二開放通道程式化命令發送到的第二目標乙太網路驅動器(由驅動器2識別)。第一目標乙太網路開放通道驅動器可以對主機執行RDMA,以傳輸從在第一目標位址(區塊1,頁面1,驅動器1)處在主機的記憶體空間中的第一描述符(位址1)包括的位址讀取的資料(資料1)。類似地,第二目標乙太網路開放通道驅動器可以對主機執行RDMA,以傳輸從在第二目標位址(區塊2,頁面2,驅動器2)處在主機的記憶體空間中的第二描述符(位址2)包括的位址讀取的資料(資料2)。一旦完成向主
機的資料傳輸,第一和第二目標開放通道乙太網路驅動器便可以向映射控制器354發送確認。在從兩個乙太網路開放通道驅動器接收到確認之後,映射控制器354可以用新的位置(例如,包含這些LBA的新的區塊和頁面)來更新FTL映射356。映射控制器354然後可以向主機502發送NVMeoF狀態封包。
在本公開的一或多個實施例中,用於讀取儲存的資料的系統(例如,圖1C中的資料儲存系統302)可以包括一或多個乙太網路驅動器(例如,圖2A至圖2B中的一或多個乙太網路驅動器312或圖5A-圖5B中的一或多個乙太網路開放通道驅動器360)配置為通信地連接到主機裝置(例如,圖2A-2B中的主機402或圖5A-圖5B中的主機502),及與主機裝置和一或多個乙太網路驅動器通信的控制器(例如,圖2A-圖2B中的映射控制器304,圖5A-圖5B中的映射控制器354)。控制器可以從主機裝置接收第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令),該第一讀取命令包括第一組一或多個輸入參數(例如,要從中讀取資料的LBA,及要讀取的資料長度;參見圖2B或圖5B),及將被讀取的資料的長度;及指示主機裝置中的一或多個記憶體緩衝器的第一組一或多個輸出參數(例如,描述符包括在主機的記憶體空間中的位址,在該位址中將從資料儲存系統讀取的資料將被寫入;參考圖2B或圖5B)。控制器可以使用一或多個輸入參數中之至少其一和映射表(例如,圖2B中的映射表306或圖5B中的FTL映射356)來確定
一或多個乙太網路驅動器中的第一驅動器(例如,圖2B中的第一目標乙太驅動器或圖5B中的驅動器1)。控制器可以將第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令)轉譯為第二讀取命令(例如,圖2B中的讀取(LBA1,LUN1,描述符1)或圖5B中的讀取(區塊1,頁面1,驅動器1,描述符1)),第二讀取命令包括第二組一或多個輸出參數(例如,圖2B或圖5B中的描述符1),其指示主機裝置中的一或多個記憶體緩衝器。控制器可以將第二讀取命令發送到第一驅動器。回應於接收第二讀取命令,第一驅動器可以獨立於控制器向主機裝置發送第一遠端資料傳輸指令(例如,圖2B或圖5B中的RDMA寫入(資料1,位址1))。第一遠端資料傳輸指令可以包括從第一驅動器讀取的儲存資料(例如,圖2B或圖5B中的資料1),以使主機裝置將從第一驅動器讀取的儲存資料寫入至由第二組一或多個輸出參數(例如,圖2B或圖5B中的描述符1)指示的一或多個記憶體緩衝器(例如,圖2B或圖5B中的位址1)。
在本公開的一或多個實施例中,第一組輸出參數和第二組輸出參數可以彼此相同(例如,在圖2A中,NVMeF讀取命令的“描述符(Descriptor)”與至乙太網路驅動器的讀取命令的“描述符”相同)。
在本公開的一或多個實施例中,控制器可以將第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令)轉譯為第三讀取命令(例如,圖2B中的讀取(LBA2,LUN2,描述符2)或圖5B中的讀取(區塊2,頁面2,驅動器2,描述
符2)),第三讀取命令包括第三組一或多個輸出參數(例如,圖2B或圖5B中的描述符2)指示主機裝置中的一或多個記憶體緩衝器。控制器可以在使用一或多個輸入參數中之至少其一和映射表的一或多個乙太網路驅動器之中來確定第二驅動器(例如,圖2B中的第二目標乙太網路驅動器或圖5B中的驅動器2)。控制器可以將第三讀取命令發送到第二驅動器。回應於接收第三讀取命令,第二驅動器可以獨立於控制器向主機裝置發送第二遠端資料傳輸指令(例如,圖2B或圖5B中的RDMA寫入(資料2,位址2))。第二遠端資料傳輸指令可以包括從第二驅動器讀取的資料(例如,圖2B或圖5B中的資料2)以使主機裝置將從第二驅動器讀取的資料寫入一或多個記憶體緩衝器(例如,圖2B或圖5B中的位址2),該一或多個記憶體緩衝器由第三組一或多個輸出參數(例如,圖2B或圖5B中的描述符2)指示。
在本公開的一或多個實施例中,第一組輸出參數、第二組輸出參數和第三組輸出參數可以彼此不同(例如,在圖2B中,“描述符”NVMeF讀取命令的“描述符”,第一讀取命令的“描述符1”和第二讀取命令的“描述符2”彼此不同)。第一組輸出參數可以包括第一記憶體緩衝器描述符(例如,圖1D中的描述符450),該第一記憶體緩衝器描述符包括主機裝置中的第一記憶體緩衝器位址(例如,圖1D中的位址452)和資料的第一長度(例如,圖1D中的長度453)。第二組輸出參數可以包括第二記憶體緩衝器描述符(例如,圖1D中的描述符450),該第二記憶體緩
衝器描述符包括主機裝置中的第二記憶體緩衝器位址和第二資料長度。第三組輸出參數可以包括第三記憶體緩衝器描述符(例如,圖1D中的描述符450),該第三記憶體緩衝器描述符包括主機裝置中的第三記憶體緩衝器位址和第三資料長度。
在本公開的一或多個實施例中,第一組輸出參數和第二組輸出參數可以包括記憶體緩衝器描述符的分散聚集列表(scatter gather list)(例如,圖1D中的描述符450可以是分散聚集列表(SGL)描述符,它可能指向分散聚集列表中的其他SGL描述符。
在本公開的一或多個實施例中,第一讀取命令可以是非揮發性記憶體儲存裝置外接存取(NVMeoF)讀取命令(參考圖2A、圖2B、圖5A和圖5B)。第一遠端資料傳輸指令可以是遠端直接記憶體存取(RDMA)寫入命令(參考圖2A、圖2B、圖5A和圖5B)。
在本公開的一或多個實施例中,一種用於儲存資料的系統(例如,圖1C中的資料儲存系統302)可以包括一或多個乙太網路驅動器(例如圖2C-圖2D中的一或多個乙太網路驅動器312或圖5C-圖5D中的一或多個乙太網路開放通道驅動器360)被配置為通信地連接到主機裝置(例如,圖2C-圖2D中的主機402或圖5C-5D中主機502),及控制器(例如,圖2C-2D中的映射控制器304,圖5C-5D中的映射控制器354),其與主機裝置及一或多個乙太網路驅動器進行通信。控制器可以從主機裝置接收第一寫入命令
(例如,圖2D或圖5D中的NVMeF寫入命令)。第一寫入命令可以包括第一組一或多個輸入參數(例如,要向其寫入資料的LBA,及要寫入的資料的長度;參考圖2D或圖5D)和第一組一或多個輸出參數,指示主機中的一或多個記憶體緩衝器(例如,描述符,該描述符包括要從中讀取資料的主機的記憶體空間中的位址;請參見圖2D或圖5D)。控制器可以在使用一或多個輸入參數之至少其一的和映射表(例如,圖2D中的映射表306或圖5D中的FTL映射356)一或多個乙太網路驅動器之中來確定第一驅動器(例如,圖2D中的第一目標乙太驅動器或圖5D中的驅動器1)。控制器可以將第一寫入命令(例如,圖2D或圖5D中的NVMeF寫入命令)轉譯為第二寫入命令(例如,圖2D中的寫入(LBA1,LUN1,描述符1)或圖5D中的程式化(區塊1,頁面1,驅動器1,描述符1)。第二寫入命令可包括指示主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數(例如,圖2D或圖5D中的描述符1)。控制器可以將第二寫入命令發送到第一驅動器。回應於接收第二寫入命令,第一驅動器可以獨立於控制器向主機裝置發送第一遠端資料傳輸指令(例如,圖2D或圖5D中的RDMA讀取(資料1,位址1))。第一遠端資料傳輸指令可以使主機裝置從由第二組一或多個輸出參數(例如,圖2D或圖5D中的描述符1)指示的一或多個記憶體緩衝器(例如,圖2D或圖5D中的位址1)讀取資料(例如,圖2D或圖5D中的資料1),並將從一或多個記憶體緩衝器讀取的資料遠端寫入第一驅動器。
在本公開的一或多個實施例中,第一寫入命令可以是NVMeoF寫入命令(參見圖2C、圖2D、圖5C和圖5D)。第一遠端資料傳輸指令可以是RDMA讀取命令(參見圖2C、圖2D、圖5C和圖5D)。
圖6A示出根據本公開的一或多個實施例,用於儲存資料的系統的示例廢料收集操作的圖。參考圖6A,乙太網路開放通道驅動器JBOD包括映射控制器606、FTL映射608及兩個乙太網路開放通道驅動器601和602。映射控制器606可以在乙太網路開放通道驅動器JBOF中提供虛擬化層功能。乙太網路開放通道JBOF中的映射控制器606可以提供JBOF的全局FTL管理,致能從上層進行區塊存取。映射控制器606可以被配置為參考和管理FTL映射608(例如,儲存在可存取控制器606的電腦記憶體中的資料結構或查找表(LUT)),以確定實體區塊的位址和對應於邏輯位址的頁面。FTL映射608可以將主機側或檔案系統邏輯區塊位址映射到NAND型記憶體(例如,映射控制器606的NAND)的實體位址。
在一或多個實施例中,儲存系統的控制器可以被配置為執行命令以請求發起廢料收集,該命令包括在乙太網路驅動器之中識別源驅動器(source drive)的一或多個的源驅動器識別符。在正常操作期間,當最初與該頁面關聯的LBA的資料被覆蓋時,頁面將變為無效。在NAND記憶體不支援就地(in-place)覆蓋資料的情況下,可以用新資料代替寫入新頁面(可能在新區塊中),並且可以將包含
先前資料的舊頁面標記為無效。在一或多個實施例中,不時地,無效頁面的堆積(build-up)可以透過廢料收集來“清理(cleanse)”,其可以整理區塊中剩餘的有效頁面並將其複製到新區塊中,將原始有效頁面標記為無效。在一或多個實施例中,一旦區塊中的所有頁面都無效,就可以抹除該區塊並返回到自由區塊池。在一或多個實施例中,SSD可以自動執行廢料收集,而無需主機的互動或控制。在一或多個實施例中,開放通道驅動器可以提供主機發起廢料收集的能力,在此進行描述。主機可以選擇哪個驅動器執行廢料收集,因為廢料收集操作可以干擾並削弱(impair)驅動器的性能(例如,讀寫延遲和吞吐量)。透過選擇特定的驅動器,主機可以隨時控制哪些可能正在執行垃圾回收的驅動器,從而最佳化性能。例如,主機可以使用抹除代碼,該抹除代碼可以使許多驅動器執行廢料收集,而其餘驅動器可以處於有效(active)狀態,並且可以進行讀/寫請求服務,而不會降低性能。
例如,參考圖6A,映射控制器606從主機或乙太網路驅動器或乙太網路開放通道驅動器接收廢料收集命令。廢料收集命令可以包括驅動器號或索引(index),識別需要對其進行廢料收集的第一乙太網路開放通道驅動器601。在開放通道部署(例如,圖3C中的乙太網路開放通道驅動器JBOD或JBOF)中,廢料收集命令可以使乙太網路開放通道驅動器JBOD執行全局廢料收集(例如,針對SSD的RAID陣列的全局協調廢料收集機制)。
在一或多個實施例中,控制器可以被配置為使用映射表在一或多個乙太網路驅動器中的目標驅動器中的目標位址處分配自由區塊。控制器可以被配置為使用映射表以源驅動器識別符識別源驅動器中的源位址。例如,參考圖6A,映射控制器606可以使用FTL映射608以包含在廢料收集命令中的邏輯位址來確定與該LBA相對應的乙太網路開放通道驅動器中的源位置,例如要抹除的資料的實體位置的位址(源區塊號,源頁面號,源驅動器號)。映射控制器606可以根據區塊分配策略(例如,FIFO,用於延長快閃記憶體的使用壽命或更好地利用儲存的策略)來分配新的區塊,並確定分配的區塊的位址(目標區塊號,目標頁面號,目標驅動器號)。
在一或多個實施例中,控制器可以被配置為向目標驅動器發送移動命令(move command)。移動命令可以包括源位址、目標位址和目標驅動器。移動命令可以是開放通道移動命令。例如,參考圖6A,映射控制器606可以以源區塊號、源頁面號、目標區塊號、目標頁面號和目標驅動器號將開放通道移動命令發送到源乙太網路開放通道驅動器601(由源驅動器號識別)。
在一或多個實施例中,源驅動器可以被配置為回應於接收移動命令,從目標驅動器中的識別的源位址讀取資料。源驅動器可以被配置為向目標驅動器發送程式化命令,並使目標驅動器將從識別的源位址讀取的資料複製到目標驅動器中的目標位址處的自由區塊。該程式命令
可以是開放通道程式命令。例如,參考圖6A,源乙太網路開放通道驅動器601可以從源區塊讀取有效資料(由源區塊號和頁面號識別),並且作為啟動器(initiator)以目標區塊號、目標頁面和從源區塊讀取的資料將開放通道程式化命令發送到目標乙太網路開放通道驅動器602(由目標驅動器號識別)。該程式命令可以將有效資料從源區塊複製到新區塊(由目標區塊號和頁面號識別)。以這種方式,乙太網路開放通道驅動器601的啟動器功能可以用於提供高帶寬並且沒有瓶頸流程。
在一或多個實施例中,源驅動器可以被配置為回應於將資料複製到自由區塊的完成而向控制器發送確認命令。例如,參考圖6A,一旦完成向目標乙太網路開放通道驅動器601中的新區塊的資料複製,則源乙太網路開放通道驅動器601可以將確認發送給映射控制器606。
在一或多個實施例中,控制器可以被配置為回應於從源驅動器接收到確認命令而以目標位址更新映射表。控制器可以被配置為回應於用目標位址更新映射表的完成而向源驅動器發送抹除命令,並使源驅動器抹除第一驅動器中識別的源位址處的資料。抹除命令可以是開放通道抹除命令。例如,參考圖6A,映射控制器606然後可以用新的位置(例如,新區塊和頁面)來更新FTL映射608。例如,映射控制器606可以使舊位置無效並且設置新位置。然後,映射控制器606可以抹除源開放通道驅動器601中的源區塊。結果,可以執行全局廢料收集而沒有任
何帶內瓶頸。
圖6B示出根據本公開的一或多個實施例的用於儲存資料的系統的示例性解除分配(de-allocation)操作(也稱為修整(trim)或取消映射(unmap)操作)的圖式。參考圖6B,乙太網路開放通道驅動器JBOD或JBOF 610包括映射控制器606、FTL映射608及兩個乙太網路開放通道驅動器601和602。映射控制器606可以在乙太網路開放通道驅動器JBOF中提供虛擬化層功能。乙太網路開放通道JBOF中的映射控制器606可以提供JBOF的全局FTL管理,從而允許從上層進行區塊存取。映射控制器606可以被配置為參考和管理FTL映射608(例如,儲存在可存取控制器606的電腦記憶體中的資料結構或查找表(LUT)),以確定實體區塊的位址和對應於邏輯位址的頁面。FTL映射608可以將主機側或檔案系統邏輯區塊位址映射到NAND型記憶體的實體位址(例如,映射控制器606的NAND)。
在一或多個實施例中,儲存系統的控制器可以被配置為接收解除分配(或修整或取消映射)命令以請求與邏輯位址或邏輯位址範圍相關聯的資源的解除分配。例如,參考圖6B,映射控制器606從主機(例如,圖6B中的主機620)或乙太網路驅動器或乙太網路開放通道驅動器(例如,圖6B中的乙太網路開放通道驅動器601)接收解除分配命令。解除分配命令可以包括要抹除或釋放的區塊的邏輯位址或邏輯位址範圍(例如,LBA或LBA(多個)或LBA範圍,其中該範圍可以表示為起始LBA和終止LBA,或起
始LBA及長度)。
在一或多個實施例中,映射控制器606可以被配置為回應於接收包括LBA的解除分配命令,解除分配分配給LBA的資源(例如,頁面或區塊)。在一或多個實施例中,映射控制器606可以透過返回區塊至自由區塊池將分配給LBA的區塊解除分配。例如,參考圖6B,映射控制器606然後可以更新FTL映射608並使與LBA相對應的舊位置無效。例如,FTL映射608中的條目(entry)可以被標記為不再包含有效資料或無效。在一或多個實施例中,可以從FTL映射608中刪除在FTL映射608中包括LBA的條目。在一或多個實施例中,主機可以通知系統用於不再需要的儲存位置(LBA)的資料的儲存,並且儲存系統可以為其解除分配資源以輔助並提高任何後續廢料收集操作的效率。
圖7A示出根據本公開的一或多個實施例的用於從乙太網路驅動器讀取資料的方法。在簡要概述中,該方法包括步驟702-712。在步驟702,儲存系統的控制器從主機裝置接收第一讀取命令。在步驟704,控制器識別在一或多個乙太網路驅動器中的第一驅動器及在識別的第一驅動器中的第二位址。在步驟706,控制器將第二讀取命令發送到識別的第一驅動器。在步驟708,識別的第一驅動器從識別的第一驅動器中的識別的第二位址讀取資料。在步驟710,識別的第一驅動器向主機裝置發送第一遠端資料傳輸指令,並使主機裝置將從識別的第二位址讀取的
資料寫入到包括第一描述符的位址。在步驟712,回應於將資料寫入到主機裝置的記憶體空間中的第一描述符中包括的位址的完成,識別的第一驅動器向控制器發送確認命令,並且控制器向主機裝置發送狀態回應。其他實施例包含比圖7A所示更多或更少的步驟。
更詳細地,在步驟702中,儲存系統(例如,圖1C中的資料儲存系統302、圖3C中的資料儲存系統352)的控制器(例如,圖2A中的映射控制器304、圖5A中的映射控制器354)可以從主機裝置(例如,圖2A中的主機402、圖5A中的主機502)接收第一讀取命令。第一讀取命令可以包括第一位址和第一描述符,該第一描述符包括主機裝置的記憶體空間中的位址。第一讀取命令可以是NVMeoF讀取命令。在一或多個實施例中,儲存系統可以包括一或多個乙太網路驅動器(例如,圖2B中的乙太網路驅動器312),該乙太網路驅動器包括至少一個支援用NVMeoF封裝的NVMe邏輯區塊位址(LBA)的讀取和寫入的驅動器。在一或多個實施例中,該儲存系統可以包括一或多個乙太網路驅動器(例如,圖5B中的乙太網路開放通道驅動器360),該乙太網路驅動器包括至少一個支援開放通道程式、頁面讀取和區塊的開放通道抹除的乙太網路開放通道驅動器。
在步驟704中,控制器可以使用映射表利用第一位址來識別在一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址。例如,第二位址可
以是乙太網路驅動器312(參見圖2A)中的(LBA,LUN)或乙太網路開放通道驅動器360(參見圖5A)中的((區塊,頁面,驅動器)。在一或多個實施例中,映射表可以是將實體LBA映射到虛擬LBA和虛擬LUN的查找表(LUT)(例如,圖2A中的映射表306)。在一或多個實施例中,映射表可以是查找表(LUT),其確定對應於LBA的實體區塊和頁面的位址(例如,圖5A中的FTL映射356)。
在一或多個實施例中,控制器還可使用映射表、一或多個乙太網路驅動器中的第二驅動器,識別的第二驅動器中的第三位址及主機裝置的記憶體空間中的第二描述符(圖2B和圖5B中的描述符2)以第一位址和第一描述符來識別。例如,第三位址可以是乙太網路驅動器312(見圖2B)中的(LBA2,LUN2)或乙太網路開放通道驅動器360(見圖5B)中的(區塊2,頁面2,驅動器2)。
在步驟706中,控制器可以(例如,圖2B中的映射控制器304、圖5B中的映射控制器354)向識別的第一驅動器發送第二讀取命令。第二讀取命令可以包括第一描述符和識別的第二位址。在一或多個實施例中,第二讀取命令可以是NVMe讀取命令(例如,圖2A中的讀取(LBA,LUN,描述符)。在一或多個實施例中,第二讀取命令可以是開放通道讀取命令(例如,圖5A中的讀取(區塊,頁面,驅動器,描述符))。
在一或多個實施例中,控制器可以進一步將第三讀取命令發送到識別的第二驅動器,該第三讀取命令
包括第二描述符和識別的第三位址。在一或多個實施例中,第三讀取命令可以是NVMe讀取命令。在一或多個實施例中,第三讀取命令可以是開放通道讀取命令。在一或多個實施例中,參考圖2B,第三讀取命令可以是NVMe讀取(LBA2,LUN2,描述符2)。在一或多個實施例中,參考圖5B,第三讀取命令可以是開放通道讀取(區塊2,頁面2,驅動器2,描述符2)。
在步驟708,回應於接收第二讀取命令,識別的第一驅動器可以從識別的第一驅動器(例如,圖2A中的乙太網路驅動器312中的(LBA,LUN)中,或圖5A中的乙太網路開放通道驅動器360中(區塊,頁面,驅動器))中識別的第二位址讀取資料。在一或多個實施例中,回應於接收到第三讀取命令,識別的第二驅動器可以從識別的第二驅動器(例如,圖2B中的乙太網路驅動器312中的(LBA2,LUN2),或圖5B中的乙太網路開放通道驅動器360中的(區塊2,頁面2,驅動器2))中識別的第三位址讀取資料。
在步驟710中,識別的第一驅動器可以向主機裝置發送第一遠端資料傳輸指令,並使主機裝置將從識別的第二位址讀取的資料(圖2A和圖5A中的資料)寫入到在主機裝置的記憶體空間中第一描述符(圖2A和圖5A中的描述符)包括的位址。第一遠端資料傳輸指令可以是RDMA寫入命令。例如,參考圖2A及圖5A,第一遠端資料傳輸指令是RDMA寫入(資料,位址)。
在一或多個實施例中,識別的第二驅動器
(例如,圖2B中的乙太網路驅動器312,圖5B中的乙太網路開放通道驅動器360)可以向主機裝置發送第二遠端資料傳輸指令,並且使主機裝置將從識別的第三位址讀取的資料(圖2B和圖5B中的資料2)寫入至主機裝置的記憶體空間中的第二描述符(圖2B和圖5B中的位址2)中包括的位址。第二遠端資料傳輸指令可以是RDMA寫入命令。例如,參考圖2B和圖5B,第二遠端資料傳輸指令是RDMA寫入(資料2,位址2)。
在步驟712,回應於將資料寫入到主機裝置的記憶體空間中的第一描述符中包括的位址的完成(例如,圖2A和圖5A中的RDMA寫入(資料,位址))識別的第一驅動器可以向控制器發送確認命令(例如,圖2A和圖5A中的確認)。回應於從識別的第一驅動器接收確認命令,控制器可以將狀態回應發送到主機裝置(例如,圖2A和圖5A中的NVMeoF狀態封包)。
在一或多個實施例中,回應於將資料寫入到主機裝置的記憶體空間中第二描述符中包括的位址的完成(例如,圖2B和圖5B中的RDMA寫入(資料2,位址2)),識別的第二驅動器可以向控制器發送確認命令(例如,圖2B和圖5B中的確認)。回應於從識別的第一驅動器接收確認命令和從識別的第二驅動器接收確認命令,控制器可以向主機裝置發送狀態回應(例如,圖2B和圖5B中的NVMeoF狀態封包)。
圖7B示出根據本公開的一或多個實施例的用
於從乙太網路驅動器讀取儲存的資料的方法。在簡要概述中,該方法包括步驟752-760。在步驟752,與主機裝置和一或多個乙太網路驅動器通信的儲存系統的控制器可以從主機裝置接收第一讀取命令。在步驟754,控制器可以確定與主機裝置通信的一或多個乙太網路驅動器中的第一驅動器。在步驟756,控制器可以將第一讀取命令轉譯成第二讀取命令。在步驟758,控制器可以將第二讀取命令發送到第一驅動器。在步驟760,第一驅動器可以獨立於控制器向主機裝置發送第一遠端資料傳輸指令。其他實施例包含比圖7B所示更多或更少的步驟。
更詳細地,在步驟752,與主機裝置(例如,圖2A-圖2B中的主機402或圖5A-圖5B中的主機502)和一或多個乙太網路驅動器(例如,圖2B中的乙太網路驅動器312,圖5B中的乙太網路開放通道驅動器360)通信的儲存系統(例如,圖1C中的資料儲存系統302)的控制器(例如,圖2A-圖2B中的映射控制器304,圖5A-圖5B中的映射控制器354)可以從主機裝置接收第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令)。第一讀取命令可以包括第一組一或多個輸入參數(例如,要從中讀取資料的LBA,及要讀取的資料的長度;參見圖2B或圖5B)和第一組一或多個輸出參數,其指示主機裝置中的一或多個記憶體緩衝器(例如,寫入描述符,該描述符包括要從資料儲存系統讀取的資料的主機的記憶體空間中的位址;請參見圖2B或圖5B)。在一或多個實施例中,第一讀取命令可以是非揮發
性記憶體儲存裝置外接存取(NVMeoF)讀取命令(參見圖2A、圖2B、圖5A和圖5B)。
在步驟754,可以使用一或多個輸入參數中之至少其一和映射表(例如,圖2B中的映射表306或圖5B中的FTL映射356)來確定與主機裝置通信的一或多個乙太網路驅動器中的第一驅動器(例如,圖2B中的第一目標乙太驅動器或圖5B中的驅動器1)。
在步驟756,可以將第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令)轉譯成第二讀取命令(例如,圖2B或圖2B中的讀取(LBA1,LUN1,描述符1)或圖5B中的讀取(區塊1,頁面1,驅動器1,描述符1)。第二讀取命令可包括指示主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數(例如,圖2B或圖5B中的描述符1)。在一或多個實施例中,第一組輸出參數和第二組輸出參數可以彼此相同(例如,在圖2A中,NVMeF讀取命令的“描述符”與至乙太網路驅動器的讀取命令的“描述符”相同)。在一或多個實施例中,第一組輸出參數和第二組輸出參數可以包括記憶體緩衝器描述符的分散聚集列表(例如,圖1D中的描述符450可以是分散聚集列表(SGL)描述符可能指向分散聚集列表中的其他SGL描述符)。
在一或多個實施例中,第一讀取命令(例如,圖2B或圖5B中的NVMeF讀取命令)可以被轉譯成第三讀取命令(例如,圖2B中的讀取(LBA2,LUN2,描述符2)或圖5B中的讀取(區塊2,頁面2,驅動器2,描述符2))。
第三讀取命令可以包括指示主機裝置中的一或多個記憶體緩衝器的一或多個輸出參數的第三集合(例如,圖2B或圖5B中的描述符2)。可以使用一或多個輸入參數中之至少其一和映射表來確定一或多個乙太網路驅動器中的第二驅動器(例如,圖2B中的第二目標乙太驅動器或圖5B中的驅動器2)。第三讀取命令可以被發送到第二驅動器。
在一或多個實施例中,第一組輸出參數、第二組輸出參數和第三組輸出參數可以彼此不同(例如,在圖2B中,NVMeF讀取命令的“描述符”、第一讀取命令的“描述符1”和第二讀取命令的“描述符2”彼此不同)。第一組輸出參數可以包括第一記憶體緩衝器描述符(例如,圖1D中的描述符450),該第一記憶體緩衝器描述符包括主機裝置中的第一記憶體緩衝器位址(例如,圖1D中的位址452)和資料的第一長度(例如,圖1D中的長度453)。第二組輸出參數可以包括第二記憶體緩衝器描述符(例如,圖1D中的描述符450),該第二記憶體緩衝器描述符包括主機裝置中的第二記憶體緩衝器位址和第二資料長度。第三組輸出參數可以包括第三記憶體緩衝器描述符(例如,圖1D中的描述符450),該第三記憶體緩衝器描述符包括主機裝置中的第三記憶體緩衝器位址和第三資料長度。
在步驟758,第二讀取命令可被發送到第一驅動器。
在步驟760,回應於接收第二讀取命令,透過第一驅動器可以將第一遠端資料傳輸指令(例如,圖2B
或圖5B中的RDMA寫入(資料1,位址1))獨立於控制器發送給主機裝置。第一遠端資料傳輸指令可以包括從第一驅動器讀取的儲存資料(例如,圖2B或圖5B中的資料1),以使主機裝置將從第一驅動器讀取的儲存資料寫入透過第二組一或多個輸出參數(例如,圖2B或圖5B中的描述符1)指示的一或多個記憶體緩衝器(例如,圖2B或圖5B中的位址1)。在一或多個實施例中,第一遠端資料傳輸指令可以是遠端直接記憶體存取(RDMA)寫入命令(參見圖2A、圖2B、圖5A和圖5B)。
在一或多個實施例中,回應於接收第三讀取命令,可以將第二遠端資料傳輸指令(例如,圖2B或圖5B中的RDMA寫入(資料2,位址2))獨立於控制器發送給主機裝置。第二遠端資料傳輸指令可以包括從第二驅動器讀取的資料(例如,圖2B或圖5B中的資料2)以使主機裝置將從第二驅動器讀取的資料寫入由第三組一或多個輸出參數(例如,圖2B或圖5B中的描述符2)指示的一或多個記憶體緩衝器(例如,圖2B或圖5B中的位址2)。
圖8A示出根據本公開的一或多個實施例的用於將資料寫入乙太網路驅動器的方法。在簡要概述中,該方法包括步驟802-816。在步驟802,儲存系統的控制器從主機裝置接收第一寫入命令。在步驟804,控制器識別一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址。在步驟806,控制器可以根據區塊分配策略來分配新區塊。在步驟808,控制器將第二寫入命令
發送到識別的第一驅動器。在步驟810,識別的第一驅動器向主機裝置發送第一遠端資料傳輸指令,並使主機裝置從主機裝置的記憶體空間中的第一描述符中包括的位址讀取資料,並在識別的第一驅動器中識別的第二位址處遠端寫入從包括在第一描述符中的位址讀取的資料。在步驟812,回應於從包括在第一描述符中的位址讀取資料的完成,識別的第一驅動器向控制器發送確認命令。在步驟814,控制器可以用新的位置更新映射表。在步驟816,回應於從識別的第一驅動器接收確認命令,控制器將狀態回應發送到主機裝置。其他實施例包含比圖8A所示更多或更少的步驟。
更詳細地,在步驟802,儲存系統(例如,圖1C中的資料儲存系統302、圖3C中的資料儲存系統352)的控制器(例如,圖2C中的映射控制器304,圖5C中的映射控制器354)可以從主機裝置(例如,圖2C中的主機402、圖5C中的主機502)接收第一寫入命令。第一寫入命令可以包括第一位址(例如,圖2C和圖5C中的LBA)和第一描述符(例如,圖2C和圖5C中的描述符)到主機裝置的記憶體空間中的位址。第一寫入命令可以是NVMeoF寫入命令。在一或多個實施例中,儲存系統可以包括一或多個乙太網路驅動器(例如,圖2D中的乙太網路驅動器312),該乙太網路驅動器包括至少一個支援用NVMeoF封裝的NVMe讀取和寫入邏輯區塊位址(LBA)的驅動器。在一或多個實施例中,該儲存系統可以包括一或多個乙太網路驅動器(例如,圖
5D中的乙太網路開放通道驅動器360),該乙太網路驅動器包括至少一個支援開放通道程式、讀取頁面和開放通道抹除區塊的乙太網路開放通道驅動器。
在步驟804,控制器可以使用映射表利用第一位址來識別一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址。例如,第二位址可以是乙太網路驅動器312(參見圖2C)中的(LBA,LUN)或乙太網路開放通道驅動器360(參見圖5C)中的(區塊,頁面,驅動器)。在一或多個實施例中,映射表可以是將實體LBA映射到虛擬LBA和虛擬LUN(例如,圖2C中的映射表306)的查找表(LUT)。在一或多個實施例中,映射表可以是查找表(LUT),其確定與LBA相對應的實體區塊和頁面的位址(例如,圖5C中的FTL映射356)。
在一或多個實施例中,控制器還可使用映射表,透過第一位址和第一描述符來識別一或多個乙太網路驅動器中的第二驅動器,識別的第二驅動器中的第三位址及主機裝置的記憶體空間中的位址包括的第二描述符(圖2D和圖5D中的描述符2)。例如,第三位址可以是乙太網路驅動器312(見圖2D)中的(LBA2,LUN2)或乙太網路開放通道驅動器360(見圖5D)中的(區塊2,頁面2,驅動器2)。
在步驟806,控制器(例如,圖5C中的映射控制器354)可以根據區塊分配策略(例如,自由區塊中的先進先出(FIFO),用於延長快閃記憶體使用壽命或更佳利用儲存的策略)來分配新區塊,並將分配的區塊的位址確定
為要寫入的資料的實體位置。控制器可以使用映射表(例如,FTL映射356)利用分配的區塊的位址來識別一或多個乙太網路驅動器中的第一驅動器及識別的第一驅動器中的第二位址(例如,在圖5C中的乙太網路開放通道驅動器360中的(區塊,頁面,驅動器,描述符))。
在步驟808中,控制器可以將第二寫入命令發送到識別的第一驅動器。第二寫入命令可以包括第一描述符和識別的第二位址。在一或多個實施例中,第二寫入命令可以是NVMe寫入命令(例如,圖2C中的寫入(LBA,LUN,描述符))。在一或多個實施例中,第二寫入命令可以是開放通道程式化命令(例如,圖5C中的程式(區塊,頁面,驅動器,描述符))。
在一或多個實施例中,控制器可以進一步將第三寫入命令發送到識別的第二驅動器。第三寫入命令可以包括第二描述符和識別的第三位址。在一或多個實施例中,第三寫入命令可以是NVMe寫入命令。在一或多個實施例中,第三寫入命令可以是開放通道程式化命令。在一或多個實施例中,參考圖2D,第三寫入命令可以是NVMe寫入(LBA2,LUN2,描述符2)。在一或多個實施例中,參考圖5D,第三寫入命令可以是開放通道程式(區塊2,頁面2,驅動器2,描述符2)。
在步驟810,回應於接收第二寫入命令,識別的第一驅動器(例如,圖2C中的乙太網路驅動器312,圖5C中的乙太網路開放通道驅動器360)可以向主機裝置發送
第一遠端資料傳輸指令,並使主機裝置從主機記憶體空間中的第一描述符中包含的位址(圖2C和圖5C中的位址)讀取資料(圖2C和圖5C中的資料)並在識別的第一驅動器中的識別的第二位址遠端寫入從主機裝置的記憶體空間中的第一描述符中包含的位址讀取的資料。第一遠端資料傳輸指令可以是RDMA讀取命令。例如,參考圖2C與圖5C,第一遠端資料傳輸指令是RDMA讀取(資料,位址)。
在一或多個實施例中,回應於接收第三寫入命令,識別的第二驅動器(例如,圖2D中的乙太網路驅動器312,圖5D中的乙太網路開放通道驅動器360)可以向主機裝置的發送第二遠端資料傳輸指令,並使主機裝置從主機裝置的記憶體空間中第二描述符(圖2D和圖5D中的位址2)中包含的位址讀取資料(圖2D和圖5D中的資料2)並在識別的第二驅動器中的識別的第三位址處,遠端寫入從主機裝置的記憶體空間中第二描述符中包含的位址讀取的資料。第二遠端資料傳輸指令可以是RDMA讀取命令。例如,參考圖2D和圖5D,第二遠端資料傳輸指令是RDMA讀取(資料2,位址2)。
在步驟812,回應於從在主機裝置的記憶體空間中的第一描述符中包括的位址讀取資料(例如,圖2C和圖5C中的RDMA讀取(資料,位址))的完成,識別的第一驅動器可以向控制器發送確認命令(例如,圖2C和圖5C中的確認)。在一或多個實施例中,回應於從在主機裝置的記憶體空間中的第二描述符中包括的位址中讀取資料(例
如,圖2D和圖5D中的RDMA讀取(資料2,位址2))的完成,識別的第二驅動器可以向控制器發送確認命令(例如,圖2D和圖5D中的確認)。
在步驟814,控制器(例如,圖5C中的映射控制器354)可以用新的位置(例如,新的區塊和頁面)來更新映射表(例如,圖5C中的FTL映射356)。例如,映射控制器354可以使舊位置無效並且設置新位置。
在步驟816中,回應於從識別的第一驅動器接收到確認命令,控制器可以將狀態回應(例如,圖2C和圖5C中的NVMeoF狀態封包)發送到主機裝置。在一或多個實施例中,回應於接收來自識別的第一驅動器的確認命令和來自識別的第二驅動器的確認命令,控制器可以發送狀態回應(例如,圖2D和圖5D中的NVMeoF狀態封包)到主機裝置。
圖8B示出根據本公開的一或多個實施例的用於將資料寫入乙太網路驅動器的方法。在簡要概述中,該方法包括步驟852-860。在步驟852,與控制器通信的主機裝置和一或多個乙太網路驅動器可以從主機裝置接收第一寫入命令。在步驟854,控制器可以確定一或多個乙太網路驅動器中的第一驅動器。在步驟856,控制器可以將第一寫入命令轉譯成第二寫入命令。在步驟858,控制器可以將第二寫入命令發送到第一驅動器。在步驟860,第一驅動器可以向主機裝置發送第一遠端資料傳輸指令。其他實施例包含比圖8B所示更多或更少的步驟。
更詳細地,在步驟852,與主機裝置(例如,圖2C-圖2D中的主機402或圖5C-圖5D中的主機502)和一或多個乙太網路驅動器(例如,圖5C-圖5D中的乙太網路驅動器312,圖5C-圖5D中的乙太網路開放通道驅動器360)通信的控制器(例如,圖2C-圖2D中的映射控制器304,圖5C-圖5D中的映射控制器354)可以從主機裝置接收第一寫入命令(例如,圖2D或圖5D中的NVMeF寫入命令)。在一或多個實施例中,第一寫入命令可以包括第一組一或多個輸入參數(例如,要向其寫入資料的LBA,及要寫入的資料的長度;參見圖2D或圖5D)和指示主機中一或多個記憶體緩衝器的第一組一或多個輸出參數(例如,描述符,該描述符包括要從中讀取資料的主機的記憶體空間中的位址;請參見圖2D或圖5D)。在一或多個實施例中,第一寫入命令可以是NVMeoF寫入命令(參見圖2C、圖2D、圖5C和圖5D)。
在步驟854,可以使用一或多個輸入參數之至少其一和映射表(例如,圖2D中的映射表306或圖5D中的FTL映射356)來確定與主機裝置通信的一或多個乙太網路驅動器中的第一驅動器(例如,圖2D中的第一目標乙太驅動器或圖5D中的驅動器1)。
在步驟856,可以將第一寫入命令(例如,圖2D或圖5D中的NVMeF寫入命令)轉譯成第二寫入命令(例如,圖2D中的寫入(LBA1,LUN1,描述符1)或圖5D中的程式(區塊1,頁面1,驅動器1,描述符1)。在一或多個實施例中,第二寫入命令可以包括指示主機裝置中的一或多個
記憶體緩衝器的第二組一或多個輸出參數(例如,圖2D或圖5D中的描述符1)。
在步驟858,第二寫入命令可以被發送到第一驅動器。
在步驟860,回應於接收第二寫入命令,第一遠端資料傳輸指令(例如,圖2D或圖5D中的RDMA讀取(資料1,位址1))獨立於控制器被發送到主機裝置。在一或多個實施例中,第一遠端資料傳輸指令可以使主機裝置從由第二組一或多個輸出參數(例如,圖2D或圖5D中的描述符1)指示的一或多個記憶體緩衝器(例如,圖2D或圖5D中的位址1)讀取資料(例如,圖2D或圖5D中的資料1),並將讀取資料從一或多個記憶體緩衝器遠端寫入到第一驅動器。在一或多個實施例中,第一遠端資料傳輸指令可以是RDMA讀取命令。
圖9示出根據本公開的一或多個實施例的用於廢料收集的方法。在簡要概述中,該方法包括步驟902-916。在步驟902,儲存系統的控制器接收廢料收集命令,該廢料收集命令包括識別一或多個乙太網路驅動器中的第一驅動器的第一驅動器識別符。在步驟904,控制器在一或多個乙太網路驅動器中的目標驅動器中的目標位址處分配自由區塊。在步驟906,控制器可以識別在第一驅動器中的源位址。在步驟908,控制器將移動命令發送到第一驅動器。在步驟910,第一驅動器從第一驅動器中識別的源位址讀取資料。在步驟912,第一驅動器可以將程式化
命令發送到目標驅動器,且使目標驅動器將從源位址的資料複製到自由區塊。在步驟914,回應於將資料複製到自由區塊的完成,第一驅動器可以向控制器發送確認命令。在步驟916,回應於從第一驅動器接收確認命令,控制器用目標位址更新映射表。在步驟918,控制器向第一驅動器發送抹除命令,並使第一驅動器抹除識別的源位址處的資料。其他實施例包含比圖9所示更多或更少的步驟。
更詳細地,在步驟902,儲存系統的控制器(例如,圖6A中的映射控制器606)可以執行廢料收集命令,該廢料收集命令包括識別一或多個乙太網路驅動器(例如,圖6A中的乙太網路開放通道驅動器601和602)中的第一驅動器(例如,圖6A中的乙太網路開放通道驅動器601)的第一驅動器識別符。一或多個乙太網路驅動器可包括至少一個乙太網路開放通道驅動器,其支援開放通道程式和頁面讀取,及開放通道的移動和區塊的抹除。
在步驟904中,控制器可以使用映射表(例如,圖6A中的FTL映射608)分配在一或多個乙太網路驅動器中的目標驅動器(例如,圖6A中的乙太網路開放通道驅動器602)中的目標位址(例如,目標區塊號,目標頁面號,目標驅動器號)處的自由區塊。
在步驟906,控制器可以使用映射表利用第一驅動器識別符來識別第一驅動器中的源位址(例如,源區塊號,源頁面號,源驅動器號)。
在步驟908,控制器可以將移動命令發送到
第一驅動器(例如,圖6A中的乙太網路開放通道驅動器601)。移動命令可以包括源位址、目標位址及識別目標驅動器的識別符。移動命令可以是開放通道移動命令。
在步驟910,回應於接收移動命令,第一驅動器可以從第一驅動器中的識別的源位址讀取資料。
在步驟912,第一驅動器(例如,圖6A中的乙太網路開放通道驅動器601)可以將程式化命令發送到目標驅動器(例如,圖6A中的乙太網路開放通道驅動器602),並且使目標驅動器將從識別的源位址讀取的資料複製到目標驅動器中目標位址處的自由區塊。該程式命令可以是開放通道程式命令。在一或多個實施例中,第一驅動器作為啟動器以目標區塊號、目標頁面和從源區塊讀取的資料發送開放通道程式化命令到目標驅動器。
在步驟914,回應於將資料複製到自由區塊的完成,第一驅動器可以將確認命令發送到控制器(例如,圖6A中的映射控制器606)。
在步驟916,回應於從第一驅動器接收確認命令,控制器可以用目標位址來更新映射表(例如,圖6A中的FTL映射608)。例如,映射控制器606可以使舊位置無效且設置新位置。
在步驟918,回應於用目標位址更新映射表的完成,控制器可以向第一驅動器發送抹除命令,並使第一驅動器抹除在第一驅動器中識別的源位址處的資料。抹除命令可以是開放通道抹除命令。在一或多個實施例中,
可在抹除之後在映射表中標記抹除的區塊。
圖10示出根據本公開的一或多個實施例的用於資源解除分配的方法。在簡要概述中,該方法包括步驟1002-1006。在步驟1002,儲存系統的控制器接收包括第一位址的解除分配命令。在步驟1004,控制器在一或多個乙太網路驅動器中的驅動器中的第一位址處解除資源分配。在步驟1006,回應於解除分配資源,控制器更新映射表以指示第一位址處的資源不再包含有效資料或無效。其他實施例包含比圖10所示更多或更少的步驟。
更詳細地,在步驟1002,儲存系統(例如,圖6B中的乙太網路開放通道驅動器JBOD或JBOF 610)的控制器(例如,圖6B中的映射控制器606)接收包括第一位址的解除分配命令(例如,圖6B中的LBA)。在一或多個實施例中,儲存系統的控制器可以從主機(例如,圖6B中的主機620)、乙太網路驅動器(例如,圖1C中的乙太網路驅動器312)或乙太網路開放通道驅動器(例如,圖6B中的乙太網路開放通道驅動器601、602)之一接收解除分配命令。在一或多個實施例中,解除分配命令可以是修整命令或取消映射命令,以請求解除分配與邏輯位址或邏輯位址範圍相關聯的資源。
在步驟1004,控制器使用映射表(例如,圖6B中的FTL映射608)在一或多個乙太網路驅動器中的驅動器中的第一位址處解除分配資源。在一或多個實施例中,資源可以是要抹除或釋放的區塊。在一或多個實施例中,
第一位址可以是與要抹除或釋放的區塊相關聯的邏輯位址或邏輯位址範圍。例如,解除分配命令可以包括要抹除或釋放的區塊的邏輯位址或邏輯位址範圍(例如,LBA或LBA(多個)或LBA範圍,其中該範圍可以表示為例如開始LBA和結束LBA,或開始LBA和長度)。在一或多個實施例中,一或多個乙太網路驅動器可包括至少一個乙太網路開放通道驅動器。在一或多個實施例中,第一位址處的資源可以透過返回資源到自由資源池(例如,自由區塊池)來解除分配。
在步驟1004,回應於解除分配資源,控制器可以更新映射表以指示第一位址處的資源不再包含有效資料或無效。在一或多個實施例中,可以透過將映射表中的條目標記為不再包含有效資料或無效來更新映射表。在一或多個實施例中,可以透過從映射表中刪除包括被解除分配的區塊的LBA的條目來更新映射表。
儘管已經參考本公開的特定實施例描述和說明本公開,但是這些描述和說明不是限制性的。本領域技術人員應當理解,在不脫離由所附申請專利範圍限定的本公開的真實精神和範圍的情況下,可以進行各種改變且可以替換等同物。圖式不一定按比例繪製。由於製造製程和公差的原因,在本公開中的藝術表現形式與實際裝置之間可能存在區別。可能存在未具體示出的本公開的其他實施例。說明書和附圖應被認為是說明性的而不是限制性的。可以進行修改以使特定情況、材料、物質的組成、方法或
製程適應於本公開的目的、精神和範圍。所有這些修改旨在落入所附申請專利範圍的範圍內。儘管已經參考以特定順序執行的特定操作描述本文公開的方法,但是應當理解,在不脫離本發明的教導的情況下,可以將這些操作組合、細分或重新排序以形成等效方法。因此,除非在此特別指出,否則操作的順序和分組不是限制性的。
302:資料儲存系統
304:映射控制器
306:映射表
308:乙太網路交換器
310:上行鏈路資料路徑
312:乙太網路驅動器
314:乙太網路NIC
316:控制器
318:NAND
Claims (20)
- 一種用於讀取儲存的資料的系統,包括:一或多個乙太網路驅動器,被配置為通信地連接到主機裝置;及控制器,與該主機裝置和該一或多個乙太網路驅動器通信,該控制器被配置為:從該主機裝置接收第一讀取命令,該第一讀取命令包括第一組一或多個輸入參數和指示在該主機裝置中的一或多個記憶體緩衝器的第一組一或多個輸出參數;使用一或多個輸入參數中之至少其一和映射表來確定該一或多個乙太網路驅動器中的第一驅動器;將該第一讀取命令轉譯成第二讀取命令,該第二讀取命令包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數;及將該第二讀取命令發送到該第一驅動器,其中,該第一驅動器被配置為:回應於接收該第二讀取命令,獨立於該控制器向該主機裝置發送第一遠端資料傳輸指令,該第一遠端資料傳輸指令包括從該第一驅動器讀取的儲存資料,以使該主機裝置將從該第一驅動器讀取的該儲存資料寫入至由該第二組一或多個輸出參數指示的該一或多個記憶體緩衝器。
- 如請求項1所述的用於讀取儲存的資料的系統,其中 該第一組輸出參數和該第二組輸出參數是彼此相同的。
- 如請求項1所述的用於讀取儲存的資料的系統,其中,該控制器進一步被配置為:將該第一讀取命令轉譯為第三讀取命令,該第三讀取命令包括指示該主機裝置中的一或多個記憶體緩衝器的第三組一或多個輸出參數;確定使用該一或多個輸入參數中之至少其一和該映射表的該一或多個乙太網路驅動器之間的第二驅動器;及發送該第三讀取命令到該第二驅動器,其中該第二驅動器被配置為:回應於接收該第三讀取命令,將第二遠端資料傳輸指令獨立於該控制器發送到該主機裝置,該第二遠端資料傳輸指令包括從該第二驅動器讀取的資料,以使該主機裝置將從該第二驅動器讀取的該資料驅動寫入至由該第三組一或多個輸出參數的指示的該一或多個記憶體緩衝器。
- 如請求項3所述的用於讀取儲存的資料的系統,其中,該第一組輸出參數、第二組輸出參數和第三組輸出參數是彼此不同的,該第一組輸出參數包括第一記憶體緩衝器描述符,該第一記憶體緩衝器描述符包括該主機裝置中的第一記憶體緩衝器位址和第一資料長度,該第二組輸出參數包括第二記憶體緩衝器描述符,該 第二記憶體緩衝器描述符包括該主機裝置中的第二記憶體緩衝器位址和第二資料長度,及該第三組輸出參數包括第三記憶體緩衝器描述符,該第三記憶體緩衝器描述符包括該主機裝置中的第三記憶體緩衝器位址和第三資料長度。
- 如請求項1所述的用於讀取儲存的資料的系統,其中,該第一組輸出參數和該第二組輸出參數包括記憶體緩衝器描述符的分散聚集列表。
- 如請求項1所述的用於讀取儲存的資料的系統,其中,該第一讀取命令是非揮發性記憶體儲存裝置外接存取(Non-Volatile Memory Express over Fabric,NVMeoF)讀取命令,及該第一遠端資料傳輸指令是遠端直接記憶體存取(remote direct memory access,RDMA)寫入命令。
- 一種儲存資料的系統,包括:一或多個乙太網路驅動器,被配置為通信地連接到主機裝置;及控制器,與該主機裝置和該一或多個乙太網路驅動器通信,該控制器被配置為:從該主機裝置接收第一寫入命令,該第一寫入命令包 括第一組一或多個輸入參數和指示在該主機中的一或多個記憶體緩衝器的第一組一或多個輸出參數;使用一或多個輸入參數中之至少其一和映射表來確定該一或多個乙太網路驅動器中的第一驅動器;將該第一寫入命令轉譯成第二寫入命令,該第二寫入命令包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數;及將該第二寫入命令發送到該第一驅動器,其中,該第一驅動器被配置為:回應於接收該第二寫入命令,獨立於該控制器向該主機裝置發送第一遠端資料傳輸指令,該第一遠端資料傳輸指令使該主機裝置從由該第二組一或多個輸出參數指示的該一或多個記憶體緩衝器讀取資料,且從該一或多個記憶體緩衝器遠端將該讀取資料寫入至該第一驅動器。
- 如請求項7所述的儲存資料的系統,其中,該第一寫入命令是NVMeoF寫入命令,且該第一遠端資料傳輸指令是RDMA讀取命令。
- 一種用於讀取儲存資料的方法,包括:透過與主機裝置和一或多個乙太網路驅動器通信的儲存系統的控制器,從該主機裝置接收第一讀取命令,該第一讀取命令包括第一組一或多個輸入參數和指示在該主機裝置中的一或多個記憶體緩衝器的第一組一或多個輸出參 數;透過該控制器,使用該一或多個輸入參數中之至少其一和映射表以確定與該主機裝置通信的一或多個乙太網路驅動器中的第一驅動器;透過該控制器,將該第一讀取命令轉譯為第二讀取命令,該第二讀取命令包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數;透過該控制器,將該第二讀取命令發送至該第一驅動器;及回應於接收該第二讀取命令,透過該第一驅動器,獨立於該控制器發送第一遠端資料傳輸指令至該主機裝置,該第一遠端資料傳輸指令包括從該第一驅動器讀取的儲存資料,以使該主機裝置將從該第一驅動器讀取的該儲存資料寫入到透過該第二組一或多個輸出參數表示的該一或多個記憶體緩衝器。
- 如請求項9所述的用於讀取儲存資料的方法,其中,該第一組輸出參數和該第二組輸出參數是彼此相同的。
- 如請求項9所述的用於讀取儲存資料的方法,還包括:透過該控制器,將該第一讀取命令轉譯為第三讀取命令,該第三讀取命令包括指示該主機裝置中的一或多個記憶體緩衝器的第三組一或多個輸出參數; 透過該控制器,確定使用該一或多個輸入參數中之至少其一和該映射表的該一或多個乙太網路驅動器之間的第二驅動器;透過該控制器,發送該第三讀取命令到該第二驅動器;及回應於接收該第三讀取命令,透過該控制器,將第二遠端資料傳輸指令獨立於該控制器發送到該主機裝置,該第二遠端資料傳輸指令包括從該第二驅動器讀取的資料,以使該主機裝置將從該第二驅動器讀取的該資料驅動寫入至由該第三組一或多個輸出參數的指示的該一或多個記憶體緩衝器。
- 如請求項11所述的用於讀取儲存資料的方法,其中,該第一組輸出參數、第二組輸出參數和第三組輸出參數是彼此不同的,該第一組輸出參數包括第一記憶體緩衝器描述符,該第一記憶體緩衝器描述符包括該主機裝置中的第一記憶體緩衝器位址和第一資料長度,該第二組輸出參數包括第二記憶體緩衝器描述符,該第二記憶體緩衝器描述符包括該主機裝置中的第二記憶體緩衝器位址和第二資料長度,及該第三組輸出參數包括第三記憶體緩衝器描述符,該第三記憶體緩衝器描述符包括該主機裝置中的第三記憶體緩衝器位址和第三資料長度。
- 如請求項9所述的用於讀取儲存資料的方法,其中,該第一組輸出參數和該第二組輸出參數包括記憶體緩衝器描述符的分散聚集列表。
- 如請求項9所述的用於讀取儲存資料的方法,其中,該第一讀取命令是非揮發性記憶體儲存裝置外接存取(Non-Volatile Memory Express over Fabric,NVMeoF)讀取命令,及該第一遠端資料傳輸指令是遠端直接記憶體存取(remote direct memory access,RDMA)寫入命令。
- 一種儲存資料的方法,包括:透過與主機裝置和一或多個乙太網路驅動器通信的控制器,從該主機裝置接收第一寫入命令,該第一寫入命令包括第一組一或多個輸入參數和指示在該主機中的一或多個記憶體緩衝器的第一組一或多個輸出參數;透過該控制器,使用一或多個輸入參數中之至少其一和映射表來確定與主機裝置通信的該一或多個乙太網路驅動器中的第一驅動器;透過該控制器,將該第一寫入命令轉譯成第二寫入命令,該第二寫入命令包括指示該主機裝置中的一或多個記憶體緩衝器的第二組一或多個輸出參數;透過該控制器,將該第二寫入命令發送到該第一驅動 器,回應於接收該第二寫入命令,透過該控制器,獨立於該控制器向該主機裝置發送第一遠端資料傳輸指令,該第一遠端資料傳輸指令使主機裝置從由該第二組一或多個輸出參數指示的該一或多個記憶體緩衝器讀取資料,且從該一或多個記憶體緩衝器遠端將該讀取資料寫入至該第一驅動器。
- 如請求項15所述的儲存資料的方法,其中,該第一寫入命令是NVMeoF寫入命令,且該第一遠端資料傳輸指令是RDMA讀取命令。
- 一種在儲存系統中進行廢料收集的方法,包括:透過儲存系統的控制器,執行廢料收集命令,該廢料收集命令包括識別一或多個乙太網路驅動器中的第一驅動器的第一驅動器識別符;透過該控制器,使用映射表以該第一驅動器識別符分配在一或多個乙太網路驅動器中的目標驅動器中的目標位址處的自由區塊;透過該控制器,使用映射表以該第一驅動器識別符,識別該第一驅動器中的源位址;透過該控制器,發送移動命令至該第一驅動器,該移動命令包括該源位址、該目標位址和該目標驅動器;回應於接收該移動命令,透過該第一驅動器,從該第 一驅動器中該識別的源位址中讀取資料;及透過該第一驅動器,發送程式命令至該目標驅動器,並使該目標驅動器將從識別的源位址讀取的該資料複製到該目標驅動器中該目標位址處的該自由區塊。
- 如請求項17所述的在儲存系統中進行廢料收集的方法,其中,該一或多個乙太網路驅動器包括至少一個乙太網路開放通道驅動器,該乙太網路開放通道驅動器支援開放通道程式和頁面讀取、及開放通道移動和區塊抹除,該移動命令是開放通道移動命令,且該程式命令是開放通道程式命令。
- 如請求項17所述的在儲存系統中進行廢料收集的方法,進一步包括:回應於將該資料複製到該自由區塊的完成,透過該第一驅動器,發送確認命令至該控制器;回應於從該第一驅動器接收該確認命令,透過該控制器,以該目標位址更新該映射表;及回應於以該目標位址更新該映射表的完成,透過該控制器,發送抹除命令至該第一驅動器且使該第一驅動器在該第一驅動器的該識別的源位址處抹除該資料。
- 如請求項19所述的在儲存系統中進行廢料收集的方 法,其中,該抹除命令是開放通道抹除命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/130,729 | 2018-09-13 | ||
US16/130,729 US11188496B2 (en) | 2018-09-13 | 2018-09-13 | System and method for storing data using ethernet drives and ethernet open-channel drives |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202021318A TW202021318A (zh) | 2020-06-01 |
TWI810363B true TWI810363B (zh) | 2023-08-01 |
Family
ID=69774102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108132792A TWI810363B (zh) | 2018-09-13 | 2019-09-11 | 使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11188496B2 (zh) |
CN (1) | CN112930520B (zh) |
TW (1) | TWI810363B (zh) |
WO (1) | WO2020053744A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200085967A (ko) * | 2019-01-07 | 2020-07-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US11240061B2 (en) * | 2019-06-03 | 2022-02-01 | Progress Rail Locomotive Inc. | Methods and systems for controlling locomotives |
US10958527B2 (en) * | 2019-06-12 | 2021-03-23 | International Business Machines Corporation | Transaction fencing in a multi-domain network |
US11487690B2 (en) * | 2019-06-28 | 2022-11-01 | Hewlett Packard Enterprise Development Lp | Universal host and non-volatile memory express storage domain discovery for non-volatile memory express over fabrics |
KR20210017401A (ko) * | 2019-08-08 | 2021-02-17 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법과, 이를 위한 컨트롤러 |
CN112988623B (zh) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
US11733918B2 (en) | 2020-07-28 | 2023-08-22 | Samsung Electronics Co., Ltd. | Systems and methods for processing commands for storage devices |
US11789634B2 (en) | 2020-07-28 | 2023-10-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing copy commands |
US11561698B2 (en) * | 2021-04-20 | 2023-01-24 | EMC IP Holding Company LLC | NVMEoF flow control from initiator based on transaction latency |
US20220391348A1 (en) * | 2021-06-04 | 2022-12-08 | Microsoft Technology Licensing, Llc | Userspace networking with remote direct memory access |
US11809711B2 (en) | 2022-01-18 | 2023-11-07 | Silicon Motion, Inc. | Flash memory scheme capable of decreasing waiting time of trim command |
US20230385228A1 (en) * | 2022-05-27 | 2023-11-30 | Nvidia Corporation | Remote promise and remote future for downstream components to update upstream states |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090292862A1 (en) * | 2008-05-21 | 2009-11-26 | Hitachi, Ltd. | Flash memory module and storage system |
TW201738763A (zh) * | 2016-04-22 | 2017-11-01 | 三星電子股份有限公司 | 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 |
CN107430585A (zh) * | 2016-01-29 | 2017-12-01 | 慧与发展有限责任合伙企业 | 远程直接存储器访问 |
US20170357610A1 (en) * | 2016-06-14 | 2017-12-14 | Kazan Networks Corporation | Split nvme ssd implementation using nvme over fabrics protocol |
US9934173B1 (en) * | 2016-02-24 | 2018-04-03 | Xilinx, Inc. | Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8055816B2 (en) * | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8539008B2 (en) * | 2011-04-29 | 2013-09-17 | Netapp, Inc. | Extent-based storage architecture |
US9959203B2 (en) * | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
US9712619B2 (en) * | 2014-11-04 | 2017-07-18 | Pavilion Data Systems, Inc. | Virtual non-volatile memory express drive |
CN105024777B (zh) * | 2015-07-29 | 2017-10-24 | 上海新时达电气股份有限公司 | 基于EtherCAT实时以太网的伺服驱动器同步方法 |
CN105049309B (zh) * | 2015-07-29 | 2018-03-09 | 上海新时达电气股份有限公司 | 基于powerlink实时以太网的伺服驱动器同步方法 |
US11416046B2 (en) * | 2015-11-05 | 2022-08-16 | Henkel Ag & Co. Kgaa | Compositions having a matrix and encapsulated phase change materials dispersed therein, and electronic devices assembled therewith |
JP2018041153A (ja) * | 2016-09-05 | 2018-03-15 | 東芝メモリ株式会社 | ストレージシステムおよび入出力処理方法 |
US20180173619A1 (en) * | 2016-12-21 | 2018-06-21 | Sandisk Technologies Llc | System and Method for Distributed Logical to Physical Address Mapping |
US10296473B2 (en) * | 2017-03-24 | 2019-05-21 | Western Digital Technologies, Inc. | System and method for fast execution of in-capsule commands |
US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
US20190087111A1 (en) * | 2017-09-15 | 2019-03-21 | Seagate Technology Llc | Common logical block addressing translation layer for a storage array |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10884849B2 (en) * | 2018-04-27 | 2021-01-05 | International Business Machines Corporation | Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data |
US11422726B1 (en) * | 2018-05-01 | 2022-08-23 | Amazon Technologies, Inc. | Efficient storage device data move operation based on priority of garbage collection command |
US10564872B2 (en) * | 2018-06-29 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for dynamic allocation to a host of memory device controller memory resources |
-
2018
- 2018-09-13 US US16/130,729 patent/US11188496B2/en active Active
-
2019
- 2019-09-09 CN CN201980069400.9A patent/CN112930520B/zh active Active
- 2019-09-09 WO PCT/IB2019/057594 patent/WO2020053744A1/en active Application Filing
- 2019-09-11 TW TW108132792A patent/TWI810363B/zh active
-
2021
- 2021-11-29 US US17/537,126 patent/US11726948B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090292862A1 (en) * | 2008-05-21 | 2009-11-26 | Hitachi, Ltd. | Flash memory module and storage system |
CN107430585A (zh) * | 2016-01-29 | 2017-12-01 | 慧与发展有限责任合伙企业 | 远程直接存储器访问 |
US9934173B1 (en) * | 2016-02-24 | 2018-04-03 | Xilinx, Inc. | Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric |
TW201738763A (zh) * | 2016-04-22 | 2017-11-01 | 三星電子股份有限公司 | 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 |
US20170357610A1 (en) * | 2016-06-14 | 2017-12-14 | Kazan Networks Corporation | Split nvme ssd implementation using nvme over fabrics protocol |
Also Published As
Publication number | Publication date |
---|---|
US11726948B2 (en) | 2023-08-15 |
CN112930520B (zh) | 2023-08-15 |
US20220083497A1 (en) | 2022-03-17 |
US20200089648A1 (en) | 2020-03-19 |
CN112930520A (zh) | 2021-06-08 |
US11188496B2 (en) | 2021-11-30 |
TW202021318A (zh) | 2020-06-01 |
WO2020053744A1 (en) | 2020-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI810363B (zh) | 使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法 | |
US11269518B2 (en) | Single-step configuration of storage and network devices in a virtualized cluster of storage resources | |
WO2018102967A1 (zh) | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和*** | |
KR101841997B1 (ko) | 순응적 존속을 위한 시스템, 방법 및 인터페이스 | |
US7272687B2 (en) | Cache redundancy for LSI raid controllers | |
US9395921B2 (en) | Writing data using DMA by specifying a buffer address and a flash memory address | |
US8898376B2 (en) | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements | |
US8762789B2 (en) | Processing diagnostic requests for direct block access storage devices | |
CN107122127B (zh) | 向存储硬件的存储操作卸载 | |
US7370174B2 (en) | Method, system, and program for addressing pages of memory by an I/O device | |
US20050144223A1 (en) | Bottom-up cache structure for storage servers | |
US9092426B1 (en) | Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing | |
US20120011340A1 (en) | Apparatus, System, and Method for a Virtual Storage Layer | |
US10684947B2 (en) | Increasing high performance data storage utilization by reducing write operations | |
TW201714076A (zh) | 具有介面控制機構之電子系統及其操作方法 | |
US8527732B2 (en) | Storage system and method of controlling storage system | |
US20230280917A1 (en) | Storage system and method of operating the same | |
JP2019045955A (ja) | 記憶装置およびデータの配置の最適化方法 | |
TW202333059A (zh) | 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 | |
JP7403554B2 (ja) | 情報処理装置 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers |