一种获取日志的方法、系统、设备以及存储介质与流程

文档序号:31708966发布日期:2022-10-01 14:10阅读:169来源:国知局
一种获取日志的方法、系统、设备以及存储介质与流程

1.本发明涉及存储领域,具体涉及一种获取日志的方法、系统、设备以及存储介质。


背景技术:

2.虽然固态硬盘在出厂前经历了大量的测试和验证,但在实际应用中面对各种各样的环境,可能还会出现问题,为了快速找到导致问题的原因,就需要导出固态硬盘在运行过程中保存在flash中的日志。常用的导出日志的方式是使用串口方式,但串口依赖于硬件,增加了成本,同时在固态硬盘的外壳上引出接口也不方便。还有的方式是把固态硬盘的本地存储空间通过基地址寄存器bar映射到主机内存空间,通过直接内存读取的方式把日志导出,这种方式导出日志速度快,但对于有些版本的主机系统内核,或者有些客户自己定制的主机系统内核,不允许额外的映射内存空间或者映射后不允许对该内存空间进行读写,这时可能要把固态硬盘移动到其他适合的主机上才能导出日志,这就造成了很多的麻烦。有的方式是使用nvme命令导出日志,但有的ssd异常会导致nvme设备不能识别。


技术实现要素:

3.有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种获取日志的方法,包括以下步骤:
4.响应于硬盘上电,将所述硬盘的配置空间映射到主机的内存地址空间;
5.在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器;
6.响应于所述主机访问所述内存地址空间,触发生成tlp信息;
7.基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志。
8.在一些实施例中,基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志,进一步包括:
9.所述主机向所述控制寄存器写入获取随机数命令并向所述地址寄存器写入待获取的部分随机数的顺序;
10.响应于所述控制寄存器接收到所述获取随机数命令,根据所述地址寄存器中的值将对应顺序的部分随机数写入到所述数据寄存器,使所述主机通过读所述数据寄存器获取所述数据寄存器中对应顺序的部分随机数。
11.在一些实施例中,还包括:
12.所述主机获取所述硬盘对应的密钥;
13.利用所述密钥对得到的多个部分随机数按顺序组合后的完整随机数进行加密产生完整验证数据;
14.所述主机向所述控制寄存器写入写验证数据命令并向所述地址寄存器写入待写入的部分验证数据的顺序,以及向所述数据寄存器写入对应顺序的所述待写入的部分验证数据;
15.响应于所述硬盘收到所述完整验证数据后,利用返回给主机的随机数和所述密钥生成校验数据并与所述完整验证数据进行比较;
16.响应于所述校验数据与所述完整验证数据相同,设置验证成功标志以继续读取日志。
17.在一些实施例中,还包括:
18.响应于所述校验数据与所述完整验证数据不相同,所述硬盘基于所述tlp信息不做任何操作。
19.在一些实施例中,基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志,进一步包括:
20.所述主机向所述控制寄存器写入所述tlp信息,所述tlp信息包括导出日志命令、获取日志起始地址命令以及获取日志长度命令;
21.响应于所述控制寄存器接收到所述导出日志命令,将所述日志从flash中导入到ddr中;
22.响应于所述控制寄存器接收到所述获取日志起始地址命令,将所述ddr中日志的起始地址写入到所述数据寄存器,以使所述主机通过读所述数据寄存器获取所述ddr中日志的起始地址;
23.响应于所述控制寄存器接收到所述获取日志长度命令,将所述ddr中日志的长度写入所述数据寄存器,以使所述主机通过读所述数据寄存器获取所述ddr中日志的长度。
24.在一些实施例中,还包括:
25.所述主机向所述控制寄存器写入获取日志命令并向所述地址寄存器写入待获取的日志的地址;
26.响应于所述控制寄存器接收到所述获取日志命令,根据所述地址寄存器中的地址确定待返回的日志,其中所述待返回的日志的地址偏移大于所述待获取的日志的地址偏移;
27.将所述待返回的日志写入所述数据寄存器以使所述主机通过读所述数据寄存器获取所述待返回的日志,并根据所述待返回的日志的地址偏移确定下一次向所述地址寄存器写入的待获取的日志的地址。
28.在一些实施例中,在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器,进一步包括:
29.在所述硬盘的配置空间中分配控制寄存器、高位地址寄存器、低位地址寄存器和数据寄存器。
30.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种获取日志的系统,包括:
31.映射模块,配置为响应于硬盘上电,将所述硬盘的配置空间映射到主机的内存地址空间;
32.分配模块,配置为在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器;
33.生成模块,配置为响应于所述主机访问所述内存地址空间,触发生成tlp信息;
34.获取模块,配置为基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或
所述数据寄存器以获取所述日志。
35.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
36.至少一个处理器;以及
37.存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种获取日志的方法的步骤。
38.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种获取日志的方法的步骤。
39.本发明具有以下有益技术效果之一:本发明提出的方案通过在硬盘的配置空间中使用多个寄存器以及通过tlp消息读取和写入数据,以此来获取日志,不依赖于主机系统内核特性和外部硬件辅助。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
41.图1为本发明的实施例提供的获取日志的方法的流程示意图;
42.图2为本发明的实施例提供的在硬盘的配置空间中分配寄存器的示意图;
43.图3为本发明的实施例提供的主机获取随机数以及向硬盘写入验证数据的流程框图;
44.图4为本发明的实施例提供的主机获取日志流程框图;
45.图5为本发明的实施例提供的获取日志的系统的结构示意图;
46.图6为本发明的实施例提供的计算机设备的结构示意图;
47.图7为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
48.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
49.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
50.在本发明的实施例中,ddr,double data rate sdram,即双倍速率的sdram;
51.bar,base address registers。基址寄存器存在于pcie配置空间中,用于确定功能所需的系统内存空间数量,并为映射到功能内存空间提供基地址。基址寄存器可以映射到内存空间或i/o空间。pcie type0中一般有6个bar,bar0-bar5。
52.rc,root complex。在pci express(pcie)系统中,根复合体(root complex)设备将处理器和内存子系统连接到由一个或多个交换设备组成的pci express交换结构。
53.tlp,transaction layer packet。
54.根据本发明的一个方面,本发明的实施例提出一种获取日志的方法,如图1所示,其可以包括步骤:
55.s1,响应于硬盘上电,将所述硬盘的配置空间映射到主机的内存地址空间;
56.s2,在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器;
57.s3,响应于所述主机访问所述内存地址空间,触发生成tlp信息;
58.s4,基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志。
59.本发明提出的方案通过使用tlp消息读写pcie寄存器来传输固态硬盘日志的方式,但访问pcie寄存器很容易,不需要额外的软件工具,只要能构建tlp消息,就能对寄存器进行访问,不依赖于主机系统内核特性和外部硬件辅助。
60.在一些实施例中,s1,响应于硬盘上电,将所述硬盘的配置空间映射到主机的内存地址空间,具体的,如图2所示,每个固态硬盘中都有这样一段空间,主机软件可以通过读取它获得该设备的一些信息,也可以通过它来配置该设备,这段空间就称为pcie的配置空间。在固态硬盘上电的时候,主机系统把pcie设备开放的空间映射到主机的内存地址空间,主机要访问pcie设备空间,只需访问对应的内存地址空间,rc检查该内存地址,如果发现该内存空间地址是某个pcie设备空间的映射,就会触发其产生tlp,去访问对应的pcie设备,读取或写入pcie设备。
61.一个pcie设备,可能有若干个内部空间需要映射到主机系统的内存空间,设备出厂时,这些空间的大小和属性都写在configuration bar寄存器里面,上电后,主机系统软件读取这些bar,分别对其分配对应的系统内存地址空间,并把相应的内存基地址写回到bar。
62.在一些实施例中,在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器,进一步包括:
63.在所述硬盘的配置空间中分配控制寄存器、高位地址寄存器、低位地址寄存器和数据寄存器。
64.具体的,虽然一个pcie设备可能会有若干个内部空间,但有的主机系统并不会对所有内部空间进行映射或者映射后不能使用。但会至少映射一个pcie配置空间,在该配置空间中访问pcie的能力寄存器,主机通过映射的内存地址空间读取或写入数据,以获得固态硬件的能力和属性配置,任何一个主机系统都必须能够映射这块空间,否则将不能识别pcie设备。本发明获取日志时使用的寄存器就是在该配置空间中,申请一块没有使用的地址空间,分配4个寄存器,分别为控制寄存器、地址寄存器高32bit、地址寄存器低32bit、数据寄存器。每个寄存器存放32bit的数据。如图2所示,bar0和bar1记录主机系统映射的内存空间地址,主机通过访问内存空间地址来访问pcie设备的能力寄存器、msix中断等信息。发明使用的4个寄存器就是从寄存器区剩余空间中申请的一块地址空间。主机可以通过tlp消息读写操作这4个寄存器。
65.其中,控制寄存器:主机向控制寄存器写入不同的控制命令,通知固态硬盘接下来的操作。控制命令主要分为:获取随机数命令get_random、写入验证数据命令verify、导出日志到ddr中的命令log2ddr、获取日志起始地址高/低32bit的命令get_addru/get_addrl、
获取日志长度高/低32bit的命令get_lenu/get_lenl、获取日志的命令get_log。
66.地址寄存器:当主机要获取日志时,主机向这2个寄存器写入要获取的日志所在的地址。主机向数据寄存器写入数据时,可以通过这2个寄存器指定是第几个32bit的数据。
67.数据寄存器:主机根据不同的命令,通过该寄存器读取或写入数据。
68.需要说明的是,可以根据ddr中的数据地址和数据大小决定分配一个地址寄存器还是地址寄存器高32bit、地址寄存器低32bit两个地址寄存器。例如,当ddr中的数据和地址均以64bit表示时,可以分配地址寄存器高32bit、地址寄存器低32bit两个地址寄存器,分别表示高位地址(左侧32bit地址)和低位地址(右侧32bit地址)以此来构成64bit。
69.在一些实施例中,基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志,进一步包括:
70.所述主机向所述控制寄存器写入获取随机数命令并向所述地址寄存器写入待获取的部分随机数的顺序;
71.响应于所述控制寄存器接收到所述获取随机数命令,根据所述地址寄存器中的值将对应顺序的部分随机数写入到所述数据寄存器,使所述主机通过读所述数据寄存器获取所述数据寄存器中对应顺序的部分随机数。
72.在一些实施例中,还包括:
73.所述主机获取所述硬盘对应的密钥;
74.利用所述密钥对得到的多个部分随机数按顺序组合后的完整随机数进行加密产生完整验证数据;
75.所述主机向所述控制寄存器写入写验证数据命令并向所述地址寄存器写入待写入的部分验证数据的顺序,以及向所述数据寄存器写入对应顺序的所述待写入的部分验证数据;
76.响应于所述硬盘收到所述完整验证数据后,利用返回给主机的随机数和所述密钥生成校验数据并与所述完整验证数据进行比较;
77.响应于所述校验数据与所述完整验证数据相同,设置验证成功标志以继续读取日志。
78.在一些实施例中,还包括:
79.响应于所述校验数据与所述完整验证数据不相同,所述硬盘基于所述tlp信息不做任何操作。
80.具体的,获取日志前,固态硬盘需验证获取方的合法性(验证中使用的对称加密算法适情况而定,如3des、sm4,下面描述以sm4算法为例,密钥共16字节,对16字节的随机数加密,产生16字节的验证数据),主机通过命令寄存器从固态硬盘中获取16字节的随机数,使用已知的出厂时写在固态硬盘中的密钥,对随机数加密,产生验证数据,并写入到固态硬盘中,固态硬盘以同样算法对随机数加密,产生验证数据进行比较,验证成功后,设置验证成功标志,才会响应后续命令,导出日志。
81.这里使用对随机数进行加密验证,保证了每次验证的随机性,有防重放作用。同时该验证成功标志在经过一个控制器级别复位后,该标志会被清空。
82.操作流程如图3所示,图中以c代表命令寄存器,au表示地址高32bit寄存器,al表示地址低32bit寄存器,d表示数据寄存器。
83.在一些实施例中,基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志,进一步包括:
84.所述主机向所述控制寄存器写入所述tlp信息,所述tlp信息包括导出日志命令、获取日志起始地址命令以及获取日志长度命令;
85.响应于所述控制寄存器接收到所述导出日志命令,将所述日志从flash中导入到ddr中;
86.响应于所述控制寄存器接收到所述获取日志起始地址命令,将所述ddr中日志的起始地址写入到所述数据寄存器,以使所述主机通过读所述数据寄存器获取所述ddr中日志的起始地址;
87.响应于所述控制寄存器接收到所述获取日志长度命令,将所述ddr中日志的长度写入所述数据寄存器,以使所述主机通过读所述数据寄存器获取所述ddr中日志的长度。
88.在一些实施例中,还包括:
89.所述主机向所述控制寄存器写入获取日志命令并向所述地址寄存器写入待获取的日志的地址;
90.响应于所述控制寄存器接收到所述获取日志命令,根据所述地址寄存器中的地址确定待返回的日志,其中所述待返回的日志的地址偏移大于所述待获取的日志的地址偏移;
91.将所述待返回的日志写入所述数据寄存器以使所述主机通过读所述数据寄存器获取所述待返回的日志,并根据所述待返回的日志的地址偏移确定下一次向所述地址寄存器写入的待获取的日志的地址。
92.具体的,如图4所示,主机向命令寄存器写入log2ddr的值,通知ssd把日志从flash中导入到ddr中,如果验证没有通过,则ssd不做任何操作。验证通过,则ssd会把日志从flash中读出到ddr中。主机延时几秒后,再向命令寄存器写入get_addru,获取日志在ddr中的首地址,如果没有验证通过,ssd会在主机读取数据寄存器时返回全0,验证通过,则在主机读取数据寄存器时返回日志在ddr中首地址的高32bit值。get_addrl、get_lenu、get_lenl命令类似。这时主机获取到了日志在ssd中的位置和总长度。主机通过向命令寄存器写入get_log的值,向地址寄存器写入要读取的地址的值,ssd在主机读取数据寄存器时,就把这个位置的32bit的日志数据返回,主机通过改变地址的值,不断的从ssd中读取出日志信息。
93.需要说明的是,每一次主机向硬盘写入的地址均只对应一个字节(8bit)的日志,但是由于数据寄存器的大小为32bit,因此硬盘会向主机返回四个字节的(32bit)日志,因此主机下一次在获取数据时,向地址寄存器中写入的地址比上一次的地址回加4。
94.发明提供的方案在获取日志前需要提供验证信息,验证通过后方可获取日志,且加密的明文是随机数,有防重放作用,保证日志不能被随意获取,确保信息的安全。使用tlp消息读写访问pcie寄存器的方式导出日志,不依赖于主机系统环境和固态硬件的串口硬件支持,使用灵活方便。
95.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种获取日志的系统400,如图5所示,包括:
96.映射模块401,配置为响应于硬盘上电,将所述硬盘的配置空间映射到主机的内存
地址空间;
97.分配模块402,配置为在所述硬盘的配置空间中分配控制寄存器、地址寄存器和数据寄存器;
98.生成模块403,配置为响应于所述主机访问所述内存地址空间,触发生成tlp信息;
99.获取模块404,配置为基于所述tlp信息访问所述控制寄存器、所述地址寄存器和/或所述数据寄存器以获取所述日志。
100.基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机设备501,包括:
101.至少一个处理器520;以及
102.存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种获取日志的方法的步骤。
103.基于同一发明构思,根据本发明的另一个方面,如图7所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序610,计算机程序610被处理器执行时执行如上的任一种获取日志的方法的步骤。
104.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
105.此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
106.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
107.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
108.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
109.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
110.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
111.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发
明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1