一种存储碎片整理的方法及装置与流程

文档序号:25586269发布日期:2021-06-22 17:01阅读:114来源:国知局
本申请涉及存储管理
技术领域
:,尤其涉及一种存储碎片整理的方法及装置。
背景技术
::存储装置(如以闪存为存储介质的装置)在使用过程中会写入大量数据,由于闪存介质本身特点的限制,存储的数据块会混合有效页和无效页,也即在存储数据的过程中不可避免地会产生存储碎片。碎片化会导致存储装置的有效利用空间和存储速度下降,影响存储器的性能。现有的整理存储碎片的方法一般通过以下两种方式:(1)对存储装置进行格式化(包括低级格式化和高级格式化(或称快速格式化));(2)存储装置的主控制器根据垃圾回收(garbagecollection,gc)算法进行碎片整理。然而,在方式(1)中,快速格式化仅对数据文件的头部和尾部做抹除动作(重写引导记录),实际并没有把用户数据区的数据从存储装置中删除,因而快速格式化速度虽然较快,但并不能清理碎片;低速格式化在重写引导记录外,可以将用户数据区逻辑空间上的数据删除,然而由于低级格式化一般需要借助特殊的工具软件进行格式化处理,其耗时较长。在方式(2)中,传统的垃圾回收算法通常是存储装置主控制器中ftl算法的一部分,由ftl算法对其调度使用,其具有滞后性,无法及时地解决碎片化带来的低速问题。因而,如何对存储碎片进行高效及时的整理成为亟待解决的问题。技术实现要素:本申请提供了一种存储碎片整理的方法及装置,通过由用户侧主机根据触发事件,指示存储部件控制器进行碎片整理,以解决目前碎片整理滞后导致的读写低速的问题。第一方面,提供了一种存储碎片整理的方法,应用于主机,包括:获取存储装置的数据存储特征;基于所述数据存储特征判断是否执行存储碎片整理操作指示;其中,若执行所述存储碎片整理操作指示,则按照预设方式指示所述存储装置的控制器对所述存储装置执行所述存储碎片整理操作。其中,本申请中的主机可以指用户侧应用系统中的设备,例如,行车记录仪、监控设备、数码相机等应用存储装置的设备,或者更具体地,主机可以指这些设备中的处理器。应理解,本申请所说的存储碎片整理(或称碎片整理、存储碎片清理、碎片清理)是指对存储装置中的数据块进行移动,从而使存储装置的存储空间相较于未移动数据块之前,能形成更多的连续空闲数据块。根据本申请实施例提供的存储碎片整理的方法,通过用户侧的应用系统中的主机根据存储装置的数据存储特征,由主机直接向存储装置的控制器发送碎片整理的命令,从而实现基于存储速度的变化等数据存储特征,高效及时地对特定的存储装置进行碎片化整理,保证存储装置的性能。结合第一方面,在第一方面的某些实现方式中,所述按照预设方式指示所述存储装置的控制器对所述存储装置执行所述存储碎片整理操作,具体包括:向所述控制器发送第一存储碎片整理命令,所述第一存储碎片整理命令为自定义命令;或者,向所述控制器发送第二存储碎片整理命令,所述第二存储碎片整理命令为基于sd标准协议生成的自维护命令;或者,按照预设规则向指定地址发送命令组合,所述命令组合包括多个读命令,或者多个写命令,或者至少一个读命令和至少一个写命令。其中,第一存储碎片整理命令可以是供应商自定义的命令(vendorcommand);第二存储碎片整理命令可以是主机基于sd标准协议中的自维护(self-maintenance)方案生成的自维护(self-maintenance)命令。在一些实施例中,主机按照预设规则向指定地址发送的命令组合可以包括读命令和写命令,或者包括多个读命令,或者包括多个写命令。具体地,主机发送的命令可以是基于标准协议中通用的对指定魔数(magicnumber)地址访问的读写命令(read-writecommand)序列组合。根据上述方法,通过根据约定的通知方式通知存储装置的控制器执行碎片整理操作,能够使主机根据需要,直接高效且及时地指示存储装置进行碎片整理,从而保证存储装置的性能和存储效率。结合第一方面,在第一方面的某些实现方式中,所述存储装置的数据存储特征包括所述存储装置的数据写入速度,所述方法还包括:当基于所述存储装置的数据写入速度低于第一阈值时,确定需要对所述存储装置执行存储碎片整理操作。根据本申请实施例提供的存储碎片整理的方法,当存储装置的数据写入速度低于第一阈值(如5mbs)时,则意味着存储速度明显变慢,此时,主机可以及时指示该存储装置进行存储碎片整理,从而保证存储装置的存储性能以及数据存储效率。结合第一方面,在第一方面的某些实现方式中,所述存储装置以闪存为存储介质。结合第一方面,在第一方面的某些实现方式中,所述主机包括:行车记录仪中的处理器,或者,监控器中的处理器。结合第一方面,在第一方面的某些实现方式中,所述存储装置包括以下任意一种:sd卡、microsd卡、嵌入式多媒体控制器emmc、固态硬盘ssd。第二方面,提供了一种存储碎片整理的方法,应用于存储装置中的控制器,包括:获取所述主机发送的存储碎片整理指示;响应于所述存储碎片整理指示,对所述存储装置执行所述存储碎片整理操作。第三方面,提供了一种主机,包括至少一个处理器、存储器和通信接口,所述通信接口用于与其他装置进行通信,所述存储器中存储有计算机命令,当所述计算机命令在所述处理器中被执行时,使得所述主机执行如上述第一方面任一实现方式所述的方法。第四方面,提供了一种存储装置,包括控制器和存储介质,所述存储介质用于存储数据,所述控制器用于执行如上述第二方面任一实现方式所述的方法。第五方面,提供了一种计算机可读存储介质,存储有计算机命令,当所述计算机命令被执行时,使得计算机执行如上述第一方面或第二方面任一实现方式所述的方法。附图说明图1是本申请实施例提供的一种fat32文件系统布局示意图。图2是本申请实施例提供的一种固态硬盘的结构示意图。图3是本申请实施例提供的一种存储单元关系示意图。图4是本申请实施例提供的一种存储性能随存储时间变化的示意图。图5是本申请实施例提供的一种存储碎片整理的数据移动及写入示意图。图6是本申请实施例提供的一种存储碎片整理的系统架构示意图。图7是本申请实施例提供的一种存储碎片整理方法的示意性流程图。图8是本申请实施例提供的一种命令格式示意图。图9是本申请实施例提供的另一种命令格式示意图。图10是本申请实施例提供的一种cmd49命令写入扩展寄存器的示意图。图11是本申请实施例提供的另一种存储碎片整理方法的示意性流程图。图12是本申请实施例提供的一种主机结构示意图。图13是本申请实施例提供的一种存储装置的式结构示意图。具体实施方式下面结合本申请实施例中的附图对本申请实施例进行描述。需要说明的是,本申请实施例的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本申请实施例的描述中,除非另有说明,“多个”是指两个或多于两个,“至少一个”、“一个或多个”是指一个、两个或两个以上。以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含地包括一个或者更多个该特征。在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。碎片化是提升存储装置效率和性能的关键限制因素之一。存储碎片(或称碎片)是由于一个文件存储在存储介质中时,会存储在多个分散的区域,而非一连串连续区域中,从而出现的一些零散的小空闲区域。产生存储碎片的原因主要是:存储装置一般只负责底层的物理存储,并不知道所存储的数据到底有什么意义,而将物理设备中的数据组织成目录、文件并赋予它们意义的,是文件系统(filesystem)负责的工作。以文件分配表采用32位二进制数记录管理的磁盘文件管理方式(fileallocationtable32,fat32)文件系统为例,参照图1示出fat32文件系统的布局示意图。fat32文件系统的布局(filesystemlayout)大致可以划分为三部分,依次是:主引导区及保留扇区、系统区(systemarea)、用户数据区(userdataarea)。其中,主引导区包括主引导记录(masterbootrecord,mbr)和分区表(partitiontable),mbr只占一个扇区,之后还留有若干个保留扇区;系统区包括分区引导扇区(partitionbootsector)以及文件分配表(fileallocationtable);用户数据区包括用户数据(userdata)。通常来说,主引导区属于分区区域(partitionarea),系统区域和用户数据区域可以包括于常规区域(regulararea)。碎片化会使存储装置的性能下降,并且降低数据存储效率。比如,在数据写入过程中,一旦数据写满nand的整个空间,其数据写入的速度会明显下降。在一种可能的应用场景中,带有nand的行车记录仪在使用一段时间后,可能会出现丢帧甚至录像失败的情况,行车记录仪同时也会告警提示:“低速存储装置,请更换或格式化”。这往往是nand存储的碎片化导致的。而如
背景技术
:所说,目前采用的格式化或者由存储装置执行的gc算法,存在诸多不足,并不能高效及时地对存储装置进行碎片整理。针对现有技术中存在的问题,本申请实施例提供了一种存储碎片整理的方法,通过由用户侧应用系统中的主机(host)根据存储装置的数据存储特征,指示存储装置中的控制器进行碎片整理,从而实现有针对性且及时高效地对存储装置中的数据块进行整理,以形成更多的连续空闲块,提升存储装置的存储性能和读/写速度。在一些实施例中,本申请所说的存储装置例如可以包括安全数字(securedigital,sd)卡、microsd卡、嵌入式多媒体(embeddedmultimedia,emmc)卡、固态硬盘(solidstatedisk,ssd)等应用闪存作为存储介质的装置。为便于理解,本申请以下实施例以存储装置是sd卡为例进行说明。为更好地理解本申请实施例提供的存储碎片整理的方法和装置,以下首先对本申请实施例中可能涉及到的一些装置和术语进行介绍。1、固态硬盘(solidstatedisk,ssd)ssd是一种基于闪存的存储装置,在某些情况下是传统旋转磁盘的极有吸引力的替代产品。如图2所示,为一种ssd的结构示意图。ssd可以封装插到输入/输出(input/output,i/o)总线上标准插槽(如通用串行总线(universalserialbus,usb)或串口硬盘(serialata,sata))中,行为就和其它硬盘一样,可以处理来自主机的请求。一个ssd封装有一个或多个闪存芯片和闪存翻译层(flashtranslationlayer),闪存芯片可替代传统旋转磁盘中的机械驱动器,而闪存翻译层是一个硬件/固件设备,可扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。在本申请实施例中,闪存翻译层可以对应本申请实施例所说的存储装置的控制器(controller),该存储装置的控制器可以基于主机的命令,对存储空间的存储碎片进行整理。继续参考图2,可以看出,一个闪存(如闪存nand)由b个块(block)的序列组成,每个块又有p页(page)组成(b和p均为正整数)。由于硬件方面限制,在nand存储数据的过程中,数据是以页为单位读/写的,且是以块为单位进行数据擦除的,换言之,一旦要擦除数据就必须一次性擦除整个块,这将给nand存储带来巨大的性能和寿命上的损失。2、存储分配单元(allocationunit,au):以sd卡为例,sd卡存储的用户数据区(如图3所示的用户内存区域)被划分为多个au单元。au是sd卡用户数据区的物理边界,每个sd都有固定的au大小,au可以支持随机写(randomwrite)。3、存储子单元(subunit,su)au又可以划分为多个存储子单元su。多个写命令顺序写(sequencewrite)数据到存储子单元。4、存储记录单元(recordingunit,ru)一个su又可以划分为多个存储记录单元ru。示例性的,au、su、ru之间的关系如图3所示。如图4所示,每个存储子单元su的写入时间(suwritetime)不同,因此性能也不同。如sd卡的性能是每个存储子单元平均写性能的最小值。存储记录单元分布的碎片化是各个存储子单元性能不一致的主要原因。5、碎片化存储分配单元(fragmentedau)如图5所示,为一个碎片化的存储分配单元分布示意图。图5中位置a和位置b为存储分配单元的边界(auboundary)。当主机向图5所示的碎片化au(对应图5中的已存在的au)继续写入数据时,sd卡会新建一个au(对应图5中的新建的au),并且拷贝需要进行碎片化处理的存储分配单元中已使用的存储记录单元(usedru)数据,然后将其写入(移动)至新建au中的对应位置。因此,写au的总写入时间(totalwritetime)等于写空闲存储记录单元(freeru)的时间加上移动已使用存储记录单元(usedru)的时间。结合上述内容可以看出,存储碎片化程度越严重则存储的性能越低。传统方法启动gc垃圾回收算法虽然能对碎片做部分整理,但是gc是根据算法来调度执行的,用户并不能直接对系统内部的gc算法进行调用,因而常规的gc并不能真正的及时解决存储性能恶化的状况。本申请实施例提供的存储碎片整理的方法,通过主机与存储装置集成,主机可以基于存储性能的变化等数据存储特征,直接向存储装置的控制器发送碎片整理的请求,从而由主机直接指示存储装置的控制器执行碎片整理操作,高效及时地对特定的存储装置进行碎片管理,保证存储装置的性能。示例性的,如图6所示,为本申请实施例提供的一种存储碎片整理的系统结构示意图。其中,该系统架构包括主机100和存储装置200。在一些实施例中,主机100例如可以为用户侧的应用系统中的设备,例如可以是行车记录仪、监控设备、数字照相机等应用存储装置200的设备,或者这些设备中的处理器。该主机100可以监测存储装置200的数据存储特征,例如存储速度(数据写入速度、数据读取速度)等;当数据存储特征满足预设条件时,主机还可以向存储装置200的控制器201发送碎片整理的相关命令,指示控制器201进行碎片整理。在一些实施例中,存储装置200在本申请中也可以被称为存储设备、存储器、存储部件等。以存储装置200是sd卡为例,其结构如图1所示。存储装置200可以包括控制器201和存储介质(如nand闪存存储介质)202。其中,控制器201可以包括主机接口(如图6中i/o管脚)、存储器接口等,主机接口进行控制器201与主机100之间的接口处理,如负责接收来自主机的请求(如存储碎片整理的请求),存储器接口连接至nand闪存介质。此外,存储装置200还可以包括多个扩展寄存器(extensionregister)。以sd卡为例,控制器201可以使用作为sd卡的命令标准的命之一的cmd49对该扩展寄存器进行写操作,cmd49是用于以块为单位向对象寄存器写入数据的命令。扩展寄存器例如还具有用于表示sd卡所具有的功能的页面、用于控制sd卡所具有的通信功能的页面等。在一些实施例中,主机100和存储装置200集成后的连接电路示意图如图6所示,主机100和存储装置200之间的电路连接方式可以是现有技术中已有的电路连接方式,本申请实施例中,主机可以复已有的电路向存储装置发送存储碎片整理的请求消息。存储装置200在与主机100连接时接收电源供给而工作,接收来自主机100的命令并执行相应的处理。应理解,图6所示的系统架构中的存储装置200的数量仅为示例,在实际应用中,存储装置可以有比图6所示更多的数量(如有多个sd卡),换言之,主机可以与多个存储装置连接,从而根据各个存储装置的数据存储特征,指示对应的存储装置中的控制器执行存储碎片整理操作。为实现本申请实施例提供的存储碎片整理的方法,需要将存储装置200与主机100所在的应用系统集成,这样由用户侧的应用系统发出请求命令,可以直接发送至存储装置中的控制器,由控制器调用碎片整理算法执行碎片整理操作。结合图6所示的系统架构示意图,以下结合附图对本申请实施例提供的存储碎片整理的方法的具体过程进行介绍。示例性的,如图7所示,为本申请实施例提供的一种存储碎片整理过程的示意性流程图。该过程可以由主机100来执行,具体可以包括以下步骤:s701,获取存储装置的数据存储特征。其中,数据存储特征包括存储装置的数据写入速度。在一种实施例中,主机可以通过多种方式获取存储装置的数据写入速度,例如主机对存储装置的数据写入码率进行监测,从而获取在数据存储过程中,数据写入的速度。s702,基于数据存储特征判断是否执行存储碎片整理操作指示。在一些实施例中,主机可以判断存储装置的数据存储特征是否满足预设条件,若满足,则指示存储装置执行存储碎片整理操作;若不满足,则不指示存储装置执行存储碎片整理操作。其中,预设条件可以灵活设置。以数据写入速度为例,对应的预设条件可以是:当数据写入速度低于第一阈值时,则指示存储装置执行碎片整理操作;否则,则不指示存储装置执行碎片整理操作。举例来说,以数据存储特征为存储装置的数据写入码率为例,比如正常情况下数据写入存储装置的码率为10mbs,当主机检测到写入码率低于第一阈值(如5mbs)时,意味着存储速度明显变慢,此时,主机会指示存储装置执行存储碎片整理。应理解,当存储装置的数据写入速度低于第一阈值时,则意味着存储速度明显变慢,此时,主机及时指示该存储装置进行存储碎片整理,能够保证存储装置的存储性能以及数据存储效率。s703,若执行存储碎片整理操作指示,则按照预设方式指示存储装置的控制器对存储装置执行存储碎片整理操作。具体地,主机可以按照预设方式指示存储装置执行碎片整理操作。其中,主机指示存储控制器执行存储碎片整理操作的预设方式可以包括主机按照协议将指定的命令发送至控制器,或者,主机按照协议将约定的命令组合(如读命令和写命令的特定序列组合)发送至特定的地址。示例性的,主机指示控制器执行存储碎片整理操作的方式可以包括以下几种:(1)主机获取供应商自定义(vendorcommand)的命令,并向控制器发送该命令作为存储碎片整理命令。vendorcommand以及指示存储装置控制器执行存储碎片整理的相关参数可以由供应商根据标准协议制定,使用与标准协议中标准命令相同的格式。在一种实现方式中,如图8所示,为本申请实施例提供的一种vendorcommand的格式示意图。该命令格式共有48位(bits)。其中,bit[47]为起始位(startbit);bit[46]可以为传输位(transmissionbit);bit[45:40]是命令索引位,可以用来定义命令索引值(commandindex);bit[39:8]是参数位,可以用来定义命令相关的参数(argument);bit[7:1]是检验位,可以用于表示循环冗余校验码7(cyclicredundancycheck,crc7);bit[0]为结束位(endbit)。示例性的,若将上述用于存储碎片整理的vendorcommand命令定义为cmd61,则图8命令格式中bit[45:40]的值可以被确定为111101b。(2)主机基于sd标准协议自维护(self-maintenance)方案生成的自维护(self-maintenance)命令,并向控制器发送该自维护命令。其中,self-maintenance是sd标准协议中的扩展功能(functionextension),扩展功能通过扩展寄存器(extensionregister)和扩展功能命令(如cmd49)来进行更多主动、灵活的管理控制。在一种实现方式中,如图9所示,为本申请实施例提供的一种基于sd标准协议自维护方案生成的自维护命令的格式示意图。示例性的,该自维护命令例如为cmd49命令,可以由48个bit组成。其中,bit[47]为起始位(startbit)。bit[46]为传输位(transmissionbit),表示传送方向的位。bit[45:40]是命令索引位,可以用来定义命令索引值(commandindex),这里cdm49转化为二进制为110001。bit[39:8]是参数位,可以用来定义命令相关的参数(argument),其中,cmd49的参数可以包括:mio,用于指示扩展寄存器空间的类型(扩展寄存器空间可以分为内存扩展寄存器空间(memoryextensionregisterspace),功能序号0-15,及i/o扩展寄存器空间(i/oextensionregisterspace)功能序号0-7);fno,鉴于每个功能都有独一无二的编号,fno参数可以用于帮助主机识别功能和开启sd卡的检测命令序列;addr:为目标扩展寄存器空间的地址(address,addr);len:用于指示要传输的数据长度,一般通过9位的len字段,可以指定512字节的扩展寄存器内的读出所需的有效数据长。bit[7:1]是检验位,可以用于表示循环冗余校验码(cyclicredundancycheck,crc7)。bit[0]为命令结束位(endbit)。如图10所示,为方式(2)下,扩展寄存器读取数据的示意图。主机和存储装置中的扩展寄存器通过总线连接(如图10所示的线路1和线路2),其中,线路1用于传输cmd命令格式中的addr(用于指定扩展寄存器的地址)、fno、len(用于指定传输数据的长度,数据长度不超过扩展寄存器的512字节);线路2用于传输数据,在目前的sd卡中,用于传输数据的线路可以有4条,分别用于传输dat[0:3],为描述简洁,图10仅示出一条来表示。自维护命令可以通过线路1和线路2发送至存储装置的扩展寄存器中,控制器可以由扩展寄存器读取相关数据,以指示控制器对存储装置的碎片进行管理,以提高存储装置的性能。具体地,主机发送给扩展寄存器的数据,可以根据写命令(cmd49)写入。如通过cmd指示的扩展寄存器的页面、所选择的页面内的数据位置,以及len字段指定的向扩展寄存器(具有512字节)写入的数据长,将512字节内的数据长的数据写入扩展寄存器的指定页面和位置。512字节的数据块中,超过由len指定的数据长的数据成为无效数据。之后,扩展寄存器可以将有效数据传输至控制器,控制器根据有效数据(如存储碎片清理指示)执行相关的操作。应理解,amd49是标准的协议命令,本申请中的cmd49命令是基于标准协议的要求,对cmd49携带的内容定义为存储碎片整理命令,通过cmd49命令将存储碎片整理命令写入扩展寄存器的方式,将其进一步传递至控制器。当存储装置的控制器收到主机端传输的碎片整理命令后,可以启动自维护方案(self-maintenance)对存储碎片进行管理,以提高存储装置的性能。(3)主机按照预设规则向指定地址发送约定的命令组合。具体来说,在方式(3)中,主机发送的命令可以是基于标准协议中通用的对指定魔数(magicnumber)地址访问的读写命令(read-writecommand)序列组合。示例性的,该命令组合例如可以包括读命令和写命令的组合,或多个读命令组合,或多个写命令组合。在一种可能的实现方式中,主机可以向预先设定的某一地址,按照预设规则发送读写命令序列组合,该读写命令序列组合比如可以依次向该地址发送读命令、读命令、写命令(即读命令-读命令-写命令的命令序列组合),换言之,当存储装置的控制器在特定地址依次接收到读命令-读命令-写命令之后,该控制器可以启动对存储装置的存储碎片整理操作。在另一种可能的实现方式中,主机向预先设定的某一地址,按照预设规则发送的命令序列组合也可以全部由读命令组成。比如,主机向特定地址发送的命令序列组合可以依次为:读命令-读命令-读命令。当存储装置的控制器在该特定地址接收到主机依次发送的三个读命令时,表示主机指示该控制器对存储装置进行存储碎片整理操作,则控制器可以调用碎片整理程序,执行对应的存储碎片整理操作或者结合其他模块执行对应的存储碎片整理操作。在又一种可能的实现方式中,主机向预先设定的某一地址,按照预设规则发送的命令序列组合也可以全部由写命令组成。比如,主机向特定地址发送的命令序列组合可以依次为:写命令-写命令-写命令。当存储装置的控制器在该特定地址接收到主机依次发送的三个写命令时,表示主机指示该控制器对存储装置进行存储碎片整理操作,则控制器可以调用碎片整理程序,执行对应的存储碎片整理操作或者结合其他模块执行对应的存储碎片整理操作。应理解,方式(3)所列举的命令序列组合(如读写命令混合组合、读命令组合、写命令组合)仅为示例,在实际应用中,还可以有多种其他的组合方式,本申请实施例对此不做限定。在一些实施例中,按照预设则向指定地址发送的命令组合,需要在预设时间内发送,换言之,只有存储装置的控制器在预设时间内在指定地址接收到约定的命令组合,才可以获知需要执行对存储装置的存储碎片整理操作。在一些实施例中,存储装置中的控制器获取主机的通知后,可以调用存储碎片整理的程序,对该存储装置中的用户数据空间的数据块进行整理。应理解,本申请实施例中的存储装置是指sd卡、microsd、emmc、ssd等应用固态存储介质的单个存储部件,用于接收主机的存储碎片整理的命令的为该存储部件内的控制器,该控制器与主机之间具有连接电路,主机可以通过该连接电路向控制器发送相关命令。本申请实施例提供的存储碎片整理的方法,由用户侧的应用系统和数据存储装置共同完成,存储装置相当于提供了应用程序接口(applicationprogramminginterface,api)接口给应用系统中的主机,可以使主机根据实际情况(如存储装置的已使用存储空间、数据写入速度等)实时调用该接口指示控制器执行碎片整理操作。根据本申请实施例提供的存储碎片整理的方法,通过由主机按照预设规则通知单个存储装置中的控制器执行碎片整理操作,可以在该存储装置的数据写入速度变慢等性能降低的情况下,使得存储装置中的存储碎片及时、可控地得到清理,保证存储装置的性能和存储存储的效率。为便于理解,以下结合附图11,对控制器启动存储碎片整理操作的流程进行介绍。控制器启动存储碎片整理的流程可以包括以下步骤:s1101,控制器接收主机发送的存储碎片整理通知。s1102,控制器判断命令是否为约定的自定义命令。其中,约定的自定义命令可以是步骤s703中,主机按照方式(1)通知控制器时所发送的存储碎片整理命令。在一些实施例中,控制器判断所接收到的命令若是约定的自定义命令,则执行步骤s1105,进行存储碎片整理操作;控制器判断所接收到的命令若不是第一存储碎片整理命令,则可以执行步骤s1103,对获取获取的存储随便整理通知进行进一步判断。s1103,控制器判断命令是否为约定的自维护命令。其中,约定的自维护命令可以是基于sd标准协议生成的自维护命令,对应步骤s703中主机按照方式(2)通知控制器时所发送的存储碎片整理命令。在一些实施例中,控制器判断所接收到的命令若是约定的自维护命令,则执行步骤s905,进行存储碎片整理操作;控制器判断所接收到的命令若不是约定的自维护命令,则可以执行步骤s1104,对获取获取的存储碎片整理通知进行进一步判断。s1104,控制器判断命令是否为符合预设规则的读命令和/或写命令组合。在一些实施例中,控制器判断所接收到的命令若是符合预设规则的读和/或写命令组合,则执行步骤s1105,进行存储碎片整理操作;控制器判断所接收到的命令若不是符合预设规则的读和/或写命令组合,则结束本次流程。应理解,图11所示的实施例中,控制器首先判断接收的通知命令是否符合预设命令的顺序(首先判断是否为约定的自定义命令;若否,其次判断是否为约定的自维护命令;若否,再次判断是否为预设的读和/或写命令组合)仅为示例,在实际应用中,步骤s1101至步骤s1103的判断内容可以进行灵活调整,例如首先判断控制器接收到的通知是否为约定的自维护命令;若否,再判断是否为约定的自定义命令等,本申请对此不作限定。根据本申请实施例提供的存储碎片整理的方法,主机可以通过预设方式,通知存储装置中的控制器执行存储碎片整理操作,使得主机能够有针对性性地指示某一存储装置的控制器执行碎片整理,主机直接且灵活地指示存储装置,使得存储装置中的碎片能够获得及时清理,从而保证存储装置的性能,提升对存储装置数据的读写效率。示例性的,如图12所示,为本申请实施例提供的一种主机的结构示意图。该主机包括获取模块1201,处理模块1202以及通知模块1203。在一些实施例中,获取模块1201,用于获取存储装置的数据存储特征。处理模块1202,可以用于基于所述数据存储特征判断是否需要对所述存储装置执行存储碎片整理操作。通知模块1203,可以用于若需要对所述存储装置执行存储碎片整理操作,则按照预设方式通知所述存储装置的控制器对所述存储装置执行所述存储碎片整理操作。在一些实施例中,通知模块1203,还可以用于向所述控制器发送第一存储碎片整理命令,所述第一存储碎片整理命令为自定义命令;或者,向所述控制器发送第二存储碎片整理命令,所述第二存储碎片整理命令为基于sd标准协议生成的自维护命令;或者,按照预设规则向指定地址发送命令组合,所述命令组合包括多个读命令、多个写命令,或者至少一个读命令和至少一个写命令。在一些实施例中,处理模块1202,还可以用于当基于所述存储装置的数据写入速度低于第一阈值时,确定需要对所述存储装置执行存储碎片整理操作。在一些实施例中,述存储装置以闪存为存储介质。在一些实施例中,所述主机包括:行车记录仪中的处理器,或者,监控器中的处理器。在一些实施例中,所述存储装置包括以下任意一种:sd卡、microsd、emmc、ssd。示例性的,如图13所示,为本申请实施例提供的一种存储装置的结构示意图。该存储装置包括获取模块1301和处理模块1302。在一些实施例中,获取模块1301,可以用于获取主机发送的存储碎片整理通知。在一些实施例中,处理模块1302,可以用于响应于所述存储碎片整理通知,对所述存储装置执行所述存储碎片整理操作。此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机命令,当所述计算机命令被执行时,使得计算机执行上文所述的存储碎片整理的方法。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机命令。在计算机上加载和执行所述计算机程序命令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机命令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机命令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储装置。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来命令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1