组表格的数据冲洗

申请号 CN201380071540.2 申请日 2013-03-28 公开(公告)号 CN104937564B 公开(公告)日 2017-09-12
申请人 慧与发展有限责任合伙企业; 发明人 D.L.福伊特;
摘要 一种组表格包括一个或多个组。接收包括同步地址范围的同步命令。通过同步地址范围是否被包括在一个或多个组中来确定一个或多个组的被冲洗的顺序数据。
权利要求

1.一种冲洗数据的节点,包括:
组表格,所述组表格包括一个或多个组,所述组中的每个与组地址范围相关联,所述组地址范围将被映射到非易失性存储器NVM的存储器位置;以及
控制器,用以接收具有关联的同步地址范围的同步命令并且由所述控制器根据所述组表格确定的顺序来将数据从高速缓存冲洗到NVM,其中
所述控制器将基于同步地址范围是否被包括在组地址范围中的一个中来确定控制器冲洗数据的顺序以及控制器冲洗数据中的哪个中的至少一个。
2.如权利要求1所述的节点,其中,
组表格的组中的每个与传送属性相关联,以及
所述控制器将基于传送属性的类型来进一步确定控制器冲洗数据的顺序以及控制器冲洗数据中的哪些中的至少一个。
3.如权利要求1所述的节点,其中,
控制器将响应于同步命令来将所冲洗的数据传送到另一节点,
组地址范围中的每个与准备标记相关联,以及
控制器将在相关联的组范围被传送之前设置相关联的组地址范围的准备标记。
4.如权利要求3所述的节点,其中,
所述节点包括虚拟存储器VM表,所述表包括与脏标记相关联的地址,所述脏标记在写操作在相关联的地址上执行的情况下被设置;
所述控制器基于所述VM表中其脏位标记被设置的地址之一来确定同步地址范围。
5.如权利要求4所述的节点,其中,
控制器将在到其他节点的相关联的组地址范围的传送完成之后重置准备标记,以及控制器将在重置所有准备标记之后重置脏标记以指示到其他节点的传送完成。
6.如权利要求5所述的节点,其中,
控制器将最后传送同步地址范围,以及
控制器将在同步地址范围被传送到其他节点之后,将标志传输到其他节点以指示已经达到一致性点。
7.如权利要求3所述的节点,其中,
所述组表格中的组中每个与传送属性相关联,所述传送属性包括从不值、总是值和有条件值中的至少一个,
从不值指示响应于同步命令将不传送相应的组,
总是值指示响应于同步命令将传送相应的组,以及
有条件值指示如果同步命令的类型是主,则才传送相应的组。
8.如权利要求7所述的节点,还包括:
子组表格,其包括一个或多个子组,所述子组中的每个将与子组地址范围和准备标记相关联,其中
子组地址范围中的每个被包括在组表格的组地址范围中的一个中,以及子组中的每个将与写时复制COW标记相关联,如果将对相应的子组地址范围的数据的副本执行对相应的子组地址范围的写,则将设置COW标记。
9.如权利要求8所述的节点,其中,
子组地址范围被包括在与传送属性的有条件值相关联的组表格的组中,针对子组地址范围的准备标记的值代替针对包括子组地址范围的组地址范围的准备标记的值,
如果同步地址范围被包括在子组地址范围中,则控制器将在子组地址范围之前传送包括子组地址范围的组地址范围并且将在同步地址范围之前传送子组地址范围。
10.如权利要求8所述的节点,还包括:
COW引擎,用以响应于CPU对子组地址范围的写操作来生成与子组地址范围相关联的数据的副本,其中
如果COW标记被设置并且同步命令的类型是主,则数据的副本被写到NVM。
11.如权利要求1所述的节点,还包括:
日志单元,
其中响应于所述同步命令,所述控制器把被冲洗的数据放置在所述日志单元中;
所述日志单元用以:
把在所述日志单元中所放置的数据传送到其他节点;
存储被成功传送到其他节点的数据的列表,
如果传送中断并且然后继续,则将不重新发送被存储在列表中的数据。
12.如权利要求1所述的节点,其中,
节点包括NVM并且将从在节点外部的多个应用服务器处的多个应用接收同步命令,如果节点从第一应用服务器接收同步命令,则节点将对多个应用服务器的第一应用服务器执行操作,
操作将包括读和写相关联的应用服务器的虚拟存储器表格的脏标记、冲洗相关联的应用服务器的高速缓存以及将相关联的应用服务器的写时复制(COW)数据写到NVM中的至少一个,以及
如果第二应用服务器与第一应用服务器共享组表格,则节点将响应于第一应用服务器的同步命令来对多个应用服务器的第二应用服务器执行操作。
13.一种冲洗数据的方法,包括:
接收具有关联的同步地址范围的同步命令;
从组表格的组以及子组表格的子组中识别包括同步地址范围的子组和租,子组中的每个将被包括在组中的一个中;
按照以下顺序来冲洗数据:
首先,冲洗包括同步地址范围的组的数据,排除同步地址范围的数据和包括在包括同步地址范围的组中的子组中的任何子组的数据;
其次,冲洗包括同步地址范围的子组的数据,排除同步地址范围的数据;
接着,冲洗同步地址范围的数据;以及
将所冲洗的数据从第一节点传送到第二节点。
14.如权利要求13所述的方法,其中,
组和子组中的每个包括具有初始地址和范围大小的地址范围,所述范围大小指示被包括在地址范围中的、在初始地址之后的连续地址的数量,
组和子组被第一节点的应用定义,以及
组中的每个与传送属性相关联,传送属性控制响应于同步命令是否将冲洗相关联的组。
15.一种存储指令的非瞬时计算机可读存储介质,所述指令如果被设备的处理器执行,则使得所述处理器:
生成包括一个或多个组的组表格,组中的每个与组地址范围和传送属性相关联;
生成包括一个或多个子组的子组表格,子组中的每个对应于一个组并与子组地址范围相关联,子组地址范围被包括在对应的组的组地址范围中的一个中;
接收包括同步地址范围的同步命令并且作为响应:
第一,将包括同步地址范围和其传送属性允许冲洗的任何组的数据冲洗到非易失性存储器NVM,排除同步地址范围以及包括在包括同步地址范围的组中的任何子组;
第二,将包括同步地址范围和其组的传送属性允许冲洗的任何子组的数据冲洗到NVM,排除同步地址范围;以及
第三,在第二冲洗之后,将同步地址范围的数据冲洗到NVM。

