基于Linux系统的测试方法及系统与流程

文档序号:14443902阅读:496来源:国知局
基于Linux系统的测试方法及系统与流程

本发明涉及linux操作系统领域,特别是涉及一种基于linux系统的测试方法及系统。



背景技术:

计算机中的信息一般包括输入的原始数据、计算机程序、中间运行结果和最终运行结果,这些信息都保存在存储器中。存储器的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存、取。硬盘是计算机中主要的存储媒介之一,随着硬盘新技术的不断涌现,需要对硬盘的新的技术测试方法进行不断地更新。同时,linux操作系统不断支持文件系统的更新,也加剧了测试过程的复杂度。因此,为了保障linux操作系统与硬盘的兼容性,如何有效地测试硬盘的兼容性是亟待解决的问题。



技术实现要素:

本发明提供了一种智能书包管理方法、装置及系统以克服上述问题或者至少部分地解决上述问题。

根据本发明的一个方面,提供了一种基于linux系统的测试方法,用于测试linux系统与硬盘之间的兼容性能,其包括:

收集linux系统的硬件信息;

在收集linux系统的硬件信息成功后,收集linux系统中的逻辑管理器信息;

在收集所述逻辑管理器信息成功后,根据所述linux系统的硬件信息和所述逻辑管理器信息对所述硬盘进行测试,以获取所述硬盘的性能的测试结果,从而根据所述硬盘的性能的测试结果判断所述硬盘是否与linux系统相兼容;

其中,所述逻辑管理器用于在linux系统下对所述硬盘的分区进行管理。

进一步地,根据所述linux系统的硬件信息和所述逻辑管理器信息对所述硬盘进行测试,以获取所述硬盘的性能的测试结果,具体包括:

定义测试环境所需要的关键信息,所述关键信息包括默认最小block值、默认最大block值、测试数据最大值、设备类型、文件系统类型、交换分区设备名、是否是逻辑卷;

获取硬盘列表并判断所述硬盘是否有效;

对所述硬盘的性能进行测试,具体包括文件系统顺序读写测试、文件系统随机读写测试、裸设备随机读写测试。

进一步地,获取硬盘列表并判断所述硬盘是否有效,包括:

根据所述硬盘的列表信息获取测试硬盘;

检测系统文件中是否有所述测试硬盘,以确认所述测试硬盘的完整性;

在所述测试硬盘的完整性检测通过时,检测所述测试硬盘是否为交换分区设备;

在所述测试硬盘为交换分区设备时,设置所述交换分区设备名称,并获取交换分区的卷标,以提示用户所述交换分区设备正被用于测试所述硬盘的性能。

进一步地,根据所述硬盘的列表信息获取测试硬盘,具体为,

确定所述硬盘是否分区,并判断所述硬盘的数量是否大于1;

在未指定所述硬盘的分区且所述硬盘的数目大于1时,打印所述硬盘的列表以提醒用户输入预测试的硬盘分区,从而获取用户输入的测试硬盘;或

在指定所述硬盘的测试分区或只有一个所述硬盘时,自动设置所述硬盘的测试分区或所述硬盘为测试硬盘。

进一步地,判断所述硬盘是否有效性的步骤,还包括:

在所述测试硬盘不为交换分区设备时,获取所述系统的所有交换分区,并根据所有交换分区获取所有交换分区的主次设备号;

根据获取到的所有交换分区的主次设备号确定与所述测试硬盘的是否有作为待测的交换分区设备的逻辑卷,具体为,

若所述测试硬盘的主次设备号在所述所有交换分区的主次设备号中,则所述测试硬盘的物理卷中的逻辑卷为待测设备,

若所述测试硬盘的主次设备号不在所述所有交换分区的主次设备号中,则所述测试硬盘没有可作为待测设备的逻辑卷。

进一步地,判断所述硬盘是否有效的步骤,还包括:

若所述测试硬盘不为交换分区设备,也不为非物理卷设备,且用于记录软磁盘阵列级别状态信息的文件未包含有所述交换分区设备名称,则所述测试硬盘可作为待测设备;

若所述测试硬盘不在用于记录文件系统挂载信息的文件中,则所述测试硬盘未被占用,可用于作为待测设备。

进一步地,对所述硬盘的性能进行测试,包括:

检测所述待测设备是否为直接存取设备;

在所述测试硬盘为直接存取设备时,设定所述待测设备的最小存储值为第一预设值和最大存储值为第二预设值,或

在所述测试硬盘不是直接存取设备时,设定所述待测设备的最小存储值为第三预设值和最大存储值为第二预设值;

获取所述待测设备的扇区的存储值,并使所述测试硬盘的最小存储值为所述扇区的存储值;

对带缓存的文件系统的读写性能进行测试,并对裸设备的读写性能进行测试;

清理测试环境,并保存对所述文件系统的读写性能和所述裸设备的读写性能进行测试的结果。

进一步地,对带缓存的文件系统的读写性能进行测试,包括:

通过调用临时文件函数生成临时目录名,并在缓存文件中生成临时目录,且将所述待测设备格式化为全局变量类型的文件系统;

