一种固态硬盘的寿命测试方法及装置与流程

文档序号:13640629阅读:411来源:国知局

本申请涉及电子技术领域,尤其涉及一种固态硬盘的寿命测试方法及装置。



背景技术:

目前固态硬盘(solidstatedrives,ssd)技术突飞猛进,尤其在寿命方面,已经达到了消费用户能够接受的范围。但是,对于企业用户来说,虽然ssd没有机械部件,稳定性更好,然而寿命方面的问题依然让很多企业担忧。因此,需要具备相应的寿命测试技术,确定ssd的寿命能否满足企业需求。

基于闪存(nandflash)的ssd固态硬盘相比传统机械硬盘(harddiskdrives,hdd)具有速度快、体积小、低功耗、无噪音等优点,因此受到了各大企业及消费者的青睐。但nandflash本质上是浮栅金属氧化物半导体场效应管(floatinggatemosfet),每进行一次擦除/写入(p/e)过程都会击穿一层或多层氧化层,这会对nandflash造成一定程度的物理损伤,使得其读写次数有限,从而导致基于nandflash的ssd寿命有限,这也是其最大的缺陷。

nandflash的类型分为两种:多层单元(multi-levelcell,mlc)和单层单元(single-levelcell,slc)。理论上mlc的p/e寿命为1万次,slc的寿命为10万次,但经过实际测试,mlc的寿命可能只有3千次,而slc也只有3万次。nandflash的缺陷需要靠ssd主控芯片或操作系统算法补足,耗损平衡(wear-leveling,wl)技术应运而生。

wear-leveling算法分为两种:动态(dynamic)wl和静态(static)wl。dynamicwl保证数据的编写/擦除循环被均匀地分布到nandflash所有空闲块(block)中,避免应用程序重复不断地对同一个存储区域进行p/e过程而导致存储单元出现永久性损坏。但仅使用dynamicwl无法保证所有的block能够在相同的概率下使用wl算法,因为dynamicwl未考虑存在冷数据存储状态时的磨损均衡。其中,所述冷数据是指活动不频繁,不经常被访问甚至永远不被访问的数据。staticwl将冷数据存储block考虑在内,通过调整冷数据的物理地址使得flash的所有block均衡磨损,实现ssd寿命最大化。当ssd主控支持staticwl算法,同时ssd存在冷数据存储时,热数据的不断写入/擦除过程会引入写入放大,而写入放大对ssd的寿命会造成一定程度的影响。所述热数据,即活动频繁,经常被访问的数据。

目前,普遍使用的ssd寿命测试方法是大规模数据写入,即利用某些软件或编写相应代码对未存储任何数据的ssd进行持续写入数据过程,直至ssd损坏为止。如图1所示,具体写入过程如下:

步骤一:在全新的ssd中写满数据。

步骤二:继续写入数据,依次覆盖逻辑(logical)block0,logicalblock1,logicalblock2…logicalblockn,对应的物理(physical)block0,physicalblock1,physicalblock2…physicalblockn每个资源块都经擦除/写入的过程。

步骤三:重复步骤二,直至ssd损坏为止,记录写入次数m,即为其寿命。

这个过程不存在冷数据的存储,不会引起写入放大,并且对于nandflash来说是个均衡磨损的过程,因此无论ssd主控是否拥有wl算法,测试结果均一致。

综上所述,现有技术中,大规模数据写入的方法速度慢,每次p/e过程都需要擦除所有block中的数据,然后再写入;现有大规模数据写入测试ssd寿命的方法不能有效测试ssd主控是否支持静态wear-leveling算法;现有测试ssd寿命的方法未考虑存在冷数据存储的状态,忽略了实际使用过程中存在写入放大对ssd寿命的影响,不能真实有效地反映在实际使用过程中的ssd寿命。



技术实现要素:

本申请实施例提供了一种固态硬盘的寿命测试方法及装置,用以提高测试效率,验证固态硬盘主控是否支持静态wear-leveling算法,使测试结果更加准确。

本申请实施例提供的一种固态硬盘的寿命测试方法,包括:

将冷数据和热数据分别写入待测试的固态硬盘中,并且将冷数据存入另一设备中进行备份;

将所述热数据持续写入所述固态硬盘,并记录所述热数据的写入次数;

根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,如果是,则继续将所述热数据持续写入所述固态硬盘,否则,测试结束。

通过该方法,实现了基于冷数据存储状、热数据持续写入相结合的方式进行ssd寿命测试,相比现有技术只采用热数据进行写入/擦除的操作,提高了测试效率,并且能够验证固态硬盘主控是否支持静态wear-leveling算法,充分考虑了写入放大对ssd寿命的影响,真实反映了ssd实际使用情况的寿命,使测试结果更加准确。

较佳地,所述热数据的大小小于或等于所述待测试的固态硬盘中一个块的存储空间大小。

较佳地,所述将冷数据和热数据分别写入待测试的固态硬盘中,具体包括:

将冷数据写入待测试的固态硬盘中的块中,并预留一空白块;

将热数据写入所述预留的空白块中。

较佳地,将所述热数据持续写入所述固态硬盘,具体包括:

利用所述热数据,对所述固态硬盘持续进行擦除、写入操作。

较佳地,所述根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,具体包括:

在所述热数据的写入次数小于或等于预设的门限值的阶段,按照预设第一周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致;在所述热数据的写入次数大于所述门限值的阶段,按照预设第二周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,其中,所述第二周期大于所述第一周期。

较佳地,对于多层单元闪存类型的固态硬盘,所述门限值为5万次,所述第一周期为1万次,所述第二周期为100万次;

对于单层单元闪存类型的固态硬盘,所述门限值为50万次,所述第一周期为10万次,所述第二周期为100万次。

本申请实施例提供的一种固态硬盘的寿命测试装置,包括:

第一单元,用于将冷数据和热数据分别写入待测试的固态硬盘中,并且将冷数据存入另一设备中进行备份;

第二单元,用于将所述热数据持续写入所述固态硬盘,并记录所述热数据的写入次数;

第三单元,用于根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,如果是,则继续将所述热数据持续写入所述固态硬盘,否则,测试结束。

较佳地,所述热数据的大小小于或等于所述待测试的固态硬盘中一个块的存储空间大小。

较佳地,所述第一单元将冷数据和热数据分别写入待测试的固态硬盘中,具体包括:

将冷数据写入待测试的固态硬盘中的块中,并预留一空白块;

将热数据写入所述预留的空白块中。

较佳地,所述第二单元将所述热数据持续写入所述固态硬盘,具体包括:

利用所述热数据,对所述固态硬盘持续进行擦除、写入操作。

较佳地,所述第三单元根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,具体包括:

在所述热数据的写入次数小于或等于预设的门限值的阶段,按照预设第一周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致;在所述热数据的写入次数大于所述门限值的阶段,按照预设第二周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,其中,所述第二周期大于所述第一周期。

较佳地,对于多层单元闪存类型的固态硬盘,所述门限值为5万次,所述第一周期为1万次,所述第二周期为100万次;

对于单层单元闪存类型的固态硬盘,所述门限值为50万次,所述第一周期为10万次,所述第二周期为100万次。

附图说明

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

图1为现有技术中ssd首次写满数据的状态示意图;

图2为本申请实施例提供的一种固态硬盘的寿命测试方法的整体流程示意图;

图3为本申请实施例提供的一种固态硬盘的寿命测试方法的具体流程示意图;

图4为本申请实施例提供的冷数据存入后nandflash逻辑地址与物理地址映射关系示意图;

图5为本申请实施例提供的热数据首次写入后nandflash逻辑地址与物理地址映射关系示意图;

图6为本申请实施例提供的热数据第2次写入后nandflash逻辑地址与物理地址映射关系示意图;

图7为本申请实施例提供的热数据第3次写入后nandflash逻辑地址与物理地址映射关系示意图;

图8为本申请实施例提供的一种固态硬盘的寿命测试装置的结构示意图。

具体实施方式

本申请实施例提供了一种固态硬盘的寿命测试方法及装置,用以提高测试效率,验证固态硬盘主控是否支持静态wear-leveling算法,使测试结果更加准确。

本申请实施例提供的技术方案,为了使ssd寿命测试结果更加准确地反映实际使用情况,同时验证ssd主控芯片是否支持staticwear-leveling算法,提出了一种基于冷数据存储、热数据持续写入的ssd寿命测试方法和装置。

下面结合附图对本申请实施例提供的技术方案进行说明。

参见图2,本申请实施例提供的一种固态硬盘的寿命测试方法,包括:

s101、将冷数据和热数据分别写入待测试的固态硬盘中,并且将冷数据存入另一设备中进行备份。

其中,较佳地,所述热数据的大小小于或等于所述待测试的固态硬盘中一个块的存储空间大小。

较佳地,所述将冷数据和热数据分别写入待测试的固态硬盘中,具体包括:

将冷数据写入待测试的固态硬盘中的块中,并预留一空白块;

将热数据写入所述预留的空白块中。

s102、将所述热数据持续写入所述固态硬盘,并记录所述热数据的写入次数。

较佳地,将所述热数据持续写入所述固态硬盘,具体包括:

利用所述热数据,对所述固态硬盘持续进行擦除、写入操作。

其中,所述利用所述热数据,对所述固态硬盘持续进行擦除、写入操作,即按照预设周期,例如每秒进行一次热数据的覆盖操作,覆盖ssd中同一文件名的热数据。

s103、根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,如果是,则继续将所述热数据持续写入所述固态硬盘,否则,测试结束。

通过该方法,实现了基于冷数据存储状、热数据持续写入相结合的方式进行ssd寿命测试,相比现有技术只采用热数据进行写入/擦除的操作,提高了测试效率,并且能够验证固态硬盘主控是否支持静态wear-leveling算法,充分考虑了写入放大对ssd寿命的影响,真实反映了ssd实际使用情况的寿命,使测试结果更加准确。

较佳地,所述根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,具体包括:

在所述热数据的写入次数小于或等于预设的门限值的阶段,按照预设第一周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致;在所述热数据的写入次数大于所述门限值的阶段,按照预设第二周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,其中,所述第二周期大于所述第一周期。

较佳地,对于多层单元闪存类型的固态硬盘,所述门限值为5万次,所述第一周期为1万次,所述第二周期为100万次;

对于单层单元闪存类型的固态硬盘,所述门限值为50万次,所述第一周期为10万次,所述第二周期为100万次。

参见图3所示,本申请实施例提供技术方案的详细流程如下所述。

步骤一:冷数据存入。

首先,确定需要测试的ssd容量和每个block的容量,block的大小一般是128k,256k,或512k;然后,在ssd中存入一定大小的冷数据,同时将冷数据备份到另一设备中,以便后续对比使用。注意预留一个空白block作为热数据持续写入的物理地址。预留空间的大小可以根据实际情况调整。

需要说明的是,本申请实施例中,可以预留一个空白块给热数据,也可以预留多个空白块给热数据,根据使用者实际使用的情况确定,实际使用过程中存在多少冷数据,测试时就应该存入相应大小的冷数据,剩余的作为预留块用于存入热数据。

步骤二:冷数据校验。

为了确保冷数据写入时没有出现错误,可以进行该步骤二,即校验写入ssd中的冷数据和备份的冷数据是否一致,若一致则执行下面的步骤三,否则,重新向ssd写入冷数据,并重新备份冷数据。

步骤三:热数据持续写入。

编写相应代码,对所测ssd不断进行写入操作,这个过程是经过编程实现的,将ssd硬盘通过usb接口与计算机连接,通过写好的程序进行不断写入覆盖。所述热数据持续写入,具体地,包括:利用热数据覆盖ssd中相同文件名的文件,例如文件a为热数据,将文件a不断覆盖ssd中的文件a。如果文件b为冷数据,则ssd中的文件b则不会被覆盖。写入文件大小不超过一个block。由于nandflash的最小擦除单位为一个block,所以,无论写入文件的大小如何,写入一次均相当于一个block经历一次p/e过程。建议写入文件不宜过大,否则影响写入速度。写入文件的大小可根据实际使用情况调整。

步骤四:阶段性冷数据对比。

对于基于mlcnandflash类型的ssd,在测试初始阶段(热数据的写入次数在5万以下)以1万次为步进,将ssd中的冷数据与备份的冷数据进行对比,查看是否出现数据错误。初始阶段测试完成后,以100万次为步进,将ssd中的冷数据与备份的冷数据进行对比,直至出现数据错误的现象,测试结束,记录热数据的写入次数,即为该ssd的寿命。

对于基于slcnandflash类型的ssd,与上述对比过程相似,但初始阶段(写入次数50万以下)以10万次为步进,后期以100万次为步进,直至数据出现错误现象,测试结束,记录热数据的写入次数,即为该ssd的寿命。

测试原理如下所述:

一、冷数据存入后,nandflash中只剩下一个block的空间,即如图4所示的空白块(freeblock)。

二、热数据首次写入,此时freeblock被占用,假设物理地址为physicalblockn,与其对应的逻辑地址为logicalblockn,如图5所示。

三、当热数据持续写入,对于主控不支持wl算法或只支持dynamicwear-leveling算法的ssd,nandflash中的physicalblockn将被不断地擦除/写入,直至blockn损坏。此过程相对短暂,决定于nandflash的类型,理论上mlc的寿命1万次,slc的寿命为10万次。

但对于主控支持staticwear-leveling算法的ssd,nandflash的逻辑地址与物理地址的对应关系将被改变,冷数据占用的物理地址被轮流释放,与logicalblockn对应,分别如图6、图7所示。这样,每个block的损耗被均衡,使得nandflash的资源被充分利用,ssd寿命得到有效地延长。

四、在执行图6、图7所示过程时会引起写入放大。由于被释放的资源块(如physicalblock0)中的数据需要被重新写入被交换的资源块(blockn)中,所以尽管只写入了一个block的数据,实际ssd需完成两个block数据的写入。

对于无wl算法的ssd,参与磨损的资源块仅为写入文件所占资源块的个数;对于只有dynamicwl算法的ssd,参与磨损的资源块为预留空间资源块的个数;对于拥有staticwl算法的ssd,所有资源块均参与磨损。通常情况下,一个ssd具有成百上千个资源块,因此,具有staticwl的ssd与无staticwl算法的ssd具有数量级的差别,很容易区分。举例说明:

假设一个slc型ssd(寿命10万次)有2048个block,其中2047个block被占用,预留一个block进行数据写入:

无staticwl算法的情况,只有预留的一个block参与磨损,写入次数105次;

有staticwl算法的情况下,所有block参与磨损,每写入一次,有两个block被磨损,写入次数=2048*105/2≈108次。

因此,很容易区分ssd是否具有staticwl。

与上述方法相对应地,本申请实施例提供的一种固态硬盘的寿命测试装置,参见图8,包括:

第一单元11,用于将冷数据和热数据分别写入待测试的固态硬盘中,并且将冷数据存入另一设备中进行备份;

第二单元12,用于将所述热数据持续写入所述固态硬盘,并记录所述热数据的写入次数;

第三单元13,用于根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,如果是,则继续将所述热数据持续写入所述固态硬盘,否则,测试结束。

较佳地,所述热数据的大小小于或等于所述待测试的固态硬盘中一个块的存储空间大小。

较佳地,所述第一单元将冷数据和热数据分别写入待测试的固态硬盘中,具体包括:

将冷数据写入待测试的固态硬盘中的块中,并预留一空白块;

将热数据写入所述预留的空白块中。

较佳地,所述第二单元将所述热数据持续写入所述固态硬盘,具体包括:

利用所述热数据,对所述固态硬盘持续进行擦除、写入操作。

较佳地,所述第三单元根据所述热数据的写入次数,按照预设周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,具体包括:

在所述热数据的写入次数小于或等于预设的门限值的阶段,按照预设第一周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致;在所述热数据的写入次数大于所述门限值的阶段,按照预设第二周期比较所述固态硬盘中的冷数据与备份的冷数据是否一致,其中,所述第二周期大于所述第一周期。

较佳地,对于多层单元闪存类型的固态硬盘,所述门限值为5万次,所述第一周期为1万次,所述第二周期为100万次;

对于单层单元闪存类型的固态硬盘,所述门限值为50万次,所述第一周期为10万次,所述第二周期为100万次。

综上所述,本申请实施例中,基于冷数据存储状、热数据持续写入相结合的方法进行ssd寿命测试;冷数据文件大小、预留空间大小可根据实际使用情况进行调整,充分考虑写入放大对ssd寿命的影响,使测试结果更加准确;较大规模数据写入的测试方法更快速,且能够验证ssd主控是否支持静态wear-leveling算法,充分考虑到实际使用过程中存在写入放大的情况,真实反映实际使用情况的寿命。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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