一种ZNS固态硬盘性能测试方法转让专利

申请号 : CN202211608888.8

文献号 : CN115966247B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李维祥胡博刘兴斌

申请人 : 武汉麓谷科技有限公司

摘要 :

本发明提供了一种ZNS固态硬盘性能测试方法,首先采用分析模块对样本硬盘中的数据组成进行分析,得到硬盘中存储的各种数据类型的占比,根据所述占比对应的配置测试数据包,然后利用Linux系统的FIO性能测试,在基本测试环境测试ZNS固态硬盘读写性能,验证ZNS固态硬盘特定场景的标称性能。本发明通过配置与用于应用场景相同的基本测试环境,保证了最终性能与特定用户场景的实际性能表现一致,提高了ZNS固态硬盘选型、测试结果的有效性和真实性。进一步,本发明简化测试系统,只需要搭建Linux 5.15以上内核的系统,就可以测试ZNS固体硬盘的读写特性;同时提供了完整的测试报告,清晰展示多种场景下的读写性能,便于使用者比较选型。

权利要求 :

1.一种ZNS固态硬盘性能测试方法,其特征在于包括以下步骤:

1)在测试机中搭建包含Linux 5.15以上内核的测试系统,并使得测试系统与测试机的硬件相互兼容;

2)下载fio‑3.30的源文件,修改其中的IO引擎中调用ioctl的方法,重新编译;

3)接入数据样本硬盘以及待检测ZNS固态硬盘,通过识别模块识别接入的所述待检测ZNS固态硬盘的基本信息以及当前系统的CPU核心数量;并通过分析模块对所述样本硬盘中的数据类型进行分析统计,得到每种数据类型在所述样本硬盘中的占比,并进行归一化处理,根据归一化后的所述占比构建测试矩阵A=[ai],所述ai表示某一数据类型在所述样本硬盘的存储空间中的归一化占比,其中i为正整数;然后按照预设测试策略对所述待检测ZNS固态硬盘进行FIO性能测试;所述预设测试策略包括:

3.1)格式化所述待检测ZNS固态硬盘清除所述待检测ZNS固态硬盘的数据,然后顺序写满全盘三圈,然后随机写直至后台垃圾回收功能稳定;

3.2)指定测试区域为顺序写分区,如全部为顺序写分区则不指定;

3.3)设定测试数据的总容量,再根据测试矩阵A配置每种数据类型的测试数据块的大小,全部的测试数据块组成测试数据包,采用所述测试数据包分别测试不同大小Zone块、不同队列深度、不同线程数下的顺序写、顺序读、随机写、随机读、顺序混合读写和随机混合读写的带宽、IOPS和延时;

3.4)分析I/O中的带宽、IOPS和时延数据,汇成图表并生成测试报告。

2.根据权利要求1所述的测试方法,其特征在于:所述步骤3.3)中测试包括以下步骤:

3.3.1)通过nvme‑cli或者blk zone工具获取每个zone的状态以及wp,根据full zone/empty zone计算得出WP位置;

3.3.2)计算得出的WP传入到下一次FIO的offset参数中,减少IO前reset zone操作;

3.3.3)监测zone状态,在所有zone变为full状态前,reset相应数量的zone;

3.3.4)通过IOctl中的pread和pwrite进行IO读写操作并记录每个Zone的每种IO过程中的带宽、IOPS、时延信息。

3.根据权利要求2所述的测试方法,其特征在于:所述FIO性能测试中分别将所述待检n m测ZNS固态硬盘的测试Zone块大小设定为2K、测试队列深度设定为2以及测试线程设定为t

2,其中m,t选自1至8的任意整数,且n为大于2;m<=t/2。

4.根据权利要求1所述的测试方法,其特征在于:FIO性能测试包括顺序读、顺序写、随机读、随机写和混合读写;所述FIO性能测试采用命令形式或负载说明文件形式。

5.根据权利要求1所述的测试方法,其特征在于:在所述待检测ZNS固态硬盘进行测试前,还包括将中断命令与CPU核心均匀绑定的步骤,其中中断命令与CPU核心一一对应。

