本发明涉及服务器应用技术领域,具体涉及一种linux下进行nvmessd格式化的方法。
背景技术:
随着网络应用的不断发展和壮大,服务器市场已经囊括各个领域,客户对硬盘的要求也越来越高。作为服务器产品提供商之,如何能满足用户多样化的需求,确保各种应用环境的稳定、可靠是必须面临和考虑的问题,对于硬盘在服务器上使用,必须进行全面的功能性、稳定性及性能等的测试和验证,从而确保该产品的质量。
伴随着客户对服务器计算性能、存储容量的需求越来越高,近年来nvmessd的应用更加更加广泛,与之前普通的satassd相比,nvmessd拥有更大的容量、更快的读写速率、更高的iops值等。无论是容量、性能和satassd相比都可以达到4—5倍以上。而且nvmessd与传统satassd相比,自身带有带外管理工具,可以通过这些工具来查看该nvmessd的实时状态,例如版本信息、当前读写速率、smart信息等。这些功能是satassd都不支持的,没有单独的管理工具无法看到硬盘实时的状态,而在大容量存储、高密度计算方面都需要ssd可以支持到实时管理,以便在硬盘运行的同时去做一些需要的操作。因此nvmessd已经在大容量存储、高密度计算方面逐渐取代了satassd,同时nvmessd将成为主流的存储子系统也是一个既定的事实。客户对nvmessd的需求越来越多,各个厂家也推出了不同特色的nvmessd,包括直接插到主板上的aic卡片形态的nvmessd,m.2以及u.2形态的nvmessd,同时还有低功耗厚度只有7mm的nvmessd,可以说nvmessd的样式种类也是越来越丰富。
虽然nvmessd种类很多,但是其造价还是比较高的,后端在测试时只能拿到很少的样品,需要多个team轮流测试并且测试时要求盘的状态要和出厂状态一样是最优状态。第一个测试team可以保证测试是在出厂状态下测试的,但是后面的测试team就无法保证了,因为你无法确定之前的team有做过什么测试,这个时候就需要把盘恢复到出厂状态,也就是进行格式化操作。有的team测试完毕后盘内可能存有大量的垃圾信息,或者是测试过程中出现的报错信息都会记录在smart信息中,这些垃圾信息不清理掉的话会影响到后续team的测试,无法准确的看到后续测试中smart信息中的新加报错,同时盘内的垃圾信息也会严重影响到nvmessd的性能。
技术实现要素:
本发明的技术任务是提供一种linux下进行nvmessd格式化的方法,通过对硬盘格式化,保证每个team在测试之前该片nvmessd和刚刚出厂时硬盘是一样的,即硬盘的每一项测试都是在最优状态下测试的,保证了测试的准确性。
本发明解决其技术问题所采用的技术方案是:
一种linux下进行nvmessd格式化的方法,通过封装工具在其内部调用格式化命令传递给nvme协议,nvme协议再传递信息给到nvmessd硬盘来进行格式化操作;通过对硬盘格式化,保证每个team在测试之前该片nvmessd和刚刚出厂时硬盘是一样的,即硬盘的每一项测试都是在最优状态下测试的,保证测试的准确性。
该方法的具体实施步骤如下:
1)、运行格式化命令;
2)、工具调用nvme协议;
3)、nvme协议对nvmessd进行格式化信息传递;
4)、nvmessd收到清空信息,开始进行格式化操作;
5)、格式化操作成功,对外显示success;
6)、nvmessd格式化完成。
进一步的,使用./dctoolkit_64bit–l列出检测到的所有驱动器,为了区分nvmessd和satassd,对工具进行处理,让工具读到的nvmessd都用x:c的样式表现disknumber,satassd直接用x来表示;从path中得到哪个是nvmessd,进而得到它的disknumber,根据disknumber直接操作对nvmessd进行格式化操作。
进一步的,直接输出命令./dctoolkit_64bit--diskx:c–nvme-format-namespace–user-data-erase,然后输入“y”确定要格式化操作,如果不格式化操作的话输入“n”。
其中,user-data-erase指用户数据擦除;nvme-format-namespace是调用工具中的特殊命令对nvmessd进行格式化操作,该特殊命令发送给nvme协议,并不是直接发送给硬盘的,由于所有厂家的nvmessd都是遵循nvme协议的,所以无论哪家的nvmessd都可以通过该工具调用nvme协议实现格式化,该工具做到了对nvmessd硬盘的统一性。
进一步的,当显示erase:secureerasecompletedsuccessfully且completed为100%时,格式化成功完成。
通过对nvmessd硬盘的研究,发现无论是哪家厂家什么形态的nvmessd硬盘,它们都是遵循nvme协议的,在主板上与cpu进行信息传递时都是走x16或者x4x4x4x4的信号。由于都是遵循nvme协议,通过大量实验研究,改进方法,做到了对nvmessd硬盘格式化的全覆盖。
该方法也可以用于客户现场的问题处理,当客户的nvmessd使用了很久以后,进行了多次的随机读写后,盘内会有很多垃圾碎片,这些垃圾碎片会大大影响硬盘的写入速率,这时候我们可以使用该方法对硬盘进行格式化操作把硬盘的内的垃圾信息删除,使盘的状态变成和刚出厂时的状态一样,从而大大提高了客户数据的读取和写入速率,提高了硬盘的工作效率。
本发明的一种linux下进行nvmessd格式化的方法与现有技术相比,具有以下有益效果:
通过对硬盘格式化,可以保证每个team在测试之前该片nvmessd和刚刚出厂时硬盘是一样的,即硬盘的每一项测试都是在最优状态下测试的,保证了测试的准确性。
操作简单,易上手,实用性很强,无论是测试人员还是客户都可以使用。工具已经封装好了,即使在linux语言有限的情况下也可以通过简单的命令行完成格式化操作,会大大提高测试的准确性和效率,同时在客户的实际应用场景也可以通过该方法提高硬盘的读写速率,提高硬盘的工作效率。
附图说明
图1是本发明一种linux下进行nvmessd格式化的方法的流程框图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
一种linux下进行nvmessd格式化的方法,通过封装工具在其内部调用格式化命令传递给nvme协议,nvme协议再传递信息给到nvmessd硬盘来进行格式化操作;通过对硬盘格式化,保证每个team在测试之前该片nvmessd和刚刚出厂时硬盘是一样的,即硬盘的每一项测试都是在最优状态下测试的,保证测试的准确性。
该方法的具体实施步骤如下:
1)、运行格式化命令;
2)、工具调用nvme协议;
3)、nvme协议对nvmessd进行格式化信息传递;
4)、nvmessd收到清空信息,开始进行格式化操作;
5)、格式化操作成功,对外显示success;
6)、nvmessd格式化完成。
先使用./dctoolkit_64bit–l会列出检测到的所有驱动器,为了区分nvmessd和satassd,特别对工具进行了处理,让工具读到的nvmessd都用x:c的样式表现disknumber,satassd会直接用x来表示。其中path中也可以看到哪个是nvmessd,从而得到它的disknumber,可以根据disknumber直接操作对nvmessd进行格式化操作。
直接输出命令./dctoolkit_64bit--diskx:c–nvme-format-namespace–user-data-erase,然后输出“y”确定要格式化操作,如果不格式化操作的话输入“n”。disk后面跟的disknumber号,user-data-erase是指用户数据擦除,再后面的nvme-format-namespace是调用工具中的特殊命令对nvmessd进行格式化操作,这个特殊命令是发送给nvme协议的,并不是直接发送给硬盘的,由于所有厂家的nvmessd都是遵循nvme协议的,所以无论哪家的nvmessd都可以通过该工具调用nvme协议实现格式化,该工具做到了对nvmessd硬盘的统一性。
当显示erase:secureerasecompletedsuccessfully且completed为100%时,格式化成功完成。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。