CN1304960C - 用于实现文件的写入时复制的方法和系统 - Google Patents
用于实现文件的写入时复制的方法和系统 Download PDFInfo
- Publication number
- CN1304960C CN1304960C CNB2004100346966A CN200410034696A CN1304960C CN 1304960 C CN1304960 C CN 1304960C CN B2004100346966 A CNB2004100346966 A CN B2004100346966A CN 200410034696 A CN200410034696 A CN 200410034696A CN 1304960 C CN1304960 C CN 1304960C
- Authority
- CN
- China
- Prior art keywords
- file
- mapping table
- block
- fashionable
- client
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
提供了用于计算环境的各种写入时复制实现方式。一种写入时复制实现方式包括使用读取映射表执行第一虚拟块到物理块的映射,供在从物理存储器读取文件的数据块以便进行修改时使用;使用不同的写入映射表执行第二虚拟块到物理块的映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,数据块的写入时复制是使用单一的写入操作来实现的。在另一种实现方式中,提供了用于客户端-服务器环境的文件的分布式写入时复制。此分布式写入时复制包括由第一客户端执行要被写入时复制的文件的至少一个数据块的写入时复制;由第二客户端执行要被写入时复制的文件的至少另一个数据块的写入时复制,其中,多个客户端执行文件的写入时复制。
Description
技术领域
一般来说,本发明涉及计算环境内的文件系统数据管理,具体来说,涉及用于实现各种计算环境内的文件系统数据文件的写入时复制的技术。
背景技术
许多类型的计算环境,包括通用计算机和数据处理系统,都利用使用“虚拟内存”方案组织起来的存储器。通用虚拟内存允许在计算环境中执行的应用程序和/或进程如同它们具有没有限制的内存量供它们处理那样运行。在现实中,特定的应用程序或进程可用的存储量受到计算环境中的存储量的限制,并进一步受到共享该存储器的同时执行的程序的数量的限制。此外,虚拟内存方案隐藏了内存的实际物理地址,应用程序无法知道。应用程序使用逻辑地址访问它们的存储空间,逻辑地址被计算环境转换为物理地址。
虚拟内存系统以叫做“块”(或“页”)的单元组织存储量。这些块在一个快速主存储器和一个或多个较大的并且通常较慢的辅助、第三等存储单元之间移动。这些块的移动(常常叫做“交换”)对于在计算环境中执行的应用程序或进程是透明的,使得应用程序或进程如同它们每一个都具有没有限制的存储量的情况下运行。
某些常规系统偶尔需要复制部分内存。这种复制可以是用户启动的或由操作系统启动的。常规系统常常使用“懒惰的”复制方法来进行“快闪的复制”,在这种复制中,要被复制的存储将被指定一个只读状态,而实际复制被推迟到以后进行。如果进行尝试以写入到正本或副本中,那么内存将在此时复制,且正本和副本两者都被给予读写的输入/输出(I/O)状态。这样,表面看来是立即就进行了复制,但实际复制被推迟到最后一刻。如果不执行写入,则不进行复制。因此,这种方法叫做“写入时复制”或“虚拟复制”。
一般来说,写入时复制操作在计算方面开销比较大,因为一次写入操作会导致两次写入操作。即,现有的数据块需要从旧的物理块复制到新的物理块,然后在新物理块上执行实际更新/写入操作。鉴于这种计算开销,需要一种新颖的写入时复制实现方式,该方式应该部分地消除双重写入要求。
发明内容
通过在计算环境中实现写入时复制的方法,在一方面消除了现有技术的缺点,并提供了更多的优点。该方法包括(i)使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及(ii)使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
在另一方面,提供了一种在客户端-服务器计算环境中促进写入时复制的方法,包括:在客户端-服务器计算环境的文件系统服务器上维护文件的读取映射表和写入映射表;以及其中,读取映射表用于执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用,写入映射表用于执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,通过使用读取映射表和写入映射表,可以使用单一的写入操作实现数据块的写入时复制,并且,其中,读取映射表和写入映射表中对应于同一虚拟块的物理块是不同的物理块。
在另一个方面,提供了一种在具有许多客户端的客户端-服务器环境内实现文件的写入时复制的方法,所述方法包括:使用客户端-服务器环境的多个客户端执行文件的写入时复制,所述执行包括:(i)由多个客户端中的第一客户端执行文件的至少一个数据块的写入时复制;以及(ii)由多个客户端中的第二客户端执行文件的至少另一个数据块的写入时复制,其中,执行写入时复制的步骤包括:使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
在再一个方面,提供了一种在客户端-服务器环境内促进文件的写入时复制的方法,所述方法包括:从文件系统服务器控制存储在客户端-服务器环境的共享存储单元中的文件的写入时复制的实现方式,所述控制包括允许客户端-服务器环境的第一客户端对文件中的一部分数据执行写入时复制操作,并允许客户端-服务器环境的第二客户端对文件中的不同部分的数据执行写入时复制操作,其中,文件系统服务器控制和促进文件的分布式写入时复制的执行,其中,执行写入时复制操作的步骤包括:使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且,其中,两个映射表中对应于同一虚拟块的物理块是不同的物理块。
在再一个方面,提供了一种在计算环境中实现写入时复制的系统,所述系统包括:(i)一种装置,用于使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的一个数据块以便进行修改时使用;以及(ii)一种装置,使用第二映射表执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
在再一个方面,提供了一种在客户端-服务器计算机环境中促进写入时复制的系统,所述系统包括:一种装置,用于在客户端-服务器计算环境的文件系统服务器上维护文件的读取映射表和写入映射表;以及其中,读取映射表用于执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用,写入映射表用于执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,通过使用读取映射表和写入映射表,可以使用单一的写入操作实现数据块的写入时复制,并且,其中,读取映射表和写入映射表中对应于同一虚拟块的物理块是不同的物理块。
在再一个方面,提供了一种在具有许多客户端的客户端-服务器环境内实现文件的写入时复制的系统,所述系统包括:(i)一种装置,用于在客户端-服务器环境的第一客户端上对要被写入时复制的文件的至少一个数据块执行写入时复制;以及(ii)一种装置,用于在客户端-服务器环境的第二客户端上对要被写入时复制的文件的至少另一个数据块执行写入时复制,其中,对文件的不同的部分的写入时复制是由客户端-服务器环境中的许多客户端的不同的客户端执行的,其中,所述执行写入时复制的装置包括:一种装置,用于使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的一个数据块以便进行修改时使用;以及一种装置,使用第二映射表执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
在再一个方面,提供了一种促进在客户端-服务器环境中进行文件的写入时复制的系统,所述系统包括:一种装置,用于从文件系统服务器控制存储在客户端-服务器环境的共享存储单元中的文件的写入时复制的实现方式,所述用于控制的装置包括一种装置,用于允许客户端-服务器环境的第一客户端对文件中的一部分数据执行写入时复制操作,并允许客户端-服务器环境的第二客户端对文件中的不同部分的数据执行写入时复制操作,其中,文件系统服务器控制和促进文件的分布式写入时复制的执行,其中,所述系统进一步包括:一种装置,用于使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的一个数据块以便进行修改时使用;以及一种装置,使用第二映射表执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且,其中,两个映射表中对应于同一虚拟块的物理块是不同的物理块。
还描述了各个其他特点和对上文描述的方法的增强,并在权利要求书中进行了阐述,同时描述了对应于上文概述方法的系统。
进一步,通过本发明的技术还可以实现其他特点和优点。这里详细描述了本发明的其他实施例和方面,均被视为权利要求所保护的本发明的一部分。
附图说明
在本说明书结尾时在权利要求书中特别指出了并明确声明了被视为本发明的主题。通过下面的结合附图对本发明进行的详细说明,可以更好地理解本发明的前述和其他目的、特点和优点,其中:
图1描述了包括并使用本发明的一个或多个方面的计算环境的一个实施例;
图2描述了其中范围或偏移被转换为虚拟/相对块号的应用程序或进程的文件表示(200)的一个示例;
图3是其中图2的虚拟/相对块号被映射到文件系统的一个或多个存储单元中的物理块地址的文件系统映射表(300)的表示;
图4是在文件系统的存储单元内图3的物理块地址的配置的表示;
图5描述了在偏移5000开始并落在文件系统的存储单元的物理块D内的数据的四个字节的读取的一个示例;
图6是根据本发明的一个方面的写入操作和写入时复制操作的一个实施例的流程图;
图7是依据图6的逻辑将数据块从存储单元读取到本地缓冲区以便在写入操作中使用的读取过程的一个示例的流程图;
图8是依据图6的逻辑将修改的数据块写入到存储单元以便在写入操作中使用的写入过程的一个示例的流程图;
图9描述了根据本发明的一个方面的在写入时复制文件时使用的读取映射表(900)和写入映射表(910)的一个示例;
图10是根据本发明的一个方面的依据图6的逻辑在写入时复制操作中使用的数据块读取过程的一个实施例的流程图;
图11是根据本发明的一个方面的依据图6的逻辑在写入时复制操作中使用的修改的数据块写入过程的一个实施例的流程图;
图12是根据本发明的一个方面的在写入时复制文件时使用的读取映射表(1200)和写入映射表(1210)的另一个示例;
图13描述了包括并使用本发明的一个或多个方面的计算环境的另一个实施例;
图14是图13的客户端-服务器环境的客户端1的一个实施例的根据本发明的一个方面的执行文件的至少一个数据块的写入时复制操作的流程图;
图15是图13的客户端-服务器环境的客户端2的一个实施例的根据本发明的一个方面的执行文件的至少另一个数据块的写入时复制操作的流程图;
图16描述了根据本发明的另一个方面的在写入时复制文件时使用的文件的读取映射表(1600)和写入映射表(1610)的另一个示例;以及
图17是根据本发明的一个方面的使用写入时复制的数据保留应用程序的一个示例的流程图。
具体实施方式
概述
这里在一个方面提供了一种用于在计算环境中实现写入时复制的技术。此技术包括使用不同的转换,即,读取映射表和写入映射表,来使用一次写入操作实现文件中数据单元的写入时复制操作。作为一个示例,通过使用第一虚拟块到物理块的映射从物理存储器读取文件的一个数据块以便修改,然后使用第二虚拟块到物理块的映射,将该修改的数据块写入到物理存储器,来实现写入时复制,其中,第一虚拟块到物理块的映射和第二虚拟块到物理块的映射包括不同的映射。
在另一个方面,这里提供了用于跨客户端-服务器环境的多个客户端实现文件的分布式写入时复制的技术。在这样的环境内,多个客户端的第一客户端执行文件的至少一个数据块的写入时复制,多个客户端的第二客户端执行文件的至少另一个数据块的写入时复制。在一个实现方式中,客户端可以包括异类操作系统,使用一个写入操作对正在被进行写入时复制的文件内的数据块执行每个写入时复制操作。此外,如上所述,可以使用第一映射转换(例如,使用读取映射表)和第二映射转换(例如,使用写入映射表)实现写入时复制。本发明的这些和其他方面将在下面进行描述,并在随后的权利要求书中进行叙述。
具体实施方式
图1中描述了根据本发明的一个方面的包括并使用写入时复制的计算环境的一个示例,一般表示为100。如图所示,计算环境100包括至少一个中央处理单元102、内存104和一个或多个存储单元或设备106。
已知,中央处理单元102是计算单元的控制中心,并提供用于执行指令、中断操作、计时功能、初始程序装入和其他机器相关的功能的序列和处理设备。中央处理单元至少执行一个操作系统,该操作系统被公知地认为用于通过控制其他程序的执行,控制与外围设备进行的通信并控制计算机资源的使用来控制计算单元的操作。
中央处理单元(CPU)102连接到内存104,而可对该内存直接进行寻址,并由中央处理单元提供对数据的高速处理。内存104包括缓冲区或高速缓冲存储区103,该缓冲区或高速缓冲存储区由CPU102使用,如本文将进一步描述的。在另一个实施例中,缓冲区103可以驻留在CPU 102内。存储单元106是输入/输出设备的一个示例。如这里所使用的,存储单元106可以在计算单元以外或在计算环境100的计算单元内,并可以包括,主存储器、磁存储介质(例如,磁带、磁盘)和直接访问存储设备等等。如图所示,可以在CPU 102、内存104和存储单元106之间传输数据。
在一个示例中,计算环境100是一个单一的系统环境,包括在AIX操作系统中运行的RS/6000计算机系统(RS/6000和AIX是由IBM公司提供的)。然而,本发明不仅限于这样的环境。本发明的功能可以在许多类型的计算机环境和许多类型的计算机系统内使用。例如,计算机环境100可以包括分布式计算环境,并可以包括运行基于UNIX操作系统的UNIX工作站。其他改进形式也是可以的,并被视为所声明的发明的一部分。
众所周知,文件是一个可用于存储用户/应用程序数据的计算环境的文件系统中的有名称的对象。然后,此数据可以通过指定文件名、偏移和长度来进行访问。对于用户应用程序或进程,文件上的数据好像是连续的,但在存储单元(如磁盘)内,数据表示可以是不同的。每个文件系统都维护了一个映射表,该映射表提供虚拟(相对)偏移块号到物理块号之间的映射或转换,其中,块可以是文件内的页面或其他数据单元,单元的大小由文件系统指定。
在图1的示例中,假设文件系统包括存储单元,该存储单元可以在计算环境的特定计算单元的外部或内部。图2描述了文件表示200的一个示例,该文件表示将应用程序或进程数据范围和偏移与一个给定文件的虚拟/相对块号关联。请注意,每个文件都有其自己的虚拟/相对块号集。在此示例中,从0到4K字节的文件数据被映射到虚拟/相对块号1,从4到8K字节的数据被映射到块号2,从8到12K字节的数据被映射到块号3,12到16K字节的数据被映射到块号4。再次声明,这些编号只作为示例。
图3描述了一个特定文件的文件系统映射表300的一个示例。在将文件的虚拟/相对块号转换为存储单元的实际物理块地址的过程中使用了表300。例如,显示了虚拟/相对块号1、2、3和4,它们映射到存储单元400的物理块地址A、D、G和L(参见图4)。
作为示例,如果一个应用程序或进程希望从在偏移5000开始的一个特定的文件读取4个字节的数据,那么使用图2和3的文件表示200和文件系统映射表300,读取的实际数据从物理块D发生,如图5所示。这是因为,在偏移5000开始的4个字节的数据落在虚拟/相对块号2内,如图3所指出的,该虚拟/相对块号转换成存储单元的物理块地址D。
如最初所指出的,快闪复制操作可以快速地对存储进行节省空间的复制。由于操作需要快速地进行,作为操作的一部分,最初没有进行物理复制。稍后,任何修改适用的文件数据的企图都会导致写入时复制操作。在客户端-服务器环境中,元数据写入时复制通常由文件系统服务器来执行,而由客户端执行文件数据写入时复制。可以使用PageIn和PageOut线程将数据块带到客户端上的高速缓存中,更新数据,然后将数据写回存储单元中。如果如这里所描述的使用PageIn和PageOut的不同的转换,那么,客户端可以将潜在的写入时复制数据读取到其缓冲区中,将任何更新应用到缓冲区中的数据中,并通过PageOut线程将修改的数据写入到存储单元中的一个新位置。通过具有两个映射表或转换,如此提供了写入时复制技术,该技术在一个实施例中,利用现有的PageIn(页面调入)和PageOut(页面调出)概念。
图6是根据本发明的一个方面的写入操作和写入时复制操作的一个实施例的流程图。写入操作(600)从确定是否将写入文件的数据的完整的块(610)(或完全的页)开始。如果执行数据的部分块写入,那么将文件中的适用的数据块从存储单元读取到本地缓冲区(620)(PageIn)。这后面跟着缓冲区中的数据块的更新(630),然后将文件的修改的数据块写入到存储单元中(640)。如果将要写入文件的完整的数据块,那么,逻辑将简单地进入将数据的完整块写入到存储单元(在图6中表示为650)。已知,图6的逻辑可以在操作系统内核内实现。图7和8描述了使用图6的逻辑实现写入操作的进一步进程的示例。
图7描述了将文件的数据块从存储单元读取到缓冲区中的过程的一个实施例。应用程序输入是要读取700的文件数据的偏移和长度,用于计算虚拟块号(710)(例如,使用图2中描述的文件表示)。然后,过程将执行子例程调用File·Get以将虚拟块号映射到存储单元内的文件数据的物理块地址(720)。使用物理块地址,将数据块从存储单元读取到本地缓冲区中(730)。
图8描述了将文件的数据块写入到存储单元中的过程的一个示例。如图所示,在File·Get映射进程中使用虚拟块号800,例如使用图3中描述的文件系统映射表来获取虚拟到物理的映射(810)。然后,在将修改的数据块从缓冲区写入到存储单元(820)时使用物理块地址。在一个实施例中,图7的块读取过程可以包括PageIn线程进程,而图8的数据块写入过程可以包括PageOut线程进程。
优选情况下,这里说明了一种用于实现写入时复制而元需对图6的高级别写入逻辑流程中的任何更改的技术。这种技术使用两个转换或映射表集,对于将执行写入时复制的特定的数据的文件,被称为读取映射表和写入映射表。在一个实施例中,这两个映射表由文件系统维护,并且,每当在执行写入时复制时,由客户端应用程序进行访问。例如,这两个映射表同时被提供到位于物理地址转换边界的文件系统驱动程序。
作为示例,图9描述了读取映射表900和写入映射表910。读取映射表900将虚拟块号1、2、3和4分别映射到物理块号A、D、G和L,而写入映射表910将虚拟块号1、2、3和4分别到物理块号W、X、Y和Z。读取映射表提供了第一虚拟到物理的转换(用于读取操作),而写入映射表提供了第二虚拟到物理的转换(用于写入操作)。具体来说,作为一个示例,写入时复制可以使用读取表转换(对于PageIn)和写入表转换(对于PageOut)来实现。
图10描述了依据图6的逻辑在写入时复制操作中使用的数据块读取过程的一个实施例。如图所示,应用程序指定了从该文件计算1010虚拟块号的文件1000内的数据偏移量和长度(参见图2)。然后,处理过程使用文件的读取映射表(例如,图9的表900)获取虚拟到物理的读取映射1020。然后,使用此物理读取映射将文件的至少一个数据块从存储单元读取到本地缓冲区1030。
图11描述了依据图6的逻辑在写入时复制操作中使用的数据块写入过程的一个示例。虚拟块号1100用于使用文件的写入映射表(例如,图9的表910)获取虚拟到物理“写入”映射1110。通过使用物理写入映射,修改的数据块被从本地缓冲区写入到对应的存储单元物理块1120。如上所述,如果将对文件的完整的数据块执行写入时复制,那么,修改的数据块可以使用图11的物理“写入”映射直接写入到存储区中。在这样的情况下,只使用文件的写入映射表。
那些精通本技术的人将注意到,通过使读取映射表和写入映射表相同以便读取、更新和写入出现在存储单元内的同一个物理块地址中,通过使用图6、10和11的逻辑,仍然可以执行常规的写入操作。然而,优选情况下,对于写入时复制,此逻辑也是相同的。当为一个文件请求了写入时复制时,文件系统为该文件分配新的物理地址区并更新对应的写入映射表。通过这样做,写入操作与读取操作在不同的物理块地址中进行,就是说,原始数据在存储单元中保持不变。在写入操作之后,依据特定的写入时复制应用程序,可以更新文件的读取映射表。
参考图9的映射表,并使用图5的示例,如果在偏移5000处对文件的4个字节的数据进行写入时复制更改(例如,将数据内容“第一第二”更改为“第二第一”),然后将更新的数据块写入到存储单元中的物理块号X(使用对应于虚拟块号2的写入映射表910(图9))。在写入时复制操作之后,对应的读取映射表(图9的900)可以更新以便虚拟块号2转换为存储单元内的物理块号X,该物理块号显示在图12的更新的读取映射表1200中。图12的写入映射表1210与图9的写入映射表910相同。然而,在写入时复制之后,依据使用写入时复制的应用程序,是否以及如何更新读取映射表中的物理块号。例如,对于“数据保留”类型的应用程序,读取映射表中的物理块号可以维护,以保留初始文件引用。对于“数据移动”类型的应用程序(其中,文件数据将在物理上从存储单元的一个部分移到另一个部分),原始的物理块号可以在用来自写入映射表的新物理块地址号码更新读取映射表时得到释放。
图13显示了一般表示为1300的计算环境的另一个实施例,该计算环境可以包括并使用本发明的一个或多个方面。环境1300包括许多客户端,包括客户端1 1320和客户端2 1320,在此示例中,它们通过用于客户端/服务器通信的因特网协议网络连接到文件系统服务器1330。服务器1330连接到存储区域网络1340,该网络具有多个存储池1350,可用于存储文件数据。客户端1 1310和客户端21320也直接连接到存储区域网络1340。
作为一个示例,假设计算环境1300具有某些功能,包括:在一个位置(例如,文件系统服务器)上维护诸如这里所描述的映射文件(例如,文件的读取映射表和写入映射表);客户端应用程序能够通过存储区域网络(SAN)直接访问存储单元(即,多个存储池);客户端应用程序具有读取/写入多个存储池中的文件的任何对象的权限。在各种出版物中详细讨论了这样的SAN环境,包括Randal ChiltonBums的题为“存储区域网络的分布式文件系统中的数据管理”(加州大学,Santa Cruz(2000年3月)。
在本发明的另一个方面,提供了分布式写入时复制功能,其中,不同的客户端应用程序更新文件的不同的部分。例如,客户端1执行文件的虚拟块2的写入时复制,而客户端2执行文件的虚拟块4的写入时复制。图14和15详细描述了此示例。
图14描述了客户端1执行文件的虚拟块2的写入时复制的一个示例。客户端1最初从文件系统服务器获取标记为“我的文件”的文件的映射表1400。当在偏移5000上更新时,在虚拟块2上执行写入时复制1410。客户端1通知文件系统服务器,它执行了虚拟块2的写入时复制(1420),而文件系统服务器相应地更新其映射表(1430)。在一个示例中,写入时复制可以如上所述的那样执行(图6和9-12)。
客户端1使用一个锁定机构执行文件数据的虚拟块2的写入时复制更新。锁定机构包括每个文件系统对象的锁定,客户端需要从文件系统服务器中获取该锁定以便对给定文件执行操作。因此,在一个实施例中,当客户端1收到此锁定时,它也收到文件的映射表,当客户端1丢失该锁定时,文件的在客户端1的所有映射表失效。因此,客户端1下一次获取该锁定时,客户端1无法使用任何现有的映射表,而是从文件系统服务器获取当前映射表。
作为进一步的说明,图13的计算环境可以使用分布式锁定机构来控制从不同的客户端对文件系统对象的访问。有两种类型的分布式锁定,即,会话锁定和数据锁定。这些锁定均按照文件系统对象。会话锁定相当于开放式的“文件描述符”。当客户端获取此锁定时,它告诉服务器,此客户端对使用此文件感兴趣。客户端可以获取不同模式的会话锁定,例如,读取模式、写入模式、排它模式等等。例如,当客户端A正在以排它模式持有会话锁定时,另一个客户端,比如说,客户端B希望打开相同的文件,它向服务器发送一个请求以索取会话锁定,服务器会拒绝该锁定请求,因为客户端A具有排它模式,因此客户端B无法对该文件进行操作。第二种类型的分布式锁定是数据锁定。数据锁定用于执行物理读取/写入操作。客户端应该具有读取/写入模式的数据锁定才能对文件执行读取/写入操作。作为进一步的说明,会话锁定可以同时被两个客户端在写入模式下持有。这就是说,两个客户端都具有对特定文件进行写入操作的权限,但在它们获取写入模式的数据锁定之前,这些客户端无法写入。但在一个给定的时间点,只能有一个客户端可以获取“写入模式”的数据锁定,以便只有一个客户端可以执行实际的I/O。如果两个客户端都在积极地对一个文件进行操作,它们将持有写入模式会话锁定,而数据锁定将在两个客户端之间穿梭,以便完成它们的写入操作。
在某个时间点,客户端2请求一个锁定,以便对文件“我的文件”的另一部分执行写入时复制操作。如图15所示,客户端2从文件系统服务器获取文件“我的文件”的映射表1500。当在偏移14000(即,虚拟块号4)处更新文件内容时,客户端2在文件的虚拟块号4处执行写入时复制1510。此后,客户端2将此写入时复制更新通知给文件系统服务器,服务器相应地更新“我的文件”的读取映射表1530。图16显示了更新的读取映射表1600和写入映射表1610,它们是从对“我的文件”执行图14和15的写入时复制更新产生的(从图9的映射表开始)。如图所示,读取映射表现在具有映射到物理块号X的虚拟块号2,映射到物理块号Z的虚拟块号4。
概括起来说,在诸如图13中所描述的环境内实施写入时复制可以跨多个客户端应用程序分布。因此,许多客户端应用程序可以参与到在分布式文件系统中执行文件的写入时复制。可以使用上文所描述的分布式锁定机构,该锁定机构一次只能由一个客户端应用程序拥有。例如,当客户端1具有分布式锁定时,那么客户端1将具有有效的读取映射表和写入映射表,以便进行写入时复制操作。如果客户端2希望对同一个文件的另一个部分执行写入时复制操作,那么文件系统服务器将从客户端1获取分布式锁定并将其给客户端2。在另一个示例中,分布式锁定可以按照文件范围分开,以便两个客户端1和客户端2可以对文件的不同部分执行写入时复制。
图17描述了用于在分布式客户端-服务器环境中执行写入时复制的“数据保留”应用程序的一个示例。最初,管理员决定获取文件“我的文件”的即时点图像1700。执行管理命令以保留“我的文件”(1710),然后再由文件系统服务器从客户端应用程序获取对文件“我的文件”的控制权。例如,文件系统服务器从客户端应用程序拿走文件的任何分布式锁定。(此步骤在非分布式的、非客户端/服务器环境中不适用)。接下来,文件系统服务器更新写入映射表以促进写入时复制1730,服务器将控制权返回到相应的客户端应用程序1740。从此点往后,客户端应用程序对“我的文件”的任何更新都会导致对该文件的该特定部分执行写入时复制,同时仍保留旧的数据路径(即,读取映射表中的物理块号可以得到维护以保留初始的文件引用)。
具体示例
下面提供了本发明的各个方面的一个详细的实现方式。在此详细的说明中,有两种可能的输入/输出(I/O)操作类型,即,缓冲I/O和直接I/O。
被缓冲的I/O
被缓冲的I/O表示通过缓冲区高速缓存执行的I/O。在此情况下,读取/写入首先进入高速缓存中,然后,此高速缓存的数据被硬化到存储单元(例如,磁盘)。
对现有文件的更新是通过将数据读取到高速缓存中来执行的。将所有更改应用到高速缓存/缓冲页面,然后将数据写回到磁盘。考虑到这一事实,实现了这里所说明的写入时复制,而没有增加任何开销。作为示例,即将访问分布式文件系统的客户端可能包括至少两个组件:即,(i)可安装的文件系统(IFS),这是操作系统特定的,处理来自应用程序的请求,并与缓冲存储器系统和诸如磁盘之类的存储设备进行通信,以及(ii)客户端状态管理器(CSCM),这对于所有操作系统通用,并处理锁定管理和与服务器的通信。从快闪复制的角度来看,IFS与CSM进行联系,以便进行下列操作。
·读取-使用CSM API,csmTranslateBlocks()来获取虚拟到物理的转换。
·写入-分两个步骤进行:
1.IFS需要确保在接受到页面缓存的任何写入操作之前具有备份的块。因此它通过其API,csmAttachBlocks()调用CSM。
2.在csmAttachBlocks成功之后,IFS允许写入操作通过。
·DirectIO:在此情况下,写入操作将直接进入到磁盘。
·BufferedIO:这里IFS需要将页面放到缓存中,对它进行修改,然后写入到磁盘。
·截断-使用CSM API,csmDetachBlocks()缩短文件。
IFS使用下列三个接口来执行与文件块相关的操作。
1.csmAttachBlocks():当IFS的意图是write()时,将使用此接口。如果CSM无法通过其高速缓存满足此请求,则它将类型stpMsgType_BlkDiskAllocate的事务发送到服务器。
2.csmTranslateBlocks():此接口可以用于read()或write()。在读取操作期间以及在硬化高速缓存(写入操作的一部分)的过程中,IFS可以使用此接口。如果CSM无法通过其高速缓存满足此请求,则它将类型stpMsgType_BlkDiskGetSegment的事务发送到服务器。
3.csmDetachBlocks():它用于truncate()。
根据本发明的一个方面,在CSM中维护了两种类型的虚拟到物理的映射。
1.读取转换:这说明什么是读取操作的虚拟到物理的映射。
2.写入转换:这说明什么是写入操作的虚拟到物理的映射。
在一个实施例中,一个分段可能具有下列三种状态的读取和写入转换列表。
·有效的读取转换但无效写入转换。
·有效的写入转换但无效的读取转换。
·读取和写入转换两者都有效。
读取
·对于读取系统调用,IFS调用csmTranslateBlocks(),设置了读取标志,以表示它需要读取转换。
·对于“读取”转换,CSM首先查看写入转换。如果它存在并在使用中,它将返回写入块转换。
·如果不,则CSM查看读取转换。如果它们可用,并且它们在使用中,则它们将被返回
·如果不,CSM返回零,表示这些块需要用零填充。
写入
·对于写入系统调用,IFS调用csmAttachBlocks()。当成功时,它保证分配备份块。
·如果是更新,IFS需要将块放到缓存中。因此,PageIn线程调用csmTranslateBlocks(),并带有读取标志。从上述读取逻辑来看,IFS获取块转换。(对于写入到新块中的操作,此步骤将被忽略)。
·现在IFS更新缓存内的页面,一旦它准备将该页面刷新到磁盘中,它再次用写入标志调用csmTranslateBlocks()。现在CSM只需要提供写入转换。
IFS使用在前面的步骤中给出的转换并刷新高速缓存(写入到磁盘)。
截断
·IFS调用csmDetachBlocks()以便进行文件收缩。
·CSM需要将对应的虚拟块的读取和写入转换标记为无效状态。
上述操作将在CSM的缓存中执行。每隔一定间隔,或在特定的条件下,CSM可以通过blkdisk更新用修改更新服务器。此外,上文的讨论主要假设了写入操作是“高速缓存/缓冲IO”。对于“directI/O”写入,情况就有点不同了。
直接I/O
由于在块边界上直接的I/O不总是会发生,对于write()的未对齐的部分,我们可能需要模仿高速缓存I/O。
响应stpMsgType_BlkDiskAllocate或stpMsgType_BlkDiskGetSegment,对于每个请求的分段,CSM获取盘区的列表。这些段转换被拆除并存储在CSM的高速缓存中。
如果读取转换正好与写入转换相同,则服务器可能不发送读取转换。这可能是一个优化。
每个分段都由名为mcBlkDiskSegment的数据结构来表示。
此高速缓存内段结构的元素可以包括:
s_objP | 指向此分段所属的文件对象的指针。 |
s_segNo | 文件内的段编号。 |
s_readExtentCount | 此段中的读取盘区的当前数量。 |
s_readExtentList | 表示此段的“读取”转换的连续的块段的列表。 |
s_inlineReadExtent | 上述列表的内联表示。 |
s_readBlockUsedState | 这是一个位图。段中的每个块的一个位。它表示块是否处于使用/未使用状态。1-使用,0-未使用。 |
s_writeExtentCount | 此段中的写入盘区的当前数量。 |
s_writeExtentList | 表示此段的“写入”转换的连续的块段的列表。 |
s_writeBlockUsedState | 这是一个位图。段中的每个块的一个位。它表示块是否处于使用/未使用状态。1-使用,0-未使用。 |
s_isDirty | 如果实际块状态位向量包含必须与服务器同步的更新,则为真。 |
s_extentListValid | 如果盘区列表有效并处于缓存中;则为真; |
客户端在排他数据锁定下只更改s_readBlockUsedState和s_writeBlockUsedState。段转换的其余部分在客户端保持不变。因此,当发送更新时,客户端只将这两个位图发送到服务器。
读取操作不更改任何位图,即,它使用s_readB1ockUsedState或s_writeBlockUsedState来提供读取转换,但它不更改后者。
写入操作只对s_writeBlockUsedState进行操作,而不使用s_readBlockUsedState。与读取操作不同的是,它可以更改(只设置)swriteBlockUsedState的位图以表示成功的写入操作。
截尾操作可以更改两个位图。
因此,简而言之,读取操作不更改任何位,写入操作可以设置s_writeBlockUsedState位图向量中的几个位,截尾操作可以取消设置位图向量中的位。
概括起来说,在高速缓存I/O的情况下,几乎可以不用任何成本即可实现写入时复制(COW)。这是因为,通常有两个不同的线程/操作涉及写入操作的完成,即:
1.将要更新/更改的目标数据放到高速缓存中的PageIn线程/操作;以及
2.将已更新的页面刷新到磁盘上的PageOut线程/操作。
给定了这种情况,对于PageIn,可以使用读取转换COW,对于PageOut,可以使用写入转换来执行COW
请看下面的示例:
在创建新文件时,CSM获取
-写入块盘区
-NULL读取块盘区
由于这是一个新文件,没什么需要PageIn,因此写入数据将进入到高速缓存的空白页中。
随着写入操作的进行,IFS设置(通过CSM接口)s_writeBlockUsedState位向量中的对应的位,表明它们正在使用中。
如上所述,此块范围中的未来的读取和写入从写入盘区中获取转换。
假设管理员获取一个快闪副本:
作为快闪复制操作的一部分,服务器从客户端撤消全部数据锁定。因此,修改的数据将与磁盘同步,元数据将通过更新的事务发送到服务器。由于客户端没有数据锁定,其任何转换都失效。
在快闪复制之后
对于读取,客户端调用csmTranslateBlocks(),服务器可以发送所有“读取”转换,但“写入”转换将为NULL。
对于写入,客户端调用csmAttachBlocks()。现在服务器返回读取转换(与上面相同),对于写入盘区列表,服务器应该分配新的一组未使用的块并将它们返回。如此,客户端有两个转换。客户端使用读取转换作为“page-in”的一部分,使用写入转换作为“page-out”的一部分。
因此我们PageIn数据块(它们是缓冲区高速缓存中的快闪副本的一部分),然后应用更新。当页面调出时,我们使用写入转换,它们将PageOut线程指向新物理块。
directIO的COW有点不同。对于直接IO:
IFS用写入标志集调用csmTranslateBlocks(),以查看它是否有备份块来处理写入。在分析来自CSM的转换之后,如果没有分配备份块,IFS将调用csmAttachBlocks()。
о对于csmAttachBlocks(),IFS需要将其数据锁定从SHARED_WRITE模式切换到排它模式。
о在写入完成之后,客户端将这些块标记为USED状态。此时,客户端需要在排它模式下持有数据锁定。
о如果直接IO边界不与块大小对齐,则到最初的和最后的块的I/O是以高速缓存的方式执行的。执行此项工作的步骤包括:
·对于“读取转换”,调用CSM
·分配本地内核缓冲区。
·将磁盘块写入到新分配的内核缓冲区中
·更新内核缓冲区。
·对于写入转换,调用CSM。
·写入到新块位置(写入转换)
·调用CSM以标记新写入块的“USED”位。
对于中间块,
-使边界与块大小对齐。
-调用CSM以获取写入转换。
-写入到磁盘中。
-调用CSM以标记块的“USED”位。
下面是客户端上的位度量的一个示例:
WriteBlockUsedState Bit array:Wbit
ReadBlockUsedState Bit array:Rbit
在括号(@<>)中表示物理块地址。即,(@A)表示物理块地址是A。
UD-Un-Defined.
Vir Blk#1 | Vir Blk#2 | Vir Blk#3 | Vir Blk#4 |
在客户端-服务器环境中,客户端只将WriteBlockUsedState位阵列和ReadBlockUsedState位阵列发送到服务器。
CSM按如下方式解释这些位和映射:
X=对于此块没有映射
M=对于此块存在映射
状态 | 写入映射 | 写入位 | 读取映射 | 读取位 |
未分配 | X | 0 | X | 0 |
未定义 | X | 0 | X | 1 |
未定义 | X | 0 | M | 0 |
可读取,共享(需要COW块分配) | X | 0 | M | 1 |
未定义 | X | 1 | X | 0 |
未定义 | X | 1 | X | 1 |
未定义 | X | 1 | M | 0 |
未定义 | X | 1 | M | |
可写入、但不可读 | M | 0 | X | 0 |
未定义 | M | 0 | X | 1 |
未定义 | M | 0 | M | 0 |
COW挂起,读取使用RM,写入使用WM | M | 0 | M | 1 |
通过写入映射可写入和可读取 | M | 1 | X | 0 |
未定义 | M | 1 | X | 1 |
未定义 | M | 1 | M | 0 |
未定义 | M | 1 | M | 1 |
为确定块的映射,CSM首先请看写入映射,如果存在,并设置了对应的W位,然后,对于读取和写入操作,CSM都使用该映射。
如果存在写入映射,但W位为零,那么CSM查找读取映射。
如果读取映射不存在,那么,块被视为未使用(未初始化),并且块只能用于写入操作。所有读取操作都会用零填充缓冲区。
如果读取映射存在,那么块被视为在使用中(已初始化),CSM假设R位是1(应该是这样)。此状态中的块只被视为COW挂起,并需要COW修改其内容。
如果写入映射不存在,那么CSM查找读取映射。如果读取映射存在,那么CSM假设R位是1(应该是这样),块被视为在使用中(初始化)(对于读取操作而不是对于写入操作)。在可以执行写入操作之前,CSM必须请求服务器分配一个新备份块。
CSM将位向量返回到服务器,以指出当块被使用、截断和/或写入时复制时块的状态的变化。在返回途中,服务器按如下方式解释位。
X=不关心
状态 | W | R |
块处于活动状态(硬化COW或正在使用中的已分配的块) | 1 | X |
截断此块(如果正在使用,标记为未使用-可释放) | 0 | 0 |
对此块没有变化(可以取消COW挂起) | 0 | 1 |
如果设置了写入位:
服务器忽略读取位。
如果块处于“已分配”状态(即,传统的“已分配”,但还没有活动),然后它变为“活动”状态(即,块可写入并且可读取)。
如果块处于COW_Pending状态(即,块即具有读取映射也具有写入映射,对于COW,它们有所不同),那么块会进入“活动”状态(即,通过写入映射,块可写入并且可读取)。
如果没有设置写入位,而设置了读取位:
这就向服务器表明,对于所关心的块,没有变化。
如果块处于“已分配”、COW_Pending或PIT_COW_Pending状态,那么块可以一直处于此状态,或者异步地释放。客户端无法作出这样的假设,块已经释放或者它是否处于其中一个COW_Pending状态。
如果没有设置写入位,也没有设置读取位:
这向服务器表示,块已经被截断(假设它以前被分配)。
如果块处于“未分配”状态,那么块仍处于“未分配”状态。
如果块处于“已分配”状态,那么块仍处于“已分配”状态。
如果块处于“活动”状态,那么块进入“已分配”状态。
如果块处于“共享”状态,那么块进入“未分配”状态,且(只)读映射被放弃。
如果块处于“COW_Pending”状态,那么块进入“已分配”状态。
如果块处于“PIT_COW_Pending”状态,那么块进入“已分配”状态。
优点
优选情况下,这里提供了一种用于在计算环境中实现写入时复制的技术,通过最大限度地减少冗余输入/输出,使对常规数据文件写入过程中增加的开销最小化。这里所提供的写入时复制技术对于上层(如标准文件系统驱动程序)是透明的。该技术包括使用两个不同的同时转换,即,读取映射表和写入映射表,来使用一次写入操作在文件中实现数据单元的写入时复制操作。在另一个方面,这里提供了用于跨客户端-服务器环境的多个客户端实现文件的分布式写入时复制的技术。优选情况下,分布式写入时复制实现方式减少了对集中式服务器的负载,随着客户端的增加而扩展,允许继续对文件进行写入时复制,尽管一个或多个客户端可能变得不可用。此外,这里所提供的分布式写入时复制允许进行并行的写入时复制,允许工作负荷在多个客户端之间分布,从而更加有效地利用资源。
其他实施例
虽然提供了计算环境的各种示例,但是这些只是示例而已。可以使用其他实施例。例如,虽然这里是参考文件系统来描述示例的,但是这只是一个示例而已。本发明的一个或多个其他方面还适用于其他环境。
本发明可以应用于具有计算机可使用的介质的一种制造产品中(例如,一个或多个计算机程序产品)。介质中包含了计算机可读取的程序代码装置或逻辑(例如,指令、代码、命令等等)以提供和实现本发明的功能。制造产品可以包括在计算机系统中或者单独地进行销售。
此外,还可以提供至少一个可由计算机读取的程序存储设备,该设备中包含了至少一个计算机可执行的指令程序,以提供本发明的功能。
这里所描述的流程图只是示例而已。在不偏离本发明的实质的情况下,可以对这里所描述的这些图表或步骤(或操作)进行许多修改。例如,步骤可以按照不同的顺序来执行,或者可以添加、删除或修改步骤。所有这些修改都被视为本发明的一部分。
虽然这里详细描述了优选的实施例,但是那些本领域技术人员将理解,在不偏离本发明的精神的情况下,可以进行各种修改、添加、替换等等,这些都被视为如下面的权利要求所定义的本发明的范围内。
Claims (44)
1.一种在计算环境中实现写入时复制的方法,包括:
(i)使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及
(ii)使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
2.根据权利要求1所述的方法,其中,所述第一映射表包括读取映射表,所述第二映射表包括写入映射表,其中,所述写入映射表包含至少一个虚拟块,该虚拟块所映射到的物理存储器的物理块与读取映射表的对应的从虚拟块映射到的物理块相比,是不同的物理块。
3.根据权利要求1所述的方法,其中,所述使用(i)包括将数据块从物理存储器读取到缓冲区中,并且其中,所述方法进一步包括在执行所述使用(ii)之前修改缓冲区中的数据块。
4.根据权利要求3所述的方法,其中,实现写入时复制的方法进一步包括,最初确定修改是包括部分块写入还是完全块写入,如果是部分块写入,那么执行所述使用(i)和所述使用(ii),否则执行所述使用(ii)而不执行所述使用(i)。
5.根据权利要求1所述的方法,其中,计算环境包括一个客户端-服务器环境,该环境包括文件系统服务器和至少一个客户端,并且其中,所述使用(i)和所述使用(ii)是由客户端-服务器环境的至少一个客户端执行的。
6.根据权利要求5所述的方法,其中,至少一个客户端所执行的所述使用(i)和所述使用(ii)进一步包括,在执行文件的数据块的写入时复制时,对文件系统服务器进行至少一次调用,以获取第一映射表和第二映射表中的至少一个。
7.根据权利要求5所述的方法,进一步包括在将修改的数据块写入到物理存储器之后更新第一映射表,所述更新包括修改第一映射表的至少一个虚拟块到物理块的转换,以与第二映射表的对应的虚拟块到物理块的转换相一致。
8.根据权利要求1所述的方法,其中,计算环境包括计算单元和外部存储单元,外部存储单元包括物理存储器,并且其中,使用(i)和使用(ii)是由计算单元执行的。
9.一种在客户端-服务器计算环境中促进写入时复制的方法,包括:
在客户端-服务器计算环境的文件系统服务器上维护文件的读取映射表和写入映射表;以及
其中,读取映射表用于执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用,写入映射表用于执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,通过使用读取映射表和写入映射表,可以使用单一的写入操作实现数据块的写入时复制,并且,其中,读取映射表和写入映射表中对应于同一虚拟块的物理块是不同的物理块。
10.根据权利要求9所述的方法,其中,文件的写入映射表包含至少一个虚拟块,该虚拟块所映射到的物理存储器的物理块与读取映射表的对应的从虚拟块转换到的物理块相比,是不同的物理块。
11.根据权利要求9所述的方法,进一步包括在执行文件的数据块的写入时复制之后更新读取映射表,所述更新包括修改读取映射表的至少一个虚拟块到物理块的转换,以与写入映射表的对应的虚拟块到物理块的转换相一致。
12.一种在具有许多客户端的客户端-服务器环境内实现文件的写入时复制的方法,所述方法包括:
使用客户端-服务器环境的多个客户端执行文件的写入时复制,所述执行包括:
(i)由多个客户端中的第一客户端执行文件的至少一个数据块的写入时复制;以及
(ii)由多个客户端中的第二客户端执行文件的至少另一个数据块的写入时复制,
其中,执行写入时复制的步骤包括:
使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及
使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
13.根据权利要求12所述的方法,其中,所述执行(i)包括由第一客户端使用单一的写入操作对文件的至少一个数据块执行写入时复制,并且其中,所述执行(ii)包括由第二客户端使用单一的写入操作对至少另一个数据块执行写入时复制。
14.根据权利要求13所述的方法,其中,客户端-服务器环境的文件系统服务器与包含文件的至少一个共享存储设备关联,并且其中,文件系统服务器维护了至少一个共享存储设备中存储的文件的映射表,所述执行(i)包括由第一客户端从文件系统服务器获取文件的读取映射表和写入映射表,在执行文件的至少一个数据块的所述写入时复制时使用所述读取映射表和所述写入映射表,并且其中,所述执行(ii)包括由第二客户端从文件系统服务器获取文件的读取映射表和写入映射表,在执行文件的至少另一个数据块的所述写入时复制时使用读取映射表和写入映射表。
15.根据权利要求14所述的方法,进一步包括由第一客户端通知文件系统服务器,第一客户端执行了文件的至少一个数据块的写入时复制,响应这种情况,更新文件系统服务器维护的文件的读取映射表和写入映射表中的至少一个。
16.根据权利要求14所述的方法,其中,文件系统服务器阻止许多客户端中的任何客户端对由第一客户端进行过写入时复制更新的文件的至少一个数据块和由第二客户端进行过写入时复制更新的文件的至少另一个数据块执行写入时复制。
17.根据权利要求12所述的方法,其中,客户端-服务器环境的文件系统服务器与包含文件的至少一个共享存储设备关联,并且其中,该方法进一步包括由文件系统服务器获取对文件的控制,以启动文件的写入时复制,所述启动包括更新要由所述执行(i)和所述执行(ii)使用的文件的第二映射表。
18.一种在客户端-服务器环境内促进文件的写入时复制的方法,所述方法包括:
从文件系统服务器控制存储在客户端-服务器环境的共享存储单元中的文件的写入时复制的实现方式,所述控制包括允许客户端-服务器环境的第一客户端对文件中的一部分数据执行写入时复制操作,并允许客户端-服务器环境的第二客户端对文件中的不同部分的数据执行写入时复制操作,其中,文件系统服务器控制和促进文件的分布式写入时复制的执行,其中,执行写入时复制操作的步骤包括:使用第一映射表执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用;以及
使用第二映射表执行虚拟块到物理块的第二映射,供将文件的修改的数据块写入到物理存储器使用,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且,其中,两个映射表中对应于同一虚拟块的物理块是不同的物理块。
19.根据权利要求18所述的方法,其中,所述控制包括由文件系统服务器获取对文件的控制,以启动对文件的写入时复制,所述启动包括更新要在执行写入时复制时使用的文件的至少一个映射表。
20.根据权利要求18所述的方法,进一步包括在文件系统服务器上维护文件的读取映射表和写入映射表,其中,读取映射表和写入映射表在执行写入时复制时使用。
21.根据权利要求20所述的方法,进一步包括在执行写入时复制之后更新文件的读取映射表和写入映射表中的至少一个。
22.根据权利要求18所述的方法,其中,所述控制进一步包括,作为文件的写入时复制的一部分,由文件系统服务器阻止对由第一客户端进行过写入时复制更新的文件的一部分数据进行任何另外的更新或对由第二客户端进行过写入时复制更新的文件的不同部分的数据进行任何另外的更新。
23.一种在计算环境中实现写入时复制的系统,所述系统包括:
(i)用于使用第一映射表执行虚拟块到物理块的第一映射、供在从物理存储器读取文件的一个数据块以便进行修改时使用的装置;以及
(ii)使用第二映射表执行虚拟块到物理块的第二映射、供在将文件的修改的数据块写入到物理存储器时使用的装置,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
24.根据权利要求23所述的系统,其中,所述第一映射表包括读取映射表,所述第二映射表包括写入映射表,并且其中,所述写入映射表包含至少一个虚拟块,该虚拟块所映射到的物理存储器的物理块与读取映射表的对应的从虚拟块映射到的物理块相比,是不同的物理块。
25.根据权利要求23所述的系统,其中,所述用于使用(i)的装置包括用于将数据块从物理存储器读取到缓冲区中的装置,并且其中,所述系统进一步包括用于在执行所述使用(ii)之前修改缓冲区中的数据块的装置。
26.根据权利要求25所述的系统,其中,写入时复制实现方式进一步包括用于最初确定修改是包括部分块写入还是完全块写入的装置,如果是部分块写入,那么用于执行所述使用(i)和所述使用(ii),否则用于执行所述使用(ii)而不执行所述使用(i)。
27.根据权利要求23所述的系统,其中,计算环境包括一个客户端-服务器环境,该环境包括文件系统服务器和至少一个客户端,并且其中,所述用于使用(i)的装置和所述用于使用(ii)的装置是由客户端-服务器环境的至少一个客户端执行的。
28.根据权利要求27所述的系统,其中,所述用于至少一个客户端所执行的使用(i)的装置和所述用于使用(ii)的装置进一步包括用于在执行文件的数据块的写入时复制时、对文件系统服务器进行至少一次调用、以获取第一映射表和第二映射表中的至少一个的装置。
29.根据权利要求27所述的系统,进一步包括用于在将修改的数据块写入到物理存储器之后更新第一映射表的装置,所述用于更新的装置包括用于修改第一映射表的至少一个虚拟块到物理块的转换、以与第二映射表的对应的虚拟块到物理块的转换相一致的装置。
30.根据权利要求23所述的系统,其中,计算环境包括计算单元和外部存储单元,外部存储单元包括物理存储器,并且其中,用于使用(i)的装置和用于使用(ii)的装置是由计算单元执行的。
31.一种在客户端-服务器计算机环境中促进写入时复制的系统,所述系统包括:
用于在客户端-服务器计算环境的文件系统服务器上维护文件的读取映射表和写入映射表的装置;以及
其中,读取映射表用于执行虚拟块到物理块的第一映射,供在从物理存储器读取文件的数据块以便进行修改时使用,写入映射表用于执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用,其中,通过使用读取映射表和写入映射表,可以使用单一的写入操作实现数据块的写入时复制,并且,其中,读取映射表和写入映射表中对应于同一虚拟块的物理块是不同的物理块。
32.根据权利要求31所述的系统,其中,文件的写入映射表包含至少一个虚拟块,该虚拟块所映射到的物理存储器的物理块与读取映射表的对应的从虚拟块转换到的物理块相比,是不同的物理块。
33.根据权利要求31所述的系统,进一步包括用于在执行文件的数据块的写入时复制之后更新读取映射表的装置,所述用于更新的装置包括用于修改读取映射表的至少一个虚拟块到物理块的转换、以与写入映射表的对应的虚拟块到物理块的转换相一致的装置。
34.一种在具有许多客户端的客户端-服务器环境内实现文件的写入时复制的系统,所述系统包括:
(i)用于在客户端-服务器环境的第一客户端上对要被写入时复制的文件的至少一个数据块执行写入时复制的装置;以及
(ii)用于在客户端-服务器环境的第二客户端上对要被写入时复制的文件的至少另一个数据块执行写入时复制的装置,其中,对文件的不同的部分的写入时复制是由客户端-服务器环境中的许多客户端的不同的客户端执行的,其中,所述执行写入时复制的装置包括:
用于使用第一映射表执行虚拟块到物理块的第一映射、供在从物理存储器读取文件的一个数据块以便进行修改时使用的装置;以及
使用第二映射表执行虚拟块到物理块的第二映射、供在将文件的修改的数据块写入到物理存储器时使用的装置,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且其中两个映射表中对应于同一虚拟块的物理块是不同的物理块。
35.根据权利要求34所述的系统,其中,所述用于执行(i)的装置包括用于由第一客户端使用单一的写入操作执行文件的至少一个数据块的写入时复制的装置,并且其中,所述用于执行(ii)的装置包括用于由第二客户端使用单一的写入操作执行至少另一个数据块的写入时复制的装置。
36.根据权利要求35所述的系统,其中,客户端-服务器环境的文件系统服务器与包含文件的至少一个共享存储设备关联,并且其中,文件系统服务器维护了至少一个共享存储设备中存储的文件的映射表,所述用于执行(i)的装置包括用于由第一客户端从文件系统服务器获取文件的读取映射表和写入映射表的装置以及在执行文件的至少一个数据块的所述写入时复制时使用所述读取映射表和所述写入映射表的装置,并且其中,所述用于执行(ii)的装置包括用于由第二客户端从文件系统服务器获取文件的读取映射表和写入映射表的装置以及在执行文件的至少另一个数据块的所述写入时复制时使用读取映射表和写入映射表的装置。
37.根据权利要求36所述的系统,进一步包括用于由第一客户端通知文件系统服务器、第一客户端执行了文件的至少一个数据块的写入时复制的装置以及响应这种情况、用于更新文件系统服务器维护的文件的读取映射表和写入映射表中的至少一个的装置。
38.根据权利要求36所述的系统,其中,文件系统服务器阻止许多客户端中的任何客户端对由第一客户端进行过写入时复制更新的文件的至少一个数据块和由第二客户端进行过写入时复制更新的文件的至少另一个数据块执行写入时复制。
39.根据权利要求34所述的系统,其中,客户端-服务器环境的文件系统服务器与包含文件的至少一个共享存储设备关联,并且其中,系统进一步包括用于由文件系统服务器获取对文件的控制、以启动文件的写入时复制的装置,所述用于启动的装置包括用于更新要由所述执行(i)和所述执行(ii)使用的文件的第二映射表的装置。
40.一种促进在客户端-服务器环境中进行文件的写入时复制的系统,所述系统包括:
用于从文件系统服务器控制存储在客户端-服务器环境的共享存储单元中的文件的写入时复制的实现方式的装置,所述用于控制的装置包括用于允许客户端-服务器环境的第一客户端对文件中的一部分数据执行写入时复制操作的装置,以及用于允许客户端-服务器环境的第二客户端对文件中的不同部分的数据执行写入时复制操作的装置,其中,文件系统服务器控制和促进文件的分布式写入时复制的执行,其中,所述系统进一步包括:用于使用第一映射表执行虚拟块到物理块的第一映射、供在从物理存储器读取文件的一个数据块以便进行修改时使用的装置;以及
使用第二映射表执行虚拟块到物理块的第二映射,供在将文件的修改的数据块写入到物理存储器时使用的装置,其中,数据块的写入时复制是使用单一的写入操作来实现的,并且,其中,两个映射表中对应于同一虚拟块的物理块是不同的物理块。
41.根据权利要求40所述的系统,其中,所述用于控制的装置包括用于由文件系统服务器获取对文件的控制、以启动文件的写入时复制的装置,所述启动包括更新要在执行写入时复制时使用的文件的至少一个映射表。
42.根据权利要求40所述的系统,进一步包括用于在文件系统服务器上维护文件的读取映射表和写入映射表的装置,其中,读取映射表和写入映射表在执行写入时复制时使用。
43.根据权利要求42所述的系统,进一步包括用于在执行写入时复制之后更新文件的读取映射表和写入映射表中的至少一个的装置。
44.根据权利要求40所述的系统,其中,所述用于控制的装置进一步包括用于作为文件的写入时复制的一部分、由文件系统服务器阻止对由第一客户端进行过写入时复制更新的文件的一部分数据进行任何另外的更新或对由第二客户端进行过写入时复制更新的文件的不同部分的数据进行任何另外的更新的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/427,403 | 2003-04-29 | ||
US10/427,403 US7085909B2 (en) | 2003-04-29 | 2003-04-29 | Method, system and computer program product for implementing copy-on-write of a file |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1542626A CN1542626A (zh) | 2004-11-03 |
CN1304960C true CN1304960C (zh) | 2007-03-14 |
Family
ID=33310140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100346966A Expired - Fee Related CN1304960C (zh) | 2003-04-29 | 2004-04-23 | 用于实现文件的写入时复制的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7085909B2 (zh) |
JP (2) | JP2004326801A (zh) |
CN (1) | CN1304960C (zh) |
SG (1) | SG143951A1 (zh) |
TW (1) | TWI294570B (zh) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4217043B2 (ja) * | 2002-09-20 | 2009-01-28 | 京セラ株式会社 | アダプティブアレイ無線通信装置、受信レベル表示方法、受信レベル調整方法、受信レベル表示プログラム、および受信レベル調整プログラム |
US7139892B2 (en) * | 2003-05-02 | 2006-11-21 | Microsoft Corporation | Implementation of memory access control using optimizations |
US9209989B2 (en) * | 2004-06-01 | 2015-12-08 | Inmage Systems, Inc. | Causation of a data read operation against a first storage system by a server associated with a second storage system according to a host generated instruction |
US8949395B2 (en) | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
US7831642B1 (en) * | 2004-09-30 | 2010-11-09 | Symantec Operating Corporation | Page cache management for a shared file |
US8200918B2 (en) | 2004-10-01 | 2012-06-12 | International Business Machines Corporation | Tracking ownership of memory in a data processing system through use of a memory monitor |
US20060123209A1 (en) * | 2004-12-06 | 2006-06-08 | Devin Borland | Devices and methods of performing direct input/output operations using information indicative of copy-on-write status |
JP4806183B2 (ja) * | 2004-12-24 | 2011-11-02 | 富士通セミコンダクター株式会社 | ファイル情報の書き込み処理方法およびプログラム |
US20060143412A1 (en) * | 2004-12-28 | 2006-06-29 | Philippe Armangau | Snapshot copy facility maintaining read performance and write performance |
US8341371B2 (en) * | 2005-01-31 | 2012-12-25 | Sandisk Il Ltd | Method of managing copy operations in flash memories |
US20060241947A1 (en) * | 2005-04-25 | 2006-10-26 | Belhaj Said O | Voice prompt generation using downloadable scripts |
KR100666174B1 (ko) * | 2005-04-27 | 2007-01-09 | 삼성전자주식회사 | 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법 |
US7870353B2 (en) | 2005-08-15 | 2011-01-11 | International Business Machines Corporation | Copying storage units and related metadata to storage |
US20070143566A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
US20070143567A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for data alignment in non-volatile memories with a directly mapped file storage system |
US7945726B2 (en) * | 2006-05-08 | 2011-05-17 | Emc Corporation | Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system |
US7653832B2 (en) * | 2006-05-08 | 2010-01-26 | Emc Corporation | Storage array virtualization using a storage block mapping protocol client and server |
US7676514B2 (en) * | 2006-05-08 | 2010-03-09 | Emc Corporation | Distributed maintenance of snapshot copies by a primary processor managing metadata and a secondary processor providing read-write access to a production dataset |
US7562189B2 (en) * | 2006-09-28 | 2009-07-14 | Network Appliance, Inc. | Write-in-place within a write-anywhere filesystem |
US7822728B1 (en) | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
US7945751B2 (en) * | 2006-12-18 | 2011-05-17 | International Business Machines Corporation | Disk image inheritance |
US8229908B2 (en) * | 2007-01-31 | 2012-07-24 | Intuit Inc. | Dividing financial-data to facilitate simultaneous modifications by multiple users |
US7870356B1 (en) | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
US9152349B2 (en) * | 2007-03-23 | 2015-10-06 | Emc Corporation | Automated information life-cycle management with thin provisioning |
US7653612B1 (en) | 2007-03-28 | 2010-01-26 | Emc Corporation | Data protection services offload using shallow files |
WO2009052525A1 (en) * | 2007-10-19 | 2009-04-23 | Virident Systems, Inc. | Managing memory systems containing components with asymmetric characteristics |
US7844785B2 (en) * | 2007-10-22 | 2010-11-30 | Qimonda Ag | Method and apparatus for memory access optimization |
KR101391881B1 (ko) * | 2007-10-23 | 2014-05-07 | 삼성전자주식회사 | 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법 |
US9507784B2 (en) | 2007-12-21 | 2016-11-29 | Netapp, Inc. | Selective extraction of information from a mirrored image file |
US8200638B1 (en) | 2008-04-30 | 2012-06-12 | Netapp, Inc. | Individual file restore from block-level incremental backups by using client-server backup protocol |
CN102334093B (zh) * | 2009-03-18 | 2017-08-01 | 株式会社日立制作所 | 存储控制装置以及虚拟卷的控制方法 |
US8504529B1 (en) | 2009-06-19 | 2013-08-06 | Netapp, Inc. | System and method for restoring data to a storage device based on a backup image |
US8645647B2 (en) * | 2009-09-02 | 2014-02-04 | International Business Machines Corporation | Data storage snapshot with reduced copy-on-write |
TWI425514B (zh) * | 2009-10-29 | 2014-02-01 | Hon Hai Prec Ind Co Ltd | Nand快閃記憶體及其資料更新管理方法 |
US20110161560A1 (en) * | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US9134918B2 (en) * | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US9176853B2 (en) * | 2010-01-29 | 2015-11-03 | Symantec Corporation | Managing copy-on-writes to snapshots |
TWI446349B (zh) * | 2010-03-04 | 2014-07-21 | Phison Electronics Corp | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 |
CN103026346B (zh) * | 2010-07-27 | 2016-01-20 | 国际商业机器公司 | 用于从固态存储器设备读取及写入数据的方法及存储系统 |
US8812450B1 (en) * | 2011-04-29 | 2014-08-19 | Netapp, Inc. | Systems and methods for instantaneous cloning |
US8868869B2 (en) | 2011-08-08 | 2014-10-21 | International Business Machines Corporation | Enhanced copy-on-write operation for solid state drives |
CN102436355B (zh) * | 2011-11-15 | 2014-06-25 | 华为技术有限公司 | 一种数据传输方法、设备及系统 |
US9348769B2 (en) | 2012-05-24 | 2016-05-24 | Red Hat, Inc. | Managing zeroed logical volume |
US9116852B2 (en) | 2012-10-16 | 2015-08-25 | International Business Machines Corporation | Processing a copy command directed to a first storage architecture for data that is stored in a second storage architecture |
US9405704B2 (en) | 2012-10-16 | 2016-08-02 | International Business Machines Corporation | Establishing a point-in-time copy relationship between source logical addresses and target logical addresses |
US9135121B2 (en) | 2012-10-16 | 2015-09-15 | International Business Machines Corporation | Managing updates and copying data in a point-in-time copy relationship expressed as source logical addresses and target logical addresses |
US9183246B2 (en) | 2013-01-15 | 2015-11-10 | Microsoft Technology Licensing, Llc | File system with per-file selectable integrity |
US9424125B2 (en) * | 2013-01-16 | 2016-08-23 | Google Inc. | Consistent, disk-backed arrays |
US9715519B2 (en) * | 2013-03-15 | 2017-07-25 | Sandisk Technologies Llc | Managing updates to multiple sets of metadata pertaining to a memory |
US9792221B2 (en) * | 2013-11-22 | 2017-10-17 | Swarm64 As | System and method for improving performance of read/write operations from a persistent memory device |
EP3069276B1 (en) * | 2014-01-02 | 2019-03-13 | Huawei Technologies Co., Ltd. | Method and apparatus of maintaining data for online analytical processing in a database system |
US9558078B2 (en) | 2014-10-28 | 2017-01-31 | Microsoft Technology Licensing, Llc | Point in time database restore from storage snapshots |
US9959176B2 (en) | 2016-02-22 | 2018-05-01 | Red Hat Inc. | Failure recovery in shared storage operations |
US9905294B1 (en) * | 2017-05-03 | 2018-02-27 | Seagate Technology Llc | Writing logically offset pages of data to N-level memory cells coupled to a common word line |
US10713361B2 (en) * | 2017-06-12 | 2020-07-14 | Acronis International Gmbh | Anti-malware protection using volume filters |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
CN110019097B (zh) * | 2017-12-29 | 2021-09-28 | 中国移动通信集团四川有限公司 | 虚拟逻辑副本管理方法、装置、设备及介质 |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10620871B1 (en) * | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
CN110008197B (zh) * | 2019-04-12 | 2020-07-07 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统及电子设备和存储介质 |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
CN111143126A (zh) * | 2019-12-20 | 2020-05-12 | 浪潮电子信息产业股份有限公司 | 一种分布式文件系统的数据拷贝方法、系统及相关组件 |
CN111291426A (zh) * | 2020-01-21 | 2020-06-16 | 李岗 | 虚拟存储与物理存储的数据交互方法及系统 |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
US11622000B2 (en) | 2021-01-29 | 2023-04-04 | Salesforce, Inc. | Grey failure handling in distributed storage systems |
US11509721B2 (en) | 2021-01-31 | 2022-11-22 | Salesforce.Com, Inc. | Cookie-based network location of storage nodes in cloud |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742450A (en) * | 1986-01-16 | 1988-05-03 | International Business Machines Corporation | Method to share copy on write segment for mapped files |
US6219770B1 (en) * | 1998-03-23 | 2001-04-17 | Compaq Computer Corporation | Method and apparatus for managing copy on write operations in a virtual memory |
WO2003001405A1 (en) * | 2001-06-25 | 2003-01-03 | Nokia Corporation | Method and system for performing concurrency control in a relational database |
US20030140070A1 (en) * | 2002-01-22 | 2003-07-24 | Kaczmarski Michael Allen | Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time |
US20040068637A1 (en) * | 2002-10-03 | 2004-04-08 | Nelson Lee L. | Virtual storage systems and virtual storage system operational methods |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293597A (en) * | 1987-03-09 | 1994-03-08 | At&T Bell Laboratories | Concurrent context memory management unit |
DE68917326T2 (de) * | 1988-01-20 | 1995-03-02 | Advanced Micro Devices Inc | Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen. |
US5379391A (en) * | 1991-03-01 | 1995-01-03 | Storage Technology Corporation | Method and apparatus to access data records in a cache memory by multiple virtual addresses |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5666514A (en) * | 1994-07-01 | 1997-09-09 | Board Of Trustees Of The Leland Stanford Junior University | Cache memory containing extra status bits to indicate memory regions where logging of data should occur |
US5835953A (en) * | 1994-10-13 | 1998-11-10 | Vinca Corporation | Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating |
US5649152A (en) * | 1994-10-13 | 1997-07-15 | Vinca Corporation | Method and system for providing a static snapshot of data stored on a mass storage system |
US6212601B1 (en) * | 1996-08-30 | 2001-04-03 | Texas Instruments Incorporated | Microprocessor system with block move circuit disposed between cache circuits |
US6081875A (en) * | 1997-05-19 | 2000-06-27 | Emc Corporation | Apparatus and method for backup of a disk storage system |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6038639A (en) * | 1997-09-09 | 2000-03-14 | Storage Technology Corporation | Data file storage management system for snapshot copy operations |
US6112285A (en) * | 1997-09-23 | 2000-08-29 | Silicon Graphics, Inc. | Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support |
JP2001051882A (ja) * | 1999-08-04 | 2001-02-23 | Fujitsu Ltd | スナップショット参照方法、及び記憶装置 |
US6950833B2 (en) * | 2001-06-05 | 2005-09-27 | Silicon Graphics, Inc. | Clustered filesystem |
-
2003
- 2003-04-29 US US10/427,403 patent/US7085909B2/en not_active Expired - Fee Related
-
2004
- 2004-03-19 TW TW093107446A patent/TWI294570B/zh not_active IP Right Cessation
- 2004-04-23 SG SG200402314-9A patent/SG143951A1/en unknown
- 2004-04-23 CN CNB2004100346966A patent/CN1304960C/zh not_active Expired - Fee Related
- 2004-04-26 JP JP2004129471A patent/JP2004326801A/ja active Pending
-
2008
- 2008-09-22 JP JP2008242286A patent/JP5166184B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742450A (en) * | 1986-01-16 | 1988-05-03 | International Business Machines Corporation | Method to share copy on write segment for mapped files |
US6219770B1 (en) * | 1998-03-23 | 2001-04-17 | Compaq Computer Corporation | Method and apparatus for managing copy on write operations in a virtual memory |
WO2003001405A1 (en) * | 2001-06-25 | 2003-01-03 | Nokia Corporation | Method and system for performing concurrency control in a relational database |
US20030140070A1 (en) * | 2002-01-22 | 2003-07-24 | Kaczmarski Michael Allen | Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time |
US20040068637A1 (en) * | 2002-10-03 | 2004-04-08 | Nelson Lee L. | Virtual storage systems and virtual storage system operational methods |
Also Published As
Publication number | Publication date |
---|---|
US7085909B2 (en) | 2006-08-01 |
TW200504507A (en) | 2005-02-01 |
TWI294570B (en) | 2008-03-11 |
JP2004326801A (ja) | 2004-11-18 |
US20040221125A1 (en) | 2004-11-04 |
JP2009059374A (ja) | 2009-03-19 |
SG143951A1 (en) | 2008-07-29 |
CN1542626A (zh) | 2004-11-03 |
JP5166184B2 (ja) | 2013-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1304960C (zh) | 用于实现文件的写入时复制的方法和系统 | |
CN1186729C (zh) | 从虚地址计算页表索引的方法和装置 | |
CN1158604C (zh) | 盘片驱动器以及将信息存储在驱动器盘片上的方法 | |
CN1114859C (zh) | 数据共享方法和计算机体系结构 | |
CN1249586C (zh) | 闪速存储器系统 | |
CN1174323C (zh) | 管理共享内存的方法 | |
CN1249585C (zh) | 闪速存储器系统 | |
CN1016829B (zh) | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 | |
CN100338582C (zh) | 存储装置系统 | |
CN1881183A (zh) | 信息处理装置、进程控制方法及其计算机程序 | |
CN1791862A (zh) | 操作系统 | |
US8549526B2 (en) | Access control apparatus and access control method | |
CN1788256A (zh) | 用于增量虚拟复制的方法、系统和程序 | |
CN1512353A (zh) | 性能改善的数据存储和方法 | |
CN1222986A (zh) | 执行并飞"异"运算的方法和系统 | |
CN1645323A (zh) | 以存储技术抽象方式在文件内创建文件系统 | |
CN1468404A (zh) | 数据处理方法和装置 | |
CN101052949A (zh) | 操作系统 | |
CN1537277A (zh) | 用于合并存贮的数据项的按块擦除存储系统和方法 | |
CN101477496A (zh) | 基于分布式内存虚拟化的numa结构的实现方法 | |
CN104636181A (zh) | 用于迁移虚拟机的方法和系统 | |
CN1289966A (zh) | 通过事务对多个文件实现原子更新的事务文件系统 | |
CN1722107A (zh) | 计算机系统以及存储装置系统的迁移方法 | |
CN1719422A (zh) | 一种存储器文件数据虚拟存取方法 | |
CN1514374A (zh) | 变更高速缓存数据区段的方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070314 |