CN101809559B - 在虚拟化服务器和虚拟化存储环境中的去重复 - Google Patents

在虚拟化服务器和虚拟化存储环境中的去重复 Download PDF

Info

Publication number
CN101809559B
CN101809559B CN2008801058233A CN200880105823A CN101809559B CN 101809559 B CN101809559 B CN 101809559B CN 2008801058233 A CN2008801058233 A CN 2008801058233A CN 200880105823 A CN200880105823 A CN 200880105823A CN 101809559 B CN101809559 B CN 101809559B
Authority
CN
China
Prior art keywords
data
memory device
storer
memory
gone
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
Application number
CN2008801058233A
Other languages
English (en)
Other versions
CN101809559A (zh
Inventor
杰迪代亚·岳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/864,583 external-priority patent/US8209506B2/en
Priority claimed from US11/864,756 external-priority patent/US8880797B2/en
Application filed by EMC Corp filed Critical EMC Corp
Priority to CN201210169887.8A priority Critical patent/CN102880626B/zh
Publication of CN101809559A publication Critical patent/CN101809559A/zh
Application granted granted Critical
Publication of CN101809559B publication Critical patent/CN101809559B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

数据去重复应用程序对虚拟化服务器环境的主存储设备读/写路径上和/或虚拟化存储环境的被汇集的存储容量中的数据去重复。虚拟化服务器环境包括多个服务器应用程序,服务器应用程序在包括用于临时存储数据的存储器和用于持久存储数据的存储设备的计算机体系结构上提供的虚拟化层上操作。虚拟化存储环境包括多个存储设备和把每一个存储设备的全部或者部分存储容量聚集为单个存储容量池的虚拟化层。在虚拟化环境中,去重复应用程序识别存储器、存储设备和/或被汇集的存储容量中的冗余数据,并利用执行数据的单个副本的一个或更多个指针替换冗余数据。去重复应用程序在固定或者可变尺寸数据块上操作,并且或者以后处理方式,或者在线地在对数据去重复。

Description

在虚拟化服务器和虚拟化存储环境中的去重复
技术领域
本发明涉及数据去重复。更具体地,本发明的实施例涉及用于在虚拟化服务器和虚拟化存储环境中去重复冗余数据的软件、硬件、系统和方法。
背景技术
虚拟化是一种把计算机环境中的物理计算资源从与那些资源交互作用的系统、应用程序,和/或终端用户解耦以实现更大的IT资源利用和灵活性的抽象层。例如,服务器虚拟化允许具有异质操作系统的多个虚拟机在相同的物理机上孤立地并行运行。每一个虚拟机具有其自己的虚拟硬件集合(例如RAM、CPU、NIC等),其上加载了OS和应用程序。无论实际的物理硬件部件如何,OS总看到始终如一的、规格化的硬件集合。
虚拟机被封装到文件中,使得有可能快速地保存、复制和提供虚拟机。全系统(完全配置的应用程序、操作系统、BIOS和虚拟硬件)在几秒种内可以从一个物理服务器移动到另一个,用于零停机维护和连续工作量整固(ContinuousWorkload Consolidation)。
类似地,存储虚拟化是把多个存储设备合并为看起来好像单个存储单元的东西。存储虚拟化把简单对象(例如卷)在堆栈中向上提供给例如主机系统,隐藏了底层网络、存储设备和其他构造的物理复杂性。存储虚拟化可以提供很多益处,仅举几例,包括集中化存储管理、更容易复制、当子系统故障或者被替换时的无中断数据迁移,以及实施节约成本的分层存储。
尽管其很多优点,但是虚拟化可能导致在存储器(例如处理器寄存器、高速缓存存储器、RAM,等等)和/或被汇集的存储容量中不必要的短期和长期存储大量冗余数据。例如,为了在虚拟服务器环境中把15(或更多)个服务器应用程序作为15个虚拟机来操作,必须把15个单独的操作系统加载到存储器中(例如,单独的OS被加载到分配给每一个虚拟机的存储器中),即使这些操作系统中的两个或更多个是相同的和/或包括相同的数据、文件、可执行文件,等等。类似地,必须把15个单独的操作系统在可以包括被汇集的存储容量的持久/非易失存储设备中维护(例如,单独的OS在分配给每一个虚拟机的存储设备中维护)。
又例如,考虑能为电子消息提供大附件的电子邮件服务器,该大附件发送到虚拟化存储环境中的多个系统内用户。对于附件被发送到的每一个用户,电子邮件服务器在分配给该电子邮件服务器的被汇集的存储容量的一部分中存储所述附件的单独副本。
在刚才描述的每一个情况中,数据的冗余实例占用了存储器、存储设备和/或被汇集的存储设备中本可用于其他数据的空间。结果,目前在技术上存在对虚拟化服务器和虚拟化存储环境中数据去重复解决方案的需求。
这里声明保护的主题不限于克服任何缺点或者只在例如上面描述那些环境中操作的实施例。相反,提供此背景技术只是为了示出其中可以实践这里描述的一些实施例的一个示范性技术领域。
附图说明
为了进一步阐明本发明的优点和特征,将通过参考在附图中示出的本发明的具体实施例给出本发明的更具体的描述。要理解,这些附图只描绘了本发明的典型实施例,因此将不视为限制其范围。通过使用附图,将利用额外的具体说明和细节来描述和解释本发明,在附图中:
图1示出了虚拟化服务器环境,其中数据去重复应用程序可被根据本发明的实施例实施,使用虚拟化层把重复应用程序、服务器应用程序和相关联的操作系统从计算机体系结构分离;
图2示出了另一个虚拟化服务器环境,其和图1的虚拟化服务器环境类似,但是被安排为其中数据去重复应用程序未被虚拟化的主机型体系结构;
图3描绘了又一个虚拟化服务器环境,示出了使用虚拟基础设施或者层以允许多个虚拟机访问包括存储器和存储设备的计算机资源池(Pool);
图4根据本发明的一个实施例描绘了用于对其上运行一个和更多个虚拟化服务器的计算机体系结构的存储器和存储设备中的冗余数据去重复的方法;
图5示出了其中可以实施本发明的实施例的存储虚拟化环境;
图6根据本发明的实施例示出了基于主机的存储虚拟化环境;
图7根据本发明的另一个实施例示出了基于存储设备的存储虚拟化环境;
图8根据本发明的又一个实施例示出了基于网络的存储虚拟化环境;和
图9示出了用于在虚拟化存储环境中去重复数据的方法。
具体实施方式
本发明的实施例涉及数据去重复应用程序,所述数据去重复应用程序对虚拟化服务器环境的主存储设备(或者简称“存储设备”)读/写路径上和/或虚拟化存储环境的被汇集的存储容量中的冗余数据去重复。如这里所使用的,“主存储设备”或者“存储设备”指硬盘或者其他持久存储设备,其中存储例如文件和可执行文件的数据的主副本。在被操作或者处理之前,来自主存储设备的数据被读入存储器中,在那里它可以被例如中央处理单元(“CPU”)的处理器访问。如这里所使用的,“存储器”指处理器寄存器、高速缓存存储器、随机访问存储器(“RAM”)以及其他可被计算机的处理器快速访问的临时存储器。要理解,存储器的访问速度通常比存储设备的访问速度大几个数量级。在对存储器中的数据操作或者处理后由处理器产生的新的和被更改的数据通常首先存储在存储器中,然后从存储器写到存储设备供持久存储。
通过在包括用于数据临时存储的存储器和用于数据持久存储的磁盘或者其他存储设备的第一计算机环境上提供抽象或虚拟化层,能够实现服务器虚拟化。在虚拟化层上操作一个或更多个服务器应用程序,每一个服务器应用程序均被配置成在操作期间从存储设备把数据读入存储器中,并从存储器把数据写到存储设备。虚拟化层向服务器应用程序提供计算机环境内的资源(例如存储器、存储设备,等等)的表示。每一个服务器应用程序被封装在虚拟机内,并配备OS来管理被提供给每一个服务器应用程序的对应虚拟化硬件和软件资源。
数据去重复应用程序被在第一计算机环境中操作,以减少存储器和/或存储设备中的冗余数据。去重复应用程序识别冗余数据,并利用到已经存在于存储器或者存储设备中的该数据的副本的参照和/或指针将其替换。例如,如果每一个服务器应用程序使用的OS是相同的,则当引导服务器应用程序并加载用于每一个服务器应用程序的OS时,OS的单个实例可以被存储在存储器中。在这种情况下,OS的冗余副本被指向存储器中OS的单个副本的指针替换。类似地,当冗余数据被写入存储设备时,冗余数据可被指向存储设备中数据的单个实例的指针替换。去重复应用程序可以在线地或者以后处理方式(Post Process)执行去重复。
通过对存储设备读/写路径上的数据去重复,更多的数据可以被从相对缓慢存取的存储设备读入相对快速存取的存储器。随着增大的在相对快速存取的存储器中可被表示的数据的量,访问速度被提高。此外,为了访问数据,要求更少的对存储设备的输入/输出(“I/O”)操作,因为更多的数据可以被存储在存储器中。此外,当写入存储设备的数据被在线去重复时,被实施为存储区域网络(“SAN”)等的存储设备中的处理开销(Processing Overhead)得到改善,因为更少的数据被写到存储设备。
或者,通过在包括多个用于存储数据以汇集或者聚集每一个存储设备的一些或者全部存储容量的存储设备的第二计算机环境上提供抽象或者虚拟化层,可以实现存储虚拟化。虚拟化层可以是基于主机的、基于存储设备的,或者基于网络的。在一个实施例中,虚拟化层把底层存储容量的至少两个部分的表示提供给至少两个主机系统。每一个主机系统均能产生输入/输出(“I/O”)请求,以便把数据写到存储容量的其对应部分,和/或从存储容量的其对应部分读取数据。每一个I/O请求包括虚拟存储器地址,虚拟化层把虚拟存储器地址映射到物理存储器地址。
数据去重复应用程序被在第二计算机环境中操作以减少汇集的存储容量中的冗余数据。去重复应用程序识别存储容量中的冗余数据,并利用到存储在存储容量中其他地方的该数据的副本的参照/指针将其替换。例如,主机系统可以实施相同的操作系统(“OS”),它们包括相同的文件、可执行文件或其他的数据块。在这种情况下,数据去重复应用程序识别相同的数据块,从存储容量消除冗余的副本,并在从前的冗余副本的位置存储指向数据的单个剩余实例的指针。
为了实践本发明,计算机和网络设备可以是任何用于提供所描述的功能的设备,包括公知的数据处理和存储设备以及通信设备和系统,例如通常在用户系统中用作主机的具有处理、存储器,和输入/输出部件的计算机设备,以及被配置成维持数字数据然后在通信网络上传送的服务器设备。数据通常以遵循标准的通信和传输协议的数字格式传递。数据存储资源一般被描述为磁盘、光学和磁带设备,它们实施RAID和其他存储技术,并且它们可以使用SCSI和其他I/O、数据转移和存储协议,但是本发明并不限于这些示范性实施例或者具体的硬件和软件机制,因为它对于几乎任何计算机环境都是有用的。
I.虚拟化服务器环境
图1示出了其中可以实施本发明的实施例的虚拟化服务器系统100的一个实施例。如所示,虚拟化服务器系统100建立在计算机平台110上(例如x86计算机体系结构等),计算机平台110包括许多资源,例如CPU、存储器、网络设备、磁盘和磁带机构。提供了虚拟化层120来管理对体系结构110的访问,或者把其“虚拟化”为统一池,并把这个池的硬件从一个或更多个虚拟机(即,系统100被示出具有运行于虚拟化层120上的两个这样的虚拟或者客户机——但是,可以运行更多这样的虚拟机)分离。虚拟化层120向每一个虚拟或者客户机的OS 132、133提供虚拟化的表示136、137。操作系统132、133可以相同或者不同,并且可以包括例如Windows、Linux、Novell、Solaris,以及其他的操作系统,例如FreeBSD等等。
提供服务器应用程序131并使之与OS 133相关联,并使用虚拟系统137把数据从存储设备读入存储器中,和/或把数据从存储器写到存储设备。虚拟系统137把服务器应用程序131从实际资源110屏蔽,向该服务器应用程序提供例如全部或者部分存储器以及全部或者部分磁盘存储设备的逻辑表示。虽然虚拟化服务器系统100被示出具有运行于虚拟化层120上的单个服务器应用程序131,但是在本发明另一个实施例中,虚拟化服务器系统100可以具有多个运行于虚拟化层120上的服务器应用程序131,每一个均配备OS 133和标准化硬件137。
此外,提供数据去重复应用程序130并使之与OS 132相关联,并使用虚拟系统136处理读入存储器中或写到磁盘存储设备的数据以分别消除资源池110的存储器或者磁盘存储设备内的冗余数据。去重复应用程序131实际上可以是任何被配置成识别冗余数据并利用指向该数据的单个实例的一个或更多个指针或者参照替换所述冗余数据的去重复应用程序。例如,在本发明的一个实施例中,去重复应用程序131在线地对数据去重复。换句话说,当数据被接收、读取或者写入存储器或者存储设备时,去重复应用程序识别并利用指针替换冗余数据。根据本发明的另一个实施例,去重复应用程序131以后处理方式对数据去重复。在这个例子中,在数据已经被接收、读取或者写入存储器或者存储设备以后,去重复应用程序识别并利用指针替换冗余数据。此外,去重复应用程序可以使用固定块尺寸或者可变块尺寸对数据去重复。虽然很多数据去重复算法在技术上是已知的,并且可被去重复应用程序130实施,但是在一个实施例中,去重复应用程序实施共同转让的No.6,810,398号美国专利中公开的“粘性字节(sticky byte)”算法,该专利通过引用被包含于此。
一般地,选择虚拟化层120以起到抽象层的作用,所述抽象层把物理硬件从和应用程序130、131相关联的OS去耦合,以实现更大的IS资源利用和灵活性。虚拟化层120允许多个具有同质或异质操作系统的虚拟机或者客户机(例如其可被用来运行应用程序130、131)孤立地但并行地在相同或者不同的物理机上运行。每一个虚拟机具有其自己的虚拟硬件集合(例如池110内的RAM、CPU、NIC等),其上加载OS和包括应用程序130、131的应用程序。无论实际物理硬件部件如何,操作系统看到始终如一的、规格化的硬件集合。
有益地,虚拟机(例如图1的两个虚拟机)可以被封装到文件中,使得有可能快速地保存、复制和提供虚拟机。全系统(完全配置的应用程序、操作系统、BIOS和虚拟硬件)在几秒种内可以从一个物理服务器移动到另一个,用于零停机维护和连续工作量整固(Continuous Workload Consolidation)。此外,虚拟化层120提供隔离。虚拟机被从物理主机和其他虚拟机完全地隔离。如果一个虚拟机失灵,则所有其他的不受影响。数据不跨过虚拟机泄漏,并且应用程序只能在配置的网络连接上通信。
图2根据本发明的实施例示出了虚拟化服务器系统200的替换结构。和虚拟化服务器系统100一样,虚拟化服务器系统200包括一组计算机硬件或者特定的体系结构210。在这个例子中,去重复应用程序222被作为常规应用程序安装并运行在体系结构210中,依靠主机OS 220得到设备支持和体系结构210的物理资源管理。系统200额外包括虚拟机,该虚拟机作为例如类似于应用程序222的应用程序被安装和运行。虚拟机包括虚拟化层230,它把虚拟机内的服务器应用程序238从计算机资源210屏蔽。和应用程序222一样,虚拟化层230依靠主机OS 220得到设备支持和计算机硬件210的物理资源管理。此外,虚拟化层230向服务器应用程序238提供客户OS 234。
图3根据本发明示出了虚拟化系统300的又一个实施例。虚拟化系统300包括计算机资源池或计算机体系结构/平台310,其包括在虚拟化系统300中可用的硬件和相关联的软件。池310包括主存储设备311、318,它们可以包括几乎任何类型的用于数字数据的存储设备,例如磁盘设备。池310也包括网络/网络设备312、314和许多物理服务器或其他计算设备313、315、316(在某些情况下其也可以用作数据存储设备,而存储设备311、318被额外地或者交替地用于归档或者后备存储)。
在平台310上,提供虚拟化基础设施320用于把池310中的资源连接到用户(或者连接到商业/企业)335、345、355。虚拟化基础设施320提供了池310中的资源到一个或更多个虚拟机330、340、350的动态映射。每一个虚拟机330、340、350运行OS 332、342、352和应用程序334、344、354。在本发明的当前实施例中,每一个应用程序334和344均是服务器应用程序,其操作包括把数据从虚拟存储设备读入虚拟存储器中,和/或把数据从虚拟存储器写入虚拟存储设备中。
应用程序354是数据去重复应用程序,其利用指向数据的单个实例的指针或者参照替换虚拟存储器和/或虚拟存储设备中的冗余数据。如先前讨论的那样,这个去重复过程可以使用固定或可变块尺寸,在线地或以后处理方式发生。此外,如图所示,它可以在虚拟化基础设施320上的虚拟机330上操作,或者,它可以被作为常规应用程序安装和操作。
对存储器和/或存储设备中的数据去重复增大了存储器和/或存储设备中的可用空间量,因为只有数据的单个实例被分别存储在存储器和/或存储设备中。作为这种存储器尺寸上有效增大的结果,更多的数据可以被读入存储器中,从而提高访问速度。此外,存储设备I/O量减少,因为更大量的数据存储在存储器中。当数据在被写到存储设备之前在线地去重复时,更少的数据被写到存储设备,这减少了例如SAN等的存储设备中的处理开销。此外,当数据被去重复时,更大量的数据可以存储在存储设备中。
现在参考图4,示出了用于对例如图1到图3的虚拟化环境的计算机体系结构的存储器和/或存储设备中的数据去重复的方法400。其中可以实践方法400的典型计算机体系结构包括一个或更多个存储器设备和一个或更多个存储设备,其中,数据可以从存储设备读入存储器中,和/或可以从存储器写到存储设备。过程400通过402在计算机体系结构上提供虚拟化层开始。然后,一个或更多个服务器应用程序可以在虚拟化层上运行或者操作404,在其过程中,服务器应用程序把数据读入存储器中,并把数据写到存储设备。虚拟化层向服务器应用程序提供至少部分存储器和至少部分存储设备的表示,其中可以存储服务器应用程序使用的数据。
数据去重复应用程序也可以在虚拟化层上或者在物理主机的操作系统上操作或者运行406,以去重复存储器和/或存储设备中的冗余数据。当在虚拟化层上操作或者运行时,虚拟化层向去重复应用程序提供计算机体系结构的部件集合的表示,以使去重复应用程序能够对冗余数据去重复。
在运行去重复应用程序以后,该应用程序对存储器、存储设备或者这两者中的数据去重复408。注意,当去重复数据时,去重复应用程序被配置成把存储器和存储设备视作单独的系统。因此,如果单个数据实例既被存储在存储器中也被存储在存储设备中,去重复应用程序不消除这些实例其中之一。相反,去重复应用程序被配置成只相对于存储在存储器中的数据消除存储器中的冗余数据,和/或只相对于存储设备中的数据消除存储设备中的冗余数据。
在一个实施例中,去重复数据408包括识别冗余数据,将其删除,并利用指向被删除数据的单个实例的指针替换它。尽管根据本发明可以实施各种算法和方法,但是在一个实施例中,识别冗余数据包含把数据分解为一个或更多个可变或固定大小的片,在每一个片上执行散列以获取散列值,并把作为结果的散列值和已经存在于系统中的数据的散列值比较。如果去重复应用程序实施产生概率唯一散列值(例如SHA-1、MD5等)的确定性散列函数,则相同的散列值指示底层数据是相同的。此外,散列值可用作指向数据的单个实例的参照或者指针。
返回图4,服务器应用程序可以通过读取指针访问被去重复的数据410,所述指针把服务器应用程序指引到数据的单个实例。
本领域技术人员将理解,根据本发明的数据去重复可以被跨过在单个物理服务器上操作的服务器应用程序虚拟机实施,或者跨过跨多个物理服务器操作的服务器应用程序虚拟机实施。
如上面讨论的那样,虚拟层或者基础设施(例如图1到图3中所示那些)可以采用许多形式来实践本发明。但是,在一个实施例中,服务器应用程序和可选择地去重复应用程序可以在例如VMware ESX或GSX(或者类似产品)的VMware虚拟化产品上运行。例如VMware ESX的虚拟化产品相对公知,并被本领域技术人员理解,这里无需全面讨论以描述本发明。在其他的实施例中,虚拟化层由来自XenSource的虚拟化产品Xen 3.0(或其他版本)提供,并且在其他实施例中,使用来自微软公司和/或英特尔公司的虚拟化产品来提供这里描述的虚拟化层。
II.虚拟化存储环境
图5示出了其中可以实施本发明的实施例的虚拟化存储环境500的例子。如所示,虚拟化存储环境500包括多个主机系统502、504、505和多个存储设备506A、506B和506C(共同称为“存储设备506”)。主机系统502、504、505是运行一个或更多个服务器应用程序的计算机系统,例如文件服务器、电子邮件服务器,等等,或者其任意组合。在主机系统502、504、505上安装并运行操作系统508、510和511来管理主机系统的资源在主机系统上运行的一个或更多个服务器应用程序间的共享。在图5的例子中,主机系统502、504、505可以在通常为局域网(“LAN”)、广域网(“WAN”)等等或者其任意组合的网络520上交换数据。尽管未示出,但是网络520可以额外为各种客户端计算机系统提供通信路径以便和服务器502、504、505通信。
存储设备506可以包含例如磁带驱动器、磁盘驱动器、光学驱动器、存储设备阵列等,或者其任意组合。此外,存储设备506可以直接地以直接连接存储(“DAS”)配置连接到主机系统502、504、505,它们可以以网络连接存储(“NAS”)配置通过网络连接到主机系统502、504、505,或者,它们可以通过存储区域网络(“SAN”)连接到主机系统502、504、505。
在虚拟化存储环境500中提供了抽象或虚拟化层512来管理对来自每一个存储设备506的存储容量中的一些或者全部的存储容量访问,或者把其“虚拟化”为统一池,并把这个池的硬件从主机系统502、504、505分离。例如,虚拟化层512向主机系统504提供存储设备506的至少一部分的虚拟化表示514。本领域技术人员将理解,虚拟化表示514可以被虚拟化层映射到单个存储设备(例如设备506A)的全部或者一部分上的物理存储设备,或者映射到多个存储设备的全部或者一部分上(例如设备506A、506B和506C的至少两个上)的物理存储设备。
在这个例子中,主机系统504发送各种I/O请求以便在存储系统506上执行各种操作。这些I/O请求通常包括读和写请求。读请求和写请求都包括虚拟存储器地址,而写请求额外包括要被写到指定地址的数据。虚拟化层512从主机系统502接收I/O请求,并把虚拟存储设备地址映射到物理存储设备地址。例如,对于读请求,虚拟化层把读请求发送到物理存储设备地址,并取回存储在该位置的数据,此后,如果数据来自指定的虚拟存储设备地址,则其可以被返回到主机系统504。对于写请求,虚拟化层512把数据发送到指定的物理存储设备地址供存储。
在虚拟化存储环境500中提供数据去重复应用程序516,通过虚拟化层512可通信地耦合到存储设备506。去重复应用程序516被示出为在服务器或者主机系统502上操作,但是去重复代理也可以被安装在存储设备(例如在存储设备阵列中)506中和/或服务器502、504中。去重复应用程序516处理存储在存储设备506中的数据以识别和减少冗余数据。去重复应用程序516实际上可以是任何被配置成识别冗余数据并利用指向数据的单个实例的一个或更多个指针替换冗余数据的去重复应用程序,如上面针对图1的去重复应用程序131已经描述的那样。更具体地,去重复应用程序516可以使用固定块尺寸、使用可变块尺寸,在线地或者以后处理方式对数据去重复,和/或可以实施在No.6,810,398号美国专利中公开的粘性字节算法。
去重复应用程序516可以通过配置虚拟化层512向去重复应用程序516提供全部或者仅一部分被汇集的存储容量的表示,对存储设备506的全部或者一部分聚集存储容量中的数据去重复。例如,聚集存储的一部分可以被分配作为后备存储目标。在这种情况下,当执行去重复时,可能期望防止去重复服务器考虑被分配用于后备的存储设备。或者,可能期望向去重复应用程序516提供所有的共享存储容量的表示以便对存储在聚集存储容量中的数据全局地去重复。
由于对冗余数据的去重复,本发明的实施例实现存储设备506的被汇集的存储容量的有效利用。此外,在虚拟化存储环境中操作实现了下列益处中的一个或更多个。例如,来自多个销售商的存储容量可被组合用于集中化管理。通过提供更灵活的对存储资产的访问,可以提高存储设备利用。通过从单个接口实现被汇集的存储设备的管理可以降低管理成本。主机应用程序(例如在主机系统502、504上运行的服务器应用程序)被从对物理存储基础设施的变化隔离。数据可以在存储系统间迁移而不中断应用程序。最后,跨过来自多个销售商的存储系统506,可以应用常见的基于网络的复制服务。
图5描绘了虚拟化存储环境500而没有示出虚拟化的具体方法学。在图6到图8中,示出了三种不同的虚拟化实施方法学:基于主机的、基于存储设备的和基于网络的。本发明原理可以结合这三种方法学中的任何一种以及其他方法学或者其变型来实施。要理解,图6到图8的虚拟化存储环境仅仅是例子,不应该被解释为限制本发明。
图6示出了虚拟化存储环境600的一个实施例,其中使用基于主机的方法学实施存储虚拟化。根据这个实施例,虚拟化存储环境600包括多个通过网络620可通信地耦合的主机系统602、604和605。网络620也可以被配置成为各种客户端计算机系统提供通信路径以便与主机系统602和604通信。
虚拟化存储环境600额外包括SAN 630、交换机608和610,以及在这里实施为一对存储阵列的存储设备606A和606B。存储阵列606中的每一个均可以包括例如控制器和一个或更多个磁盘驱动器。SAN 630通常是高速网络,其允许在存储设备606和服务器602、604之间建立直接连接。可以使用各种不同技术实施SAN 630,包括光纤通道仲裁环、光纤通道交换网络、IP网络(例如iSCSI)、无限带宽技术,等等。
根据本发明的这个实施例,每一个主机系统602、604和605依靠虚拟化代理612、614和615来提供存储设备606和主机系统602、604和605之间的虚拟化层。虚拟化代理612、614、615监视I/O流量和存储设备606以执行提供给主机系统602、604、605的虚拟存储地址和存储设备内的物理存储地址之间的映射。映射数据(这里也称为“虚拟化元数据”或者简称“元数据”)可以在虚拟化代理612、614、615之间交换以实现全局存储管理。基于主机的虚拟化存储环境600实现了低成本的初始部署和增量缩放(Incremental Scaling)。此外,基于主机的虚拟化允许管理员访问先进的存储管理功能,例如镜像、RAID集合、冗余路径控制和热备份(通过使用镜像分离或者快照)。
根据本发明的当前实施例,在主机系统602上操作去重复应用程序616以便在由虚拟化代理612提供给去重复应用程序的那部分被汇集的存储容量内提供数据去重复。
现在参考图7,示出了虚拟化存储环境700的例子,其中使用基于存储设备的方法学实施存储虚拟化。虚拟化存储环境700包括通过网络720可通信地耦合的主机系统702、704、705。SAN 730和交换机732实现了在存储设备平台740和服务器702、704、705之间建立直接连接。存储设备平台740额外地耦合到外部存储阵列742和744。
存储设备平台740和存储设备742、744中的每一个均具有被配置成分别管理平台740和存储设备742、744内的物理磁盘驱动器752、754和756的阵列的存储控制器746、748和749。在本发明的这个实施例中,虚拟化层750在存储设备平台740中实施。虚拟化层750使外部存储阵列742、744中的磁盘驱动器754和756对主机系统702、704来说就好像它们是存储设备平台740内部的,和内部磁盘驱动器752类似。虽然在图7中虚拟化层在存储阵列740内示出,但是基于存储设备的虚拟化另外可以利用独立的控制器上的虚拟化层实施,而非在如所示的存储设备平台上。
在图7的配置中,控制器746和虚拟化层750汇集所有附着的存储设备,并将其作为单个池提供给主机系统702、704、705。有益地,I/O请求的所有处理被脱离网络处理,并且虚拟化元数据可以在内部存储设备中维护。此外,存储设备管理集中在存储设备平台740,并且无需在两个不同的位置之间交换元数据,这在图6的虚拟化存储环境600中,为了实现全局存储设备管理可能出现。根据图7的实施例的存储虚拟化可以允许在不同的RAID组之间移动而没有数据损失,以及基于数据访问频率,把数据从一个RAID组自动迁移到另一个。此外,图7的实施例通常允许生成多个数据镜像,这些镜像在其中之一被分离用于热备份时提供了额外的可用性。基于存储设备的虚拟化可以提供修改LUN尺寸的灵活性、使多个主机看到相同的LUN的能力,以及远程复制。
在主机系统702上操作数据去重复应用程序710以便在由存储设备平台740提供给去重复应用程序710的那部分被汇集的存储容量内提供数据去重复。
现在参考图8,示出了虚拟化存储环境800的例子,其中,使用基于网络的方法学实施存储虚拟化。虚拟化存储环境800包括通过网络820可通信地耦合的主机系统802、804、805。SAN 830和交换机832实现了在存储阵列840、842和主机系统802、804、805之间建立直接连接。尽管未示出,存储阵列840、842中的每一个均可以额外包括存储控制器和物理驱动器阵列,和图7的存储控制器748、749以及磁盘驱动器754、756的阵列类似。
在图8的实施例中,在交换机832中实施虚拟化层850。另外,或者额外地,可以在专用设备中实施虚拟化层。交换机和/或设备针对所有的可用存储设备监视SAN 830,并建立关于所存储的数据及其位置的元数据。因此,交换机832汇集附着的存储设备840、842,以便向主机系统802、804、805提供规格化的存储设备硬件集合。
存在两种基于网络的虚拟化产品:带内(图8中所示)和带外(未示出)。带内虚拟化设备或交换机在物理上位于主机系统802、804、805和存储设备840、842之间。该设备或者交换机从主机系统取得磁盘请求,并从附着到该设备或者交换机的另一侧的存储设备满足主机请求。这个功能本质上对主机是透明的,因为交换机或者设备将其自己展示为磁盘。该设备或者交换机的物理位置是带外和带内设备或交换机的主要差别。带外设备在逻辑上将其自己展示为就好像它们位于主机和存储设备之间的数据路径中,但是它们实际上驻留在数据路径的外部。这利用在主机系统上在I/O数据路径中安装“薄”虚拟化驱动器来实现。带外设备利用存储设备映射提供虚拟化驱动器。虚拟化驱动器向主机上的应用程序和文件系统提供虚拟存储卷,并把数据块直接地发送到磁盘上的正确的物理位置。相反,带内设备或者交换机不要求主机侧的变化。它起到虚拟存储卷的代用品的作用,并在位于主机外部的设备或者计算机系统中执行映射和I/O定向。
在主机系统802上操作数据去重复应用程序810以便在由交换机832提供给去重复应用程序810的那部分被汇集的存储容量内提供数据去重复。
对被汇集的存储设备中的数据去重复增大了虚拟化存储设备中的可用存储容量的量,这增大了在虚拟化存储设备中可以存储的数据量。此外,当数据在被写到存储设备之前被去重复应用程序在线地去重复时,更少的数据被写到存储设备,从而减少了用于存储设备阵列中的存储控制器的处理开销,以及减小网络流量。
现在参考图9,示出了用于在例如图5到图8的虚拟化存储环境500、600、700、800的虚拟化存储环境中对数据去重复的方法900。其中可以实施该方法的典型计算机体系结构或者环境包括一个或更多个主机系统或者服务器机,以及一个或更多个存储设备,其中,主机系统发送各种I/O请求以便对共享存储设备执行各种操作。过程900通过在一个或更多个存储设备上提供虚拟化或者抽象层以便把每一个存储设备的一些或者全部存储容量汇集/聚集为单个存储池。虚拟化或者抽象层向一个或更多个主机系统提供存储池的至少一部分的表示,用于在其中存储数据902。
在计算机环境内一个或更多个主机系统被操作904,并把各种I/O请求发送到存储池,例如读和/或写请求。每一个读和写请求均包括虚拟存储设备地址,对应于存储池中分配给起源主机系统的位置。虚拟化或抽象层截取906读和/或写请求,并把虚拟存储设备地址映射到物理存储设备地址。
所述方法通过步骤98继续,该步骤98操作数据去重复应用程序以减少被汇集的存储容量中的冗余数据。去重复应用程序可以在所述一个或更多个主机系统之一上安装和操作。在一个实施例中,操作去重复应用程序包括识别冗余数据、将其删除,并利用指向数据的单个实例的指针替换它。
识别冗余数据可以包含把数据分解为一个或更多个可变或固定大小的片,在每一个片上执行散列以获取散列值,并把作为结果的散列值和已经存储在被汇集的存储设备中的数据的散列值比较。如上面解释的那样,如果去重复应用程序实施产生概率唯一散列值的确定性散列函数,则相同的散列值指示底层数据是相同的。因此,所描述的算法可被去重复应用程序用来确定第一数据和第二数据相同。在做出这个确定后,去重复应用程序可以利用指向存储在被汇集的存储设备中的数据的单个实例的一个或更多个指针替换冗余数据。在一个实施例中,由数据去重复应用程序实施的指针可以包含在识别冗余数据的步骤期间获取的对应散列值。
返回图9,一个或更多个主机系统可以通过读取指针访问被去重复的数据910,所述指针把所述一个或更多个主机系统指引到数据的单个实例。
这里描述的实施例可以包括使用包括各种计算机硬件或软件模块的专用或者通用计算机,这在下面更详细地讨论。
本发明范围内的实施例也包括计算机可读介质,用于承载或者使计算机可执行指令或数据结构在其上存储。这些计算机可读介质可以是任何可被通用或者专用计算机访问的可用介质。举例而非限制,这些计算机可读介质可以包含RAM、ROM、EEPROM、CD-ROM或者其他光盘存储设备、磁盘存储设备,或者其他的磁性存储设备,或者可被用来承载或者存储计算机可执行指令或数据结构形式的期望的程序代码装置,并且可被通用或者专用计算机访问的任何其他介质。当信息被在网络或者其他通信连接(或者是硬连线的、无线的,或者是硬连线的和无线的组合)上转移或者提供给计算机时,计算机自然把所述连接视作计算机可读介质。因此,任何这种连接被自然地称作计算机可读介质。上面的组合也应该被包括在计算机可读介质的范围内。
计算机可执行指令包含例如导致通用计算机、专用计算机,或者专用处理设备执行某个功能或者功能组的指令和数据。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应该理解,在所附权利要求中限定的所述主题不一定限于上面描述的具体特征或者动作。相反,上面描述的具体特征和动作被作为实施权利要求的示范性形式公开。
如这里使用的,术语“模块”或者“部件”可以指在计算系统上执行的软件对象或者例程。这里描述的不同的部件、模块、引擎和服务可以被实施为在计算系统上执行的对象或者过程(例如,作为单独线程)。虽然这里描述的系统和方法最好在软件中实施,但是,在硬件或者软件和硬件的组合中实施也是可能的,并被预期。在本说明书中,“计算实体”可以是这里先前定义的任何计算系统,或者,在计算系统上运行的任何模块或者模块的组合。
本发明可以用其他具体形式具体实施而不偏离其精神或者实质特性。所描述的实施例在所有方面要仅被视为说明性的而非限制性的。因此,本发明的范围由所附权利要求而非前面的描述指示。进入权利要求的等同物的含义和范围内的所有变化包含在权利要求的范围内。

Claims (1)

1.一种用于对存储器、存储设备或这两者中的冗余数据去重复的方法,包含:
在包含用于临时存储数据的存储器和用于持久存储数据的存储设备的计算机体系结构上提供虚拟化层;
在所述虚拟化层上运行服务器应用程序,所述服务器应用程序从所述存储设备的一部分把数据读入所述存储器的一部分中,并把数据从所述存储器的所述部分写到所述存储设备的所述部分中,所述虚拟化层向所述服务器应用程序提供至少所述存储器的所述部分和至少所述存储设备的所述部分的表示;和
在所述计算机体系结构上运行数据去重复应用程序以便对所述计算机体系结构上的所述存储器和存储设备的一个或更多个中的数据去重复;
其中,对存储器中的数据去重复包含:
识别存储器中的与存储器中的第二数据相同的第一数据;
从存储器删除所述第二数据;和
利用指向所述相同的第一数据的指针替换所述第二数据;
或对存储设备中的数据去重复包含:
识别存储设备中的与存储设备中的第二数据相同的第一数据;
从存储设备删除所述第二数据;和
利用指向存储设备中所述相同的第一数据的指针替换从存储设备删除的所述第二数据。
2. 如权利要求1所述的方法,其中,所述存储器包含处理器寄存器、高速缓存存储器和随机访问存储器中的一个或更多个,并且所述存储设备包含磁盘存储设备。
3. 如权利要求1所述的方法,其中,识别存储器中的与存储器中的第二数据相同的第一数据包括在存储器中的所述每个第一数据和第二数据上执行散列函数,把作为结果的存储器中的所述第一和第二数据的散列值相互比较,并确定所述散列值相同。
4. 如权利要求3所述的方法,其中,指向所述相同的存储器中的第一数据的所述指针包含所述存储器中的第二数据的所述散列值。
5. 如权利要求1所述的方法,其中,识别存储设备中的与存储设备中的第二数据相同的第一数据包括在存储设备中的每个所述第一数据和第二数据上执行散列函数,把作为结果的存储设备中的所述第一和第二数据的散列值相互比较,并确定所述散列值相同。
6. 如权利要求5所述的方法,其中,指向所述相同的存储设备中的第一数据的所述指针包含所述存储设备中的第二数据的所述散列值。
7. 如权利要求1所述的方法,其中,所述服务器应用程序包含多个服务器应用程序,所述虚拟化层向每一个服务器应用程序提供所述存储器的单独部分和所述存储设备的单独部分的表示。
8. 如权利要求1所述的方法,其中,在所述计算机体系结构上运行所述数据去重复应用程序包含在所述虚拟化层上运行所述数据去重复应用程序。
9. 如权利要求1所述的方法,其中:
所述数据去重复应用程序或者在所述数据被读入存储器时,或者在所述数据已经被读入存储器中以后,对存储器中的数据去重复;和
所述数据去重复应用程序或者在所述数据被写到存储设备时,或者在所述数据已经被写到存储设备以后,对存储设备中的数据去重复。
10. 如权利要求1所述的方法,其中,对存储器和存储设备的一个或更多个中的数据去重复包含把所述数据分解为块,所述块的尺寸是固定的或者可变的。
11、如权利要求1所述的方法,其中,所述虚拟化层作为虚拟机的一部分,并且其中把数据从所述存储器的所述部分写到所述存储设备的所述部分中包含通过所述虚拟化层将数据从所述存储器的所述部分写到所述存储设备的所述部分中。
12. 一种用于对包括一个或更多个虚拟化服务器应用程序的计算机环境中的数据去重复的方法,所述方法包含:
在包含用于临时存储数据的存储器和用于持久存储数据的存储设备的计算机体系结构上提供虚拟化层;
在所述虚拟化层上操作至少一个服务器应用程序,所述至少一个服务器应用程序被配置成在操作期间把数据从存储设备读入虚拟化的存储器中,并把数据从存储器写到虚拟化的存储设备;
向所述至少一个服务器应用程序提供所述计算机体系结构的虚拟化表示;
在所述计算机体系结构上操作数据去重复应用程序来执行以下动作中的一个或更多个:
识别与已经存储在存储器中的数据相同的被读入所述虚拟化的存储器的数据的动作;和
识别与已经存储在存储设备中的数据相同的被写到所述虚拟化的存储设备的数据的动作;和
替换以下的一个或更多个:
利用指向已经存储在所述计算机体系结构的存储器中的对应数据的一个或更多个指针替换读入所述虚拟化的存储器中的相同数据;和
利用指向已经存储在所述计算机体系结构的存储设备中的对应数据的一个或更多个指针替换写到所述虚拟化的存储设备的相同数据。
13. 如权利要求12所述的方法,其中,在计算机体系结构上提供虚拟化层还包含汇集所述计算机体系结构的资源。
14. 如权利要求12所述的方法,其中,所述去重复应用程序被封装在运行于所述虚拟化层上的虚拟机内,并且其中,所述虚拟化层向所述虚拟机的操作系统提供所述计算机体系结构的虚拟化表示。
15. 如权利要求12所述的方法,其中,所述计算机体系结构包含一个或更多个网络、一个或更多个网络设备,或者一个或更多个网络和一个或更多个网络设备,并且其中,虚拟化层包含把所述计算机体系结构中的资源连接到用户的虚拟基础设施,并且其中,所述虚拟基础设施提供所述资源到多个虚拟机的动态映射。
16. 如权利要求15所述的方法,其中,所述至少一个服务器应用程序包含多个服务器应用程序,每一个服务器应用程序均被封装在所述多个虚拟机的不同一个内,并且其中,所述多个虚拟机的每一个均运行操作系统,并且其中,所述操作系统的至少两个是相同的。
17. 如权利要求16所述的方法,其中,操作所述多个服务器应用程序包括把所述至少两个相同的操作系统从存储设备读入存储器中,并且其中,利用指向已经存储在存储器中的所述对应数据的一个或更多个指针替换读入存储器中的相同数据包含利用指向所述至少两个相同的操作系统的单个剩余副本的指针替换读入存储器中的所述至少两个相同的操作系统的至少一个副本。
18. 如权利要求12所述的方法,其中,或者以后处理方式,或者在线地,利用一个或更多个指针替换相同的数据。
19. 如权利要求12所述的方法,还包含通过使用一个或更多个指针分别访问已经存储在存储器或者存储设备中的对应数据,访问不再存储在存储器或者存储设备中的相同数据。
20、如权利要求12所述的方法,其中,所述至少一个服务器应用程序被配置成在操作期间通过所述虚拟化层把数据从存储器写到虚拟化的存储设备,该虚拟化层向所述至少一个服务器应用程序提供一种所述计算机体系结构的虚拟化的表示,该虚拟化的表示包括所述虚拟化的存储器和所述虚拟化的存储设备。
21. 一种用于在虚拟化存储环境中对冗余数据去重复的方法,所述方法包含:
提供虚拟化层,该虚拟化层向一个或更多个主机系统中的每一个提供被汇集的存储容量的部分的表示,其中所述被汇集的存储容量包括多个存储设备的部分;
在包括所述多个存储设备的计算机体系结构中操作所述一个或更多个主机系统,每一个主机系统被配置成把数据写到所述被汇集的存储容量的对应部分,并从所述被汇集的存储容量的对应部分读取数据;
在所述计算机体系结构中操作数据去重复应用程序以便对所述被汇集的存储容量中的数据去重复;其中,对所述被汇集的存储容量中的数据去重复包含:
识别所述被汇集的存储容量中的与所述被汇集的存储容量中的第二数据相同的第一数据;
从所述被汇集的存储容量删除所述第二数据;和
利用指向所述相同的第一数据的指针替换所述第二数据。
22. 如权利要求21所述的方法,其中,所述虚拟化层被实施于:在所述一个或更多个主机系统的至少一个中、在所述多个存储设备的至少一个中,或者在所述多个存储设备耦合到的存储区域网络的交换机或者其他设备中。
23. 如权利要求21所述的方法,其中,识别所述被汇集的存储容量中的与所述被汇集的存储容量中的第二数据相同的第一数据包括在所述第一数据和第二数据的每一个上执行散列函数,把作为结果的所述第一和第二数据的散列值相互比较,并确定所述散列值相同。
24. 如权利要求23所述的方法,其中,指向所述相同的第一数据的所述指针包含所述第一或第二数据的所述散列值。
25. 如权利要求19所述的方法,其中,所述数据去重复应用程序或者以后处理方式,或者在线地,对从一个或更多个主机系统写到所述被汇集的存储容量的数据去重复。
26. 如权利要求21所述的方法,其中,所述虚拟化层从所述一个或更多个主机系统截取读和写请求,并把所述读和写请求中包括的虚拟存储地址映射到所述被汇集的存储容量中的物理存储地址。
27、如权利要求21所述的方法,其中,在所述计算机体系结构中操作数据去重复应用程序以便对所述被汇集的存储容量中的数据去重复包括在一个主机系统上操作数据去重复应用程序以便对所述被汇集的存储容量中的数据去重复,该主机系统被包括于所述计算机体系结构中的所述一个或更多个主机系统中,并且其中所述虚拟化层向所述数据去重复应用程序提供所述被汇集的存储容量的至少一部分的表示,并且其中所述数据去重复应用程序被配置成在所述被汇集的存储容量的一部分中执行数据去重复。
28、一种用于对存储器、存储设备或这两者中的冗余数据去重复的系统,所述系统包括:
计算机装置,其包括:暂时存储数据的存储器,以及稳定存储数据的存储设备,并提供一虚拟化层;
运行于该虚拟化层上的一个服务器应用程序的读写数据装置,其中,所述服务器应用程序从所述存储设备的一部分把数据读入所述存储器的一部分中,并把数据从所述存储器的所述部分写到所述存储设备的所述部分中,所述虚拟化层向所述服务器应用程序提供至少所述存储器的所述部分,以及至少所述存储设备的所述部分的表示;和
运行于该计算机装置上的一个数据去重复应用程序的数据去重复装置,其中所述数据去重复应用程序对所述计算机装置上的所述存储器和存储设备的一个或更多个中的数据去重复; 
其中,对存储器中的数据去重复包含:
识别存储器中的与存储器中的第二数据相同的第一数据;
从存储器删除所述第二数据;和
利用指向所述相同的第一数据的指针替换从存储器中删除的所述第二数据;
或对存储设备中的数据去重复包含:
识别存储设备中的与存储设备中的第二数据相同的第一数据;
从存储设备删除所述第二数据;和
利用指向存储设备中所述相同的第一数据的指针替换从存储设备删除的所述第二数据。
CN2008801058233A 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复 Active CN101809559B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210169887.8A CN102880626B (zh) 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US97018107P 2007-09-05 2007-09-05
US97018707P 2007-09-05 2007-09-05
US60/970,187 2007-09-05
US60/970,181 2007-09-05
US11/864,583 US8209506B2 (en) 2007-09-05 2007-09-28 De-duplication in a virtualized storage environment
US11/864,756 2007-09-28
US11/864,583 2007-09-28
US11/864,756 US8880797B2 (en) 2007-09-05 2007-09-28 De-duplication in a virtualized server environment
PCT/US2008/075467 WO2009033074A2 (en) 2007-09-05 2008-09-05 De-duplication in virtualized server and virtualized storage environments

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210169887.8A Division CN102880626B (zh) 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复

Publications (2)

Publication Number Publication Date
CN101809559A CN101809559A (zh) 2010-08-18
CN101809559B true CN101809559B (zh) 2013-10-16

Family

ID=40429720

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2008801058233A Active CN101809559B (zh) 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复
CN201210169887.8A Active CN102880626B (zh) 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201210169887.8A Active CN102880626B (zh) 2007-09-05 2008-09-05 在虚拟化服务器和虚拟化存储环境中的去重复

Country Status (3)

Country Link
EP (1) EP2186015A4 (zh)
CN (2) CN101809559B (zh)
WO (1) WO2009033074A2 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US8380681B2 (en) * 2010-12-16 2013-02-19 Microsoft Corporation Extensible pipeline for data deduplication
WO2013081637A2 (en) * 2010-12-29 2013-06-06 Amazon Technologies, Inc. Receiver-side data deduplication in data systems
CN102223409B (zh) * 2011-06-13 2013-08-21 浪潮(北京)电子信息产业有限公司 一种网络存储资源应用系统及方法
CN102221982B (zh) * 2011-06-13 2013-09-11 北京卓微天成科技咨询有限公司 块级虚拟化存储设备上实现重复数据删除的方法及系统
US8468138B1 (en) * 2011-12-02 2013-06-18 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
US9235589B2 (en) * 2011-12-13 2016-01-12 International Business Machines Corporation Optimizing storage allocation in a virtual desktop environment
US9417811B2 (en) 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
US8923195B2 (en) * 2012-03-20 2014-12-30 Futurewei Technologies, Inc. Method and apparatus for efficient content delivery in radio access networks
WO2013159174A1 (en) * 2012-04-27 2013-10-31 University Of British Columbia De-duplicated virtual machine image transfer
JP5965541B2 (ja) * 2012-10-31 2016-08-10 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
GB2510185A (en) 2013-01-29 2014-07-30 Ibm Data de-duplication between emulated disk sub-systems
US9729659B2 (en) 2013-03-14 2017-08-08 Microsoft Technology Licensing, Llc Caching content addressable data chunks for storage virtualization
US10592347B2 (en) * 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US10496490B2 (en) 2013-05-16 2019-12-03 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
CN103559282B (zh) * 2013-11-07 2018-02-23 北京国双科技有限公司 实时系统数据的去重方法和装置
US20150286414A1 (en) * 2014-04-03 2015-10-08 Strato Scale Ltd. Scanning memory for de-duplication using rdma
WO2015150976A1 (en) 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
CN103942292A (zh) * 2014-04-11 2014-07-23 华为技术有限公司 虚拟机镜像文件处理方法、装置及系统
WO2016003454A1 (en) 2014-07-02 2016-01-07 Hewlett-Packard Development Company, L.P. Managing port connections
CN104133888B (zh) * 2014-07-30 2019-08-02 宇龙计算机通信科技(深圳)有限公司 一种多系统数据处理方法、装置及终端
EP3195135A4 (en) * 2014-09-05 2018-05-02 Hewlett-Packard Enterprise Development LP Data storage over fibre channel
JP6254293B2 (ja) * 2014-09-15 2017-12-27 華為技術有限公司Huawei Technologies Co.,Ltd. データ重複排除方法及びストレージアレイ
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
WO2016135570A1 (en) 2015-02-26 2016-09-01 Strato Scale Ltd. Using access-frequency hierarchy for selection of eviction destination
CN107515723B (zh) * 2016-06-16 2020-04-24 伊姆西Ip控股有限责任公司 用于管理存储系统中的存储器的方法和系统
CN107870922B (zh) * 2016-09-23 2022-02-22 伊姆西Ip控股有限责任公司 一种用于数据去重的方法、设备和系统
TWI663515B (zh) * 2017-07-18 2019-06-21 先智雲端數據股份有限公司 用於物聯網設備於資料中心備份的分散式重複資料刪除儲存系統及其達成分散式重複資料刪除方法
US11467775B2 (en) * 2019-10-15 2022-10-11 Hewlett Packard Enterprise Development Lp Virtual persistent volumes for containerized applications
CN111209229B (zh) * 2019-12-30 2021-12-21 苏州艾利特机器人有限公司 一种基于虚拟设备的现场总线方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1605989A (zh) * 2003-10-09 2005-04-13 国际商业机器公司 备份操作期间确保有效日志文件系统元数据的方法和装置
CN1682193A (zh) * 2002-07-11 2005-10-12 维瑞泰斯操作公司 存储服务与系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
US6389433B1 (en) * 1999-07-16 2002-05-14 Microsoft Corporation Method and system for automatically merging files into a single instance store
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
JP2006528862A (ja) * 2003-07-24 2006-12-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 格納されている映像データの最適化
JP4402565B2 (ja) * 2004-10-28 2010-01-20 富士通株式会社 仮想ストレージ管理プログラム、方法及び装置
JP2006134208A (ja) * 2004-11-09 2006-05-25 Fujitsu Ltd ストレージ仮想化装置
US7694298B2 (en) * 2004-12-10 2010-04-06 Intel Corporation Method and apparatus for providing virtual server blades
US20070050423A1 (en) * 2005-08-30 2007-03-01 Scentric, Inc. Intelligent general duplicate management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682193A (zh) * 2002-07-11 2005-10-12 维瑞泰斯操作公司 存储服务与系统
CN1605989A (zh) * 2003-10-09 2005-04-13 国际商业机器公司 备份操作期间确保有效日志文件系统元数据的方法和装置

Also Published As

Publication number Publication date
EP2186015A4 (en) 2015-04-29
EP2186015A2 (en) 2010-05-19
CN101809559A (zh) 2010-08-18
WO2009033074A2 (en) 2009-03-12
CN102880626B (zh) 2016-02-10
WO2009033074A3 (en) 2009-05-14
CN102880626A (zh) 2013-01-16

Similar Documents

Publication Publication Date Title
CN101809559B (zh) 在虚拟化服务器和虚拟化存储环境中的去重复
US11579991B2 (en) Dynamic allocation of compute resources at a recovery site
JP6607901B2 (ja) スケーラブル分散ストレージアーキテクチャ
US8880797B2 (en) De-duplication in a virtualized server environment
US10379967B2 (en) Live rollback for a computing environment
US10180948B2 (en) Data storage with a distributed virtual array
CN101669106B (zh) 虚拟机迁移的系统和方法
US10140136B2 (en) Distributed virtual array data storage system and method
US8539137B1 (en) System and method for management of virtual execution environment disk storage
KR101606212B1 (ko) 하이퍼바이저 파일 시스템
US20070061441A1 (en) Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US20070067366A1 (en) Scalable partition memory mapping system
US8799557B1 (en) System and method for non-volatile random access memory emulation
US20070028244A1 (en) Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US20150058306A1 (en) Distributed transaction log
US9501379B2 (en) Mechanism for providing real time replication status information in a networked virtualization environment for storage management
Li et al. Efficient live virtual machine migration for memory write-intensive workloads
US10613986B2 (en) Adjustment of the number of tasks for a cache storage scan and destage application based on the type of elements to be destaged from the cache storage
Modi et al. Live migration of virtual machines with their local persistent storage in a data intensive cloud
US11630608B2 (en) Vblock metadata management
US20220236872A1 (en) Metadata cache warmup after metadata cache loss or migration
US20200026875A1 (en) Protected health information in distributed computing systems
Horalek et al. Analysis of virtualization tools for education purposes
Kochut et al. Evaluation of redundancy driven provisioning for hypervisors with locally attached storage
US20230176884A1 (en) Techniques for switching device implementations for virtual devices

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