首页 > 编程知识 正文

固态硬盘测试系统的设计与实现总结及思考怎么写,固态硬盘 测试

时间:2023-05-03 06:07:30 阅读:259110 作者:1655

一、paper思想及基础知识简介 针对现有硬盘测试工具仍主要面向HDD进行测试的问题,本paper设计并实现了一个可多方面自动化测试固态盘的固态盘测试系统。该测试系统支持以下四种类型的测试: 1.性能测试:测试对于不同的IO大小以及不同的访问模式(随机、顺序)下,固态盘所反映出的读写性能。 2.MBI测试:即老化测试,media burn in test,是在全盘范围内写入数据来模拟用户对固态盘的使用,并随后将写入的数据读出进行校验,判断数据是否正确写入,用于测试随着不断地使用固态盘维持数据完整性的能力。 3.掉电测试:掉电测试是指在测试过程中,先对固态盘上电;延迟一段时间后,随机选取一个逻辑块地址LBA,作为起始地址,开始写入指定的数据,在写入过程中随机断电;延迟一定时间后,再对固态盘上电,判断固态盘的电路能否继续正常工作;将掉电前写入的数据读出并进行校验,判断读出的数据是否与写入的数据相同。通过掉电测试,判断固态盘发生异常掉电时电路是否正常,数据是否正常。 4.功耗测试:功耗测试是基于性能测试的同时,读出测试盘上的电流、电压、功率值,分析固态盘在不同使用场景的功耗情况。
二、整体架构设计
图1.固态盘测试系统总体架构图 测试系统主要分为3个部分,即测试机、全局服务器及用户。测试人员通过局域网或者Internet登陆服务器,服务器运行Web Server,通过FTP服务为测试节点提供网络引导服务,启动操作系统,之后即可对测试机进行管理和操作。8个测试机(每个测试机连接16个盘位,负责对盘位上的SSD进行监控和测试)位于温度可控的机柜中,服务器通过串口协议与机柜中的温度模块进行通信,设定机柜温度,测试机可实时监测温度值并将数据返回给服务器。 测试机的主要功能:1.执行服务器发送的操作指令;2.查询机柜、测试机以及待测SSD的基本信息并反馈;3.执行测试脚本并反馈测试结果数据(测试人员通过Web在线编辑或上传测试脚本,发送到指定测试机上进行测试,网页页面显示出测试机的测试数据并自动生成log文件和测试报告);4.实时监控测试机状态、盘位上SSD状态,包括温度、电流、功耗等。
三、软件架构设计与实现 软件架构分为两个层次:上层是基于B/S模式的Web服务器,在J2EE平台采用MVC模式进行实现,作为操作端,用来操控管理测试机,下发测试任务;下层是在Linux环境下运行测试进程的测试机,作为执行端,使用shell脚本调度各测试进程执行测试任务,并向服务器返回数据。 服务器和测试机之间通过传输控制协议TCP/用户数据报协议UDP来进行通信,并制定严格的通信协议来相互识别命令、脚本及解析反馈信息。 图2.软件功能模块图 测试机(执行端)数据流程图如图2所示:负载发生器(对Iometer和FIO等源码进行修改)产生模拟多种真实应用环境的I/O负载,记录受测系统的I/O性能,并且记录基准测试程序运行过程中的环境变化,最终生成受测系统的性能评价。(个人理解:主机系统在硬件层面指包含测试机的系统,受测系统在硬件层面指包含SSD的系统。) 基准测试的基本步骤:1.主机系统和受测系统开机完毕,记录两者的软硬件数据;2.控制工作负载达到所需求的吞吐量;3.收集记录外设通讯模块参数,同时记录机器性能参数;4.处理数据生成报表。 图3.测试机数据流程图
四、主控线程的设计与实现(测试系统需要一定的自主性和自控能力) 图4.主控线程模块 其中,1)响应网页请求:用户向服务器发送请求(开始测试、终止测试、刷新、重启测试机),请求在小服务程序(servlet)中获得并告知主控线程,主控线程得知后对请求进行处理。 2)接收数据包并处理:采用非阻塞socket通道监听数据包(heartbeat心跳包、测试中间结果包、最终结果包、基本信息包、错误包)。其中心跳包由测试机主动每隔1s发送,用于报告测试固态盘的实时状态,其他包由服务器请求后返回。 3)测试脚本延迟、分批发送:每个子脚本是一次实际测试,每个测试脚本可能包含多个测试子脚本。 4)定时广播:每隔一段时间向局域网内广播一次服务器的IP和端口信息,用于发现新的测试机,如果有新的测试机收到该广播信息,会开始向服务器定时发送心跳包。 5)检测失联:轮询各个测试机和固态盘的状态,状态为“存在”的测试机和测试中的固态盘如果长时间没有收到数据包,判定处于失联状态。 6)异常控制:通过状态变迁机制、轮询机制、实时心跳包分析,主控程序可以实时撞我状态,并对测试异常进行自动控制。
五、测试方案与测试结果(对一个固态盘进行测试) flash先擦后写的特性,以页为最小单位写入,以块为最小单位擦除的特性,会导致固态盘的性能随着使用发生变化,对固态盘先进行一次性能测试,经过100次掉电测试及48h的MBI测试后,再用同样的测试方案对盘进行第二次性能测试,并将两次测试的结果进行对比。此举是为了考察固态盘的性能一致性(两次性能测试如果连着进行的话性能差别体现不明显或者没有差别)。 1.性能测试结果:
图5.随机读IOPS
图6.随机写IOPS
图7.顺序读带宽
图8.顺序写带宽 2.MBI测试结果: MBI测试过程中出现了4593565次数据对比错误,可见此盘在使用过程中并不能完全保证存储数据的完整性。
3.掉电测试结果: 此固态盘在掉电后,硬盘的硬件电路能够正常工作,但不能保证正常存储数据。

六、知识点总结及扩展 1. 现有的硬盘测试工具对比:HD Tune Pro,MHDD,HD_Speed,CrystalDiskMark,PC Mark7中的storage存储测试子项等 1)HD Tune Pro是一款硬盘 / SSD的测试工具,它可以被用来测试盘的性能,扫描错误,检测盘的健康状况(xddl)及安全擦除所有数据等。 具体介绍及下载: http://www.hdtune.com/index.html 2)MHDD:俄罗斯Maysoft公司出品的专业硬盘工具软件,具有很多其他硬盘工具软件所无法比拟的强大功能。目前,这个软件已停止研发。不能用于SSD。 具体介绍: http://baike.so.com/doc/5464825-5703156.html 3)HD_Speed:是一个简单的实用程序,它用于计算硬盘中的数据传输速度。支持NTFS和FAT文件系统并且不需要安装。 下载地址: https://hd-speed.en.softonic.com/ 4)CrystalDiskMark:是一个日本人开发的测试软件,主要是因为传统的机械硬盘测试软件的局限性太大(以持续传输速度为主),为了表现出SSD的随机性能强,必须对测试项目稍作改良(增加4KB随机性能测试)。从3.0版开始,增加了NCQ测试(QD32),数据模型选择(随机填空,用0填空,用1填空)。目前最新版5.2.1。 具体介绍: http://www.360doc.com/content/17/0203/20/7863900_626282936.shtml 5)PCMark 7:是一套针对Windows 7 PC系统进行综合性能分析的测试套装。PCMark 7包含七个不同的测试环节,由总共25个独立工作负载组成,涵盖了存储、计算、图像与视频处理、网络浏览、游戏等PC日常应用的方方面面。其storage存储测试子项可单独测试PC的存储子系统性能。 在查找资料的过程中发现了两篇评测文章,文章中有对一些测试工具的介绍,可以作为参考: http://diy.pconline.com.cn/cpu/reviews/1207/2874207_4.html http://diy.pconline.com.cn/341/3410839_4.html
2. SSD的掉电保护: 为了提高电子盘的读写性能,大部分SSD控制器通过内部集成RAM或外部扩展RAM方式增加缓存,每次计算机系统内存的数据写到SSD时,都先写到SSD的缓存中,SSD控制器再将缓存中的数据写入到NAND Flash中。因此,在电源没有任何保护措施的情况下,如果SSD突然掉电(即外部供电在突发意外情况下发生浪涌或断电),将会造成缓存中的数据完全丢失,轻则丢失数据,重则导致系统崩溃。 为了防止这种情况发生,我们需要增加一种掉电保护机制,用于预防SSD缓存中的数据丢失。掉电保护增加了2部分功能,一部分是电压检测模块,用于检测外部电压过低时,向SSD控制器产生中断;另一部分功能则是电源储能模块,用于在外部电压过低时能够给SSD提供足够长时间的续航能力。当电压检测模块检测到外部电压过低时,将产生一个中断给SSD控制器,同时电源储能模块启动供电,SSD控制器接收到中断之后将SSD缓存中的数据保存至NAND Flash中。整个过程中,电源储能模块的持续续航能力足以保证SSD控制器将缓存中的数据完全保存至NANDFlash中,从而实现掉电保护。如下图所示:

3. Web研发模式:可以看下github上的一篇文章: https://github.com/lifesinger/blog/issues/184

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。