CN115237854A - 一种日志管理方法及装置 - Google Patents

一种日志管理方法及装置 Download PDF

Info

Publication number
CN115237854A
CN115237854A CN202110744793.8A CN202110744793A CN115237854A CN 115237854 A CN115237854 A CN 115237854A CN 202110744793 A CN202110744793 A CN 202110744793A CN 115237854 A CN115237854 A CN 115237854A
Authority
CN
China
Prior art keywords
log
segment
write
lsn
request
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
CN202110744793.8A
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.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
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 Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to PCT/CN2021/140172 priority Critical patent/WO2022222523A1/zh
Publication of CN115237854A publication Critical patent/CN115237854A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种日志管理方法及装置,尤其涉及数据存储领域。该日志管理方法包括:首先,处理器将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块,该一个段用于存储日志;其次,处理器接收第一写日志请求和第二写日志请求,该第一写日志请求包括第一日志项,该第二写日志请求包括第二日志项;最后,处理器并行地将第一日志项写入多个段中的第一段,以及将第二日志项写入第一段。由于硬盘的存储空间被划分为多个段,避免了硬盘以日志文件的形式存储日志,减少了日志写入过程中文件锁的开销,提高了日志写入的效率;多个日志项可以被并行的写入一个段,避免了在日志文件中写入日志项所需的加锁过程,提高了日志并行写入硬盘的效率。

Description