将所述待测设备以所述全局变量类型的文件系统的格式挂载到所述临时目录中;

设置所述待测设备的存储空间,具体为,若所述待测设备的存储空间小于最大存储值,则所述待测设备的存储空间值为所述最大存储值,若待测设备的存储空间大于最大存储值,则所述待测设备的存储空间值不为所述最大存储值;

对所述文件系统的顺序读写性能和随机读写性能进行测试,以判定所述文件系统能够完成顺序读写操作和随机读写操作和验证所述文件系统每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性。

进一步地,对所述文件系统的顺序读写性能进行测试,具体为:

设置所述待测设备的块的大小的初始值为所述待测设备的最小块值:

在所述块的初始值小于或等于所述待测设备的最大块值时,计算所述块的数量,并确定读写操作的类型为顺序读写类型,将所述块的大小与所述块的数量的乘积数据以块大小的格式存储于所述临时目录下,以对所述临时目录的数据进行验证,且将测试的结果保存于日志文件中;

使所述块的大小增大一倍,并继续进入上一步骤,直至所述块的大小大于所述待测设备的最大块值。

其中,数据的验证过程为:当数据被写入临时目录完成后,通过测试单元读取预先设定好的数据,并与写入的数据进行对比,当读取的数据与写入的数据一致时,确定写入的数据正确;反之,则写入的数据错误。

进一步地,对所述文件系统的随机读写性能进行测试,具体为:

设置所述待测设备的块的大小的初始值为所述待测设备的最小块值,并设置一随机偏移量,以根据所述随机偏移量读写数据;

在所述块的初始值小于或等于所述待测设备的最大块值时,计算所述块的数量,并确定读写操作的类型为随机读写类型,将所述块的大小与所述块的数量的乘积数据以块大小的格式存储于所述临时目录下,以对所述临时目录的数据进行验证,且将测试的结果保存于日志文件中;

使所述块的大小增大一倍,并继续进入上一步骤,直至所述块的大小大于所述待测设备的最大块值。

进一步地,所述随机偏移量的范围为0~32767。

进一步地,对裸设备的读写性能进行测试,包括:

检测所述待测设备的存储空间,若所述待测设备的存储空间小于最大存储值,则所述待测设备的存储空间值为所述最大存储值,若待测设备的存储空间大于最大存储值,则所述待测设备的存储空间值不为所述最大存储值;

对裸设备的顺序读写性能和随机读写性能进行测试,以判定所述裸设备能够完成顺序读写操作和随机读写操作和验证所述裸设备的每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性。

进一步地,对裸设备的顺序读写性能进行测试,具体为,

设置所述待测设备的块的大小的初始值为所述待测设备的最小块值;

在所述块的初始值小于或等于所述待测设备的最大块值时,计算所述块的数量,且将所述块的大小与所述块的数量的乘积数据以块大小的格式不通过使用缓存而直接写入所述待测设备中,确定读写操作的类型为顺序读写类型,以对所述待测设备的数据进行验证,且将测试的结果保存于日志文件中;

使所述块的大小增大一倍,并继续进入上一步骤,直至所述块的大小大于所述待测设备的最大块值。

进一步地,对裸设备的随机读写性能进行测试,具体为,

设置所述待测设备的块的大小的初始值为所述待测设备的最小块值,并设置一随机偏移量,以根据所述随机偏移量读写数据;

在所述块的初始值小于或等于所述待测设备的最大块值时,计算所述块的数量,并将所述块的大小与所述块的数量的乘积数据以块大小的格式不通过使用缓存而直接写入所述待测设备中,确定读写操作的类型为随机读写类型,以对所述待测设备的数据进行验证,且将测试的结果保存于日志文件中;

使所述块的大小增大一倍,并继续进入上一步骤,直至所述块的大小大于所述待测设备的最大块值。

进一步地,所述随机偏移量的范围为0~32767。

进一步地,所述块的数量为最大存储值*1024/最大块值。

进一步地,清理测试环境,并保存对所述文件系统的读写性能和所述裸设备的读写性能进行测试的结果,包括:

判断所述待测设备是否为交换分区设备;

在所述待测设备为交换分区设备时,卸载所述待测设备,并将所述待测设备格式化为交换分区的文件系统;

删除所述临时目录,并保存所述测试的结果。

本发明还提供一种基于linux系统的测试系统,用于测试linux系统与硬盘之间的兼容性能,其包括:

第一收集装置,用于收集linux系统的硬件信息;

第二收集装置,用于收集逻辑管理器信息;

测试装置,配置成根据所述linux系统的硬件信息和所述逻辑管理器信息对所述硬盘进行测试,获取所述硬盘的性能的测试结果,以根据所述硬盘的性能的测试结果判断所述硬盘是否与linux系统相兼容;

其中,所述逻辑管理器用于在linux系统下对所述硬盘的分区进行管理。

进一步地,所述测试装置包括:

定义单元,用于定义测试环境所需要的关键信息;

第一获取单元,用于获取硬盘列表,以获取测试硬盘,具体为,

在未指定所述硬盘的分区且所述硬盘的数目大于1时,打印所述硬盘的列表以提醒用户输入预测试的硬盘分区,从而获取用户输入的测试硬盘;或在指定所述硬盘的测试分区或只有一个所述硬盘时,自动设置所述硬盘的测试分区或所述硬盘为测试硬盘;

第一检测单元,用于检测并判断硬盘是否有效,具体为,检测系统文件中是否有所述测试硬盘,以确认所述测试硬盘的完整性,在所述测试硬盘的完整性检测通过时,检测所述测试硬盘是否为交换分区设备,以在所述测试硬盘为交换分区设备时,设置所述交换分区设备名称并获取交换分区的卷标,以提示用户所述交换分区设备正被用于测试所述硬盘的性能。

进一步地,所述测试装置包括:

第二检测单元,用于检测所述待测设备是否为直接存取设备,以在所述测试硬盘为直接存取设备时,设定所述待测设备的最小存储值为第一预设值和最大存储值为第二预设值,或在所述测试硬盘不是直接存取设备时,设定所述待测设备的最小存储值为第三预设值和最大存储值为第二预设值;

第二获取单元,用于获取所述待测设备的扇区的存储值,以使所述测试硬盘的最小存储值为所述扇区的存储值;

测试单元,用于对带缓存的文件系统的读写性能进行测试,并对裸设备的读写性能进行测试,以判定所述文件系统能够完成顺序读写操作和随机读写操作和验证所述文件系统每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性,并判定所述裸设备能够完成顺序读写操作和随机读写操作和验证所述裸设备的每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性。

进一步地,所述测试装置还包括:

清理单元,用于清理测试环境,具体配置为根据所述待测设备为交换分区设备的结果卸载所述待测设备,并将所述待测设备格式化为交换分区的文件系统,同时删除所述临时目录。

进一步地,所述测试装置还包括:结果存储单元,用于保存对所述文件系统的读写性能和所述裸设备的读写性能进行测试的结果。

本发明的有益效果为:

首先,本发明的测试方法或测试系统先通过收集linux系统的硬件信息,并在收集linux系统的硬件信息成功后,收集逻辑管理器信息,然后在收集逻辑管理器信息成功后根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试,以获取硬盘的性能的测试结果,最终根据硬盘性能的测试结果判断硬盘是否与linux系统相兼容。如此,无论硬盘的类型如何,均可通过上述测试方法对硬盘的兼容性能进行检测,从而可以针对硬盘技术的不断更新,对linux操作系统与硬盘之间的兼容性进行检测,以解决现有技术中由于硬盘新技术的不断改变而导致在linux操作系统与硬盘兼容性的测试中对硬盘性能的测试过程复杂的问题。

其次,本发明的测试方法或测试系统通过对硬盘的有效性进行检测,可极大节约人工筛选硬盘的时间,同时也可以克服人工筛选出现失误而可能导致linux系统发生故障的问题。

进一步地,本发明的测试方法或测试系统每次运行时,可同时运行文件系统的顺序读写性能测试、随机读写性能测试以及裸设备的顺序读写性能测试、随机读写性能测试,从而可以提高整个测试系统或测试方法的测试效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是根据本发明实施例的一种基于linux系统的测试方法的示意性流程图;

图2是图1所示中的根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试的示意性流程图;

图3是图2中的获取硬盘列表并判断硬盘是否有效的示意性流程图;

图4是根据本发明的一个具体实施例的判断硬盘有效性的示意性流程图;

图5是图2中对硬盘的性能进行测试的示意性流程图;

图6是图5中对带缓存的文件系统的读写性能进行测试的示意性流程图;

图7是图6中对文件系统的顺序读写性能进行测试的示意性流程图;

图8是图6中对文件系统的随机读写性能进行测试的示意性流程图;

图9是对裸设备的读写性能测试中的对裸设备的顺序读写性能进行测试的示意性流程图;

图10是对裸设备的读写性能测试中的对裸设备的随机读写性能进行测试的示意性流程图;

图11是根据本发明另一个具体实施例的对硬盘性能测试的示意性流程图;

图12是根据本发明实施例的一种基于linux系统的测试系统的示意性结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

一种基于linux系统的测试方法,用于测试linux系统的硬盘的兼容性能,其包括:

s100.收集linux系统的硬件信息;

s200.在收集linux系统的硬件信息成功后,收集逻辑管理器信息;

s300.在收集逻辑管理器信息成功后,根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试,以获取硬盘的性能的测试结果,从而根据所述硬盘的性能的测试结果判断所述硬盘是否与linux系统相兼容。

其中,逻辑管理器(lvm,logicalvolumemanager)是指linux环境下对硬盘分区进行管理的一种机制,lvm是建立在硬盘和分区之上的一个逻辑层,来提高硬盘分区管理的灵活性。

由于本发明的测试方法先通过收集linux系统的硬件信息,并在收集linux系统的硬件信息成功后,收集逻辑管理器信息,然后在收集逻辑管理器信息成功后根据linux系统的硬件信息和逻辑管理器信息对硬盘的性能进行测试,以获取硬盘的性能的测试结果,最终根据硬盘性能的测试结果判断硬盘是否与linux系统相兼容。如此,无论硬盘的类型如何,均可通过上述测试方法对硬盘的兼容性能进行检测,从而可以针对硬盘技术的不断更新,对linux操作系统与硬盘之间的兼容性进行检测,以解决现有技术中由于硬盘新技术的不断改变而导致对硬盘性能的测试过程复杂的问题。

其中,linux系统的硬件信息具体可包括linux系统的内核版本和/或系统分区信息和/或系统交换分区状态和/或硬盘基本状态和/或系统分区使用状态和/或已经加载的内核模块信息及pci设备信息。逻辑管理器的信息可包括物理卷和/或逻辑卷的卷组和/或逻辑卷的设备信息。

在上述进一步的实施例中,如图2所示,步骤s300中根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试,以获取硬盘的性能的测试结果,具体步骤可包括:

s10.定义测试环境所需要的关键信息。所述关键信息可包括默认最小block值、默认最大block值、测试数据最大值、设备类型、文件系统类型、交换分区设备名、是否是逻辑卷;

s20.获取硬盘列表并判断硬盘是否有效;

s30.对硬盘的性能进行测试,具体可包括文件系统顺序读写测试、文件系统随机读写测试、裸设备随机读写测试。

如图3所示,步骤s20中的获取硬盘列表并判断硬盘是否有效的具体过程可包括:

s21.根据硬盘的列表信息获取测试硬盘;

s22.检测系统文件中是否有测试硬盘,以确认测试硬盘的完整性;

s23.在测试硬盘的完整性检测通过时,检测测试硬盘是否为交换分区设备;

s24.在测试硬盘为交换分区设备时,设置交换分区设备名称,并获取交换分区的卷标,以提示用户交换分区设备正被用于测试硬盘的性能。

s25.在测试硬盘不为交换分区设备时,获取系统的所有交换分区,并根据所有交换分区获取所有交换分区的主次设备号;

s26.根据获取到的所有交换分区的主次设备号确定与测试硬盘的是否有作为待测的交换分区设备的逻辑卷,具体可以为,

若测试硬盘的主次设备号在所有交换分区的主次设备号中,则测试硬盘的物理卷中的逻辑卷可作为待测设备,

若测试硬盘的主次设备号不在所有交换分区的主次设备号中,则测试硬盘没有可作为待测设备的逻辑卷。

进一步地,判断硬盘是否有效性还可以包括:

若测试硬盘不为交换分区设备,也不为非物理卷设备,且用于记录软磁盘阵列级别状态信息的文件未包含有交换分区设备名称,则测试硬盘可作为待测设备;

若用于记录文件系统挂载信息的文件未包含所述测试硬盘,则测试硬盘未被占用,可用于作为待测设备。

如图4所示,步骤s21中的根据硬盘的列表信息获取测试硬盘的步骤具体可以为:

确定硬盘是否分区,并判断硬盘的数量是否大于1;

在未指定硬盘的分区且硬盘的数目大于1时,打印硬盘的列表以提醒用户输入预测试的硬盘分区,从而获取用户输入的测试硬盘;或

在指定硬盘的测试分区或只有一个硬盘时,自动设置硬盘的测试分区或硬盘为测试硬盘。

在本发明一个具体的实施例中,如图4所示,首先通过“udevadminfo–qall–e(系统命令,用于获取存储在udev数据库的设备信息)”获取硬盘的所有列表信息,选择“id_type”为“disk”或者“devtype”为“disk”并且“devpath”不包含“/devices/virtual”的设备可以作为测试硬盘。获取到的硬盘名保存为设备字符串列表,一般可为“[u'sda',u'sda1',u'sda2']”。如果未指定硬盘分区且硬盘数大于1,则打印当前硬盘的列表,提醒用户输入要测试的硬盘分区,获取用户输入的测试硬盘;如果只有一块硬盘或者指定了硬盘的测试分区,则自动选定硬盘的测试分区或所述硬盘为测试硬盘。

接下来,对测试硬盘的完整性进行检查。通过在系统文件“/proc/partitions”查找该测试硬盘,若在此文件中可以找到该测试硬盘,则表示测试硬盘的完整性检查通过,反之,如果在/proc/partitions文件中无法找到测试硬盘,则表明该测试硬盘不完整,从而不符合测试要求。

在硬盘完整性检查通过后,执行遍历/proc/swaps文件,确定测试硬盘是交换分区,同时将参数swapdev设置为交换分区设备名称,参数islvm设置为true。然后通过执行命令“blkid/dev/<swap设备>”,得到交换分区的卷标。从而可以提示测试人员目前正在使用该交换分区设备进行测试。

