掌桥专利:专业的专利平台
掌桥专利
首页

数据搬移处理方法、装置、电子设备和存储介质

文献发布时间:2024-04-18 19:58:53


数据搬移处理方法、装置、电子设备和存储介质

技术领域

本申请涉及存储器技术领域,具体涉及一种数据搬移处理方法、装置、电子设备和存储介质。

背景技术

固态硬盘(Solid State Disk,SSD)常用于电子设备中,对数据进行存储。为节省SSD的存储空间,当前的做法是对写入SSD的数据进行压缩处理,包括基于中央处理器(Central Processing Unit,CPU)的软件压缩方法,以及,透明压缩方法。在向SSD写入数据时,基于CPU的软件压缩方法,会先经由CPU对该数据进行压缩,得到该数据对应的压缩数据,再将压缩数据写入SSD的闪存颗粒中,压缩处理是在CPU中实现的;透明压缩方法则是通过SSD对该数据进行压缩,得到压缩数据,再将该压缩数据存到SSD的闪存颗粒中,压缩处理是在SSD中实现的。

在向SSD的块中写入数据时,若该块中没有多余的空闲页,则需要先将该块中的有效数据搬移到另一个块中,然后擦除该块,于是,写入数据量将增加,此现象称为写放大现象。写放大的计算公式可以表征为:实际写入数据量/操作系统写入数据量。例如,操作系统向SSD的块t中写入大小为4KB的数据M,若该块t中没有多余的页,则需要先将块t中的有效数据搬移到另一个块u中,若有效数据为页1、页4以及页5中的数据,那么,需要将页1、页4以及页5中的数据搬移到块u中,然后擦除块t,最后,将数据M写入块t中,由此可见,实际写入了4个页,即实际写入数据量为4×4KB=16KB,操作系统写入数据量为4KB,于是,写放大=4。

基于CPU的软件压缩,会占用大量的CPU资源,而现有的透明压缩方法,可以避免占用CPU资源,但是,现有的透明压缩方法,压缩粒度比较固定,为一个块大小,例如,为4K大小,压缩数据仍然会占用较大的存储空间,导致SSD仍然存在较大的写放大。

发明内容

本申请实施例提供一种数据搬移处理方法、装置、电子设备和存储介质,可以降低数据对存储空间的占用,减小固态硬盘的写放大。

本申请实施例提供一种数据搬移处理方法,包括:

确定待搬移数据;

确定所述待搬移数据对应的压缩粒度;

在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;

在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;

对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;

对所述压缩数据进行存储处理。

相应的,本申请实施例提供一种数据搬移处理装置,包括:

第一确定单元,用于确定待搬移数据;

第二确定单元,用于确定所述待搬移数据对应的压缩粒度;

粒度确定单元,用于在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;

地址确定单元,用于在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;

压缩处理单元,用于对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;

存储处理单元,用于对所述压缩数据进行存储处理。

在一些实施例中,所述第二确定单元,具体用于:

根据所述待搬移数据对应的逻辑地址,查询压缩粒度表,得到所述待搬移数据对应的压缩粒度;

所述数据搬移处理装置,还包括:更新单元;

所述更新单元,用于根据所述目标压缩粒度和所述目标逻辑地址,更新所述压缩粒度表。

在一些实施例中,所述第一确定单元,具体用于:

确定待擦除存储块;

根据所述待擦除存储块中的有效数据,得到所述待搬移数据,所述有效数据为地址映射表中的逻辑地址对应的数据,所述地址映射表记录了逻辑地址和物理地址之间的映射关系。

在一些实施例中,所述待搬移数据对应一次写操作,所述粒度确定单元,具体用于:

在所述压缩粒度小于所述一次写操作对应的地址总量时,将所述地址总量作为目标压缩粒度,所述地址总量为逻辑地址的总数量。

在一些实施例中,所述目标逻辑地址为所述一次写操作对应的全部逻辑地址,所述压缩处理单元,具体用于:

在所述压缩粒度大于或等于预设压缩粒度时,对所述待搬移数据进行解压处理,得到所述待搬移数据对应的解压数据;

获取其他待搬移数据,所述其他待搬移数据为其他逻辑地址对应的待搬移数据,所述其他逻辑地址为所述目标逻辑地址中除去所述待搬移数据对应的逻辑地址;

在所述其他待搬移数据对应的压缩粒度大于或等于所述预设压缩粒度时,对所述其他待搬移数据进行解压处理,得到所述其他待搬移数据对应的解压数据;

将所述待搬移数据对应的解压数据和所述其他待搬移数据对应的解压数据进行拼接,得到拼接数据;

对所述拼接数据进行压缩处理,得到压缩数据。

在一些实施例中,所述粒度确定单元,具体用于:

当存在所述待搬移数据对应的场景压缩粒度,并且,所述压缩粒度小于所述场景压缩粒度时,将所述场景压缩粒度作为目标压缩粒度。

本申请实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例提供的数据搬移处理方法中的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例提供的数据搬移处理方法中的步骤。

此外,本申请实施例还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的数据搬移处理方法中的步骤。

本申请实施例提供了一种数据搬移处理方法、装置、电子设备和存储介质,可以确定待搬移数据;确定所述待搬移数据对应的压缩粒度;在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;对所述压缩数据进行存储处理。

在本申请中,可以在搬移数据时,采用比压缩粒度更大的目标压缩粒度进行压缩处理,从而,能够对更多的冗余数据进行压缩,进而将数据压缩的更小,减少对存储空间的占用,并且,由于将数据压缩的更小,实际写入数据量也会相应的减小,从而,减小固态硬盘的写放大。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的数据搬移处理方法的场景示意图;

图1b是本申请实施例提供的数据搬移处理方法的流程示意图;

图2是本申请实施例提供的粒度比特图的示意图;

图3是本申请实施例提供的地址比特图的示意图;

图4是本申请实施例提供的不同压缩粒度下的压缩比的示意图;

图5是本申请实施例提供的不同压缩粒度下的写放大的示意图;

图6是本申请实施例提供的数据搬移处理装置的结构示意图;

图7是本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一种数据搬移处理方法、装置、电子设备和存储介质。

其中,该数据搬移处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

在一些实施例中,该数据搬移处理装置还可以集成在多个电子设备中,比如,数据搬移处理装置可以集成在多个服务器中,由多个服务器来实现本申请的数据搬移处理方法。

可以理解的是,本实施例的数据搬移处理方法可以是在终端上执行的,也可以是在服务器上执行,还可以由终端和服务器共同执行的。以上举例不应理解为对本申请的限制。

服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。

云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。

作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。

请参考图1a,以服务器11执行该数据搬移处理方法为例。

如图1a所示,服务器11和终端12可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。服务器11用于为终端12运行的应用程序提供后台服务。

终端12可以安装和运行有支持数据查询的应用程序。该应用程序可以是购物类应用程序以及检索类应用程序等。示意性的,终端12是用户使用的终端,终端12中运行的应用程序内登录有用户账户。

终端12可以泛指多个终端中的一个,本实施例仅以终端12来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量,此时上述图像分类方法的实施环境还包括其他终端。本申请实施例对终端的数量和设备类型不加以限定。

在一些实施例中,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(ExtensibleMarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(InternetProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。

其中,服务器11可以用于:确定待搬移数据;确定所述待搬移数据对应的压缩粒度;在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;在当前已有的多个逻辑地址(Logical Block Address,LBA)中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;对所述压缩数据进行存储处理。

本实施例将从数据搬移处理装置的角度进行描述,该数据搬移处理装置具体可以集成在电子设备中,该电子设备可以是服务器或终端等设备。

如图1b所示,该数据搬移处理方法的具体流程可以如下:

步骤101、确定待搬移数据。

其中,待搬移数据是指需要从一个存储块中搬移到另一个存储块中的数据,待搬移数据是该一个存储块中的一个页中的一个数据块,一个页中至少存储了一个数据块。存储块,是SSD中的数据存储单元,一个SSD由至少一个闪存颗粒组成,一个闪存颗粒由多个面组成,一个面由多个存储块组成,一个存储块由多个页组成。数据块是有共性的数据组成的,数据块可以由至少一次写操作对应的数据组成,例如,数据块对应一次写操作的部分数据或全部数据,再如,数据块对应两次写操作的全部数据。SSD记录了逻辑地址与数据块之间的对应关系,以及,数据块与物理地址之间的对应关系,例如,逻辑地址001和逻辑地址002对应数据块1,数据块1存储的物理地址为物理地址1。

待搬移数据可以是未经过压缩处理的数据,例如,待搬移数据为操作系统写入SSD的数据;待搬移数据还可以是经过了压缩处理的数据,例如,待搬移数据为操作系统写入SSD的数据对应的压缩数据。

确定待搬移数据,是指从存储块存储的数据中找到待搬移数据。

可以指定待搬移数据,也可以在擦除存储块的时候得到待搬移数据。具体如下。

在一些实施例中,待搬移数据是由操作系统指定的,例如,操作系统指定对页j中的数据块y进行搬移。

在一些实施例中,在擦除存储块时,得到待搬移数据,这样,能够在有效去除SSD中的垃圾数据的同时减少数据占用的存储空间以及减少写放大,步骤101还可以包括以下步骤:

确定待擦除存储块;

根据所述待擦除存储块中的有效数据,得到所述待搬移数据,所述有效数据为地址映射表中的逻辑地址对应的数据,所述地址映射表记录了逻辑地址和物理地址之间的映射关系。

其中,待擦除存储块,是指待擦除的存储块。

在一些实施例中,待擦除存储块可以是不包括空闲页的存储块,确定待擦除存储块可以包括:根据不包括空闲页的存储块,得到待擦除存储块。例如,在向存储块写入数据时,若该存储块不包括空闲页,则将该存储块作为待擦除存储块,比如,现在需要向存储块t写入数据,但是,存储块t中不包括空闲页,于是,确定存储块t为待擦除存储块,这样,能够有效防止数据无法写入该存储块的情况。再如,在向存储块写入数据时,根据SSD中不包括空闲页的存储块,得到待擦除存储块,比如,将SSD中的部分不包括空闲页的存储块作为待擦除存储块,再比如,将SSD中的全部不包括空闲页的存储块作为待擦除存储块。再如,在接收到目标指令时,根据SSD中不包括空闲页的存储块,得到待擦除存储块,其中,目标指令是触发确定待搬移数据操作的指令,例如,一些支持主机控制的SSD,用户可以向主机输入目标指令,然后通过主机向SSD发送目标指令,这样的方式,可以实现主机控制SSD进行垃圾回收、数据搬移。再如,SSD对空闲存储块的数量进行检测,得到空闲块数量,在空闲块数量小于或等于预设数量时,根据不包括空闲页的存储块,得到待擦除存储块,其中,预设数量,为预先设置的数量,可以根据业务场景对预设数量进行设置,例如,业务场景为需要频繁访问SSD的场景,则可以将预设数量设置的大一些,反之,业务场景为不需要频繁访问SSD的场景,则可以将预设数量设置的小一些,通过SSD对空闲存储块的数量进行检测,并在空闲块数量小于或等于预设数量时进行垃圾回收,能够实现SSD的主动垃圾回收。再如,在目标时间到达时,根据不包括空闲页的存储块,得到待擦除存储块,其中,目标时间,为预先设置的一个时间,例如,目标时间是SSD空闲的时间,例如,SSD空闲的时间为每月20号的凌晨3点,于是,目标时间为每月20号的凌晨3点,在SSD空闲的时候进行垃圾回收、数据搬移,不会降低操作系统的数据访问速度。

在一些实施例中,待擦除存储块还可以是包括少量空闲页的存储块,确定待擦除存储块可以包括:根据包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页的存储块,得到待擦除存储块,其中,第一目标数量和第二目标数量,为预先设置的数量,例如,第一目标数量为1,第二目标数量为2。例如,在向存储块写入数据时,若该存储块包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页,则将该存储块作为待擦除存储块。再如,在向存储块写入数据时,根据SSD中包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页的存储块,得到待擦除存储块。再如,在接收到目标指令时,根据SSD中包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页的存储块,得到待擦除存储块。再如,SSD对空闲存储块的数量进行检测,得到空闲块数量,在空闲块数量小于或等于预设数量时,根据包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页的存储块,得到待擦除存储块。再如,在目标时间到达时,对空闲存储块的数量进行检测,得到空闲块数量,在空闲块数量小于或等于预设数量时,根据包括大于或等于第一目标数量,并且,小于或等于第二目标数量的空闲页的存储块,得到待擦除存储块。

其中,空闲页是指存储块中未存储数据的页。存储块中的页的状态,是指页状态。页状态包括有效状态、失效状态和被擦除状态。其中,有效状态是指页中存储的数据是有效数据;失效状态是指页中存储的数据是无效数据,也就是SSD中的垃圾数据;被擦除状态是指页中未存储数据,若页的页状态为被擦除状态,则该页是空闲页。SSD会对页的页状态进行记录,根据SSD对页状态的记录,可以确定存储块是否包括空闲页。

其中,空闲存储块是指还能够存储较多数据的存储块。在一些实施例中,空闲存储块可以是未存储数据的存储块,例如,若存储块r中的页的页状态均为空闲状态,则存储块r为空闲存储块。在一些实施例中,空闲存储块还可以是,空闲页的数量大于或等于第一指定数量,并且,空闲页的数量小于第二指定数量的存储块,其中,第一指定数量为预先设定的数量,第二指定数量为存储块所包括的页的总量,例如,存储块总共包括128个页,于是,第二指定数量为128,第一指定数量可以为110,第一指定数量越大,意味着存储块越空闲,能够存储的数据量越大,第一指定数量越小,意味着空闲存储块越不空闲,能够存储的数据量小。

其中,空闲块数量,是指空闲存储块的数量。在一些实施例中,空闲块数量可以精确表示,以适于一些需要精确确定空闲块数量的业务场景,例如,空闲存储块的数量为M,于是,空闲块数量为M。在一些实施例中,空闲块数量也可以粗略表示,以适于一些可以粗略确定空闲块数量的业务场景,例如,空闲存储块的数量为M,则确定M所处的数量范围,根据M所处的数量范围得到空闲块数量,比如,M为28,数量范围有[1,32]、[33,64]、[65,96]、[97,128],M所处的数量范围为[1,32],计算(1+31)×2/3后向下取整得21,于是,空闲块数量为21。

在一些实施例中,可以通过页状态得到空闲块数量。对空闲存储块的数量进行检测,得到空闲块数量,包括:根据页状态,确定各个存储块所包含的空闲页的数量;在存储块所包含的空闲页的数量大于或等于第一指定数量时,确定存储块为空闲存储块,否则,为非空闲存储块;根据空闲存储块的数量,得到空闲块数量。

在一些实施例中,可以通过预先生成的块标记表快速得到空闲块数量。对空闲存储块的数量进行检测,得到空闲块数量,包括:获取块标记表,块标记表记录了各个存储块的块状态,块状态包括空闲状态和非空闲状态,空闲存储块的块状态为空闲状态,非空闲存储块的块状态为非空闲状态;根据块标记表,得到块状态为空闲状态的存储块的数量;将块状态为空闲状态的存储块的数量作为空闲块数量。块标记表可以根据存储块的页状态来确定,如上实施例。

逻辑地址是指操作系统访问SSD用到的地址,例如,操作系统向SSD写入数据a,并且,数据a的逻辑地址为101;物理地址是指数据在SSD中实际存储的地址,例如,物理地址为11011100101011101100,通过物理地址可以确定数据存储的页以及页内地址。在操作系统读取数据a时,操作系统发送携带逻辑地址101的读命令到SSD,SSD根据该读命令和地址映射表的记录,确定物理地址11011100101011101100所在的页,然后从该页中读取到数据a,再将数据a返回给操作系统。

地址映射表可以记录逻辑地址、数据块与物理地址之间的映射关系,例如,数据块1为压缩数据1,压缩数据1是针对逻辑地址101和逻辑地址102中的数据进行压缩得到的,压缩数据1存储的物理地址是11011100101011101101,于是,地址映射表为页20记录的映射关系包括:[逻辑地址101,逻辑地址102]->压缩数据1->物理地址11011100101011101101。一个页中可能存储多个数据块,假设压缩数据1是存储在页20中,除了压缩数据1,压缩数据2也存储在页20中,压缩数据2对应的逻辑地址为:103和104,于是,压缩数据1和压缩数据2的页内地址不同,地址映射表为页20记录的映射关系还包括:[逻辑地址103,逻辑地址104]->压缩数据2->物理地址11011100101011100111。

有效数据是页状态为有效状态的页中存储的数据,地址映射表会记录有效数据对应的逻辑地址和物理地址之间的映射关系,有效状态的页中会存储至少一个数据块(例如,数据块为压缩数据),该至少一个数据块组成了页状态为有效状态的页的有效数据,失效状态的页中存储的数据是无效数据,无效数据只是存储在页中,但是,没有逻辑地址会指向无效数据,操作系统不会访问无效数据,地址映射表中也不会记录无效数据存储的物理地址。

可以通过页状态得到待搬移数据,在一些实施例中,根据所述待擦除存储块中的有效数据,得到所述待搬移数据,可以包括:找到待擦除存储块中,页状态为有效状态的页,作为有效页;将有效页中的一个数据块作为待搬移数据,例如,有效页中有3个数据块,例如,3个压缩数据,于是,3个压缩数据中的每个压缩数据都可以作为一个待搬移数据,因此,可以从3个压缩数据中选择一个作为当前的待搬移数据。还可以通过地址映射表找到待搬移数据,在一些实施例中,根据所述待擦除存储块中的有效数据,得到所述待搬移数据,可以包括:对待擦除存储块中的每个页,查询地址映射表,在地址映射表有该页对应的逻辑地址和物理地址之间的映射关系时,将该页中的一个数据块作为待搬移数据。

步骤102、确定所述待搬移数据对应的压缩粒度。

其中,压缩粒度是指压缩处理针对的数据量的大小。压缩粒度可以通过压缩处理针对的逻辑地址的数量来表示,例如,压缩粒度为4,意味着压缩处理是针对4个逻辑地址对应的数据进行压缩处理,若一个逻辑地址对应的数据量的大小是512Byte,则在压缩粒度为4时,压缩处理针对的数据量的大小为2048Byte。压缩粒度也可以直接通过数据量来表示,例如,压缩粒度为2048,意味着压缩处理是针对2048Byte的数据量进行处理,相应的,对应4个逻辑地址的数据。

确定待搬移数据对应的压缩粒度是指得到待搬移数据对应的压缩粒度。

可以通过压缩粒度表的记录快速确定待搬移数据对应的压缩粒度。在一些实施例中,确定所述待搬移数据对应的压缩粒度,包括:根据所述待搬移数据对应的逻辑地址,查询压缩粒度表,得到所述待搬移数据对应的压缩粒度。

其中,压缩粒度表,记录了逻辑地址和压缩粒度之间的对应关系。

在一些实施例中,压缩粒度表以粒度比特图的形式进行表示,于是,根据所述待搬移数据对应的逻辑地址,查询压缩粒度表,得到所述待搬移数据对应的压缩粒度,包括:根据所述待搬移数据对应的逻辑地址,查询粒度比特图,得到所述待搬移数据对应的压缩粒度。假设待搬移数据对应的逻辑地址为:100到103,如图2所示,粒度比特图中,逻辑地址100到103记录的是1000,于是,确定待搬移数据对应的压缩粒度为4;假设待搬移数据对应的逻辑地址为:104到105,如图2所示,粒度比特图中,逻辑地址104到105记录的是10,于是,确定待搬移数据对应的压缩粒度为2;假设待搬移数据对应的逻辑地址为:106,如图2所示,粒度比特图中,逻辑地址106记录的是1,于是,确定待搬移数据对应的压缩粒度为1;假设待搬移数据对应的逻辑地址为:107到108,如图2所示,粒度比特图中,逻辑地址107到108记录的是00,于是,确定待搬移数据对应的压缩粒度为0,意味着待搬移数据是没有经过压缩处理的数据;假设待搬移数据对应的逻辑地址为:109,如图2所示,粒度比特图中,逻辑地址109记录的是0,于是,确定待搬移数据对应的压缩粒度为0。

在一些实施例中,压缩粒度表以粒度表的形式进行表示,于是,根据所述待搬移数据对应的逻辑地址,查询压缩粒度表,得到所述待搬移数据对应的压缩粒度,包括:根据所述待搬移数据对应的逻辑地址,查询粒度表,得到所述待搬移数据对应的压缩粒度。粒度表可如表1所示。

表1

步骤103、在所述压缩粒度满足预设条件时,确定目标压缩粒度。

其中,预设条件,为预先设置的条件,设置预设条件的目的是为了确认是否需要采用更大的压缩粒度进行压缩处理。

其中,目标压缩粒度,为对待搬移数据进行处理的粒度,目标压缩粒度大于待搬移数据对应的压缩粒度。

在所述压缩粒度满足预设条件时,确定目标压缩粒度,是指在所述压缩粒度满足预设条件时,得到目标压缩粒度。

压缩粒度越大,压缩处理针对的数据量越大,从而,能够从更大的数据量中发现更多的冗余数据进行压缩,因此,设置更大的压缩粒度,能够将数据压缩的更小,减少对SSD存储空间的占用,减小固态硬盘的写放大。

以下将不采用更大的压缩粒度进行压缩处理和采用更大的压缩粒度进行压缩处理进行对比,以说明采用更大的压缩粒度能够减少对SSD存储空间的占用,减小固态硬盘的写放大。

首先,若不采用更大的压缩粒度进行压缩处理,例如,操作系统向SSD的存储块t中写入大小为4KB的数据M,若该存储块t中没有多余的页,则需要先将存储块t中的有效数据搬移到另一个存储块u中,若有效数据为页1、页4、页5以及页6中的数据,那么,需要将页1、页4、页5以及页6中的数据搬移到存储块u中,然后擦除存储块t,最后,将数据M写入存储块t中的一个页中,由此可见,实际写了5个页,即实际写入数据量为5×4KB=20KB,操作系统写入数据量为4KB,于是,写放大=5,对存储空间的占用是20KB。

然后,若采用了更大的压缩粒度进行压缩处理,例如,操作系统向SSD的存储块t中写入大小为4KB的数据M,若该存储块t中没有多余的页,则需要先将存储块t中的有效数据搬移到另一个存储块u中,若有效数据为页1、页4、页5以及页6中的数据,那么,采用更大的压缩粒度进行压缩处理,将页1和页4中的数据压缩为4KB大小的压缩数据i,将页5以及页6中的数据也压缩为4KB大小的压缩数据j,将压缩数据i和压缩数据j搬移到存储块u中的两个页,然后擦除存储块t,最后,将数据M写入存储块t中,由此可见,实际写了3个页,即实际写入数据量为3×4KB=12KB,操作系统写入数据量为4KB,于是,写放大=3,对存储空间的占用是12KB。

可见,在搬移数据时,采用更大的压缩粒度进行压缩处理,确实能够减少对SSD存储空间的占用,减小固态硬盘的写放大。

预设条件,可以根据压缩引擎的处理能力进行设置。

为了不在压缩引擎繁忙的时候继续增加压缩引擎的处理压力,在压缩引擎对应的压缩数据量小于或等于预设压缩数据量才进行更大粒度的压缩处理,而在压缩引擎对应的压缩数据量大于预设压缩数据量时,直接对待搬移数据进行搬移。

在一些实施例中,待搬移数据对应一次写操作,在所述压缩粒度满足预设条件时,确定目标压缩粒度,包括:在压缩引擎对应的压缩数据量小于或等于预设压缩数据量,并且,待搬移数据对应的压缩粒度小于该一次写操作对应的地址总量时,将地址总量作为目标压缩粒度。数据搬移处理方法,还包括:在压缩引擎对应的压缩数据量大于预设压缩数据量时,对待搬移数据进行存储处理。

其中,预设压缩数据量,为预先设置的数据量,防止在压缩引擎繁忙的时候继续增加压缩引擎的处理压力。

其中,压缩引擎对应的压缩数据量,为压缩引擎当前正在压缩处理的数据量以及压缩队列中等待被压缩处理的数据量之和。

步骤104、在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址。

其中,目标逻辑地址,是指压缩处理针对的逻辑地址,目标逻辑地址中包括待搬移数据对应的逻辑地址,从而,压缩处理将针对更大的数据量进行。

其中,当前已有的多个逻辑地址,是指地址映射表中记录的逻辑地址,当前已有的多个逻辑地址,也会记录在地址比特图中,其中,地址比特图,具体用于对每次写操作对应的逻辑地址进行记录。一次写操作对应至少一个逻辑地址,并且,一次写操作对应的至少一个逻辑地址连续,将一次写操作对应的至少一个逻辑地址记录到地址比特图中,便于后续按需查找。

其中,一次写操作是指操作系统的一次写入操作,在操作系统写入的数据量小于页大小时,操作系统的此次写入对应一次写操作,在操作系统写入的数据量大于页大小时,操作系统的此次写入对应多次写操作。假设一个页的大小为4KB,一个逻辑地址对应的数据量为512B,例如,操作系统向SSD写入的数据量为1024B,小于4KB,于是,操作系统的此次写入对应一次写操作,该一次写操作对应2个逻辑地址,即该一次写操作对应的地址总量为,再如,操作系统向SSD写入的数据量为6KB,大于4KB,于是,操作系统的此次写入对应2次写操作,第一次写操作对应8个逻辑地址,即第一次写操作对应的地址总量为8,第二次写操作对应4个逻辑地址,即第二次写操作对应的地址总量为4。

在一些实施例中,地址比特图,将每次写操作对应的初始逻辑地址对应的值置为第一值,例如,第一值为1,其余逻辑地址对应的值置为第二值,例如,第二值为0,其中,初始逻辑地址,为写操作对应的至少一个逻辑地址中,逻辑地址的值最小的逻辑地址。

如图3所示,例如,某次写操作对应的4个逻辑地址为:逻辑地址0到逻辑地址3,于是,将初始逻辑地址0对应的值置为1,其余逻辑地址:逻辑地址1到3对应的值置为0,再如,某次写操作对应的8个逻辑地址为:逻辑地址4到逻辑地址11,于是,将初始逻辑地址4对应的值置为1,其余逻辑地址:逻辑地址5到11对应的值置为0,再如,某次写操作对应的1个逻辑地址为:逻辑地址14,于是,将初始逻辑地址14对应的值置为1。

在一些实施例中,地址比特图,将每次写操作对应的初始逻辑地址对应的值置为第一值,结束逻辑地址对应的值置为第三值,例如,第三值为2,其余逻辑地址对应的值置为第二值,并且,若写操作只对应一个逻辑地址,则该逻辑地址在地址比特图中对应的值为第四值,例如,第四值为3,其中,结束逻辑地址,为写操作对应的至少一个逻辑地址中,逻辑地址的值最大的逻辑地址。

在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,是指,在当前已有的多个逻辑地址中,得到目标压缩粒度数量的逻辑地址,并将该目标压缩粒度数量的逻辑地址作为目标逻辑地址。例如,目标压缩粒度为4,于是,在当前已有的多个逻辑地址中,得到4个逻辑地址,并将该4个逻辑地址作为目标逻辑地址。

可以根据地址比特图得到目标逻辑地址。在一些实施例中,在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,包括:根据地址比特图记录的多个逻辑地址,得到目标压缩粒度数量的逻辑地址,作为目标逻辑地址。

例如,目标压缩粒度为4,待搬移数据对应2个逻辑地址,于是,从地址比特图记录的多个逻辑地址中,找到2个和待搬移数据对应的2个逻辑地址相邻的逻辑地址,将待搬移数据对应的2个逻辑地址,以及,地址比特图中的2个和待搬移数据对应的2个逻辑地址相邻的逻辑地址,作为目标逻辑地址,例如,待搬移数据对应的2个逻辑地址为15和16,地址比特图中,与待搬移数据对应的2个逻辑地址相邻的逻辑地址为17和18,于是,目标逻辑地址为15到18。

步骤105、对待压缩数据进行压缩处理,得到压缩数据。

待压缩数据为存储块中目标逻辑地址对应的数据,待压缩数据是已存储在存储块中的数据。

压缩处理是指在不丢失信息的前提下,缩减数据量,从而减少存储空间的处理。压缩处理可以是有损压缩处理,例如,压缩处理为采用低比特截断的灰度级量化压缩处理;压缩处理还可以是无损压缩处理,例如,压缩处理为霍夫曼编码处理,Gzip压缩处理。

可以通过SSD内部的压缩处理单元对待压缩数据进行压缩处理,得到压缩数据。其中,压缩处理单元为能够进行压缩处理的单元,在一些实施例中,压缩处理单元为压缩引擎,例如,通过Gzip压缩/解压缩算法进行压缩/解压缩处理的压缩引擎。

如图4所示,展示了数据库的文件在不同压缩粒度下的压缩比。可以看到,当采用4KB的压缩粒度时,压缩比为1.41;当采用16KB的压缩粒度时,压缩比为1.81;若将压缩粒度继续扩大至32KB,则压缩比可达2.12,相对于4KB的压缩粒度,压缩比提升了一半左右。由此可见,增大压缩粒度,能够增大压缩比,能够将数据压缩的更小,减少对存储空间的占用,减小数据写入量。并且,如果采用了更大的压缩比,将16KB的数据压缩至8KB以内,那么闪存颗粒就可以采用snapread功能进行数据读取,从而降低读延时。将如图5所示,展示了数据库的文件在不同压缩粒度下的写放大。可以看到压缩粒度越大,写放大越小,因此,增大压缩粒度,可以减小写放大。其中,压缩比,是指压缩前的数据量与压缩后的数据量的比值,例如,压缩前的数据量为4KB,压缩后的数据量为3KB,于是,压缩比为4/3。

步骤106、对所述压缩数据进行存储处理。

对压缩数据进行存储处理,是指对压缩数据进行和存储有关的处理。

在一些实施例中,对压缩数据进行存储处理可以包括存处理和更新处理。例如,存处理为将压缩数据存入一个新的物理地址,例如,该新的物理地址对应另一个存储块中的空闲页,更新处理为根据新的物理地址更新地址映射表。

数据搬移处理方法,还包括:

根据所述目标压缩粒度和所述目标逻辑地址,更新所述压缩粒度表。

其中,根据所述目标压缩粒度和所述目标逻辑地址,更新所述压缩粒度表,是指根据目标压缩粒度和目标逻辑地址,对压缩粒度表进行更新。

在一些实施例中,根据目标压缩粒度和目标逻辑地址更新压缩粒度表,包括:在粒度比特图中找到目标逻辑地址;将目标逻辑地址中的初始逻辑地址对应的值设置为第一值,将目标逻辑地址中的其余逻辑地址对应的值设置为第二值。

例如,待搬移数据对应的逻辑地址为102,压缩粒度为1,目标压缩粒度为4,待搬移数据对应的写操作的逻辑地址有101、102、103以及104,即目标逻辑地址为:101、102、103以及104,于是,更新前,粒度比特图中,逻辑地址101、102、103以及104对应的值均为1,更新后,粒度比特图中,初始逻辑地址101对应的值为1,其余逻辑地址102、103以及104对应的值为0。

由上可知,在对压缩数据进行存储处理之后,还根据目标压缩粒度和目标逻辑地址,更新了压缩粒度表,从而保证了压缩粒度表的准确性,进而保证了后续搬移数据时,确定的待搬移数据对应的压缩粒度的准确性。

在本申请中,可以确定待搬移数据;确定所述待搬移数据对应的压缩粒度;在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;对所述压缩数据进行存储处理。可以在搬移数据时,采用比压缩粒度更大的目标压缩粒度进行压缩处理,从而,能够对更多的冗余数据进行压缩,进而将数据压缩的更小,减少对存储空间的占用,并且,由于将数据压缩的更小,实际写入数据量也会相应的减小,从而,减小固态硬盘的写放大。

在一些实施例中,在所述压缩粒度满足预设条件时,确定目标压缩粒度,包括:当存在所述待搬移数据对应的场景压缩粒度,并且,所述压缩粒度小于所述场景压缩粒度时,将所述场景压缩粒度作为目标压缩粒度,相应的,提供一种数据搬移处理方法,包括:

确定待搬移数据;

确定所述待搬移数据对应的压缩粒度;

当存在所述待搬移数据对应的场景压缩粒度,并且,所述压缩粒度小于所述场景压缩粒度时,将所述场景压缩粒度作为目标压缩粒度;

在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;

对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;

对所述压缩数据进行存储处理。

其中,场景压缩粒度,是为业务场景设置的压缩粒度,若业务场景存在与之对应的场景压缩粒度,则针对该业务场景的数据,在搬移时,都采用场景压缩粒度进行压缩处理。

可以根据业务场景的数据访问特点确定是否为该业务场景设置对应的场景压缩粒度。

在一些实施例中,若业务场景的数据访问特点为业务场景的数据访问量固定为大块数据访问,则为业务场景设置对应的场景压缩粒度。其中,为业务场景设置对应的场景压缩粒度,包括:将业务场景的数据访问量作为场景压缩粒度。

其中,数据访问量,是指操作系统每次读写SSD对应的数据量。

其中,大块数据访问,是指数据访问量较大,可以预先设置一个大块数据量,若业务场景的数据访问量固定,则将业务场景的数据访问量与大块数据量进行比对,在业务场景的数据访问量大于大块数据量时,确定业务场景的数据访问特点为业务场景的数据访问量固定为大块数据访问。

在一些实施例中,业务场景的数据访问量固定为大块数据访问,包括:业务场景的数据访问量完全固定为大块数据访问。

例如,MySQL数据库场景,数据访问量均为16KB,若一个逻辑地址对应的数据量是4KB,存储块中一个页大小为16KB,于是,针对MySQL数据库场景,可以设置场景压缩粒度为4。

在一些实施例中,业务场景的数据访问量固定为大块数据访问,包括:业务场景的数据访问量基本固定为大块数据访问。

若业务场景在第一时间到第二时间的所有数据访问量中,超过预设比例的数据访问量均大于大块数据量,则确定业务场景的数据访问量基本固定为大块数据访问。

其中,第一时间,为预先设置的一个时间起点,例如,第一时间为1月1日。第二时间,为预先设置的一个时间终点,例如,第一时间为12月31日。预设比例,为预先设置的比例,例如,预设比例为90%。

例如,某一业务场景在1月1日到12月31日,超过90%的数据访问量均为16KB,10%的数据访问量为4KB,于是,针对该业务场景,场景压缩粒度也可以设置为4。于是,若待搬移数据大小为4KB,通过压缩粒度表确定待搬移数据对应的压缩粒度为0,压缩粒度0小于场景压缩粒度4,于是,确定目标压缩粒度为4,根据地址比特图确定待搬移数据对应一次写操作的全部逻辑地址,假设待搬移数据对应的逻辑地址为101,通过地址比特图确定逻辑地址102、103以及104分别对应一次写操作,于是,将4次写操作对应的全部逻辑地址:逻辑地址101、102、103以及104,作为目标逻辑地址。

针对业务场景的数据访问量完全固定为大块数据访问,压缩粒度小于场景压缩粒度,包括:情况一、压缩粒度为0;情况二、压缩粒度大于或等于预设压缩粒度,并且,小于场景压缩粒度。

对于情况一、例如,待搬移数据为MySQL数据库场景对应的数据,大小为16KB,查找压缩粒度表,确定待搬移数据对应的压缩粒度为0,压缩粒度0小于场景压缩粒度4,于是,确定目标压缩粒度为4,由于待搬移数据大小为16KB,并且,根据待搬移数据对应的逻辑地址查找地址比特图,发现待搬移数据对应一次写操作的4个逻辑地址,于是,确定目标逻辑地址为待搬移数据对应的逻辑地址,对待搬移数据进行压缩处理,得到压缩数据,对压缩数据进行存储处理。

对于情况二、例如,待搬移数据为MySQL数据库场景对应的数据,大小为3KB,并且,通过压缩粒度表发现,待搬移数据对应的压缩粒度为1,压缩粒度1小于场景压缩粒度4,于是,确定目标压缩粒度为4,根据待搬移数据对应的逻辑地址102查找地址比特图,得到待搬移数据对应的写操作的逻辑地址,将待搬移数据对应的写操作的逻辑地址作为目标逻辑地址,假设待搬移数据对应的写操作的逻辑地址为101、102、103以及104,于是,目标逻辑地址为101、102、103以及104,对待压缩数据进行压缩处理,得到压缩数据,对压缩数据进行存储处理,其中,对待压缩数据进行压缩处理,得到压缩数据,包括:根据地址映射表查找逻辑地址101、102、103以及104对应的数据的物理地址,通过查找到的物理地址读取逻辑地址101、102、103以及104对应的数据,然后分别对逻辑地址101、102、103以及104对应的数据进行解压处理,得到逻辑地址101、102、103以及104对应的数据的解压数据,将逻辑地址101、102、103以及104对应的数据的解压数据进行拼接,得到拼接数据,最后,对拼接数据进行压缩处理,得到压缩数据。

由上可知,在业务场景的数据访问特点为业务场景的数据访问量固定为大块数据访问,则为业务场景设置对应的场景压缩粒度,从而,在搬移数据时,直接将场景压缩粒度作为目标压缩粒度,不用再去确定一个比待搬移数据对应的压缩粒度更大的压缩粒度作为目标压缩粒度,提高了目标压缩粒度的确定效率,从而在一定程度上提高了数据搬移效率,并且,由于业务场景的数据访问量固定为大块数据访问,直接按照场景压缩粒度进行压缩处理,还能将每次写操作对应的数据直接压缩在一块,也便于后续读数据。

操作系统读数据时,通常读的是一次写操作对应的数据,因此,可以不看业务场景,在待搬移数据对应的压缩粒度小于一次写操作对应的地址总量时,确定目标压缩粒度为该地址总量,从而将一次写操作对应的数据全部压缩在一块,不仅能够减少对存储空间的占用,减小写放大,还能提高后续数据读取速度。待搬移数据对应一次写操作,在所述压缩粒度满足预设条件时,确定目标压缩粒度,包括:在所述压缩粒度小于所述一次写操作对应的地址总量时,将所述地址总量作为目标压缩粒度,相应的,提供一种数据搬移处理方法,包括:

确定待搬移数据;

确定所述待搬移数据对应的压缩粒度;

在所述压缩粒度小于所述一次写操作对应的地址总量时,将所述地址总量作为目标压缩粒度,所述地址总量为所述一次写操作对应的逻辑地址的总数量;

在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;

对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;

对所述压缩数据进行存储处理。

其中,地址总量是指一次写操作对应的逻辑地址的总数量。

在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,包括:根据地址比特图,在当前已有的多个逻辑地址中,将待搬移数据对应的一次写操作的逻辑地址作为目标逻辑地址。

待搬移数据对应一次写操作,包括:情况1、待搬移数据对应该一次写操作的部分数据,以及,情况2、待搬移数据对应该一次写操作的全部数据。对于情况1、又包括:情况11、待搬移数据是该一次写操作的部分数据,以及,情况12、待搬移数据是该一次写操作的部分数据的压缩数据;对于情况2、又包括:情况21、待搬移数据是该一次写操作的全部数据,以及,情况22、待搬移数据是该一次写操作的全部数据的压缩数据。

对情况11、例如,待搬移数据是逻辑地址101和102对应的数据,根据压缩粒度表,确定待搬移数据对应的压缩粒度为0,根据地址比特图,确定待搬移数据对应的一次写操作的4个逻辑地址为:101、102、103和104,待搬移数据对应的压缩粒度0小于该一次写操作对应的地址总量4,于是,确定目标压缩粒度为4,并且,将4个逻辑地址101、102、103和104作为目标逻辑地址,对待压缩数据进行压缩处理,得到压缩数据,对压缩数据进行存储处理。

对情况12、例如,待搬移数据是逻辑地址102和103对应的数据的压缩数据,根据压缩粒度表,确定待搬移数据对应的压缩粒度为2,根据地址比特图,确定待搬移数据对应的一次写操作的4个逻辑地址为:101、102、103和104,待搬移数据对应的压缩粒度2小于该一次写操作对应的地址总量4,于是,确定目标压缩粒度为4,并且,将4个逻辑地址101、102、103和104作为目标逻辑地址,对待压缩数据进行压缩处理,得到压缩数据,对压缩数据进行存储处理。

对情况21、例如,待搬移数据是逻辑地址:101、102、103和104对应的数据,根据压缩粒度表,确定待搬移数据对应的压缩粒度为0,根据地址比特图,确定待搬移数据对应的一次写操作的4个逻辑地址为:101、102、103和104,待搬移数据对应的压缩粒度0小于该一次写操作对应的地址总量4,于是,确定目标压缩粒度为4,并且,将4个逻辑地址101、102、103和104作为目标逻辑地址,将待搬移数据确定为待压缩数据,对待压缩数据进行压缩处理,得到压缩数据,对压缩数据进行存储处理。

对情况22、例如,待搬移数据是逻辑地址:101、102、103和104对应的数据的压缩数据,根据压缩粒度表,确定待搬移数据对应的压缩粒度为4,根据地址比特图,确定待搬移数据对应的一次写操作的4个逻辑地址为:101、102、103和104,待搬移数据对应的压缩粒度4等于该一次写操作对应的地址总量4,于是,对待搬移数据进行存储处理。

在一些实施例中,在待搬移数据是经过了压缩处理的压缩数据时,需要先解压,然后再按照目标压缩粒度进行压缩处理,于是,需要对待搬移数据是否经过了压缩处理进行判断。对待压缩数据进行压缩处理,得到压缩数据,包括:

在所述压缩粒度大于或等于预设压缩粒度时,对所述待搬移数据进行解压处理,得到所述待搬移数据对应的解压数据;

获取其他待搬移数据;

在所述其他待搬移数据对应的压缩粒度大于或等于所述预设压缩粒度时,对所述其他待搬移数据进行解压处理,得到所述其他待搬移数据对应的解压数据;

将所述待搬移数据对应的解压数据和所述其他待搬移数据对应的解压数据进行拼接,得到拼接数据;

对所述拼接数据进行压缩处理,得到压缩数据。

其中,预设压缩粒度,为预先设置的压缩粒度,例如,预设压缩粒度设置为第一值:1。设置预设压缩粒度的目的是为了确定数据是否经过了压缩处理,以便在数据经过了压缩处理时,先解压数据。具体的,在待搬移数据对应的压缩粒度大于或等于预设压缩粒度时,确定待搬移数据为经过了压缩处理的数据,于是,对待搬移数据进行解压处理,得到待搬移数据对应的解压数据。

其中,其他待搬移数据为其他逻辑地址对应的待搬移数据,其他逻辑地址为目标逻辑地址中除去待搬移数据对应的逻辑地址。

获取其他待搬移数据,是指得到其他待搬移数据。在一些实施例中,获取其他待搬移数据,包括:根据其他逻辑地址查询地址映射表,得到其他待搬移数据对应的物理地址,根据其他待搬移数据对应的物理地址得到其他待搬移数据。

拼接数据,为待搬移数据对应的解压数据和其他待搬移数据对应的解压数据的拼接结果。

将待搬移数据对应的解压数据和其他待搬移数据对应的解压数据进行拼接,得到拼接数据,包括:按照地址比特图记录的,待搬移数据对应的写操作的各个逻辑地址的顺序,将待搬移数据对应的解压数据和其他待搬移数据对应的解压数据进行拼接。

例如,待搬移数据是逻辑地址102和103对应的数据的压缩数据,根据压缩粒度表,确定待搬移数据对应的压缩粒度为2,压缩粒度2大于预设压缩粒度1,于是,根据地址映射表,确定待搬移数据的物理地址为物理地址1,从物理地址1中得到待搬移数据,对待搬移数据进行解压处理,得到待搬移数据对应的解压数据,即得到逻辑地址102和103对应的数据,根据地址比特图,确定待搬移数据对应的一次写操作的4个逻辑地址为:101、102、103和104,待搬移数据对应的压缩粒度2小于该一次写操作对应的地址总量4,于是,确定目标压缩粒度为4,并且,将4个逻辑地址101、102、103和104作为目标逻辑地址,由于待搬移数据对应的逻辑地址是102和103,于是,其他逻辑地址为101和104,根据压缩粒度表,确定其他逻辑地址101对应的压缩粒度为1,确定其他逻辑地址104对应的压缩粒度为1,于是,根据地址映射表,确定其他逻辑地址101对应的其他待搬移数据1的物理地址为物理地址2,确定其他逻辑地址103对应的其他待搬移数据2的物理地址为物理地址3,从物理地址2中得到其他待搬移数据1,从物理地址3中得到其他待搬移数据2,分别对其他待搬移数据1和其他待搬移数据2进行解压处理,得到其他待搬移数据1对应的解压数据,即逻辑地址101对应的数据,得到其他待搬移数据2对应的解压数据,即逻辑地址104对应的数据,根据4个逻辑地址101、102、103和104的顺序,将逻辑地址101对应的数据、待搬移数据对应的解压数据以及逻辑地址104对应的数据进行拼接,得到拼接数据,对拼接数据进行压缩处理,得到压缩数据。

当业务场景的数据访问量不固定时,则不为该业务场景设置场景压缩粒度,此时,还可以根据数据类型来确定目标压缩粒度,其中,数据类型包括冷数据类型和热数据类型,从而,对冷数据进行更大粒度的压缩存储,减少冷数据对存储空间的占用,而对热数据,由于其需要经常被访问,则直接搬移。待搬移数据对应一次写操作,在所述压缩粒度满足预设条件时,确定目标压缩粒度,包括:在不存在待搬移数据对应的场景压缩粒度时,确定待搬移数据的数据类型;若待搬移数据的数据类型是冷数据类型,并且,待搬移数据对应的压缩粒度小于该一次写操作对应的地址总量,则将该地址总量作为目标压缩粒度,提供一种数据搬移处理方法,包括:

确定待搬移数据;

确定待搬移数据对应的压缩粒度;

在不存在待搬移数据对应的场景压缩粒度时,确定待搬移数据的数据类型;若待搬移数据的数据类型是冷数据类型,并且,待搬移数据对应的压缩粒度小于该一次写操作对应的地址总量,则将该地址总量作为目标压缩粒度,地址总量为该一次写操作对应的逻辑地址的总数量;

在当前已有的多个逻辑地址中,确定目标压缩粒度数量的逻辑地址,作为目标逻辑地址,目标逻辑地址中包括所述待搬移数据对应的逻辑地址;

对待压缩数据进行压缩处理,得到压缩数据,待压缩数据为存储块中目标逻辑地址对应的数据;

对压缩数据进行存储处理;

若待搬移数据的数据类型是热数据类型,则对待搬移数据进行存储处理。

例如,直接将热数据类型的待搬移数据存储到另一个存储块中的一个空闲页中。

其中,冷数据类型是指数据不会被经常访问的类型。热数据类型是指数据会被经常访问的类型。

为了更好地实施以上方法,本申请实施例还提供一种数据搬移处理装置,该数据搬移处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

比如,在本实施例中,将以数据搬移处理装置具体集成在服务器为例,对本申请实施例的方法进行详细说明。

例如,如图6所示,该数据搬移处理装置可以包括第一确定单元601、第二确定单元602、粒度确定单元603、地址确定单元604、压缩处理单元605以及存储处理单元606,如下:

(一)第一确定单元601;

第一确定单元601,用于确定待搬移数据。

在一些实施例中,所述第一确定单元601,具体用于:

确定待擦除存储块;

根据所述待擦除存储块中的有效数据,得到所述待搬移数据,所述有效数据为地址映射表中的逻辑地址对应的数据,所述地址映射表记录了逻辑地址和物理地址之间的映射关系。

(二)第二确定单元602;

第二确定单元602,用于确定所述待搬移数据对应的压缩粒度。

在一些实施例中,所述第二确定单元602,具体用于:

根据所述待搬移数据对应的逻辑地址,查询压缩粒度表,得到所述待搬移数据对应的压缩粒度;

数据搬移处理装置,还包括:更新单元;

所述更新单元,用于根据所述目标压缩粒度和所述目标逻辑地址,更新所述压缩粒度表。

(三)粒度确定单元603;

粒度确定单元603,用于在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度。

在一些实施例中,所述待搬移数据对应一次写操作,所述粒度确定单元603,具体用于:

在所述压缩粒度小于所述一次写操作对应的地址总量时,将所述地址总量作为目标压缩粒度,所述地址总量为逻辑地址的总数量。

在一些实施例中,所述粒度确定单元603,具体用于:

当存在所述待搬移数据对应的场景压缩粒度,并且,所述压缩粒度小于所述场景压缩粒度时,将所述场景压缩粒度作为目标压缩粒度。

(四)地址确定单元604;

地址确定单元604,用于在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址。

(五)压缩处理单元605;

压缩处理单元605,用于对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据。

在一些实施例中,所述目标逻辑地址为所述一次写操作对应的全部逻辑地址,所述压缩处理单元605,具体用于:

在所述压缩粒度大于或等于预设压缩粒度时,对所述待搬移数据进行解压处理,得到所述待搬移数据对应的解压数据;

获取其他待搬移数据,所述其他待搬移数据为其他逻辑地址对应的待搬移数据,所述其他逻辑地址为所述目标逻辑地址中除去所述待搬移数据对应的逻辑地址;

在所述其他待搬移数据对应的压缩粒度大于或等于所述预设压缩粒度时,对所述其他待搬移数据进行解压处理,得到所述其他待搬移数据对应的解压数据;

将所述待搬移数据对应的解压数据和所述其他待搬移数据对应的解压数据进行拼接,得到拼接数据;

对所述拼接数据进行压缩处理,得到压缩数据。

(六)存储处理单元606;

存储处理单元606,用于对所述压缩数据进行存储处理。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由上可知,本实施例的数据搬移处理装置可以由第一确定单元601确定待搬移数据;由第二确定单元602确定所述待搬移数据对应的压缩粒度;由粒度确定单元603在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;由地址确定单元604在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;由压缩处理单元605对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;由存储处理单元606对所述压缩数据进行存储处理。

由此,本申请实施例可以在搬移数据时,采用比压缩粒度更大的目标压缩粒度进行压缩处理,从而,能够对更多的冗余数据进行压缩,进而将数据压缩的更小,减少对存储空间的占用,并且,由于将数据压缩的更小,实际写入数据量也会相应的减小,从而,减小固态硬盘的写放大。

本申请实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑,等等;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,等等。

在一些实施例中,该数据搬移处理装置还可以集成在多个电子设备中,比如,数据搬移处理装置可以集成在多个服务器中,由多个服务器来实现本申请的数据搬移处理方法。

在本实施例中,将以本实施例的电子设备为例进行详细描述,比如,如图7所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:

该电子设备可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源703、输入模块704以及通信模块705等部件。其中,存储器702包括SSD。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器701是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行电子设备的各种功能和处理数据。在一些实施例中,处理器701可包括一个或多个处理核心;在一些实施例中,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。

存储器702可用于存储软件程序以及模块,存储器702通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。

电子设备还包括给各个部件供电的电源703,在一些实施例中,电源703可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源703还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该电子设备还可包括输入模块704,该输入模块704可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

该电子设备还可包括通信模块705,在一些实施例中通信模块705可以包括无线模块,电子设备可以通过该通信模块705的无线模块进行短距离无线传输,从而为用户提供了无线的宽带互联网访问。比如,该通信模块705可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。

尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:

确定待搬移数据;确定所述待搬移数据对应的压缩粒度;在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;对所述压缩数据进行存储处理。

在一些实施例中,还提出一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现上述任一种数据搬移处理方法中的步骤。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

由上可知,本申请实施例可以在搬移数据时,采用比压缩粒度更大的目标压缩粒度进行压缩处理,从而,能够对更多的冗余数据进行压缩,进而将数据压缩的更小,减少对存储空间的占用,并且,由于将数据压缩的更小,实际写入数据量也会相应的减小,从而,减小固态硬盘的写放大。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种数据搬移处理方法中的步骤。例如,该指令可以执行如下步骤:

确定待搬移数据;确定所述待搬移数据对应的压缩粒度;在所述压缩粒度满足预设条件时,确定目标压缩粒度,所述目标压缩粒度大于所述压缩粒度;在当前已有的多个逻辑地址中,确定所述目标压缩粒度数量的逻辑地址,作为目标逻辑地址,所述目标逻辑地址中包括所述待搬移数据对应的逻辑地址;对待压缩数据进行压缩处理,得到压缩数据,所述待压缩数据为存储块中所述目标逻辑地址对应的数据;对所述压缩数据进行存储处理。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中提供的各种数据搬移处理方法。

由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据搬移处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据搬移处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种数据搬移处理方法、装置、电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 数据处理方法、装置、计算机可读存储介质和电子设备
  • 路由数据处理方法、装置、电子设备及存储介质
  • 数据处理方法及装置、电子设备、存储介质
  • 屏幕布局数据处理方法、装置、电子设备及存储介质
  • 网页操作数据的处理方法、装置、电子设备及存储介质
  • 用户数据搬移的恢复方法、装置、电子设备及存储介质
  • 处理数据搬移的方法、装置、存储介质及电子设备
技术分类

06120116514635