一种日志管理方法及装置
技术领域
本申请涉及数据存储领域,尤其涉及一种日志管理方法及装置。
背景技术
预写式日志(write ahead log,WAL)提供了一种高并发、持久化的日志保存与回放机制。服务器在将业务数据写入存储设备之前,都会记录在WAL中。通常,在日志写入过程中,服务器使用追加写的方式将多个日志写入存储设备,存储设备以日志文件(log file)的形式保存日志,其中,每个日志文件包括固定数目的日志项。然而,服务器在追加写日志的过程中,需要将新日志项所要写入的日志文件进行加锁,导致日志写入速度较慢。因此,如何提高日志写入的效率成为目前亟需解决的问题。
发明内容
本申请提供一种日志管理方法及装置,解决了服务器以日志文件为粒度写入日志所导致的日志写入速度较慢的问题。
为达到上述目的,本申请采用如下技术方案。
第一方面,本申请提供了一种日志管理方法,该方法可应用于处理器,或者该方法可应用于可以支持处理器实现该方法的通信设备,例如该通信设备包括芯片系统,该日志管理方法包括:首先,处理器将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块(block),该一个段用于存储日志;其次,处理器接收第一写日志请求和第二写日志请求,该第一写日志请求包括第一日志项,该第二写日志请求包括第二日志项;最后,处理器并行地将第一日志项写入多个段中的第一段,以及将第二日志项写入第一段。在本申请的实施例中,由于硬盘的存储空间被划分为多个段,硬盘基于段管理日志,避免了硬盘以日志文件的形式存储日志,减少了日志写入过程中文件锁的开销,提高了日志写入的效率;除此之外,多个日志项可以被并行的写入一个段,避免了在日志文件中写入日志项所需的加锁过程,提高了日志并行写入硬盘的效率。
本申请实施例中的日志是指业务数据,或业务数据的副本或快照或克隆等。
作为一种可能的实现方式,在处理器将第一日志项写入第一段的过程中或者在将第二日志项写入第一段的过程中没有执行加锁机制。相较于通常技术中日志系统执行文件锁机制,导致多个日志项无法并行写入硬盘的问题,本申请的实施例所提供的日志管理方法,由于处理器没有对硬盘执行加锁机制,因此,处理器可以并行地将第一日志项和第二日志项写入硬盘的第一段,提高了处理器将多个日志项并行写入硬盘的效率。
作为另一种可能的实现方式,该日志管理方法还包括:处理器将第一写日志请求的日志序列号LSN与日志索引进行匹配,确定第一写日志请求包括的第一日志项待写入的段是第一段。其中,该日志索引用于指示第一段与LSN的对应关系。处理器将写日志请求的LSN与该日志索引进行匹配,确定写日志请求包括的日志项所要写入的段,减少了日志写入所需的路径查询时间,提高了日志写入的效率。
作为另一种可能的实现方式,日志索引包括第一索引和第二索引,第一索引用于指示第一段在硬盘中的存储地址范围,第二索引用于至少一个存储地址范围中每个日志项的LSN和存储地址之间的对应关系。
上述处理器将LSN与日志索引进行匹配确定第一段的过程可以包括:处理器判断LSN与第三日志项的LSN是否连续,第三日志项为第二索引记录的任意一个日志项;若LSN与第三日志项的LSN连续,处理器将第三日志项所在的段作为第一段;若LSN与第三日志项的LSN不连续,处理器将LSN与第一索引进行匹配确定第一段,第一段中第一个日志项的LSN与第一写日志请求的LSN匹配。由于处理器的缓存的存储容量较小,使得缓存中无法存储大量的索引数据,在本申请实施例所提供的日志管理方法中,日志索引包括第一索引和第二索引,处理器可以先对第一索引和第二索引中任一个进行优先匹配,若匹配成功,则可以避免处理器查找日志索引中所有的数据,减少日志写入所需的路径查询时间,提高日志写入效率。
在日志读取的过程中,处理器也可以先将读日志请求的LSN与第二索引进行匹配,若匹配成功(命中),则处理器可以依据第二索引确定读日志请求所要读取的日志项所在的存储地址,减少了日志读取所需的路径查询时间,提高了日志读取的效率。若读日志请求的LSN未在第二索引中命中,则处理器可以依据第一索引确定读日志请求所要读取的日志段,通过遍历该日志段得到读日志请求对应的日志项,避免了处理器将在文件系统中查询读日志请求的存储地址,提高了日志读取的效率。
作为另一种可能的实现方式,日志索引存储在缓存中。该缓存可以是处理器的内存储器。在日志写入过程中,处理器中的处理单元可以读取缓存中的日志索引,从而快速确定写日志请求包括的日志项所要写入的段,减少了日志写入所需的路径查询时间,提高了日志写入的效率。
作为另一种可能的实现方式,第一日志项包括描述信息和数据信息,描述信息包括第一写日志请求的LSN、日志项长度以及日志项长度校验和,数据信息用于指示第一日志项记录的日志内容。该日志项长度校验和用于确定该第一日志项的完整性和准确性,日志项长度用于确定第一日志项所占据的存储空间大小,LSN用于指示第一写日志请求的日志添加操作的序号。在一些可能的示例中,第一日志项包括的描述信息也可以称为第一日志项的元数据信息。
作为另一种可能的实现方式,上述处理器将第一日志项写入第一段的过程,包括:处理器依据第一写日志请求的LSN生成起始存储地址,起始存储地址处于第一段的存储地址范围;进而,处理器依据起始存储地址将第一日志项写入第一段。在处理器将日志项写入硬盘的过程中,首先依据写日志请求的LSN生成起始存储地址,再依据起始存储地址将写日志请求包括的日志项写入硬盘中,避免了处理器随机的将日志项写入硬盘,保证了日志写入的准确性。
作为另一种可能的实现方式,在处理器依据第一写日志请求的LSN生成起始存储地址之后,该日志管理方法还包括:处理器向备份设备发送第一写日志请求的LSN和起始存储地址。在日志系统具有多个存储设备的情况下,若处理器为主副本节点(简称:主节点),主节点向从副本节点(简称:从节点)发送写日志请求的LSN和起始存储地址,并由从节点依据该写日志请求的LSN和起始存储地址,将写日志请求包括的日志项写入第一段中,避免了主节点的日志写入完成后再去从节点备份,提高了多写场景的写入效率。
作为另一种可能的实现方式,在处理器接收第一写日志请求之后,该日志管理方法还包括:处理器接收备份设备发送的第一写日志请求的LSN和起始存储地址,并依据第一写日志请求的LSN和起始存储地址,将第一日志项写入第一段。在日志系统具有多个存储设备的情况下,若处理器为从节点,处理器在接收到客户端发送的写日志请求之后,还可以接收备份设备(主节点)发送的写日志请求的LSN和起始存储地址,并由处理器(从节点)依据该写日志请求的LSN和起始存储地址,将写日志请求包括的日志项写入第一段中,避免了主节点的日志写入完成后再去从节点备份,提高了多写场景的写入效率。
作为另一种可能的实现方式,该日志管理方法还包括:处理器向客户端发送日志写入响应,该日志写入响应用于指示已将第一日志和第二日志写入第一段。如此,客户端可以依据处理器反馈的日志写入响应确定本轮日志添加操作已经完成,避免客户端重复向日志系统发送写日志请求,造成写日志请求的重复备份,节省日志系统的存储资源,提高日志系统的存储资源利用率。
作为另一种可能的实现方式,处理器将第一日志项写入第一段,包括:在第一段的剩余存储空间小于第一写日志请求的日志项长度的情况下,处理器将第一写日志请求的一部分内容写入第一段,将第一写日志请求的另一部分内容写入第二段,第二段为硬盘中与第一段具有被连续读取的关联关系的段;进而,处理器将硬盘中的日志尾地址设置为第二段中第一个日志项的起始存储地址。在本申请的实施例中,日志尾地址是以最后一个日志所在的日志段的段首日志项的起始存储地址来表示的。
在本申请的实施例中,对于日志添加操作,只有当日志项需要被存储到两个日志段,其中一个日志段是新分配的日志段(如上述的第二段)时,才需要更新日志尾所在日志段的起始存储地址。如此,日志尾地址可以用日志尾所在日志段的起始存储地址来表示,避免了文件系统中每次添加日志都需要更新日志尾地址的过程,减少了日志添加所需的日志尾地址的随机小写操作,提高了日志写入的效率。
作为另一种可能的实现方式,在处理器依据写日志请求的LSN生成起始存储地址之前,该日志管理方法还包括:处理器判断写日志请求的日志项长度是否小于或等于硬盘的日志读写单位,该硬盘的日志读写单位是指处理器读写硬盘中日志项的最小数据粒度。若写日志请求的日志项长度小于或等于硬盘的日志读写单位,则处理器执行依据写日志请求的LSN生成起始存储地址的步骤;若写日志请求的日志项长度大于硬盘的日志读写单位,则处理器将写日志请求划分为多个子日志,多个子日志中每个子日志的日志项长度与日志读写单位一致。最后,处理器依据写日志请求的LSN生成多个子日志中每个子日志的起始存储地址。在写日志请求包括的日志项的日志项长度较大的情况下,由于处理器可以依据硬盘的日志读写单位写入多个子日志,即使在处理器直接将写日志请求包括的日志项的过程中硬盘和处理器断电,已经被处理器写入硬盘的子日志不会被处理器重复写入(或读取),减少了硬盘的存储资源消耗,提高了硬盘的存储资源利用效率。
在本申请的实施例中,处理器可以依据硬盘的日志读写单位将写日志请求包括的待写入日志项进行拆分,进而,处理器原子地生成每个子日志的起始存储地址,由于处理器基于未采用文件系统的日志段粒度读写日志,因此,处理器无需为日志段进行加锁,从而实现了处理器并行追加写入硬盘的过程,减少日志写入所需的时间,提高了日志写入的效率。
第二方面,本申请提供一种日志管理装置,有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述日志管理装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,该日志管理装置可应用于处理器,或者该日志管理装置可应用于可以支持处理器实现该方法的通信设备,例如该通信设备包括芯片系统,该日志管理装置包括:处理模块,用于将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块,一个段用于存储日志;通信模块,用于接收第一写日志请求和第二写日志请求,第一写日志请求包括第一日志项,第二写日志请求包括第二日志项;处理模块,还用于并行地将第一日志项写入多个段中的第一段,以及将第二日志项写入第一段。
作为一种可选的实现方式,在将第一日志项写入第一段的过程中或者在将第二日志项写入第一段的过程中没有执行加锁机制。
作为另一种可选的实现方式,日志管理装置还包括:索引模块,用于将第一写日志请求的日志序列号LSN与日志索引进行匹配,确定第一写日志请求包括的第一日志项待写入的段是第一段,日志索引用于指示第一段与LSN的对应关系。
作为另一种可选的实现方式,日志索引包括第一索引和第二索引,第一索引用于指示第一段在硬盘中的存储地址范围,第二索引用于至少一个存储地址范围中每个日志项的LSN和存储地址之间的对应关系。索引模块,具体用于判断LSN与第三日志项的LSN是否连续,第三日志项为第二索引记录的任意一个日志项;若LSN与第三日志项的LSN连续,索引模块,具体用于将第三日志项所在的段作为第一段;若LSN与第三日志项的LSN不连续,索引模块,具体用于将LSN与第一索引进行匹配,确定第一段,第一段中第一个日志项的LSN与第一写日志请求的LSN匹配。
作为另一种可选的实现方式,日志索引存储在缓存中。
作为另一种可选的实现方式,第一日志项包括描述信息和数据信息,描述信息包括第一写日志请求的LSN、日志项长度以及日志项长度校验和,数据信息用于指示第一日志项记录的日志内容。
作为另一种可选的实现方式,处理模块,具体用于依据第一写日志请求的LSN生成起始存储地址,起始存储地址处于第一段的存储地址范围;处理模块,具体用于依据起始存储地址将第一日志项写入第一段。
作为另一种可选的实现方式,通信模块,还用于向备份设备发送第一写日志请求的LSN和起始存储地址。
作为另一种可选的实现方式,通信模块,还用于接收备份设备发送的第一写日志请求的LSN和起始存储地址;处理模块,还用于依据第一写日志请求的LSN和起始存储地址,将第一日志项写入第一段。
作为另一种可选的实现方式,通信模块,还用于向客户端发送日志写入响应,日志写入响应用于指示已将第一日志和第二日志写入第一段。
第三方面,本申请提供一种芯片,包括存储器和处理器,存储器用于存储计算机指令,当处理器从存储器中调用并运行计算机指令时,实现第一方面和第一方面中任一种可能实现方式的日志管理方法的操作步骤。
第四方面,本申请提供一种通信设备,包括第三方面所述的芯片,该芯片包括处理器和存储器,存储器用于存储计算机指令,当处理器执行该计算机指令时,以使通信设备实现第一方面和第一方面中任一种可能实现方式的日志管理方法的操作步骤。
示例的,该通信设备可以是网卡、服务器或桌面计算机等。
第五方面,本申请提供一种计算机可读存储介质,存储介质中存储有计算机程序或指令,当计算机程序或指令被处理器或通信设备执行时,实现第一方面和第一方面中任一种可能实现方式的日志管理方法的操作步骤。
第六方面,本申请提供一种计算机程序产品,当计算机程序产品在计算机或服务器等通信设备上运行时,使得计算机或服务器执行第一方面和第一方面中任一种可能实现方式的日志管理方法的操作步骤。
第七方面,本申请提供一种日志系统,该通信系统包括至少一个服务器。首先,服务器将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块(block),该一个段用于存储日志;其次,服务器接收客户端发送的第一写日志请求和第二写日志请求,该第一写日志请求包括第一日志项,该第二写日志请求包括第二日志项;最后,服务器并行地将第一日志项写入多个段中的第一段,以及将第二日志项写入第一段。在本申请的实施例中,由于硬盘的存储空间被划分为多个段,硬盘基于段管理日志,避免了硬盘以日志文件的形式存储日志,减少了日志写入过程中文件锁的开销,提高了日志写入的效率;除此之外,多个日志项可以被并行的写入一个段,避免了在日志文件中写入日志项所需的加锁过程,提高了日志并行写入硬盘的效率。
本申请提供的日志系统可以实现第一方面和第一方面中任一种可能实现方式的日志管理方法的操作步骤,有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的一种日志系统的结构示意图;
图2为本申请提供的一种日志管理方法的流程示意图一;
图3为本申请提供的一种硬盘的划分示意图;
图4为本申请提供的一种日志写入的示意图一;
图5为本申请提供的一种日志管理方法的流程示意图二;
图6为本申请提供的一种日志写入的示意图二;
图7为本申请提供的一种日志写入的示意图三;
图8为本申请提供的一种日志管理方法的流程示意图三;
图9为本申请提供的一种日志管理装置的结构示意图;
图10为本申请提供的一种通信设备的结构示意图。
具体实施方式
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍。
在通常的技术方案中,多读多写日志系统用于读写业务数据的预写式日志,基于日志系统提供的添加、读取等接口,上层应用只需要很少的工作量便可以方便地实现自身的应用层方法,同时由日志系统保证上层应用所需要的强一致性、数据持久性、故障原子性和事务隔离性等特征。
然而,基于闪存阵列的分布式日志系统(a shared log design for flashclusters,CORFU)以文件的形式存储日志,每个日志文件存储特定数目(例如,1000个)的日志项,日志项是用于指示日志中至少一次数据操作(如业务数据写入)记录的数据文件。通常,CORFU使用独立的文件存储日志系统元数据,对于单个日志项追加操作而言,CORFU需要对日志项所在的日志段加锁,并行读写性能差。最后,对于所有的日志追加操作,CORFU都需要将新日志项所要写入的日志文件进行加锁,导致日志写入速度较慢。
下面将结合附图对本申请实施例的实施方式进行详细阐述。
图1为本申请提供的一种日志系统的结构示意图,该日志系统100包括至少一个服务器,客户端120可以利用网络访问日志系统100中的服务器以存取日志数据,该网络的通信功能可以由交换机或路由器实现。在一种可能的示例中,客户端也可以通过有线连接与服务器通信,例如,快捷外围组件互连(peripheral component interconnect express,PCIe)高速总线。
客户端120可以是运行有应用程序的计算机,该运行有应用程序的计算机可以是物理机,也可以是虚拟机。例如,若该运行有应用程序的计算机为物理计算设备,该物理计算设备可以是服务器或终端(Terminal)。其中,终端也可以称为终端设备、用户设备(userequipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端可以是手机、平板电脑、笔记本电脑、桌面电脑、个人通信业务(personal communicationservice,PCS)电话、台式计算机、虚拟现实(Virtual Reality,VR)终端设备、增强现实(Augmented Reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对客户端120所采用的具体技术和具体设备形态不做限定。
本申请实施例所提供的日志系统可以为分布是存储系统或集中式存储系统。
在一种可能的情形中,图1所示出的日志系统100可以为分布式存储系统。如图1所示,本实施例提供的分布式存储系统包括计算存储一体化的存储集群。存储集群包括一个或多个服务器(如图1所示出的服务器110A和服务器110B),各个服务器之间可以相互通信。
这里以图1所示出的服务器110A进行说明,服务器110A是一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。示例的,先进精简指令(Advanced ReducedInstruction Set Computer Machines,ARM)服务器或者X86服务器都可以作为这里的服务器110A。在硬件上,如图1所示,服务器110A至少包括处理器112、内存113、网卡114和硬盘105。处理器112、内存113、网卡114和硬盘105之间通过总线连接。其中,处理器112和内存113用于提供计算资源。具体地,处理器112是一个中央处理器(central processing unit,CPU),用于处理来自服务器110A外部(应用服务器或者其他服务器)的数据访问请求(如写日志请求),也用于处理服务器110A内部生成的请求。示例性的,处理器112接收写日志请求时,会将这些写日志请求中的数据暂时保存在内存113中。当内存113中的数据总量达到一定阈值时,处理器112将内存113中存储的数据发送给硬盘105进行持久化存储。除此之外,处理器112还用于数据进行计算或处理等。图1中仅示出了一个处理器112,在实际应用中,处理器112的数量往往有多个,其中,一个处理器112又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
内存113是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(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)等。另外,内存113还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,存储服务器110A中可配置多个内存113,以及不同类型的内存113。本实施例不对内存113的数量和类型进行限定。此外,可对内存113进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存113中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
硬盘105用于提供存储资源,例如存储日志等。它可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。示例的,硬盘105可以是基于非易失性内存主机控制器接口规范(Non-Volatile Memory Express,NVMe)的固态硬盘,如NVMe SSD。
服务器110A中的网卡114用于与客户端120或其他应用服务器(如图1所示出的服务器110B)通信。
在一种实施方式中,处理器112的功能可以卸载到网卡114上。换言之,在该种实施方式中,处理器112不执行日志读写的操作,而是由网卡114来完成日志读写、地址转换以及其他计算功能。
这里以图1所示出的服务器110B为例进行说明,图1所示出的网卡114可以包括处理单元1141和内存1142。此时,网卡114是一个智能网卡。处理单元1141可以是CPU,也可以是其他芯片,该其他芯片可以是,但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
内存1142可以是指是指与处理器直接交换数据的内部存储器,它可以随时读写日志,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存1142既可以是随机存取存储器,也可以是ROM。举例来说,随机存取存储器是DRAM或者SCM。内存还可以包括其他随机存取存储器,例如SRAM等。而对于只读存储器,举例来说,可以是PROM、EPROM等。另外,内存1142还可以是DIMM,即由DRAM组成的模块,还可以是SSD。实际应用中,网卡114中可配置多个内存1142,以及不同类型的内存1142。本实施例不对内存1142的数量和类型进行限定。此外,可对内存1142进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存1142中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
例如,在某些应用场景中,网卡114也可能具有持久化内存介质,如持久性内存(persistent memory,PM),或者非易失性随机访问存储器(non-volatile random accessmemory,NVRAM),或者相变存储器(phase change memory,PCM)等。CPU用于执行地址转换以及读写日志等操作。内存用于临时存储将要写入硬盘105的数据,或者从硬盘105读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如数据处理单元(dataprocessing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processingunit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。网卡114和硬盘105之间没有归属关系,网卡114可访问网卡114所在的服务器110B中任意一个硬盘105,因此在存储空间不足时扩展硬盘会较为便捷。
智能网卡可以是通用型的智能网卡,例如配备8个处理器核和2×100千兆比特每秒(giga bits per second,Gb/s)的网络带宽的网卡,此类网卡可以运行完整的操作系统。
智能网卡还可以是面向特定应用的智能网卡,该网卡可以是基于FPGA或ASIC的智能网卡,例如用于深度神经网络加速的GPU和NPU等。关于服务器110B的其他硬件可以参考服务器110A的相关内容,此处不予赘述。
在另一种可能的情形中,本申请实施例所提供的日志系统也可以为计算存储分离的存储集群,该存储集群包括计算设备集群和存储设备集群,计算设备集群包括一个或多个计算设备,各个计算设备之间可以相互通信。计算设备可以是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,计算设备可以包括处理器、内存和网卡等。其中,处理器是一个CPU,用于处理来自计算设备外部的数据访问请求,或者计算设备内部生成的请求。示例性的,处理器接收用户发送的写日志请求时,会将这些写日志请求中的日志暂时保存在内存中。当内存中的日志数据总量达到一定阈值时,处理器将内存中存储的日志数据发送给存储设备进行持久化存储。除此之外,处理器还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。
作为一种可选的实现方式,本申请实施例所提供的日志系统也可以为集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎。引擎是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。示例的,引擎中可以有一个或多个控制器,在一种可能的示例中,若引擎具有多个控制器,任意两个控制器之间可以具有镜像通道,实现任意两个控制器互为备份的功能,从而避免硬件故障导致集中式存储系统的不可用。引擎还包含前端接口和后端接口,其中,前端接口用于与集中式存储系统中的计算设备通信,从而为计算设备提供存储服务。而后端接口用于与硬盘通信,以扩充集中式存储系统的容量。通过后端接口,引擎可以连接更多的硬盘,从而形成一个非常大的存储资源池。
为了提高日志写入的效率,下面在图1所示出的日志系统100的基础上,本申请实施例提供一种日志管理方法,请参见图2,图2为本申请提供的一种日志管理方法的流程示意图一,客户端21可以实现图1所示出的客户端120的功能,该日志管理方法由处理器22执行,该处理器22可以是图1所示出的服务器110A中的处理器112,也可以是服务器110B中网卡114包括的处理单元1141,该日志管理方法包括以下步骤。
S210,处理器22将硬盘的存储空间划分为多个段。
该多个段是指硬盘中用于存储日志的多个日志段(log segment)。该多个段中的一个段包括一个或多个物理块,该一个段可以用于存储日志。
这里以对图1所示出的硬盘105进行划分为例进行说明,如图3所示,图3为本申请提供的一种硬盘的划分示意图,该硬盘105可以是一个或多个闪存芯片(chip)的封装。一个闪存芯片(chip)内部可以包括一个或多个die,一个die可包含多个区域(plane)。如图3所示,一个die内部分成了2个Plane,而且2个Plane内的block编号是单双交叉的,因此在操作时,可以进行一单一双交叉操作来提升性能。一个plane包含多个物理块(block)。而一个block由若干个页(page)组成。以一个16千兆字节(giga bytes,GB)容量的闪存芯片为例,每4314*8=34512个cell逻辑上形成一个page,每个page中可以存放4千字节(kilo bytes,KB)的内容和218字节(byte,B)的错误检查和纠正(error correcting code,ECC)校验数据,page也是输入输出(input output,IO)操作的最小单位。每128个page组成一个block,每个2048个block组成一个plane,一整片闪存芯片由两个plane组成,一个plane存储奇数序号的block,另一个则存储偶数序号的block,两个plane可以并行操作。这只是一个示例,page的尺寸,block的容量,闪存芯片的容量都可以有不同的规格,本实施例不予限定。
处理器22往block中写入数据,当一个block写满的时候,硬盘105的主控会挑选下一个Block继续写入。页(page)是数据写入的最小单位。换言之,主控是以页(page)为粒度往block里面写入数据的。block是数据擦除的最小单位;主控在擦除数据时,每次只能擦除整个block。
上述的一个段可以包括一个或多个物理块(block),如图3所示,第一包括2个物理块(block),第二段包括1个物理块(block)。值得注意的是,上述实施例仅为本申请提供的可能的实现方式,图3是以一个段包括整数个block为例进行说明的,但在另一些可能的示例中,一个段也可以包括部分block,例如,若一个block包括4个page,上述的一个段可以包括3个page或2个page,上述的一个段也可以包括1个block和3个page。
在通常的技术方案中,由于CORFU采用文件系统来管理硬盘的存储空间,在日志文件的读写过程中,日志追加写和日志读取为简单的读写操作,无需复杂的语义,因此,CORFU采用文件系统会引入大量的文件管理开销,如文件锁(强制访问文件只能由一个用户或在任何特定时间访问),导致处理资源和存储资源的浪费。
在日志读写过程中,相较于CORFU基于文件粒度为日志文件加文件锁,在本申请的实施例中,硬件的存储空间被划分为多个段,处理器可以基于段来管理日志,避免了为文件系统中的日志文件加文件锁的过程,减少了处理资源和存储资源的浪费,提高了日志读写的效率。
在一种可能的情形中,处理器22划分硬盘的存储空间的过程可以只进行一次,示例的,若日志系统首次进行日志读写,则处理器22可以将日志系统中用于存储日志项的存储空间进行划分,得到上述的多个段。
在另一种可能的情形中,处理器22划分硬盘的存储空间的过程可以进行多次,示例的,日志系统中可以设置一个定时器,该定时器可以是一个计算机软件指令,当时间达到定时器设定的周期的情况下,处理器22对日志系统中硬盘的存储空间进行划分。
换句话说,处理器22对硬盘的存储空间进行划分的过程可以依据日志系统实际的使用需求进行设置或调整,本申请对此不予限定。例如,若处理器22接收到客户端发送的划分指令,则处理器22还可以依据该划分指令对硬盘的存储空间进行划分。
S220,客户端21向处理器22发送第一写日志请求和第二写日志请求。
本申请实施例所提供的写日志请求是指包括待写入日志项的数据写入请求,示例的,该第一写日志请求包括第一日志项,第二写日志请求包括第二日志项。
值得注意的是,本申请的实施例是以日志系统连接有一个客户端为例进行说明的,但在一些可能的示例中,多个写日志请求可以是两个或两个以上的客户端向处理器发送的,如上述的第一写日志请求和第二写日志请求可以是两个不同的客户端向处理器发送的。
在一种可选的实现方式中,本申请提供的第一日志项包括描述信息和数据信息,该描述信息包括第一写日志请求的日志序列号(log sequencer number,LSN)、日志项长度(length)以及日志项长度校验和(log length checksum),该数据信息用于指示第一日志项记录的日志内容。
在本申请实施例提供的日志管理方法中,日志可以包括一个或多个日志项,一个日志段可以存储一个或多个日志项,每个日志项记录有该日志的部分日志内容,该日志内容是指日志中第一日志项记录的事件,例如,该第一日志项的日志内容可以是客户端在第一时间执行了应用程序(application,APP)的开启操作;又如,上述第二日志项的日志内容可以是客户端在第二时间执行了APP的关闭操作。本申请实施例中的日志是指业务数据,或业务数据的副本或快照或克隆等。
如图4所示,图4为本申请提供的一种日志写入的示意图一。该硬盘中的第一日志项包括描述信息和数据信息,该描述信息包括日志项长度校验和、日志项长度以及第一写日志请求的LSN。该日志项长度校验和用于确定该第一日志项的完整性和准确性,日志项长度用于确定第一日志项所占据的存储空间大小,LSN用于指示第一写日志请求的日志添加操作的序号。在一些可能的示例中,第一日志项包括的描述信息也可以称为第一日志项的元数据信息。
日志项包括的数据信息是指该日志项所记录的日志内容,通常情况下,日志项记录的日志内容可以是指硬盘的待存储数据的操作类型、接收该存储数据的时间,或该待存储数据的访问地址等中一种或几种的组合。该待存储数据是指硬盘要存储的内容数据,如该内容数据可以是流媒体文件。该待存储数据的格式与写日志请求所包含的日志项的格式不同。
请继续参见图2,在处理器22接收到第一写日志请求和第二写日志请求之后,本申请实施例提供的日志管理方法还包括步骤S230。
S230,处理器22并行地将第一日志项写入多个段中的第一段,以及将第二日志项写入第一段。
在处理器将第一日志项写入第一段的过程中,或者在处理器将第二日志项写入第一段的过程中没有执行加锁机制。锁(lock)是一种同步机制,锁开销(lock overhead)包括锁占用的内存空间,处理器初始化和销毁锁、获取和释放锁的时间等。应用程序使用的锁越多,相应的锁开销越大。
锁的粒度确定了每个锁所保护的数据量的大小,在通常的技术方案中,由于CORFU采用基于文件粒度的锁对日志文件进行加锁,因此,在多个日志项并行写入硬盘中日志文件的过程中,该日志文件被加锁,则CORFU每次只能将该多个日志项中一个日志项写入该日志文件中,导致该多个日志项的写入速度较慢。
相较于通常技术中日志系统执行文件锁机制,导致多个日志项无法并行写入硬盘的问题,本申请的实施例所提供的日志管理方法,由于处理器没有对硬盘执行加锁机制,因此,处理器可以并行地将第一日志项和第二日志项写入硬盘的第一段,提高了处理器将多个日志项并行写入硬盘的效率。
如此,在本申请实施例所提供的日志管理方法中,硬件的存储空间被划分为多个段,处理器可以基于段来管理日志,避免了为文件系统中的日志文件加文件锁的过程,减少了处理资源和存储资源的浪费,提高了日志读写的效率;此外,由于处理器没有对硬盘执行加锁机制,因此,处理器可以并行地将第一日志项和第二日志项写入硬盘的第一段,提高了处理器将多个日志项并行写入硬盘的效率。
若上述实施例提供的日志管理方法中,处理器22为图1所示出的网卡114中的处理单元1141,则在日志读写的过程中,网卡114可以实现本申请所提供的日志管理方法。
在一种可能的示例中,网卡114采用直接内存访问(direct memory access,DMA)技术来访问数据。例如,在本示例中,处理单元1141利用DMA技术访问网卡114所在服务器110B中硬盘105的日志段以读写日志,实现直接硬盘访问,以减少在日志读写过程中,网卡114与处理器112的交互(如日志请求复制和传输等),提高了日志读写的效率。
在另一种可能的示例中,网卡114采用远程直接内存访问(remote direct memoryaccess,RDMA)技术来访问数据。例如,在本示例中,处理单元1141利用RDMA技术访问日志系统中除网卡114所在服务器服务器110A外的其他服务器110B中硬盘105的日志段以读写日志,实现远程直接硬盘访问,以减少在日志读写过程中,网卡114与该服务器110B中的处理器112交互,再由该服务器110B中的处理器112与该服务器110B的硬盘105交互的过程,提高了日志读写的效率。
如此,由服务器中网卡的处理单元来实现本申请实施例所提供的日志管理方法,可以减少服务器中CPU的处理资源消耗,从而提高服务器中CPU处理其他数据的效率。
作为一种可选的实现方式,在日志写入的过程中,处理器还可以对写日志请求进行排序,请继续参见图4,图4中的处理器可以实现本申请所提供的日志管理方法,该处理器中可以包括处理单元和内存储器,该内存储器中设置有排序器(sequencer),该排序器可以是一个计算机软件(如应用程序或线程等),该排序器集成有日志排序功能的硬件电路。该排序器可以为日志系统中的日志进行全局排序,使得日志系统中所有的日志是全局有序的,有利于日志系统中各服务器基于每个日志的LSN实现一致性快照、跨区的原子更新等操作
如图4所示,硬盘的存储空间包括元数据区和日志段(segement)区域。
该元数据区用于存储硬盘中每个日志段的元数据信息。如图4所示,该元数据区中的元数据信息包括段头、头LSN和段尾,段头用于指示日志段在硬盘中的起始存储地址,头LSN用于指示日志段中第一个日志项的LSN,段尾用于指示日志段在硬盘中的结束存储地址。
该日志段区域被划分为3个日志段(第一段、第二段和第三段),每个日志段可以存储一个或多个日志项。如图4所示,第一段中存储有第三日志项。
在处理器接收到第一写日志请求和第二写日志请求之后,由排序器对第一写日志请求和第二写日志请求进行排序,如第一写日志请求中第一日志项的LSN为第一LSN,第二写日志请求中第二日志项的LSN为第二LSN。
值得注意的是,图4所示出的排序器是设置在处理器的内存储器中,但在一些可能的示例中,为了降低该处理器的处理资源占用,该排序器还可以是设置在客户端中,或是设置在另一个处理器中,如该另一个处理器用于对客户端发送的写日志请求进行排序,本申请对此不予限定。
为了确定第一段在硬盘包括的多个段中的位置,在处理器22并行将第一日志项和第二日志项写入第一段之前,本申请实施例还提供一种确定第一段的实施例,示例的,处理器22可以将第一写日志请求的LSN与日志索引进行匹配,以确定第一写日志请求包括的第一日志项待写入的段是第一段。该日志索引用于指示第一段与LSN的对应关系。
在一种可能的实现方式中,上述的日志索引存储在处理器的缓存中。如图1所示,该缓存可以是内存1142,该内存1142可以是DRAM。在日志写入过程中,处理单元1141可以读取缓存(内存1142)中的日志索引,从而快速确定写日志请求包括的日志项所要写入的段,减少了日志写入所需的路径查询时间,提高了日志写入的效率。
在另一种可能的实现方式中,上述的日志索引存储在与处理器连接的其他缓存中。例如,该其他缓存包括一个或多个缓存,处理器可以利用DMA或RDMA技术从该其他缓存中读取该日志索引,进而,处理器将写日志请求的LSN与该日志索引进行匹配,确定写日志请求包括的日志项所要写入的段,减少了日志写入所需的路径查询时间,提高了日志写入的效率。又如,上述的其他缓存可以是一个分布式内存系统,处理器通过访问该分布式内存系统以读取上述的日志索引。
作为一种可选的实施方式,上述的日志索引包括第一索引和第二索引。
如图4所示,第一索引可以被称为一级索引或分段缓存索引(segment cacheindex),第一索引用于指示第一段在硬盘中的存储地址范围。示例的,该第一索引指向硬盘的多个段中第一段对应的二级索引和该日志段的起始存储地址。具体的,该第一索引包括硬盘中多个段的标识,该多个段中每个段存储的第一个日志项(或称段首日志项)的LSN,和该第一个日志项所对应的起始存储地址。在一些可能的示例中,若硬盘还包括其他段(如图4所示出的第二段和第三段),第一索引还用于指示其他段在硬盘中的存储地址范围。如下表1所示,该第一索引可以包括段标识,段首日志项的LSN,以及段首日志项的起始存储地址。
表1
段标识 段首日志项的LSN 起始存储地址
第一段 001 0000 0000H
第二段 101 0001 0000H
第三段 201 0010 0000H
其中,尾部的H用于指示起始存储地址是以十六进制的形式来表示的。
第一段中段首日志项的LSN为001,起始存储地址为0000 0000H;该第一段指示的存储地址范围为:0000 0000H~0000 FFFFH。
第二段中段首日志项的LSN为101,起始存储地址为0001 0000H;该第二段指示的存储地址范围为:0001 0000H~0001 FFFFH。
第三段中段首日志项的LSN为201,起始存储地址为0001 0001;该第三段指示的存储地址范围为:0010 0000H~0010 FFFFH。
如图4所示,第二索引可以被称为二级索引或日志项缓存索引(log entry cacheindex),第二索引用于至少一个存储地址范围中每个日志项的LSN和存储地址之间的对应关系。该第二索引包括硬盘中一个或多个段中每个日志项的LSN和存储地址之间的对应关系。
在第一种可能的示例中,该第二索引包括硬盘的一个段中每个日志项的LSN和存储地址之间的对应关系,如表2所示,该第二索引包括图4所示出的第一段中每个日志项的LSN和存储地址。
表2
Figure BDA0003142382910000131
例如,该第二索引包括有4个日志项,这4个日志项的LSN和存储地址之间的对应关系分别为:001-0000 0000H,002-0000 0010H,003-0000 0011H,004-0000 0030H。
在第二种可能的示例中,该第二索引包括硬盘的多个段中每个日志项的LSN和存储地址之间的对应关系,如该第二索引包括图4所示出的第一段和第二段中每个日志项的LSN和存储地址。关于日志项的LSN和存储地址之间的对应关系可以参考上述表2的相关内容,此处不予赘述。
由于处理器的缓存的存储容量较小,使得缓存中无法存储大量的索引数据,在本申请实施例所提供的日志管理方法中,日志索引包括第一索引和第二索引,处理器可以先对第一索引和第二索引中任一个进行优先匹配,若匹配成功,则可以避免处理器查找日志索引中所有的数据,减少日志写入所需的路径查询时间,提高日志写入效率。
在本申请中,由于处理器利用日志索引确定第一日志项所要存储的第一段,而无需使用文件系统确定第一日志项所要存储的日志文件,减少了文件系统所导致的存储管理开销,进而减少了日志写入所需的存储路径查询时间,提高了日志写入的效率。
另外,在处理器将第一日志项写入第一段的过程中,由于硬盘存储日志时没有引入文件系统,因此,在处理器并行写入多个日志项的情况下,处理器无需为该多个日志项所要写入的多个日志段上锁,减少了处理器为每个日志段设置文件锁的过程,提高了日志写入的效率。
为了确定第一日志项和第二日志项待写入的第一段,本申请提供一种可能的具体实现方式,如图5所示,图5为本申请提供的一种日志管理方法的流程示意图二,在上述的S220之后,处理器将第一写日志请求的LSN与日志索引进行匹配确定第一段的过程包括以下步骤S221~S223。
S221,判断第一写日志请求的LSN与第三日志项的LSN是否连续。
该第三日志项为第二索引记录的任意一个日志项。如表2所示,该第三日志项可以是指LSN为004的日志项,该第三日志项的起始存储地址为0000 0030H。
通常,处理器采用追加写(append)的方式将日志写入日志系统,在本申请的示例中,处理器依据第二索引中第三日志项的LSN,确定第一写日志请求的LSN是否与第一写日志请求的LSN连续,进而,若第一写日志请求的LSN与第三日志项的LSN连续,则执行S222;若第一写日志请求的LSN与第三日志项的LSN不连续,则执行S223。
S222,将第三日志项所在的段作为第一段。
若第二索引中第三日志项的LSN与第一写日志请求的LSN连续,处理器将第三日志项所在的段作为第一段,从而,处理器利用追加写(append)的方式将第一写日志请求包括的第一日志项写入第一段,避免了处理器从文件系统中查找第一写日志请求包括的第一日志项的待写入文件,减少了日志写入过程所需的写入路径查询时间,提高了日志写入的效率。
S223,将第一写日志请求的LSN与第一索引进行匹配确定第一段。
该第一段中第一个日志项(段首日志项)的LSN与第一写日志请求的LSN匹配,在本示例中,“匹配”是指第一写日志请求的LSN处于第一段的LSN范围内,该LSN范围对应第一段的存储地址范围。如表1所示,第一段的段首日志项(第一个日志项)的LSN为001,第二段的段首日志项的LSN为101,第三段的段首日志项的LSN为201,则第一段所对应的LSN范围为“001~100”,第二段所对应的LSN范围为“101~200”。
例如,若第一写日志请求的LSC为“001~100”中任意一个,则确认第一写日志请求包括的第一日志项待写入的段为第一段。
又如,若第一写日志请求的LSC为“101~200”中任意一个,则确认第一写日志请求包括的第一日志项待写入的段为第二段。
值得注意的是,上述的S221~S223仅为本申请实施例提供的一种可能的确定第一段的方式,不应理解为对本申请的限定。
在本申请的实施例中,处理器先将第一写日志请求的LSN与第二索引包括第三日志项的LSN进行匹配,若第一写日志请求的LSN与第三日志项的LSN连续,则处理器无需将第一写日志请求的LSN与第一索引匹配,相较于处理器将第一写日志请求与文件系统的目录进行匹配,减少了大量的路径查询时间,提高了日志写入的效率。
在日志读取的过程中,处理器也可以先将读日志请求的LSN与第二索引进行匹配,若匹配成功(命中),则处理器可以依据第二索引确定读日志请求所要读取的日志项所在的存储地址,减少了日志读取所需的路径查询时间,提高了日志读取的效率。若读日志请求的LSN未在第二索引中命中,则处理器可以依据第一索引确定读日志请求所要读取的日志段,通过遍历该日志段得到读日志请求对应的日志项,避免了处理器将在文件系统中查询读日志请求的存储地址,提高了日志读取的效率。
作为一种可选的实现方式,为了提高日志写入的准确性,本申请实施例提供一种可能的实施例,如图5所示,图5给出了上述图2所示出的S230中处理器将第一日志项写入第一段的实现方式,上述的S230可以包括以下步骤。
S2301,处理器22依据第一写日志请求的LSN生成起始存储地址。
该起始存储地址处于第一段的存储地址范围。根据表1所示出的内容,若第一段的存储地址范围为0000 0000H~0000 FFFFH,若该第一写日志请求的LSN与第一段的段首日志项的LSN(001)连续,则该起始存储地址可以为0000 0010H。
S2302,处理器22依据起始存储地址将第一日志项写入第一段。
在处理器将日志项写入硬盘的过程中,首先依据写日志请求的LSN生成起始存储地址,再依据起始存储地址将写日志请求包括的日志项写入硬盘中,避免了处理器随机的将日志项写入硬盘,保证了日志写入的准确性。
作为一种可选的实现方式,处理器可以原子地将日志项写入硬盘。“原子地写入”可以理解为处理器按照预设的读写单位将日志项写入硬盘,该预设的读写单位可以是指硬盘的日志读写单位,该硬盘的日志读写单位是指处理器读写硬盘中日志项的最小数据粒度,该硬盘的日志读写单位可以根据硬盘的类型来设置,也可以根据或用户的需求进行调整,如4KB,8KB或16KB等。
在一种可能的示例中,在上述的S2301之前,处理器还判断写日志请求的日志项长度是否小于或等于硬盘的日志读写单位。若写日志请求的日志项长度小于或等于硬盘的日志读写单位,则执行上述的S2301。
在另一种可能的示例中,若写日志请求的日志项长度(如12KB)大于硬盘的日志读写单位(如4KB),如图6所示,图6为本申请提供的一种日志写入的示意图二,处理器将写日志请求包括的日志项划分为多个子日志,该多个子日志中每个子日志的日志项长度与硬盘日志读写单位一致;进而,处理器依据写日志请求的LSN生成多个子日志中每个子日志的起始存储地址。关于处理器依据LSN生成起始存储地址的过程可以参考S2301的示例,此处不予赘述。
在本示例中,多个子日志中每个子日志包括待写入日志项的描述信息,该描述信息与写日志请求中的描述信息一致,关于描述信息的内容可以参考图4的相关内容,此处不再赘述。
在一种可能的情形中,为区分上述的多个子日志,处理器还可以为每个子日志分配一个子序列号,该子序列号用于指示子日志在待写入日志项(如第一日志项或第二日志项)中的相对位置。
在写日志请求包括的日志项的日志项长度较大的情况下,处理器可以依据硬盘的日志读写单位写入多个子日志,即使在处理器直接将写日志请求包括的日志项的过程中硬盘和处理器断电,已经被处理器写入硬盘的子日志不会被处理器重复写入(或读取),减少了硬盘的存储资源消耗,提高了硬盘的存储资源利用效率。
在本申请的实施例中,处理器可以依据硬盘的日志读写单位将写日志请求包括的待写入日志项进行拆分,进而,处理器原子地生成每个子日志的起始存储地址,由于处理器基于未采用文件系统的日志段粒度读写日志,因此,处理器无需为日志段进行加锁,从而实现了处理器并行追加写入硬盘的过程,减少日志写入所需的时间,提高了日志写入的效率。
作为另一种可选的实现方式,若第一段的剩余存储空间小于写日志请求的日志项长度,处理器还可以将写日志请求的一部分内容写入第一段,将写日志请求的另一部分内容写入第二段,该第二段为硬盘中与第一段具有被连续读取的关联关系的日志段。继而,处理器将硬盘中的日志尾地址设置为第二段中第一个日志项的起始存储地址。
如图7所示,图7为本申请提供的一种日志写入的示意图三,若第一段的剩余存储空间小于写日志请求的日志项长度,处理器将写日志请求包括的待写入日志项划分为多个子日志,将一部分内容(如图7所示出的子序列号为1和2的子日志)写入第一段,并将另一部分内容(如图7所示出的子序列号为3的子日志)写入与第一段具有被连续读取的关联关系的第二段中。
如图7所示,若第二段所指示的存储空间未被全部占用,则第二段还包括有空白区域,该空白区域可以用于存储其他日志项。
在本申请的实施例中,日志尾地址是以最后一个日志所在的日志段的段首日志项的起始存储地址来表示的。
值得注意的是,图7示出的内容是以处理器将写日志请求包括的待写入日志项写入两个日志段为例进行说明的,但在一些可能的情形中,处理器还可以将待写入日志项写入更多个日志段,本申请对此不予限定。
也就是说,在本申请的实施例中,对于日志添加操作,只有当日志项需要被存储到新分配的日志段(如上述的第二段)时,才需要更新日志尾所在日志段的起始存储地址。例如,设置日志段的大小为32MB,日志系统中日志尾在其日志段的偏移为“31×1024×1024+1024×1024-3×1024”。如果,这个时候客户端进行4KB的日志追加操作,则处理器需要分配新的日志段存储该日志项,并更新日志尾所在日志段的起始存储地址。在其他情况下,如日志项无需被存储到新分配的日志段,处理器不需要更新日志尾所在日志段的起始存储地址。
如此,本申请实施例提供的上述日志管理方法中,日志尾地址可以用日志尾所在日志段的起始存储地址来表示,避免了文件系统中每次添加日志都需要更新日志尾地址的过程,减少了日志添加所需的日志尾地址的随机小写操作,提高了日志写入的效率。
为了保证日志系统的高可用,客户端在写入日志的过程中,还可以对日志进行备份。如图8所示,图8为本申请提供的一种日志管理方法的流程示意图三,图8所示出的主节点810和从节点820为图1所示出的日志系统100中任意一个服务器或存储设备,如该主节点810是服务器110B,从节点820是服务器110A。图8中的各时间标记的含义如下表3所示。
表3
Figure BDA0003142382910000161
图8中的(a)示出了通常技术中日志写入所需花费的时间,该总时间为T总(通常)=2T1+T2+2T3+2T4。
图8中的(b)示出了本申请所提供的日志管理方法中日志写入所需花费的时间,该总时间为T总(本申请)=2T1+T2+T3+T4。
请参见图8中(b),若处理器22为图8所示出的主节点210,在主节点810依据第一写日志请求的LSN生成起始存储地址之后,即T2之后,主节点810向从节点820发送第一写日志请求的LSN和起始存储地址。从节点820可以依据该第一写日志请求的LSN和起始存储地址,将第一写日志请求包括的第一日志项写入第一段中,其具体过程可以参考上述图2~图7的相关内容,此处不予赘述。
也就是说,在日志系统具有多个存储设备的情况下,若处理器22为主节点810,主节点810向从节点820发送写日志请求的LSN和起始存储地址,并由从节点820依据该写日志请求的LSN和起始存储地址,将写日志请求包括的日志项写入第一段中,避免了主节点810的日志写入完成后再去从节点820备份,提高了多写场景的写入效率。
作为一种可选的实现方式,若上述实施例中的处理器22为图8所示出的从节点820,在处理器22(从节点820)接收第一写日志请求之后,该处理器22还可以接收备份设备(主节点810)发送的第一写日志请求的LSN和起始存储地址,进而,处理器22依据该第一写日志请求的LSN和起始存储地址,将第一写日志请求包括的第一日志项写入第一段中,其具体过程可以参考上述图2~图7的相关内容,此处不予赘述。
也就是说,在日志系统具有多个存储设备的情况下,若处理器22为从节点820,处理器22在接收到客户端发送的写日志请求之后,还可以接收备份设备(主节点810)发送的写日志请求的LSN和起始存储地址,并由处理器22(从节点820)依据该写日志请求的LSN和起始存储地址,将写日志请求包括的日志项写入第一段中,避免了主节点810的日志写入完成后再去从节点820备份,提高了多写场景的写入效率。
本申请实施例提供的日志管理方法,在从节点820将写日志请求包括的日志项写入硬盘之后,从节点820还可以向客户端发送日志写入响应,日志写入响应用于指示已将写日志请求包括的日志项(如上述的第一日志项和第二日志项)写入硬盘。如此,客户端可以依据从节点820反馈的日志写入响应确定本轮日志添加操作已经完成,避免客户端重复向日志系统发送写日志请求,造成写日志请求的重复备份,节省日志系统的存储资源,提高日志系统的存储资源利用率。
具体的,本申请将日志管理方法中的控制(LSN和起始存储地址)和数据(日志项)分离,对于日志添加操作,客户端可并发地将写日志请求发送到主节点810和从节点820,主节点810收到写日志请求后,生成对应的日志项序列号和日志项起始存储地址,并发送给从节点820,主节点810和从节点820可并行持久化日志项。当持久化操作完成后,主节点810和从节点820更新日志项缓存索引(如上述的第二索引),并将确认信息(如上述的日志写入响应)发送给客户端。当客户端收到所有节点的确认信息后,确定日志添加操作完成。
对于日志读操作,客户端可任意向主节点和从节点进行读取,这可以减少客户端对主节点所在服务器的网卡的带宽占用,有效提高主节点所在服务器的带宽利用率。
可以理解的是,为了实现上述实施例中功能,网络设备和终端设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
图9为本申请提供的一种日志管理装置的结构示意图。该日志管理装置900可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该日志管理装置900可以是如图2所示的处理器22,也可以是如图1所示出的服务器110A、服务器110B或网卡114,还可以是应用于服务器的模块(如芯片),如图1所示出的处理器112或处理单元1141。
如图9所示,该日志管理装置900包括处理模块910、通信模块920和索引模块930。该日志管理装置900用于实现上述图2~图8中所示的方法实施例中处理器或硬盘的功能。
当日志管理装置900用于实现图2所示的方法实施例中处理器22的功能时:处理模块910用于执行S210和S230;通信模块920用于执行S220。
当日志管理装置900用于实现图5所示的方法实施例中处理器22的功能时:处理模块910用于执行S210和S2301~S2302;通信模块920用于执行S220,索引模块930用于执行S221~S223。
有关上述处理模块910、通信模块920和索引模块930更详细的描述可以直接参考图2~图8所示的方法实施例中相关描述直接得到,这里不加赘述。
图10为本申请提供的一种通信设备的结构示意图,该通信设备1000可以实现图2~图8所示出的日志管理方法的操作步骤。该通信设备1000包括处理器1010和接口电路1020。处理器1010和接口电路1020之间相互耦合。可以理解的是,接口电路1020可以为收发器或输入输出接口。
本申请实施例中不限定上述通信接口1020、处理器1010以及存储器1030之间的具体连接介质。本申请实施例在图10中以通信接口1020、处理器1010以及存储器1030之间通过总线1040连接,总线在图10中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,通信设备1000还可以包括存储器1030,用于存储处理器1010执行的指令或存储处理器1010运行指令所需要的输入数据或存储处理器1010运行指令后产生的数据,如存储器1030可以用于存储上述的日志索引。存储器1030可用于存储软件程序及模块,如本申请实施例所提供的日志管理方法对应的程序指令/模块,处理器1010通过执行存储在存储器1030内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口1020可用于与其他设备进行信令或数据的通信。在本申请中该网络设备1000可以具有多个通信接口1020。
当通信设备1000用于实现图2~图8所示的方法时,处理器1010用于执行上述处理单元910的功能,接口电路1020用于执行上述收发单元920的功能。
可以理解的是,本申请的实施例中的处理器可以是CPU、NPU或GPU,还可以是其它通用处理器、DSP、ASIC、FPGA或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
如图10所示,本申请所提供的通信设备1000可以是网卡(如图1所示出的网卡114)、服务器、手机、平板电脑、笔记本电脑或桌面电脑等。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、闪存、ROM、PROM、EPROM、EEPROM、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,SSD。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本申请说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上,其它量词与之类似。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。此外,对于单数形式“a”,“an”和“the”出现的元素(element),除非上下文另有明确规定,否则其不意味着“一个或仅一个”,而是意味着“一个或多于一个”。例如,“a device”意味着对一个或多个这样的device。再者,至少一个(at least one of).......”意味着后续关联对象中的一个或任意组合,例如“A、B和C中的至少一个”包括A,B,C,AB,AC,BC,或ABC。在本申请的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本申请的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

Claims (22)

1.一种日志管理方法,其特征在于,包括:
将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块,所述一个段用于存储日志;
接收第一写日志请求和第二写日志请求,所述第一写日志请求包括第一日志项,所述第二写日志请求包括第二日志项;
并行地将所述第一日志项写入所述多个段中的第一段,以及将所述第二日志项写入所述第一段。
2.根据权利要求1所述的方法,其特征在于,在所述将所述第一日志项写入所述第一段的过程中或者在所述将所述第二日志项写入所述第一段的过程中没有执行加锁机制。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述第一写日志请求的日志序列号LSN与日志索引进行匹配,确定所述第一日志项待写入的段是所述第一段,所述日志索引用于指示所述第一段与所述LSN的对应关系。
4.根据权利要求3所述的方法,其特征在于,所述日志索引包括第一索引和第二索引,所述第一索引用于指示所述第一段在所述硬盘中的存储地址范围,所述第二索引用于至少一个所述存储地址范围中每个日志项的LSN和存储地址之间的对应关系;
将所述LSN与日志索引进行匹配确定所述第一段,包括:
判断所述LSN与第三日志项的LSN是否连续,所述第三日志项为所述第二索引记录的任意一个日志项;
若所述LSN与所述第三日志项的LSN连续,将所述第三日志项所在的段作为所述第一段;
若所述LSN与第三日志项的LSN不连续,将所述LSN与所述第一索引进行匹配,确定所述第一段,所述第一段中第一个日志项的LSN与所述第一写日志请求的LSN匹配。
5.根据权利要求3或4所述的方法,其特征在于,所述日志索引存储在缓存中。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述第一日志项包括描述信息和数据信息,所述描述信息包括所述第一写日志请求的LSN、日志项长度以及日志项长度校验和,所述数据信息用于指示所述第一日志项记录的日志内容。
7.根据权利要求6所述的方法,其特征在于,将所述第一日志项写入所述第一段,包括:
依据所述第一写日志请求的LSN生成起始存储地址,所述起始存储地址处于所述第一段的存储地址范围;
依据所述起始存储地址将所述第一日志项写入所述第一段。
8.根据权利要求7所述的方法,其特征在于,在依据所述第一写日志请求的LSN生成起始存储地址之后,所述方法还包括:
向备份设备发送所述第一写日志请求的LSN和起始存储地址。
9.根据权利要求1-8中任一项所述的方法,其特征在于,在所述接收第一写日志请求之后,所述方法还包括:
接收备份设备发送的所述第一写日志请求的LSN和起始存储地址;
依据所述第一写日志请求的LSN和所述起始存储地址,将所述第一日志项写入所述第一段。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述方法还包括:
向客户端发送日志写入响应,所述日志写入响应用于指示已将所述第一日志和所述第二日志写入所述第一段。
11.一种日志管理装置,其特征在于,包括:
处理模块,用于将硬盘的存储空间划分为多个段,一个段包括一个或多个物理块,所述一个段用于存储日志;
通信模块,用于接收第一写日志请求和第二写日志请求,所述第一写日志请求包括第一日志项,所述第二写日志请求包括第二日志项;
所述处理模块,还用于并行地将所述第一日志项写入所述多个段中的第一段,以及将所述第二日志项写入所述第一段。
12.根据权利要求11所述的装置,其特征在于,在所述将所述第一日志项写入所述第一段的过程中或者在所述将所述第二日志项写入所述第一段的过程中没有执行加锁机制。
13.根据权利要求11或12所述的装置,其特征在于,所述装置还包括:
索引模块,用于将所述第一写日志请求的日志序列号LSN与日志索引进行匹配,确定所述第一日志项待写入的段是所述第一段,所述日志索引用于指示所述第一段与所述LSN的对应关系。
14.根据权利要求13所述的装置,其特征在于,所述日志索引包括第一索引和第二索引,所述第一索引用于指示所述第一段在所述硬盘中的存储地址范围,所述第二索引用于至少一个所述存储地址范围中每个日志项的LSN和存储地址之间的对应关系;
所述索引模块,具体用于判断所述LSN与第三日志项的LSN是否连续,所述第三日志项为所述第二索引记录的任意一个日志项;
若所述LSN与所述第三日志项的LSN连续,所述索引模块,具体用于将所述第三日志项所在的段作为所述第一段;
若所述LSN与第三日志项的LSN不连续,所述索引模块,具体用于将所述LSN与所述第一索引进行匹配,确定所述第一段,所述第一段中第一个日志项的LSN与所述第一写日志请求的LSN匹配。
15.根据权利要求13或14所述的装置,其特征在于,所述日志索引存储在缓存中。
16.根据权利要求11-15中任一项所述的装置,其特征在于,所述第一日志项包括描述信息和数据信息,所述描述信息包括所述第一写日志请求的LSN、日志项长度以及日志项长度校验和,所述数据信息用于指示所述第一日志项记录的日志内容。
17.根据权利要求16所述的装置,其特征在于,所述处理模块,具体用于依据所述第一写日志请求的LSN生成起始存储地址,所述起始存储地址处于所述第一段的存储地址范围;
所述处理模块,具体用于依据所述起始存储地址将所述第一日志项写入所述第一段。
18.根据权利要求17所述的装置,其特征在于,所述通信模块,还用于向备份设备发送所述第一写日志请求的LSN和起始存储地址。
19.根据权利要求11-18中任一项所述的装置,其特征在于,所述通信模块,还用于接收备份设备发送的所述第一写日志请求的LSN和起始存储地址;
所述处理模块,还用于依据所述第一写日志请求的LSN和所述起始存储地址,将所述第一日志项写入所述第一段。
20.根据权利要求11-19中任一项所述的装置,其特征在于,所述通信模块,还用于向客户端发送日志写入响应,所述日志写入响应用于指示已将所述第一日志和所述第二日志写入所述第一段。
21.一种通信设备,其特征在于,包括芯片,所述芯片包括处理器和存储器,所述存储器用于存储计算机指令,当所述处理器执行该计算机指令时,以使所述通信设备执行权利要求1-10中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序或指令,当所述计算机程序或指令被处理器或通信设备执行时,实现如权利要求1至10中任一项所述的方法。
CN202110744793.8A 2021-04-22 2021-06-30 一种日志管理方法及装置 Pending CN115237854A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/140172 WO2022222523A1 (zh) 2021-04-22 2021-12-21 一种日志管理方法及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2021104363733 2021-04-22
CN202110436373 2021-04-22

Publications (1)

Publication Number Publication Date
CN115237854A true CN115237854A (zh) 2022-10-25

Family

ID=83666063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110744793.8A Pending CN115237854A (zh) 2021-04-22 2021-06-30 一种日志管理方法及装置

Country Status (2)

Country Link
CN (1) CN115237854A (zh)
WO (1) WO2022222523A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361306B1 (en) * 2012-12-27 2016-06-07 Emc Corporation Managing concurrent write operations to a file system transaction log
CN103729442B (zh) * 2013-12-30 2017-11-24 华为技术有限公司 记录事务日志的方法和数据库引擎
CA2952971C (en) * 2014-06-26 2021-03-30 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US10127260B2 (en) * 2014-11-25 2018-11-13 Sap Se In-memory database system providing lockless read and write operations for OLAP and OLTP transactions
WO2018233820A1 (en) * 2017-06-21 2018-12-27 Huawei Technologies Co., Ltd. SYSTEMS AND METHODS FOR MANAGING JOURNAL STRUCTURE

Also Published As

Publication number Publication date
WO2022222523A1 (zh) 2022-10-27

Similar Documents

Publication Publication Date Title
US20160085585A1 (en) Memory System, Method for Processing Memory Access Request and Computer System
US20150113230A1 (en) Directory storage method and query method, and node controller
CN112632069B (zh) 哈希表数据存储管理方法、装置、介质和电子设备
WO2023035646A1 (zh) 一种扩展内存的方法、装置及相关设备
CN110457261B (zh) 数据访问方法、装置及服务器
CN113360093B (zh) 内存系统和设备
CN116431530B (zh) 一种cxl内存模组、内存的处理方法及计算机系统
US20220253252A1 (en) Data processing method and apparatus
CN115729849A (zh) 内存管理方法及计算设备
US20170300255A1 (en) Method and Apparatus for Detecting Transaction Conflict and Computer System
US20240104014A1 (en) Data management method, and storage space management method and apparatus
US20240070120A1 (en) Data processing method and apparatus
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
CN115793957A (zh) 写数据的方法、装置及计算机存储介质
CN115079936A (zh) 一种数据写入方法及装置
WO2023000696A1 (zh) 一种资源分配方法及装置
CN115237854A (zh) 一种日志管理方法及装置
US20150212759A1 (en) Storage device with multiple processing units and data processing method
CN116560560A (zh) 存储数据的方法和相关装置
CN115712581A (zh) 数据访问方法、存储系统及存储节点
CN110413235B (zh) 一种面向ssd去重的数据分配方法及系统
CN111190543B (zh) 一种线程间共享nvdimm存储资源的存储方法及系统
US20230376427A1 (en) Memory system and computing system including the same
CN115878308A (zh) 一种资源调度方法及装置
KR20170114991A (ko) 비휘발성 메모리를 이용한 로깅 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination