CN107678919B - 一种设备状态的检测方法及电子设备 - Google Patents

一种设备状态的检测方法及电子设备 Download PDF

Info

Publication number
CN107678919B
CN107678919B CN201710888606.7A CN201710888606A CN107678919B CN 107678919 B CN107678919 B CN 107678919B CN 201710888606 A CN201710888606 A CN 201710888606A CN 107678919 B CN107678919 B CN 107678919B
Authority
CN
China
Prior art keywords
heartbeat
bit
nvme
queue
indication information
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
Application number
CN201710888606.7A
Other languages
English (en)
Other versions
CN107678919A (zh
Inventor
杨碧波
杨安荣
王奇刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN201710888606.7A priority Critical patent/CN107678919B/zh
Publication of CN107678919A publication Critical patent/CN107678919A/zh
Application granted granted Critical
Publication of CN107678919B publication Critical patent/CN107678919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321Display for diagnostics, e.g. diagnostic result display, self-test user interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种设备状态的检测方法及电子设备,所述方法包括:在主机中设置用于表征SSD设备的活跃状态的心跳位,其中,所述SSD设备包括NVMe控制器,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值;当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。

Description

一种设备状态的检测方法及电子设备
技术领域
本发明涉及存活状态检测技术领域,尤其涉及一种设备状态的检测方法及电子设备。
背景技术
现有的非异失性存储器标准(NVMe,Non-Volatile Memory express)中缺少表示NVMe控制器(Controller)存活状态的机制。NVMe Controller位于固态硬盘(SSD,SolidState Drives)设备中,因而NVMe Controller的存活状态也即是SSD设备的存活状态。当SSD设备工作不正常或被非正常插拔离开主机时,主机无法及时准确地得知这一信息。为了实现主机检测SSD设备的存活状态,提出如下方案:
方案1:主机中的NVMe驱动器(NVMe Driver)通过命令超时机制,发现SSD设备不响应。
该方案的缺点是:命令超时是一种被动机制,超时时间较长(1s-10s数量级),不能及时发现SSD设备不响应。
方案2:NVMe Driver通过高速串行计算机扩展总线标准(PCIe,PeripheralComponent Interconnect express)的热插拔机制发现SSD设备被拔离主机。
该方案的缺点是:PCIe的热插拔机制工作在系统的最底层,NVMe Driver 需要获取和解析该信息才能推测出SSD设备的状态。对于主机上运行多个虚拟机(VM)的情况,每个VM上运行的NVMe Driver都需要获得物理机的PCIe 热插拔状态才能获得其对应的虚拟SSD设备的存活状态,VM能否获得和如何获得PCIe热插拔信息,与管理模块(Hypervisor)的实现有关。
发明内容
为解决上述技术问题,本发明实施例提供了一种设备状态的检测方法及电子设备。
本发明实施例提供的设备状态的检测方法,包括:
在主机中设置用于表征SSD设备的活跃状态的心跳位,其中,所述SSD 设备包括NVMe控制器,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;
通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值;
当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;
当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
本发明实施例中,所述主机上设置有用于存储任务指令的任务队列以及用于存储处理结果的完成队列,其中,所述任务队列中的首个任务指令和末个任务指令的位置分别通过第一指示信息和第二指示信息进行标识,所述完成队列中的首个处理结果和末个处理结果的位置分别通过第三指示信息和第四指示信息进行标识;
所述在主机中设置用于表征SSD设备的活跃状态的心跳位,包括:
基于所述第二指示信息,在所述任务队列中的末个任务指令的后一个位置处设置用于表征SSD设备的活跃状态的心跳位;和/或,
基于所述第三指示信息,在所述完成队列中的首个处理结果的后一个位置处设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,所述方法还包括:
当所述任务队列中的任务指令发生更新时,所述NVMe驱动器将更新后的所述第一指示信息和第二指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位;
当所述完成队列中的处理结果发生更新时,所述NVMe驱动器将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位。
本发明实施例中,所述方法还包括:
在所述NVMe控制器更新所述心跳位之前,所述NVMe驱动器检测更新前的心跳位,以获得所述心跳位的心跳值;
在所述NVMe控制器更新所述心跳位之后,所述NVMe驱动器检测更新后的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,所述主机中设置有管理队列组,以及一个以上输入输出 I/O队列组,其中,所述管理队列组包括管理任务队列和管理完成队列,所述 I/O队列组包括I/O任务队列和I/O完成队列;
所述在主机中设置用于表征SSD设备的活跃状态的心跳位,包括:
在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;通过所述主机中的NVMe 驱动器检测所述心跳位,以获得所述心跳位的心跳值,包括:
当所述SSD设备处于活跃状态时,所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,作为所述心跳位的心跳值;
所述NVMe驱动器按照第二周期读取所述心跳位上的数据,当读取到的数据为所述第一数据时,确定心跳值为所述第一数据并将所述心跳位上的心跳值设置为第二数据。
本发明实施例中,所述方法还包括:
设置所述第二周期小于等于所述第一周期;
按照预设的步长增大所述第二周期,并基于每次变化的第二周期,控制所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,且所述NVMe 驱动器按照第二周期读取所述心跳位上的数据;
当所述NVMe驱动器在预设时长内读取到的心跳值满足预设条件时,停止增大所述第二周期,得到与所述第一周期同步的第二周期。
本发明实施例提供的电子设备,包括:主机、SSD设备,其中,所述主机中设置用于表征SSD设备的活跃状态的心跳位,所述SSD设备包括NVMe控制器,所述主机包括NVMe驱动器;
所述NVMe控制器,用于当所述当SSD设备处于活跃状态时,将所述SSD 设备的活跃状态同步至所述心跳位;
所述NVMe驱动器,用于检测所述主机中的所述心跳位,以获得所述心跳位的心跳值;其中,当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
本发明实施例中,所述主机上设置有用于存储任务指令的任务队列以及用于存储处理结果的完成队列,其中,所述任务队列中的首个任务指令和末个任务指令的位置分别通过第一指示信息和第二指示信息进行标识,所述完成队列中的首个处理结果和末个处理结果的位置分别通过第三指示信息和第四指示信息进行标识;
所述主机,用于基于所述第二指示信息,在所述任务队列中的末个任务指令的后一个位置处设置用于表征SSD设备的活跃状态的心跳位;和/或,
基于所述第三指示信息,在所述完成队列中的首个处理结果的后一个位置处设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,所述NVMe驱动器,还用于当所述任务队列中的任务指令发生更新时,将更新后的所述第一指示信息和第二指示信息发送给所述 NVMe控制器;和/或,还用于当所述完成队列中的处理结果发生更新时,将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;
所述NVMe控制器,还用于基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位;和/ 或,基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位。
本发明实施例中,所述NVMe驱动器,还用于在所述NVMe控制器更新所述心跳位之前,检测更新前的心跳位,以获得所述心跳位的心跳值;在所述 NVMe控制器更新所述心跳位之后,检测更新后的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,所述主机中设置有管理队列组,以及一个以上输入输出 I/O队列组,其中,所述管理队列组包括管理任务队列和管理完成队列,所述 I/O队列组包括I/O任务队列和I/O完成队列;
所述主机,具体用于在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,所述NVMe控制器,具体用于当所述SSD设备处于活跃状态时,按照第一周期在所述心跳位上设置第一数据,作为所述心跳位的心跳值;
所述NVMe驱动器,具体用于按照第二周期读取所述心跳位上的数据,当读取到的数据为所述第一数据时,确定心跳值为所述第一数据并将所述心跳位上的心跳值设置为第二数据。
本发明实施例中,所述NVMe驱动器,还用于设置所述第二周期小于等于所述第一周期;按照预设的步长增大所述第二周期,并基于每次变化的第二周期读取所述心跳位上的数据;在预设时长内读取到的心跳值满足预设条件时,停止增大所述第二周期,得到与所述第一周期同步的第二周期。
本发明实施例的技术方案中,在主机中设置用于表征SSD设备的活跃状态的心跳位,其中,所述SSD设备包括NVMe控制器,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值;当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。采用本发明实施例的技术方案,通过“主动刷新”机制来实现SSD设备存活状态的检测,1)SSD设备的存活状态可以及时上报,最快可以在两倍心跳周期的时间内上报。2)运行在主机上的多个VM都可以通过其自身的NVMe Driver直接获得其对应的虚拟SSD设备的存活状态,获得SSD设备存活的方式独立于 Hypervisor的实现方式。
附图说明
图1为NVMe协议中的队列示意图;
图2为本发明实施例的设备状态的检测方法的流程示意图一;
图3为本发明实施例的心跳检测框架图;
图4为本发明实施例的设备状态的检测方法的流程示意图二;
图5为本发明实施例的心跳位的设置流程图;
图6为本发明实施例的电子设备的结构组成示意图一。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
图1为NVMe协议中的队列示意图,如图1所示,在NVMe协议中,定义了管理队列(Admin Queue)和输入/输出队列(I/O Queue)两种队列,每种队列分别具备任务队列(SQ,Submission Queue)和完成队列(CQ,Completion Queue),成为一组Queue Pair。由于AdminQueue Pair中,SQ和CQ是一一对应的,建议采用Admin Queue Pair作为心跳位设置的位置。在NVMe Controller 启用SR-IOV功能时,一个VM对应一个NVMe Controller的虚拟功能实体(VF, Virtual Function),一个NVMe Controller VF具备一组Admin Queue Pair和多组I/O Queue Pair。这样,每个VM都对应一个唯一的Admin Queue Pair。
如图1所示,Admin Queue Pair包括Admin Submission Queue和AdminCompletion Queue。I/O Queue Pair包括I/O Submission Queue和I/O CompletionQueue。
图2为本发明实施例的设备状态的检测方法的流程示意图一,如图2所示,所述设备状态的检测方法包括以下步骤:
步骤201:在主机中设置用于表征SSD设备的活跃状态的心跳位,其中,所述SSD设备包括NVMe控制器。
本发明实施例中,主机一般包括中央处理器(CPU,Central Processing Unit) 和内存,此外,还包括一些其他硬件,如电源、以及输入输出控制器和接口等。
本发明实施例中,SSD设备是一种具有存储功能以及读取功能的设备,SSD 设备包括SSD控制器,在一实施方式中,SSD设备采用NVMe协议,因而SSD 控制器也可以称为NVMe控制器。NVMe控制器负责主机与SSD设备中的存储单元之间的交互。
在一实施方式中,主机被虚拟化为多个VM,相应地,NVMe控制器被虚拟化为多个NVMe Controller VF,SSD设备中的存储单元被虚拟化为多个虚拟存储单元。这样,一组VM、NVMe Controller VF、虚拟存储单元之间就能够实现本发明实施例的设备状态的检测方法。当然,不采集虚拟技术的时候,主机、 NVMe控制器和存储单元能够实现本发明实施例的设备状态的检测方法。
本发明实施例中,在主机中设置用于表征SSD设备的活跃状态的心跳位。具体地,如图3所示,所述主机(Host)上设置有用于存储任务指令的任务队列(Submission Queue)以及用于存储处理结果的完成队列(Completion Queue),其中,所述任务队列中的首个任务指令(Head)和末个任务指令(Tail)的位置分别通过第一指示信息(Head Pointer 1)和第二指示信息(Tail Pointer 1)进行标识,所述完成队列中的首个处理结果(Head)和末个处理结果(Tail)的位置分别通过第三指示信息(Head Pointer 2)和第四指示信息(TailPointer 2) 进行标识。
基于此,基于所述第二指示信息(Tail Pointer 1),在所述任务队列中的末个任务指令(假设位置为SQT)的后一个位置处(SQT+1)设置用于表征SSD 设备的活跃状态的心跳位;和/或,
基于所述第三指示信息(Head Pointer 2),在所述完成队列中的首个处理结果(假设位置为CQH)的后一个位置处(CQH-1)设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,如图1所示,所述主机中设置有管理队列组(Admin QueuePair),以及一个以上I/O队列组(I/O Queue Pair),其中,所述管理队列组包括管理任务队列(Admin Submission Queue)和管理完成队列(Admin Completion Queue),所述I/O队列组包括I/O任务队列(I/O Submission Queue)和I/O完成队列(I/O Completion Queue);在一实施方式中,在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备的活跃状态的心跳位。
步骤202:当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述 SSD设备的活跃状态同步至所述心跳位。
在一实施方式中,活跃状态对应的心跳值为1,非活跃状态对应的心跳值为0。可见,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述 SSD设备的活跃状态“1”同步至所述心跳位,这时,心跳位的心跳值为1。
在另一实施方式中,活跃状态对应的心跳值为0,非活跃状态对应的心跳值为1。可见,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述 SSD设备的活跃状态“0”同步至所述心跳位,这时,心跳位的心跳值为0。
本发明实施例中,心跳位的位置位于任务队列中的末个任务指令(假设位置为SQT)的后一个位置处(SQT+1),也可以位于完成队列中的首个处理结果 (假设位置为CQH)的后一个位置处(CQH-1)。NVMe控制器将所述SSD设备的活跃状态同步至SQT+1或CQH-1,也可以同时同步至SQT+1和CQH-1。
本发明实施例中,由于任务队列和完成队列是不断更新的,因此,SQT和 CQH也是不断更新的。
基于此,当所述任务队列中的任务指令发生更新时,所述NVMe驱动器将更新后的所述第一指示信息和第二指示信息发送给所述NVMe控制器;所述 NVMe控制器基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位;
当所述完成队列中的处理结果发生更新时,所述NVMe驱动器将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位。
步骤203:通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值。
本发明实施例中,在所述NVMe控制器更新所述心跳位之前,由于NVMe 控制器将SSD设备的活跃状态同步至了原心跳位上,因此,所述NVMe驱动器检测更新前的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,在所述NVMe控制器更新所述心跳位之后,由于NVMe 控制器将SSD设备的活跃状态同步至了新心跳位上,因此,所述NVMe驱动器检测更新后的心跳位,以获得所述心跳位的心跳值。
步骤204:当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
在一实施方式中,第一数据为1,第二数据为0,心跳位的心跳值为1时, SSD设备处于活跃状态,心跳位的心跳值为0时,SSD设备处于非活跃状态。
在另一实施方式中,第一数据为0,第二数据为1,心跳位的心跳值为0 时,SSD设备处于活跃状态,心跳位的心跳值为1时,SSD设备处于非活跃状态。
本发明实施例的技术方案,在NVMe接口标准定义的数据结构中增加一个心跳(Heart-Beat)位,通过NVMe控制器主动刷新该心跳位,使主机可以查询到SSD设备的存活状态,从而解决了SSD设备存活状态获取不及时和不直接的问题。
图4为本发明实施例的设备状态的检测方法的流程示意图二,如图4所示,所述设备状态的检测方法包括以下步骤:
步骤401:在主机中设置用于表征SSD设备的活跃状态的心跳位,其中,所述SSD设备包括NVMe控制器。
本发明实施例中,主机一般包括CPU和内存,此外,还包括一些其他硬件,如电源、以及输入输出控制器和接口等。
本发明实施例中,SSD设备是一种具有存储功能以及读取功能的设备,SSD 设备包括SSD控制器,在一实施方式中,SSD设备采用NVMe协议,因而SSD 控制器也可以称为NVMe控制器。NVMe控制器负责主机与SSD设备中的存储单元之间的交互。
在一实施方式中,主机被虚拟化为多个VM,相应地,NVMe控制器被虚拟化为多个NVMe Controller VF,SSD设备中的存储单元被虚拟化为多个虚拟存储单元。这样,一组VM、NVMe Controller VF、虚拟存储单元之间就能够实现本发明实施例的设备状态的检测方法。当然,不采集虚拟技术的时候,主机、 NVMe控制器和存储单元能够实现本发明实施例的设备状态的检测方法。
本发明实施例中,在主机中设置用于表征SSD设备的活跃状态的心跳位。具体地,如图3所示,所述主机(Host)上设置有用于存储任务指令的任务队列(Submission Queue)以及用于存储处理结果的完成队列(Completion Queue),其中,所述任务队列中的首个任务指令(Head)和末个任务指令(Tail)的位置分别通过第一指示信息(Head Pointer 1)和第二指示信息(Tail Pointer 1)进行标识,所述完成队列中的首个处理结果(Head)和末个处理结果(Tail)的位置分别通过第三指示信息(Head Pointer 2)和第四指示信息(TailPointer 2) 进行标识。
基于此,基于所述第二指示信息(Tail Pointer 1),在所述任务队列中的末个任务指令(假设位置为SQT)的后一个位置处(SQT+1)设置用于表征SSD 设备的活跃状态的心跳位;和/或,
基于所述第三指示信息(Head Pointer 2),在所述完成队列中的首个处理结果(假设位置为CQH)的后一个位置处(CQH-1)设置用于表征SSD设备的活跃状态的心跳位。
本发明实施例中,如图1所示,所述主机中设置有管理队列组(Admin QueuePair),以及一个以上I/O队列组(I/O Queue Pair),其中,所述管理队列组包括管理任务队列(Admin Submission Queue)和管理完成队列(Admin Completion Queue),所述I/O队列组包括I/O任务队列(I/O Submission Queue)和I/O完成队列(I/O Completion Queue);在一实施方式中,在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备的活跃状态的心跳位。
步骤402:当所述SSD设备处于活跃状态时,所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,作为所述心跳位的心跳值。
在一实施方式中,活跃状态对应的心跳值为1(第一数据),非活跃状态对应的心跳值为0(第二数据)。可见,当所述当SSD设备处于活跃状态时,所述 NVMe控制器将所述SSD设备的活跃状态“1”同步至所述心跳位,这时,心跳位的心跳值为1。
在另一实施方式中,活跃状态对应的心跳值为0(第一数据),非活跃状态对应的心跳值为1(第二数据)。可见,当所述当SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态“0”同步至所述心跳位,这时,心跳位的心跳值为0。
本发明实施例中,心跳位的位置位于任务队列中的末个任务指令(假设位置为SQT)的后一个位置处(SQT+1),也可以位于完成队列中的首个处理结果 (假设位置为CQH)的后一个位置处(CQH-1)。NVMe控制器将所述SSD设备的活跃状态同步至SQT+1或CQH-1,也可以同时同步至SQT+1和CQH-1。
本发明实施例中,由于任务队列和完成队列是不断更新的,因此,SQT和 CQH也是不断更新的。
基于此,当所述任务队列中的任务指令发生更新时,所述NVMe驱动器将更新后的所述第一指示信息和第二指示信息发送给所述NVMe控制器;所述 NVMe控制器基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位;
当所述完成队列中的处理结果发生更新时,所述NVMe驱动器将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位。
步骤403:所述NVMe驱动器按照第二周期读取所述心跳位上的数据,当读取到的数据为所述第一数据时,确定心跳值为所述第一数据并将所述心跳位上的心跳值设置为第二数据。
本发明实施例中,NVMe驱动器读取到的数据为所述第一数据时,代表SSD 设备处于活跃状体,读取完后将第一数据置换为第二数据。这样,后续NVMe 控制器继续向心跳位上同步SSD设备的活跃状态。
例如:
1)心跳位初始状态由NVMe驱动器在内存中置为0。
2)NVMe控制器以一定的时间间隔(心跳周期),通过PCIe DMA写操作,把主机内存中的心跳位反复置1。
3)NVMe驱动器采用查询方式读取主机内存中的心跳位,当发现心跳位为 1时,即为检测到一次心跳,然后NVMe驱动器把心跳位清0;NVMe驱动器反复执行上述查询和清0操作。
这里,置1和清0的操作是逻辑上的概念,实际实现可以采用“置1清0”或“置0清1”。
本发明实施例中,在所述NVMe控制器更新所述心跳位之前,由于NVMe 控制器将SSD设备的活跃状态同步至了原心跳位上,因此,所述NVMe驱动器检测更新前的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,在所述NVMe控制器更新所述心跳位之后,由于NVMe 控制器将SSD设备的活跃状态同步至了新心跳位上,因此,所述NVMe驱动器检测更新后的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,第一周期和第二周期可以采用自动同步的方式来实现:设置所述第二周期小于等于所述第一周期;
按照预设的步长增大所述第二周期,并基于每次变化的第二周期,控制所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,且所述NVMe 驱动器按照第二周期读取所述心跳位上的数据;当所述NVMe驱动器在预设时长内读取到的心跳值满足预设条件时,停止增大所述第二周期,得到与所述第一周期同步的第二周期。
例如:NVMe驱动器和NVMe控制器之间采用自同步的方式实现心跳频率的同步,不需要预先约定心跳频率。NVMe控制器以固定的时间间隔Tc来刷新心跳位。NVMe驱动器在启动后的初始化阶段,调整自身的查询间隔Td来与 NVMe控制器的Tc同步。具体方法如下:
1)NVMe驱动器以小于Tc的时间间隔Td来查询心跳状态(也即心跳值);
2)当查询到1次或多次无心跳状态时,表明Td间隔过短;
3)NVMe驱动器以一定的步长(比如m%)增大Td的间隔;
4)当Td增大到没有连续的无心跳状态时,表明Td大于或等于Tc;
5)查询心跳位多次,直到没有连续的无心跳状态时,停止Td的增大,这时,Td和Tc同步。
步骤404:当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
在一实施方式中,第一数据为1,第二数据为0,心跳位的心跳值为1时, SSD设备处于活跃状态,心跳位的心跳值为0时,SSD设备处于非活跃状态。
在另一实施方式中,第一数据为0,第二数据为1,心跳位的心跳值为0 时,SSD设备处于活跃状态,心跳位的心跳值为1时,SSD设备处于非活跃状态。
本发明实施例的技术方案,在NVMe接口标准定义的数据结构中增加一个心跳(Heart-Beat)位,通过NVMe控制器主动刷新该心跳位,使主机可以查询到SSD设备的存活状态,从而解决了SSD设备存活状态获取不及时和不直接的问题。
图5为本发明实施例的心跳位的设置流程图,本实施例中,利用NVMe数据结构和刷新/查询机制,最小化NVMe Driver和NVMe Controller的改动,如图5所示,包括以下步骤:
步骤501:在Submission Queue的Tail Pointer(SQT)后一个位置,即SQT+1 位置的64Byte区域选定一个位,约定为Driver和Controller的心跳位。
这里,Tail Pointer(SQT)后一个位置没有定义有效的Submission Queue输入(Entry),因此,可以设置为心跳位。
由于SQT由NVMe Driver更新给NVMe Controller,当NVMe Driver更新 SQT后,NVMe Controller不会立即在新的位置刷新心跳值,所以NVMe Driver 仍然需要在旧的SQT+1位置查询心跳位,直到NVMe Controller更新了心跳位刷新的位置后,NVMe Driver在旧的SQT+1位置查询不到心跳位后,NVMe Driver才更新到新的SQT+1位置查询心跳位。
步骤502:在Completion Queue的Head Pointer(CQH)后一个位置,即 CQH-1位置的16Byte区域选定一个位,约定为Driver和Controller的心跳位。
这里,由于Head Pointer(CQH)后一个位置没有定义有效的Completion QueueEntry,因此,可以设置为心跳位。
由于CQH由NVMe Driver更新给NVMe Controller,当NVMe Driver更新 CQH后,NVMe Controller不会立即在新的位置刷新心跳值,所以NVMe Driver 仍然需要在旧的CQH-1位置查询心跳位,直到NVMe Controller更新了心跳位刷新的位置后,NVMe Driver在旧的CQH-1位置查询不到心跳位后,NVMe Driver才更新到新的CQH-1位置查询心跳位。
上述两个可选的位置,其物理位置都在主机内存中,NVMe Driver仅需要查询内存中的约定位,就可以实现查询心跳值,不需要通过PCIe访问NVMe Controller的寄存器。
图6为本发明实施例的电子设备的结构组成示意图一,如图6所示,所述电子设备包括:主机601、SSD设备602,其中,所述主机601中设置用于表征 SSD设备602的活跃状态的心跳位,所述SSD设备602包括NVMe控制器6021,所述主机601包括NVMe驱动器6011;
所述NVMe控制器6021,用于当所述当SSD设备602处于活跃状态时,将所述SSD设备602的活跃状态同步至所述心跳位;
所述NVMe驱动器6011,用于检测所述主机601中的所述心跳位,以获得所述心跳位的心跳值;其中,当所述心跳位的心跳值为第一数据时,确定所述 SSD设备602处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述 SSD设备602处于非活跃状态。
本发明实施例中,所述主机601上设置有用于存储任务指令的任务队列以及用于存储处理结果的完成队列,其中,所述任务队列中的首个任务指令和末个任务指令的位置分别通过第一指示信息和第二指示信息进行标识,所述完成队列中的首个处理结果和末个处理结果的位置分别通过第三指示信息和第四指示信息进行标识;
所述主机601,用于基于所述第二指示信息,在所述任务队列中的末个任务指令的后一个位置处设置用于表征SSD设备602的活跃状态的心跳位;和/ 或,
基于所述第三指示信息,在所述完成队列中的首个处理结果的后一个位置处设置用于表征SSD设备602的活跃状态的心跳位。
本发明实施例中,所述NVMe驱动器6011,还用于当所述任务队列中的任务指令发生更新时,将更新后的所述第一指示信息和第二指示信息发送给所述 NVMe控制器6021;和/或,还用于当所述完成队列中的处理结果发生更新时,将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器6021;
所述NVMe控制器6021,还用于基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位;和/或,基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位。
本发明实施例中,所述NVMe驱动器6011,还用于在所述NVMe控制器更新所述心跳位之前,检测更新前的心跳位,以获得所述心跳位的心跳值;在所述NVMe控制器更新所述心跳位之后,检测更新后的心跳位,以获得所述心跳位的心跳值。
本发明实施例中,所述主机601中设置有管理队列组,以及一个以上输入输出I/O队列组,其中,所述管理队列组包括管理任务队列和管理完成队列,所述I/O队列组包括I/O任务队列和I/O完成队列;
所述主机601,具体用于在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备602的活跃状态的心跳位。
本发明实施例中,所述NVMe控制器6021,具体用于当所述SSD设备602 处于活跃状态时,按照第一周期在所述心跳位上设置第一数据,作为所述心跳位的心跳值;
所述NVMe驱动器6011,具体用于按照第二周期读取所述心跳位上的数据,当读取到的数据为所述第一数据时,确定心跳值为所述第一数据并将所述心跳位上的心跳值设置为第二数据。
本发明实施例中,所述NVMe驱动器6011,还用于设置所述第二周期小于等于所述第一周期;按照预设的步长增大所述第二周期,并基于每次变化的第二周期读取所述心跳位上的数据;在预设时长内读取到的心跳值满足预设条件时,停止增大所述第二周期,得到与所述第一周期同步的第二周期。
本领域技术人员应当理解,图6所示的电子设备中的各功能单元的实现功能可参照前述设备状态的检测方法的相关描述而理解。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种设备状态的检测方法,其特征在于,所述方法包括:
在主机中的非异失性存储器标准NVMe接口中增加一个用于表征固态硬盘SSD设备的活跃状态的心跳位,其中,所述SSD设备包括NVMe控制器,当所述SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;
通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值;
当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;
当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
2.根据权利要求1所述的设备状态的检测方法,其特征在于,所述主机上设置有用于存储任务指令的任务队列以及用于存储处理结果的完成队列,其中,所述任务队列中的首个任务指令和末个任务指令的位置分别通过第一指示信息和第二指示信息进行标识,所述完成队列中的首个处理结果和末个处理结果的位置分别通过第三指示信息和第四指示信息进行标识;
所述在主机中的非异失性存储器标准NVMe接口中增加一个用于表征SSD设备的活跃状态的心跳位,包括:
基于所述第二指示信息,在所述任务队列中的末个任务指令的后一个位置处设置用于表征SSD设备的活跃状态的心跳位;和/或,
基于所述第三指示信息,在所述完成队列中的首个处理结果的后一个位置处设置用于表征SSD设备的活跃状态的心跳位。
3.根据权利要求2所述的设备状态的检测方法,其特征在于,所述方法还包括:
当所述任务队列中的任务指令发生更新时,所述NVMe驱动器将更新后的所述第一指示信息和第二指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位的位置;
当所述完成队列中的处理结果发生更新时,所述NVMe驱动器将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;所述NVMe控制器基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位的位置。
4.根据权利要求3所述的设备状态的检测方法,其特征在于,所述方法还包括:
在所述NVMe控制器更新所述心跳位之前,所述NVMe驱动器检测更新前的心跳位,以获得所述心跳位的心跳值;
在所述NVMe控制器更新所述心跳位之后,所述NVMe驱动器检测更新后的心跳位,以获得所述心跳位的心跳值。
5.根据权利要求1所述的设备状态的检测方法,其特征在于,所述主机中设置有管理队列组,以及一个以上输入输出I/O队列组,其中,所述管理队列组包括管理任务队列和管理完成队列,所述I/O队列组包括I/O任务队列和I/O完成队列;
所述在主机中的非异失性存储器标准NVMe接口中增加一个用于表征SSD设备的活跃状态的心跳位,包括:
在所述管理队列组中的管理任务队列和/或所述管理完成队列中,设置用于表征SSD设备的活跃状态的心跳位。
6.根据权利要求1所述的设备状态的检测方法,其特征在于,当所述SSD设备处于活跃状态时,所述NVMe控制器将所述SSD设备的活跃状态同步至所述心跳位;通过所述主机中的NVMe驱动器检测所述心跳位,以获得所述心跳位的心跳值,包括:
当所述SSD设备处于活跃状态时,所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,作为所述心跳位的心跳值;
所述NVMe驱动器按照第二周期读取所述心跳位上的数据,当读取到的数据为所述第一数据时,确定心跳值为所述第一数据并将所述心跳位上的心跳值设置为第二数据。
7.根据权利要求6所述的设备状态的检测方法,其特征在于,所述方法还包括:
设置所述第二周期小于等于所述第一周期;
按照预设的步长增大所述第二周期,并基于每次变化的第二周期,控制所述NVMe控制器按照第一周期在所述心跳位上设置第一数据,且所述NVMe驱动器按照第二周期读取所述心跳位上的数据;
当所述NVMe驱动器在预设时长内读取到的心跳值满足预设条件时,停止增大所述第二周期,得到与所述第一周期同步的第二周期。
8.一种电子设备,其特征在于,所述电子设备包括:主机和固态硬盘SSD设备,其中,所述主机中的非异失性存储器标准NVMe接口中增加一个用于表征SSD设备的活跃状态的心跳位,所述SSD设备包括NVMe控制器,所述主机包括NVMe驱动器;
所述NVMe控制器,用于当所述SSD设备处于活跃状态时,将所述SSD设备的活跃状态同步至所述心跳位;
所述NVMe驱动器,用于检测所述主机中的所述心跳位,以获得所述心跳位的心跳值;其中,当所述心跳位的心跳值为第一数据时,确定所述SSD设备处于活跃状态;当所述心跳位的心跳值为第二数据时,确定所述SSD设备处于非活跃状态。
9.根据权利要求8所述的电子设备,其特征在于,所述主机上设置有用于存储任务指令的任务队列以及用于存储处理结果的完成队列,其中,所述任务队列中的首个任务指令和末个任务指令的位置分别通过第一指示信息和第二指示信息进行标识,所述完成队列中的首个处理结果和末个处理结果的位置分别通过第三指示信息和第四指示信息进行标识;
所述主机,用于基于所述第二指示信息,在所述任务队列中的末个任务指令的后一个位置处设置用于表征SSD设备的活跃状态的心跳位;和/或,
基于所述第三指示信息,在所述完成队列中的首个处理结果的后一个位置处设置用于表征SSD设备的活跃状态的心跳位。
10.根据权利要求9所述的电子设备,其特征在于,
所述NVMe驱动器,还用于当所述任务队列中的任务指令发生更新时,将更新后的所述第一指示信息和第二指示信息发送给所述NVMe控制器;和/或,还用于当所述完成队列中的处理结果发生更新时,将更新后的所述第三指示信息和第四指示信息发送给所述NVMe控制器;
所述NVMe控制器,还用于基于所述更新后的所述第二指示信息,重新确定所述任务队列中的末个任务指令的后一个位置,作为更新后的心跳位的位置;和/或,基于所述更新后的所述第三指示信息,重新确定所述完成队列中的首个处理结果的后一个位置,作为更新后的心跳位的位置。
CN201710888606.7A 2017-09-27 2017-09-27 一种设备状态的检测方法及电子设备 Active CN107678919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710888606.7A CN107678919B (zh) 2017-09-27 2017-09-27 一种设备状态的检测方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710888606.7A CN107678919B (zh) 2017-09-27 2017-09-27 一种设备状态的检测方法及电子设备

Publications (2)

Publication Number Publication Date
CN107678919A CN107678919A (zh) 2018-02-09
CN107678919B true CN107678919B (zh) 2020-09-25

Family

ID=61137453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710888606.7A Active CN107678919B (zh) 2017-09-27 2017-09-27 一种设备状态的检测方法及电子设备

Country Status (1)

Country Link
CN (1) CN107678919B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032859A (zh) * 2018-06-26 2018-12-18 郑州云海信息技术有限公司 一种nvme ssd逻辑块检测方法、系统及相关装置
CN112148377B (zh) * 2020-09-28 2023-02-10 深圳忆联信息系统有限公司 EFI Shell环境下防止SSD异常掉电的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176883A (zh) * 2011-12-20 2013-06-26 鸿富锦精密工业(深圳)有限公司 固态硬盘状态监控系统
CN103761177A (zh) * 2013-12-19 2014-04-30 记忆科技(深圳)有限公司 固态硬盘状态数据的检测及处理方法及其系统
CN104866411A (zh) * 2015-06-08 2015-08-26 北京奇虎科技有限公司 固态硬盘的监测及分析方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426122B (zh) * 2015-11-02 2019-09-03 深圳忆联信息系统有限公司 一种数据处理的方法、电子设备及存储装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176883A (zh) * 2011-12-20 2013-06-26 鸿富锦精密工业(深圳)有限公司 固态硬盘状态监控系统
CN103761177A (zh) * 2013-12-19 2014-04-30 记忆科技(深圳)有限公司 固态硬盘状态数据的检测及处理方法及其系统
CN104866411A (zh) * 2015-06-08 2015-08-26 北京奇虎科技有限公司 固态硬盘的监测及分析方法及装置

Also Published As

Publication number Publication date
CN107678919A (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
US10997093B2 (en) NVME data processing method and NVME device
EP3255527B1 (en) Remote keyboard-video-mouse technologies
US9921933B2 (en) System and method for indicator light control of storage devices
TWI556113B (zh) 可熱插拔的計算系統、電腦實施方法及系統
KR102209525B1 (ko) 마이크로 서버, mac 주소 할당 방법 및 컴퓨터 판독가능 기록매체
EP2843557A1 (en) Processor module, server system and method of controlling processor module
US20180109514A1 (en) Authentication-free configuration for service controllers
CN101452369A (zh) 用于控制usb大容量存储设备的逻辑单元的方法和系统
US9146580B2 (en) System and method for multiple backplane time synchronization
US10019402B2 (en) Flexible NVME drive management solution via multiple processor and registers without multiple input/output expander chips
CN107678919B (zh) 一种设备状态的检测方法及电子设备
US11494221B2 (en) Hardware control core controlling operation of hardware devices by executing device drivers within the hardware control core used by virtual machine cores via shared memory having an uplink and downlink memory
CN112765082B (zh) 多主机仲裁方法、装置和可读存储介质
CN104572400A (zh) 一种单bmc管理多计算板的管理方法及其装置
CN105488004A (zh) 一种服务器开关机状态下的i2c线路复用控制逻辑方法
US20150058660A1 (en) Multimaster serial single-ended system fault recovery
JP5780157B2 (ja) 計算機、並列計算機システム、同期方法、及びコンピュータプログラム
US11436176B2 (en) Semiconductor integrated circuit and operation method thereof
CN112667483A (zh) 用于服务器主板的内存信息读取装置、方法及服务器
WO2023016379A1 (zh) 计算机系统、基于PCIe设备的控制方法及相关设备
US10579130B2 (en) Storage device having a serial communication port
TWI630485B (zh) 擴展主控制器和其操作方法
CN109062618B (zh) 一种服务器单节点功耗封顶固件的开发方法、系统及介质
CN105446654A (zh) 服务器控制方法及机架控制器
JP5459549B2 (ja) コンピュータシステム及びその余剰コアを用いた通信エミュレート方法

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