CN116009761A - 一种数据写入方法以及相关设备 - Google Patents

一种数据写入方法以及相关设备 Download PDF

Info

Publication number
CN116009761A
CN116009761A CN202111228801.XA CN202111228801A CN116009761A CN 116009761 A CN116009761 A CN 116009761A CN 202111228801 A CN202111228801 A CN 202111228801A CN 116009761 A CN116009761 A CN 116009761A
Authority
CN
China
Prior art keywords
data
logical
storage pool
block set
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111228801.XA
Other languages
English (en)
Inventor
李劲松
高军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111228801.XA priority Critical patent/CN116009761A/zh
Priority to PCT/CN2022/093193 priority patent/WO2023065654A1/zh
Publication of CN116009761A publication Critical patent/CN116009761A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据写入方法以及相关设备,用于降低垃圾回收时的读写放大。本申请实施例方法包括:获取第一数据的第一逻辑地址。确定存储池中是否存储有第二数据,第二数据的逻辑地址与第一逻辑地址相同。若存储池中存储有第二数据,则将第一数据写入存储池的第一逻辑块集合,第一逻辑块集合用于存储热数据。

Description

一种数据写入方法以及相关设备
技术领域
本申请实施例涉及计算机领域,尤其涉及一种数据写入方法以及相关设备。
背景技术
基于存储设备可以构建抽象化的存储池,该存储池由多个逻辑块组构成。在将数据写入存储池时,如果写入的数据的逻辑地址与存储池中已经存在的某个目标数据的逻辑地址一致,这种情况为重复写入,重复写入的数据不会覆盖目标数据,而是写入存储池中的另一个位置,并将目标数据标记为垃圾数据。当重复写入的次数过多时,存储池中的空间会被大量消耗,为避免这种情况,需要执行垃圾回收(garbage collection,GC),将逻辑块组中中除垃圾数据之外的数据迁移到一个新的逻辑块组中,并释放原有逻辑块组中的所有数据。
在当前的技术当中,通常在系统的业务空闲的时候执行GC,然而这种方案的数据迁移量较大,并且如果系统不存在业务空闲的情况,如果执行GC会对当前的业务产生影响。
发明内容
本申请实施例提供了一种数据写入方法以及相关设备,用于降低垃圾回收时的读写放大。
本申请实施例第一方面提供了一种数据写入方法:
每个在存储池中的数据都有对应的逻辑地址,在第一数据写入存储池之前获取第一数据写入存储池中的第一逻辑地址。之后确定存储池中是否存储有第二数据,该第二数据的逻辑地址与第一逻辑地址相同。若存储池中存储有第二数据,则将第一数据写入存储池的第一逻辑块集合,第一逻辑块集合用于存储热数据。
本申请实施例中,写入第一逻辑块集合中的数据为重复写入的数据,也即是更新的数据。由于数据的属性与数据的逻辑地址存在对应关系,并且当某种属性的数据需要进行更新时,这种属性的数据在后续继续进行更新的可能性较高。因此在第一逻辑块集合中产生的垃圾数据的比例较高,因此在进行垃圾回收时,所产生的读写放大较小。
在一种可能的实现方式中,若存储池中未存储有第二数据,则将第一数据写入存储池的第二逻辑块集合,第二逻辑块集合用于存储冷数据。
本申请实施例中,写入第二逻辑块集合中的数据不是重复写入的数据,因此第二逻辑块集合中产生垃圾数据的比例较低,从而使得在进行垃圾回收时,所产生的读写放大较小。
在一种可能的实现方式中,如果第一逻辑块集合中垃圾数据的比例大于或等于预设阈值,则将第一数据迁移至新建的逻辑块集合,并释放第一逻辑块集合中的数据。
在一种可能的实现方式中,第一数据以及所述第二数据的数据属性相同,第一逻辑地址与数据属性存在对应关系。
在一种可能的实现方式中,还需要创建存储池,该存储池包括多个逻辑块,逻辑块的存储空间来自机械硬盘。
本申请实施例第二方面提供了一种存储设备:
该存储设备包括多个功能模块,所述多个功能模块相互作用,实现上述第一方面及其各实施方式中的方法。多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
本申请实施例第三方面提供了一种存储设备:
包括处理器,处理器与存储器耦合,存储器用于存储指令,当指令被处理器执行时,使得显示设备执行如前述第一方面中的方法。
本申请实施例第四方面提供了一种计算机程序产品,包括代码,当代码在计算机上运行时,使得计算机运行如前述第一方面的方法。
本申请实施例第五方面提供了一种计算机可读存储介质,其上存储有计算机程序或指令,其特征在于,计算机程序或指令被执行时,其上存储有计算机程序或指令,计算机程序或指令被执行时,使得计算机执行如前述第一方面的方法。
附图说明
图1为本申请实施例中数据写入方法所应用的系统示意图;
图2为本申请实施例中构建存储池的一个示意图;
图3为本申请实施例中垃圾回收的一个示意图;
图4为本申请实施例中数据写入方法的一个流程示意图;
图5a为本申请实施例中第一数据写入的流程示意图;
图5b为本申请实施例中根据位图查找第二数据的一个示意图;
图6为本申请实施例中第一逻辑块集合以及第二逻辑块集合中数据的分布示意图;
图7为本申请实施例中垃圾回收的另一示意图;
图8为本申请实施例中存储设备的一个结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供了一种数据写入方法,用于减少垃圾回收时的数据迁移量。
本申请实施例可以应用于如图1所示的系统中,在该系统中,用户通过应用程序来存取数据。运行这些应用程序的计算机被称为“应用服务器”。应用服务器100可以是物理机,也可以是虚拟机。物理应用服务器包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。应用服务器通过光纤交换机110访问存储设备120以存取数据。然而,交换机110只是一个可选设备,应用服务器100也可以直接通过网络与存储设备120通信。或者,光纤交换机110也可以替换成以太网交换机、InfiniBand交换机、RoCE(RDMA over ConvergedEthernet)交换机等。
图1所示的存储设备120是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎121。引擎121是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图1所示,引擎121中有一个或多个控制器,图1以引擎包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其内存124后,可以通过镜像通道将数据的副本发送给控制器1,控制器1将所述副本存储在自己本地的内存124中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储设备120的不可用。当引擎121中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。
引擎121还包含前端接口125和后端接口126,其中前端接口125用于与应用服务器100通信,从而为应用服务器100提供存储服务。而后端接口126用于与硬盘134通信,以扩充存储系统的容量。通过后端接口126,引擎121可以连接更多的硬盘134,从而形成一个非常大的存储池。
在硬件上,如图1所示,控制器0至少包括处理器123、内存124。处理器123是一个中央处理器(central processing unit,CPU),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器123通过前端端口125接收应用服务器100发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存124中。当内存124中的数据总量达到一定阈值时,处理器123通过后端端口将内存124中存储的数据发送给硬盘134进行持久化存储。
内存124是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(Read Only Memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random Access Memory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,内存124还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,控制器0中可配置多个内存124,以及不同类型的内存124。本实施例不对内存113的数量和类型进行限定。此外,可对内存124进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存124中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存124中存储有软件程序,处理器123运行内存124中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储池。
控制器1(以及其他图1中未示出的控制器)的硬件组件和软件结构与控制器0类似,这里不再赘述。
需要说明的是,图1中只示出了一个引擎121,然而在实际应用中,存储系统中可包含两个或两个以上引擎121,多个引擎121之间做冗余或者负载均衡。
图1所示的是一种盘控一体的集中式存储系统,在实际的实现中,集中式存储系统也可以是盘控分离的形式。
请参阅图2,图2是基于图1所示的系统构建存储池的一个示意图。应理解,图2中所示的应用服务器100与图1中所示的应用服务器100类似,图2中所示的硬盘134与图1中所示的硬盘134类似,图2中所示的存储设备120与图1中所示的存储设备120类似。如图2所示,本申请实施例中的硬盘134可以是任意类型的硬盘,例如可以是固态硬盘或者是机械硬盘。每个硬盘134被划分为若干个物理块(chunk)202,物理块202映射成逻辑块203,逻辑块203进而构成一个存储池204。存储池204用于提供存储空间,该存储空间实际来源于系统中所包含的硬盘134。当然,并非所有硬盘134都需要提供空间给存储池204。在实际应用中,存储系统中可包含一个或多个存储池204,一个存储池204包括部分或全部硬盘134。来自不同硬盘或者不同存储节点201的多个逻辑块可以组成一个逻辑块组205(plog),该逻辑块组205是存储池204的最小分配单位。
当存储服务层向存储池204申请存储空间时,存储池可以向存储服务层提供一个或多个逻辑块组。存储服务层进一步将逻辑块组提供的存储空间虚拟化为逻辑单元(logical unit,LU)206提供给应用服务器100使用。每个逻辑单元具有唯一的逻辑单元号(logical unit number,LUN)。由于应用服务器100能直接感知到逻辑单元号,本领域技术人员通常直接用LUN代指逻辑单元。每个LUN具有LUN ID,用于标识LUN。数据位于一个LUN内的具体位置可以由起始地址和该数据的长度(length)确定。对于起始地址,本领域技术人员通常称作逻辑块地址(logical block address,LBA)。可以理解的是,LUN ID、LBA和长度这三个因素标识了一个确定的地址段。应用服务器生成的数据访问请求,通常在该请求中携带LUN ID、LBA和长度。
一个逻辑块组所包含的逻辑块的数量取决于采用何种机制(又称为冗余模式)来保证数据可靠性。通常情况下,为了保证数据的可靠性,存储系统采用多副本机制或者纠删码(erasure coding,EC)校验机制来存储数据。多副本机制是指存储至少两份相同的数据副本,当其中一份数据副本丢失时,可以使用其他数据副本恢复。如果采用多副本机制,一个逻辑块组至少包含两个逻辑块,每个逻辑块位于不同硬盘134上。EC校验机制是指将待存储的数据划分为至少两个数据分片,按照一定的校验算法计算至少两个数据分片的校验分片,当其中一个数据分片丢失时,可以利用另一个数据分片以及校验分片恢复数据。如果采用EC校验机制,那么一个逻辑块组至少包含三个逻辑块,每个逻辑块位于不同硬盘134上。
以EC校验机制为例,来自不同硬盘的多个逻辑块根据设定的RAID类型被划分为数据组和校验组。数据组中包括至少两个逻辑块,用于存储数据分片,校验组中包括至少一个逻辑块,用于存储数据分片的校验分片。当数据在内存中凑满一定大小时,可以根据设定的RAID类型切分为多个数据分片,并计算获得校验分片,将这些数据分片和校验分片发送给多个不同硬盘,以保存在逻辑块组中。存储之后,这些数据分片和校验分片就构成一个分条。一个逻辑块组可包含一个或多个分条。分条所包含的数据分片和校验分片都可以被称作分条单元,构成每个分条的分条单元所属的逻辑块对应不同硬盘的物理块。本实施例中,以一个分条单元的大小为8KB为例予以说明,但不限定为8KB。举个例子,假设从6个机械硬盘中各取出一个物理块构成逻辑块集合(存储池的子集),然后对逻辑块集合基于设定的RAID类型(以RAID6为例)进行分组。其中,chunk 0、chunk 1、chunk 2和chunk 3为数据块组,chunk 4和chunk 5为校验块组。当内存中存储的数据达到8KB×4=32KB时,将数据划分为4个数据分片(分别为数据分片0、数据分片1、数据分片2、数据分片3),每个数据分片的大小为8KB,然后计算获得2个校验分片(分别是P0和Q0),每个校验分片的大小也是8KB。处理器将这些数据分片和校验分片发送给硬盘,以实现将数据存储在逻辑块组中。可以理解的是,按照RAID6的冗余保护机制,任意两个数据分片或者校验分片失效时,都可以根据剩下的数据分片或者校验分片重构出失效的单元。
另外,处理器在向硬盘发送数据之前,需要判断是否存在一个已经分配好的逻辑块组,如果有,并且该逻辑块组仍然有足够的空间容纳该数据,那么处理器可以指令硬盘将数据写入已经分配的逻辑块组中。具体的,处理器从已经分配的逻辑块组的逻辑地址区间中获取一段未使用的逻辑地址,将逻辑地址携带在写数据请求中发送给硬盘。
在上述例子中,如果处理器确定系统中并不存在已经分配的逻辑块组,或者已分配的逻辑块组均已写满数据,那么就需要创建一个新的逻辑块组。其创建过程可以是,处理器根据自己对每个硬盘所拥有的可用空间的记录,确定系统剩余空间足以创建一个新的逻辑块组。接下来,处理器分别从不同的硬盘中获取一个物理块,经映射为逻辑块之后,再将根据设定的RAID类型将这些逻辑块构建成一个新的逻辑块组。每个逻辑块均分配有一段逻辑地址,这些逻辑地址集合就是新的逻辑块组的逻辑地址。另外,逻辑块和物理块之间的映射关系也需要保存在内存中,方便查找。
为了保证系统中始终有足够的可用空间用于创建逻辑块组,处理器可以实时地或者定期地对每个硬盘的可用空间进行监控,从而获知整个系统的可用空间。当系统的可用空间低于设定的空间阈值时,可以启动垃圾回收。例如,一个机械硬盘的容量是128G,系统中所包含的所有机械硬盘的总容量是1280G,所述空间阈值可以设置为640G。也就是说,当该系统存储的数据达到所述总容量的一半时,剩余的可用空间也达到了所述空间阈值,此时则可以执行垃圾回收。可以理解的是,640G只是空间阈值的一个示例,所述空间阈值也可以设置为其他数值。另外,当系统的已使用空间达到设定的空间阈值时,也可以触发垃圾回收。另外,在本发明另一个实施例中,当一个或多个分条所包含的无效数据的数据量达到设定阈值时,也可以启动垃圾回收。处理器可以以逻辑块组为单位执行系统垃圾回收。
数据在写入存储池中的逻辑块组时,由系统控制器向硬盘发送写数据请求,并在写数据请求中携带该数据在硬盘上的逻辑地址。数据在被读取时,系统控制器根据数据在硬盘上的逻辑地址,对数据进行读取。
请参阅图3,下面对垃圾回收的过程进行示例性说明:
数据在写入时,需要确定数据所写入的逻辑地址,该逻辑地址通过LBA以及逻辑单元号标识(LUN ID)所指示。在一种数据写入方式中,如果需要将数据A写入逻辑地址1中,该逻辑地址1由LUN ID1以及LBA1所指示。如果在存储池中存在数据B,且数据B的逻辑地址也为逻辑地址1。则数据A不会覆盖数据B,而是写入存储池中的另一个位置,并将数据B标识为垃圾数据,数据A则为有效数据。当然,如果后续写入了数据C,且数据C的逻辑地址同样为逻辑地址1,那么数据A以及数据B都将成为垃圾数据,这时数据C为有效数据。数量过多的垃圾数据会极大地消耗存储池中的空间,为了确保存储池的空间充足,需要进行针对垃圾数据进行回收。应理解,本申请实施例可以应用于采用上述数据写入方式的系统中。
示例性的,在存储池中存在逻辑块组1以及逻辑块组2,由于数据在写入时会随机写入逻辑块组1或者逻辑块组2,因此当写入的数据转变为垃圾数据时,垃圾数据也会均匀分布在逻辑块组1以及逻辑块组2中。当需要执行垃圾回收时,判断逻辑块组中的垃圾数据的占比是否达到了预设的阈值,该预设的阈值例如可以是50%。如图3所示,逻辑块组1以及逻辑块组2中垃圾数据的占比都达到了50%,因此需要将逻辑块组1以及逻辑块组2中的有效数据迁移到新建的逻辑块组3中。之后,释放逻辑块组1以及逻辑块组2中的数据。垃圾回收的过程会产生读写放大,读写放大D满足如下公式(1):
D=数数据据释迁放移量量(1)
上述图3所示的垃圾回收过程中的数据迁移量为8,数据释放量为8,因此上述图3所示的垃圾回收所产生的读写放大为1。读写放大越大,说明有效数据的迁移量越大,从而对业务产生较大的影响,并且也不利于硬盘的寿命。
请参阅图4,下面开始对本申请实施例中的数据写入方法的一个流程进行介绍,应理解,本实施例可以应用于上述图1以及图2所示的系统中。
401、获取第一数据的第一逻辑地址;
系统基于存储介质创建存储池,该存储池中包括多个逻辑块,存储介质具体可以是机械硬盘,逻辑块的存储空间来自于机械硬盘。当系统需要将第一数据写入存储池时,系统获取第一数据的第一逻辑地址。第一逻辑地址携带在数据写入请求中,系统可以根据数据写入请求获取第一逻辑地址。
402、确定存储池中是否存储有第二数据;
获取第一数据对应的第一逻辑地址之后,系统确定存储池中是否存储有第二数据,该第二数据的逻辑地址为第一逻辑地址。在一种方式中,查找第二数据的方式可以是通过位图实现。
403、若存储池中存储有第二数据,则将第一数据写入第一逻辑块集合。
逻辑地址与数据的属性往往存在对应的关系,例如在银行的数据库系统中,不同属性的数据例如可以包括用户的身份证号码、用户的存款余额以及用户的联系方式,其中表示用户的身份证号码的数据的逻辑地址为逻辑地址1,表示用户的存款余额的数据的逻辑地址为逻辑地址2,表示用户的联系方式的数据的逻辑地址为逻辑地址3。由于数据的属性不同,因此各个属性的数据发生变化的概率也不同,并且如果某种属性的数据发生过变化,则该属性的数据后续继续发生变化的概率较大,如果某种属性的数据没有发生过变化,则该属性的数据后续继续发生变化的概率较小。例如用户的存款余额往往会经常性地发生变化,而用户的身份证号码往往是固定不变的。
基于此,将存储池中的所有逻辑块分为第一逻辑块集合以及第二逻辑块集合,第一逻辑块集合以及第二逻辑块集合分别包括多个逻辑块。在第一数据写入时,根据存储池中是否存在第二数据确定将第一数据写入第一逻辑块集合或者第二逻辑块集合。
请参阅图5a,确定存储池中是否存在第二数据可以通过热点统计模块实现。示例性的,请参阅图5b,在位图中的每一个区间代表了一个逻辑地址,例如在位图中从左往右的3个区间分别代表了逻辑地址1、逻辑地址2以及逻辑地址3。当区间中的数字为0时,代表该区间对应的逻辑地址未被写入数据,当区间中的数字为1时,代表该区间对应的逻辑地址已经被写入了数据。例如当代表逻辑地址2的区间中的数字由0更新为1时,说明在存储池中的逻辑地址2已经被写入了数据。在第一数据写入时,热点统计模块根据位图确定存储池中是否存在第二数据。如果第一数据的第一逻辑地址在之前未被写入过,也即不存在第二数据,那么在第一数据写入之后,热点统计模块也可以对位图进行修改,从而标识出第一数据的第一逻辑地址已经被写入过。
如果在存储池中存在第二数据,由于第一数据与第二数据的逻辑地址都为第一逻辑地址,说明第一数据与第二数据属于相同属性的数据。该属性的数据由第二数据更新为第一数据,第二数据由于第一数据的写入将成为垃圾数据,因此第一数据在后续成为垃圾数据的概率比较大。例如第一数据与第二数据都属于用户的存款余额,存款余额更新为第一数据之后,大概率还会继续发生变化。基于此,将第一数据写入第一逻辑块集合中的逻辑块中。
如果在存储池中未存储有第二数据,则说明第一数据在后续成为垃圾数据的概率比较小,例如第一数据为初次写入的用户的身份证号码,在写入之后往往不再变化。基于此,将第一数据写入第二逻辑块集合中的逻辑块中。
基于上述描述可以得知,第一逻辑块集合用于存储成为垃圾数据的概率较大的数据,这些数据也称之为热数据。第二逻辑块集合用于存储成为垃圾数据的概率较小的数据,这些数据称之为冷数据。
请参阅图6,图6为本实施例中数据分布的示意图。如图6所示,基于上述的数据写入方式,成为垃圾数据概率较大的数据都写入了第一逻辑块集合,成为垃圾数据概率较小的数据都写入了第二逻辑块集合。因此第一逻辑块集合中的数据大部分都为垃圾数据,而第二逻辑块集合中的数据大部分都为有效数据。应理解,在优选的方式中,在存储池中包括两类逻辑块组,其中一类逻辑块组中的逻辑块由第一逻辑块集合中的逻辑块构成,另一类逻辑块组中的逻辑块由第二逻辑块集合中的逻辑块构成。当然,在实际的实现中,也可以是两类逻辑块组中的其中一类逻辑块中的大部分逻辑块包括第一逻辑块集合中的逻辑块,而小部分逻辑块包括第二逻辑块集合中的逻辑块。另一类逻辑块中的大部分逻辑块包括第二逻辑块集合中的逻辑块,而小部分逻辑块包括第一逻辑块集合中的逻辑块。
请参阅图7,图7为垃圾回收的另一个示意图。示例性的,在实际的实现当中,第一逻辑块集合中的部分或全部逻辑块可以构成第一逻辑块组,第二逻辑块集合中的部分或全部逻辑块可以构成第二逻辑块组。应理解,由于第一逻辑块组中的数据来自于第一逻辑块集合中的数据,因此第一逻辑块组中的垃圾数据的占比较高;第二逻辑块组中的数据来自于第二逻辑块集合中的数据,因此第二逻辑块组中的垃圾数据的占比较低。如图7所示,在第一逻辑块组中垃圾数据的占比达到了50%,因此需要将第一逻辑块组中的有效数据迁移到新建的逻辑块组中,并将第一逻辑块组中的全部数据进行释放。第二逻辑块组中垃圾数据的占比还未达到50%,因此不需要进行处理。
图7中所示的垃圾回收过程的数据迁移量为1,数据释放量为7,由公式(1)可知,垃圾回收所产生的读写放大为0.14。不难看出,在本实施例中,由于第一逻辑块组中基本都是垃圾数据,第二逻辑块组中基本都是有效数据,因此在进行垃圾回收时,往往只需要对第一数据块中的有效数据进行迁移,从而大幅降低读写放大。
本申请实施例中,提高了垃圾数据的聚集性,因此在进行垃圾回收的时候可以减少数据的迁移量,减少读写放大,进而降低垃圾回收对业务的影响。
上面对本申请实施例中的数据写入方法进行了介绍,下面对本申请实施例中的存储设备进行介绍:
请参阅图8,本申请实施例中的存储设备800包括处理单元801。
处理单元801,用于获取第一数据对应的第一逻辑地址,第一逻辑地址通过LBA以及逻辑单元号标识指示。
处理单元801,还用于确定存储池中是否存在第二数据,第二数据的逻辑地址为第一逻辑地址。
处理单元801,还用于若存在第二数据,则将第一数据写入第一逻辑块集合,第一逻辑块集合用于存储热数据。
在一种可能的实现中,
处理单元801,还用于若不存在第二数据,则将第一数据写入第二逻辑块集合,第二逻辑块集合用于存储冷数据。
在一种可能的实现中,
处理单元801,还用于若第一逻辑块集合中垃圾数据的占比大于或等于预设阈值,则将第一数据迁移至新建的逻辑块集合。
处理单元801,还用于释放第一逻辑块集合中的数据。
在一种可能的实现中,
第一数据以及所述第二数据的数据属性相同,第一逻辑地址与数据属性存在对应关系。
在一种可能的实现中,
处理单元801,还用于创建存储池,存储池包括多个逻辑块,逻辑块的存储空间来自机械硬盘。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (12)

1.一种数据写入方法,其特征在于,包括:
获取第一数据的第一逻辑地址;
确定存储池中是否存储有第二数据,所述第二数据的逻辑地址与所述第一逻辑地址相同;
若所述存储池中存储有所述第二数据,则将所述第一数据写入所述存储池的第一逻辑块集合,所述第一逻辑块集合用于存储热数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述存储池中未存储有所述第二数据,则将所述第一数据写入所述存储池的第二逻辑块集合,所述第二逻辑块集合用于存储冷数据。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述第一逻辑块集合中垃圾数据的占比大于或等于预设阈值,则将所述第一数据迁移至新建的逻辑块集合;
释放所述第一逻辑块集合中的数据。
4.根据权利要求3所述的方法,其特征在于,所述第一数据以及所述第二数据的数据属性相同,所述第一逻辑地址与所述数据属性存在对应关系。
5.根据权利要求1至4所述的方法,其特征在于,所述方法还包括:
创建所述存储池,所述存储池包括多个逻辑块,逻辑块的存储空间来自机械硬盘。
6.一种存储设备,其特征在于,包括:
处理单元,用于获取第一数据的第一逻辑地址;
所述处理单元,还用于确定存储池中是否存储有第二数据,所述第二数据的逻辑地址与所述第一逻辑地址相同;
所述处理单元,还用于若所述存储池中存储有所述第二数据,则将所述第一数据写入所述存储池的第一逻辑块集合,所述第一逻辑块集合用于存储热数据。
7.根据权利要求6所述的设备,其特征在于,
所述处理单元,还用于若所述存储池中未存储有所述第二数据,则将所述第一数据写入所述存储池的第二逻辑块集合,所述第二逻辑块集合用于存储冷数据。
8.根据权利要求6或7所述的设备,其特征在于,
所述处理单元,还用于若所述第一逻辑块集合中垃圾数据的占比大于或等于预设阈值,则将所述第一数据迁移至新建的逻辑块集合;
所述处理单元,还用于释放所述第一逻辑块集合中的数据。
9.根据权利要求8所述的设备,其特征在于,所述第一数据以及所述第二数据的数据属性相同,所述第一逻辑地址与所述数据属性存在对应关系。
10.根据权利要求6至9所述的设备,其特征在于,
所述处理单元,还用于创建所述存储池,所述存储池包括多个逻辑块,逻辑块的存储空间来自机械硬盘。
11.一种存储设备,其特征在于,包括处理器,所述处理器与存储器耦合,所述存储器用于存储指令,当所述指令被所述处理器执行时,使得所述存储设备执行如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机指令或程序,其特征在于,所述计算机指令或程序被执行时,使得计算机执行如权利要求1至5中任一项所述的方法。
CN202111228801.XA 2021-10-21 2021-10-21 一种数据写入方法以及相关设备 Pending CN116009761A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111228801.XA CN116009761A (zh) 2021-10-21 2021-10-21 一种数据写入方法以及相关设备
PCT/CN2022/093193 WO2023065654A1 (zh) 2021-10-21 2022-05-17 一种数据写入方法以及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111228801.XA CN116009761A (zh) 2021-10-21 2021-10-21 一种数据写入方法以及相关设备

Publications (1)

Publication Number Publication Date
CN116009761A true CN116009761A (zh) 2023-04-25

Family

ID=86021656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111228801.XA Pending CN116009761A (zh) 2021-10-21 2021-10-21 一种数据写入方法以及相关设备

Country Status (2)

Country Link
CN (1) CN116009761A (zh)
WO (1) WO2023065654A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116540949A (zh) * 2023-07-04 2023-08-04 苏州浪潮智能科技有限公司 一种独立冗余磁盘阵列存储空间动态分配方法和装置
CN117785070A (zh) * 2024-02-23 2024-03-29 杭州海康威视数字技术股份有限公司 数据存储控制方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102025180B1 (ko) * 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
KR102258126B1 (ko) * 2015-03-19 2021-05-28 삼성전자주식회사 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
CN105677242B (zh) * 2015-12-31 2018-11-30 杭州华为数字技术有限公司 冷热数据的分离方法和装置
CN106406753B (zh) * 2016-08-30 2019-07-09 深圳芯邦科技股份有限公司 一种数据存储方法及数据存储装置
CN109542358A (zh) * 2018-12-03 2019-03-29 浪潮电子信息产业股份有限公司 一种固态硬盘冷热数据分离方法、装置及设备
CN110674056B (zh) * 2019-09-02 2021-11-23 新华三大数据技术有限公司 一种垃圾回收方法及装置
CN111045598B (zh) * 2019-10-10 2023-08-15 深圳市金泰克半导体有限公司 数据存储方法、装置
JP2021114038A (ja) * 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステムおよび制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116540949A (zh) * 2023-07-04 2023-08-04 苏州浪潮智能科技有限公司 一种独立冗余磁盘阵列存储空间动态分配方法和装置
CN116540949B (zh) * 2023-07-04 2024-01-12 苏州浪潮智能科技有限公司 一种独立冗余磁盘阵列存储空间动态分配方法和装置
CN117785070A (zh) * 2024-02-23 2024-03-29 杭州海康威视数字技术股份有限公司 数据存储控制方法及装置
CN117785070B (zh) * 2024-02-23 2024-05-24 杭州海康威视数字技术股份有限公司 数据存储控制方法及装置

Also Published As

Publication number Publication date
WO2023065654A1 (zh) 2023-04-27

Similar Documents

Publication Publication Date Title
US11487619B2 (en) Distributed storage system
US9946460B2 (en) Storage subsystem and storage system architecture performing storage virtualization and method thereof
JP7312251B2 (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US8301670B2 (en) Managing snapshot storage pools
US9846544B1 (en) Managing storage space in storage systems
US8566550B2 (en) Application and tier configuration management in dynamic page reallocation storage system
CN110858124B (zh) 数据迁移方法及装置
US20200125286A1 (en) Fragment Management Method and Fragment Management Apparatus
US10359967B2 (en) Computer system
US20110271010A1 (en) I/o bandwidth reduction using storage-level common page information
CN114860163B (zh) 一种存储系统、内存管理方法和管理节点
CN104395904A (zh) 高效的数据对象存储和检索
US20110283062A1 (en) Storage apparatus and data retaining method for storage apparatus
US10365845B1 (en) Mapped raid restripe for improved drive utilization
US10802757B2 (en) Automated management of write streams for multi-tenant storage
US9946485B1 (en) Efficient data marker representation
WO2023065654A1 (zh) 一种数据写入方法以及相关设备
CN111949210A (zh) 分布式存储系统中元数据存储方法、系统及存储介质
US11079956B2 (en) Storage system and storage control method
CN105068896A (zh) 基于raid备份的数据处理方法及装置
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US10853257B1 (en) Zero detection within sub-track compression domains
US8478936B1 (en) Spin down of storage resources in an object addressable storage system
US11449237B2 (en) Targetless snapshot system replication data pointer table
CN117032596B (zh) 数据访问方法及装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication