技术领域
[0001] 本发明涉及计算机技术领域,尤其涉及一种服务器硬盘存储链路测试方法、装置、电子设备及可读存储介质。
相关背景技术
[0002] 硬盘是服务器最主要的设备之一,主要用于存储数据,在服务器配置中被大量使用。同时云存储服务也依赖于高性能、高可靠性的硬盘来存储和访问大量数据。因此存储链路的稳定性是非常重要的。
[0003] 相关技术中,硬盘稳定性测试存储链路通常在特定的测试环境中进行,例如在固定的测试配置条件下,跑压力测试脚本及性能测试脚本验证存储链路的稳定性和硬盘性能来检测存储链路是否合格。
[0004] 而上述的测试环境可能与实际生产环境及应用场景存在差异。将待测硬盘插入固定的服务器配置中长时间使用,检测硬盘的稳定性和性能,此种方法验证链路的缺点是环境和条件过于单一,只覆盖了稳态下通过硬盘稳定性和性能指标来判断存储链路是否正常,没有覆盖到有外界干扰或者突然拔盘的条件下的测试场景,当前测试方法和测试结果无法完全反映存储链路的稳定性。
具体实施方式
[0027] 下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0028] 下面对本申请涉及的概念和提供的方案进行说明。
[0029] 硬盘是服务器最主要的设备之一,主要用于存储数据,在服务器配置中被大量使用,特别是随着虚拟化技术和云计算的普及,服务器硬盘的角色也在发生变化。在虚拟化环境中,单个物理服务器可以托管多个虚拟机(Virtual Machine,VM),每个虚拟机都有自己的操作系统和应用程序。这要求服务器硬盘具有足够的容量和性能来支持多个VM的同时运行。同时云存储服务也依赖于高性能、高可靠性的硬盘来存储和访问大量数据。因此存储链路的稳定性是非常重要的,但是在使用过程中,经常会遇到硬盘误拔或者突发断电,导致存储链路不稳定停止工作的问题,此时需要重新插入硬盘或者重启服务器,保障链路尽快恢复,使业务正常运行。而刚刚插入的盘或者上电的硬盘,需要适配原来的数据业务,这就要求硬盘所在的这个链路必须稳定且重新插入后能快速自适应原来的链路。
[0030] 本方法主要是模拟客户机房有硬盘损坏或者误拔盘后,需要更换硬盘或者重新插入硬盘测试存储链路稳定性的场景。更换或者重新插入硬盘后,检查链路主要通过检查机器上原有剩余硬盘和新硬盘的性能是否均衡、寄存器读写前后PCI信息对比、是否有数据丢失和降带宽、数据文件MD5(Message Digest Algorithm MD5,消息摘要算法)值校验的方法检查。通过此方法验证了存储链路包含硬盘、背板、CPU(Central Processing Unit,中央处理器)、rise卡的稳定性或者背板、raid控制器、硬盘链路的稳定性。具体方案如下。
[0031] 参考图1,其示出了本申请实施例提供的一种服务器硬盘存储链路测试方法的步骤流程图,所述服务器设置多个硬盘,所述硬盘包括第一分区和第二分区,所述方法包括:
[0032] 步骤101,获取每个所述硬盘各自的第一状态信息;所述第一状态信息包括第一设备信息、在所述硬盘的第一分区中存储数据文件的情况下,获取的所述数据文件的初始特征值以及对每个所述硬盘的第二分区进行读写测试,获取的初始读写状态值。
[0033] 在本发明实施例中,服务器可以设置多个硬盘,硬盘可以包括第一分区和第二分区,第一分区和第二分区可分别用于验证硬盘的不同性能。第一状态信息可以是表征硬盘的存储链路是否稳定的信息。例如,第一状态信息包括第一设备信息,第一设备信息可以是基于通过命令lspci得到的信息,lspci是一个Linux命令,用于列出系统中的PCI总线设备信息。PCI(Peripheral Component Interconnect,计算机总线标准)用于连接各种外部设备(如网卡、显卡、声卡等)到计算机主板上。通过运行lspci命令,可以查看系统中安装的PCI设备的详细信息,包括设备的厂商信息、设备ID、驱动程序信息等。lspci命令可以获取服务器中所有硬盘的设备信息,也可以单独获取任一硬盘的设备信息。
[0034] 进一步地,为了验证硬盘中存在数据文件的情况下,硬盘插拔是否会影响原数据文件的完整性,本申请将硬盘分为第一分区和第二分区,其中,第一分区可以为存储有数据文件的分区,通过第一分区中的数据文件,可以得到数据文件的初始特征值,其中,初始特征值可以是用于校验文件的值,例如,初始特征值可以是MD5值,通过对数据文件使用MD5算法计算,可以得到数据文件对应的MD5值,在硬盘插拔后,可再次计算数据文件的MD5值,以判断数据文件是否变化,从而验证存储链路的稳定性。
[0035] 硬盘的第二分区可以作为进行读写测试的分区,读写测试可以验证硬盘的性能,例如,读写测试可以用过fio(Flexible I/O Tester)命令进行,fio可以模拟各种读写模式和负载,帮助用户进行性能调优和测试。在使用fio进行读写数据时,首先需要编写一个配置文件来指定测试的参数和要执行的操作。例如,配置文件中的内容可以包括:读写模式,例如随机读写、读写块大小、数据大小、并发数和运行时间等,配置完成后,可使用fio命令进行测试,测试后,fio可以输出硬盘测试时每秒IO操作数量(IOPS)、响应时间(Latency)、带宽(Bandwidth)等表征硬盘性能的数据。通过对硬盘在正常插于服务器上、拔下以及再次插入后分别进行读写测试,可以确定硬盘的性能变化情况。
[0036] 具体地,此处以服务器前窗搭配6盘位的NVME硬盘为例,对本申请的方法进行说明。在初始状态下,即各硬盘正常连接于服务器时,在Linux系统下检查硬盘状态,确保硬盘在位及健康状态正常,同时通过命令lspci记录信息记录硬盘的寄存器数据,例如可以是对UESta和CESta记录,得到的数据如下示例:
[0037] Capabilities:[100v2]Advanced Error Reporting
[0038] UESta:DLP‑SDES‑TLP‑FCP‑CmpltTo‑CmpltAbrt‑UnxCmpl‑RxOF‑MaIfTLP‑ECRC‑UnsupReg‑ACSViol
[0039] CESta:RxErr‑BadTLP‑BadDLLP‑Rollover‑Timeout‑NonFatalErr.[0040] 上述数据没有加号则可说明硬盘寄存器状态正常。
[0041] 对每个硬盘进行分区得到第一分区和第二分区,同时格式化并存入第一分区单个数据文件,每个数据文件生成一个MD5值,如“Md5sum文件名>>beforeslot1.txt”用于后续校验使用。
[0042] 对第二分区进行读写测试,例如数据读写10分钟,并记录数据读写的数据,记录为数据1,并保存,例如对数据块4K的记录数据如下表1:
[0043] 表1
[0044]
[0045] 步骤102,控制目标硬盘所在槽位断电,获取除所述目标硬盘之外剩余硬盘各自对应的第二状态信息。
[0046] 在本发明实施例中,在确定了硬盘正常插于服务器上的第一状态信息后,可以控制目标硬盘所在槽位断电,获取除目标硬盘之外剩余硬盘各自对应的第二状态信息。目标硬盘可以是插于服务器上的任一硬盘,硬盘插接于服务器的背板上,因此,可以通过指令控制背板上插接目标硬盘的槽口断电,来模拟目标硬盘从服务器拔出的场景。
[0047] 在通过指令控制目标硬盘所在槽位断电后,目标硬盘不在位,此时,可以获取除目标硬盘之外剩余硬盘各自对应的第二状态信息,以判断目标硬盘拔出后,剩余硬盘的存储链路是否稳定。
[0048] 第二状态信息可以是表征在目标硬盘拔出后,剩余硬盘的存储链路是否稳定的信息。
[0049] 具体地,在目标硬盘拔出后,可以获取剩余硬盘对应的第二状态信息,例如,再次通过lspci获取剩余硬盘各自对应的设备信息,以及使用与步骤101同样的fio配置文件对剩余硬盘的第二分区进行读写测试,获取读写状态值,来判断目标硬盘拔出后,硬盘的读写状态以及设备信息是否受到影响。
[0050] 可选地,步骤102包括:
[0051] 子步骤1021,在确定所述目标硬盘不在位后,对除所述目标硬盘之外剩余硬盘的第二分区进行读写测试,获取中间读写状态值;
[0052] 子步骤1022,获取除所述目标硬盘之外的剩余硬盘各自对应的第二设备信息。
[0053] 在本发明实施例中,针对子步骤1021和子步骤1022,在控制目标硬盘所在槽位断电后,可以确定目标硬盘是否在位,若目标硬盘不在位,即说明目标硬盘当前的状态为拔出服务器的状态,可以对除所述目标硬盘之外剩余硬盘的第二分区进行读写测试,获取中间读写状态值,以及获取除所述目标硬盘之外的剩余硬盘各自对应的第二设备信息。
[0054] 参考表1,若对槽位1的硬盘断电,断电后确认硬盘不在位,可对剩余5个硬盘的第二分区进行读写10分钟,并记录每个硬盘的读写数据,记录为数据2,并保存。
[0055] 例如对剩余5个盘4K数据块的记录数据如下表2:
[0056] 表2
[0057]
[0058] 由于槽位1断电,因此,本次仅对剩余硬盘进行读写测试并采集数据,采集得到的数据可以与槽位1再次上电后得到的读写数据进行比较,确定硬盘的性能变化情况。
[0059] 可选地,步骤102包括:
[0060] 子步骤1023,通过第一预设命令控制目标硬盘所在槽位断电;
[0061] 在本发明实施例中,可以通过第一预设命令控制目标硬盘所在槽位断电,这样无需人工对硬盘插拔,即可模拟实际硬盘被拔出时,存储链路的稳定性验证场景,提升验证的效率,减少技术人员测试的工作操作。
[0062] 步骤103,控制所述目标硬盘所在槽位上电,获取所有硬盘各自对应的第三状态信息。
[0063] 在本发明实施例中,确定了目标硬盘拔出服务器后剩余硬盘的第二状态信息后,可以控制目标硬盘所在槽位上电,获取上电后,所有目标硬盘各自对应的第三状态信息。此处可以通过指令控制背板上插接目标硬盘的槽口上电,来模拟目标硬盘从服务器再次插入的场景。
[0064] 参考表1和表2,可以再次对槽位1所在位置硬盘上电,上电后确认槽位1硬盘在位正常,并对槽位1的硬盘执行读写操作10分钟,其他硬盘同样执行读写操作10分钟,共同记录读写数据为数据3,此时还对寄存器读写一次并通过命令lspci记录。例如:插入槽位1的硬盘后,记录6个盘4K数据块的性能如下表3:
[0065] 表3
[0066]
[0067] 通过命令lspci记录的设备信息如下示例:
[0068] Capabilities:[100v2]Advanced Error Reporting
[0069] UESta:DLP‑SDES‑TLP‑FCP‑CmpltTo‑CmpltAbrt‑UnxCmpl‑RxOF‑MaIfTLP‑ECRC‑UnsupReg‑ACSViol‑
[0070] CESta:RxErr‑BadTLP‑BadDLLP‑Rollover‑Timeout‑NonFatalErr‑[0071] 通过将表1、表2、表3的数据进行对比,可以确定目标硬盘的性能变化情况,以及除目标硬盘外,剩余硬盘是否在目标硬盘插拔后,存在性能下降的问题,进而判断出各个硬盘的存储链路稳定性状态。同样,在目标硬盘再次上电后,再次通过命令lspci采集设备信息,从上述示例可以看出,没有加号的异常项,说明存储链路正常。
[0072] 可选地,步骤103包括:
[0073] 子步骤1031,在确定所述目标硬盘重新上电后,获取每个硬盘各自对应的第三设备信息;
[0074] 子步骤1034,对所有硬盘的第二分区各自进行读写测试,获取最终读写状态值;
[0075] 子步骤1035,确定所述目标硬盘的第一分区中存储的数据文件对应的新的特征值。
[0076] 在本发明实施例中,针对子步骤1031至子步骤1035,在确定所述目标硬盘重新上电后,获取每个硬盘各自对应的第三设备信息,即可以通过命令lspci再次记录各个硬盘的寄存器数据;对所有硬盘的第二分区各自进行读写测试,获取最终读写状态值,参考表3,在目标硬盘再次上电后,再次进行读写测试并获取最终读写状态值。以及确定所述目标硬盘的第一分区中存储的数据文件对应的新的特征值。以将目标硬盘再次上电后获得的值与初始状态以及目标硬盘断电后获得的状态信息进行比较,确定各个硬盘的存储链路是否稳定。
[0077] 可选地,步骤103包括:
[0078] 子步骤1034,通过第二预设命令控制目标硬盘所在槽位上电。
[0079] 在本发明实施例中,可以通过第二预设命令控制目标硬盘所在槽位上电,这样无需人工对硬盘插拔,即可模拟实际硬盘被再次插入时,存储链路的稳定性验证场景,提升验证的效率,减少技术人员测试的工作操作。
[0080] 步骤104,通过对所述第一状态信息、第二状态信息以及第三状态信息的比较,确定所述硬盘的存储链路测试结果。
[0081] 在本发明实施例中,通过对所述第一状态信息、第二状态信息以及第三状态信息的比较,可以确定所述硬盘的存储链路测试结果。
[0082] 具体地,可以将上述表1中的数据1、表2中的数据2以及表3中的数据3记录保存的数据进行对比,检查每个硬盘的性能数据是否有跌落;对比前后lspci记录的信息是否有UESta和CESta相关的加号;同时检查槽位1硬盘第一分区的数据文件的MD5值是否校验正确,来对目标硬盘以及剩余硬盘的存储链路稳定性进行验证。
[0083] 通过对表1中的数据1、表2中的数据2以及表3中的数据3记录保存的数据进行对比,得到对比表4:
[0084] 表4
[0085]
[0086] 从上述表4可以看出:槽位1在初始状态QD1数据为:45455,槽位1在数据3,即再次插入后QD1数据为:35002,槽位2在初始状态QD1数据为:45622,槽位2在槽位1的硬盘拔出后,QD1数据为:45622,槽位2在数据3,即槽位1的硬盘再次插入后QD1数据为:35233,从数据看出槽位1和槽位2数据在硬盘插入后性能在4K QD1有明显跌落,说明存储链路不稳定。而在目标硬盘断电或者再次上电后,得到的设备信息,即采用lspci采集的信息中的各个寄存器的值没有加号,说明寄存器正常,链路稳定。
[0087] 进一步地,插入目标硬盘后可以执行命令“md5sum文件名>>afterslot1.txt”,并与目标硬盘的第一分区的数据文件的初始特征值(例如MD5值)对比是否一致,一致说明存储链路稳定,不一致说明存储链路不稳定。
[0088] 可选地,步骤104包括:
[0089] 子步骤1041,将所述目标硬盘的第一分区中数据文件的初始特征值与所述新的特征值进行比较,得到第一比较结果;
[0090] 子步骤1042,将每个盘对应的所述初始读写状态值、中间读写状态值和所述最终读写状态值进行比较,得到第二比较结果;
[0091] 子步骤1043,将所述第一设备信息、第二设备信息和所述第三设备信息进行比较,得到第三比较结果。
[0092] 在本发明实施例中,针对子步骤1041至子步骤1043,可以将所述目标硬盘的第一分区中数据文件的初始特征值与所述新的特征值进行比较,得到第一比较结果,通过数据文件是否完整,对存储链路的稳定性进行校验。将每个盘对应的所述初始读写状态值、中间读写状态值和所述最终读写状态值进行比较,得到第二比较结果,来确定硬盘插拔,对硬盘自身以及其他硬盘的性能是否有影响。将所述第一设备信息、第二设备信息和所述第三设备信息进行比较,得到第三比较结果,来验证硬盘插拔,对各硬盘的寄存器读写是否有影响。从而得到存储链路稳定性的测试结果。
[0093] 子步骤1044,若所述第一比较结果为所述初始特征值与所述新的特征值不一致,则所述目标硬盘的存储链路不稳定。
[0094] 在本发明实施例中,若所述第一比较结果为所述初始特征值与所述新的特征值不一致,说明数据文件改变,则所述目标硬盘的存储链路不稳定。
[0095] 子步骤1045,若存在待测硬盘的中间读写状态值与所述初始读写状态值不一致,或者所述最终读写状态值与所述初始读写状态值不一致,则确定所述待测硬盘的存储链路不稳定。
[0096] 在本发明实施例中,若存在待测硬盘的中间读写状态值与所述初始读写状态值不一致,或者所述最终读写状态值与所述初始读写状态值不一致,说明目标硬盘插拔后,目标硬盘或者剩余硬盘的性能有跌落,存储链路不稳定。
[0097] 可选地,子步骤1045包括:
[0098] 子步骤10451,若所述待测硬盘的中间读写状态值小于所述初始读写状态值,或者所述最终读写状态值小于所述初始读写状态值,则所述待测硬盘的性能数据存在跌落,所述待测硬盘的存储链路不稳定。
[0099] 在本发明实施例中,参考表4,槽位1和槽位2的读写状态值在槽位1的硬盘断电并上电后,有明显跌落,说明槽位1和槽位2的硬盘存储链路不稳定。
[0100] 子步骤1046,若存在待测硬盘的所述第一设备信息、第二设备信息和所述第三设备信息不一致,则确定所述待测硬盘的存储链路不稳定。
[0101] 在本发明实施例中,存在待测硬盘的所述第一设备信息、第二设备信息和所述第三设备信息不一致,即使用lspci采集的信息中存在加号信息,说明存储链路不稳定。
[0102] 可选地,所述方法还包括:
[0103] 步骤105,对除所述目标硬盘之外的剩余硬盘所在槽位进行轮询断电以及上电操作,确定所述剩余硬盘的存储链路的测试结果。
[0104] 在本发明实施例中,在对目标硬盘执行上述步骤101至步骤104的方法后,完成对目标硬盘的存储链路稳定性测试,得到测试结果,针对设置于服务器的剩余硬盘,均可执行步骤101至步骤104的方法进行测试,如:依次轮询所有槽位的断电上电操作,并检查fio数据、lspci信息和校验MD5值,若对比性能数据没有跌落、lspci中是无UESta和CESta相关的加号,同时MD5值校验通过,说明存储链路稳定,测试通过;如果有性能跌落或者MD5值校验失败或者UESta和CESta有加号,说明存储链路不稳定,测试失败。
[0105] 参考图2,图2示出了本申请公开的又一种服务器硬盘存储链路测试方法,包括:
[0106] S1,检查服务器的所有待测硬盘在位且状态正常,并记录lspci信息;
[0107] S2,对每个硬盘分2个区A和B,分区A存入数据文件并生成MD5值;
[0108] S3,对所有分区B进行fio读写测试10分钟并记录为数据1,此时通过命令对任一硬盘所在槽位掉电并记录剩余盘分区B的读写数据,记录为数据2;
[0109] S4,对掉电的槽位上电,对所有盘执行fio读写10分钟,FIO记录数据3,然后寄存器读写一次并记录lspci信息,对比数据1/数据2/数据3的数据差异;对比lspci的差异;检查分区A的MD5值;
[0110] S5,开发脚本实现自动化上下电和记录读写数据,同时按照如上方法依次对所有槽位的硬盘进行随机掉电和上电动作,重复操作如上步骤;
[0111] S6,检查测试数据,判断测试结果是否通过.
[0112] 本申请,通过槽位上下电模拟拔插盘的动作,验证存储链路的稳定性通过,通过对寄存器频繁读写,验证存储链路的稳定性,验证硬盘本身的性能、带宽和延迟稳定性,通过模拟客户实际应用的场景和异常场景,提升存储链路测试的完整性和可靠性。
[0113] 另外,本申请的方法可以拓展使用于可以在服务器热插拔的其他设备的稳定性验证,验证方法与本申请上文方法类似,在此不再赘述。并且,本申请的方法可以通过生成脚本文件实现,例如,通过脚本文件自动对服务器的背板的各个槽口进行上下电模拟,对各个槽口轮询,自动采集硬盘不同插拔状态下的信息,实现对存储链路稳定性测试结果的自动输出,提升测试效率。
[0114] 参考图3,图3示出了本申请实施例提供的一种硬盘链路,参考图4,图4示出了本申请实施例提供的又一种硬盘链路,本申请的方法可以适用于如图3或图4的硬盘链路中硬盘存储链路稳定性验证,其中,可通过板载控制器或Raid控制器模拟实现槽口的上下电,以对存储链路验证。本申请通过异常场景测试存储链路的稳定性,且可以实现自动化。通过命令使硬盘插槽随机掉电和上电达到模拟手动掉盘和插盘的动作,模拟客户在使用中误拔出硬盘再次插入硬盘恢复使用的场景,同时还实现了每次插拔前后硬盘的状态监控及数据的读写、文件的校验、带宽的检查及寄存器的读写等操作。通过此种方法判断性能是否有跌落,检查带宽是否有下降,进而检测存储链路的稳定性,提升存储链路稳定性验证的效率和可靠性。
[0115] 综上,本申请实施例中,服务器设置多个硬盘,硬盘包括第一分区和第二分区,获取每个所述硬盘各自的第一状态信息;所述第一状态信息包括第一设备信息、在所述硬盘的第一分区中存储数据文件的情况下,获取的所述数据文件的初始特征值以及对每个所述硬盘的第二分区进行读写测试,获取的初始读写状态值;控制目标硬盘所在槽位断电,获取除所述目标硬盘之外剩余硬盘各自对应的第二状态信息;控制所述目标硬盘所在槽位上电,获取所有硬盘各自对应的第三状态信息;通过对所述第一状态信息、第二状态信息以及第三状态信息的比较,确定所述硬盘的存储链路测试结果。本申请的方法在对硬盘进行存储链路测试时,先获取硬盘正常位于服务器时的第一状态信息,通过控制目标硬盘所在槽位断电,模拟目标硬盘从服务器拔出的效果,检测在目标硬盘拔出后,剩余硬盘的状态信息,以及通过控制目标硬盘所在槽位上电,模拟目标硬盘从服务器再插入的效果,检测在目标硬盘再次插入后,所有硬盘的状态信息,通过采集的三次状态信息的比较,可以对硬盘的存储链路稳定性进行测试。本申请的方法无需人工对硬盘进行插拔,即可对硬盘插拔状态下存储链路的稳定性进行测试,可结合实际的场景方便对插拔状态下,存储链路的稳定性进行验证,提升存储链路稳定性验证的准确性。
[0116] 参考图5,其示出了本申请实施例提供的一种服务器硬盘存储链路测试装置20,所述服务器设置多个硬盘,所述硬盘包括第一分区和第二分区,所述装置包括:
[0117] 获取模块201,用于获取每个所述硬盘各自的第一状态信息;所述第一状态信息包括第一设备信息、在所述硬盘的第一分区中存储数据文件的情况下,获取的所述数据文件的初始特征值以及对每个所述硬盘的第二分区进行读写测试,获取的初始读写状态值;
[0118] 第一控制模块202,用于控制目标硬盘所在槽位断电,获取除所述目标硬盘之外剩余硬盘各自对应的第二状态信息;
[0119] 第二控制模块203,用于控制所述目标硬盘所在槽位上电,获取所有硬盘各自对应的第三状态信息;
[0120] 测试模块204,用于通过对所述第一状态信息、第二状态信息以及第三状态信息的比较,确定所述硬盘的存储链路测试结果。
[0121] 可选地,所述第一控制模块,包括:
[0122] 第一获取子模块,用于在确定所述目标硬盘不在位后,对除所述目标硬盘之外剩余硬盘的第二分区进行读写测试,获取中间读写状态值;
[0123] 第二获取子模块,用于获取除所述目标硬盘之外的剩余硬盘各自对应的第二设备信息。
[0124] 可选地,所述第二控制模块,包括:
[0125] 第三获取子模块,用于在确定所述目标硬盘重新上电后,获取每个硬盘各自对应的第三设备信息;
[0126] 第四获取子模块,对所有硬盘的第二分区各自进行读写测试,获取最终读写状态值;
[0127] 第五获取子模块,确定所述目标硬盘的第一分区中存储的数据文件对应的新的特征值。
[0128] 可选地,所述测试模块,包括:
[0129] 第一比较子模块,用于将所述目标硬盘的第一分区中数据文件的初始特征值与所述新的特征值进行比较,得到第一比较结果;
[0130] 第二比较子模块,用于将每个盘对应的所述初始读写状态值、中间读写状态值和所述最终读写状态值进行比较,得到第二比较结果;
[0131] 第三比较子模块,用于将所述第一设备信息、第二设备信息和所述第三设备信息进行比较,得到第三比较结果;
[0132] 第一判断子模块,用于若所述第一比较结果为所述初始特征值与所述新的特征值不一致,则所述目标硬盘的存储链路不稳定;
[0133] 第二判断子模块,用于若存在待测硬盘的中间读写状态值与所述初始读写状态值不一致,或者所述最终读写状态值与所述初始读写状态值不一致,则确定所述待测硬盘的存储链路不稳定;
[0134] 第三判断子模块,用于若存在待测硬盘的所述第一设备信息、第二设备信息和所述第三设备信息不一致,则确定所述待测硬盘的存储链路不稳定。
[0135] 可选地,所述第一控制模块,包括:
[0136] 第一控制子模块,用于通过第一预设命令控制目标硬盘所在槽位断电;
[0137] 可选地,所述第二控制模块,包括:
[0138] 第二控制子模块,用于通过第二预设命令控制目标硬盘所在槽位上电。
[0139] 可选地,所述装置还包括:
[0140] 轮询模块,用于对除所述目标硬盘之外的剩余硬盘所在槽位进行轮询断电以及上电操作,确定所述剩余硬盘的存储链路的测试结果。
[0141] 可选地,所述第二判断子模块,包括:
[0142] 判断单元,用于若所述待测硬盘的中间读写状态值小于所述初始读写状态值,或者所述最终读写状态值小于所述初始读写状态值,则所述待测硬盘的性能数据存在跌落,所述待测硬盘的存储链路不稳定。
[0143] 综上,本申请实施例中,服务器设置多个硬盘,硬盘包括第一分区和第二分区,获取每个所述硬盘各自的第一状态信息;所述第一状态信息包括第一设备信息、在所述硬盘的第一分区中存储数据文件的情况下,获取的所述数据文件的初始特征值以及对每个所述硬盘的第二分区进行读写测试,获取的初始读写状态值;控制目标硬盘所在槽位断电,获取除所述目标硬盘之外剩余硬盘各自对应的第二状态信息;控制所述目标硬盘所在槽位上电,获取所有硬盘各自对应的第三状态信息;通过对所述第一状态信息、第二状态信息以及第三状态信息的比较,确定所述硬盘的存储链路测试结果。本申请的方法在对硬盘进行存储链路测试时,先获取硬盘正常位于服务器时的第一状态信息,通过控制目标硬盘所在槽位断电,模拟目标硬盘从服务器拔出的效果,检测在目标硬盘拔出后,剩余硬盘的状态信息,以及通过控制目标硬盘所在槽位上电,模拟目标硬盘从服务器再插入的效果,检测在目标硬盘再次插入后,所有硬盘的状态信息,通过采集的三次状态信息的比较,可以对硬盘的存储链路稳定性进行测试。本申请的方法无需人工对硬盘进行插拔,即可对硬盘插拔状态下存储链路的稳定性进行测试,可结合实际的场景方便对插拔状态下,存储链路的稳定性进行验证,提升存储链路稳定性验证的准确性。
[0144] 图6据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0145] 参照图6,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
[0146] 处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
[0147] 存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0148] 电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
[0149] 多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0150] 音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
[0151] I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0152] 传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0153] 通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0154] 在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的一种服务器硬盘存储链路测试方法。
[0155] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD‑ROM、磁带、软盘和光数据存储设备等。
[0156] 图7据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图7,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的一种服务器硬盘存储链路测试方法。
[0157] 电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
[0158] 本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
[0159] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。