如果测试硬盘不是交换分区设备,将参数swapdev设置为none,islvm设置为false。通过/proc/swaps(linux系统交换空间使用情况的系统文件)获取到所有swap分区,对获取到的所有交换分区分别执行“ls–l/dev/<swap设备>|tr–d,|awk'{print$5""$6}'”,从而获取到所有交换分区的主次设备号,并执行命令“lvs–okernel_major,kernel_minor,devices|grep<获取到的主次设备号>”。如果返回值为0,则表明该pv的这个lv作为交换分区使用(即测试硬盘的物理卷中的逻辑卷可作为为待测设备),参数swapdev设置为待测设备的lv,islvm设置为true,testdev设置为该测试设备的lv。如果返回值为1,则表明该测试硬盘没有提供lv作为交换分区,这个测试硬盘被lvm使用,不能被用于测试。如果测试硬盘既非交换分区设备也非物理卷设备,如果在/proc/mdstat(用于记录软raid级别状态信息的文件)中未找到该测试硬盘名,则表明该测试硬盘未做软raid(磁盘阵列)使用,即没有被占用,因此,该测试硬盘可以用于测试。

上述步骤完成,则返回测试硬盘,即硬盘的有效性测试完成。

如此,由于本发明的测试方法通过对硬盘的有效性进行检测,从而可以极大节约人工筛选硬盘的时间,同时也可以克服人工筛选出现失误而可能导致linux系统发生故障的问题。

在进一步的实施例中,如图5所示,步骤s30中对硬盘的性能进行测试,可包括:

s31.检测待测设备是否为直接存取设备;

s32.在测试硬盘为直接存取设备时,设定待测设备的最小存储值为第一预设值和最大存储值为第二预设值,或

在测试硬盘不是直接存取设备时,设定待测设备的最小存储值为第三预设值和最大存储值为第二预设值;

s33.获取待测设备的扇区的存储值,并使测试硬盘的最小存储值为扇区的存储值;

s34.对带缓存的文件系统的读写性能进行测试,并对裸设备的读写性能进行测试;

s35.清理测试环境,并保存对文件系统的读写性能和裸设备的读写性能进行测试的结果。

在上述进一步的实施例中,如图6所示,步骤s34的对带缓存的文件系统的读写性能进行测试,可包括:

s341.通过调用临时文件函数生成临时目录名,并在缓存文件中生成临时目录,且将待测设备格式化为全局变量类型的文件系统;

s342.将待测设备以全局变量类型的文件系统的格式挂载到临时目录中;

s343.设置待测设备的存储空间,具体可以为,若待测设备的存储空间小于最大存储值,则待测设备的存储空间值为最大存储值,若待测设备的存储空间大于最大存储值,则待测设备的存储空间值不为最大存储值;

s344.对文件系统的顺序读写性能和随机读写性能进行测试,以判定文件系统能够完成顺序读写操作和随机读写操作和验证文件系统每秒读写的操作次数是否与预设读写操作次数具有一致性。

在进一步的实施例中,如图7所示,步骤s344中对文件系统的顺序读写性能进行测试,具体可以为:

s3441.设置待测设备的块的大小的初始值为待测设备的最小块值:

s3442.在块的初始值小于或等于待测设备的最大块值时,计算块的数量,并确定读写操作的类型为顺序读写类型,将块的大小与块的数量的乘积数据以块大小的格式存储于临时目录下,以对临时目录的数据进行验证,且将测试的结果保存于日志文件中;

s3443.使块的大小增大一倍,并继续进入步骤s3442中,直至块的大小大于待测设备的最大块值。

如图8所示,步骤s344中对文件系统的随机读写性能进行测试,具体可以为:

s3444.设置待测设备的块的大小的初始值为待测设备的最小块值,并设置一随机偏移量,以根据随机偏移量读写数据:

s3445.在块的初始值小于或等于待测设备的最大块值时,计算块的数量,并确定读写操作的类型为随机读写类型,将块的大小与块的数量的乘积数据以及块大小的格式存储于临时目录下,以对临时目录的数据进行验证,且将测试的结果保存于日志文件中;

s3446.使块的大小增大一倍,并继续进入步骤s3445中,直至块的大小大于待测设备的最大块值。

其中,数据的验证过程可以为:当数据被写入临时目录完成后,通过测试单元读取预先设定好的数据,并与写入的数据进行对比,当读取的数据与写入的数据一致时,确定写入的数据正确;反之,则写入的数据错误。

其中,随机偏移量的范围可以为0~32767。

步骤s344中对裸设备的读写性能进行测试,具体可以包括:

检测待测设备的存储空间,若待测设备的存储空间小于最大存储值,则待测设备的存储空间值为最大存储值,若待测设备的存储空间大于最大存储值,则待测设备的存储空间值不为最大存储值;

对裸设备的顺序读写性能和随机读写性能进行测试,以判定裸设备能够完成顺序读写操作和随机读写操作和验证裸设备的每秒读写的操作次数是否与预设读写操作次数具有一致性。

其中,如图9所示,步骤s344中对裸设备的顺序读写性能进行测试,具体可以为,

s3401.设置待测设备的块的大小的初始值为待测设备的最小块值;

s3402.在块的初始值小于或等于待测设备的最大块值时,计算块的数量,且将块的大小与块的数量的乘积数据以块大小的格式不通过使用缓存而直接写入待测设备中,确定读写操作的类型为顺序读写类型,以对待测设备的数据进行验证,且将测试的结果保存于日志文件中;

s3403.使块的大小增大一倍,并继续进入步骤s3402,直至块的大小大于待测设备的最大块值。

