一种NFS操作字性能测试的方法、系统及设备与流程

文档序号:16134460发布日期:2018-12-01 00:45阅读:214来源:国知局

本申请涉及nfs操作字性能测试领域,特别涉及一种nfs操作字性能测试的方法、系统、设备及计算机可读存储介质。

背景技术

网络文件系统(networkfilesystem,nfs)是用于linux之间的共享文件目录,是freebsd支持的文件系统中的一种,它允许网络中的计算机之间通过tcp/ip网络共享资源。在nfs的应用中,本地nfs的客户端应用可以透明地读写位于远端nfs服务器上的文件,就像访问本地文件一样。nfs-ganesha是用户态网络文件系统,在故障场景下,相比于内核态nfs具有较好管理性和可维护性,并且用户态nfs-ganesha易于实施和维护,目前大数据海量分布式对象存储nfs-ganesha的应用非常广泛。

文件系统操作字是指操作文件的一系列方法,linux系统的思想本质上是一切皆文件,文件不能为只读状态,必须允许用户或进程操作文件中的信息。文件系统操作字主要包括打开(open),读写(read,write),创建(create),删除(remove),设置属性(setattr),获取属性(getattr),创建目录(mkdir),删除目录(rmdir),软、硬链接(symlink,link),提交(commit),读取目录内容(readdir),重命名(rename)等,每个操作字在代码底层都通过调用一个或多个lib库,来实现操作字的相应功能。

lib库接口函数调用是指nfs操作字在函数内部调用lib库接口,由于调用lib库会引起一些时延,或者调用lib库出现失败的情况,为了便于定位和性能分析,需要对每个操作字调用的lib库接口进行时延统计,返回调用lib库的操作字类型,目录id,调用成功或失败,调用时延等信息,便于定位和分析,提高代码的可维护性,进一步提高文件系统的性能。文件系统操作字时延是衡量存储服务系统i/o性能的重要指标,也是优化存储性能的重要依据。



技术实现要素:

本申请的目的是提供一种nfs操作字性能测试的方法、系统、设备及计算机可读存储介质,用于对nfs操作字进行性能测试。

为解决上述技术问题,本申请提供一种nfs操作字性能测试的方法,该方法包括:

客户端执行挂载命令挂载至服务端导出的共享目录;

当接收到测试命令时,根据所述测试命令确定操作字;

在所述共享目录内执行所述操作字对应的操作,并计算所述操作字调用lib库的时延;

从所述服务端中获取所述时间阈值,并判断所述时延是否超过时间阈值;

若是,则输出所述操作字的属性信息;其中,所述属性信息包括调用函数信息、调用lib库信息、目录id、调用结果信息、调用时延信息中的至少一项。

可选的,在从所述服务端中获取所述时间阈值之前,还包括:

将包括时间阈值设置命令的配置文件发送至所述服务端,以使所述服务端重启ganesha服务读取所述配置文件得到所述时间阈值设置命令,并执行所述时间阈值设置命令对所述时间阈值进行设置。

可选的,在从所述服务端中获取所述时间阈值之前,还包括:

当接收到输入的ganesha脚本时,将所述ganesha脚本中的连接指令发送至所述服务端,以使所述服务端根据所述连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接;

将所述ganesha脚本中的时间阈值参数通过所述d-bus进程间通信后台发送至所述nfs-ganesha文件系统,以使所述nfs-ganesha文件系统根据所述时间阈值参数设置对应的时间阈值。

可选的,当所述时延未超过所述时间阈值时,还包括:

将所述操作字记录为测试通过的操作字。

本申请还提供一种nfs操作字性能测试的系统,该系统包括:

挂载模块,用于客户端执行挂载命令挂载至服务端导出的共享目录;

确定模块,用于当接收到测试命令时,根据所述测试命令确定操作字;

执行模块,用于在所述共享目录内执行所述操作字对应的操作,并计算所述操作字调用lib库的时延;

获取及判断模块,用于从所述服务端中获取所述时间阈值,并判断所述时延是否超过时间阈值;

输出模块,用于当所述时延超过所述时间阈值时,输出所述操作字的属性信息;其中,所述属性信息包括调用函数信息、调用lib库信息、目录id、调用结果信息、调用时延信息中的至少一项。

可选的,还包括:

第一发送模块,用于将包括时间阈值设置命令的配置文件发送至所述服务端,以使所述服务端重启ganesha服务读取所述配置文件得到所述时间阈值设置命令,并执行所述时间阈值设置命令对所述时间阈值进行设置。

可选的,还包括:

第二发送模块,用于当接收到输入的ganesha脚本时,将所述ganesha脚本中的连接指令发送至所述服务端,以使所述服务端根据所述连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接;

第三发送模块,用于将所述ganesha脚本中的时间阈值参数通过所述d-bus进程间通信后台发送至所述nfs-ganesha文件系统,以使所述nfs-ganesha文件系统根据所述时间阈值参数设置对应的时间阈值。

可选的,还包括:

记录模块,用于将所述操作字记录为测试通过的操作字。

本申请还提供一种nfs操作字性能测试设备,该nfs操作字性能测试设备包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任一项所述nfs操作字性能测试的方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述nfs操作字性能测试的方法的步骤。

本申请所提供nfs操作字性能测试的方法,包括:客户端执行挂载命令挂载至服务端导出的共享目录;当接收到测试命令时,根据测试命令确定操作字;在共享目录内执行操作字对应的操作,并计算操作字调用lib库的时延;从服务端中获取时间阈值,并判断时延是否超过时间阈值;若是,则输出操作字的属性信息;其中,属性信息包括调用函数信息、调用lib库信息、目录id、调用结果信息、调用时延信息中的至少一项。

本申请所提供的技术方案,通过执行根据测试命令确定的操作字,并计算该操作字调用lib库的时延,然后从服务端中获取时间阈值,判断该时延是否超过时间阈值,若是,则证明该操作字调用lib库的时延较高,此时输出该操作字的属性信息,以使用户能够根据该属性信息对操作字调用lib库产生的时延和故障等信息进行定位和分析,提高了代码的可维护性,优化了存储服务文件系统i/o性能。本申请同时还提供了一种nfs操作字性能测试的系统、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种nfs操作字性能测试的方法的流程图;

图2为本申请实施例所提供的另一种nfs操作字性能测试的方法的流程图;

图3为本申请实施例所提供的一种nfs操作字性能测试的系统的结构图;

图4为本申请实施例所提供的另一种nfs操作字性能测试的系统的结构图;

图5为本申请实施例所提供的一种nfs操作字性能测试设备的结构图。

具体实施方式

本申请的核心是提供一种nfs操作字性能测试的方法、系统、设备及计算机可读存储介质,用于对nfs操作字进行性能测试。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种nfs操作字性能测试的方法的流程图。

其具体包括如下步骤:

s101:客户端执行挂载命令挂载至服务端导出的共享目录;

基于现有技术中存在着对文件操作过程监测不足的问题,使得用户无法明确了解每一个操作字在执行过程中产生的时延和故障等信息,进而无法对故障原因及时延原因做具体定位和分析,极大的影响了nfs操作字的性能;本申请提供了一种nfs操作字性能测试的方法,用于解决上述问题;

在对nfs操作字进行性能测试之前,先令客户端执行挂载命令挂载至服务端导出的共享目录上,以使用户通过客户端在共享目录内完成对各操作字的测试;

可选的,可以令客户端执行mount命令挂载至服务端导出的共享目录上。

s102:当接收到测试命令时,根据该测试命令确定操作字;

优选的,基于用户对操作字进行测试的测试需求可能有多种类型,这里提到的,当接收到测试命令时,根据该测试命令确定操作字,其具体可以为:

解析该测试命令,得到多个操作字及测试顺序;

根据该测试顺序对多个操作字进行排序;

通过根据测试顺序对多个操作字进行排序之后,使得针对每一个需要测试的操作字,用户不需要输入每一个对应的测试命令,而是仅输入一个包含测试顺序的测试命令便可完成测试命令的输入,极大的减轻了用户工作。

s103:在该共享目录内执行该操作字对应的操作,并计算该操作字调用lib库的时延;

当根据该测试命令确定操作字后,在共享目录内执行该操作字对应的操作,每个操作字在代码底层通过调用一个或多个lib库,来实现操作字的相关功能,此时系统计算该操作字调用lib库的时延并保存;

优选的,这里提到的操作字具体可以包括打开(open),读写(read,write),创建(create),删除(remove),设置属性(setattr),获取属性(getattr),创建目录(mkdir),删除目录(rmdir),软、硬链接(symlink,link),提交(commit),读取目录内容(readdir),重命名(rename)等;

这里提到的操作对应包括打开操作,读写操作,创建操作,删除操作,设置属性操作,获取属性操作,创建目录操作,删除目录操作,软、硬链接操作,提交操作,读取目录内容操作,重命名操作等。

s104:从服务端中获取时间阈值,并判断该时延是否超过该时间阈值;

若是,则进入步骤s105;

当该时延超过该时间阈值时,则证明该操作字调用lib库的时延较高,此时输出该操作字的属性信息,以使用户能够根据该属性信息对操作字调用lib库产生的时延和故障等信息进行定位和分析;

优选的,当该时延未超过该时间阈值时,则证明该操作字调用lib库的时延较低,此时还可以将该操作字记录为测试通过的操作字,方便用户查看;

优选的,在从服务端中获取时间阈值之前,还可以包括:

将包括时间阈值设置命令的配置文件发送至服务端,以使服务端重启ganesha服务读取配置文件得到时间阈值设置命令,并执行该时间阈值设置命令对时间阈值进行设置;

例如,可以在ganesha配置文件中,添加时间阈值time_threshold=5(自定义整数值),此时重启ganesha服务,系统读取ganesha配置文件,在系统内部设置时间阈值为5s,当操作字调用lib库的时延大于5s时,打印该操作字的属性;若小于5s,则不打印该操作字的属性信息。

s105:输出该操作字的属性信息。

这里提到的属性信息包括调用函数信息、调用lib库信息、目录id、调用结果信息、调用时延信息中的至少一项;

可选的,该属性信息的输出方式可以有多种,例如可以将属性信息以邮件形式发送至用户指定的邮箱,也可以将属性信息输出至显示屏,并通过短信提示等方式提示用户查看,还可以将属性信息上传至指定云平台目录,方便管理人员汇总,本申请对该属性信息的输出方式不做具体限定。

基于上述技术方案,本申请所提供的一种nfs操作字性能测试的方法,通过执行根据测试命令确定的操作字,并计算该操作字调用lib库的时延,然后从服务端中获取时间阈值,判断该时延是否超过时间阈值,若是,则证明该操作字调用lib库的时延较高,此时输出该操作字的属性信息,以使用户能够根据该属性信息对操作字调用lib库产生的时延和故障等信息进行定位和分析,提高了代码的可维护性,优化了存储服务文件系统i/o性能。

针对于上一实施例,步骤s104中提到可通过输入配置文件的方式对时间阈值进行设置,然而该方法需要重启ganesha服务,基于此,本申请还提出了另一种nfs操作字性能测试的方法,能够动态调整该时间阈值,下面结合图2进行说明。

请参考图2,图2为本申请实施例所提供的另一种nfs操作字性能测试的方法的流程图。

其具体包括以下步骤:

s201:当接收到输入的ganesha脚本时,将ganesha脚本中的连接指令发送至服务端,以使服务端根据连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接;

s202:将该ganesha脚本中的时间阈值参数通过该d-bus进程间通信后台发送至该nfs-ganesha文件系统,以使该nfs-ganesha文件系统根据该时间阈值参数设置对应的时间阈值。

例如,当接收到编写的ganesha脚本,即ganesha_mgr.py文件时,通过执行脚本命令ganesha_mgrset_switchtime_threshold5,向服务端传入参数set_switch、time_threshold、5;

此时服务端根据关键字“set_switch”,将nfs-ganesha文件系统和d-bus进程间通信后台建立连接;并将time_threshold和5两个参数传入nfs-ganesha文件系统在;最后,在nfs-ganesha文件系统内部,根据传入参数关键字“time_threshold”将时延阈值设置为5s。

基于上述技术方案,本申请所提供的另一种nfs操作字性能测试的方法,通过根据ganesha脚本中的连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接,再将ganesha脚本中的时间阈值参数通过该d-bus进程间通信后台发送至该nfs-ganesha文件系统,以使该nfs-ganesha文件系统根据该时间阈值参数设置对应的时间阈值,不需要重启ganesha服务,即可完成对时间阈值的设置。

请参考图3,图3为本申请实施例所提供的一种nfs操作字性能测试的系统的结构图。

该系统可以包括:

挂载模块100,用于客户端执行挂载命令挂载至服务端导出的共享目录;

确定模块200,用于当接收到测试命令时,根据测试命令确定操作字;

执行模块300,用于在共享目录内执行操作字对应的操作,并计算操作字调用lib库的时延;

获取及判断模块400,用于从服务端中获取时间阈值,并判断时延是否超过时间阈值;

输出模块500,用于当时延超过时间阈值时,输出操作字的属性信息;其中,属性信息包括调用函数信息、调用lib库信息、目录id、调用结果信息、调用时延信息中的至少一项。

请参考图4,图4为本申请实施例所提供的另一种nfs操作字性能测试的系统的结构图。

该系统还可以包括:

第一发送模块,用于将包括时间阈值设置命令的配置文件发送至服务端,以使服务端重启ganesha服务读取配置文件得到时间阈值设置命令,并执行时间阈值设置命令对时间阈值进行设置。

该系统还可以包括:

第二发送模块,用于当接收到输入的ganesha脚本时,将ganesha脚本中的连接指令发送至服务端,以使服务端根据连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接;

第三发送模块,用于将ganesha脚本中的时间阈值参数通过d-bus进程间通信后台发送至nfs-ganesha文件系统,以使nfs-ganesha文件系统根据时间阈值参数设置对应的时间阈值。

该系统还可以包括:

记录模块,用于将操作字记录为测试通过的操作字。

以上系统中的各个组成部分可实际应用于以下的实施例中:

挂载模块令客户端执行挂载命令挂载至服务端导出的共享目录;当接收到测试命令时,确定模块根据测试命令确定操作字;执行模块在共享目录内执行操作字对应的操作,并计算操作字调用lib库的时延;

当接收到输入的ganesha脚本时,第二发送模块将ganesha脚本中的连接指令发送至服务端,以使服务端根据连接指令建立nfs-ganesha文件系统与d-bus进程间通信后台的连接;第三发送模块将ganesha脚本中的时间阈值参数通过d-bus进程间通信后台发送至nfs-ganesha文件系统,以使nfs-ganesha文件系统根据时间阈值参数设置对应的时间阈值;

获取及判断模块从服务端中获取时间阈值,并判断时延是否超过时间阈值;当时延超过时间阈值时,输出模块输出操作字的属性信息;当时延未超过时间阈值时,记录模块将操作字记录为测试通过的操作字。

请参考图5,图5为本申请实施例所提供的一种nfs操作字性能测试设备的结构图。

该nfs操作字性能测试设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在nfs操作字性能测试设备600上执行存储介质630中的一系列指令操作。

nfs操作字性能测试设备600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述图1至图2所描述的nfs操作字性能测试的方法中的步骤由nfs操作字性能测试设备基于该图5所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种nfs操作字性能测试的方法、系统、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

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