CN109271096B - Nvme存储扩展*** - Google Patents
Nvme存储扩展*** Download PDFInfo
- Publication number
- CN109271096B CN109271096B CN201711459254.XA CN201711459254A CN109271096B CN 109271096 B CN109271096 B CN 109271096B CN 201711459254 A CN201711459254 A CN 201711459254A CN 109271096 B CN109271096 B CN 109271096B
- Authority
- CN
- China
- Prior art keywords
- pci
- expansion
- nvme
- port
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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/0658—Controller construction 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请提供了NVME存储扩展***。本申请中,限定任何一个NVME SSD扩展框会同时并行和2个或多个NVME控制器相连接,使得任何一NVME SSD扩展框的业务分散至2个或多个NVME控制器的业务单元进行处理,防止紧耦合架构下所有NVME SSD扩展框的业务都集中由同一个NVME控制器中业务单元处理引起的缺陷。
Description
技术领域
本申请涉及存储技术,特别涉及闪存类存储设计(NVME:Non-Volatile Memoryexpress)存储扩展***。
背景技术
基于NVME固态硬盘(SSD:Solid State Drives)的存储设备(简称NVME存储设备)因NVME SSD本身优势比如提高硬盘每秒进行读/写(I/O)的次数(IOPS:I/O per second)等而得到广泛应用。其中,IOPS为硬盘读写性能的关键指标。
然而,由于NVME SSD的单盘容量小,这会导致单个NVME存储设备很难适配大容量应用场景。
发明内容
本申请提供了NVME存储扩展***,以实现NVME存储扩展,适配大容量应用场景。
本申请提供的技术方案包括:
一种NVME存储扩展***,包括:多个存储设备;
所述多个存储设备中有N个存储设备作为NVME控制器,剩余的存储设备作为NVMESSD扩展框;N大于等于2;
其中,至少两个NVME控制器设有用于连接同一个NVME SSD扩展框的PCI-E扩展口;
每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口。
由以上技术方案可以看出,本申请中,通过限定至少两个NVME控制器设有用于连接同一个NVME SSD扩展框的PCI-E扩展口;以及,限定每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口,能够实现至少两个NVME控制器连接同一个NVMESSD扩展框,实现了NVME控制器与NVME SSD扩展框之间二对一或多对一连接,这与上述紧耦合架构中所有NVME SSD扩展框串接在一起接入NVME控制器的连接方式完全不同。
进一步地,在本申请中,由于每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口,这也就意味着任何一个NVME SSD扩展框会同时并行和2个或多个NVME控制器相连接,使得任何一NVME SSD扩展框的业务分散至2个或多个NVME控制器的业务单元进行处理,防止紧耦合架构下所有NVME SSD扩展框的业务都集中由同一个NVME控制器中业务单元处理引起的缺陷。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1示出了各NVME存储设备纵向扩展的结构;
图2为本申请提供的NVME存储扩展***结构图;
图3为本申请提供的NVME存储扩展***实施例示意图;
图4为本申请提供的NVME控制器的结构图;
图5为本申请提供的NVME控制器的硬件结构图;
图6为本申请提供的NVME SSD扩展框的结构图;
图7为本申请提供的NVME SSD扩展框的硬件结构图;
图8为本申请提供的NVME存储扩展***另一实施例示意图。
具体实施方式
为适配大容量应用场景,常用的方法是对各个NVME存储设备进行纵向扩展。图1简单示出了各NVME存储设备纵向扩展的结构,这种结构称NVME存储扩展***。
如图1所示,NVME存储扩展***主要包括:多个NVME存储设备。其中一个NVME存储设备作为NVME控制器,剩余的作为NVME SSD扩展框。
在图1中,NVME控制器与NVME SSD扩展框通过PCI-E扩展口进行纵向级联,具体是:NVME控制器通过本地PCI-E扩展口(记为PCI-E扩展口101)串接一个NVME SSD扩展框(记为NVME SSD扩展框1_1)上的PCI-E扩展口(记为PCI-E扩展口102),NVME SSD扩展框1_1通过本地另一PCI-E扩展口(记为PCI-E扩展口103)串接剩余的一个NVME SSD扩展框(记为NVMESSD扩展框1_2)的一个PCI-E扩展口(记为PCI-E扩展口104),依次类推,最终NVME控制器与所有的NVME SSD扩展框串接在一起。为便于描述,这里将NVME控制器与NVME SSD扩展框通过PCI-E扩展口进行纵向级联的架构称为紧耦合架构。
在图1所示的NVME存储扩展***中,NVME控制器包括:业务单元110、控制单元111、CMI控制器112。其中,业务单元110主要用于运行驱动程序、业务数据收发等;控制单元111主要用于接收业务单元110的管理、对CMI控制器112进行配置和响应等;CMI控制器112用于实现NVME控制器对所有NVME SSD扩展框进行控制,比如控制上下电、复位等。
在图1所示的NVME存储扩展***中,每一NVME SSD扩展框包括:业务单元120、控制单元121、CMI控制器122、以及多块用于存储业务数据的NVME SSD123。业务单元120用于响应业务单元120的业务数据,控制单元121主要用于接收业务单元110的管理、对CMI控制器122进行配置和响应等,CMI控制器122用于响应NVME控制器上CMI控制器122的控制。
在图1中,NVME控制器通过本地CMI控制器112与各个NVME SSD扩展框上的CMI控制器122进行交互以实现对所有NVME SSD扩展框进行控制,比如控制NVME SSD扩展框的上下电、复位等。具体地,在图1中,NVME控制器通过本地CMI控制器112与NVME SSD扩展框1_1本地的CMI控制器交互以对NVME SSD扩展框1_1进行控制,NVME控制器通过本地CMI控制器112与NVME SSD扩展框1_2本地的CMI控制器交互以对NVME SSD扩展框1_2进行控制,依次类推,最终NVME控制器通过本地CMI控制器控制所有NVME SSD扩展框。
在图1中,从存储业务考虑,由于所有NVME SSD扩展框串接在一起接入NVME控制器,这意味着所有NVME SSD扩展框的业务均由NVME控制器中业务单元110集中控制。
然而,由于NVME控制器中业务单元110的处理能力有限,当串接在一起的NVME SSD扩展框的数量比较多时,会导致NVME控制器中业务单元110的处理能力不足以支持如此多NVME SSD扩展框的业务,导致NVME控制器性能降低,进而影响整个NVME存储扩展***的性能。
为了防止上述问题,本申请提供了如图2所示的NVME存储扩展***。
参见图2,图2为本申请提供的NVME存储扩展***结构图。在图2所示的NVME存储扩展***中包括:多个存储设备,其中,所述多个存储设备中有N个存储设备作为NVME控制器,剩余的存储设备作为NVME SSD扩展框;N大于等于2。图2为方便画图仅以1个NVME SSD扩展框为例示意。
在本申请中,至少两个NVME控制器设有用于连接同一个NVME SSD扩展框的PCI-E扩展口;以及,每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口。
在本申请中,通过限定至少两个NVME控制器设有用于连接同一个NVME SSD扩展框的PCI-E扩展口;以及,限定每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口,能够实现至少两个NVME控制器连接同一个NVME SSD扩展框,实现了NVME控制器与NVME SSD扩展框之间二对一或多对一连接,这与上述紧耦合架构中所有NVME SSD扩展框串接在一起接入NVME控制器的连接方式完全不同。相比于上述的紧耦合架构,本申请提供的这种NVME控制器与NVME SSD扩展框之间二对一或多对一连接的架构可简称为松耦合架构。图3以N个NVME控制器、M个NVME SSD扩展框为例举例示出了松耦合架构。
进一步地,在本申请中,由于每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口,这也就意味着任何一个NVME SSD扩展框会同时并行和2个或多个NVME控制器相连接,使得任何一NVME SSD扩展框的业务分散至2个或多个NVME控制器的业务单元进行处理,防止紧耦合架构下所有NVME SSD扩展框的业务都集中由同一个NVME控制器中业务单元处理引起的缺陷。
下面对本申请提供的NVME控制器和NVME SSD扩展框的结构分别进行描述:
相比现有NVME存储扩展***,本申请中,不管是NVME控制器还是NVME SSD扩展框,都省去CMI控制器。下面先对NVME控制器进行详细描述:
在本申请中,每一NVME控制器的结构相同,图4示出了NVME控制器的结构。
在图4中,每一NVME控制器设有PCI-E扩展口(图4仅示出一个PCI-E扩展口,多个PCI-E扩展口类似),为便于描述,图4示出的PCI-E扩展口记为PCI-E扩展口400。
在图4中,每一NVME控制器除了包括设有的PCI-E扩展口400外,还包括:第一业务单元401、第一控制单元402。这里的第一业务单元401、第一控制单元402只是为便于区分进行的命名,并非用于限定本申请。
在本申请中,第一控制单元402,用于检测本NVME控制器设有的PCI-E扩展口400是否***PCI-E扩展线缆,这里检测本NVME控制器设有的PCI-E扩展口400是否***PCI-E扩展线缆具体见下文描述;
第一控制单元402在检测出本NVME控制器设有的PCI-E扩展口400***PCI-E扩展线缆时,检查用于发送第一使能通知的第一使能条件是否满足。在本申请中,作为一个实施例,第一控制单元402检查用于发送第一使能通知的第一使能条件是否满足具体依赖于第一业务单元401发送的用于指示第一业务单元401中固件(firmware)运行成功的心跳消息。其中,第一业务单元401是在本地的固件运行成功时主动发送心跳消息给第一控制单元402。
基于上面描述,第一控制单元402具体用于通过以下方式检查用于发送第一使能通知的第一使能条件是否满足:从本地已记录的认证通过的线缆中检查是否存在本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆;
若是,则检查是否已收到来自第一业务单元401发送的用于指示第一业务单元401中固件运行成功的心跳消息,若已收到所述心跳消息,确定用于发送第一使能通知的第一使能条件满足,若未收到所述心跳消息,确定用于发送第一使能通知的第一使能条件未满足;
若否,则对本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆进行认证,若认证未通过,则确定用于发送第一使能通知的第一使能条件未满足,若认证通过,检查是否已收到来自第一业务单元401发送的用于指示第一业务单元401中固件运行成功的心跳消息,若已收到所述心跳消息,确定用于发送第一使能通知的第一使能条件满足,若未收到所述心跳消息,确定用于发送第一使能通知的第一使能条件未满足。
这里,第一控制单元402可通过以下方式对本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆进行认证:第一控制单元402访问本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆的电可擦可编程只读存储器(EEPROM:ElectricallyErasable Programmable read only memory)以获取PCI-E扩展线缆的线缆标识,第一控制单元402检查获取的线缆标识是否为本控制单元402支持的线缆标识(第一控制单元402支持的线缆标识配置在第一控制单元402本地),若是,则确定本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆通过认证,若否,则确定本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆未通过认证。当确定出本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆未通过认证时,NVME控制器可停止执行任何操作。
作为一个实施例,在上面描述中,若第一控制单元402检查出未收到来自第一业务单元401发送的用于指示第一业务单元401中固件运行成功的心跳消息,则等待,直至收到第一业务单元401在设有的固件运行成功时主动发送用于指示固件运行成功的心跳消息,才确定用于发送第一使能通知的第一使能条件满足。
在本申请中,第一控制单元402在检查出用于发送第一使能通知的第一使能条件满足时,发送第一使能通知给本NVME控制器上的第一业务单元以指示第一业务单元401使能PCI-E业务口,所述PCI-E业务口为:第一业务单元401上设有的与***了PCI-E扩展线缆的PCI-E扩展口400连接的PCI-E业务口。
第一业务单元401,用于接收所述第一使能通知,依据所述第一使能通知的指示使能本业务单元401上设有的所述PCI-E业务口。至此,第一业务单元401上的所述PCI-E业务口与***了PCI-E扩展线缆的PCI-E扩展口400之间的PCI-E总线成功建立。
在本申请中,当第一业务单元401在使能PCI-E业务口后,还具体用于:
训练第一PCI-E链路,这里的第一PCI-E链路为本NVME控制器设有的***了PCI-E扩展线缆的PCI-E扩展口400通过***的PCI-E扩展线缆连接至NVME SSD扩展框的链路;
在所述第一PCI-E链路训练失败时,返回训练第一PCI-E链路的操作,或者将第一PCI-E链路的状态设置为用于指示所述第一PCI-E链路开启后的初始状态(Detect.quiet)且等待指定时间比如12s后返回训练第一PCI-E链路的操作。这里,导致第一PCI-E链路训练失败的原因有很多,比如PCI-E扩展口通过***的PCI-E扩展线缆连接的NVME SSD扩展框中业务单元(下文的第二业务单元)的固件未运行成功等。
在所述第一PCI-E链路训练成功时,将所述第一PCI-E链路的状态置为用于指示所述第一PCI-E链路正常工作的L0状态,以通过置为L0状态的第一PCI-E链路执行业务数据的转发。
作为一个实施例,在本申请中,第一业务单元401在将所述第一PCI-E链路的状态置为用于指示所述第一PCI-E链路正常工作的L0状态时,意味着此时第一PCI-E链路的物理层正常运行(UP),之后,第一业务单元401还会实时检测第一PCI-E链路的数据链路层是否UP,当检测到数据链路层UP时,则第一业务单元401运行本NVME控制器的驱动程序、以及第一PCI-E链路连接的NVME SSD扩展框的驱动程序,之后即可通过上述置为L0状态的第一PCI-E链路执行业务数据的转发。
以上对NVME控制器本地设有的PCI-E扩展口400***PCI-E扩展线缆进行了描述。
当NVME控制器本地设有的PCI-E扩展口400***PCI-E扩展线缆后,后续还可根据实际业务需求拔出PCI-E扩展口400已***的PCI-E扩展线缆。
在本申请中,第一业务单元401在检测到本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆被拔出时,关闭本业务单元上设有的已使能、且与被拔出PCI-E扩展线缆的PCI-E扩展口400相连接的PCI-E业务口,并清理未完成的读写操作。
作为一个实施例,第一业务单元401具体通过以下方式清理未完成的读写操作:针对每一未完成的读写操作,生成用于模拟该未完成的读写操作对应的应答消息,以通过所述应答消息指示该未完成的读写操作完成。
作为一个实施例,这里第一业务单元401清理未完成的读写操作具体为:针对每一未完成的读写操作,生成用于模拟该未完成的读写操作对应的应答消息,以通过所述应答消息指示该未完成的读写操作完成。通过生成用于模拟未完成的读写操作对应的应答消息,相当于读写操作完成,这能防止NVME控制器因为未完成的读写操作而被挂死。
作为一个实施例,这里,第一业务单元401检测本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆被拔出有很多方式,下面举例描述三种方式:
方式1,第一业务单元401接收第一控制单元402发送的PCI-E业务口关闭通知,依据接收的PCI-E业务口关闭通知确定本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆被拔出。
在本方式1下,第一控制单元402在检测到PCI-E扩展口400所***的PCI-E扩展线缆被拔出时,会发送PCI-E业务口关闭通知给第一业务单元401。其中,第一控制单元402检测PCI-E扩展口400所***的PCI-E扩展线缆被拔出具体见下文描述。
这里,PCI-E业务口关闭通知用于指示PCI-E扩展口400***的PCI-E扩展线缆被拔出,关闭第一业务单元401上已使能的且连接PCI-E扩展口400的PCI-E业务口。如此,当第一业务单元401接收第一控制单元402发送的上述PCI-E业务口关闭通知时,则意味着本NVME控制器有PCI-E扩展口400被拔出已***的PCI-E扩展线缆。
方式2,第一业务单元401依据本地配置的链路状态机检测到本地已使能的且连接PCI-E扩展口400的PCI-E业务口的状态发生变化,比如从L0状态进入可恢复(Recovery)状态,则确定本NVME控制器设有的与该状态发生变化的PCI-E业务口连接的PCI-E扩展口400所***的PCI-E扩展线缆被拔出。
在本方式2下,链路状态机检测类似现有链路状态机检测,这里不再赘述。
方式3,第一业务单元401依据本业务单元使能的下游端口容错(DPC:DownstreamPort Containment)机制触发本业务单元401关闭本地已使能的且连接PCI-E扩展口400的PCI-E业务口时,则确定本NVME控制器设有的与该被关闭的PCI-E业务口所连接的PCI-E扩展口400所***的PCI-E扩展线缆被拔出。
在这里,DPC机制是指当NVME控制器设有的PCI-E扩展口异常比如被拔出已***的PCI-E扩展线缆时,DPC机制会自动触发第一业务单元401关闭本地与该异常PCI-E扩展口连接的接口即PCI-E业务口,如此,一旦第一业务单元401关闭本地已使能的且连接PCI-E扩展口400的PCI-E业务口时,则确定本NVME控制器设有的与该被关闭的PCI-E业务口连接的PCI-E扩展口400所***的PCI-E扩展线缆被拔出。
以上对第一业务单元401如何检测本NVME控制器设有的PCI-E扩展口400所***的PCI-E扩展线缆被拔出进行了描述。
至此,完成图4所示的NVME控制器的结构描述。
参见图5,图5为本申请提供的NVME控制器的硬件结构图。如图5所示,第一业务单元401,其主要包括:PCI-E业务口(PCI-E TX、PCI-E RX)、管理口。
如图5所示的第一控制单元402,其主要包括:管理口、I2C_SCL、I2C_SDA、GPIO口。
在图5中,NVME控制器设有的PCI-E扩展口400为采用SFF-8644标准的拼插件,但因为NVME控制器不再包括CMI控制器,则相比SFF-8644标准定义的拼插件,本申请涉及的PCI-E扩展口400的结构简单,少了一些与CMI控制器相关的信号口比如线缆内置管理器件的带外中断(CINT#)口、线缆内置管理器件的地址位信号(CADDR)口。
如图5所示,NVME控制器设有的PCI-E扩展口400,其主要包括:PCI-E业务口(PCI-ETX、PCI-E RX)、CMISDA(CMI管理接口的数据线)口、CMISCL(CMI管理接口的时钟线)口、线缆在位(CBLPRSNT#)信号口。
在本申请中,如图5所示,第一业务单元401上的PCI-E业务口(PCI-E TX、PCI-ERX)与PCI-E扩展口400的PCI-E业务口(PCI-E TX、PCI-E RX)相连接(形成PCI-E总线),主要是用于业务数据收发,当PCI-E扩展口400未***PCI-E扩展线缆前,第一业务单元401上设有的与该PCI-E扩展口400连接的PCI-E业务口是不会使能的,其常处于默认状态比如关闭状态。
在本申请中,如图5所示,第一业务单元401的管理口,用于连接第一控制单元402的管理口,这里的管理口主要包括:通用输入/输出(GPIO:General Purpose InputOutput)口和UART口。
在本申请中,如图5所示,第一控制单元402的I2C_SCL,用于连接PCI-E扩展口400的CMISDA口,I2C_SDA,用于连接PCI-E扩展口400的CMISCL口;本申请中,第一控制单元通过I2C_SCL与PCI-E扩展口400的CMISDA口连接,以及通过I2C_SDA与PCI-E扩展口400的CMISDA口连接类似现有技术,这里不再赘述。
在本申请中,如图5所示,第一控制单元402的GPIO口,用于与PCI-E扩展口400中的CBLPRSNT#信号口相连接,当PCI-E扩展口400***PCI-E扩展线缆时,CBLPRSNT#信号口输出第一信号指示(比如低电平),反之,当PCI-E扩展口400未***PCI-E扩展线缆时,CBLPRSNT#信号口输出第二信号指示(比如高电平)。
下面基于CBLPRSNT#信号口的输出描述第一控制单元402如何检测本NVME控制器设有的PCI-E扩展口400是否***PCI-E扩展线缆:
第一控制单元402通过GPIO口接收到第一信号指示(比如低电平)时,则认为GPIO口接入的CBLPRSNT#信号口所处的PCI-E扩展口400***了PCI-E扩展线缆,反之,第一控制单元402通过GPIO口接收到第二信号指示(比如高电平)时,则认为GPIO口接入的CBLPRSNT#信号口所处的PCI-E扩展口400未***PCI-E扩展线缆,如此,即实现了第一控制单元402检测本NVME控制器设有的PCI-E扩展口400是否***PCI-E扩展线缆。
下面基于CBLPRSNT#信号口的输出描述第一控制单元402如何检测本NVME控制器设有的PCI-E扩展口400被拔出***的PCI-E扩展线缆:
第一控制单元402通过GPIO口接收与之前收到的第一信号指示(比如低电平)不同的第二信号指示(比如高电平)时,则认为GPIO口接入的CBLPRSNT#信号口所处的PCI-E扩展口400已***的PCI-E扩展线缆被拔出,如此,即实现了第一控制单元402检测出本NVME控制器设有的PCI-E扩展口400被拔出***的PCI-E扩展线缆。
至此,完成图5所示的NVME控制器硬件结构描述。
下面对本申请提供的NVME SSD扩展框进行描述:
在本申请中,每一NVME SSD扩展框的结构相同,图6示出了NVME SSD扩展框的结构。
在图6中,每一NVME SSD扩展框设有PCI-E扩展口(图6仅示出一个PCI-E扩展口,多个PCI-E扩展口类似),为便于描述,图6示出的PCI-E扩展口记为PCI-E扩展口600。
在图6中,每一NVME SSD扩展框除了包括设有的PCI-E扩展口600外,还包括:第二业务单元601、第二控制单元602、NVME固态硬盘SSD603;其中,NVME固态硬盘SSD603,被划分为X个分区,至少一个分区用于分配给本地设有的一个PCI-E扩展口所连接的NVME控制器进行读写访问。
在本申请中,第二控制单元602,用于检测本NVME SSD扩展框设有的PCI-E扩展口600是否***PCI-E扩展线缆,这里检测本NVME SSD扩展框设有的PCI-E扩展口600是否***PCI-E扩展线缆具体见下文描述;
第二控制单元602在检测出本NVME SSD扩展框设有的PCI-E扩展口600***PCI-E扩展线缆时,检查用于发送第二使能通知的第二使能条件是否满足。这里,第二控制单元602检查用于发送第二使能通知的第二使能条件是否满足的方式类似上述第一控制单元402检查用于发送第一使能通知的第一使能条件是否满足的方式,不再赘述。
第二控制单元602在检查出用于发送第二使能通知的第二使能条件满足时,发送第二使能通知给本NVME SSD扩展框上的第二业务单元601以指示第二业务单元601使能对应的PCI-E业务口,这里,PCI-E业务口为:第二业务单元601上设有的与本NVME SSD扩展框上***了PCI-E扩展线缆的PCI-E扩展口600所连接的PCI-E业务口。
第二业务单元602,用于接收第二使能通知,依据第二使能通知的指示使能本业务单元上设有的上述PCI-E业务口。至此,第一业务单元601上的上述PCI-E业务口与***了PCI-E扩展线缆的PCI-E扩展口600之间的PCI-E总线成功建立。
在本申请中,第二业务单元601在使能PCI-E业务口后,还具体用于:
训练第二PCI-E链路,所述第二PCI-E链路为本NVME SSD扩展框设有的***了PCI-E扩展线缆的PCI-E扩展口600通过***的PCI-E扩展线缆连接至NVME控制器的链路;
在所述第二PCI-E链路训练失败时,返回训练第二PCI-E链路的操作,或者将第二PCI-E链路的状态设置为用于指示所述第二PCI-E链路开启后的初始状态(Detect.quiet)且等待指定时间后返回训练第二PCI-E链路的操作。这里,导致第二PCI-E链路训练失败的原因有很多,比如PCI-E扩展口600通过***的PCI-E扩展线缆连接的NVME控制器中第一业务单元401的固件未运行成功等。
在所述第二PCI-E链路训练成功时,将所述第二PCI-E链路的状态置为用于指示所述第二PCI-E链路正常工作的L0状态,以通过置为L0状态的第二PCI-E链路执行业务数据的转发;
作为一个实施例,在本申请中,第二业务单元601在将所述第二PCI-E链路的状态置为用于指示所述第二PCI-E链路正常工作的L0状态时,意味着此时第二PCI-E链路的物理层正常运行(UP),之后,第二业务单元601还会实时检测第二PCI-E链路的数据链路层是否UP,当检测到数据链路层UP时,则第二业务单元601运行本NVME SSD扩展框的驱动程序,之后即可通过上述置为L0状态的第二PCI-E链路执行业务数据的转发。
以上对NVME SSD扩展框本地设有的PCI-E扩展口600***PCI-E扩展线缆进行了描述。
当NVME SSD扩展框本地设有的PCI-E扩展口600***PCI-E扩展线缆后,后续还可根据实际业务需求拔出PCI-E扩展口600已***的PCI-E扩展线缆。
在本申请中,第二业务单元601在检测到本NVME SSD扩展框设有的PCI-E扩展口600所***的PCI-E扩展线缆被拔出时,关闭本业务单元上设有的已使能、且与被拔出PCI-E扩展线缆的PCI-E扩展口600相连接的PCI-E业务口。其中,第二业务单元601检测本NVMESSD扩展框设有的PCI-E扩展口600所***的PCI-E扩展线缆被拔出有很多方式,比如为上述的方式1、方式2。
至此,完成图6所示的NVME SSD扩展框的结构描述。
参见图7,图7为本申请提供的NVME SSD扩展框的硬件结构图。NVME SSD扩展框的硬件结构类似上述NVME控制器的硬件结构。
如图7所示,第二业务单元601,其主要包括:PCI-E业务口(PCI-E TX、PCI-E RX)、管理口。
如图7所示,第二控制单元602,其主要包括:管理口、I2C_SCL、I2C_SDA、GPIO口。
在图7中,NVME SSD扩展框设有的PCI-E扩展口600为采用SFF-8644标准的拼插件,但因为NVME SSD扩展框不再包括CMI控制器,则相比SFF-8644标准定义的拼插件,本申请涉及的PCI-E扩展口的结构简单,少了一些与CMI控制器相关的信号口比如线缆内置管理器件的带外中断(CINT#)口、线缆内置管理器件的地址位信号(CADDR)口。
如图7所示的NVME SSD扩展框设有的PCI-E扩展口600其主要包括:PCI-E业务口(PCI-E TX、PCI-E RX)、CMISDA(CMI管理接口的数据线)口、CMISCL(CMI管理接口的时钟线)口、线缆在位(CBLPRSNT#)信号口。
在本申请中,如图7所示,第二业务单元601上的PCI-E业务口(PCI-E TX、PCI-ERX)与PCI-E扩展口600的PCI-E业务口(PCI-E TX、PCI-E RX)相连接(形成PCI-E总线),主要是用于业务数据收发,当PCI-E扩展口600未***PCI-E扩展线缆前,第二业务单元6401上设有的与该PCI-E扩展口600连接的PCI-E业务口是不会使能的,其常处于默认状态比如关闭状态。
在本申请中,如图7所示,第二业务单元601的管理口,用于连接第二控制单元602的管理口,这里的管理口主要包括:通用输入/输出(GPIO:General Purpose InputOutput)口和UART口。
在本申请中,如图7所示,第二控制单元602的I2C_SCL,用于连接PCI-E扩展口600的CMISDA口,I2C_SDA,用于连接PCI-E扩展口600的CMISCL口;本申请中,第二控制单元通602过I2C_SCL与PCI-E扩展口600的CMISDA口连接,以及通过I2C_SDA与PCI-E扩展口600的CMISDA口连接类似现有技术,这里不再赘述。
在本申请中,如图7所示,第二控制单元602的GPIO口,用于与PCI-E扩展口600中的CBLPRSNT#信号口相连接,当PCI-E扩展口600***PCI-E扩展线缆时,CBLPRSNT#信号口输出第一信号指示(比如低电平),反之,当PCI-E扩展口600未***PCI-E扩展线缆时,CBLPRSNT#信号口输出第二信号指示(比如高电平)。
下面基于CBLPRSNT#信号口的输出描述第二控制单元602如何检测本NVME SSD扩展框设有的PCI-E扩展口600是否***PCI-E扩展线缆:
第二控制单元602通过GPIO口接收到第一信号指示(比如低电平)时,则认为GPIO口接入的CBLPRSNT#信号口所处的PCI-E扩展口600***了PCI-E扩展线缆,反之,第一控制单元602通过GPIO口接收到第二信号指示(比如高电平)时,则认为GPIO口接入的CBLPRSNT#信号口所处的PCI-E扩展口600未***PCI-E扩展线缆,如此,即实现了第二控制单元602检测本NVME SSD扩展框设有的PCI-E扩展口600是否***PCI-E扩展线缆。
至此,完成图7所示的NVME SSD扩展框硬件结构描述。
基于图5所示的NVME控制器硬件结构、以及图7所示的NVME SSD扩展框硬件结构,图8举例示出了NVME控制器与NVME SSD扩展框连接的松耦合架构。
以上对本申请提供的结构进行描述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (9)
1.一种NVME存储扩展***,其特征在于,包括:多个存储设备;
所述多个存储设备中有N个存储设备作为NVME控制器,剩余的存储设备作为NVME SSD扩展框;N大于等于2;
其中,至少两个NVME控制器设有用于连接同一个NVME SSD扩展框的PCI-E扩展口;
每一NVME SSD扩展框设有至少两个用于连接不同NVME控制器的PCI-E扩展口;
每一NVME控制器包括:
第一控制单元,用于检测到本NVME控制器设有的PCI-E扩展口***PCI-E扩展线缆时,检查该***的PCI-E扩展线缆是否已通过认证,如果所述***的PCI-E扩展线缆已通过认证,且已收到来自本NVME控制器上的第一业务单元发送的用于指示所述第一业务单元中固件运行成功的心跳消息,发送第一使能通知给所述第一业务单元以指示所述第一业务单元使能PCI-E业务口,所述PCI-E业务口为:所述第一业务单元上设有的与***了PCI-E扩展线缆的PCI-E扩展口连接的PCI-E业务口;
所述第一业务单元,用于接收所述第一使能通知,依据所述第一使能通知的指示使能本业务单元上设有的所述PCI-E业务口。
2.根据权利要求1所述的NVME存储扩展***,其特征在于,
每一NVME SSD扩展框包括NVME固态硬盘SSD;
所述NVME固态硬盘SSD,被划分为X个分区,至少一个分区用于分配给本地设有的一个PCI-E扩展口所连接的NVME控制器进行读写访问。
3.根据权利要求1所述的NVME存储扩展***,其特征在于,所述检查***的PCI-E扩展线缆是否已通过认证,包括:
从本地已记录的认证通过的线缆中检查是否存在本NVME控制器设有的PCI-E扩展口所***的PCI-E扩展线缆;
若是,确定所述***的PCI-E扩展线缆已通过认证;
若否,则对所述***的PCI-E扩展线缆进行认证,根据认证结果确定所述***的PCI-E扩展线缆是否已通过认证。
4.根据权利要求1所述的NVME存储扩展***,其特征在于,
所述第一业务单元在使能所述PCI-E业务口后,还具体用于:
训练第一PCI-E链路,所述第一PCI-E链路为本NVME控制器设有的***了PCI-E扩展线缆的PCI-E扩展口通过***的PCI-E扩展线缆连接至NVME SSD扩展框的链路;
在所述第一PCI-E链路训练成功时,将所述第一PCI-E链路的状态置为用于指示所述第一PCI-E链路正常工作的L0状态,以通过置为L0状态的第一PCI-E链路执行业务数据的转发;
在所述第一PCI-E链路训练失败时,返回训练第一PCI-E链路的操作,或者将第一PCI-E链路的状态设置为用于指示所述第一PCI-E链路开启后的初始状态Detect.quiet且等待指定时间后返回训练第一PCI-E链路的操作。
5.根据权利要求1所述的NVME存储扩展***,其特征在于,
每一NVME SSD扩展框包括:
第二控制单元,用于检测到本NVME SSD扩展框设有的PCI-E扩展口***PCI-E扩展线缆时,检查用于发送第二使能通知的第二使能条件是否满足,若是,发送第二使能通知给本NVME SSD扩展框上的第二业务单元以指示所述第二业务单元使能PCI-E业务口,所述PCI-E业务口为:所述第二业务单元上设有的与本NVME SSD扩展框上***了PCI-E扩展线缆的PCI-E扩展口所连接的PCI-E业务口;
所述第二业务单元,用于接收所述第二使能通知,依据所述第二使能通知的指示使能本业务单元上设有的PCI-E业务口。
6.根据权利要求5所述的NVME存储扩展***,其特征在于,
所述第二业务单元还用于在设有的固件firmware运行成功时发送用于指示固件运行成功的心跳消息给所述第二控制单元;
所述第二控制单元具体用于通过以下方式检查用于发送第二使能通知的第二使能条件是否满足:
从本地已记录的认证通过的线缆中检查是否存在本NVME SSD扩展框设有的PCI-E扩展口所***的PCI-E扩展线缆;
若是,则检查是否已收到来自所述第二业务单元发送的用于指示所述第二业务单元中固件运行成功的心跳消息,若收到心跳消息,确定用于发送第二使能通知的第二使能条件满足,若未收到心跳消息,确定用于发送第二使能通知的第二使能条件未满足;
若否,则对本NVME SSD扩展框设有的PCI-E扩展口所***的PCI-E扩展线缆进行认证,若认证未通过,则确定用于发送第二使能通知的第二使能条件未满足,若认证未通过,检查是否已收到来自所述第二业务单元发送的用于指示所述第二业务单元中固件运行成功的心跳消息,若收到心跳消息,确定用于发送第二使能通知的第二使能条件满足,若未收到心跳消息,确定用于发送第二使能通知的第二使能条件未满足。
7.根据权利要求5所述的NVME存储扩展***,其特征在于,所述第二业务单元在使能所述PCI-E业务口后,还具体用于:
训练第二PCI-E链路,所述第二PCI-E链路为本NVME SSD扩展框设有的***了PCI-E扩展线缆的PCI-E扩展口通过***的PCI-E扩展线缆连接至NVME控制器的链路;
在所述第二PCI-E链路训练成功时,将所述第二PCI-E链路的状态置为用于指示所述第二PCI-E链路正常工作的L0状态,以通过置为L0状态的第二PCI-E链路执行业务数据的转发;
在所述第二PCI-E链路训练失败时,返回训练第二PCI-E链路的操作,或者将第二PCI-E链路的状态设置为用于指示所述第二PCI-E链路开启后的初始状态Detect.quiet状态且等待指定时间后返回训练第二PCI-E链路的操作。
8.根据权利要求1所述的NVME存储扩展***,其特征在于,
所述第一业务单元还用于在检测到本NVME控制器设有的PCI-E扩展口所***的PCI-E扩展线缆被拔出时,关闭本业务单元上设有的已使能、且与被拔出PCI-E扩展线缆的PCI-E扩展口相连接的PCI-E业务口,并清理未完成的读写操作。
9.根据权利要求8所述的NVME存储扩展***,其特征在于,所述第一业务单元具体通过以下方式清理未完成的读写操作:
针对每一未完成的读写操作,生成用于模拟该未完成的读写操作对应的应答消息,以通过所述应答消息指示该未完成的读写操作完成。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711459254.XA CN109271096B (zh) | 2017-12-28 | 2017-12-28 | Nvme存储扩展*** |
PCT/CN2018/121854 WO2019128784A1 (zh) | 2017-12-28 | 2018-12-18 | Nvme存储扩展*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711459254.XA CN109271096B (zh) | 2017-12-28 | 2017-12-28 | Nvme存储扩展*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271096A CN109271096A (zh) | 2019-01-25 |
CN109271096B true CN109271096B (zh) | 2021-03-23 |
Family
ID=65153012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711459254.XA Active CN109271096B (zh) | 2017-12-28 | 2017-12-28 | Nvme存储扩展*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109271096B (zh) |
WO (1) | WO2019128784A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110163011B (zh) * | 2019-05-14 | 2021-06-08 | 北京计算机技术及应用研究所 | 一种高速安全硬盘设计方法 |
CN113259474B (zh) * | 2021-06-10 | 2021-10-08 | 苏州浪潮智能科技有限公司 | 一种存储管理方法、***、存储介质及设备 |
CN114356644B (zh) * | 2022-03-18 | 2022-06-14 | 阿里巴巴(中国)有限公司 | Pcie设备故障处理方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN204833236U (zh) * | 2015-08-21 | 2015-12-02 | 浪潮电子信息产业股份有限公司 | 一种支持混合式存储的存储*** |
CN106155583A (zh) * | 2015-05-13 | 2016-11-23 | Hgst荷兰公司 | 缓存固态设备读取请求结果的***和方法 |
CN106502593A (zh) * | 2016-11-04 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种高速互联混合存储*** |
CN106775504A (zh) * | 2017-03-16 | 2017-05-31 | 北京飞杰信息技术有限公司 | 双控磁盘阵列***及其数据存取方法 |
CN107085503A (zh) * | 2017-03-27 | 2017-08-22 | 联想(北京)有限公司 | 存储设备、存储***及信息处理方法 |
CN107145459A (zh) * | 2016-03-01 | 2017-09-08 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的***和方法 |
CN107704344A (zh) * | 2017-09-14 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种基于NVMe的双控全闪存*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202197B (zh) * | 2014-09-12 | 2019-03-01 | 华为技术有限公司 | 设备管理的方法和装置 |
CN104601684A (zh) * | 2014-12-31 | 2015-05-06 | 曙光云计算技术有限公司 | 云服务器*** |
US10235097B2 (en) * | 2015-07-21 | 2019-03-19 | Samsung Electronics Co., Ltd. | Area and performance optimized namespace sharing method in virtualized PCIE based SSD controller |
CN107193763B (zh) * | 2017-04-13 | 2020-04-24 | 联想(北京)有限公司 | 一种信息处理的方法及电子设备 |
-
2017
- 2017-12-28 CN CN201711459254.XA patent/CN109271096B/zh active Active
-
2018
- 2018-12-18 WO PCT/CN2018/121854 patent/WO2019128784A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155583A (zh) * | 2015-05-13 | 2016-11-23 | Hgst荷兰公司 | 缓存固态设备读取请求结果的***和方法 |
CN204833236U (zh) * | 2015-08-21 | 2015-12-02 | 浪潮电子信息产业股份有限公司 | 一种支持混合式存储的存储*** |
CN107145459A (zh) * | 2016-03-01 | 2017-09-08 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的***和方法 |
CN106502593A (zh) * | 2016-11-04 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种高速互联混合存储*** |
CN106775504A (zh) * | 2017-03-16 | 2017-05-31 | 北京飞杰信息技术有限公司 | 双控磁盘阵列***及其数据存取方法 |
CN107085503A (zh) * | 2017-03-27 | 2017-08-22 | 联想(北京)有限公司 | 存储设备、存储***及信息处理方法 |
CN107704344A (zh) * | 2017-09-14 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种基于NVMe的双控全闪存*** |
Also Published As
Publication number | Publication date |
---|---|
CN109271096A (zh) | 2019-01-25 |
WO2019128784A1 (zh) | 2019-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271096B (zh) | Nvme存储扩展*** | |
KR101264521B1 (ko) | 원격 다이렉트 스토리지 액세스 | |
US8285913B2 (en) | Storage apparatus and interface expansion authentication method therefor | |
CN103117866B (zh) | 交换结构管理方法和*** | |
CN103107960B (zh) | 通过开关卡减少交换结构中交换故障的影响的方法和*** | |
US8032793B2 (en) | Method of controlling information processing system, information processing system, direct memory access control device and program | |
KR101196547B1 (ko) | 결정론적 sas 검색 및 구성을 위한 방법 | |
CN103793347B (zh) | 自配置其端口的路由属性的sas扩展器的方法和结构 | |
WO2012120565A1 (en) | Storage apparatus and method of comparing an expected communication rate between a storage controller and an expander with an operational connection rate | |
WO2021098485A1 (zh) | PCIe设备的上下电控制方法以及*** | |
CN105446657B (zh) | 一种监控raid卡的方法 | |
TW202230147A (zh) | 儲存系統及其操作方法、以及提供抹除碼保護的系統 | |
JP6307847B2 (ja) | 情報処理装置,制御装置及び制御プログラム | |
US9208039B2 (en) | System and method for detecting server removal from a cluster to enable fast failover of storage | |
US9286178B2 (en) | Controller, storage apparatus, method of testing storage apparatus, and computer-readable storage medium | |
JP2009205316A (ja) | ディスクアレイ装置、ディスクアレイ制御方法及びディスクアレイ制御装置 | |
CN102541469A (zh) | 固件存储***中数据保护的方法、设备及*** | |
CN104679685A (zh) | 基板管理控制器存取方法 | |
TWI677250B (zh) | 網路系統及認證方法 | |
US20160246746A1 (en) | Sas configuration management | |
CN103530215B (zh) | 一种内部集成电路主机的自检方法、装置及主机 | |
US20140164845A1 (en) | Host computer and method for testing sas expanders | |
CN107294759B (zh) | 服务器***及数据存取方法 | |
CN103475514A (zh) | 无bmc的节点、集群***及bios修复和升级方法 | |
US8522075B2 (en) | Storage system having storage devices for storing data and control devices for controlling the storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |