数据存储方法及装置与流程

文档序号:19431344发布日期:2019-12-17 16:51阅读:144来源:国知局
本公开涉及数据存储领域,特别涉及一种数据存储方法及装置。
背景技术
::固态硬盘是用固态电子存储芯片阵列制成的硬盘,其中固态硬盘中包括的闪存作为文件系统中存储数据的介质对数据进行存储。其中,固态硬盘在接收到写数据请求后,一般情况下在对数据进行写入并存储时将闪存中的闪存页作为最小的存储单位(即进行数据写入时的写入粒度)。如图1所示,通过地址映射的方法可将待存储数据的lpn(logicalpagenumber,逻辑页地址)映射至闪存中任意空闲闪存页的ppn(physicalpagenumber,物理页地址),并将该lpn与该ppn之间的对应关系存储至映射表中,实现将待存储数据存储至该任意空闲闪存页。目前,由于闪存页的物理容量日益增长,因此在执行地址映射操作对数据进行存储时,闪存地址映射粒度越来越大,并且大于文件系统下发的i/o(input/output,输入/输出)请求的粒度。比如,闪存页的物理容量从之前的4kb(千字节)增长为如今的8kb、16kb等。而对于文件系统来说,其默认下发的i/o请求的粒度却没有改变。比如当闪存页的物理容量为4kb时,i/o请求的粒度为4kb;当闪存页的物理容量增加至16kb时,i/o请求的粒度仍为4kb。在执行地址映射操作对数据进行存储的过程中,依旧以上述数值为例,若一个i/o请求的粒度为4kb,固态硬盘仍然分配一个物理容量为16kb的闪存页对这个4kb粒度的i/o请求中携带的数据进行数据存储,这样便造成了存储空间的浪费。而且在后续固态硬盘的使用过程中,当这种i/o请求的数量大幅增加时,由于i/o请求的粒度与闪存页的物理容量不一致,为了便于进行数据存储,可能需要频繁对固态硬盘执行空间回收操作,这便造成固态硬盘的性能下降,减短固态硬盘的使用寿命。技术实现要素:本公开提供了一种数据存储方法及装置。所述技术方案如下:第一方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至少两个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪存页,多个所述闪存页的物理容量是相等的,所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量小于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从所述多个第一逻辑页中确定出至少一个第一目标逻辑页,将所述首个逻辑页包括的逻辑迷你页和所述至少一个第一目标逻辑页包括的逻辑迷你页进行拼接,得到n个虚拟逻辑页,所述n个虚拟逻辑页中每一虚拟逻辑页的逻辑容量与一个所述闪存页的物理容量是相同的,n为大于或等于1的整数;其中,所述空闲缓存空间用于存储与所述写数据请求相对应的待写入数据,所述n个虚拟逻辑页的逻辑容量之和等于所述待写入数据的数据量;所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物理容量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于所述多个第一逻辑页中除所述至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储的数据从所述数据输出端输出,所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;将被逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,得到所述空闲缓存空间;将所述待写入数据从所述数据输入端写入所述空闲缓存空间。在第一方面的第一种可能的实现方式中,多个所述闪存页包括n个日志页,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页;所述将被逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在所述n个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,对剩余的n-m个非空闲日志页内物理存储的数据进行清理,得到清理后的n-m个空闲日志页;将被逻辑存储在所述n个虚拟逻辑页内的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个空闲日志页。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,每一所述日志页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相同的;所述对剩余的n-m个非空闲日志页内物理存储的数据进行清理,得到清理后的n-m个空闲日志页,具体包括:对被包含在所述n-m个非空闲日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述n-m个非空闲日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的n-m个空闲日志页;其中,所述无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述将被逻辑存储在所述n个虚拟逻辑页内的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个空闲日志页,具体包括:将所述n个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个空闲日志页包含的对应的一个物理迷你页内;对于所述n个虚拟逻辑页内的每一逻辑迷你页,所述m个空闲日志页和所述清理后的n-m个空闲日志页均包含一个对应的物理迷你页;所述m个空闲日志页和所述清理后的n-m个空闲日志页总共包括的物理迷你页的数量与所述n个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。结合第一方面,在第一方面的第四种可能的实现方式中,多个所述闪存页包括q个日志页,q为大于n的整数,并且每一日志页包括至少两个物理迷你页,所述至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;所述将被逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在所述q个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的q-m个非空闲日志页中确定出n-m个目标日志页,并对所述n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;所述n-m个目标日志页中每一目标日志页包含的无效物理迷你页的数量均大于所述q-m个非空闲日志页中除所述n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页的数量,所述无效物理迷你页是指存储数据为无效数据的物理迷你页;将被逻辑存储在所述n个虚拟逻辑页内的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个目标日志页。结合第一方面,在第一方面的第五种可能的实现方式中,多个所述闪存页包括r个日志页,r为大于n的整数,每一日志页包括至少两个物理迷你页,且所述至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;所述将被逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在所述r个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的r-m个非空闲日志页中确定出n-m个目标日志页,并对所述n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;所述n-m个目标日志页中每一个目标日志页包含的无效物理迷你页内物理存储的数据的写入时间均早于所述r-m个非空闲日志页中除所述n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页内物理存储的数据的写入时间;所述无效物理迷你页是指存储数据为无效数据的物理迷你页;将被逻辑存储在所述n个虚拟逻辑页内的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个目标日志页。结合第一方面的第四种或第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述对n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页,具体包括:对被包含在所述n-m个目标日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述n-m个目标日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的n-m个目标日志页;其中,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。结合第一方面的第四种至第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述将被存储在所述n个虚拟逻辑页内的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个目标日志页,具体包括:将所述n个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述m个空闲日志页和所述清理后的n-m个目标日志页包含的对应的一个物理迷你页内;对于所述n个虚拟逻辑页内的每一逻辑迷你页,所述m个空闲日志页和所述清理后的n-m个目标日志页均包含一个对应的物理迷你页;所述m个空闲日志页和所述清理后的n-m个目标日志页总共包括的物理迷你页的数量与所述n个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。综上,所述将被逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:将逻辑存储在所述n个虚拟逻辑页内的数据移出并写入到n个空闲日志页。结合第一方面至第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;在被逻辑存储在所述逻辑迷你页内的数据被物理存储在日志页的情况下,确定对应于每一所述逻辑迷你页的物理迷你页;从对应于多个所述逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷你页,并从所述至少一个有效物理迷你页中读取所述对应于所述读数据请求的数据。第二方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的,所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,所述首个逻辑页的逻辑容量与一个所述闪存页的物理容量相等,且对应于所述写数据请求的待写入数据的数据量大于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个所述第二逻辑页中确定出k个第二目标逻辑页,其中,k为大于或等于1的整数,且所述k个第二目标逻辑页的逻辑容量和所述首个逻辑页的逻辑容量之和等于所述待写入数据的数据量;其中,所述空闲缓存空间用于存储所述待写入数据;所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;每一所述第二逻辑页的逻辑容量均等于一个所述闪存页的物理容量,每一所述第二目标逻辑页内逻辑存储的数据均将早于多个所述第二逻辑页中除所述k个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存储的数据从所述数据输出端输出;将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,得到所述空闲缓存空间;将所述待写入数据从所述数据输入端写入所述空闲缓存空间。在第二方面的第一种可能的实现方式中,多个所述闪存页包括k+1个数据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在所述k+1个数据页内包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,对剩余的k+1-l个非空闲数据页内物理存储的数据进行清理,得到清理后的k+1-l个空闲数据页;将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到所述l个空闲数据页以及所述清理后的k+1-l个空闲数据页。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,每一数据页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相同的;所述对剩余的k+1-l个非空闲数据页内物理存储的数据进行清理,得到清理后的k+1-l个空闲数据页,具体包括:对被包含在所述k+1-l个非空闲数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述k+1-l个非空闲数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的k+1-l个空闲数据页;其中,所述无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。结合第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到所述l个空闲数据页以及所述清理后的k+1-l个空闲数据页,具体包括:将所述首个逻辑页以及所述k个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述l个空闲数据页以及所述清理后的k+1-l个空闲数据页包含的对应的一个物理迷你页内;对于所述首个逻辑页以及所述k个第二目标逻辑页内的每一逻辑迷你页,所述l个空闲数据页以及所述清理后的k+1-l个空闲数据页均包含一个对应的物理迷你页;所述l个空闲数据页以及所述清理后的k+1-l个空闲数据页总共包括的物理迷你页的数量与所述首个逻辑页以及所述k个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。结合第二方面,在第二方面的第四种可能的实现方式中,多个所述闪存页包括h个数据页,h为大于k+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在所述h个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,从剩余的h-l个非空闲数据页中确定出k+1-l个目标数据页,并对所述k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;所述k+1-l个目标数据页中每一目标数据页包含的无效物理迷你页的数量均大于所述h-l个非空闲数据页中除所述k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页的数量,所述无效物理迷你页是指存储数据为无效数据的物理迷你页;将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到所述l个空闲数据页以及所述清理后的k+1-l个目标数据页。结合第二方面,在第二方面的第五种可能的实现方式中,多个所述闪存页包括j个数据页,j为大于k+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在所述j个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,从剩余的j-l个非空闲数据页中确定出k+1-l个目标数据页,并对所述k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;所述k+1-l个目标数据页中每一个目标数据页包含的无效物理迷你页内物理存储的数据的写入时间均早于所述j-l个非空闲数据页中除所述k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;所述无效物理迷你页是指存储数据为无效数据的物理迷你页;将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到所述l个空闲数据页以及所述清理后的k+1-l个目标数据页。结合第二方面的第四种或第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述对所述k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页,具体包括:对被包含在所述k+1-l个目标数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述k+1-l个目标数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的k+1-l个目标数据页;其中,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。结合第二方面的第四种至第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到所述l个空闲数据页以及所述清理后的k+1-l个目标数据页,具体包括:将所述首个逻辑页以及所述k个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述l个空闲数据页以及所述清理后的k+1-l个目标数据页包含的对应的一个物理迷你页内;对于所述首个逻辑页以及所述k个第二目标逻辑页内的每一逻辑迷你页,所述l个空闲数据页以及所述清理后的k+1-l个目标数据页均包含一个对应的物理迷你页;所述l个空闲数据页以及所述清理后的k+1-l个目标数据页总共包括的物理迷你页的数量与所述首个逻辑页以及所述k个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。综上,所述将被逻辑存储在所述首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:将逻辑存储在首个逻辑页以及所述k个第二目标逻辑页内的数据移出并写入到k+1个空闲数据页。结合第二方面至第二方面的第七种可能的实现方式,在第二方面的第八种可能的实现方式中,所述方法还包括:在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;在逻辑存储在多个所述逻辑迷你页内的数据被物理存储在数据页的情况下,确定对应于多个所述逻辑迷你页的至少一个逻辑页;从所述至少一个逻辑页对应的数据页中读取所述对应与所述读数据请求的数据。第三方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的;所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量、一个所述闪存页的物理容量以及待写入数据的数据量均相等的情况下,将存储在所述首个逻辑页内的数据移出并写入到一个空闲闪存页,得到所述空闲缓存空间;其中,所述空闲缓存空间用于存储对应于所述写数据请求的待写入数据;所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;将所述待写入数据从所述数据输入端写入所述空闲缓存空间。其中,所述空闲闪存页包括空闲数据页,所述将存储在所述首个逻辑页内的数据移出并写入到一个空闲闪存页,具体包括:将存储在所述首个逻辑页内的数据移出并写入到一个所述空闲数据页。第四方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至少两个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪存页,多个所述闪存页的物理容量是相等的,所述装置用于执行上述第一方面所述的数据存储方法。第五方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的,所述装置用于执行上述第二方面所述的数据存储方法。第六方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的;所述装置用于执行上述第三方面所述的数据存储方法。本公开提供的技术方案带来的有益效果是:在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从首个逻辑页开始进行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。附图说明图1是本公开
背景技术
:示出的一种数据存储的示意图。图2是根据一示例性实施例示出的一种数据存储方法所涉及的系统架构图。图3a是根据一示例性实施例示出的一种数据缓存的示意图。图3b是根据一示例性实施例示出的一种固态硬盘的示意图。图4a是根据一示例性实施例示出的一种数据存储的方法流程图。图4b是根据一示例性实施例示出的一种数据缓存的示意图。图4c是根据一示例性实施例示出的一种物理迷你页存储状态表的示意图。图4d是根据一示例性实施例示出的一种迷你页级映射表的示意图。图4e是根据一示例性实施例示出的一种数据存储的示意图。图4f是根据一示例性实施例示出的一种逻辑迷你页位置状态表的示意图。图4g是根据一示例性实施例示出的一种数据读取的方法流程图。图5a是根据一示例性实施例示出的一种数据存储的方法流程图。图5b是根据一示例性实施例示出的一种页级映射表的示意图。图5c是根据一示例性实施例示出的一种数据读取的方法流程图。图6是根据一示例性实施例示出的一种数据存储的方法流程图。图7是根据一示例性实施例示出的一种数据存储装置的结构示意图。图8是根据一示例性实施例示出的一种数据存储装置的结构示意图。图9是根据一示例性实施例示出的一种数据存储装置的结构示意图。具体实施方式在对本公开进行详细地解释说明之前,先对本公开涉及的应用场景及系统架构进行简单介绍。参见图2,图2示出了本公开提供的数据存储方法所涉及的系统架构图。该系统架构中涉及主机上的文件系统及固态硬盘(solid-statedisk,ssd)。其中,该ssd由ssd控制器和多块闪存芯片组成。ssd控制器本身为一块特定芯片,比如现场可编程门阵列(fpga,field-programmablegatearray)芯片或专用集成电路(asic,applicationspecificintergratedcircuits)芯片,其用于对ssd的多块闪存芯片进行控制,比如通过对ssd控制器进行编程来完成接收主机上的文件系统下发的写数据请求或读数据请求;或者,通过对ssd控制器进行编程来控制ssd中的多块闪存芯片,并实现对这些闪存芯片的访问。本公开基于现有硬件,在软件上对ssd控制器进行了改进。即在实现时,需要对ssd控制器进行相应编程,使该ssd控制器具备与本公开相关的功能。下面对本公开所涉及的一些名词进行解释说明。数据缓存:在本公开中,固态硬盘除了闪存之外还包括数据缓存。如图3所示,在数据缓存中,分为数据输入端和数据输出端。其中,数据输入端用于接收待写入的数据,该待写入的数据将被写入该数据缓存,可以使用lru(leastrecentlyused,最近最少使用策略)算法组织数据输入端接收该待写入数据;数据输出端用于将数据从该数据缓存输出,可以使用mru(mostrecentlyused,最近最大使用策略)算法组织数据输出端将数据从该数据缓存输出。其中,ssd控制器在接收到写数据请求时,会优先判断该数据缓存是否可以存储该写数据请求对应的待写入数据。其中,数据缓存是不同于闪存的另一种类型存储介质,其通常为双倍速率同步动态随机存储器(ddr,doubledatarate)或动态随机存取存储器(dram,dynamicrandomaccessmemory)。逻辑页:在图3a中,数据缓存中用逻辑页对数据进行存储,即数据缓存包括多个逻辑页。其中,逻辑页由逻辑迷你页(minipage)组成,每一个逻辑页包括至少两个逻辑迷你页,至少两个逻辑迷你页的逻辑容量是相同的。此外,每个逻辑页包含的逻辑迷你页的个数可能不同。一个逻辑页包含的逻辑迷你页个数的上限值可以预先进行配置,本公开对此不进行具体限定。在设定了该上限值后,每一个逻辑页中包括的逻辑迷你页个数均小于或等于该上限值。例如在图3a中,该上限值取值为4。即,本公开以一个逻辑页最多可由4个逻辑迷你页组成为例进行说明。对于逻辑页中的逻辑迷你页,该逻辑迷你页均携带逻辑迷你页地址。比如,在图3中,逻辑页地址(lpn,logicalpagenumber)为8的逻辑页和lpn为14的逻辑页均包含2个逻辑迷你页,lpn为8的逻辑页包含了逻辑迷你页地址(lmn,logicalminipagenumber)为34和35的两个逻辑迷你页,lpn为14的逻辑页包含了lmn为56和57的两个逻辑迷你页;而lpn为4的逻辑页由4个逻辑迷你页组成,这4个逻辑迷你页的lmn分别为16、17、18和19。闪存页:闪存中用闪存页对数据进行存储,即闪存中包括多个闪存页,每一个闪存页的物理容量是相等的。其中,闪存页由物理迷你页组成,每一个闪存页包括至少两个物理迷你页,每一个物理迷你页的物理容量是相同的。对于闪存页中的物理迷你页,该物理迷你页均携带物理迷你页地址(pmn,physicalminipagenumber)。在本公开中,每个闪存页内包括的物理迷你页的数目可以是预先设置的。需要说明的是,参见图3b,固态硬盘中包括多个闪存块,每一个闪存块均由多个闪存页组成。迷你页:为了支持更细粒度的寻址操作,本公开引入了迷你页作为地址映射操作中最小的映射单位。其中,迷你页分为逻辑迷你页和物理迷你页。逻辑迷你页包括在逻辑页中,物理迷你页包括在闪存页中。一个逻辑迷你页的逻辑容量与一个物理迷你页的物理容量相同。数据页:数据页为闪存中闪存页的一种类型,用于物理存储数据缓存的数据输出端以数据页形式替换出的数据,这些替换出的数据是连续的,即用于逻辑存储这些替换出的数据的逻辑迷你页的lmn是连续的。比如,以一个逻辑页中最多包括4个逻辑迷你页为例,若替换出的数据是图3a中lmn分别为16、17、18和19的4个逻辑迷你页中逻辑存储的数据,那么便采取数据页对这些替换出的数据进行物理存储。对于闪存中的数据页,该数据页携带物理页地址(ppn,physicalpagenumber),同时该数据页包括的每一个物理迷你页均携带pmn。需要说明的是,为了便于区分逻辑页、逻辑迷你页的数据存储,和闪存页、物理迷你页的数据存储,在本公开中以逻辑存储来定义逻辑页和逻辑迷你页的数据存储,以物理存储来定以闪存页也物理迷你页的数据存储。日志页:闪存中除了包括数据页一种类型的闪存页外,还包括另一种类型为日志页的闪存页,日志页用于储存数据缓存的数据输出端以日志页形式替换出的数据,这些替换出的数据是非连续的,即用于逻辑存储这些替换出的数据的逻辑迷你页的lmn不是连续的。比如,以一个逻辑页中最多包括4个逻辑迷你页为例,若替换出的数据是图3a中lmn分别为34、35、56和57的4个逻辑迷你页中逻辑存储的数据,那么便采取日志页对这些替换出的数据进行物理存储。其中,固态硬盘中的日志页个数约小于固态硬盘中闪存页总数的5%。对于闪存中的日志页,该日志页携带物理页地址(ppn),同时该日志页包括的每一个物理迷你页均携带物理迷你页地址(pmn)。本公开在进行数据写入时,引入迷你页作为地址映射的最小单位,其中,迷你页分为逻辑迷你页和物理迷你页。若数据缓存中不存在足够的空闲缓存空间来存储待写入数据,则ssd控制器会根据待写入数据的数据量将一部分已存储的数据迁移至闪存中,以剩余足够的空闲缓存空间来存储待写入数据。其中,在进行数据迁移时,ssd控制器会根据数据缓存中首个逻辑页的逻辑容量来判断将替换出的数据是写入闪存中的数据页还是日志页;并通过页级和迷你页级的混合地址映射完成数据写入。之后,基于页级映射管理数据页,并基于迷你页级映射管理日志页,详细过程请参见下述实施例。图4a是本公开示出的一种数据存储方法的流程图,执行主体为ssd控制器,如图4a所示包括以下步骤。401、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量小于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从多个第一逻辑页中确定出至少一个第一目标逻辑页,将首个逻辑页包括的逻辑迷你页和至少一个第一目标逻辑页包括的逻辑迷你页进行拼接,得到n个虚拟逻辑页。在本公开中,ssd控制器在接收到数据请求后,会对接收到的数据请求进行翻译,若翻译的结果中携带有待写入数据,则确定该数据请求为写数据请求。在确定该数据请求为写数据请求后,ssd控制器继续判断数据缓存中是否存在空闲缓存空间,具体过程为:ssd控制器对数据缓存中的空闲缓存空间进行统计,得到空闲缓存空间能够存储的数据量;将该待写入数据的数据量与该空闲缓存空间能够存储的数据量进行比较;若该待写入数据的数据量小于或等于该空闲缓存空间能够存储的数据量,则确定该数据缓存中存在可存储待写入数据的空闲缓存空间;若该数据量大于该空闲缓存空间能够存储的数据量,则确定该数据缓存中不存在可存储待写入数据的空闲缓存空间。其中,n个虚拟逻辑页中每一虚拟逻辑页的逻辑容量与一个闪存页的物理容量是相同的,n为大于或等于1的整数。空闲缓存空间用于存储与该写数据请求相对应的待写入数据,且n个虚拟逻辑页的逻辑容量之和等于待写入数据的数据量。多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个闪存页的物理容量,至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于多个第一逻辑页中除至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储的数据从数据输出端输出,且首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出。换句话说,首个逻辑页指代从数据输出端开始按照写入数据缓存的先后顺序确定的第一个逻辑页。也即,首个逻辑页指代数据缓存中当前已有的全部逻辑页中最先被写入的逻辑页。在本公开中,以图3a为例,在数据缓存中,图示右端为数据输出端,则该首个逻辑页即为lpn=8的逻辑页。其中,若ssd控制器确定数据缓存中不存在空闲缓存空间,则接下来会判断首个逻辑页的逻辑容量是否与一个闪存页的物理容量一致;若首个逻辑页中的逻辑容量小于一个闪存页的物理容量,即若首个逻辑页中的逻辑迷你页个数小于一个闪存页中包括的物理迷你页个数,则执行逻辑迷你页的拼接操作。需要说明的是,在本公开中,闪存页内包括的物理迷你页的数目预先设置为4个,本公开对预先设置的闪存中包括的物理迷你页的数目不进行具体限定。例如,一个闪存页中包括的物理迷你页个数为4个,若首个逻辑页中的逻辑迷你页个数为3个,则该首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致;若首个逻辑页中的逻辑迷你页个数为4个,则该首个逻辑页中的逻辑容量与一个闪存页的物理容量一致。参考图4b,下面以一个详细例子对逻辑迷你页的拼接过程进行详细说明。例如,以待写入数据的数据量与2个闪存页的物理容量一致,每个闪存页包括4个物理迷你页,首个逻辑页(lpn=8)包括2个逻辑迷你页,分别为lmn=34的逻辑迷你页和lmn=35的逻辑迷你页,接下来的逻辑页(lpn=14)包括2个逻辑迷你页,分别为lmn=56的逻辑迷你页和lmn=57的逻辑迷你页,再接下来的逻辑页(lpn=6)包括2个逻辑迷你页,分别为lmn=42的逻辑迷你页和lmn=43的逻辑迷你页,再接下来的逻辑页(lpn=5)包括2个逻辑迷你页,分别为lmn=21的逻辑迷你页和lmn=22的逻辑迷你页,则可将该数据缓存中所有逻辑容量小于一个闪存页的物理容量的逻辑页确定为第一逻辑页。在这个例子中,lpn=14、lpn=6以及lpn=5称之为第一目标逻辑页。在拼接时,将首个逻辑页与lpn=14的逻辑页进行拼接,得到一个闪存页大小的一个拼接出的逻辑页。该拼接出的逻辑页包括4个逻辑迷你页分别为lmn=34的逻辑迷你页、lmn=35的逻辑迷你页、lmn=56的逻辑迷你页和lmn=57的数据不连续的逻辑迷你页。将lpn=6逻辑页与lpn=5的逻辑页进行拼接,得到一个闪存页大小的另一个拼接出的逻辑页。该拼接出的逻辑页包括4个逻辑迷你页分别为lmn=42的逻辑迷你页、lmn=43的逻辑迷你页、lmn=21的逻辑迷你页和lmn=22的数据不连续的逻辑迷你页。这两个拼接出的逻辑页便指代上述n个虚拟逻辑页。由于得到的n个虚拟逻辑页的逻辑容量与待写入数据的数据量一致,因此完成此次拼接操作。除此之外,在对逻辑迷你页进行依次拼接时,通常情况还需遵循下述规则:若在拼接的过程中,一个第一目标逻辑页与另一个第一目标逻辑页包括的逻辑迷你页个数的总和大于一个闪存页中包括的物理迷你页个数,则选取另一个第一目标逻辑页中的部分逻辑迷你页与一个目标逻辑页进行拼接,使拼接得到的逻辑页中包括的逻辑迷你页个数等于一个闪存页中包括的物理迷你页个数。比如,以待写入数据的数据量与1个闪存页的物理容量一致,每个闪存页包括4个物理迷你页为例,若首个逻辑页包括3个逻辑迷你页,第一目标逻辑页包括2个逻辑迷你页,则选取第一目标逻辑页中的1个逻辑迷你页与首个逻辑页中的3个逻辑迷你页进行拼接,而第一目标逻辑页中没有参与拼接的1个逻辑迷你页,可继续存储在该第一目标逻辑页中,并可以在下一次拼接的过程中参与拼接。402、将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,得到空闲缓存空间。其中,针对闪存中日志页数量的不同,可采取下述几种不同的处理方式将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页。情况一、多个闪存页包括n个日志页,由于上述得到的n个虚拟逻辑页是通过逻辑迷你页拼接得到的,因此将被逻辑存储在n个虚拟逻辑页内的数据,写入到n个空闲的日志页。换句话说,日志页用来物理存储通过逻辑迷你页拼接得到的虚拟逻辑页中逻辑存储的数据。针对该种情况,将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在n个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,对剩余的n-m个非空闲日志页内物理存储的数据进行清理,得到清理后的n-m个空闲日志页;将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个空闲日志页。由于闪存中仅包括n个日志页,若这个n个日志页中存在非空闲日志页,则必须对所有的非空闲日志页内物理存储的数据进行清理,进而得到n个空闲日志页,之后将n个虚拟逻辑页内的数据写入n个空闲日志页。在本公开中,在对剩余的n-m个非空闲日志页内物理存储的数据进行清理时,可采取下述方式实现:对被包含在n-m个非空闲日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在n-m个非空闲日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的n-m个空闲日志页。其中,无效物理迷你页是指存储数据为无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的物理迷你页。其中,在进行数据迁移时,可将有效物理迷你页中物理存储的数据迁移到其他空闲存储空间。对数据进行擦除处理,即将无效物理迷你页中物理存储的数据直接永久丢弃。需要说明的是,对于n个虚拟逻辑页内的每一逻辑迷你页,m个空闲日志页和清理后的n-m个空闲日志页均包含一个对应的物理迷你页;m个空闲日志页和清理后的n-m个空闲日志页总共包括的物理迷你页的数量与n个虚拟逻辑页包含的逻辑迷你页的数量相等。因此,在将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个空闲日志页时,通常遵循下述原则:将n个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到m个空闲日志页和清理后的n-m个空闲日志页包含的对应的一个物理迷你页内。情况二、多个闪存页包括q个日志页,q为大于n的整数,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内。针对该种情况,将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在q个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的q-m个非空闲日志页中确定出n-m个目标日志页,并对n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页。由于闪存中仅包括的日志页的数量大于n个,且q个日志页中空闲日志页的数量又不足以物理存储n个虚拟逻辑页内的数据,此时便需要对日志页进行清理,即从剩余的q-m个非空闲日志页中确定出n-m个目标日志页,并对n-m个目标日志页内物理存储的数据进行清理。其中,目标日志页的选取规则为:n-m个目标日志页中每一目标日志页包含的无效物理迷你页的数量均大于q-m个非空闲日志页中除n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页的数量。也即,一个非空闲日志页中无效数据越多,该非空闲日志页被选取为目标日志页的概率越大。这样选取的好处时,需要进行数据迁移处理的有效数据的数据量小。情况三、多个闪存页包括r个日志页,r为大于n的整数,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内。针对该种情况,将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,具体包括:在r个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的r-m个非空闲日志页中确定出n-m个目标日志页,并对n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页。由于闪存中仅包括的日志页的数量大于n个,且r个日志页中空闲日志页的数量又不足以物理存储n个虚拟逻辑页内的数据,此时便需要对日志页进行清理,即从剩余的r-m个非空闲日志页中确定出n-m个目标日志页,并对n-m个目标日志页内物理存储的数据进行清理。其中,目标日志页的选取规则为:n-m个目标日志页中每一个目标日志页包含的无效物理迷你页内物理存储的数据的写入时间均早于r-m个非空闲日志页中除n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页内物理存储的数据的写入时间。也即,一个非空闲日志页中无效数据的写入时间越早,该非空闲日志页被选取为目标日志页的概率越大。针对上述情况二和情况三,在对n-m个目标日志页内物理存储的数据进行清理时,具体的清理方式与上述情况一类似,此处不再赘述。在将被存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页时,具体实现方式也与上述情况一类似,此处不再赘述。需要说明的是,针对上述情况三,本质上就是ssd控制器按照先进先出规则,在物理迷你页存储状态表(pmt,physicalminipagevalid/invalidtable)中确定状态标识为第一预设数值的指定物理迷你页。这里的指定物理迷你页即指代上述情况三中提及的目标日志页包含的无效物理迷你页。其中,该pmt也即物理迷你页有效/无效状态表,该表记录了物理迷你页地址(pmn)与状态标识(valid)之间的一一对应关系。其中,valid用于标识对应的物理迷你页内物理存储的数据是否有效。若一个valid的取值为第一预设数值(通常为0),则表明对应物理迷你页内物理存储的数据是无效的;若一个valid的取值为第二预设数值(通常为1),则表明对应物理迷你页内物理存储的数据是有效的。例如,图4c示出了pmt的形式,该pmt存储在数据缓存中。从图4c可以得出,物理迷你页地址(pmn)为0的一项对应的位置标识的取值为0,则代表pmn=0的物理迷你页内物理存储的数据是无效的;pmn为1的一项对应的位置标识取值为1,则代表pmn=1的物理迷你页内物理存储的数据是有效的;pmn为2的一项对应的位置标识取值为0,则代表pmn=2的物理迷你页内物理存储的数据是无效的;pmn为3的一项对应的位置标识取值为1,则代表pmn=3的物理迷你页内物理存储的数据是有效的。其中,先写入在闪存中的数据通常也会先被记录在pmt中,因此依照先进先出的规则,也即按照该物理迷你页存储状态表的生成方式,获取最先存入表中的取值为第一预设数值的状态标识对应的物理迷你页,之后再按照存入的时间先后获取其他取值为第一预设数值的状态标识对应的物理迷你页,以确保先记录在表中的先被用到。接下来,ssd控制器根据迷你页级映射表,确定该指定物理迷你页所在的目标日志页,得到n-m个目标日志页。其中,迷你页级映射表记录了一个日志页所包括的物理迷你页、以及逻辑迷你页地址与物理迷你页地址之间的一一对应关系。根据迷你页级映射表可以确定指定物理迷你页所在的目标日志页,并根据物理迷你页存储状态表确定目标日志页包括的各个物理迷你页中的数据状态。若一个目标日志页中一个物理迷你页的状态标识取值为第一预设数值,则证明该物理迷你页存储的数据无效,该物理迷你页为无效物理迷你页;若一个目标日志页中一个物理迷你页的状态标识取值为第二预设数值,则证明该物理迷你页存储的数据有效,该物理迷你页为有效物理迷你页。例如,图4d示出了迷你页级映射表的形式,该迷你页级映射表同样存储在数据缓存中。由该迷你页级映射表可知,ppn=15的日志页中包括4个物理迷你页,分别为物理迷你页地址为pmn=60、pmn=61、pmn=62以及pmn=63的4个物理迷你页。其中,在图4d中lmn=10与pmn=60对应,表明逻辑存储在lmn=10的逻辑迷你页中的数据被物理存储在pmn=60的物理迷你页。同样由图4d可知,pmn=60的物理迷你页所在的目标日志页为ppn=15的日志页,pmn=9的物理迷你页所在的目标日志页为ppn=2的日志页。其中,闪存中的数据页或日志页的存在形式可如图4e所示。由图4e可知,闪存中当前存在ppn为2的日志页,ppn为3的数据页,ppn为9的数据页,ppn为15的日志页。其中,ppn为2的日志页中包括lmn分别为5、1、5、9的4个物理迷你页。其中,斜线框部分代表该物理迷你页中的数据无效,因此可以获知,在ppn为2的日志页中,lmn分别为5和1的物理迷你页为无效物理迷你页。在ppn为15的日志页中,所有物理迷你页中的数据均为有效数据,因此全部为有效物理迷你页。其中,在将有效数据进行迁移后,该有效数据物理迷你页地址会发生变化,因此需要在执行有效数据迁移操作后,对应修改迷你页级映射表和物理迷你页存储状态表等。其中,闪存中的日志页数量的数目是有严格限制的,通常情况下须保证每时刻闪存上的日志页总数总是小于或等于一个阈值的,该阈值的取值可为5%,本公开对此不进行具体限定。在另一个实施例中,在将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲日志页后,本公开还包括修改逻辑迷你页位置状态表(lmlt,logicalminipagelocationtable)、pmt和迷你页级映射表的步骤,详细如下。对于n个空闲日志页中的一个空闲日志页来说,若该空闲日志页为闪存中从未写入数据的日志页,则在迷你页级映射表中为该空闲日志页增加一个条目,将该空闲日志页的ppn添加至迷你页级映射表。其中,在将该空闲日志页的ppn添加至迷你页级映射表中时,该空闲日志页中包括的物理迷你页的pmn和对应的lmn也一并添加至迷你页级映射表中的对应条目中。若该空闲日志页为进行数据清理得到的日志页,则该迷你页级映射表中已经存有该空闲日志页对应的条目,也即无需再次在迷你页级映射表中添加该空闲日志页的对应条目。此外,ssd控制器还会根据n个虚拟逻辑页包含的每一个逻辑迷你页的lmn,查询lmlt,将n个虚拟逻辑页包含的每一个逻辑迷你页的lmn对应的位置标识的取值置为第一预设数值。其中,lmlt记录了lmn与位置标识(pos)之间的对应关系。其中,该位置标识用于标识具有该逻辑迷你页地址的逻辑迷你页逻辑存储的数据是被物理存储在数据页中还是日志页中。若该位置标识的取值为第一预设数值(通常为0),则表明物理存储在日志页中;若该位置标识的取值为第二预设数值(通常为1),则表明物理存储在数据页中。例如,图4f示出了lmlt的形式,lmlt同样存储在数据缓存中。其中,pos指代状态标识,0指代第一预设数值,表示数据物理存储在日志页中,1指代第二预设数值,表示数据物理存储在数据页中。从图4f中可以得出,lmn为0的一项对应的状态标识的取值为1,则代表具有lmn=0的逻辑迷你页地址的逻辑迷你页逻辑存储的数据被物理存储在数据页中;lmn为4的一项对应的状态标识取值为0,则代表具有lmn=4的逻辑迷你页地址的逻辑迷你页逻辑存储的数据被物理存储在日志页中。之后,ssd控制器还会获取n个空闲日志页包含的每一个物理迷你页的pmn,并查询pmt,将n个空闲日志页包含的每一个物理迷你页的pmn对应的状态标识的取值置为第二预设数值。其中,若将n个虚拟逻辑页内的数据写入n个空闲日志页的操作执行成功,则将每一个物理迷你页对应的状态标识的取值置为第二预设数值(通常为1);若将n个虚拟逻辑页内的数据写入n个空闲日志页的操作执行失败,则将每一个物理迷你页对应的状态标识的取值置为第一预设数值(通常为0)。需要说明的是,若以相同的lmn执行了多次写入操作,则以最后一次写入操作为准,将最后写入的数据作为有效数据,并将该数据所在物理迷你页的物理迷你页地址对应的状态标识置为第二预设数值,前几次写入操作所写入的数据所在物理迷你页的物理迷你页地址对应的状态标识置为第一预设数值。例如,若以同一个逻辑页执行了4次写入操作,则将第4次写入操作所写入的数据所在物理迷你页的物理迷你页地址对应的状态标识置为1;将第1次、第2次和第3次写入操作写入的数据所在物理迷你页的物理迷你页地址在物理迷你页存储状态表中对应的状态标识置为0。403、将待写入数据从数据输入端写入空闲缓存空间。在将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲日志页后,数据缓存中将存在空闲缓存空间,因此将存储在数据缓存中的数据作为整体向数据输出端移动,使数据输入端存在可以剩余存储待写入数据的空闲缓存空间,之后将该待写入数据在数据输入端写入该空闲缓存空间。综上,步骤401至步骤403完成了基于迷你页级的地址映射实现数据存储。在另一个实施例中,参见图4g,在写入数据后,本公开还包括读取闪存中已存储数据的步骤,详细如下:411、在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页。其中,该多个逻辑迷你页用于逻辑存储对应于读数据请求的数据。ssd控制器在接收到数据请求后,对该数据请求进行翻译,若翻译的结果中携带逻辑迷你页地址,则确定该数据请求为读数据请求。之后,ssd控制器获取该读数据请求中携带的多个逻辑迷你页地址,根据多个逻辑迷你页地址确定上述多个逻辑迷你页。412、在被逻辑存储在逻辑迷你页内的数据被物理存储在日志页的情况下,确定对应于每一逻辑迷你页的物理迷你页。ssd控制器根据多个逻辑迷你页地址查询lmlt,获取与该多个逻辑迷你页地址对应的多个位置标识。若该多个位置标识取值均为第二预设数值,则ssd控制器确定该读数据请求请求的数据存储在日志页中。接下来,根据该多个逻辑迷你页地址查询迷你页级映射表,确定与该多个逻辑迷你页对应的物理迷你页,即确定对应于每一逻辑迷你页的物理迷你页。413、从对应于多个逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷你页,并从至少一个有效物理迷你页中读取对应于读数据请求的数据。在本公开中,ssd控制器根据对应于多个逻辑迷你页的多个物理迷你页的物理迷你页地址,查询pmt,确定该物理迷你页地址对应的至少一个状态标识,并在该至少一个物理迷你页地址中,获取状态标识取值为第二预设数值的指定物理迷你页地址,具有指定物理迷你页地址的物理迷你页即为上述至少一个有效物理迷你页,进而从至少一个有效物理迷你页中读取对应于读数据请求的数据。本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从首个逻辑页开始进行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。图5a是本公开示出的一种数据存储方法的流程图,执行主体为ssd控制器,如图5a所示包括以下步骤。501、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,首个逻辑页的逻辑容量与一个闪存页的物理容量相等,且对应于写数据请求的待写入数据的数据量大于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个第二逻辑页中确定出k个第二目标逻辑页。其中,k为大于或等于1的整数,且k个第二目标逻辑页的逻辑容量和首个逻辑页的逻辑容量之和等于待写入数据的数据量;空闲缓存空间用于存储待写入数据;首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;每一第二逻辑页的逻辑容量均等于一个闪存页的物理容量,也即一个第二逻辑页包括的逻辑迷你页个数等于一个闪存页包括的物理迷你页个数。每一第二目标逻辑页内逻辑存储的数据均将早于多个第二逻辑页中除k个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存储的数据从数据输出端输出。在本公开中,若ssd控制器确定数据缓存中不存在空闲缓存空间,则接下来会判断首个逻辑页的逻辑容量是否与一个闪存页的物理容量一致;若首个逻辑页的逻辑容量与一个闪存页的物理容量相等且待写入数据的数据量大于一个闪存页的物理容量,则在数据缓存中挑选多个第二逻辑页。其中,若在选取第二逻辑页的过程中,一个第二逻辑页与另一个第二逻辑页之间存在逻辑容量与一个闪存页的物理容量不一致的逻辑页,则将该逻辑容量与一个闪存页的物理容量不一致的逻辑页跳过,之后继续进行第二逻辑页的选取。比如,以待写入数据的数据量与2个闪存页的物理容量一致,每个闪存页包括4个物理迷你页为例,则若首个逻辑页包括4个逻辑迷你页,第二个逻辑页包括2个逻辑迷你页,第三个逻辑页包括4个逻辑迷你页,则将第二个逻辑页跳过,选取第三个逻辑页作为第二逻辑页。502、将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,得到空闲缓存空间。其中,针对闪存中数据页数量的不同,可采取下述几种不同的处理方式将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页。情况一、多个闪存页包括k+1个数据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内。针对该种情况,将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在k+1个空闲数据页内包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,对剩余的k+1-l个非空闲数据页内物理存储的数据进行清理,得到清理后的k+1-l个空闲数据页;将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个空闲数据页。其中,在对剩余的k+1-l个非空闲数据页内物理存储的数据进行清理时,可采取下述方式实现:对被包含在k+1-l个非空闲数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在k+1-l个非空闲数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的k+1-l个空闲数据页。其中,对于首个逻辑页以及k个第二目标逻辑页内的每一逻辑迷你页,l个空闲数据页以及清理后的k+1-l个空闲数据页均包含一个对应的物理迷你页;l个空闲数据页以及清理后的k+1-l个空闲数据页总共包括的物理迷你页的数量与首个逻辑页以及k个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。因此,在将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个空闲数据页时,通常遵循下述原则:将首个逻辑页以及k个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到l个空闲数据页以及清理后的k+1-l个空闲数据页包含的对应的一个物理迷你页内。情况二、多个闪存页包括h个数据页,h为大于k+1的整数,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内。针对该种情况,将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在h个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,从剩余的h-l个非空闲数据页中确定出k+1-l个目标数据页,并对k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页。其中,k+1-l个目标数据页中每一目标数据页包含的无效物理迷你页的数量均大于h-l个非空闲数据页中除k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页的数量;情况三、多个闪存页包括j个数据页,j为大于k+1的整数,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内。针对该种情况,将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,具体包括:在j个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,从剩余的j-l个非空闲数据页中确定出k+1-l个目标数据页,并对k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页。其中,k+1-l个目标数据页中每一个目标数据页包含的无效物理迷你页内物理存储的数据的写入时间均早于j-l个非空闲数据页中除k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是指存储数据为无效数据的物理迷你页。针对上述情况二和情况三,在对k+1-l个目标数据页内物理存储的数据进行清理时,具体的清理方式与上述情况一类似,此处不再赘述。在将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页时,具体实现方式也与上述情况一类似,此处不再赘述。需要说明的是,除了采取上述几种方式获得k+1个空闲数据页的方式,也可采取选取闪存中的至少一个垃圾块,将该至少一个垃圾块中的有效数据进行数据迁移,并将该至少一个垃圾块中的无效数据进行擦除,得到空闲闪存块,进而将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据写入该空闲闪存块的k+1个空闲数据页。其中,垃圾块为选取的包括无效数据的闪存块,且不含有空闲闪存页。在另一个实施例中,在将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲日志页后,本公开还包括修改lmlt、pmt和页级映射表的步骤,详细如下。ssd控制器获取首个逻辑页和k个第二逻辑页的逻辑页地址,以及k+1个空闲数据页的物理页地址,将上述逻辑页地址与物理页地址之间的一一对应关系记录在页级映射表中。即,该页级映射表是用于记录逻辑页地址与物理页地址之间的一一对应关系。参见图5b,图5b示出了页级映射表的形式,该页级映射表同样存储在数据缓存中。由该页级映射表可以获知lpn(logicalpagenumber,逻辑页地址)为0的逻辑页对应的物理页地址为ppn=3;lpn为1的逻辑页对应的物理页地址为ppn=200;lpn为2的逻辑页对应的物理页地址为ppn=9;lpn为3的逻辑页对应的物理页地址为ppn=10;lpn为4的逻辑页对应的物理页地址为ppn=63;lpn为5的逻辑页对应的物理页地址为ppn=84;lpn为6的逻辑页对应的物理页地址为ppn=41;lpn为7的逻辑页对应的物理页地址为ppn=25。继续参见图5b,由图5b所示,ppn=9引出虚线框表格,该虚线框表格指代lpn=2的逻辑页包括4个逻辑迷你页,这4个逻辑迷你页的逻辑迷你页地址lmn分别为8、9、10、11,逻辑存储在这4个逻辑迷你页中的数据被物理存储在物理迷你页地址pmn分别为36、37、38、39的4个物理迷你页中。其中,ssd控制器将该页级映射表中首个逻辑页和k个第二逻辑页的逻辑页地址对应的物理页地址修改为k+1个空闲数据页的物理页地址。例如,参见图5b,对于lpn=0的逻辑页来说,若该逻辑页对应的数据页的ppn=10,则将该页级映射表中lpn=0对应的ppn修改为10。此外,ssd控制器还会获取首个逻辑页和k个第二逻辑页包含的所有逻辑迷你页的逻辑迷你页地址,并将逻辑迷你页位置状态表中这些逻辑迷你页地址对应的位置标识的取值置为第二预设数值。在本公开中,由于首个逻辑页和k个第二逻辑页包含的数据是写入到数据页,因此需要在逻辑迷你页位置状态表中将这些逻辑迷你页的逻辑迷你页地址对应的位置标识置为第二预设数值,也即置为1,以便后续需要对该数据进行读取时判断该数据是存储在数据页中还是日志页中。另外,ssd控制器还会获取k+1个空闲数据页包含的物理迷你页的物理迷你页地址,并将物理迷你页存储状态表中这些物理迷你页地址对应的状态标识的取值置为第二预设数值,表示存储的数据有效。其中,若将首个逻辑页和k个第二逻辑页包含的数据写入空闲数据页的操作执行成功,则将该空闲数据页中物理迷你页对应的状态标识的取值置为第一预设数值(通常为1);若将首个逻辑页和k个第二逻辑页包含的数据写入空闲数据页的操作执行失败,则将该空闲数据页中物理迷你页对应的状态标识的取值置为第二预设数值(通常为0)。503、将待写入数据从数据输入端写入空闲缓存空间。本步骤与上一实施例中的步骤403同理,此处不再赘述。综上,步骤501至步骤503完成了基于页级的地址映射实现数据存储。在另一个实施例中,参见图5c,在写入数据后,本公开还包括读取闪存中已存储数据的步骤,详细如下:511、在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页。其中,该多个逻辑迷你页用于逻辑存储对应于读数据请求的数据。512、在逻辑存储在多个逻辑迷你页内的数据被物理存储在数据页的情况下,确定对应于多个逻辑迷你页的至少一个逻辑页。ssd控制器根据多个逻辑迷你页地址查询lmlt,获取与该多个逻辑迷你页地址对应的多个位置标识。若该多个位置标识取值均为第一预设数值,则ssd控制器确定该读数据请求请求的数据存储在数据页中。在本公开中,参见图4f,若该读数据请求中携带的逻辑迷你页地址为0、1、2、3,则获取的状态标识均为1,由此可知该待读取数据存储在数据页中。对应于多个逻辑迷你页的至少一个逻辑页,即指代多个逻辑迷你页所在的逻辑页。若多个逻辑迷你页为上述首个逻辑页和k个第二目标逻辑页所包含的逻辑迷你页,则对应于这些逻辑迷你页的至少一个逻辑页即为上述首个逻辑页和k个第二目标逻辑页。513、从至少一个逻辑页对应的数据页中读取对应与读数据请求的数据。其中,该页级映射表中记录了逻辑页地址与物理页地址之间的对应关系。根据上述对应于多个逻辑迷你页的至少一个逻辑页的逻辑页地址,在该页级映射表中获取对应的物理页地址,根据获取到的物理地址在闪存中至少一个逻辑页对应的数据页中读取读数据请求所请求的数据。本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则从首个逻辑页开始进行逻辑容量与一个闪存页的物理容量一致的逻辑页的挑选,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。图6是本公开示出的一种数据存储方法的流程图,执行主体为ssd控制器,如图6所示包括以下步骤。601、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量、一个闪存页的物理容量以及待写入数据的数据量均相等的情况下,将存储在首个逻辑页内的数据移出并写入到一个空闲闪存页,得到空闲缓存空间。其中,空闲缓存空间用于存储对应于写数据请求的待写入数据;首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;602、将待写入数据从数据输入端写入空闲缓存空间。其中,空闲闪存页包括空闲数据页,将存储在首个逻辑页内的数据移出并写入到一个空闲闪存页,具体包括:将存储在首个逻辑页内的数据移出并写入到一个空闲数据页。本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则首个逻辑页内的数据写入闪存中的一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。图7是本公开提供的一种数据存储装置的结构示意图。参见图7,该装置包括:确定模块701,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量小于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从多个第一逻辑页中确定出至少一个第一目标逻辑页;处理模块702,用于将首个逻辑页包括的逻辑迷你页和至少一个第一目标逻辑页包括的逻辑迷你页进行拼接,得到n个虚拟逻辑页,n个虚拟逻辑页中每一虚拟逻辑页的逻辑容量与一个闪存页的物理容量是相同的,n为大于或等于1的整数;其中,空闲缓存空间用于存储与写数据请求相对应的待写入数据,n个虚拟逻辑页的逻辑容量之和等于待写入数据的数据量;多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个闪存页的物理容量,至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于多个第一逻辑页中除至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储的数据从数据输出端输出,首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;第一写入模块703,用于将被逻辑存储在n个虚拟逻辑页内的数据移出并写入到n个空闲闪存页,得到空闲缓存空间;第二写入模块704,用于将待写入数据从数据输入端写入空闲缓存空间。在另一个实施例中,多个闪存页包括n个日志页,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页;第一写入模块,具体包括:清理子模块,用于在n个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,对剩余的n-m个非空闲日志页内物理存储的数据进行清理,得到清理后的n-m个空闲日志页;写入子模块,用于将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个空闲日志页。在另一个实施例中,每一日志页包括至少两个物理迷你页,至少两个物理迷你页的物理容量是相同的;清理子模块,具体用于对被包含在n-m个非空闲日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在n-m个非空闲日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的n-m个空闲日志页;其中,无效物理迷你页是指存储数据为无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的物理迷你页。在另一个实施例中,写入子模块,具体用于将n个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到m个空闲日志页和清理后的n-m个空闲日志页包含的对应的一个物理迷你页内;对于n个虚拟逻辑页内的每一逻辑迷你页,m个空闲日志页和清理后的n-m个空闲日志页均包含一个对应的物理迷你页;m个空闲日志页和清理后的n-m个空闲日志页总共包括的物理迷你页的数量与n个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。在另一个实施例中,多个闪存页包括q个日志页,q为大于n的整数,并且每一日志页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;第一写入模块,具体包括:确定子模块,用于在q个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的q-m个非空闲日志页中确定出n-m个目标日志页;清理子模块,用于对n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;n-m个目标日志页中每一目标日志页包含的无效物理迷你页的数量均大于q-m个非空闲日志页中除n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页的数量,无效物理迷你页是指存储数据为无效数据的物理迷你页;写入子模块,用于将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页。在另一个实施例中,多个闪存页包括r个日志页,r为大于n的整数,每一日志页包括至少两个物理迷你页,且至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;第一写入模块,具体包括:确定子模块,用于在r个日志页中包括m个空闲日志页,且m为大于或等于0且小于n的整数的情况下,从剩余的r-m个非空闲日志页中确定出n-m个目标日志页;清理子模块,用于对n-m个目标日志页内物理存储的数据进行清理,得到清理后的n-m个目标日志页;n-m个目标日志页中每一个目标日志页包含的无效物理迷你页内物理存储的数据的写入时间均早于r-m个非空闲日志页中除n-m个目标日志页之外的每一非空闲日志页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是指存储数据为无效数据的物理迷你页;写入子模块,用于将被逻辑存储在n个虚拟逻辑页内的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页。在另一个实施例中,清理子模块,具体用于对被包含在n-m个目标日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在n-m个目标日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的n-m个目标日志页;其中,有效物理迷你页是指存储数据为有效数据的物理迷你页。在另一个实施例中,写入子模块,具体用于将n个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到m个空闲日志页和清理后的n-m个目标日志页包含的对应的一个物理迷你页内;对于n个虚拟逻辑页内的每一逻辑迷你页,m个空闲日志页和清理后的n-m个目标日志页均包含一个对应的物理迷你页;m个空闲日志页和清理后的n-m个目标日志页总共包括的物理迷你页的数量与n个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。在另一个实施例中,该装置还包括:确定模块,还用于在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页,多个逻辑迷你页用于逻辑存储对应于读数据请求的数据;确定模块,还用于在被逻辑存储在逻辑迷你页内的数据被物理存储在日志页的情况下,确定对应于每一逻辑迷你页的物理迷你页;确定模块,还用于从对应于多个逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷你页;读取模块,用于从至少一个有效物理迷你页中读取对应于读数据请求的数据。本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从首个逻辑页开始进行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。图8是本公开提供的一种数据存储装置的结构示意图。参见图8,该装置包括:确定模块801,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,首个逻辑页的逻辑容量与一个闪存页的物理容量相等,且对应于写数据请求的待写入数据的数据量大于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个第二逻辑页中确定出k个第二目标逻辑页,其中,k为大于或等于1的整数,且k个第二目标逻辑页的逻辑容量和首个逻辑页的逻辑容量之和等于待写入数据的数据量;其中,空闲缓存空间用于存储待写入数据;首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;每一第二逻辑页的逻辑容量均等于一个闪存页的物理容量,每一第二目标逻辑页内逻辑存储的数据均将早于多个第二逻辑页中除k个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存储的数据从数据输出端输出;第一写入模块802,用于将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到k+1个空闲闪存页,得到空闲缓存空间;第二写入模块803,用于将待写入数据从数据输入端写入空闲缓存空间。在另一个实施例中,多个闪存页包括k+1个数据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;第一写入模块,具体包括:清理子模块,用于在k+1个数据页内包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下,对剩余的k+1-l个非空闲数据页内物理存储的数据进行清理,得到清理后的k+1-l个空闲数据页;写入子模块,用于将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个空闲数据页。在另一个实施例中,每一数据页包括至少两个物理迷你页,至少两个物理迷你页的物理容量是相同的;清理子模块,具体用于对被包含在k+1-l个非空闲数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在k+1-l个非空闲数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的k+1-l个空闲数据页;其中,无效物理迷你页是指存储数据为无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的物理迷你页。在另一个实施例中,写入子模块,具体用于将首个逻辑页以及k个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到l个空闲数据页以及清理后的k+1-l个空闲数据页包含的对应的一个物理迷你页内;对于首个逻辑页以及k个第二目标逻辑页内的每一逻辑迷你页,l个空闲数据页以及清理后的k+1-l个空闲数据页均包含一个对应的物理迷你页;l个空闲数据页以及清理后的k+1-l个空闲数据页总共包括的物理迷你页的数量与首个逻辑页以及k个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。在另一个实施例中,多个闪存页包括h个数据页,h为大于k+1的整数,并且每一数据页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;第一写入模块,具体包括:确定子模块,用于在h个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下的,从剩余的h-l个非空闲数据页中确定出k+1-l个目标数据页;清理子模块,用于对k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;k+1-l个目标数据页中每一目标数据页包含的无效物理迷你页的数量均大于h-l个非空闲数据页中除k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页的数量,无效物理迷你页是指存储数据为无效数据的物理迷你页;写入子模块,用于将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页。在另一个实施例中,多个闪存页包括j个数据页,j为大于k+1的整数,并且每一数据页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;第一写入模块,具体包括:确定子模块,用于在j个数据页中包括l个空闲数据页,且l为大于或等于0且小于或等于k的整数的情况下的,从剩余的j-l个非空闲数据页中确定出k+1-l个目标数据页;清理子模块,用于对k+1-l个目标数据页内物理存储的数据进行清理,得到清理后的k+1-l个目标数据页;k+1-l个目标数据页中每一个目标数据页包含的无效物理迷你页内物理存储的数据的写入时间均早于j-l个非空闲数据页中除k+1-l个目标数据页之外的每一非空闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是指存储数据为无效数据的物理迷你页;写入子模块,用于将被逻辑存储在首个逻辑页以及k个第二目标逻辑页内的数据移出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页。在另一个实施例中,清理子模块,具体用于对被包含在k+1-l个目标数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在k+1-l个目标数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的k+1-l个目标数据页;其中,有效物理迷你页是指存储数据为有效数据的物理迷你页。在另一个实施例中,写入子模块,具体用于k个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到l个空闲数据页以及清理后的k+1-l个目标数据页包含的对应的一个物理迷你页内;对于首个逻辑页以及k个第二目标逻辑页内的每一逻辑迷你页,l个空闲数据页以及清理后的k+1-l个目标数据页均包含一个对应的物理迷你页;l个空闲数据页以及清理后的k+1-l个目标数据页总共包括的物理迷你页的数量与首个逻辑页以及k个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。在另一个实施例中,该装置还包括:确定模块,还用于在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页,多个逻辑迷你页用于逻辑存储对应于读数据请求的数据;确定模块,还用于在逻辑存储在多个逻辑迷你页内的数据被物理存储在数据页的情况下,确定对应于多个逻辑迷你页的至少一个逻辑页;读取模块,用于从至少一个逻辑页对应的物理页中读取对应与读数据请求的数据。本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则从首个逻辑页开始进行逻辑容量与一个闪存页的物理容量一致的逻辑页的挑选,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。图9是本公开提供的一种数据存储装置的结构示意图。参见图9,该装置包括:第一写入模块901,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量、一个闪存页的物理容量以及待写入数据的数据量均相等的情况下,将存储在首个逻辑页内的数据移出并写入到一个空闲闪存页,得到空闲缓存空间;其中,空闲缓存空间用于存储对应于写数据请求的待写入数据;首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;第二写入模块902,用于将待写入数据从数据输入端写入空闲缓存空间。本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则首个逻辑页内的数据写入闪存中的一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。需要说明的是:上述实施例提供的数据存储装置在进行数据存储时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1