说明书全文

组表格的数据冲洗

背景技术

[0001] 由于在固态存储技术中的新近的创新,这样的技术正在被集成到数据系统中。数据系统的服务器可以寻求将数据写到固态存储技术或者从固态存储技术读数据。将这样的技术集成到系统中而又维持原子性(atomicity)可能对诸如管理员和/或供应者之类的用户构成挑战。附图说明
[0002] 以下详细描述参考附图,其中:
[0003] 图1是节点将数据冲洗(flush)到非易失性存储器的示例框图
[0004] 图2是第一节点将数据冲洗到非易失性存储器并且将所冲洗的数据传送到第二节点的示例框图;
[0005] 图3是节点由应用服务器共享的示例框图;
[0006] 图4是包括用于将数据冲洗到非易失性存储器的指令的计算设备的示例框图;以及
[0007] 图5是用于冲洗和传送数据的方法的示例流程图

具体实施方式

[0008] 在以下描述中给出了具体细节以提供对实施例的彻底理解。然而,应理解,可以在没有这些具体细节的情况下实行实施例。例如,可以以框图示出系统以便不以不必要的细节使得实施例不清楚。在其他实例中,可以在没有不必要的细节的情况下示出公知过程、结构和技术,以便避免使得实施例不清楚。
[0009] 诸如忆阻器(memristor)之类的非易失性存储器(NVM)技术可以提供耐久性和存储器快速访问两者。该类型的NVM可以被映射到服务器存储器空间中用于直接加载/存储访问。当将用于冗余、复制、备份和归档的全方位(full range)丰富数据(rich data)服务应用于存储器映射的存储时,可能需要建立数据的分组,其必须在多个存储器系统之内保持自相一致并且必须跨多个存储器系统保持自相一致。
[0010] 存储器一致性一般由处理器和存储器控制器本地管理。虽然现有的方法可以强制实施严格的排序和高速缓存相干性,但是针对诸如那些可能存在于应用服务器和存储服务器之间的群集的、联合的、远程复制和/或客户端/服务器关系,这些方法可能不缩放(scale)。这个的根本原因在于,如在单个处理器或对称多处理器(SMP)系统中可见的严格一致性可能对于在有限的物理范围之上维持是成本过高(cost prohibitive)的。
[0011] 当由处理器使用存储指令直接写NVM时,使用同步操作以确保足够的一致性以保证在故障或突然的电丢失(power loss)的情况下的可恢复性。同步操作通常仅指代存储器位置的单个相连(contiguous)范围。一般地,同步操作涉及到NVM的处理器高速缓存的冲洗。冲洗大量的高速缓存可以花费时间并且减少处理器写性能。可以在诸如盘阵列之类的存储产品之内使用一致性组以确保对存储(block storage)的远程复制和时间点拷贝操作维持应用级可恢复性。在存储产品中,一致性组可以由多个虚拟卷或逻辑单元编号(LUN)组成。处理器高速缓存冲洗操作以及存储器映射和同步操作可以针对存储器位置的相连范围操作。除了通过没有良好地缩放的精细粒度排序约束的严格跟踪,这些操作可能不计及在存储器位置的不相交(disjoint)范围之间的应用级一致性关联。
[0012] 实施例可以在不需要通过在一个或多个组中保留存储器范围的列表的对其接口的改变的情况下扩展同步操作的范围。这些组可以由应用定义以解决(address)它们的具体一致性要求。例如,节点可以包括组表格和控制器。所述组表格可以包括一个或多个组。组中的每个可以与组地址范围相关联。组地址范围可以被映射到NVM的存储器位置。控制器可以接收包括同步地址范围的同步命令并且可以根据由组表格确定的顺序来将数据从高速缓存冲洗到NVM。组表格可以基于同步地址范围是否被包括在组地址范围中的一个中来确定控制器冲洗数据的顺序以及控制器冲洗数据中的哪个中的至少一个。
[0013] 在一个实施例中,在包含在同步命令中指定的地址的组中的所有脏的(dirty)高速缓存地址在该同步命令期间被用最后被冲洗的同步命令的指定地址冲洗。在某些实施例中,组可以包含子组。子组中的每个可以由子组地址范围的集合组成,所述子组地址范围的集合是在组中的组地址范围的子集。当驻留在子组之内的地址被同步时,在由该子组指定的子组地址范围中的附加脏地址以及在相同组中、但不在任何子组中的可能的任何其他脏的高速缓存地址也可以被冲洗。因此实施例可以允许例如使得在子组中的元数据在相同组中的其他数据之后一致。
[0014] 组和子组可以包括跟踪信息,所述跟踪信息包括需要被传送用于复制的地址范围的位图(bit map)。同步操作可以等待所冲洗的地址的传送的完成,以便确保冗余并且针对一致应用数据镜像(image)支持丰富数据服务的操作。传送可以涉及持久的、冗余的日志,其中数据在日志中的放置构成了传输。
[0015] 因此,实施例可以通过允许应用显式地表示哪些存储器位置必须被同步在一起作为相同组的一部分来减轻将被冲洗的数据量。组的实施例可以将结构添加到数据从处理器向NVM的冲洗以及在节点之间的同步数据流的创建两者。这可以使得一致数据镜像或虚拟化的镜像能够被建立,其坚持(adhere to)应用特定规则。这些镜像然后可以被投射(cast)为各种类型的数据复制品或者被用于执行诸如解复制(deduplication)或者分类的数据分析,所述数据分析需要数据的一致和可恢复状态。
[0016] 现在参考附图,图1是节点100将数据冲洗到非易失性存储器(NVM)140的示例框图。节点100可以是例如存储设备、计算机、交换机、外壳(enclosure)、服务器、控制器和/或连接到网络的任何类型的设备的一部分或者被包括在其中。在图1的实施例中,节点100被示出包括组表格110和控制器120。进一步地,节点100被示出与高速缓存130对接并经由高速缓存130与NVM 140对接。
[0017] 节点100可以包括例如硬件设备,其包括用于实现下文描述的功能的电子电路,诸如控制逻辑和/或存储器。附加地或者作为替代,节点100可以被实现为被编码在机器可读存储介质上并且可被处理器执行的一系列指令。高速缓存130可以是任何类型的设备以存储将被写到诸如NVM 140 130的存储设备和/或从诸如NVM 140 130的存储设备读的数据132,使得可以以比存储设备的等待时间少的等待时间来服务对写和/或读数据的请求
[0018] NVM 140可以包括当关断电力时保留其数据的任何类型的设备,诸如只读存储器、闪存、电RAM(F-RAM)、大部分类型的磁性计算机存储设备(例如,硬盘软盘和磁带)和光盘以及基于忆阻器的、自旋转移矩(spin-torque transfer)以及相变随机访问存储器。例如,NVM可以包括以每字节或者每处理器高速缓存线(line)为基础读或写的存储器。
[0019] 返回到节点100,组表格110包括组112,并且组112包括组地址范围114。组地址范围114可以包括被映射到NVM 140的一个或多个存储器位置142的一个或多个地址。术语映射可以指用于将诸如NVM 140的设备的一个或多个存储器地址并入到诸如节点100的组表格110的另一设备的地址表格中的技术。虽然组表格110被示出包括单个组112并且组114被示出包括单个组地址范围114,但是组表格110的实施例可以包括多个组112并且组112的实施例可以包括多个地址范围114。
[0020] 控制器120可以接收包括同步地址范围116的同步命令。例如,应用(未示出)可能偶尔生成同步命令以便定义恢复点。可以例如经由显式调用来生成同步命令,或者在以其编写应用的语言的某些使用中,其可以是隐式的。同步操作可以遍历(traverse)到NVM 140的软件路径或硬件路径。同步地址范围116可以涉及应用希望冲洗或写回到NVM140的一个或多个地址,诸如高速缓存130处的地址。应用可以创建组112中的一个或多个以表示其大规模的数据结构,诸如数据表格、索引和日志。应用然后可以用反映应用的整体数据结构的组地址范围114填充(populate)组112。
[0021] 同步操作可以包括由处理器(未示出)执行的冲洗指令和/或被传送到NVM 140的同步命令。例如,在同步操作期间,虚拟存储器表格(未示出)、组表格110和/或子组表格(未示出)可以被用于协调除由同步命令的同步地址范围116初始引用的那些之外的附加地址(或者页)的冲洗。可以基于同步地址范围116是否被包括在组表格110的任何组112的组地址范围114中由组表格110来确定这些附加地址。
[0022] 因此,控制器120可以响应于同步命令,根据由组表格110确定的顺序来将数据132从高速缓存130选择性地冲洗到NVM 140。基于同步地址范围116是否被包括在组地址范围114中的一个中,组表格110可以确定控制器120冲洗数据的顺序以及控制器120冲洗数据中的哪些中的至少一个。根据如由组表格110确定的、保留应用级一致性的顺序,同步操作也可以将所冲洗的数据传送到诸如另一服务器的另一节点。下文将关于图2更详细地描述组表格110。
[0023] 图2是第一节点200将数据冲洗到NVM 280并且将所冲洗的数据传送到第二节点290的示例框图。在图2中,节点200包括组表格210、子组表格220、日志230、写时复制(COW)引擎240、控制器250和处理器260。处理器260还包括高速缓存265和虚拟存储器(VM)表格
270。第一节点200被示出诸如经由网络连接与第二节点290对接。
[0024] 图2的第一和第二节点200和290可以包括与图1的节点100类似的功能和/或硬件。例如,图2的组表格210和控制器250可以分别包括与图1的组表格110和控制器120相似的功能和/或硬件。进一步地,图2的高速缓存265和NVM 280可以分别包括与图1的高速缓存130和NVM 140的相似功能和/或硬件。
[0025] 处理器260可以是至少一个中央处理单元(CPU)、至少一个基于半导体微处理器、至少一个图形处理单元(GPU)、适于指令的取回(retrieval)和执行的其他硬件设备。为了执行同步操作,处理器260可以诸如经由通过高速缓存线或页冲洗写高速缓存来冲洗来自高速缓存265的数据266。到存储器位置282的写可以起源在处理器260的指令执行流线之内并且随时间传播通过在包括多级高速缓存的处理器之内的写流水线。冲洗该流水线并且确保写的排序的处理器260指令可以可用于在同步操作期间使用。
[0026] 实施例可以促进冲洗的更加选择性的使用以在可能时维持处理器流水线性能。VM表格270被示出包括虚拟地址列272、物理地址列274、脏标记列276和只读列278。VM表格270可以通过快速地标识与在虚拟地址列272处的虚拟存储器地址相关联的、在物理地址列274处的物理存储器地址来促进处理器260。
[0027] 脏标记列276诸如通过将相关联的脏标记设置为一而可以跟踪物理存储器地址中的哪些自从它们被写到NVM 280起已经被修改。可以基于与被设置的脏标记相关联的VM表格270的物理地址274来确定被包括在同步命令中的同步地址范围。取决于处理器260,当写进入或退出处理器260的流水线时,可以设置脏标记列276的脏标记。只读列278可以跟踪物理存储器地址中的哪些不能被写,诸如来陷捕(trap)对需要簿记(book-keeping)的物理存储器地址的写。例如,在可以完成正常写之前,写时复制(COW)可能需要被保留。
[0028] 除了在图1中描述的功能之外,出于复制数据并且因此在各种类型的故障的情况中维持可恢复性的目的,控制器250还可以将被写到NVM 282的存储器位置282的数据选择性地传输到诸如第二节点290的其他设备。NVM 280和/或控制器250可以跟踪脏标记以确定对诸如第二节点290的其他节点的冲洗要求和/或传送要求。
[0029] 组表格210被示出包括组编号列211、传送属性列213、初始地址列215、范围大小列217和准备标记列219。这里,组编号列211指示组表格210具有三个组1-3。组211中的每个与传送属性列213的传送属性相关联,所示传送属性确定响应于同步命令是否将冲洗相关联的组。基于传送属性的类型,组表格210可以进一步确定控制器250冲洗数据266的顺序和/或控制器250冲洗数据266中的哪个。
[0030] 例如,传送属性213可以具有从不(never)、总是(always)或有条件(conditional)的值。从不值可以指示,响应于同步命令,将不传送相应的组。总是值可以指示,响应于同步命令,将总是传送相应的组。有条件值可以指示,如果同步命令的类型是主(master),则将仅传送相应的组。因此,在图2中,响应于同步命令,可以从不传送第一组1,可以总是传送第二组2,并且仅当同步命令是主类型(如相对于正常类型的那样)时才可以传送第三组3。如以下解释的那样,当被配置成在COW模式中操作时,写被重定向到在NVM 280处的位置的副本并且正常同步操作将数据冲洗到所述副本,但是既不修改在NVM 280处的原始位置也不指定用于到NVM 280或第二节点290的传输的副本。然而,主类型同步操作可以使得在子组中的所有复制的位置被冲洗到NVM 280本身。因此,主类型同步操作可以使能通过可兼容接口与COW实现的集成并且使能复制品传输的进一步优化。
[0031] 在图1中描述的组地址范围114可以包括来自组表格210的范围大小列217的相应范围大小和来自初始地址列215的初始地址。范围大小可以指示被包括在组地址范围中的在初始地址之后的连续的地址的数量。在一个实施例中,这些地址可以是物理地址,因为它们跨访问上下文或者时间不改变。例如,这些地址可以引用在NVM 280中的相同数据存储位置而不论哪个处理器线程、进程或节点正在进行访问。更进一步地,这些物理地址可以随时间引用相同的数据存储位置而不论它们当前被映射到哪些虚拟地址。在组中的这些地址可以对应于VM表格270的物理地址列274的物理地址。
[0032] 在某些实施例中,在访问实际比特存储单元之前,这些地址215和217可以经历附加的重定向以适应在NVM实现的较低级处的各种类型的封装、编码、交织、条带化(striping)等等。其他实施例有时可以使用对应于在VM表格270的虚拟地址列272中的虚拟地址的地址215和217。另外的实施例可以使用通用独特标识符作为地址215和217的至少一部分,使得存储器位置可以按需要被翻译成多个视图(view)。虽然组地址范围由初始地址和范围大小组成,但是组地址范围的实施例可以具有任何大小和/或地址分辨率。例如,地址分辨率可以是字节、高速缓存线、高速缓存页或者其他块因子。
[0033] 组表格210的准备标记列219可以提供针对组地址范围中的每个的准备标记。准备标记可以涉及调度相关联的组地址范围到诸如第二节点290的另一节点的传送。例如,如果传送准备标记被重置或者是0,则这可以指示当前不需要传送相关联的组地址范围。另一方面,如果传送准备标记被设置或者是1,则这可以指示正在组织(orchestrate)相关联的组地址范围的传送(例如,被请求、排队或者正在进行中)。
[0034] 这里,组表格210的三个组1-3中的每个都具有不同的传送属性设置。被包含在各种组1-3中的组地址范围是非重叠的。因此,NVM 280的每个存储器位置282在至多一个组中。以初始1和2000开始的组地址范围具有设置的准备标记。因此,出于冗余、复制和/或参与其他丰富数据服务的目的,它们当前正在被传送到另一服务器。
[0035] 子组表格220被示出包括子组编号列221、COW列223、初始地址列225、范围大小列227和准备标记列229。子组220的子组编号列221、初始地址列225、范围大小列227和准备标记列229可以在功能上分别类似于组表格210的组编号列211、初始地址列215、范围大小列
217和准备标记列219。例如,子组编号列221可以列出一个或多个子组。子组中的每个可以与子组地址范围225和227以及来自准备标记列229的准备标记相关联。
[0036] 子组地址范围225和227可以由来自初始地址列225的初始地址以及来自范围大小列227的范围大小组成。子组地址范围225和227中的每个被包括在组表格210的组地址范围215和217中的一个中。因此,在子组中的每个地址也在组之一中。在该实施例中,任何子组也被整体地包含在组中的单个组之内。子组中的每个还与COW标记列223的COW标记相关联。
COW标记可以指示相应的子组使用COW操作。
[0037] 如果对相应子组地址范围的写将对对应于子组地址范围的数据的副本执行,则可以设置COW标记。例如,如果COW标记被设置,则处理器260可以在存储器位置280在VM表格270中被标记为脏的之前制作在NVM 280存储器位置282处的数据的副本(诸如地址或者地址的范围或页)。后续的读和写然后可以被重定向到所复制的数据。原始数据可以被用于在电力丢失之后恢复到一致状态。控制器250可以等待以将所复制的数据写回到NVM 280,直至响应于同步命令,所复制的数据被传送到诸如第二节点290的另一设备。
[0038] COW 240引擎可以是例如包括用于实现以下描述的功能的电子电路的硬件设备,诸如控制逻辑和/或存储器。附加地或者作为替代,COW 240引擎可以被实现为被编码在机器可读存储介质上并且可被处理器执行的一系列指令。响应于处理器260对子组地址范围225和227的写操作,COW 240引擎可以生成与子组地址范围225和227相关联的数据的副本
242。如果COW标记被设置并且同步命令的类型是主,则所述数据的副本可以被写到NVM 
280。
[0039] 被包括在组中的子组地址范围225和227与该组的传送属性相关联。这里,子组1和2是第三组3的子集,其具有有条件传送属性。因为针对子组2设置了COW标记,所以如果接收了具有被包括在子组2中的同步地址范围的主类型的同步命令,则子组2的所复制的数据将在所复制的数据被传送到第二节点290之后被写到NVM 280。
[0040] 在组和子组之间存在优先关系,使得对子组中的位置进行寻址的同步操作不应用于在其他子组中的位置。然而,所述同步操作应用于不在任何其他子组中、在相同组中的位置。这使能了管理针对某些数据结构的细粒度一致性和针对其他数据结构的粗粒度一致性的有用的能力。例如,成批数据(bulk data)可以处于组中但不处于子组中,同时有关的元数据可以处于在该相同的组之内的子组中。在该示例中,如果同步范围包括在包含元数据的子组之内的任何位置,则这可以自动地引起整个子组以及普遍(at large)在相关联的组中的成批数据的同步。
[0041] 可以首先同步非子组数据,继之以子组数据,继之以由同步地址范围指定的数据。如果子组的COW标记被设置,则所复制的数据可以被写回到NVM 280作为子组的同步的一部分。组地址范围的准备标记可以不应用于当前处于子组之内的任何位置,因为其被子组的准备标记超越(override)。针对子组地址范围225和227的准备标记的值可以代替针对包括子组地址范围225和227的组地址范围215和217的准备标记的值。
[0042] 同步操作可以包括冲洗和/或传送操作。传送操作可以跟随冲洗操作并且遵循上文关于同步描述的顺序。传送操作可以被控制器250执行,其中响应于同步命令,所冲洗的数据被传送到诸如第二节点290的另一设备。例如,如果同步地址范围被包括在子组地址范围中,则控制器250可以在子组地址范围225和227之前冲洗和传送包括子组地址范围225和227的组地址范围215和217并且可以在同步地址范围之前传送和冲洗子组地址范围225和
227。
[0043] 通过取决于以上优先描述来设置在子组或组中的准备标记,可以首先记录将被传送的组或子组地址范围。然后,在所述地址范围中的数据可以被发送到参与组的第二节点290。组和子组地址范围的准备标记可以在相应的组和/或子组地址范围在给定的同步操作期间被传送到第二节点290之后被重置,除非组和/或子组地址范围是被传送的最后的范围。
[0044] 在该情况下,控制器250可以等待以重置最后范围的准备标记,直至在完成整个传送之后。例如,如上所述,控制器250可以一般地将同步地址范围最后传送到第二节点290。然后,控制器250可以将标志或分组传输到第二节点290以指示已经达到一致性点。可恢复的一致性点可以跨多个存储器范围(诸如页或高速缓存线、多个同步操作和多个服务器)。
[0045] 最后传送准备标记的重置因此被延迟,直至标志的传送完成并且所有COW数据已经被交付到NVM 280。当传送完成时,在VM表格270中的相关联的脏标记由控制器250重置。当在子组或组中不存在与设置的准备标记相关联的更多地址范围时,传送完成。
[0046] 日志单元230可以存储被成功地传送到第二节点290的数据的列表并且还可以存储将被传送到第二节点290的数据。这里,日志单元230被示出包括初始地址列232、范围大小列234、数据列235和标志列238。日志单元230的初始地址和范围大小列232和234可以在功能上类似于组表格210的初始地址和范围大小列215和217。例如,日志单元230的初始地址和范围大小列232和234可以列出组或子组地址范围,针对其组织到第二节点290的传送。数据列236可以充当针对将被传送到第二节点290的数据的队列或缓冲器
[0047] 在相应的组和/或子组地址范围已经被成功地传送到第二节点之后,可以由控制器250设置标志列238的标志。因此,如果传送中断,诸如在电力故障期间,则控制器250可以向后检查日志单元230以确定地址范围中的哪些被成功传送。因此,控制器250可以不重新发送针对其设置了标志的数据。相反地,控制器250可以丢弃在标记被设置之后将被发送的任何数据,以便还原到之前的一致性点。进一步地,由于日志单元230充当针对数据的缓冲器,所以日志单元230可以独立于控制器250传送数据,因此释放了控制器250以执行其他操作。因此,日志单元230可以改进到第二节点290的数据传送的效率。
[0048] 可以由应用(未示出)创建、修改和/或丢弃组和子组。例如,应用可以将针对其使用的NVM空间映射到处理器的VM空间中。然后,所述应用可以使用具有引用(reference)诸如NVM 280的存储器的操作数的处理器指令访问数据。当存储器位置被写时,处理器260可以将这些位置在VM表格270之内标为脏的。在存储器映射的存储使用的这个阶段期间,应用可以创建组和/或子组,并且以存储器位置范围信息填充它们。取决于所述应用的要求,子组可以是瞬时的或者是长寿命的。
[0049] 通过允许应用显式表示哪些存储器位置作为相同组的一部分被一起同步,实施例可以减少将被冲洗和/或传送的数据的量。具有组地址范围的组的存在可以使能将由同步操作实现的应用一致性要求,同时维持同步操作语法的向后兼容性。在组之内具有子组可以使能更细粒度的高速缓存冲洗,其减少性能破坏。另外,可以在单个组之内正确地管理在子组之内以及在子组之外的地址范围。组和子组可以使能用于冗余、远程复制或者时间点复制的新近的写的更有效的传输,因为基于显式指定的应用要求和行为可以将细粒度的更新分组成较不频繁的传输。
[0050] 图3是被应用服务器310共享的节点300的示例框图。在该实施例中,两个应用服务器310-1和310-2被示出共享节点300。然而,实施例可以虑及多于或少于两个应用服务器310以共享单个节点300。这里,节点300被示出包括组表格210、子组表格220、日志单元230和NVM 280。应用服务器310的每个被示出包括COW引擎240和处理器260,其中处理器260包括高速缓存265和VM表格270。另外,应用服务器310被示出包括应用312,其负责调用同步命令以及发起对NVM 280的写。
[0051] 应用服务器310可以是需求访问节点300的NVM 280的任何类型的设备,诸如计算机的主处理器或者连接到计算机网络的计算机。例如,应用服务器310可以呈现被映射到NVM的地址空间的VM表格270以供应用312使用。继而,应用312可以需求到NVM 280的读和/或写访问。
[0052] 由于处理器260流水线数据和指令,故障或者突然的电力丢失可以导致已经由应用312操纵、但尚未被存储或交付到NVM 280的数据的损失。因此,出于保证足够的数据一致性以在故障或突然的电力损失的情况下保证可恢复性的目的,在其操作的过程期间,应用312可以生成同步命令。出于保证数据的冗余副本被存储的目的,根据本文公开的示例实现,使用由同步命令创建的同步点。诸如出于同步目的,应用服务器310-1和310-2还可以彼此直接通信,如在图3中示出的那样。进一步地,出于类似的原因,节点300还可以与另一节点(未示出)直接通信。
[0053] 虽然应用服务器310中的每个被示出包括单个应用312,但是应用服务器310的实施例可以包括多个应用312。因此,节点300可以从多个应用312和/或在节点300的外部的多个应用服务器310接收同步命令。
[0054] 例如,如果节点300从第一应用服务器310接收同步命令,则节点300可以对多个应用服务器310的第一应用服务器310-1执行操作。示例操作可以包括读和/或写相关联的应用服务器310的VM表格270的脏比特、冲洗相关联的应用服务器310的高速缓存265和/或将相关联的应用服务器310的COW数据写到NVM 280。
[0055] 进一步地,如果第二应用服务器310-2与第一应用服务器310-1共享组表格210,则响应于第一应用服务器310-1的同步命令,节点300可以对多个应用服务器310的第二应用服务器310-2执行相同操作中的至少一部分。因此,为了确保一致性的、通过应用服务器310-1中之一的同步操作可以使得同步操作的至少一部分在应用服务器310-2中的另一个中发生,因为应用服务器310-1和310-2共享组表格210而又维持单独的VM表格270。经由共享的组表格210的共享的组可以使能跨不处于相同的存储器域中的群集的应用的一致性。
因此,实施例可以应用于单个节点300,所述单个节点300向其同伴(fellow)节点复制,或者处于共享的存储器环境中。
[0056] 图4是包括用于将数据冲洗到NVM的指令的计算设备400的示例框图。在图4的实施例中,计算设备400包括处理器410和机器可读存储介质420。机器可读存储介质420进一步包括用于将数据冲洗到NVM(未示出)的指令421到426。
[0057] 计算设备400可以是例如安全微处理器、笔记本计算机、台式计算机、一体化(all-in-one)系统、服务器、网络设备、控制器、无线设备,或者能够执行指令421到426的任何其他类型的设备。在某些示例中,计算设备400可以包括或者可以连接到诸如存储器、控制器等等的附加部件。
[0058] 处理器410可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、适于取回和执行被存储在机器可读存储介质420中的指令的其他硬件设备,或者它们的组合。处理器410可以取、解码和执行指令421到426以实现将数据冲洗到NVM。作为取回和执行指令的替代或者除取回和执行指令之外,处理器410可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路,或者包括用于执行指令421到426的功能的多个电子部件的它们的组合。
[0059] 机器可读存储介质420可以是包含或存储可执行指令的任何电子、磁、光或其他物理存储设备。因此,机器可读存储介质420可以是例如随机访问存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、压缩盘只读存储器(CD-ROM)等等。这样,机器可读存储介质420可以是非瞬时性的。如以下详细描述的那样,可以以用于将数据冲洗到NVM的一系列可执行指令对机器可读存储介质420进行编码。
[0060] 此外,指令421到426当被处理器执行时(例如,经由处理器的一个处理元件或者多个处理元件),可以使得处理器执行过程,诸如图4的过程。例如,生成组表格指令421可以被处理器410执行以生成包括一个或多个组的组表格(未示出)。组中的每个可以与组地址范围和传送属性相关联。生成子组表格指令422可以被处理器410执行以生成包括一个或多个子组的子组表格(未示出)。子组中的每个可以与子组地址范围和传送属性(虽然是组)相关联,并且子组地址范围中的每个可以被包括在组地址范围中的一个中。
[0061] 接收指令423可以被处理器410执行以接收包括同步地址范围的同步命令。第一冲洗指令424可以被处理器410执行以基于相关联的组的传送属性,将数据第一冲洗到包括同步地址范围的任何组范围地址范围的NVM(未示出),排除同步地址范围以及包括同步地址范围的任何子组。
[0062] 第二冲洗指令425可以被处理器410执行以基于包括相关联的子组的组的传送属性,在第一冲洗之后,将数据第二冲洗到包括同步地址范围的任何子组的NVM,排除同步地址范围。第三冲洗指令426可以被处理器410执行以在第二冲洗之后,将数据第三冲洗到同步地址范围的NVM。
[0063] 图5是用于冲洗和传送数据的方法500的示例流程图。虽然以下参考第一节点200描述了方法500的执行,但是可以利用用于方法400的执行的其他适合的部件,诸如节点100或300。附加地,用于执行方法500的部件可以被散布在多个设备(例如,与输入和输出设备通信的处理设备)之中。在某些场景中,协调行动的多个设备可以被视为用以执行方法500的单个设备。可以以被存储在诸如存储介质420之类的机器可读存储介质上的可执行指令的形式和/或以电子电路的形式实现方法500。
[0064] 在框505处,第一节点200接收包括同步地址范围的同步命令。然后,在框510处,第一节点200确定同步地址范围是否被包括在组表格210的任何组中。如果同步地址范围不被包括在组211的任何组中,则方法500流到框515,其中,第一节点200将同步地址范围的数据诸如冲洗到NVM 280。接着,在框520处,第一节点200将所冲洗的同步地址范围的数据从第一节点200传送到第二节点290。
[0065] 然而,如果同步地址范围被包括在组211中的一个中,则方法500从框510流到框525,其中,第一节点200确定同步地址范围是否被包括在子组表格220的任何子组中。子组中的每个被包括在组211中的一个中。如果同步地址范围不被包括在子组221的任何子组中,则方法500流到框550,其中第一节点200冲洗包括同步地址范围的组211的数据,但排除同步地址范围使其不被冲洗。接着,在框555处,第一节点200冲洗同步地址范围的数据。最后,在框560处,第一节点200将所冲洗的组和所冲洗的同步地址范围的数据从第一节点200传送到第二节点290。
[0066] 然而,如果同步地址范围被包括在子组中的一个中,则方法500从框225流到框530,其中第一节点200冲洗包括同步地址范围的组的数据,但排除包括同步地址范围的子组以及同步地址范围本身两者。然后,在框535处,第一节点200冲洗包括同步地址范围的子组的数据,但是排除同步地址范围使其不被冲洗。接着,在框540处,第一节点200冲洗同步地址范围的数据。最后,在框560处,第一节点200将组211、子组221以及同步地址范围的所冲洗的数据从第一节点200传送到第二节点290。虽然图5示出了传送在冲洗之后发生,但是任何地址范围可以在被冲洗之后立即被传送。
[0067] 根据上文,实施例提供了一种机制,该机制用于保证跨包括多个NVM系统和相关联的存储功能的应用的操作中涉及的部件的整个范围强制实施由其组和其中的子组表示的该应用一致性约束。数据一致性保证被并入到建立在处理器和存储器控制器的现有特征上的同步操作中。因此,耐久数据一致性的范围被物理地扩展,同时保持与应用边界对齐(align)。
[0068] 通过使用组来维持将被一起管理用于应用级一致性的地址范围的记录,实施例使能可恢复一致性点的流的构造,其跨诸如页或者高速缓存线之类的多个存储器范围、多个同步操作和多个服务器。
QQ群二维码
意见反馈