一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

检查硬盘是否支持SAS协议的方法、装置和计算机设备与流程

2023-03-08 12:08:42 来源:中国专利 TAG:

检查硬盘是否支持sas协议的方法、装置和计算机设备
技术领域
1.本发明涉及硬盘技术领域,特别是涉及一种检查硬盘是否支持sas协议的方法、装置、计算机设备和存储介质。


背景技术:

2.sas(serial attached scsi)即串行连接scsi,是新一代的scsi技术,和现在流行的serial ata(sata)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。sas是并行scsi接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,并且提供与sata硬盘的兼容性。
3.sas协议是标准的协议,但是对标准中定义的任何特性的支持都是可选的,每个厂家不一定都实现了所有的sas协议功能,当我们不确定该功能是否实现的时候,又不能直接操作,特别是trim、format、sanitize等高危操作,所以需要我们检查该功能是否支持,又不真正下发命令到盘片处理。目前,现有技术并并没有对每个命令都做了开关配置项查询,所以无法直观判断,并且直接操作有可能导致盘片数据丢失,对盘片造成实质性的伤害。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种检查硬盘是否支持sas协议的方法、装置、计算机设备和存储介质。
5.一种检查硬盘是否支持sas协议的方法,所述方法包括:
6.组装用于发送给盘片的cdb格式命令,所述cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段;
7.将组装好的cdb格式命令发送给盘片;
8.判断所述盘片是否返回附加信息invalid command operation code;
9.若返回附加信息invalid command operation code则表示下发的所述cdb格式命令为不支持的命令;
10.若没有返回附加信息invalid command operation code则表示下发的所述cdb格式命令为支持的命令。
11.在其中一个实施例中,所述组装用于发送给盘片的cdb格式命令,所述cdb格式命令第一个字节为操作码,最后一个字节为控制字段的步骤还包括:
12.所述cdb格式命令包括6个字节,其中,第一个字节为操作码,第六个字节控制字段为非0的数字,其他字段全部设置为0。
13.在其中一个实施例中,所述将组装好的cdb格式命令发送给盘片的步骤还包括:
14.通过工具sg_raw将组装好的6个字节cdb格式命令发送给盘片;
15.如果为不支持的操作码则会返回附加信息invalid command operation code,如果为支持的操作码则会继续解析cdb格式命令的其他字段。
16.在其中一个实施例中,所述方法还包括:
17.在linux环境下将上述规则封装脚本,通过封装后的脚本执行命令根据返回结果判断是否支持协议命令。
18.一种检查硬盘是否支持sas协议的装置,所述检查硬盘是否支持sas协议的装置包括:
19.组装模块,所述组装模块用于组装用于发送给盘片的cdb格式命令,所述cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段;
20.发送模块,所述发送模块用于将组装好的cdb格式命令发送给盘片;
21.判断模块,所述判断模块用于判断所述盘片是否返回附加信息invalid command operation code;
22.第一返回模块,所述第一返回模块用于若返回附加信息invalid command operation code则表示下发的所述cdb格式命令为不支持的命令;
23.第二返回模块,所述第二返回模块用于若没有返回附加信息invalid command operation code则表示下发的所述cdb格式命令为支持的命令。
24.在其中一个实施例中,所述组装模块还用于:
25.所述cdb格式命令包括6个字节,其中,第一个字节为操作码,第六个字节控制字段为非0的数字,其他字段全部设置为0。
26.在其中一个实施例中,所述发送模块还用于:
27.通过工具sg_raw将组装好的6个字节cdb格式命令发送给盘片;
28.如果为不支持的操作码则会返回附加信息invalid command operation code,如果为支持的操作码则会继续解析cdb格式命令的其他字段。
29.在其中一个实施例中,所述装置还包括:
30.封装模块,所述封装模块用于在linux环境下将上述规则封装脚本,通过封装后的脚本执行命令根据返回结果判断是否支持协议命令。
31.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
32.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
33.上述检查硬盘是否支持sas协议的方法、装置、计算机设备和存储介质,采用sas协议中标准规则,主机和盘片通信是通过发送cdb格式命令到盘片,盘片处理后回复响应。本发明可以将磁盘盘符和操作码结合起来,获取协议命令支持与否的结果,可以快速判断sas协议命令是否支持,同时又对盘片没有实质伤害,既快速又安全。
附图说明
34.图1为一个实施例中检查硬盘是否支持sas协议的方法的流程示意图;
35.图2为另一个实施例中检查硬盘是否支持sas协议的方法的流程示意图;
36.图3为再一个实施例中检查硬盘是否支持sas协议的方法的流程示意图;
37.图4为一个实施例中检查硬盘是否支持sas协议的装置的结构框图;
38.图5为另一个实施例中检查硬盘是否支持sas协议的装置的结构框图;
39.图6为一个实施例中计算机设备的内部结构图。
具体实施方式
40.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
41.sas协议是标准的协议,但是对标准中定义的任何特性的支持都是可选的,每个厂家不一定都实现了所有的sas协议功能,当我们不确定该功能是否实现的时候,又不能直接操作,特别是trim、format、sanitize等高危操作,所以需要我们检查该功能是否支持,又不真正下发命令到盘片处理。目前,现有技术并并没有对每个命令都做了开关配置项查询,所以无法直观判断,并且直接操作有可能导致盘片数据丢失,对盘片造成实质性的伤害。
42.基于此,本发明提出一种检查硬盘是否支持sas协议的方法,该方法旨在可以快速判断sas协议命令是否支持,同时又对盘片没有实质伤害。
43.在一个实施例中,如图1所示,提供了一种检查硬盘是否支持sas协议的方法,该方法包括:
44.步骤102,组装用于发送给盘片的cdb格式命令,cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段;
45.步骤104,将组装好的cdb格式命令发送给盘片;
46.步骤106,判断盘片是否返回附加信息invalid command operation code;
47.步骤108,若返回附加信息invalid command operation code则表示下发的cdb格式命令为不支持的命令;
48.步骤110,若没有返回附加信息invalid command operation code则表示下发的cdb格式命令为支持的命令。
49.在本实施例中,提供了一种检查硬盘是否支持sas协议的方法,该方法采用sas协议中标准规则,主机和盘片通信是通过发送cdb到盘片,盘片处理后回复响应。所以可以将磁盘盘符和操作码结合起来,获取协议命令支持与否的结果,具体包括如下步骤:
50.首先,组装用于发送给盘片的cdb格式命令,cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段。例如:将所有的命令都按照6个字节的cdb格式填写,除了第一个字节为操作码,第六个字节控制字段为非0的数字,这里使用01固定值即可,其他字段全部设置为0。
51.然后,将组装好的cdb格式命令发送给盘片;判断盘片是否返回附加信息invalid command operation code。具体地,在执行命令时,判断返回附加信息“invalid command operation code”的为不支持的命令,没有返回附加信息“invalid command operation code”的判断为支持的命令。可以理解的是,还可以将上述规则封装为脚本,方便快速的判断结果且对盘片没有实质性损害。
52.在本实施例中,采用sas协议中标准规则,主机和盘片通信是通过发送cdb格式命令到盘片,盘片处理后回复响应。本方案可以将磁盘盘符和操作码结合起来,获取协议命令支持与否的结果,可以快速判断sas协议命令是否支持,同时又对盘片没有实质伤害,既快速又安全。
53.在一个实施例中,如图2所示,提供了一种检查硬盘是否支持sas协议的方法,该方法还包括:
54.步骤202,cdb格式命令包括6个字节,其中,第一个字节为操作码,第六个字节控制字段为非0的数字,其他字段全部设置为0;
55.步骤204,通过工具sg_raw将组装好的6个字节cdb格式命令发送给盘片;
56.步骤206,如果为不支持的操作码则会返回附加信息invalid command operation code,如果为支持的操作码则会继续解析cdb格式命令的其他字段。
57.在本实施例中,由于sas协议规定的最低cdb字节格式为6个字节,因此将所有的命令都按照6个字节的cdb格式填写,除了第一个字节为操作码,第六个字节控制字段为非0的数字(非0校验会失败,不会执行),这里使用01固定值即可,其他字段全部设置为0。
58.使用通用工具sg_raw将往盘片发送组装好的命令,如果不支持的操作码,就会返回附加信息“invalid command operation code”,支持的操作码就会继续解析cdb其他字段,由于控制字段为非0,或者字段长度不满足cdb规定(有10字节、12字节等其他长度的cdb),则会解析失败,并不会真正执行命令。
59.最后,执行命令时判断返回附加信息“invalid command operation code”的为不支持的命令,没有返回附加信息“invalid command operation code”的判断为支持的命令。
60.在一个实施例中,如图3所示,提供了一种检查硬盘是否支持sas协议的方法,该方法包括:
61.步骤302,组装用于发送给盘片的cdb格式命令,cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段;
62.步骤304,将组装好的cdb格式命令发送给盘片;
63.步骤306,判断盘片是否返回附加信息invalid command operation code;
64.步骤308,若返回附加信息invalid command operation code则表示下发的cdb格式命令为不支持的命令;
65.步骤310,若没有返回附加信息invalid command operation code则表示下发的cdb格式命令为支持的命令;
66.步骤312,在linux环境下将上述规则封装脚本,通过封装后的脚本执行命令根据返回结果判断是否支持协议命令。
67.在本实施例中,可以将上述规则将规则封装为脚本,方便快速的判断结果,且对盘片没有实质性损害,并且可以同时做到实用性和安全性的要求。
68.下面为封装脚本样例,可以理解的是,也可以不封装。
69.linux环境上封装脚本check_sas_support.sh,将脚本上传到linux系统上任意目录。然后,执行chmod 755check_sas_support.sh命令添加权限,并执行./check_sas_support.sh$dev$opcode命令,即可返回结果。
70.如果不支持该协议命令返回$opcode is not supported,如果支持该协议命令返回$opcode is supported。
71.具体的变量说明如下:
72.$dev:磁盘盘符路径,比如:/dev/sdb。
73.$opcode:sas协议中命令的操作码,16进制,比如:inquiry命令的操作码,12。完整的命令为:./check_sas_support.sh/dev/sdb 12。
74.在本实施例中,将上述规则封装为脚本方便快速的判断结果,且对盘片没有实质性损害,可以同时做到实用性和安全性的要求。
75.应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
76.在一个实施例中,如图4所示,提供了一种检查硬盘是否支持sas协议的装置400,该装置包括:
77.组装模块401,所述组装模块用于组装用于发送给盘片的cdb格式命令,所述cdb格式命令第一个字节为操作码,最后一个字节为非0的控制字段;
78.发送模块402,所述发送模块用于将组装好的cdb格式命令发送给盘片;
79.判断模块403,所述判断模块用于判断所述盘片是否返回附加信息invalid command operation code;
80.第一返回模块404,所述第一返回模块用于若返回附加信息invalid command operation code则表示下发的所述cdb格式命令为不支持的命令;
81.第二返回模块405,所述第二返回模块用于若没有返回附加信息invalid command operation code则表示下发的所述cdb格式命令为支持的命令。
82.在一个实施例中,组装模块401还用于:
83.所述cdb格式命令包括6个字节,其中,第一个字节为操作码,第六个字节控制字段为非0的数字,其他字段全部设置为0。
84.在一个实施例中,发送模块402还用于:
85.通过工具sg_raw将组装好的6个字节cdb格式命令发送给盘片;
86.如果为不支持的操作码则会返回附加信息invalid command operation code,如果为支持的操作码则会继续解析cdb格式命令的其他字段。
87.在一个实施例中,如图5所示,提供了一种检查硬盘是否支持sas协议的装置400,该装置还包括:
88.封装模块406,所述封装模块用于在linux环境下将上述规则封装脚本,通过封装后的脚本执行命令根据返回结果判断是否支持协议命令。
89.关于检查硬盘是否支持sas协议的装置的具体限定可以参见上文中对于检查硬盘是否支持sas协议的方法的限定,在此不再赘述。
90.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种检查硬盘是否支持sas协
议的方法。
91.本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
92.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
93.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
94.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一种非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
95.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
96.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献