CN104951244B - 用于存取数据的方法和设备 - Google Patents
用于存取数据的方法和设备 Download PDFInfo
- Publication number
- CN104951244B CN104951244B CN201410135722.8A CN201410135722A CN104951244B CN 104951244 B CN104951244 B CN 104951244B CN 201410135722 A CN201410135722 A CN 201410135722A CN 104951244 B CN104951244 B CN 104951244B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- physical block
- lbn
- memory
- 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.)
- Active
Links
Classifications
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Abstract
本发明的实施例公开了一种用于存取数据的方法和设备。该方法包括:接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据;在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑块号对应的第一物理块;以及在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。本发明的一些实施例可以避免存储大量冗余数据并且提高数据读取速率。
Description
技术领域
本发明的实施例总体上涉及数据存取领域,具体地涉及用于存取数据的方法和设备。
背景技术
虚拟化是指在计算机硬件上通过软件或硬件的方法,在计算机硬件和操作系统之间构建一个虚拟平台,以便为该操作系统虚拟出多个独立的虚拟硬件运行环境,并且共享硬件资源。例如,服务器虚拟化允许具有异质操作系统的多个虚拟机在同一计算机硬件上相互隔离地并行运行,其中每个虚拟机具有其自己的虚拟硬件集合(例如只读存储器、中央处理器等)并且在该虚拟机上加载操作系统和应用程序。
通常,虚拟机被封装到文件中,从而使得有可能快速地保存、复制和提供虚拟机。例如,完全配置有应用程序、操作系统、BIOS和虚拟硬件的虚拟机可以在几秒种内从一个物理服务器移动到另一个物理服务器,从而用于零停机维护。
尽管虚拟化具有很多优点,但是虚拟化可能导致在例如处理器、寄存器、内存存储器、只读存储器等的存储器中不必要地存储大量冗余数据。例如,为了在虚拟服务器环境中将16个(或更多个)服务器应用程序操作为16个虚拟机,必须将它们各自加载到存储器中,即便它们具有相同的数据、文件、可执行文件等。
为了图示如何在存储系统组织内存,图1示出了根据相关技术的在磁盘上的数据结构和在内存中的数据结构。如图1所示,虚线下方的数据结构是指文件1和文件2在磁盘上的数据结构,虚线上方的数据结构是指文件1和文件2在内存中的数据结构。为了使得描述更加简单,这里假设内存中的内存页大小等于磁盘上的物理块大小,这虽然不是必需的但是在许多实际产品中确实也是这样的。
在图1中,文件1包括多个逻辑块号(LBN),分别是LBN n、LBN n+1、LBN m和LBN m+1。在虚线下方,这些逻辑块号通过直接指针(和间接指针)分别指向多个物理块中的一个物理块,即物理块a、物理块b、物理块c和物理块d,同时,这些多个物理块也分别对应到多个内存页中的一个内存页,即内存页a、内存页b、内存页c和内存页d。因此,该文件1中的多个LBN与该多个内存页得以一一对应。类似地,文件2也包括多个逻辑块号(LBN),分别是LBN N、LBN N+1、LBN M和LBN M+1,它们通过直接指针(和间接指针)分别指向多个物理块中的一个物理块,即物理块A、物理块B、物理块C和物理块D,同时,该多个物理块也分别对应到多个内存页中的一个内存页,即内存页A、内存页B、内存页C和内存页D。因此,该文件2中的多个LBN与该多个内存页得以一一对应。
通过采用图1的方式而利用文件中的逻辑块号(即文件中的偏移)来索引,在接收到读取/写入请求时,内存系统能够根据该读取/写入请求中的偏移,快速地找到内存页而不需要任何其他操作。通常,该索引由一些类型的哈希机制来实现。例如,在Linux内核2.6中,由基数树来实现该索引。在Windows内核中,由多级索引阵列来实现该索引。
但是,在图1中,如果LBN n+1、LBN m+1、LBN N和LBN M分别对应到包含相同内容的多个物理块和/或对应到包含相同内容的多个内存页,则在磁盘上该相同内容的物理块(以斜线阴影示出)将被重复存储多次,并且在内存中该相同内容的内存页(以竖线阴影示出)也将被重复存储多次,从而造成不必要地存储大量冗余数据。
本领域技术人员将理解的是,上述讨论的背景技术并不限于上面描述的虚拟机环境中操作的实施例。相反,提供此背景技术只是为了示出其中可以实践这里描述的一些实施例的一个示范性技术领域。该示范性技术领域还可以例如是能够为电子邮件提供大容量附件的电子邮件服务器,其中该大容量附件可能被发送到该电子邮件服务器的多个用户,因此每个用户都因为该大容量附件而单独地占用一部分被分配给该电子邮件服务器的存储容量,从而造成不必要地存储大量冗余数据。
发明内容
为此,本发明实施例提供了一种用于存取数据的方法和设备。
根据本发明实施例的一个方面,提供了一种用于存取数据的方法,包括:接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据;在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑块号对应的第一物理块;以及在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。
在一个实施例中,该方法还包括:在该内存中不存在与该第二物理块对应的该第二内存页时,读取该第二物理块中的数据。
在一个实施例中,该方法还包括:在读取该第二物理决中的数据之后,在该内存中创建用于存储该数据的第三内存页,并且将该第一逻辑块号与该第三内存页对应。
在一个实施例中,其中在该内存中存在与该第二物理决对应的该第二内存页时,将该第一逻辑决号与该第二内存页对应。
在一个实施例中,该方法还包括:将原来指向该第一物理块的该磁盘上的指针指向该第二物理块。
在一个实施例中,该方法还包括:通过该内存中的物理块号将该第二物理块与该第二内存页对应。
在一个实施例中,该方法还包括:接收数据写入请求,该数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页;在该内存中存在与该第二逻辑块号对应的第四内存页时,在该内存中创建用于写入该待写入的数据的、不同于该第四内存页的第五内存页,其中该第四内存页与该磁盘中的第三物理块对应,并且在该磁盘中存在与该第三物理块的内容相同的第四物理块;以及将该第二逻辑块号与该第五内存页对应,并且将该待写入的数据写入该第五内存页。
在一个实施例中,其中将该待写入的数据和该第四内存页中的数据一起写入该第五内存页。
在一个实施例中,该方法还包括:在该内存中不存在与该第二逻辑块号对应的内存页时,在该内存中创建用于写入该待写入的数据的第六内存页;以及将该第二逻辑块号与该第六内存页对应,并且将该待写入的数据写入该第六内存页。
在一个实施例中,其中将该待写入的数据和该磁盘中的第五物理块中的数据一起写入该第六内存页。
在一个实施例中,该方法还包括:周期性地或者当创建的内存页数量达到预定阈值时,将所创建的内存页中的数据写入该磁盘。
在一个实施例中,该方法还包括:将原来指向该第四物理块的该磁盘上的指针指向该第三物理块。
在一个实施例中,该方法还包括:通过该内存中的物理块号将该第三物理块与该第四内存页对应。
根据本发明的另一个方面,还提供了一种用于存取数据的设备,包括:第一接收装置,用于接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据;第一确定装置,用于在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑决号对应的第一物理块;以及第一读取装置,用于在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。
在一个实施例中,该设备还包括:第二读取装置,用于在该内存中不存在与该第二物理块对应的该第二内存页时,读取该第二物理块中的数据。
在一个实施例中,该设备还包括:第一创建装置,用于在读取该第二物理块中的数据之后,在该内存中创建用于存储该数据的第三内存页,以及第一对应装置,用于将该第一逻辑块号与该第三内存页对应。
在一个实施例中,其中在该内存中存在与该第二物理块对应的该第二内存页时,将该第一逻辑块号与该第二内存页对应。
在一个实施例中,该设备还包括:第一指向装置,用于将原来指向该第一物理块的该磁盘上的指针指向该第二物理块。
在一个实施例中,该设备还包括:第二对应装置,用于通过该内存中的物理块号将该第二物理块与该第二内存页对应。
在一个实施例中,该设备还包括:第二接收装置,用于接收数据写入请求,该数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页;第二创建装置,用于在该内存中存在与该第二逻辑块号对应的第四内存页时,在该内存中创建用于写入该待写入的数据的、不同于该第四内存页的第五内存页,其中该第四内存页与该磁盘中的第三物理块对应,并且在该磁盘中存在与该第三物理块的内容相同的第四物理块;以及第一写入装置,用于将该第二逻辑块号与该第五内存页对应,并且将该待写入的数据写入该第五内存页。
在一个实施例中,其中该第一写入装置用于将该待写入的数据和该第四内存页中的数据一起写入该第五内存页。
在一个实施例中,该设备还包括:第三创建装置,用于在该内存中不存在与该第二逻辑块号对应的内存页时,在该内存中创建用于写入该待写入的数据的第六内存页;第四对应装置,用于将该第二逻辑决号与该第六内存页对应;以及第二写入装置,用于将该待写入的数据写入该第六内存页。
在一个实施例中,其中该第二写入装置用于将该待写入的数据和该磁盘中的第五物理块中的数据一起写入该第六内存页。
在一个实施例中,该设备还包括:第三写入装置,用于周期性地或者当创建的内存页数量达到预定阈值时,将所创建的内存页中的数据写入该磁盘。
在一个实施例中,该设备还包括:第二指向装置,用于将原来指向该第四物理块的该磁盘上的指针指向该第三物理块。
在一个实施例中,该设备还包括:第五对应装置,用于通过该内存中的物理块号将该第三物理块与该第四内存页对应。
根据本发明实施例的用于存取数据的方法和设备可以避免存储大量冗余数据并且提高数据读取速率。
附图说明
通过参考附图阅读下文的详细描述,本发明的实施例的上述以及其它目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施例,其中:
图1示出了根据相关技术的在磁盘上的数据结构和在内存中的数据结构;
图2示出了根据本发明实施例的在磁盘上的数据结构和在内存中的数据结构;
图3是根据本发明实施例的用于存取数据的方法的流程图;以及
图4是根据本发明实施例的用于存取数据的设备的结构框图。
应当注意,附图中的流程图和框图,图示了按照本发明各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
具体实施方式
下面将参考附图中示出的若干示例性实施例来描述本发明的原理和精神。应当理解,给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本发明的实施例,而并非以任何方式限制本发明的实施例的范围。
根据本发明的一个实施例,提供了一种用于存取数据的方法。该方法可以基于例如图2而实现。
在图2中,文件1包括多个逻辑块号(LBN),分别是LBN n、LBN n+1、LBN m和LBN m+1,它们通过直接指针(和间接指针)分别指向多个物理块中的一个物理块。然而,鉴于LBN n+1和LBN m+1指向的物理块的内容相同,因此为了不存储大量冗余数据,本发明实施例将原来指向LBN m+1所指向的物理块的指针指向LBN n+1所指向的物理块,即物理块b。本领域技术人员将理解,还可以将原来指向LBN n+1所指向的物理块的指针和原来指向LBN m+1所指向的物理块的指针二者都指向其它物理块。同时,该多个物理块也分别对应到多个内存页中的一个内存页,即内存页a、内存页b和内存页c。因此,该文件1中的多个LBN中的每个LBN能够对应于该多个内存页中的一个内存页。
类似地,文件2也包括多个逻辑块号(LBN),分别是LBN N、LBN N+1、LBN M和LBN M+1,它们通过直接指针(和间接指针)分别指向多个物理块中的一个物理块。然而,鉴于LBN N和LBN M+1对应的物理块的内容相同,因此为了不存储大量冗余数据,本发明实施例将原来指向LBN N所指向的物理块的指针和原来指向LBN M+1所指向的物理块的指针二者都指向LBN n+1所指向的物理块,即物理块b。同时,该多个物理块也分别对应到多个内存页中的一个内存页,即内存页b、内存页B和内存页C。因此,该文件2中的多个LBN中的每个LBN能够对应于该多个内存页中的一个内存页。
由此可见,图2与图1的主要区别在于,将原来指向内容相同的物理块的磁盘上的指针都指向同一物理块,并且类似地在内存中采用同一内存页,该内存页可以通过该内存中的物理块号而对应于该物理块。
图3是根据本发明实施例的用于存取数据的方法的流程图,如图3所示,包括如下的步骤S302至步骤S306。
步骤S302,接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据。
步骤S304,在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑块号对应的第一物理块。
步骤S306,在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。
在这一实施例中,对于磁盘上的内容相同的第一物理块和第二物理块,在内存中采用同一内存页(例如内存页b),从而可以避免在内存中存储大量冗余数据。同时,从第二内存页(该第二内存页可以是在该内存中事先创建的)中读取数据,而非从第一物理块或第二物理块中读取数据,可以提高数据读取速率。经测试,采用这一实施例,对于本发明背景技术中所提及的具有16个虚拟机的虚拟机环境,其实际存储空间仅为原存储空间的90.82%;对于具有128个虚拟机的虚拟机环境,其实际存储空间仅为原存储空间的88.65%。
具体来说,可以通过如下方式来执行步骤S304,在该方式中,查询在线文件索引系统以查找是否存在该第一内存页,其中该在线文件索引系统存储着各个逻辑块号与内存页的对应关系。如果存在该第一内存页,则读取该第一内存页中的数据并且向输出缓冲器复制该数据,然后获取该数据读取请求中的下一个逻辑块号并且采用同样的处置方法。如果不存在该第一内存页,则将在磁盘上确定与该第一逻辑决号对应的第一物理块,其中,可以通过在磁盘上的直接指针(和间接指针)来查询该第一物理块。
此外,可以通过如下方式来执行步骤S306,在该方式中,查询去冗索引系统以查找是否存在该第二内存页,其中该去冗索引系统存储着内容相同的各个物理块与内存页的对应关系。下面将结合具体描述的实施例来说明当存在该第二内存页与否时的具体操作。
在本发明的一个实施例中,当存在该第二内存页时,可以读取该第二内存页中的数据并且向输出缓冲器复制该数据,然后获取该数据读取请求中的下一个逻辑块号并且采用同样的处置方法。进而,在读取该第二内存页中的数据之后,可以将该第一逻辑块号与该第二内存页对应。这样,如果此后需要再次读取与该第一逻辑块号对应的数据,则可以直接读取该第二内存页中的数据,而无需在磁盘中确定对应的物理块,从而提高数据读取速率。
在本发明的一个实施例中,当不存在该第二内存页时,可以读取与该第一物理块内容相同的第二物理块中的数据并且向输出缓冲器复制该数据,然后获取该数据读取请求中的下一个逻辑块号并且采用同样的处置方法。进而,在读取该第二物理块中的数据之后,可以在内存中创建用于存储该数据的第三内存页,并且将该第一逻辑块号与该第三内存页对应。这样,如果此后需要再次读取与该第一逻辑块号对应的数据,则可以直接读取该第三内存页中的数据,而无需在磁盘中确定对应的物理块,从而提高数据读取速率。
这里,为了将该第一逻辑块号与该第二内存页或者该第三内存页对应,本发明的实施例可以更新该在线文件索引系统和该去冗索引系统。
在本发明的一个实施例中,将原来指向第一物理块的磁盘上的指针指向第二物理块。因此,对于磁盘上的内容相同的第一物理块和第二物理块,在磁盘上采用同一物理块(例如物理块b)来存储数据,从而可以避免在磁盘上存储大量冗余数据。
根据本发明的一个实施例,可以在磁盘中利用去冗引擎来对多个物理块进行去冗。例如,当该去冗引擎在磁盘中发现内容相同的第一物理块和第二物理块时,可以删除该第一物理块并且将原来指向第一物理块的磁盘上的指针指向第二物理块。在此过程中,还可以将本来与该第一物理块对应的内存页无效,从而节约内存空间。
在本发明的一个实施例中,通过内存中的物理块号而将该第二物理块与该第二内存页对应。例如,在图2中,物理块b通过内存中的物理块号b而与内存页b对应,从而可以通过物理块号b来快速地找到对应的内存页。
在步骤S302至步骤S306所示的实施例中,对于分别与多个逻辑块号对应的多个内容相同的物理块,在磁盘上采用同一物理块(例如物理块b)来存储数据以避免在磁盘上存储大量冗余数据,在内存中采用同一内存页来存储数据以避免在内存中存储大量冗余数据。但是,该实施例存在的一个问题在于,当需要写入与其中某个逻辑块号对应的物理块和/或内存页时,该写入将可能影响到其它无需写入的物理块和/或内存页中的数据。为此,根据本发明实施例的用于存取数据的方法还可以包括如下的步骤S402至步骤S406。
步骤S402,接收数据写入请求,该数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页。
步骤S404,在该内存中存在与该第二逻辑块号对应的第四内存页时,在该内存中创建用于写入待写入的数据的、不同于该第四内存页的第五内存页,其中该第四内存页与该磁盘中的第三物理块对应,并且在该磁盘中存在与该第三物理块的内容相同的第四物理块。
步骤S406,将该第二逻辑块号与该第五内存页对应,并且将该待写入的数据写入该第五内存页。
步骤S402至步骤S406所示的实施例可以解决上述问题,其原因是,不再利用与该第二逻辑块号对应的第四内存页来写入待写入的数据,而是创建新的第五内存页来写入待写入的数据,从而避免该写入影响到其它无需写入的物理块和/或内存页中的数据。
需要说明的是,本发明实施例中的所有写入操作都以先对内存页写入再对物理块写入为例。本领域技术人员知晓,对物理块的直接写入(也称为非内存写入)可以通过将对应的内存页无效而绕开内存系统。虽然对物理块的直接写入并不常用,但是其也应当纳入本发明的保护范围。
具体来说,可以通过如下方式来执行步骤S404和步骤S406,在该方式中,查询在线文件索引系统以查找是否存在该第四内存页,其中该在线文件索引系统存储着各个逻辑块号与内存页的对应关系。下面将结合具体描述的实施例来说明当存在该第四内存页与否时的具体操作。
如果存在该第四内存页,则本发明实施例可以创建新的第五内存页并且从输入缓冲器向该第五内存页写入该待写入的数据,其中该第四内存页与该磁盘中的第三物理块对应,并且在该磁盘中存在与该第三物理块的内容相同的第四物理块。其中,如果该写入操作是部分块写入,则本发明的实施例还可以从该第四内存页向该第五内存页复制部分数据,以与该待写入的数据组成该第五内存页中的数据。
然后,本发明实施例还可以更新在线文件索引系统以指出与该第二逻辑块号对应的是该第五内存页。这样,如果此后需要再次读取与该第二逻辑块号对应的数据,则可以直接读取该第五内存页中的数据,而无需在磁盘中确定对应的物理块,从而提高数据读取速率。本领域技术人员将理解,该第四内存页并未受到影响并且仍然可以通过去冗索引来找到。
此后,本发明实施例还可以获取该数据写入请求中的下一个逻辑块号并且采用同样的处置方法。
如果在内存中不存在任何与第二逻辑块号对应的内存页,则本发明实施例可以创建新的第六内存页并且从输入缓冲器向该第六内存页写入该待写入的数据。其中,如果该写入操作是部分块写入,则本发明的实施例还可以从磁盘中的第五物理块复制部分数据,以与该待写入的数据组成该第六内存页中的数据。其中,从磁盘中的第五物理块复制部分数据可以通过上述步骤S306所描述的方式而从内存中的与该第五物理块对应的内存页复制部分数据。
然后,本发明实施例还可以更新在线文件索引系统以指出与该第二逻辑块号对应的是该第六内存页。这样,如果此后需要再次读取与该第二逻辑块号对应的数据,则可以直接读取该第六内存页中的数据,而无需在磁盘中确定对应的物理块,从而提高数据读取速率。
此后,本发明实施例还可以获取该数据写入请求中的下一个逻辑块号并且采用同样的处置方法。
根据本发明的一个实施例,在每次创建新的内存页之后,还可以对该内存页进行标记,例如将该内存页标记为脏的。此后,可以周期性地、按照每个被存取的文件、和/或当脏的内存页的数量达到预定阈值时触发刷新机制,其中该刷新机制可以将标记的内存页中的数据对应地存储到磁盘中。
具体而言,在刷新期间,查询在线文件索引系统以在磁盘中查找与该标记的内存页对应的物理块。然后,根据在磁盘中是否存在与该物理块内容相同的其他物理块而采用下面将具体描述的不同刷新方式。
如果在磁盘中存在与该物理块内容相同的其他物理块,则分配新的物理块,其中该新的物理块用于写入该标记的内存页中的数据。然后,更新去冗索引系统以便将该新的物理块与该标记的内存页对应。
如果在磁盘中不存在与该物理块内容相同的其他物理块,则在该物理块写入该标记的内存页中的数据,并且更新去冗索引系统以便将该物理块与该标记的内存页对应。
在本发明的一个实施例中,将原来指向第四物理块的磁盘上的指针指向第三物理块。因此,对于磁盘上的内容相同的第三物理块和第四物理块,在磁盘上采用同一物理块来存储数据,从而可以避免在磁盘上存储大量冗余数据。
根据本发明的一个实施例,可以在磁盘中利用去冗引擎来对多个物理块进行去冗。例如,当该去冗引擎在磁盘中发现内容相同的第三物理块和第四物理决时,可以删除该第四物理块并且将原来指向第四物理块的磁盘上的指针指向第三物理块。在此过程中,还可以将本来与该第四物理块对应的内存页无效,从而节约内存空间。
在本发明的一个实施例中,通过内存中的物理块号而将该第三物理块与该第四内存页对应。
图4是根据本发明实施例的用于存取数据的设备的结构框图,如图4所示,包括第一接收装置42、第一确定装置44和第一读取装置46。下面对其结构进行详细描述。
第一接收装置42,用于接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据;第一确定装置44,连接至第一接收装置42,用于在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑块号对应的第一物理块;以及第一读取装置46,连接至第一确定装置44,用于在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。
根据本发明的一个实施例,该设备还包括:第二读取装置,用于在该内存中不存在与该第二物理块对应的该第二内存页时,读取该第二物理块中的数据。
根据本发明的一个实施例,该设备还包括:第一创建装置,用于在读取该第二物理块中的数据之后,在该内存中创建用于存储该数据的第三内存页,以及第一对应装置,用于将该第一逻辑块号与该第三内存页对应。
根据本发明的一个实施例,其中在该内存中存在与该第二物理块对应的该第二内存页时,将该第一逻辑块号与该第二内存页对应。
根据本发明的一个实施例,该设备还包括:第一指向装置,用于将原来指向该第一物理块的该磁盘上的指针指向该第二物理块。
根据本发明的一个实施例,该设备还包括:第二对应装置,用于通过该内存中的物理块号将该第二物理块与该第二内存页对应。
根据本发明的一个实施例,该设备还包括:第二接收装置,用于接收数据写入请求,该数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页;第二创建装置,用于在该内存中存在与该第二逻辑块号对应的第四内存页时,在该内存中创建用于写入该待写入的数据的、不同于该第四内存页的第五内存页,其中该第四内存页与该磁盘中的第三物理块对应,并且在该磁盘中存在与该第三物理块的内容相同的第四物理块;第三对应装置,用于将该第二逻辑块号与该第五内存页对应;以及第一写入装置,用于将该待写入的数据写入该第五内存页。
根据本发明的一个实施例,其中该第一写入装置用于将该待写入的数据和该第四内存页中的数据一起写入该第五内存页。
根据本发明的一个实施例,该设备还包括:第三创建装置,用于在该内存中不存在与该第二逻辑块号对应的内存页时,在该内存中创建用于写入该待写入的数据的第六内存页;第四对应装置,用于将该第二逻辑块号与该第六内存页对应;以及第二写入装置,用于将该待写入的数据写入该第六内存页。
根据本发明的一个实施例,其中该第二写入装置用于将该待写入的数据和该磁盘中的第五物理块中的数据一起写入该第六内存页。
根据本发明的一个实施例,该设备还包括:第三写入装置,用于周期性地或者当创建的内存页数量达到预定阈值时,将所创建的内存页中的数据写入该磁盘。
根据本发明的一个实施例,该设备还包括:第二指向装置,用于将原来指向该第四物理块的该磁盘上的指针指向该第三物理块。
根据本发明的一个实施例,该设备还包括:第五对应装置,用于通过该内存中的物理块号将该第三物理块与该第四内存页对应。
综上所述,根据本发明的上述实施例,提供了一种用于存取数据的方法和设备。该方法包括:接收数据读取请求,其中该数据读取请求用于读取与第一逻辑块号对应的数据;在内存中不存在与该第一逻辑块号对应的第一内存页时,在磁盘上确定与该第一逻辑块号对应的第一物理块;以及在该内存中存在与第二物理块对应的第二内存页时,读取该第二内存页中的数据,其中该第二物理块的内容与该第一物理块的内容相同。根据本发明实施例的用于存取数据的方法和设备可以避免存储大量冗余数据并且提高数据读取速率。
虽然已经参考若干具体实施例描述了本发明,但是应该理解,本发明并不限于所公开的具体实施例。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (26)
1.一种用于存取数据的方法,包括:
接收数据读取请求,其中所述数据读取请求用于读取与第一逻辑块号对应的数据;
在内存中不存在与所述第一逻辑块号对应的第一内存页时,在磁盘上确定与所述第一逻辑块号对应的第一物理块;以及
在所述内存中存在与第二物理块对应的第二内存页时,读取所述第二内存页中的数据,其中所述第二物理块的内容与所述第一物理块的内容相同。
2.根据权利要求1所述的方法,还包括:
在所述内存中不存在与所述第二物理块对应的所述第二内存页时,读取所述第二物理块中的数据。
3.根据权利要求2所述的方法,还包括:
在读取所述第二物理块中的数据之后,在所述内存中创建用于存储所述数据的第三内存页,并且将所述第一逻辑块号与所述第三内存页对应。
4.根据权利要求1所述的方法,其中在所述内存中存在与所述第二物理块对应的所述第二内存页时,将所述第一逻辑块号与所述第二内存页对应。
5.根据权利要求1至4中任一项所述的方法,还包括:
将原来指向所述第一物理块的所述磁盘上的指针指向所述第二物理块。
6.根据权利要求1至4中任一项所述的方法,还包括:
通过所述内存中的物理块号将所述第二物理块与所述第二内存页对应。
7.根据权利要求1所述的方法,还包括:
接收数据写入请求,所述数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页;
在所述内存中存在与所述第二逻辑块号对应的第四内存页时,在所述内存中创建用于写入所述待写入的数据的、不同于所述第四内存页的第五内存页,其中所述第四内存页与所述磁盘中的第三物理块对应,并且在所述磁盘中存在与所述第三物理块的内容相同的第四物理块;以及
将所述第二逻辑块号与所述第五内存页对应,并且将所述待写入的数据写入所述第五内存页。
8.根据权利要求7所述的方法,其中将所述待写入的数据和所述第四内存页中的数据一起写入所述第五内存页。
9.根据权利要求7所述的方法,还包括:
在所述内存中不存在与所述第二逻辑块号对应的内存页时,在所述内存中创建用于写入所述待写入的数据的第六内存页;以及
将所述第二逻辑块号与所述第六内存页对应,并且将所述待写入的数据写入所述第六内存页。
10.根据权利要求9所述的方法,其中将所述待写入的数据和所述磁盘中的第五物理块中的数据一起写入所述第六内存页。
11.根据权利要求7至10中任一项所述的方法,还包括:
周期性地或者当创建的内存页数量达到预定阈值时,将所创建的内存页中的数据写入所述磁盘。
12.根据权利要求7至10中任一项所述的方法,还包括:
将原来指向所述第四物理块的所述磁盘上的指针指向所述第三物理块。
13.根据权利要求7至10中任一项所述的方法,还包括:
通过所述内存中的物理块号将所述第三物理块与所述第四内存页对应。
14.一种用于存取数据的设备,包括:
第一接收装置,用于接收数据读取请求,其中所述数据读取请求用于读取与第一逻辑块号对应的数据;
第一确定装置,用于在内存中不存在与所述第一逻辑块号对应的第一内存页时,在磁盘上确定与所述第一逻辑块号对应的第一物理块;以及
第一读取装置,用于在所述内存中存在与第二物理块对应的第二内存页时,读取所述第二内存页中的数据,其中所述第二物理块的内容与所述第一物理块的内容相同。
15.根据权利要求14所述的设备,还包括:
第二读取装置,用于在所述内存中不存在与所述第二物理块对应的所述第二内存页时,读取所述第二物理块中的数据。
16.根据权利要求15所述的设备,还包括:
第一创建装置,用于在读取所述第二物理块中的数据之后,在所述内存中创建用于存储所述数据的第三内存页,以及
第一对应装置,用于将所述第一逻辑块号与所述第三内存页对应。
17.根据权利要求14所述的设备,其中在所述内存中存在与所述第二物理块对应的所述第二内存页时,将所述第一逻辑块号与所述第二内存页对应。
18.根据权利要求14至17中任一项所述的设备,还包括:
第一指向装置,用于将原来指向所述第一物理块的所述磁盘上的指针指向所述第二物理块。
19.根据权利要求14至17中任一项所述的设备,还包括:
第二对应装置,用于通过所述内存中的物理块号将所述第二物理块与所述第二内存页对应。
20.根据权利要求14所述的设备,还包括:
第二接收装置,用于接收数据写入请求,所述数据写入请求用于将待写入的数据写入与第二逻辑块号对应的内存页;
第二创建装置,用于在所述内存中存在与所述第二逻辑块号对应的第四内存页时,在所述内存中创建用于写入所述待写入的数据的、不同于所述第四内存页的第五内存页,其中所述第四内存页与所述磁盘中的第三物理块对应,并且在所述磁盘中存在与所述第三物理块的内容相同的第四物理块;
第三对应装置,用于将所述第二逻辑块号与所述第五内存页对应;以及
第一写入装置,用于将所述待写入的数据写入所述第五内存页。
21.根据权利要求20所述的设备,其中所述第一写入装置用于将所述待写入的数据和所述第四内存页中的数据一起写入所述第五内存页。
22.根据权利要求20所述的设备,还包括:
第三创建装置,用于在所述内存中不存在与所述第二逻辑块号对应的内存页时,在所述内存中创建用于写入所述待写入的数据的第六内存页;
第四对应装置,用于将所述第二逻辑块号与所述第六内存页对应;以及
第二写入装置,用于将所述待写入的数据写入所述第六内存页。
23.根据权利要求22所述的设备,其中所述第二写入装置用于将所述待写入的数据和所述磁盘中的第五物理块中的数据一起写入所述第六内存页。
24.根据权利要求20至23中任一项所述的设备,还包括:
第三写入装置,用于周期性地或者当创建的内存页数量达到预定阈值时,将所创建的内存页中的数据写入所述磁盘。
25.根据权利要求20至23中任一项所述的设备,还包括:
第二指向装置,将原来指向所述第四物理块的所述磁盘上的指针指向所述第三物理块。
26.根据权利要求20至23中任一项所述的设备,还包括:
第五对应装置,用于通过所述内存中的物理块号将所述第三物理块与所述第四内存页对应。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410135722.8A CN104951244B (zh) | 2014-03-31 | 2014-03-31 | 用于存取数据的方法和设备 |
US14/672,913 US20150278101A1 (en) | 2014-03-31 | 2015-03-30 | Accessing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410135722.8A CN104951244B (zh) | 2014-03-31 | 2014-03-31 | 用于存取数据的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951244A CN104951244A (zh) | 2015-09-30 |
CN104951244B true CN104951244B (zh) | 2018-04-27 |
Family
ID=54165926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410135722.8A Active CN104951244B (zh) | 2014-03-31 | 2014-03-31 | 用于存取数据的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150278101A1 (zh) |
CN (1) | CN104951244B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9430284B2 (en) * | 2014-06-26 | 2016-08-30 | Vmware, Inc. | Processing virtual machine objects through multistep workflows |
US10891264B2 (en) * | 2015-04-30 | 2021-01-12 | Vmware, Inc. | Distributed, scalable key-value store |
US20210064259A1 (en) * | 2019-08-27 | 2021-03-04 | Hewlett Packard Enterprise Development Lp | Managing data objects |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3197815B2 (ja) * | 1996-04-15 | 2001-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 半導体メモリ装置及びその制御方法 |
US8548953B2 (en) * | 2007-11-12 | 2013-10-01 | F5 Networks, Inc. | File deduplication using storage tiers |
US7908436B1 (en) * | 2008-04-25 | 2011-03-15 | Netapp, Inc. | Deduplication of data on disk devices using low-latency random read memory |
US20100211616A1 (en) * | 2009-02-16 | 2010-08-19 | Rajesh Khandelwal | Performance by Avoiding Disk I/O for Deduplicated File Blocks |
CN101645043B (zh) * | 2009-09-08 | 2012-01-04 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
US8935487B2 (en) * | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US9015417B2 (en) * | 2010-12-15 | 2015-04-21 | Symantec Corporation | Deduplication-aware page cache |
US8788788B2 (en) * | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8762353B2 (en) * | 2012-06-13 | 2014-06-24 | Caringo, Inc. | Elimination of duplicate objects in storage clusters |
US9805048B2 (en) * | 2012-10-18 | 2017-10-31 | Oracle International Corporation | System and method for managing a deduplication table |
CN103064797B (zh) * | 2012-12-21 | 2016-06-29 | 华为技术有限公司 | 数据处理方法和虚拟机管理平台 |
US9417899B2 (en) * | 2013-03-14 | 2016-08-16 | International Business Machines Corporation | Memory page de-duplication in a computer system that includes a plurality of virtual machines |
US9471500B2 (en) * | 2013-04-12 | 2016-10-18 | Nec Corporation | Bucketized multi-index low-memory data structures |
US9069677B2 (en) * | 2013-04-29 | 2015-06-30 | International Business Machines Corporation | Input/output de-duplication based on variable-size chunks |
CN105745627B (zh) * | 2013-08-14 | 2019-03-15 | 西部数据技术公司 | 用于非易失性存储器存储设备的地址转换 |
-
2014
- 2014-03-31 CN CN201410135722.8A patent/CN104951244B/zh active Active
-
2015
- 2015-03-30 US US14/672,913 patent/US20150278101A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150278101A1 (en) | 2015-10-01 |
CN104951244A (zh) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635323B2 (en) | Managing storage system | |
US8990531B2 (en) | Multiple time granularity support for online classification of memory pages based on activity level | |
US10877793B2 (en) | Extending the base address register by modifying the number of read-only bits associated with a device to be presented to a guest operating system | |
US8060703B1 (en) | Techniques for allocating/reducing storage required for one or more virtual machines | |
US11698868B2 (en) | Logging pages accessed from I/O devices | |
CN103493027A (zh) | 虚拟磁盘存储技术 | |
US20110213954A1 (en) | Method and apparatus for generating minimum boot image | |
CN104951244B (zh) | 用于存取数据的方法和设备 | |
CN100589089C (zh) | 处理直接存储器访问请求的设备和方法 | |
CN105359114B (zh) | 用于在寻址方案之间进行迁移的方法和系统 | |
US9569223B2 (en) | Mixed shared/non-shared memory transport for virtual machines | |
CN105373413A (zh) | Xen虚拟化系统的全映射方法及装置 | |
US20090282210A1 (en) | Partition Transparent Correctable Error Handling in a Logically Partitioned Computer System | |
US20180150232A1 (en) | Memory overcommit by speculative fault | |
US20180349058A1 (en) | Buffer-based update of state data | |
US7822940B2 (en) | Apparatus and method for managing mapping information of nonvolatile memory | |
US11734430B2 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US20170010837A1 (en) | Live partition mobility using ordered memory migration | |
US20200125553A1 (en) | Systems and methods for management of a log-structure | |
CN107168769A (zh) | 一种信息处理方法及电子设备 | |
US9766918B2 (en) | Virtual system device identification using GPU to host bridge mapping | |
US20170046186A1 (en) | Limited hardware assisted dirty page logging | |
US8375188B1 (en) | Techniques for epoch pipelining | |
CN102662857B (zh) | 用于对于存储进行虚拟化的设备和方法 | |
US20230161736A1 (en) | Deduplication of container image files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200416 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Massachusetts, USA Patentee before: EMC Corp. |
|
TR01 | Transfer of patent right |