The invention discloses a data storage method and a device, belonging to the field of data storage. The method includes: after receiving a request to write data to the idle cache space does not exist in the data cache, and the first page logic logic capacity is less than the physical capacity of a flash page case from the data cache includes the first logical page except other logical page to determine the first logic page, and determining at least one first target logical page from a plurality of first logical pages, the first page Mini logic logical page includes logic Mini page and at least one of the first target logical page including the stitching; will be stored in the N logical virtual logical page within the data and write out to N a free flash page; to write data from a data input into the idle buffer space. The public will be mini page as the smallest unit of data storage, can support a more fine-grained write operation, and can effectively reduce the waste of storage space.
【技术实现步骤摘要】
本公开涉及数据存储领域,特别涉及一种数据存储方法及装置。
技术介绍
固态硬盘是用固态电子存储芯片阵列制成的硬盘,其中固态硬盘中包括的闪存作为文件系统中存储数据的介质对数据进行存储。其中,固态硬盘在接收到写数据请求后,一般情况下在对数据进行写入并存储时将闪存中的闪存页作为最小的存储单位(即进行数据写入时的写入粒度)。如图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个虚拟逻辑页的逻辑容量之和等于所述待写入数据的数据量;所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物理容量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的 ...
【技术特征摘要】
1.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至少两个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪存页,多个所述闪存页的物理容量是相等的,所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量小于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从所述多个第一逻辑页中确定出至少一个第一目标逻辑页,将所述首个逻辑页包括的逻辑迷你页和所述至少一个第一目标逻辑页包括的逻辑迷你页进行拼接,得到N个虚拟逻辑页,所述N个虚拟逻辑页中每一虚拟逻辑页的逻辑容量与一个所述闪存页的物理容量是相同的,N为大于或等于1的整数;其中,所述空闲缓存空间用于存储与所述写数据请求相对应的待写入数据,所述N个虚拟逻辑页的逻辑容量之和等于所述待写入数据的数据量;所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物理容量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于所述多个第一逻辑页中除所述至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储的数据从所述数据输出端输出,所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,得到所述空闲缓存空间;将所述待写入数据从所述数据输入端写入所述空闲缓存空间。2.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括N个日志页,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页;所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,具体包括:在所述N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情况下,对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空闲日志页;将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个空闲日志页。3.根据权利要求2所述的数据存储方法,其特征在于,每一所述日志页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相同的;所述对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空闲日志页,具体包括:对被包含在所述N-M个非空闲日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述N-M个非空闲日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的N-M个空闲日志页;其中,所述无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。4.根据权利要求2或3所述的数据存储方法,其特征在于,所述将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个空闲日志页,具体包括:将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个空闲日志页包含的对应的一个物理迷你页内;对于所述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个空闲日志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个空闲日志页总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。5.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括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个目标日志页。6.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括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个目标日志页。7.根据权利要求5或6所述的数据存储方法,其特征在于,所述对N-M个目标日志页内物理存储的数据进行清理,得到清理后的N-M个目标日志页,具体包括:对被包含在所述N-M个目标日志页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述N-M个目标日志页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的N-M个目标日志页;其中,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。8.根据权利要求5至7任一项所述的数据存储方法,其特征在于,所述将被存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个目标日志页,具体包括:将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个目标日志页包含的对应的一个物理迷你页内;对于所述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个目标日志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个目标日志页总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。9.根据权利要求1至8中任一项所述的数据存储方法,其特征在于,所述方法还包括:在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;在被逻辑存储在所述逻辑迷你页内的数据被物理存储在日志页的情况下,确定对应于每一所述逻辑迷你页的物理迷你页;从对应于多个所述逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷你页,并从所述至少一个有效物理迷你页中读取所述对应于所述读数据请求的数据。10.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的,所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,所述首个逻辑页的逻辑容量与一个所述闪存页的物理容量相等,且对应于所述写数据请求的待写入数据的数据量大于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个所述第二逻辑页中确定出K个第二目标逻辑页,其中,K为大于或等于1的整数,且所述K个第二目标逻辑页的逻辑容量和所述首个逻辑页的逻辑容量之和等于所述待写入数据的数据量;其中,所述空闲缓存空间用于存储所述待写入数据;所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;每一所述第二逻辑页的逻辑容量均等于一个所述闪存页的物理容量,每一所述第二目标逻辑页内逻辑存储的数据均将早于多个所述第二逻辑页中除所述K个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存储的数据从所述数据输出端输出;将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到K+1个空闲闪存页,得到所述空闲缓存空间;将所述待写入数据从所述数据输入端写入所述空闲缓存空间。11.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括K+1个数据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到K+1个空闲闪存页,具体包括:在所述K+1个数据页内包括L个空闲数据页,且L为大于或等于0且小于或等于K的整数的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的K+1-L个空闲数据页;将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页。12.根据权利要求11所述的数据存储方法,其特征在于,每一数据页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相同的;所述对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的K+1-L个空闲数据页,具体包括:对被包含在所述K+1-L个非空闲数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述K+1-L个非空闲数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的K+1-L个空闲数据页;其中,所述无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。13.根据权利要求11或12所述的数据存储方法,其特征在于,所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页,具体包括:将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页包含的对应的一个物理迷你页内;对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页总共包括的物理迷你页的数量与所述首个逻辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。14.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括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个目标数据页。15.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括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个目标数据页。16.根据权利要求14或15所述的数据存储方法,其特征在于,所述对所述K+1-L个目标数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页,具体包括:对被包含在所述K+1-L个目标数据页内的所有无效物理迷你页物理存储的数据进行擦除处理,并对包含在所述K+1-L个目标数据页内的所有有效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的K+1-L个目标数据页;其中,所述有效物理迷你页是指存储数据为有效数据的物理迷你页。17.根据权利要求14至16任一项所述的数据存储方法,其特征在于,所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页,具体包括:将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页包含的对应的一个物理迷你页内;对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲数据页以及所述清理后的K+1-L个目标数据页均包含一个对应的物理迷你页;所述L个空闲数据页以及所述清理后的K+1-L个目标数据页总共包括的物理迷你页的数量与所述首个逻辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。18.根据权利要求10至17任一项所述的数据存储方法,其特征在于,所述方法还包括:在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;在逻辑存储在多个所述逻辑迷你页内的数据被物理存储在数据页的情况下,确定对应于多个所述逻辑迷你页的至少一个逻辑页;从所述至少一个逻辑页对应的数据页中读取所述对应与所述读数据请求的数据。19.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存页,多个所述闪存页的物理容量是相同的;所述方法包括:在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量、一个所述闪存页的物理容量以及待写入数据的数据量均相等的情况下...
【专利技术属性】
技术研发人员:吴非,周游,吴克强,张旭,沈中鹏,
申请(专利权)人:华为机器有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。