CN102880626B - 在虚拟化服务器和虚拟化存储环境中的去重复 - Google Patents
在虚拟化服务器和虚拟化存储环境中的去重复 Download PDFInfo
- Publication number
- CN102880626B CN102880626B CN201210169887.8A CN201210169887A CN102880626B CN 102880626 B CN102880626 B CN 102880626B CN 201210169887 A CN201210169887 A CN 201210169887A CN 102880626 B CN102880626 B CN 102880626B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- deduplication
- memory device
- block
- 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
- 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/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- 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/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及在虚拟化服务器和虚拟化存储环境中的去重复。虚拟化服务器环境包括多个服务器应用程序,服务器应用程序在包括用于临时存储数据的存储器和用于持久存储数据的存储设备的计算机体系结构上提供的虚拟化层上操作。虚拟化存储环境包括多个存储设备和把每一个存储设备的全部或者部分存储容量聚集为单个存储容量池的虚拟化层。在虚拟化环境中,去重复应用程序识别存储器、存储设备和/或被汇集的存储容量中的冗余数据,并利用执行数据的单个副本的一个或更多个指针替换冗余数据。去重复应用程序在固定或者可变尺寸数据块上操作,并且或者以后处理方式,或者在线地在对数据去重复。
Description
本申请是申请日为2008年9月5日、申请号为200880105823.3、发明名称为“在虚拟化服务器和虚拟化存储环境中的去重复”的中国专利申请的分案申请。
技术领域
本发明涉及数据去重复。更具体地,本发明的实施例涉及用于在虚拟化服务器和虚拟化存储环境中去重复冗余数据的软件、硬件、系统和方法。
背景技术
虚拟化是一种把计算机环境中的物理计算资源从与那些资源交互作用的系统、应用程序,和/或终端用户解耦以实现更大的IT资源利用和灵活性的抽象层。例如,服务器虚拟化允许具有异质操作系统的多个虚拟机在相同的物理机上孤立地并行运行。每一个虚拟机具有其自己的虚拟硬件集合(例如RAM、CPU、NIC等),其上加载了OS和应用程序。无论实际的物理硬件部件如何,OS总看到始终如一的、规格化的硬件集合。
虚拟机被封装到文件中,使得有可能快速地保存、复制和提供虚拟机。全系统(完全配置的应用程序、操作系统、BIOS和虚拟硬件)在几秒种内可以从一个物理服务器移动到另一个,用于零停机维护和连续工作量整固(ContinuousWorkloadConsolidation)。
类似地,存储虚拟化是把多个存储设备合并为看起来好像单个存储单元的东西。存储虚拟化把简单对象(例如卷)在堆栈中向上提供给例如主机系统,隐藏了底层网络、存储设备和其他构造的物理复杂性。存储虚拟化可以提供很多益处,仅举几例,包括集中化存储管理、更容易复制、当子系统故障或者被替换时的无中断数据迁移,以及实施节约成本的分层存储。
尽管其很多优点,但是虚拟化可能导致在存储器(例如处理器寄存器、高速缓存存储器、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的单个副本的指针替换。类似地,当冗余数据被写入存储设备时,冗余数据可被指向存储设备中数据的单个实例的指针替换。去重复应用程序可以在线地或者以后处理方式(PostProcess)执行去重复。
通过对存储设备读/写路径上的数据去重复,更多的数据可以被从相对缓慢存取的存储设备读入相对快速存取的存储器。随着增大的在相对快速存取的存储器中可被表示的数据的量,访问速度被提高。此外,为了访问数据,要求更少的对存储设备的输入/输出(“I/O”)操作,因为更多的数据可以被存储在存储器中。此外,当写入存储设备的数据被在线去重复时,被实施为存储区域网络(“SAN”)等的存储设备中的处理开销(ProcessingOverhead)得到改善,因为更少的数据被写到存储设备。
或者,通过在包括多个用于存储数据以汇集或者聚集每一个存储设备的一些或者全部存储容量的存储设备的第二计算机环境上提供抽象或者虚拟化层,可以实现存储虚拟化。虚拟化层可以是基于主机的、基于存储设备的,或者基于网络的。在一个实施例中,虚拟化层把底层存储容量的至少两个部分的表示提供给至少两个主机系统。每一个主机系统均能产生输入/输出(“I/O”)请求,以便把数据写到存储容量的其对应部分,和/或从存储容量的其对应部分读取数据。每一个I/O请求包括虚拟存储器地址,虚拟化层把虚拟存储器地址映射到物理存储器地址。
数据去重复应用程序被在第二计算机环境中操作以减少汇集的存储容量中的冗余数据。去重复应用程序识别存储容量中的冗余数据,并利用到存储在存储容量中其他地方的该数据的副本的参照/指针将其替换。例如,主机系统可以实施相同的操作系统(“OS”),它们包括相同的文件、可执行文件或其他的数据块。在这种情况下,数据去重复应用程序识别相同的数据块,从存储容量消除冗余的副本,并在从前的冗余副本的位置存储指向数据的单个剩余实例的指针。
为了实践本发明,计算机和网络设备可以是任何用于提供所描述的功能的设备,包括公知的数据处理和存储设备以及通信设备和系统,例如通常在用户系统中用作主机的具有处理、存储器,和输入/输出部件的计算机设备,以及被配置成维持数字数据然后在通信网络上传送的服务器设备。数据通常以遵循标准的通信和传输协议的数字格式传递。数据存储资源一般被描述为磁盘、光学和磁带设备,它们实施RAID和其他存储技术,并且它们可以使用SCSI和其他I/O、数据转移和存储协议,但是本发明并不限于这些示范性实施例或者具体的硬件和软件机制,因为它对于几乎任何计算机环境都是有用的。
I.虚拟化服务器环境
图1示出了其中可以实施本发明的实施例的虚拟化服务器系统100的一个实施例。如所示,虚拟化服务器系统100建立在计算机平台110上(例如x86计算机体系结构等),计算机平台110包括许多资源,例如CPU、存储器、网络设备、磁盘和磁带机构。提供了虚拟化层120来管理对体系结构110的访问,或者把其“虚拟化”为统一池,并把这个池的硬件从一个或更多个虚拟机(即,系统100被示出具有运行于虚拟化层120上的两个这样的虚拟或者客户机——但是,可以运行更多这样的虚拟机)分离。虚拟化层120向每一个虚拟或者客户机的OS132、133提供虚拟化的表示136、137。操作系统132、133可以相同或者不同,并且可以包括例如Windows、Linux、Novell、Solaris,以及其他的操作系统,例如FreeBSD等等。
提供服务器应用程序131并使之与OS133相关联,并使用虚拟系统137把数据从存储设备读入存储器中,和/或把数据从存储器写到存储设备。虚拟系统137把服务器应用程序131从实际资源110屏蔽,向该服务器应用程序提供例如全部或者部分存储器以及全部或者部分磁盘存储设备的逻辑表示。虽然虚拟化服务器系统100被示出具有运行于虚拟化层120上的单个服务器应用程序131,但是在本发明另一个实施例中,虚拟化服务器系统100可以具有多个运行于虚拟化层120上的服务器应用程序131,每一个均配备OS133和标准化硬件137。
此外,提供数据去重复应用程序130并使之与OS132相关联,并使用虚拟系统136处理读入存储器中或写到磁盘存储设备的数据以分别消除资源池110的存储器或者磁盘存储设备内的冗余数据。去重复应用程序131实际上可以是任何被配置成识别冗余数据并利用指向该数据的单个实例的一个或更多个指针或者参照替换所述冗余数据的去重复应用程序。例如,在本发明的一个实施例中,去重复应用程序131在线地对数据去重复。换句话说,当数据被接收、读取或者写入存储器或者存储设备时,去重复应用程序识别并利用指针替换冗余数据。根据本发明的另一个实施例,去重复应用程序131以后处理方式对数据去重复。在这个例子中,在数据已经被接收、读取或者写入存储器或者存储设备以后,去重复应用程序识别并利用指针替换冗余数据。此外,去重复应用程序可以使用固定块尺寸或者可变块尺寸对数据去重复。虽然很多数据去重复算法在技术上是已知的,并且可被去重复应用程序130实施,但是在一个实施例中,去重复应用程序实施共同转让的No.6,810,398号美国专利中公开的“粘性字节(stickybyte)”算法,该专利通过引用被包含于此。
一般地,选择虚拟化层120以起到抽象层的作用,所述抽象层把物理硬件从和应用程序130、131相关联的OS去耦合,以实现更大的IS资源利用和灵活性。虚拟化层120允许多个具有同质或异质操作系统的虚拟机或者客户机(例如其可被用来运行应用程序130、131)孤立地但并行地在相同或者不同的物理机上运行。每一个虚拟机具有其自己的虚拟硬件集合(例如池110内的RAM、CPU、NIC等),其上加载OS和包括应用程序130、131的应用程序。无论实际物理硬件部件如何,操作系统看到始终如一的、规格化的硬件集合。
有益地,虚拟机(例如图1的两个虚拟机)可以被封装到文件中,使得有可能快速地保存、复制和提供虚拟机。全系统(完全配置的应用程序、操作系统、BIOS和虚拟硬件)在几秒种内可以从一个物理服务器移动到另一个,用于零停机维护和连续工作量整固(ContinuousWorkloadConsolidation)。此外,虚拟化层120提供隔离。虚拟机被从物理主机和其他虚拟机完全地隔离。如果一个虚拟机失灵,则所有其他的不受影响。数据不跨过虚拟机泄漏,并且应用程序只能在配置的网络连接上通信。
图2根据本发明的实施例示出了虚拟化服务器系统200的替换结构。和虚拟化服务器系统100一样,虚拟化服务器系统200包括一组计算机硬件或者特定的体系结构210。在这个例子中,去重复应用程序222被作为常规应用程序安装并运行在体系结构210中,依靠主机OS220得到设备支持和体系结构210的物理资源管理。系统200额外包括虚拟机,该虚拟机作为例如类似于应用程序222的应用程序被安装和运行。虚拟机包括虚拟化层230,它把虚拟机内的服务器应用程序238从计算机资源210屏蔽。和应用程序222一样,虚拟化层230依靠主机OS220得到设备支持和计算机硬件210的物理资源管理。此外,虚拟化层230向服务器应用程序238提供客户OS234。
图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运行OS332、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中所示那些)可以采用许多形式来实践本发明。但是,在一个实施例中,服务器应用程序和可选择地去重复应用程序可以在例如VMwareESX或GSX(或者类似产品)的VMware虚拟化产品上运行。例如VMwareESX的虚拟化产品相对公知,并被本领域技术人员理解,这里无需全面讨论以描述本发明。在其他的实施例中,虚拟化层由来自XenSource的虚拟化产品Xen3.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额外包括SAN630、交换机608和610,以及在这里实施为一对存储阵列的存储设备606A和606B。存储阵列606中的每一个均可以包括例如控制器和一个或更多个磁盘驱动器。SAN630通常是高速网络,其允许在存储设备606和服务器602、604之间建立直接连接。可以使用各种不同技术实施SAN630,包括光纤通道仲裁环、光纤通道交换网络、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实现了低成本的初始部署和增量缩放(IncrementalScaling)。此外,基于主机的虚拟化允许管理员访问先进的存储管理功能,例如镜像、RAID集合、冗余路径控制和热备份(通过使用镜像分离或者快照)。
根据本发明的当前实施例,在主机系统602上操作去重复应用程序616以便在由虚拟化代理612提供给去重复应用程序的那部分被汇集的存储容量内提供数据去重复。
现在参考图7,示出了虚拟化存储环境700的例子,其中使用基于存储设备的方法学实施存储虚拟化。虚拟化存储环境700包括通过网络720可通信地耦合的主机系统702、704、705。SAN730和交换机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。SAN830和交换机832实现了在存储阵列840、842和主机系统802、804、805之间建立直接连接。尽管未示出,存储阵列840、842中的每一个均可以额外包括存储控制器和物理驱动器阵列,和图7的存储控制器748、749以及磁盘驱动器754、756的阵列类似。
在图8的实施例中,在交换机832中实施虚拟化层850。另外,或者额外地,可以在专用设备中实施虚拟化层。交换机和/或设备针对所有的可用存储设备监视SAN830,并建立关于所存储的数据及其位置的元数据。因此,交换机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 (27)
1.一种用于在计算机环境中提供存储虚拟化和数据去重复的系统,所述系统包含:
计算机设备,所述计算机设备包括:
多个存储设备;
虚拟化层,所述虚拟化层施加于所述多个存储设备以聚集所述多个存储设备的存储容量,以便在操作期间,当所述计算机设备接收到包括虚拟存储器地址和写数据的写请求时,所述虚拟化层将所述虚拟存储器地址映射到被聚集的存储容量内的物理存储器地址,其中,所述被聚集的存储容量包括先前存储的数据,所述先前存储的数据包括第一数据块;以及
数据去重复设备,所述数据去重复设备用于在所述计算机设备上运行数据去重复应用程序,其中,所述数据去重复应用程序运行以对所述计算机设备的被聚集的存储容量中的数据去重复,
其中,对所述被聚集的存储容量中的数据去重复包括:
确定被包括在所述写数据中的未存储的第二数据块与所述第一数据块相同;和
在所述被聚集的存储容量中,在所述物理存储器地址处存储指针而非存储所述第二数据块,所述指针指向所述第一数据块,以及
其中,在数据被接收、写入或读取到存储设备或存储器的过程期间,在线执行对数据去重复。
2.根据权利要求1所述的系统,其中,所述虚拟化层向虚拟机的操作系统提供所述多个存储设备的虚拟化表示。
3.根据权利要求2所述的系统,其中,所述虚拟机位于所述计算机设备上。
4.根据权利要求1所述的系统,其中,所述计算机设备还包括服务器应用程序,所述服务器应用程序使用所述虚拟化层来从存储设备把数据读入存储器中和/或从存储器把数据写入存储设备。
5.根据权利要求4所述的系统,其中,所述系统可操作使得,响应于来自所述虚拟化层的对包括所述第二数据块的数据的映射的读请求,所述系统能够使用所述指针来访问并返回与所述第二数据块相同的所述第一数据块。
6.根据权利要求1所述的系统,其中,确定包括在所述写数据中的所述第二数据块和所述第一数据块相同的步骤包含:
把所述先前存储的数据分解为一个或更多个块的第一集合,一个或更多个块的所述第一集合包括所述第一数据块;
把所述写数据分解为一个或更多个块的第二集合,一个或更多个块的所述第二集合包括所述第二数据块;
在所述第一数据块上执行散列函数以获取第一散列值,并在所述第二数据块上执行散列函数以获取第二散列值,其中,所述散列函数是确定性的并被配置成产生概率唯一的散列值;和
通过比较所述第一散列值和所述第二散列值,确定所述第一散列值和所述第二散列值相同。
7.根据权利要求6所述的系统,其中,指向所述第一数据块的指针包含所述第一散列值或者所述第二散列值。
8.一种用于从多个存储设备汇集存储容量并对所述被汇集的存储容量内的数据去重复的系统,所述系统包含:
计算机设备,所述计算机设备包括:
用于临时存储数据的存储器;
多个用于持久存储数据的存储设备;
虚拟化层,所述虚拟化层施加于所述多个存储设备以便从所述多个存储设备汇集存储容量,其中,原始数据被存储在所述被汇集的存储容量中;以及
数据去重复设备,所述数据去重复设备用于在所述计算机设备上运行数据去重复应用程序,其中,所述数据去重复应用程序运行以对所述计算机设备的所述被汇集的存储容量中的数据去重复,
其中,对所述被汇集的存储容量中的数据去重复包括:
从第一主机系统接收写请求,所述写请求至少包括虚拟存储器地址和写数据;
把所述虚拟存储器地址映射到分配给所述第一主机系统的所述被汇集的存储容量的一部分内的物理存储器地址;
把所述写数据和所述原始数据比较以识别所述原始数据内与所述写数据内的第二数据块相同的第一数据块;和
所述被汇集的存储容量中的所述第一数据块和所述第二数据块中的其中之一利用指向所述第一数据块和所述第二数据块的剩余一个的指针替换,
其中,所述数据去重复设备还操作以只相对于存储在所述存储器中的数据对所述存储器中的数据进行去重复,且其中,在写入过程期间,在线执行数据的去重复。
9.根据权利要求8所述的系统,其中,所述多个存储设备包含多个异质存储设备,所述虚拟化层向包括所述第一主机系统的多个主机系统提供所述被汇集的存储容量的逻辑表示。
10.根据权利要求9所述的系统,其中,所述虚拟化层被实施于所述多个存储设备中的至少一个存储设备的存储控制器中。
11.根据权利要求8所述的系统,其中,对所述被汇集的存储容量中的数据去重复还包含:
从所述第一主机系统接收读请求,所述读请求包括和所述写请求相同的虚拟存储器地址;
把所述虚拟存储器地址映射到所述物理存储器地址;
如果所述写数据内的所述第二数据块被利用指向所述原始数据内的所述第一数据块的指针替换,则响应于所述读请求,使用所述指针来访问并返回所述第一数据块;和
如果所述第一数据块被利用指向所述第二数据块的指针替换,则响应于所述读请求访问并返回所述第二数据块。
12.根据权利要求8所述的系统,其中,把所述写数据和所述原始数据比较以识别所述原始数据内与所述写数据内的第二数据块相同的至少第一数据块包含:
把所述原始数据分解为包括所述第一数据块的一个或更多个数据块;
把所述写数据分解为包括所述第二数据块的一个或更多个数据块;
对所述第一数据块进行散列处理以产生第一散列,并对所述第二数据块进行散列处理以产生第二散列;和
比较所述第一散列和所述第二散列。
13.一种用于在包括多个存储设备的计算机环境中提供存储虚拟化和数据去重复的方法,所述方法包含:
把虚拟化层施加于所述多个存储设备以聚集所述多个存储设备的存储容量,以便在操作期间,当接收到包括虚拟存储器地址和写数据的写请求时,所述虚拟化层将所述虚拟存储器地址映射到被聚集的存储容量内的物理存储器地址,其中,所述被聚集的存储容量包括先前存储的数据,所述先前存储的数据包括第一数据块;
确定被包括在所述写数据中的未存储的第二数据块与所述第一数据块相同;和
在所述被聚集的存储容量中,在所述物理存储器地址处存储指针而非存储所述第二数据块,所述指针指向所述第一数据块,以及
其中,在数据被接收、写入或读取到存储设备或存储器的过程期间,在线执行对数据去重复。
14.根据权利要求13所述的方法,还包含:响应于从所述虚拟化层接收针对包括存储于所述物理存储器地址的所述第二数据块的第二数据的映射的读请求,使用所述指针来访问并返回与所述第二数据块相同的所述第一数据块。
15.根据权利要求13所述的方法,还包含在包括所述多个存储设备的计算机环境中操作主机系统,所述主机系统把所述写请求发送到所述虚拟化层。
16.根据权利要求13所述的方法,其中,确定所述第二数据块和所述第一数据块相同包含:
把所述先前存储的数据分解为一个或更多个块的第一集合,一个或更多个块的所述第一集合包括所述第一数据块;
把所述写数据分解为一个或更多个块的第二集合,一个或更多个块的所述第二集合包括所述第二数据块;
在所述第一数据块上执行散列函数以获取第一散列值,并在所述第二数据块上执行散列函数以获取第二散列值,其中,所述散列函数是确定性的并被配置成产生概率唯一的散列值;和
通过比较所述第一散列值和所述第二散列值,确定所述第一散列值和所述第二散列值相同。
17.根据权利要求16所述的方法,其中,指向所述第一数据块的指针包含所述第一散列值或者所述第二散列值。
18.根据权利要求16所述的方法,其中,在一个或更多个块的所述第一集合和一个或更多个块的所述第二集合中的块的尺寸是固定的或者可变的。
19.根据权利要求13所述的方法,其中,确定所述第二数据块和所述第一数据块相同并在所述被聚集的存储容量中存储所述指针的步骤或者在第二数据被写到所述物理存储器地址时执行,或者在所述第二数据已被存储在所述物理存储器地址以后执行。
20.根据权利要求13所述的方法,其中,确定被包括在所述写数据中的第二数据块与所述第一数据块相同用运行于所述计算机环境中的主机系统上的去重复应用程序执行,其中所述虚拟化层向运行于所述主机系统上的去重复应用程序提供所述被聚集的存储容量的表示。
21.一种从多个存储设备汇集存储容量并对所述被汇集的存储容量内的数据去重复的方法,所述方法包含:
把虚拟化层施加于所述多个存储设备以便从所述多个存储设备汇集存储容量,其中,原始数据被存储在所述被汇集的存储容量中;
从第一主机系统接收写请求,所述写请求至少包括虚拟存储器地址和写数据;
把所述虚拟存储器地址映射到分配给所述第一主机系统的所述被汇集的存储容量的一部分内的物理存储器地址;
把所述写数据和所述原始数据比较以识别所述原始数据内与所述写数据内的第二数据块相同的第一数据块;和
所述被汇集的存储容量中的所述第一数据块和所述第二数据块中的其中之一利用指向所述第一数据块和所述第二数据块的剩余一个的指针替换,以及
其中,在写过程期间,在线执行数据的去重复。
22.根据权利要求21所述的方法,其中,所述多个存储设备包含多个异质存储设备,所述虚拟化层向包括所述第一主机系统的多个主机系统提供所述被汇集的存储容量的逻辑表示。
23.根据权利要求21所述的方法,其中,所述虚拟化层被实施于:所述第一主机系统中、所述多个存储设备中的至少一个存储设备的存储控制器中,或者所述多个存储设备耦合到的存储区域网络的交换机中。
24.根据权利要求21所述的方法,还包含:
从所述第一主机系统接收读请求,所述读请求包括和所述写请求相同的虚拟存储器地址;
把所述虚拟存储器地址映射到所述物理存储器地址;
如果所述写数据内的所述第二数据块被利用指向所述原始数据内的所述第一数据块的指针替换,则响应于所述读请求,使用所述指针来访问并返回所述第一数据块;和
如果所述第一数据块被利用指向所述第二数据块的指针替换,则响应于所述读请求访问并返回所述第二数据块。
25.根据权利要求21所述的方法,其中,把所述写数据和所述原始数据比较以识别所述原始数据内与所述写数据内的第二数据块相同的至少第一数据块包含:
把所述原始数据分解为包括所述第一数据块的一个或更多个数据块;
把所述写数据分解为包括所述第二数据块的一个或更多个数据块;
对所述第一数据块进行散列处理以产生第一散列,并对所述第二数据块进行散列处理以产生第二散列;和
比较所述第一散列和所述第二散列。
26.根据权利要求21所述的方法,其中,比较所述写数据和所述原始数据并利用指针替换所述第一数据块和所述第二数据块其中之一的步骤被运行于第二主机系统上的数据去重复应用程序执行,所述虚拟化层向所述第二主机系统提供全部所述被汇集的存储容量的表示。
27.根据权利要求21所述的方法,其中,把所述写数据和所述原始数据比较以识别所述原始数据内与所述写数据内的第二数据块相同的第一数据块被运行于第二主机系统上的数据去重复应用程序执行,且所述虚拟化层向所述第二主机系统提供所述被汇集的存储容量的表示。
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,756 US8880797B2 (en) | 2007-09-05 | 2007-09-28 | De-duplication in a virtualized server environment |
US11/864,583 | 2007-09-28 | ||
US11/864,583 US8209506B2 (en) | 2007-09-05 | 2007-09-28 | De-duplication in a virtualized storage environment |
US11/864,756 | 2007-09-28 | ||
CN2008801058233A CN101809559B (zh) | 2007-09-05 | 2008-09-05 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801058233A Division CN101809559B (zh) | 2007-09-05 | 2008-09-05 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880626A CN102880626A (zh) | 2013-01-16 |
CN102880626B true CN102880626B (zh) | 2016-02-10 |
Family
ID=40429720
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210169887.8A Active CN102880626B (zh) | 2007-09-05 | 2008-09-05 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
CN2008801058233A Active CN101809559B (zh) | 2007-09-05 | 2008-09-05 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801058233A Active CN101809559B (zh) | 2007-09-05 | 2008-09-05 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2186015A4 (zh) |
CN (2) | CN102880626B (zh) |
WO (1) | WO2009033074A2 (zh) |
Families Citing this family (31)
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 |
CA2823134C (en) * | 2010-12-29 | 2020-07-07 | Amazon Technologies, Inc. | Receiver-side data deduplication in data systems |
CN102221982B (zh) * | 2011-06-13 | 2013-09-11 | 北京卓微天成科技咨询有限公司 | 块级虚拟化存储设备上实现重复数据删除的方法及系统 |
CN102223409B (zh) * | 2011-06-13 | 2013-08-21 | 浪潮(北京)电子信息产业有限公司 | 一种网络存储资源应用系统及方法 |
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 |
KR101782685B1 (ko) | 2012-04-27 | 2017-09-27 | 유니버시티 오브 브리티쉬 콜럼비아 | 중복이 제거된 가상 머신 이미지 트랜스퍼 |
US9104328B2 (en) | 2012-10-31 | 2015-08-11 | Hitachi, Ltd. | Storage apparatus and method for controlling storage apparatus |
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 |
EP2997497B1 (en) * | 2013-05-16 | 2021-10-27 | Hewlett Packard Enterprise Development LP | Selecting a store for deduplicated data |
WO2014185916A1 (en) | 2013-05-16 | 2014-11-20 | Hewlett-Packard Development Company, L.P. | 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 | 华为技术有限公司 | 虚拟机镜像文件处理方法、装置及系统 |
US10897506B2 (en) | 2014-07-02 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Managing port connections |
CN104133888B (zh) * | 2014-07-30 | 2019-08-02 | 宇龙计算机通信科技(深圳)有限公司 | 一种多系统数据处理方法、装置及终端 |
US20170251083A1 (en) * | 2014-09-05 | 2017-08-31 | 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 |
CN106233265A (zh) | 2015-02-26 | 2016-12-14 | 斯特拉托斯卡莱有限公司 | 将访问频率层次结构用于逐出目标的选择 |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773469A (zh) * | 2004-11-09 | 2006-05-17 | 富士通株式会社 | 存储虚拟化装置 |
CN1826805A (zh) * | 2003-07-24 | 2006-08-30 | 皇家飞利浦电子股份有限公司 | 对所存储的视频数据的优化 |
Family Cites Families (9)
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 |
US7043614B2 (en) * | 2002-07-11 | 2006-05-09 | Veritas Operating Corporation | Storage services and systems |
US20050081099A1 (en) * | 2003-10-09 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for ensuring valid journaled file system metadata during a backup operation |
JP4402565B2 (ja) * | 2004-10-28 | 2010-01-20 | 富士通株式会社 | 仮想ストレージ管理プログラム、方法及び装置 |
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 |
-
2008
- 2008-09-05 CN CN201210169887.8A patent/CN102880626B/zh active Active
- 2008-09-05 WO PCT/US2008/075467 patent/WO2009033074A2/en active Application Filing
- 2008-09-05 CN CN2008801058233A patent/CN101809559B/zh active Active
- 2008-09-05 EP EP20080829858 patent/EP2186015A4/en not_active Ceased
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1826805A (zh) * | 2003-07-24 | 2006-08-30 | 皇家飞利浦电子股份有限公司 | 对所存储的视频数据的优化 |
CN1773469A (zh) * | 2004-11-09 | 2006-05-17 | 富士通株式会社 | 存储虚拟化装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101809559B (zh) | 2013-10-16 |
WO2009033074A3 (en) | 2009-05-14 |
EP2186015A2 (en) | 2010-05-19 |
CN101809559A (zh) | 2010-08-18 |
CN102880626A (zh) | 2013-01-16 |
WO2009033074A2 (en) | 2009-03-12 |
EP2186015A4 (en) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102880626B (zh) | 在虚拟化服务器和虚拟化存储环境中的去重复 | |
US11650842B2 (en) | Methods and apparatus for providing hypervisor level data services for server virtualization | |
US11579991B2 (en) | Dynamic allocation of compute resources at a recovery site | |
US10642637B2 (en) | Methods and apparatus for providing hypervisor level data services for server virtualization | |
US10769036B2 (en) | Distributed transaction log | |
AU2014311869B2 (en) | Partition tolerance in cluster membership management | |
US8549245B2 (en) | De-duplication in a virtualized storage environment | |
US8370833B2 (en) | Method and system for implementing a virtual storage pool in a virtual environment | |
KR101055918B1 (ko) | 패일오버에 따른 캐시 데이터의 보존 | |
US20070061441A1 (en) | Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions | |
US20150127975A1 (en) | Distributed virtual array data storage system and method | |
CN104040525B (zh) | 通过网络连接访问覆盖介质 | |
US8046552B2 (en) | Tracking metadata changes during data copy in a storage system | |
CN102693230B (zh) | 用于存储区域网络的文件系统 | |
WO2005036358A2 (en) | Virtualization system for guest | |
US11561915B2 (en) | Remote sharing of directly connected storage | |
US20230418716A1 (en) | Anti-entropy-based metadata recovery in a strongly consistent distributed data storage system | |
WO2015052836A1 (ja) | ストレージ装置及びフェールオーバ方法 | |
US7484038B1 (en) | Method and apparatus to manage storage devices | |
Tate et al. | Implementing the IBM System Storage SAN Volume Controller with IBM Spectrum Virtualize V8. 2.1 | |
Tran et al. | Virtualizing Microsoft SQL Server 2008 R2 Using VMware vSphere 5 on Hitachi Compute Rack 220 and Hitachi Unified Storage 150 Reference Architecture Guide |
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 |