6.根据权利要求1所述的测试方法,其特征在于:所述数据类型包括用户文件,多媒体,系统文件,应用程序以及程序数据。

7.根据权利要求1所述的测试方法,其特征在于:所述预设测试策略进一步包括:重复步骤3.1)‑3.3)两次以上,得到多个带宽、IOPS和时延数据,计算所述带宽、IOPS和时延数据的平均值,采用所述平均值进行汇成图表并生成测试报告。

8.根据权利要求1所述的测试方法,其特征在于:将所述测试数据包写入时,分别按照不同的所述测试数据块大小、不同的时间间隔向所述待检测ZNS固态硬盘持续写入。

9.根据权利要求8所述的测试方法,其特征在于:所述测试数据块大小按照从大到小或者从小到大的顺序写入。

10.根据权利要求8所述的测试方法,其特征在于:相同大小的所述测试数据块的时间间隔相同,不同大小的所述测试数据块的时间间隔不同。

说明书 :

一种ZNS固态硬盘性能测试方法

技术领域

[0001] 本发明涉及计算机领域,具体地,涉及一种ZNS固态硬盘性能的测试方法和装置。

背景技术

[0002] 随着云计算、互联网技术的快速发展,日常工作生活中时时刻刻都会产生海量数据需要存储,数据存储技术得到相应的发展以满足爆炸式增长数据的现实存储需求,固态硬盘(Solid State Drives,简称SSD)作为主流存储技术之一,相对于普通机械硬盘,其具有成本低、读取速度快和能耗低的优势。伴随着数据存储业务的快速发展,对于SSD的读写性能和寿命要求越来越高,需要解决SSD的空间放大问题和性能问题,近年来出现了NVME Zoned Namespaces(ZNS)固态硬盘。ZNS技术是新定义一种Zoned Name Space。Host主机可以把具有相似访问频率的数据放在相同的ZNS中,不同访问频率的数据放在不同的ZNS,以减少整体写放大,从而延长硬盘寿命。因此,ZNS固态硬盘的高速读写性能和近似1的写放大引起广大数据使用者的兴趣,并在各个应用领域的使用逐渐变得广泛起来。随着ZNS固态硬盘使用量和使用领域的不断扩展,对于ZNS固态硬盘的测试方法和技术提出了新的要求。
[0003] 传统的针对PC/笔记本/服务器领域常用的测试固态硬盘的工具绝大多数与测试普通机械硬盘的工具相同,但是由于固态硬盘的工作原理与普通硬盘完全不同,需要针对固态硬盘的固有工作特点来制定有针对性的测试方法,才能对其进行特性进行评估和验证。尤其是针对当下主流的ZNS固态硬盘,在业界几乎没有公认公用的性能测试方法,基本都是根据特定场景和应用需求进行系统级别的性能测试,无法直接评判ZNS固态硬盘的性能指标,不便于使用者选型;由于ZNS固态硬盘的架构设计与标准固态硬盘不同,标准固态硬盘的测试方法和测试工具无法在ZNS固态硬盘测试中使用,所以急需一种可普遍应用,脱离特定应用的性能测试方法。

发明内容

