用于管理存储器中的数据的系统和方法

文档序号:10552917阅读:594来源:国知局
用于管理存储器中的数据的系统和方法
【专利摘要】本发明涉及一种用于管理存储器中的数据的系统和方法。提供一种用于处理将记录添加到日志的命令的失败的计算机程序产品、系统和方法。所述日志在日志地址处具有记录。所述日志中的每个记录具有键和值,并且所述日志地址映射到所述存储器中的物理地址。发送用于所述日志中指定日志地址处的记录的要添加到所述日志中选定日志地址的键和值对的第一命令。响应于未接收到所述选定日志地址,发送设置了重发参数的用于所述指定日志地址处的所述记录的所述键和值对的第二命令。响应于接收设置了所述重发参数的所述第二命令,扫描所述日志以确定具有所述键和值对的日志地址。返回所确定的日志地址。
【专利说明】
用于管理存储器中的数据的系统和方法
技术领域
[0001 ]本发明涉及一种用于处理将记录添加到日志的命令的失败的计算机程序产品、系统和方法。
【背景技术】
[0002]在日志结构化存储系统中,对数据的更新未被就地写入,而是被写入到新的逻辑和物理地址。数据可以存储在键-值存储库中,其中数据存储在非结构化记录中,非结构化记录包括与该记录关联的键加上值。日志中具有记录的键和日志地址的索引可以用于针对该记录在日志中查找日志地址。每个索引条目具有在命名空间或数据集中唯一的索引键以及日志中的数据的地址。
[0003]在日志结构化存储器中,更新被写入日志的一端,并且保持日志中的记录的先前版本。当日志中的日志地址处的条目不再具有标识该日志地址的对应索引条目时,日志中的条目被认为未使用并且可以被执行垃圾收集。

【发明内容】

[0004]提供一种用于处理将记录添加到日志的命令的失败的计算机程序产品、系统和方法。所述日志在日志地址处具有记录。所述日志中的每个记录具有键和值,并且所述日志地址映射到存储器中的物理地址。发送用于所述日志中指定日志地址处的记录的要添加到所述日志中选定日志地址的键和值对的第一命令。响应于未接收到所述选定日志地址,发送设置了重发参数的用于所述指定日志地址处的所述记录的所述键和值对的第二命令。响应于接收设置了所述重发参数的所述第二命令,扫描所述日志以判定在所述指定日志地址之后是否存在具有所述第二命令的所述键和值对的已确定的日志地址。响应于判定所述已确定的日志地址具有所述第二命令的所述键和值对,返回所述已确定的日志地址。
【附图说明】
[0005]图1示出存储环境的一个实施例;
[0006]图2示出索引条目的一个实施例;
[0007]图3示出日志存储器中的记录的一个实施例;
[0008]图4示出逻辑到物理映射的一个实施例;
[0009]图5示出PUT命令的一个实施例;
[0010]图6示出用于发送将记录添加到日志的命令的操作的一个实施例;
[0011 ]图7示出用于处理将记录添加到日志的命令的操作的一个实施例;以及
[0012]图8示出可以应用本发明的实施例的计算系统的框图。
【具体实施方式】
[0013]如果从一个系统发送将记录添加到在另一个系统上维护的日志的命令,则可能可以将记录添加到日志,但发送命令的系统并未接收记录被成功添加到日志的确认。如果发送系统只是重发命令,并且如果接收命令的系统在首次发送命令时成功将记录添加到日志并且然后针对重发的命令再次将重发的相同记录添加到日志,则可能在日志中两次定位相同记录。如果系统仅将记录的一个重复副本识别为记录的当前或实时版本,则在具有垃圾收集的系统中的崩溃恢复之后,这些重复的日志条目可能导致错误状态。因此在删除重发的记录的情况下,如果未删除两个副本(包括初始失败尝试和重新尝试的记录添加),则数据可能错误地重新出现。
[0014]所描述的实施例通过以下操作解决上面的问题:使系统重发具有重发参数的用于添加记录的命令,该重发参数指示该命令包括先前发送的命令(针对其未接收到完成确认)的重发。响应于接收具有设置的重发参数的命令,管理日志的接收系统然后可以扫描日志,以便查看是否存在具有重发的命令中的相同键和值的记录。日志管理器可以将记录所在的日志地址返回给命令发送者,而不是响应于重发的命令将记录添加到日志,以便避免针对重发的命令将记录的重复副本添加到日志。
[0015]图1示出存储环境,其具有管理数据在一个或多个存储设备102上的存储的存储管理器环境100。主机系统(未示出)可以将输入/输出(I/O)请求传送到存储管理器100以便访问存储设备102中的数据。存储管理器100可以包括存储服务系统104和索引服务系统106,它们通过连接108通信。系统104和106可以包括在相同或不同机壳中的不同物理或虚拟系统。
[0016]存储服务系统104包括存储服务110组件,其用于管理具有记录的日志112,这些记录标识存储在存储设备102中的各位置处的数据。存储服务110维护逻辑到物理映射400,其将日志112中的记录的日志地址映射到存储设备102中的物理地址。索引服务系统106包括索引服务116,其维护允许在日志112中进行键-日志地址查找的索引200。索引服务116指示具有记录的当前版本的日志地址,这些当前版本具有日志地址的指示键。日志112可以包括连续日志,其中将新记录添加到该日志的一端,即,最近使用端,在图1中示出为条目112e。存储服务110使用索引200在日志112中查找记录,以便判定日志112中的日志地址处的记录是具有记录的当前版本还是实时版本。如果未在索引200中指示日志地址,则该日志地址将没有记录的当前版本或实时版本。
[0017]在接收对与具有提供的键和值的记录关联的数据的请求时,存储服务110可以调用索引服务116以便在索引200中查找具有该指定键的记录的日志地址。通过从索引返回的这些日志地址,存储服务110可以从返回的日志地址确定具有被请求记录的键和值的日志地址记录。从日志112中的日志地址,存储服务110可以使用逻辑到物理映射400确定存储设备102之一中的物理地址,在该物理地址处存储了逻辑地址处的记录的数据。进一步,可以将来自主机的写入请求定向到索引服务116以便确定要更新的被请求地址在索引200中的索引条目。
[0018]存储服务系统104可以经由连接120与存储设备102通信。连接108和120可以包括一个或多个网络,例如局域网(LAN)、存储区域网络(SAN)、广域网(WAN)、对等网络、无线网络、因特网、内联网等。备选地,连接120可以包括总线接口,例如外围组件互连(PCI)总线或串行接口。
[0019]存储设备102可以包括不同类型或类别的存储设备,例如包括固态电子设备的固态存储设备(SSD)、EEPROM(电可擦式可编程只读存储器)、闪存、闪存盘、随机存取存储器(RAM)驱动器、存储级存储器(SCM)、相变存储器(PCM)、电阻随机存取存储器(RRAM)、自旋转移力矩存储器(STM-RAM)、导电桥接RAM(CBRAM)、硬磁盘驱动器、光盘、磁带等。存储设备102可以进一步被配置成设备阵列,例如简单磁盘捆绑(JBOD)、直接存取存储设备(DASD)、独立磁盘冗余阵列(RAID)阵列、虚拟化设备等。进一步,存储设备102可以包括来自不同供应商或来自同一供应商的异构存储设备。
[0020]图1将存储服务110和索引服务116示为可以具有不同操作系统的单独系统104和106中的组件。备选地,存储服务110和索引服务116可以在由同一操作系统管理的同一系统中。存储服务110和索引服务116可以在操作系统内核空间或用户空间中执行。
[0021]图2示出在索引200中并且包括键202和日志地址204对的索引条目200i的实例的一个实施例,其中日志地址204标识由索引条目200,标识的记录在日志112中的位置。尽管可以在日志112中具有记录(S卩,唯一键-值对)的多个版本,但索引200将针对一个键和日志地址仅包括一个索引条目200,,以便提供具有记录的当前版本的日志地址。日志112中其日志地址未被包括在索引200中的键-值对的其它记录包括记录的非活动或先前版本,这些版本映射到存储设备102中不具有由该记录标识的数据的最新版本的物理地址。
[0022]图3示出包括在日志112中并且包括键302和值304对的记录300i的实例的一个实施例。记录300i可以包括指向日志112中的记录的先前版本(如果有)的指针。在由于失败而未被记录的PUT命令的情况下,反向链将跳过未被记录的记录。日志112可以按连续顺序存储记录,因此将新记录添加到日志的一端,例如图1中所示的条目112e。记录300,可以进一步指示键大小和值大小。
[0023]图4示出在逻辑到物理映射400中并且包括逻辑地址402和存储设备102之一中的对应设备物理地址404的条目400i的一个实施例。设备物理地址404可以包括网络地址(例如,网际协议地址、MAC地址)、唯一设备ID和存储设备102中的物理位置。这样,映射400根据具体情况将日志112中的日志112地址或条目映射到跨多个存储设备102或单个存储设备102中的物理地址。例如,如果具有两个存储设备,则日志112可以包括这样的抽象:其规定将数据存储在第一存储设备中的连续地址中,然后将数据存储在第二存储设备中的地址中。在备选实施例中,逻辑到物理映射400可以根据在逻辑到物理映射400中实现的预定义序列,提供在存储设备之间交替的连续日志地址映射,以便在不同存储设备中交错存储数据。
[0024]图5示出索引服务108用于将新记录添加到日志112e的一端或者是日志112的最近使用端的任何位置的PUT命令500的一个实施例。PUT命令500包括PUT命令码502、键504、键值506、由键504和值506更新的记录的日志地址508以及重发参数510,重发参数510指示该PUT命令是否正在重发具有相同键504、值506和指定日志地址508的先前发送的HJT命令500 ο如果针对先前发送的HJT命令500未接收到响应,则重发HJT命令500。
[0025]PUT命令500导致存储服务110将具有键504和值506的记录添加到日志112e的最近使用端。存储服务110可以返回日志112^中向其中添加日志地址508的记录的位置的日志地址。在使用日志地址112e之后,递增日志地址112e以便指向下一个日志地址。
[0026]在图5的实施例中,可以在PUT命令本身500中包括要包括在新记录中的键504和值506,以便替换指定日志地址508处的记录300i。在备选实施例中,键504和值506可以不包括在命令500中,但从另一个位置存取以便在日志地址112e处添加到日志112。这样,添加到日志地址112e的记录替换指定日志地址508,因此使得指定日志地址成为记录的非当前或较旧版本。
[0027]索引服务116可以针对日志中的地址从主机接收键和新值,并且然后使用PUT命令500将该键和新值添加到日志。进一步,索引服务116可以使用PUT命令将记录从日志112中的当前日志地址移动到MRU端112e,以便用于更新数据之外的目的,例如回收日志地址以实现垃圾收集。
[0028]当将记录添加到日志112(例如日志地址112e)时,可以将该记录的数据复制到存储设备102中的位置,该位置根据用于已使用的日志地址112e的逻辑到物理映射条目^(^而映射到最近使用的日志地址112e。进一步,索引服务116针对指定日志508地址更新索引条目200,以便指示向其中添加记录的新日志地址112e,以使得该索引指示日志112中具有记录的当前版本的日志地址。
[0029]图6示出由存储管理器100组件(例如索引服务116)执行的用于发送命令(例如PUT命令500)以便将记录添加到日志112的操作的一个实施例。控制开始(在方框600)于索引服务116发送具有针对日志中指定日志地址添加键和值对的命令类型的第一命令(例如,PUT命令500)。如果(在方框602)响应于该命令而接收向其中写入记录的返回的日志地址,则索引服务116更新(在方框604)索引200以便使用用于返回的日志地址和键的条目200替换用于指定日志地址506的条目200,。可以通过更新指定日志地址506的当前索引条目200,替换指定日志地址506的条目,以便指示返回的日志地址或者删除指定日志地址506的条目或使其无效,并且针对返回的日志地址添加新的索引条目200。如果(在方框602)例如在超时时段之后未接收到对发送的命令的响应,则索引服务116重发(在方框606)具有先前发送的键504、值506和当前日志地址508的该命令类型的进一步命令,该命令具有设置的重发参数510以便指示这是重发命令500。如果在超时时段内未接收到响应,则索引服务116可以将命令500重发多次或重发有限次数。
[0030]图7示出由存储管理器100(例如存储服务110)执行的用于处理从索引服务116或其它组件发送的命令500的操作的一个实施例。在接收(在方框700)命令500时,存储服务110判定(在方框702)该命令是否具有设置的重发参数510。如果是,则这是命令500的重发,并且存储服务110从指定日志地址508或者从检查点扫描(在方框704)日志112,该检查点指示这样的点:已验证日志地址,直到该点为止。扫描日志112以便判定是否存在具有命令500中指示的重发的键504和值506对的日志地址。如果(在方框706)存在已经具有该重发命令中的重发的键504和值506的已确定的日志地址,则响应于先前发送的命令500而先前已将该记录添加到日志,但由于某种原因索引服务116未从存储服务110接收到命令500已完成的确认。没有确认的原因可以是由于网络通信故障、错误或某个其它计算错误。如果(在方框706)扫描未导致定位具有重发的键504和值506的已确定的日志地址,则存储服务110可能无法执行或完成处理先前发送的命令500。
[0031]如果(在方框706)重发的键504和值506对已经存在于日志112中,则将已确定的日志地址返回(在方框708)到命令发送者,因为先前已将重发的键504和值506对添加到日志
112。否则,如果扫描日志112未定位先前发送的键504和值506或者如果(从方框702的否分支)未设置重发参数510,则存储服务110将重发的键504和值506对添加(在方框710)到日志112中选定日志地址处(例如日志112的MRU端112e处)的记录。将选定日志地址返回(在方框712)到接收的命令。
[0032]在图6和7的所描述的实施例中,由分别位于单独系统104和106上的存储服务110和索引服务116执行操作,其中在系统之间可能具有通信故障,该故障阻止存储服务110将向其中添加记录的选定日志地址返回给索引服务116。在一个备选实施例中,可以由同一或不同系统上的不同组件执行这些操作。进一步,在图6和7的实施例中,命令500包括PUT命令500。在备选实施例中,可以针对PUT命令之外的命令类型执行命令处理。
[0033]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0034]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是一但不限于一电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROMS闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0035]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0036]用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如Ja va、Sma Iltalk、C++等,以及常规的过程式编程语言一诸如“(Γ语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0037]这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0038]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0039]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0040]附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0041]图8示出可以应用本发明的实施例的计算系统的框图。存储管理器100组件(例如图1的系统104和106)可以在一个或多个计算机系统(例如图8中所示的计算机系统802)中实现。计算机系统/服务器802可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的资源或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器802可以在通过通信网络链接的远程处理设备执行资源的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地和远程计算机系统存储介质两者上。
[0042]如图8所示,计算机系统/服务器802以通用计算设备的形式表现。计算机系统/月艮务器802的组件可以包括但不限于:一个或者多个处理器或者处理单元804,系统存储器806,连接不同系统组件(包括系统存储器806和处理器804)的总线808。总线808表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系架构包括但不限于工业标准体系架构(ISA)总线,微通道体系架构(MCA)总线,增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0043]计算机系统/服务器802典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器802访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0044]系统存储器806可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)810和/或高速缓冲存储器812。计算机系统/服务器802可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统813可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在一些情况下,每个组件可以通过一个或者多个数据介质接口与总线808相连。如下面进一步示出和描述的,存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例的功能。
[0045]具有一组(至少一个)程序模块816的程序/实用工具814,可以存储在存储器806中,这样的程序模块816包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。计算机802的组件可以实现为程序模块816,这些程序模块通常执行在此描述的本发明实施例的功能和/或方法。
[0046]计算机系统/服务器802也可以与一个或多个外部设备818(例如键盘、指向设备、显示器820等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器802交互的设备通信,和/或与使得该计算机系统/服务器802能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 822进行。并且,计算机系统/服务器802还可以通过网络适配器824与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器824通过总线808与计算机系统/服务器802的其它组件通信。应当明白,尽管图中未示出,其它硬件和/或软件组件可以与计算机系统/服务器802—起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0047]出于示例和说明目的提供了本发明的各个实施例的上述说明。其并非旨在是穷举的或将本发明限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在本发明的范围并非由此详细说明来限制,而是由此后所附的权利要求来限制。以上说明、实例和数据提供了对本发明的组成部分的制造和使用的完整说明。由于可以在不偏离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明存在于此后所附的权利要求之内。
【主权项】
1.一种用于管理存储器中的数据的系统,包括: 处理器;以及 计算机可读存储介质,其具有包含在其中的计算机可读程序代码,当所述计算机可读程序代码被执行时执行操作,所述操作包括: 提供在日志地址处具有记录的日志,其中所述日志中的每个记录包括键和值,并且其中所述日志地址映射到所述存储器中的物理地址; 发送用于所述日志中指定日志地址处的记录的要添加到所述日志中选定日志地址的键和值对的第一命令; 响应于未接收到所述选定日志地址,发送设置了重发参数的用于所述指定日志地址处的所述记录的所述键和值对的第二命令; 响应于接收设置了所述重发参数的所述第二命令,扫描所述日志以便判定在所述指定日志地址之后是否存在具有所述第二命令的所述键和值对的已确定的日志地址;以及响应于判定所述已确定的日志地址具有所述第二命令的所述键和值对,返回所述已确定的日志地址。2.如权利要求1所述的系统,其中所述第一和第二命令具有相同命令类型,其中所述操作进一步包括: 判定具有所述命令类型的任何接收的命令是否包括所设置的重发参数; 响应于判定所接收的命令不包括所述重发参数,将所接收的命令的所述键和值添加到所述日志中的选定日志地址;以及 将所述选定日志地址返回给所接收的未设置所述重发参数的命令。3.如权利要求1所述的系统,其中所述操作进一步包括: 响应于当扫描所述日志时,在所述指定日志地址之后未定位具有所述第二命令的所述键和值对的日志地址,将所述第二命令的所述记录的所述键和值添加到所述日志中的选定日志地址;以及 将所述选定日志地址返回给所述第二命令。4.如权利要求1所述的系统,其中所述操作进一步包括: 在第一系统上提供存储服务以管理所述日志; 在与所述第一系统通信的第二系统上提供索引服务以管理对所述日志中的记录的索弓I,其中所述索引中的每个索引条目标识所述记录中的一个记录在所述日志中的日志地址; 其中所述索引服务执行发送所述第一和所述第二命令的操作,并且其中所述存储服务执行扫描所述日志以及返回所述已确定的日志地址的操作。5.如权利要求4所述的系统,其中所述操作进一步包括: 响应于分别发送所述第一命令或所述第二命令,由所述索引服务接收具有所述第一或所述第二命令的所述键和值的所述记录在所述日志中的返回的日志地址;以及 由所述索引服务将所述返回的日志地址添加到对所述日志中的记录的索引,其中所述索引中的每个索引条目标识所述记录中具有当前键和值对的一个记录在所述日志中的日志地址。6.如权利要求4中所述的系统,其中所述第一和第二命令包括第一PUT命令和第二HJT命令,其中所述索引服务包括所述键、所述键的值、所述指定日志地址和未在所述第一 PUT命令中设置的所述重发参数,以及其中所述索引服务包括所述键、所述键的所述值、所述指定日志地址和在所述第二 PUT命令中设置的所述重发参数。7.—种用于管理存储器中的数据的方法,包括: 提供在日志地址处具有记录的日志,其中所述日志中的每个记录包括键和值,并且其中所述日志地址映射到所述存储器中的物理地址; 发送用于所述日志中指定日志地址处的记录的要添加到所述日志中选定日志地址的键和值对的第一命令; 响应于未接收到所述选定日志地址,发送设置了重发参数的用于所述指定日志地址处的所述记录的所述键和值对的第二命令; 响应于接收设置了所述重发参数的所述第二命令,扫描所述日志以便判定在所述指定日志地址之后是否存在具有所述第二命令的所述键和值对的已确定的日志地址;以及响应于判定所述已确定的日志地址具有所述第二命令的所述键和值对,返回所述已确定的日志地址。8.如权利要求7所述的方法,进一步包括: 提供对日志中的记录的索引,其中所述索引中的每个索引条目标识所述记录中的一个记录在所述日志中的日志地址; 响应于分别发送所述第一命令或所述第二命令,接收具有所述第一或所述第二命令的所述键和值的所述记录在所述日志中的返回的日志地址,其中将具有所述第一或所述第二命令的所述键和值的所述记录添加到所述日志中在所述返回的日志地址处的记录;以及更新所述索引以便使用用于所述返回的日志地址的索引条目替换用于所述指定日志地址的所述索引条目。9.如权利要求7所述的方法,其中在所述日志中的检查点日志地址之后扫描所述日志,其中在所述检查点之前的日志地址已被验证为在所述索引中被建立索引,并且其中在所述检查点之后的日志地址未被验证。10.如权利要求7所述的方法,其中所述第一和第二命令具有相同命令类型,所述方法进一步包括: 判定具有所述命令类型的任何接收的命令是否包括所设置的重发参数; 响应于判定所接收的命令不包括所述重发参数,将所接收的命令的所述键和值添加到所述日志中的选定日志地址;以及 将所述选定日志地址返回给所接收的未设置所述重发参数的命令。11.如权利要求7所述的方法,进一步包括: 响应于当扫描所述日志时,在所述指定日志地址之后未定位具有所述第二命令的所述键和值对的日志地址,将所述第二命令的所述记录的所述键和值添加到所述日志中的选定日志地址;以及 将所述选定日志地址返回给所述第二命令。12.如权利要求7所述的方法,其中所述选定日志地址位于所述日志的新条目被添加到的最近使用端处。13.如权利要求7所述的方法,其中所述存储器包括多个存储设备,其中所述日志地址映射到所述多个存储设备中的物理地址,并且其中所述日志中的所述记录的数据被存储在所述存储设备中映射到标识所述记录的所述日志地址的所述物理地址处。14.如权利要求7所述的方法,进一步包括: 在第一系统上提供存储服务以管理所述日志; 在与所述第一系统通信的第二系统上提供索引服务以管理对所述日志中的记录的索弓I,其中所述索引中的每个索引条目标识所述记录中的一个记录在所述日志中的日志地址; 其中所述索引服务执行发送所述第一和所述第二命令的操作,并且其中所述存储服务执行扫描所述日志以及返回所述已确定的日志地址的操作。15.如权利要求14所述的方法,进一步包括: 响应于分别发送所述第一命令或所述第二命令,由所述索引服务接收具有所述第一或所述第二命令的所述键和值的所述记录在所述日志中的返回的日志地址;以及 由所述索引服务将所述返回的日志地址添加到对所述日志中的记录的索引,其中所述索引中的每个索引条目标识所述记录中具有当前键和值对的一个记录在所述日志中的日志地址。16.如权利要求14所述的方法,其中所述第一和第二命令包括第一PUT命令和第二 HJT命令,其中所述索引服务包括所述键、所述键的值、所述指定日志地址和未在所述第一 PUT命令中设置的所述重发参数,以及其中所述索引服务包括所述键、所述键的所述值、所述指定日志地址和在所述第二 PUT命令中设置的所述重发参数。17.如权利要求15所述的方法,其中所述存储服务进一步执行: 响应于判定所接收的命令不包括所述重发参数,或响应于当扫描所述日志时未定位所述指定日志地址之外的具有所述第二命令中的所述键和值对的日志地址,将具有用于所述第一或第二命令的所述键和值的记录添加到所述日志中的选定日志地址;以及 将所述选定日志地址返回给所述第一或第二命令,从而导致将具有分别用于所述第一或第二命令的所述键和值的所述记录添加到所述选定日志地址。18.如权利要求17所述的方法,其中所述存储服务进一步执行: 响应于将所述键和值添加到所述选定日志地址,删除所述存储器中所述指定日志地址映射到的物理地址处的记录。
【文档编号】G06F17/30GK105912557SQ201610090390
【公开日】2016年8月31日
【申请日】2016年2月18日
【发明人】L·Y·基乌, P·H·明奇, S·瑟哈德里
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1