如图10所示,步骤s344中对裸设备的随机读写性能进行测试,具体可以为:

s3404.设置待测设备的块的大小的初始值为待测设备的最小块值,并设置一随机偏移量,以根据随机偏移量读写数据;

s3405.在块的初始值小于或等于待测设备的最大块值时,计算块的数量,并将块的大小与块的数量的乘积数据以块大小的格式不通过使用缓存而直接写入待测设备中,确定读写操作的类型为随机读写类型,以对待测设备的数据进行验证,且将测试的结果保存于日志文件中;

s3406.使块的大小增大一倍,并继续进入步骤s3405,直至块的大小大于待测设备的最大块值。

其中,随机偏移量的范围可以为0~32767。

在本发明另一个具体的实施例中,如图11所示,对硬盘的性能进行测试的过程如下。

首先对测试工具dt(测试装置)进行检查。检查系统命令/usr/sbin/dt是否存在,从而可以确保该测试工具可用。然后,开始环境预配置,如果待测设备是交换分区,调用命令执行“swapoff/dev/<swapdev>”(swapoff用于卸载交换分区)。如果待测设备是dasd设备(直接存取设备),执行格式化命令“fdasd-a/dev/<测试设备>”,设置待测设备的最小block(minbs)值和最大block(maxbs)值,将minbs可设置为4096,将maxbs可设置为defaultmaxbs。如果待测设备不是dasd设备,则设置minbs为defaultminbs,maxbs为defaultmaxbs。设置完minbs、maxbs后,通过查询“/sys/block/<待测设备>/queue/hw_sector_size”的值获取待测设备扇区的存储值,则设置minbs为hw_sector_size的值(扇区的存储值)。

接下来,对带缓存的文件系统的性能进行测试,可包括文件系统顺序读写性能测试和文件系统随机性能读写测试。使用临时文件函数命令“mktemp–d<测试设备名>.xxxxxx”生成临时目录名,并在/tmp(缓存文件)目录中生成临时目录。执行文件系统命令“mkfs–t<filesystemtype>/dev/<待测设备>”,将待测设备格式化成定义的全局变量filesystemtype类型的文件系统。执行命令“mount-t<filesystemtype>/dev/<待测设备>/tmp/<临时目录>”挂载设备。其中,如果待测设备的存储空间小于maxsize(最大存储值),则设置maxsize为测试设备的存储空间,否则,不设置maxsize。records(待测设备的块的数量)设置为maxsize*1024/maxbs。

其中,文件系统顺序读写性能测试具体过程可为:设置bs(待测设备的块的大小)的初始值为minbs,当bs小于等于maxbs时,执行命令“dtpattern=0xdeadbeefbs=<bs值>records=<records值>of=<临时目录>/dttestfileiotype=sequentialdispose=keepenable=aioaios=8”,每次执行结束bs增大一倍,继续执行dt测试,直到bs大于maxbs。即当块的初始值小于或等于待测设备的最大块值时,计算块的数量,并确定读写操作的类型为顺序读写类型,将块的大小与块的数量的乘积数据以块大小的格式存储于临时目录下,以对临时目录的数据进行验证,且将测试的结果保存于日志文件中。

其中,文件系统随机读写性能测试的具体过程可以为:设置bs的初始值为minbs,seed(随机偏移量,可以根据该随机偏移量读写数据,因为每次写入数据时的位置不是固定的,而是随机的)设置为0到32767之间的随机数,当bs小于等于maxbs时,执行“dtpattern=0xdeadbeefbs=<bs值>records=<records值>of=<临时目录>/dttestfileiotype=randomdispose=keepenable=verifyralign=1024rseed=<seed值>dlimit=<maxsize*1024>enable=aioaios=8”,每次执行结束bs增大一倍,继续执行dt测试,直到bs大于maxbs。即在块的初始值小于或等于待测设备的最大块值时,计算块的数量,并确定读写操作的类型为随机读写类型,将块的大小与块的数量的乘积数据以块大小的格式存储于临时目录下,以对临时目录的数据进行验证,且将测试的结果保存于日志文件中。

如此,可通过对文件系统的顺序读写性能和随机读写性能的测试判定文件系统的可以完成顺序读写操作和随机读写操作和验证文件系统的每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性。从而可以判定该测试设备是否与linux系统相兼容。即当文件系统的可以完成顺序读写操作和随机读写操作,且文件系统的每秒读写的操作次数与预设的每秒读写操作次数基本一致时,则说明测试设备与linux系统相兼容。其中,文件系统的每秒读写的操作次数与预设的每秒读写操作次数可呈正向比例,即文件系统的每秒读写的操作次数与预设的每秒读写操作次数可以有一定的误差,该误差的范围可以为10%左右,在本发明中,该误差的范围一般在10%以内。

对裸设备io吞吐测试,包括顺序读写测试和随机读写测试。检测待测设备的存储空间,如果测试设备小于maxsize,设置maxsize为测试设备的存储空间,否则不设置maxsize。records设置为maxsize*1024/maxbs。

其中,对裸设备顺序读写性能进行测试的过程具体可以为:设置bs的初始值为minbs,当bs小于等于maxbs时,执行“dtpattern=0xdeadbeefbs=<bs值>records=<records值>of=/dev/<测试设备>iotype=sequentialdispose=keepflags=direct”,每次执行结束bs增大一倍,继续执行dt测试,直到bs大于maxbs。即当块的初始值小于或等于待测设备的最大块值时,计算块的数量,且将块的大小与块的数量的乘积数据块大小的格式不通过使用缓存而直接写入待测设备中,确定读写操作的类型为顺序读写类型,以对待测设备的数据进行验证,且将测试的结果保存于日志文件中。

其中,对裸设备随机读写性能测试的具体过程可以为:设置bs的初始值为minbs,seed设置为0到32767之间的随机数,当bs小于等于maxbs时,执行“dtpattern=0xdeadbeefbs=<bs值>records=<records值>of=/dev/<测试设备>iotype=randomdispose=keepenable=verifyralign=1024rseed=<seed值>dlimit=<maxsize*1024>flags=direct”,每次执行结束bs增大一倍,继续执行dt测试,直到bs大于maxbs。即在块的初始值小于或等于待测设备的最大块值时,计算块的数量,并将块的大小与块的数量的乘积数据块大小的格式不通过使用缓存而直接写入待测设备中,确定读写操作的类型为随机读写类型,以对待测设备的数据进行验证,且将测试的结果保存于日志文件中。

如此,可通过对裸设备的顺序读写性能和随机读写性能的测试判定裸设备可以完成顺序读写操作和随机读写操作和验证裸设备的每秒读写的操作次数是否与预设的每秒读写操作次数基本一致。从而可以判定该测试设备是否与linux系统相兼容。即当裸设备可以完成顺序读写操作和随机读写操作,且裸设备的每秒读写的操作次数与预设的每秒读写操作次数具有一致性时,则说明测试设备与linux系统相兼容。其中,裸设备的每秒读写的操作次数与预设的每秒读写操作次数可呈正向比例,即裸设备的每秒读写的操作次数与预设的每秒读写操作次数可以有一定的误差,该误差的范围可以为10%左右,在本发明中,该误差的范围一般也可以在10%以内。

进一步地,日志文件可以为由测试装置自定义的文件。

在上述任一项实施例中,块的数量为最大存储值*1024/最大块值,第一预设值为4096,第二预设值为65536,第三预设值可以为1024。

如图12所示,步骤s35中,清理测试环境,并保存对文件系统的读写性能和裸设备的读写性能进行测试的结果,可以包括:

s351.判断待测设备是否为交换分区设备;

s352.在待测设备为交换分区设备时,卸载待测设备,并将待测设备格式化为交换分区的文件系统;

s353.删除临时目录,并保存测试的结果。

如果待测设备是swap设备即交换分区设备,则开始恢复swap设备,执行命令“umount/dev/<测试设备>”,以卸载设备,然后将待测设备格式化为swap文件系统,执行命令“mkswap/dev/<测试设备>”,恢复swap设备,并执行“swapon/dev/<测试设备>”。删除临时目录,执行“rmdir/tmp/<临时目录>”,此时,表明环境清理结束。即测试结果保存在测试装置定义的文件/var/results.xml中。

由于本发明的测试方法每次运行时,可同时运行文件系统的顺序读写性能测试、随机读写性能测试以及裸设备的顺序读写性能测试、随机读写性能测试,即文件系统的性能测试和裸设备的性能测试可同时进行,如此,可以极大地提高整个测试方法过程的效率。

此外,本发明的测试方法可通过测试参数的定义,从而可以针对linux操作系统和不同类型的硬盘执行测试。

本发明还提出一种基于linux系统的测试系统,用于测试linux系统的硬盘的兼容性能,如图12所示,测试系统可包括:第一收集装置1,用于收集linux系统的硬件信息。其中,linux系统的硬件信息可包括linux系统的内核版本和/或系统分区信息和/或系统交换分区状态和/或硬盘基本状态和/或系统分区使用状态和/或已经加载的内核模块信息及pci设备信息。测试系统包括第二收集装置2,用于收集逻辑管理器信息。其中,逻辑管理器信息可包括物理卷和/或逻辑卷的卷组和/或逻辑卷的设备信息。测试系统还可包括测试装置3,可配置成根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试,以获取硬盘的性能的测试结果,从而根据硬盘的性能的测试结果判断硬盘是否与linux系统相兼容。其中,逻辑管理器用于在linux系统下对硬盘的分区进行管理。

由于本发明的测试系统先通过第一收集装置1收集linux系统的硬件信息(如物理卷、卷组和逻辑卷信息),并在收集linux系统的硬件信息成功后,通过第二收集装置2收集逻辑管理器中(如linux系统的内核版本、系统分区信息、系统交换分区状态、硬盘基本状态、系统分区使用状态、已经加载的内核模块信息及pci设备)等信息,然后在收集逻辑管理器信息成功后通过测试装置3根据linux系统的硬件信息和逻辑管理器信息对硬盘进行测试,以获取硬盘的性能的测试结果,从而可以根据硬盘的性能的测试结果判断硬盘是否可以与linux系统相兼容。如此,无论硬盘的类型如何,均可通过上述测试系统对硬盘的兼容性能进行检测,从而可以针对硬盘技术的不断更新,对linux操作系统与硬盘之间的兼容性进行检测,以解决现有技术中由于硬盘新技术的不断改变而导致对硬盘性能的测试过程复杂的问题。

在一个具体的实施例中,用户在终端执行测试工具(测试装置)的入口脚本,入口脚本首先会自动收集当前测试环境的硬件信息,通过执行uname–a(用于显示当前系统名称的命令)获取linux操作系统的内核版本,通过执行命令cat/proc/partitions(/proc/partitions是系统文件,用于记录分区信息)获取分区信息,执行命令cat/proc/swaps获取交换分区状态,执行命令cat/proc/diskstats(查看/proc目录下的磁盘状态文件diskstats)获取硬盘基本状态,通过执行cat/proc/mounts获取分区使用状态,通过执行lsmod(系统命令,获取内核模块)获取已经加载的内核模块信息,通过执行lspci(系统命令,用于获取pci设备信息)获取pci设备信息。

然后调用系统命令收集lvm信息,执行系统命令pvdisplay获取物理卷信息,执行系统命令vgdisplay获取逻辑卷卷组信息,执行系统命令lvdisplay获取逻辑卷设备信息。

再者,进行硬盘测试,先获取当前硬盘的分区表,判断哪些分区能够执行测试,哪些分区不可以执行测试,用户根据需要选定符合测试要求的分区,使用dt(测试工具/测试装置)做文件系统顺序读写和随机读写测试、裸设备顺序读写和随机读写测试。

在进一步的实施例中,测试装置3可包括:定义单元31,用于定义测试环境所需要的关键信息;第一获取单元32,用于获取硬盘列表,以获取测试硬盘,具体可为,在未指定硬盘的分区且硬盘的数目大于1时,打印硬盘的列表以提醒用户输入预测试的硬盘分区,从而获取用户输入的测试硬盘;或在指定硬盘的测试分区或只有一个硬盘时,自动设置硬盘的测试分区或硬盘为测试硬盘;第一检测单元33,用于检测并判断硬盘是否有效,具体为,检测系统文件中是否有测试硬盘,以确认测试硬盘的完整性,在测试硬盘的完整性检测通过时,检测测试硬盘是否为交换分区设备,以在测试硬盘为交换分区设备时,设置交换分区设备名称并获取交换分区的卷标,以提示用户交换分区设备正被用于测试硬盘的性能。

在上述进一步的实施例中,测试装置3还可包括:第二检测单元34,用于检测待测设备是否为直接存取设备,以在测试硬盘为直接存取设备时,设定待测设备的最小存储值为第一预设值和最大存储值为第二预设值,或在测试硬盘不是直接存取设备时,设定待测设备的最小存储值为第三预设值和最大存储值为第二预设值;第二获取单元35,用于获取待测设备的扇区的存储值,以使测试硬盘的最小存储值为扇区的存储值;测试单元36,用于对带缓存的文件系统的读写性能进行测试,并对裸设备的读写性能进行测试,以判定文件系统能够完成顺序读写操作和随机读写操作和验证文件系统每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性,并判定裸设备能够完成顺序读写操作和随机读写操作和验证裸设备的每秒读写的操作次数是否与预设的每秒读写操作次数具有一致性。

在一些实施例中,测试装置可以包括:清理单元37,用于清理测试环境,具体配置为根据待测设备为交换分区设备的结果卸载待测设备,并将待测设备格式化为交换分区的文件系统,同时删除临时目录。

在另一些实施例中,测试装置还可以包括:结果存储单元37,用于保存对文件系统的读写性能和裸设备的读写性能进行测试的结果。

在上述任一项实施例中,由于本发明的测试系统通过对硬盘的有效性进行检测,可极大节约人工筛选硬盘的时间,同时也可以克服人工筛选出现失误而可能导致linux系统发生故障的问题。此外,本发明的测试系统在每次运行时,均可同时运行文件系统的顺序读写性能测试、随机读写性能测试以及裸设备的顺序读写性能测试、随机读写性能测试,因此,可以极大地提高整个测试系统的测试过程的效率。

在上述任一项实施例中,逻辑管理器(lvm,logicalvolumemanager)是指linux环境下对硬盘分区进行管理的一种机制,lvm是建立在硬盘和分区之上的一个逻辑层,来提高硬盘分区管理的灵活性。pv(physicalvolume)是物理卷,指硬盘分区或从逻辑上与硬盘分区具有同样功能的设备(如raid),是lvm的基本存储逻辑块,但和基本的物理存储介质(如分区、硬盘等)比较,却包含有与lvm相关的管理参数。vg(volumegroup)表示卷组,建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。lv(logicalvolume)表示逻辑卷,类似于非lvm系统中的硬盘分区,逻辑卷建立在卷组vg之上。在逻辑卷lv之上可以建立文件系统(比如/home或者/usr等)。dasd(directattachedstoragedevice)表示直连方式存储设备,存储设备是通过电缆(通常是scsi接口电缆)直接连到服务器。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1