[0004] 针对现有的ZNS固态硬盘测试方法只针对特定的用户场景,其他情形由于应用数据的发送模式和数据模板不同,最终性能不一定与特定用户场景的性能表现一致的问题,本发明提出一种通用的ZNS固态硬盘的测试方法,可以在基本测试环境下测试ZNS固态硬盘或标准NVME固态硬盘的读写性能,并验证ZNS固态硬盘特定场景的标称性能。
[0005] 本发明提出了一种固态硬盘性能测试方法,其特征在于包括以下步骤:
[0006] 1)在测试机中搭建包含Linux内核的测试系统,并使得测试系统与测试机的硬件相互兼容;
[0007] 2)下载fio‑3.30的源文件,修改其中的IO引擎中调用ioctl的方法,重新编译;
[0008] 3)接入数据样本硬盘以及待检测ZNS固态硬盘,通过识别模块识别接入的所述待检测ZNS固态硬盘的基本信息以及当前系统的CPU核心数量;并通过分析模块对所述样本硬盘中的数据类型进行分析统计,得到每种数据类型在所述样本硬盘中的占比,并进行归一化处理,根据归一化后的所述占比构建测试矩阵A=[ai],所述ai表示某一数据类型在所述样本硬盘的存储空间中的归一化占比,其中i为正整数;然后按照预设测试策略对所述待检测ZNS固态硬盘进行FIO性能测试;所述预设测试策略包括:
[0009] 3.1)格式化所述待检测ZNS固态硬盘清除所述待检测ZNS固态硬盘的数据,然后顺序写满全盘三圈,然后随机写直至后台垃圾回收功能稳定;
[0010] 3.2)指定测试区域为顺序写分区,如全部为顺序写分区则不指定;
[0011] 3.3)设定测试数据的总容量,再根据测试矩阵A配置每种类型的测试数据块的大小,全部的测试数据块组成测试数据包,采用所述测试数据包分别测试不同大小Zone块、不同队列深度、不同线程数下的顺序写、顺序读、随机写、随机读、顺序混合读写和随机混合读写的带宽、IOPS和延时;
[0012] 3.4)分析I/O中的带宽、IOPS和时延数据,汇成图表并生成测试报告。
[0013] 进一步,所述步骤3.3)中测试包括以下步骤:
[0014] 3.3.1)通过nvme‑cli或者blkzone工具获取每个zone的状态以及wp,根据full zone/empty zone计算得出WP位置;
[0015] 3.3.2)计算得出的WP传入到下一次FIO的offset参数中,减少IO前reset zone操作;
[0016] 3.3.3)监测zone状态,在所有zone变为full状态前,reset相应数量的zone;
[0017] 3.3.4)通过IOctl中的pread和pwrite进行IO读写操作并记录每个Zone的每种IO过程中的带宽、IOPS、时延信息。
[0018] 进一步,所述FIO性能测试中分别将所述待检测ZNS固态硬盘的测试Zone块大小设n定为2K、测试队列深度设定为2m以及测试线程设定为2t,其中m,t选自1至8的任意整数,且n为大于2;m<=t/2。
[0019] 进一步,FIO性能测试包括顺序读,顺序写,随机读,随机写,混合读写;所述FIO性能测试采用命令形式或负载说明文件形式。
[0020] 进一步,在所述待检测固态硬盘进行测试前,还包括将中断命令与CPU核心均匀绑定的步骤,其中中断命令与CPU核心一一对应。
[0021] 进一步,所述数据类型包括用户文件,多媒体,系统文件,应用程序以及程序数据。
[0022] 进一步,重复步骤3.1)‑3.3)两次以上,得到多个带宽、IOPS和时延数据,计算所述带宽、IOPS和时延数据的平均值,采用所述平均值进行汇成图表并生成测试报告。
[0023] 进一步,将所述测试数据包写入时,分别按照不同的所述测试数据块大小、不同的时间间隔向所述待检测ZNS固态硬盘持续写入。
[0024] 进一步,所述测试数据块大小按照从大到小或者从小到大的顺序写入。
[0025] 进一步,相同的大小的所述测试数据块的时间间隔相同,不同大小的所述测试数据块的时间间隔不同。
[0026] 本发明与背景技术相比,具有的有益的效果是:
[0027] 1.适应多种待测设备,通过参数设置,可以选择支持ZNS固态硬盘块设备读写性能,文件系统的读写性能,或者标准NVME固态硬盘的性能测试。
[0028] 2.简化测试系统,只需要搭建Linux 5.15以上内核的系统,就可以测试ZNS固态硬盘和标准NVME固态硬盘的读写特性,清晰展示多种场景下的读写性能,便于使用者比较选型。
[0029] 3.通过分析样本硬盘的不同数据的占比,对应的设置相同比例的测试数据,使得测试环境更贴近实际使用情况,测试结果更加真实、可靠。
[0030] 4、在测试环境下分别测试了不同大小数据块,在不同大小的Zone分区中的带宽、IOPS和延时,同时进行重复检测,保证了测试结果的全面性和准确性。

附图说明

[0031] 为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0032] 本说明书附图所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本申请可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本申请所能产生的功效及所能达成的目的下,均应仍落在本申请所揭示的技术内容得能涵盖的范围内。
[0033] 图1为在IO读写操作时跟踪每个zone的状态参数的方框图。
[0034] 图2为测试环境搭建原理图。
[0035] 图3为性能测试流程图。

具体实施方式

[0036] 下面将结合本申请实施例中的附图,对本申请中的实施例进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0037] 本发明提出一种通用的ZNS SSD的测试方法,参考图1,图1为本发明实施例提供的搭建的测试环境方框示意图,该方法包括:
[0038] 1、在测试机中搭建包含Linux 5.16内核的测试系统,并使得测试系统与测试机的硬件相互兼容;
[0039] 具体的,测试平台采用Linux,选择Linux 5.16内核进行编译,将内核源代码编译成一个可执行的镜像文件,同时创建一个root文件系统;并将Linux 5.16内核和文件系统绑定,计算机启动后载入上述编译的内容,进而安装root文件系统,并执行初始化程序。
[0040] 具体的,在编译内核时,配置内核编译选项时,至少包括选择支持PCIE接口,USB,Ramdisk,initrd,ext2以及ext3等,使其可以再虚拟内存中建立root文件系统。
[0041] 2、下载fio‑3.30的源文件,修改其中的IO引擎中调用ioctl的方法,重新编译;
[0042] 业界一般用fio工具对盘进行读写试。fio是一个IO测试工具,可以运行在Linux、Windows等多种系统之上,可以用来测试本地硬盘、网络存储等的性能。一般厂商给的spec说明,基本上是基于在fio工具下跑出来的读写性能。具体的,FIO是Linux下开源的一款IOPS测试工具,它可以产生许多线程或进程来执行用户特定类型的I/O操作,通过编写作业文件或者直接命令去执行测试动作。FIO相当于是一个多线程的io生成工具,用于生成多种IO模式来测试硬盘设备的性能。通过设置合适的读写类型和读写占比就可以测试不同场景下ZNS固态硬盘的预期表现性能,从而为使用者提供参考依据。其中常用可设置参数如下表1所示。
[0043] 表1
[0044]
[0045]
[0046] 而通常用户在使用固态硬盘存储数据时,各类数据是杂乱无章的存放的,无法估算出各类数据的分布情况。而对于ZNS固态硬盘,其遵循分区存储模型,这种基于标准的架构采用统一的存储方法,使HDD和ZNS固态硬盘中的叠瓦式磁记录(SMR)能够共享统一的软件堆栈。特别是对于ZNS固态硬盘,区域抽象允许主机将其写入与基于闪存的固态硬盘的顺序写入所需属性对齐,从而优化数据在固态硬盘介质上的放置。Host可以结合业务场景和文件系统,选择合适的时间执行QoS优化,以达到最优的性能。同时,访问实行IO隔离,根据不同的业务场景,适配不同的管理算法,配合特定的物理存储空间,实现IO互不干扰。
[0047] 不同的应用场景存储的数据类型通常是不同的,因此对于ZNS固态硬盘的读写性能的要求不同。而通过分析样本硬盘的数据,可以真实的还原硬盘中需要存储的各种数据类型的比例,从而可以以此为依据,指定相应的测试策略。具体的,如通过配置rwmixwrite参数,可以得到混合读写的模式下,不同的写/读占比下ZNS固态硬盘的性能。即,令rwmixwrite=N,其中N为1‑100内任意整数,通过配置参数N,可以得到不同的写/读比下,ZNS固态硬盘的性能。
[0048] 3、按照预定策略进行测试。机械硬盘中文件系统可以直接将新数据写入到旧数据存储的位置,可以直接覆盖旧数据。在固态硬盘中,如果想让某个存有无效数据的块写入新数据,就需要先把整个块擦除,才可以写入新的数据。固态硬盘并不具备直接覆盖旧数据的能力,所谓GC(垃圾回收)是指把目标擦除位置现存有效数据重新转移到其他闪存位置,然后把包括无效数据的该位置彻底擦除的过程。ZNS把LBA直接展示给上层应用,由上层应用来调度的GC操作,ZNS SSD由于Zone内顺序写、无覆盖写因此GC操作比Open Channel更高效可控,从而性能也比较稳定。参考图3,图3为本发明ZNS固态硬盘性能测试流程图,具体的,包括如下步骤:
[0049] 3.1.格式化固态硬盘清除固态硬盘的数据,然后顺序写满全盘三圈,然后随机写直至后台垃圾回收功能稳定。由于每个ZNS固态硬盘的状况不同,待垃圾回收功能稳定后,可以使得写入时硬盘状态基本相同,避免因硬盘存储容量不同而导致的测试误差,提高了测试结果的客观性和可靠性。
[0050] 3.2.采用分析模块对样本数据进行分析,设定不同的场景模式,并指定测试区域为顺序写分区,如全部为顺序写分区则不指定。通常,ZNS固态硬盘写入模式包括Append写入模式和ZRWA写入模式。Append命令将由固态硬盘决定写入的LBA,并返回给用户,这样消除了主机软件间的zone写入位置竞争问题。ZRWA允许在固态硬盘缓存中对数据进行随机写入和就地覆盖。与Zone Append命令相比,这种方法在固态硬盘上需要更多的资源。两种写入模式是不同的,测试时多个进程同时写入,会由于写入模式不同而导致测试标准不一致的情况发生。因此,将测试区域统一设置为顺序写入区,有利于避免写入模式不同而导致的测试结果不可靠的情况发生。同时,由于不同的用户的使用场景是不同的,需要针对不同场景分别制定相应的测试策略。但是,使用者对于使用场景虽然可以区分,例如,在个人使用者中,包括多媒体,软件程序,文字,图片等等;而在企业使用者,通常同样包括了包含个人信息的数据库,多媒体、文件以及图片等。对于不同使用者,固态硬盘中存储的各种数据的占比是是不同的,这导致在不同场景下,用户对于ZNS固态硬盘的性能需要不尽相同。因此,常规的测试方法并不能准确的评估固态硬盘在特定场景下的性能。
[0051] 通过分析模块对用户样本硬盘中的数据组成进行分析,根据分析结果构建测试矩阵A=[ai],其中ai表示某一数据类型在全部存储数据中的占比,i为正整数。例如,A=[a1,a2,a3,a4,a5],其中a1‑a5分别表示用户文件,系统文件,程序,程序数据以及多媒体在样本硬盘中的存储空间占比,或者分别表示文件,音频,视频,图片以及系统数据;然后分别按照上述占比构建测试矩阵A。根据测试矩阵A形成不同数据类型的测试块,将全部测试块合成一数据测试包,采用上述数据测试包对ZNS固态硬盘进行测试。具体的,例如测试矩阵A=[0.4,0.2,0.1,0.1,0.2],数据测试包为100G,则不同的数据类型的测试块大小分别为40G,20G,10G,10G,20G,将上述测试块组成所述100G的数据测试包,然后对ZNS固体硬盘进行测试。通过分析模块对样本硬盘中的数据组成进行分析,可以清晰的提供用户在使用环境中对于各种类型的数据的使用情况。在测试时,按照相应比例的配置各种不同测试数据,各种不同测试数据共同组成一个数据测试包,保证测试环境与实际使用环境接近,保证了测试结果的可靠性和准确性。
[0052] 3.3.设定测试数据的总容量,根据测试矩阵A配置每种类型的测试数据大小,分别测试不同块大小/不同队列深度/不同线程数下的顺序写/顺序读/随机写/随机读/顺序混合读写/随机混合读写的带宽/IOPS和延时。
[0053] 其中,IOPS(Input/OutputOperations Per Second)是一个用于体现计算机存储设备综合测试性能参数。
[0054] 带宽(BW,Bandwidth),是指单位时间内可以成功传输的数据量(MB/s)。大量顺序读写的应用,例如离线计算任务,需依赖于带宽。
[0055] 延时是指固态硬盘处理一个I/O需要的时间(us)。一般情况下,在线业务对高延迟比较敏感,离线任务对高延迟比较不敏感。
[0056] FIO性能测试主要是用来测试SSD的I/O性能。可根据测试者的不同场景的应用需要,进行各种混合I/O的测试。I/O测试主要包括两种方式:1)命令形式,即FIO[‑options];2)FIO+负载说明文件形式。本发明通过FIO将分别测试ZNS固态硬盘的Zone区域为2nK、队列深度为2m以及线程为2t的FIO性能,其中FIO性能包括顺序读,顺序写,随机读,随机写,混合读写等,其中n,m,t可以分别独立为1,2……8,且m<=t/2。通过设置不同的Zone区域大小,可以测试得到性能与不同Zone区域大小的关系曲线。通过设置队列深度以及线程数,并使得m<=t/2,可以保证ZNS固态硬盘可以始终处于满负荷读或写的状态,使得测试结果更靠近极限边界,准确反映出ZNS固态硬盘在特定场景下的极限性能。
[0057] 由于ZNS固态硬盘的特性导致其顺序写分区只能从WP位置开始IO顺序写,从任意其他位置写操作均会报错,每次IO操作时需要准确传入WP的位置;对单个zone只能整体reset,不能直接覆盖写。其中在步骤3.3中进行读写测试时,包括以下步骤:
[0058] 3.3.1通过nvme‑cli或者blkzone工具获取每个zone的状态以及wp,根据full zone/empty zone计算得出WP位置;
[0059] 3.3.2计算得出的WP传入到下一次FIO的offset参数中,减少IO前reset zone操作;
[0060] 3.3.3监测zone状态,在所有zone变为full状态前,reset相应数量的zone;
[0061] 3.3.4.通过IOctl中的pread和pwrite进行IO读写操作并记录每种IO过程中的BW、IOPS、时延信息;
[0062] 3.4.分析IO中的BW、IOPS、时延数据,汇成图表并生成测试报告。
[0063] 本测试方法启用多线程,在IO读写操作的同时跟踪每个zone的状态,及时汇报WP位置以及zone状态,测试常用场景,获取性能数据,如带宽/IOPS/时延,然后利用脚本语言画图并制作测试报告,脚本代码实现如下:
[0064]
[0065] 进一步,在固态硬盘进行测试时,可将中断命令与CPU核心均匀绑定,并对固态硬盘进行测试,其中每个CPU核心对应的中断命令相同,所述CPU核心的数量与中断命令的数量对应相同。通过监测模块检测每个CPU核心在测试时的工作状态,将硬盘的输入输出线程均匀的分配到每一个对应的处理器核心,以保证每个核心均可以接受均等的负载,将中断分配给所有CPU核心处理显然能很好的平衡性能,避免了在多核CPU条件下,中断命令大部分是分配给单一CPU核心上,将会大大减轻单一CPU的负担、提高整体处理效率。若监测模块检测到某一核心未加载负载,则重新将中断命令与CPU核心绑定。
[0066] 全部核心全部参与ZNS固态硬盘测试,可以有效提升ZNS固态硬盘的性能,满足ZNS固态硬盘测试性能要求,操作简单,实用性较强,提高了工作效率。
[0067] 本发明提供的ZNS固态硬盘性能测试方法可以利用Linux的FIO性能测试,在基本测试环境测试ZNS固态硬盘读写性能,验证ZNS固态硬盘特定场景的标称性能,配置与用于应用场景相同的基本测试环境,保证了最终性能与特定用户场景的实际性能表现一致,提高了ZNS固态硬盘选型、测试结果的有效性和真实性。同时提供了完整的测试报告,清晰展示多种场景下的读写性能,便于使用者比较选型和使用。本发明提供的ZNS固态硬盘性能测试方法同样适用于标准NVME固态硬盘的性能测试,在此不再赘述。
[0068] 本说明书中各个实施例采用递进、或并列、或递进和并列结合的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0069] 需要说明的是,在本申请的描述中,需要理解的是,术语“上”、“下”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中设置的组件。
[0070] 还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
[0071] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。