CN107122127B - 向存储硬件的存储操作卸载 - Google Patents

向存储硬件的存储操作卸载 Download PDF

Info

Publication number
CN107122127B
CN107122127B CN201710049036.2A CN201710049036A CN107122127B CN 107122127 B CN107122127 B CN 107122127B CN 201710049036 A CN201710049036 A CN 201710049036A CN 107122127 B CN107122127 B CN 107122127B
Authority
CN
China
Prior art keywords
storage
file
storage system
block
instruction
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
CN201710049036.2A
Other languages
English (en)
Other versions
CN107122127A (zh
Inventor
萨蒂扬·B·瓦哈尼
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.)
Weirui LLC
Original Assignee
VMware LLC
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
Application filed by VMware LLC filed Critical VMware LLC
Publication of CN107122127A publication Critical patent/CN107122127A/zh
Application granted granted Critical
Publication of CN107122127B publication Critical patent/CN107122127B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/0643Management of files
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

本公开的实施例涉及向存储硬件的存储操作卸载。在具有盘阵列的计算机系统中,其中盘阵列具有布置为逻辑存储单元的物理存储设备并且能够在每个逻辑存储单元的基础上执行硬件存储操作,硬件存储操作可以通过使用多种原语在每个文件的基础上执行。这些原语包括用于清零文件块、克隆文件块和删除文件块的指令,并且这些指令对块列表中定义的一个或多个文件进行操作,块列表标识出该文件所映射的逻辑存储单元中的位置。

Description

向存储硬件的存储操作卸载
相关申请引用
本申请是国际申请号为PCT/US2009/038548、国际申请日为2009年3月27日、优先权日2008年5月29日、进入中国国家阶段日期为2009年9月23日、中国国家申请号为200980000189.1的发明专利申请的分案申请。
技术领域
本发明一般地涉及计算机存储操作,更具体地说,涉及向存储硬件的存储操作卸载。
背景技术
企业存储系统使用盘阵列,这些盘阵列是物理上独立的壳体,包含盘阵列控制器、盘高速缓存和多个物理盘驱动。盘阵列控制器管理物理盘驱动,并且针对所连接的计算机系统将它们呈现为逻辑数据存储单元,其中每个逻辑数据存储单元由逻辑单元号(LUN)标识,并且通过使用存储硬件能够在数据存储单元上执行诸如克隆、快照、镜像和复制之类的存储操作。
采用盘阵列的计算机系统典型地配置有执行逻辑卷管理器的文件系统。逻辑卷管理器是将多个数据存储单元组织为逻辑卷的软件或固件组件。逻辑卷可以是具有连续地址空间的逻辑设备形式,其中文件系统的个体文件被布置在连续地址空间上。逻辑卷到数据存储单元的映射由文件系统控制,因此,盘阵列不知道个体文件是被如何布置在数据存储单元上的。因此,盘阵列不能基于每个文件来调用其硬件执行诸如克隆、快照、镜像和复制之类的存储操作。
基于每个文件在盘阵列中执行存储操作的一种可能方案是在盘阵列管理的数据结构中添加存储元数据。然而,盘阵列是由多个不同厂商提供的,对于不同的厂商,存储元数据不同。该方案不是很有吸引力,因为文件系统需要针对每个不同厂商进行定制。为此,诸如文件克隆、快照、镜像和复制之类的存储操作一般使用软件技术通过传统标准文件系统调用来执行。
发明内容
本发明的一个或多个实施例提供了能够在每个文件的基础上将存储操作卸载到存储硬件的原语。这些原语包括用于清零文件块、克隆文件块和删除文件块的指令,并且这些指令支持更高级别应用,例如即时配置(instant provisioning)和精简配置(thinprovisioning)。
本发明的一个实施例提供了一种在包括连接到存储系统的主机计算机的计算机系统中执行存储操作的方法,其中所述存储系统具有表现为逻辑存储单元的存储设备。存储操作在至少一个文件分段上执行,所述至少一个文件分段被存储在一个或多个逻辑存储单元中的至少两个非邻接位置处。该方法包括以下步骤:从主机计算机向存储系统发出单个指令,以及在存储系统处对至少一个文件分段执行所述单个指令,直到所述单个指令的完成,所述执行独立于所述主机计算机。
本发明的另一实施例提供了一种具有主机计算机和存储系统的计算机系统,其中存储系统连接到主机计算机,具有对所述主机计算机呈现为一个或多个逻辑存储单元的存储设备。在该计算机系统中,从主机计算机到存储系统的数据流包括对主机计算机的至少一个文件分段执行存储操作的指令,其中所述至少一个文件分段被存储在一个或多个逻辑存储单元中,并且所述指令标识出存储了所述至少一个文件分段的所述逻辑存储单元中的至少两个非邻接位置。
根据本发明的实施例,公开了一种存储有指令的计算机可读存储介质,所述指令由存储系统的存储处理器执行,所述存储系统具有表现为逻辑存储单元的存储设备,所述指令包括执行所述指令时使用的第一和第二参数以及指令ID,其中所述第一和第二参数寻址一个或多个逻辑存储单元中的非邻接存储位置。
根据本发明的实施例,公开了一种用于虚拟机的存储系统,所述虚拟机具有通过虚拟机文件系统管理的文件,所述存储系统包括多个存储设备,其中存储了所述虚拟机的文件;以及至少一个存储处理器,所述存储处理器被编程来:(i)将所述存储设备管理为一个或多个逻辑存储单元,每个所述逻辑存储单元由逻辑单元号(LUN)标识并具有可寻址的块,(ii)从所述虚拟机文件系统接收指令,以及(iii)执行所述指令,其中所述指令包含多个输入参数并且标识出将在所述输入参数上执行的操作,并且每个输入参数寻址逻辑存储单元中的块的连续区域。
本发明的又一实施例涉及一种具有用于虚拟机的文件系统并连接到存储系统的计算机系统,所述存储系统具有表现为一个或多个逻辑存储单元的存储设备。所述计算机系统包括接口,存储指令和存储数据通过所述接口被传输到所述存储系统;以及处理器,被编程向所述存储系统发出指令,其中所述指令包含多个输入参数并且标识出将在所述输入参数上执行的操作,并且每个输入参数寻址逻辑存储单元中的块的连续区域。
附图说明
图1A是可以实施本发明一个或多个实施例的虚拟化计算机系统拓扑结构的功能框图。
图1B是可以实施本发明一个或多个实施例的带有相连存储系统的计算机系统的功能框图。
图2是可以实施本发明一个或多个实施例的带有相连存储系统的虚拟化计算机系统的功能框图。
图3是图示出将图2计算机系统中的文件映射到盘阵列中的物理存储位置和数据存储单元的概念示图。
图4A是根据本发明一个或多个实施例使用块列表级别原语(primitive)将文件清零的流程图。
图4B是图示出当执行零原语时物理存储系统中的扩展区的概念示图。
图5A是根据本发明的一个或多个实施例使用块列表级别原语来克隆文件的流程图。
图5B是图示出当执行克隆原语时物理存储系统中的扩展区的概念示图。
图6A是根据本发明一个或多个实施例使用块列表级别原语来删除文件的流程图。
图6B是图示出当执行删除原语时物理存储系统中的扩展区的概念示图。
图7A是根据本发明一个或多个实施例使用文件级别原语将存储在NAS(网络附接存储)设备中的文件清零的流程图。
图7B是根据本发明一个或多个实施例使用文件级别原语克隆存储在NAS设备中的文件的流程图。
图7C是根据本发明一个或多个实施例使用文件级别原语删除存储在NAS设备中的文件的流程图。
图8A是可以实施本发明一个或多个实施例的虚拟化计算机系统拓扑结构的另一功能框图。
图8B是根据本发明一个或多个实施例向第三方服务器卸载复合存储操作的流程图。
图8C是根据本发明一个或多个实施例使用第三方服务器执行镜像操作的流程图。
图9A是可以实施本发明一个或多个实施例的图8A虚拟化计算机系统拓扑结构的一部分的功能框图。
图9B是根据本发明一个或多个实施例向交换器卸载存储操作的流程图。
具体实施方式
图1A是可以实施本发明一个或多个实施例的虚拟化计算机系统拓扑结构的功能框图。计算机系统可以包括VM核208和虚拟中心应用180。VM核208可以是VMware ESX服务器,VMware ESX服务器包括存储栈,并具有运行在服务器机器上的虚拟机文件系统(VMFS)。根据一个或多个这样的实施例,虚拟中心应用180是管理一个或多个VM核208并运行在服务器机器上的应用。如图1A所示,虚拟中心应用180耦合在VM核208和第三方服务器190之间,以提供从VM核208到存储设备(例如网络附接存储(NAS)设备185)和存储系统106(例如盘阵列)的带外路径188、189和183。如图1A所示,交换器197耦合在存储系统106、虚拟中心应用180、VM核208和第三方服务器190之间。根据本发明的一个或多个实施例,交换器197是包含以下部分的交换设备:(a)交换分组的数据路径处理器和快速互连;以及(b)一些提供I/O分组交换和组构虚拟化服务的控制路径处理器。
在一些实施例中,交换器197被省略;存储系统106驻留在独立于第三方服务器190的数据中心内;并且第三方服务器190通过带外路径183和安装在存储系统106中的NIC 194(网络接口卡)与存储系统106通信。根据一个或多个其它实施例,额外的交换器197和存储系统106可以包括在如下系统中,其中在该系统中,一个或多个存储系统106驻留在不同的数据中心中。
图1B是可以实施本发明一个或多个实施例的带有相连存储系统的计算机系统的功能框图。计算机系统100可以构建在传统的通常为服务器级的硬件平台102上。如图1B所示,计算机系统100包括使得计算机系统100能够连接到存储系统106的主机总线适配器(HBA)104。存储系统106的示例可以是网络附接存储(NAS)设备、存储区域网络(SAN)阵列、或本领域普通技术人员知晓的任何其它类似的盘阵列。作为NAS设备的存储系统106可以通过NIC 101连接到计算机系统100。如下文进一步讨论的,诸如SAN阵列的盘阵列通常可以通过基于SCSI的协议(例如光纤通道和iSCSI)提供对它们存储装置的块级别访问。本领域普通技术人员将认识到,前述内容的企业级实施方案可以具有类似于计算机系统100的多个计算机系统,其可以通过多种不同的公知拓扑和技术(例如,交换器等)连接到多个存储系统106。
在存储器系统106中,存储系统管理器150(其代表一个或多个编程存储处理器)用做存储系统106(与外部世界)的通信代理,并且实现物理的通常为基于盘驱动的驻留在存储系统106中的存储单元(在图1B中被称为轴体152A-152N)的虚拟化。轴体152A-152N这里统称为轴体152。从逻辑观点看来,这些轴体中的每个可以被看成固定尺寸扩展区或盘区(extent)154的连续阵列。通过向计算机系统100呈现能够将盘驱动提供的合计物理存储空间视为可以被分成一组虚拟SCSI设备(被称为LUN(逻辑单元)156A-156M)的连续逻辑存储空间的能力,存储系统管理器150简化了对盘驱动的实际轴体和扩展区的目标读写操作的复杂度。将轴体152A-152N虚拟化成这样LUN 156A-156M的连续逻辑存储空间,可以提供对合计物理存储空间的更有效利用,其中合计物理存储空间由逻辑卷的地址空间代表。存储系统管理器150向计算机系统100呈现这样的能力,即,以LUN“块”级别向存储系统106传输数据传送与控制操作,其中块是特定LUN的特定连续区域。例如,LUN块可以表现为<LUNID,偏移量,长度>,并且计算机系统100可以以SCSI操作的形式向存储系统106传输对块<LUN ID,偏移量,长度>的读或写操作。LUN标识符(LUN ID)是唯一的、独立于硬件的、符合SCSI协议的标识符值,其可以响应于标准SCSI查询命令而获取。
存储系统管理器150维护元数据155,元数据155包括LUN 156A-156M的每个对扩展区的有序列表的映射(这里,也称为扩展区映射),其中每个这样的扩展区可以被标识为轴体-扩展区对<轴体#,扩展区#>,并且因此可以位于多个轴体152A-152N中的任何一个之中。这样,当存储系统管理器150从计算机系统100接收LUN块操作时,它能够使用LUN的扩展区映射将块解析成位于多个轴体152A-152N中的扩展区的适当列表,该操作基于此列表执行。本领域普通技术人员将认识到,尽管不同存储设备制造商之间具体的存储系统管理器实现细节和术语可能不同,但是期望的一致结果是外部可见的LUN实现了为响应任何完整的经启动事务所需的预期语义学(在本示例中,是SCSI语义学)。
当存储系统106是NAS设备的时候,存储系统管理器150向计算机系统100呈现这样的能力,即,以文件级别向存储系统106传输数据传送与控制操作。与SAN存储相比,LUN156A-156N在NAS设备内进行管理。存储系统管理器150使用文件句柄操纵存储在NAS设备上的文件(使用块地址执行文件I/O,改变文件长度和属性,等等)。当存储系统管理器150从计算机系统100接收文件操作时,它使用该文件操作规定的文件句柄找到轴体152A-152N中被操作的文件的位置,并执行该操作。
返回计算机系统100,操作系统108被安装在硬件平台102之上,并且其支持应用110的执行。操作系统108的示例可以是Microsoft Windows,Linux,基于Netware的操作系统或者本领域普通技术人员公知的任何其它操作系统。用户可以通过用户界面(例如图形用户界面或基于命令的shell(访问操作系统命令))与计算机系统100交互,而执行中的应用110可以通过核应用编程接口(API)116访问由操行系统核114管理的计算机系统100的计算资源。核114提供进程、存储器和设备管理以使各种执行中的应用110共享计算机系统100的有限资源。例如,应用110通过核API 116启动的文件系统调用被路由到文件系统118。文件系统118随后将文件系统操作转换成LUN块操作,并且将LUN块操作提供给逻辑卷管理器120。文件系统118通常通过前面讨论的LUN抽象来管理存储在存储系统106上的文件的创建、使用和删除。逻辑卷管理器120翻译用于由存储系统106执行的卷块操作,并且向基于LUN块操作的设备访问层122发出原始SCSI操作(或者来自本领域普通技术人员公知的任何其它适当的硬件连接接口标准协议(包括IDE、ATA和ATAPI)的操作)。设备访问层122发现存储系统106,并且将命令排队与调度策略应用于原始SCSI操作。设备驱动器124知晓与存储系统106接口的HBA 104的输入/输出接口,并将原始SCSI操作从设备访问层122发送到HBA104,以转发给存储系统106。如前所述,存储系统106的存储系统管理器150接收原始SCSI操作(即,LUN块级别操作),并将它们解析成对其进行操作的盘阵列的轴体内的适当扩展区。
在计算机系统100的操作期间会出现一些情况,即文件系统118上的文件最终不能存储在由存储系统106呈现给计算机系统100的LUN 156A-156N的连续块中。尽管在多个LUN 156A-156N中可能合计具有足够空闲存储空间的块来存储这些文件,但是这些块即不足够大又不连续,并且可能分散在不同LUN上。在该情形下,文件可能需要在文件系统级别、LUN级别和轴体-扩展区级别上被分段成多个组成部分(如图3所详细描述的),从而文件组成部分被存储在不同LUN的不同块上。由于该分段操作,对这些文件的操作(例如读和写操作)当被传输到存储系统106时,也需要被拆分成单独的块级别LUN操作(即,原始LUN块级别SCI操作),从而增加计算机系统100用来与存储系统106通信的资源(例如,HBA队列中的SCSI命令、CPU周期、DMA缓冲器等)。
处理非常大的文件或文件的集合可能发生分段操作的一个环境示例是服务器虚拟化。如下文进一步描述的,虚拟化系统揭示了“虚拟盘”的概念,“虚拟盘”被实现为存储在文件系统上的文件的集合。图2是可以实施本发明一个或多个实施例的具有相连存储系统的虚拟化计算机系统的功能框图。类似于图1B的计算机系统100,计算机系统200可以构建在传统的通常为服务器级的硬件平台102上。如图2所示,计算机系统200包括使得计算机系统200能够连接到存储系统106的HBA 104和NIC 101。如图2中进一步示出的,虚拟机(VM核)操作系统208被安装在硬件平台102之上,并且其支持虚拟机执行空间210,其中多个虚拟机(VM)2121-212N在虚拟机执行空间210内可以被同时实例化并被执行。每个这样的虚拟机2121-212N实现支持安装客户操作系统216的虚拟硬件(HW)平台214,其中客户操作系统216能够执行应用218。与图1B的操作系统108相类似,客户操作系统216的示例可以是Microsoft Windows,Linux,基于Netware的操作系统或者本领域普通技术人员公知的任何其它操作系统。在每个实例中,客户操作系统216包括本地文件系统层(未示出),例如NTFS或ext3FS类型文件系统层。这些文件系统层与虚拟硬件平台214接口,以(从客户操作系统216的观点来看)访问数据存储装置HBA,数据存储装置HBA实际上是由虚拟硬件平台214实现的虚拟HBA 220,其提供盘存储支持(实际上,是虚拟盘222A-222X)的表象,以使客户操作系统216的执行对系统硬件的虚拟化透明。从客户操作系统216的观点来看,虚拟盘222A-222x可以看上去象支持用于连接虚拟机的SCSI标准或者本领域普通技术人员知晓的任何其它适当的硬件连接接口标准(包括IDE、ATA和ATAPI)。
尽管从客户操作系统216的观点来看,由这样的客户操作系统216启动来实现与文件系统相关联的数据传送与控制操作的文件系统调用看上去象被路由到虚拟盘222A-222X用于最终执行,但是在实际中,这样的调用被处理并经过虚拟HBA 220到达附属虚拟机监视器(VMM)层224A-224N,附属VMM层224A-224N实现与虚拟机核208协调操作所需的虚拟系统支持。特别地,主机总线仿真器226功能上使得数据传送与控制操作能够被虚拟机核208正确处理,虚拟机核208最终通过其多个层将这些操作传递到连接到存储系统106的真实HBA 104或NIC 101。假设SCSI支持的虚拟设备实现方案(尽管本领域普通技术人员将意识到使用其它硬件接口标准的选择),虚拟机核208的SCSI虚拟化层228从VMM层2241-224N接收数据传送与控制操作(SCSI命令的形式),并且将它们转换为虚拟机文件系统(VMFS)230理解的文件系统操作。SCSI虚拟化层228随后向VMFS 230发出这些文件系统操作。VMFS随后将这些文件系统操作转换为卷块操作,并且将卷块操作提供给逻辑卷管理器232。逻辑卷管理器(LVM)232典型地被实现为驱动器和传统操作系统文件系统层之间的中间层,并且支持可通过HBA 104核NIC 101访问的LUN的卷导向虚拟化和管理。如前所述,在逻辑卷管理器232的控制下,多个LUN(诸如LUN 156A-156M)可以被集中在一起并作为卷进行管理,用于提交给VMFS 230并由VMFS 230作为完整LUN使用。
VMFS 230通常通过前面讨论的LUN抽象来管理存储在存储系统106上的文件的创建、使用和删除。集群文件系统(例如VMFS 230)在2004年2月4日递交的专利申请序列号为10/773,613、名为“MULTIPLE CONCURRENT ACCESS TO A FILE SYSTEM”的美国专利申请中进行了描述。逻辑卷管理器232向基于LUN块操作的设备访问层234发出原始SCSI操作。设备访问层234发现存储系统106,并且将命令排队与调度策略应用于原始SCSI操作。设备驱动器236知晓与存储系统106接口的NIC 101和HBA 104的输入/输出接口,并将原始SCSI操作从设备访问层234发送到HBA 104或NIC 101,以转发给存储系统106。如前所述,存储系统106的存储系统管理器150接收原始SCSI操作(即,LUN块级别操作),并将它们解析成对其进行操作的盘阵列的轴体内的适当扩展区。
图3是图示出将图2计算机系统中的文件映射到盘阵列中的物理存储位置和数据存储单元的概念示图。如图3所示,虚拟盘222A被作为文件存储在VMFS 230管理的文件系统上。为了简化,后面的描述将假定虚拟盘是单个文件。然而,这些描述同样适用于包含多个文件的虚拟盘。此外,本发明的一个或多个实施例不仅可应用于一个或多个文件,还可应用于存储在同一LUN的非邻接位置上或不同LUN上的文件分段。
虚拟LUN文件被VMFS 230分配为逻辑地址空间(VMFS卷302,其由VMFS 230管理)中的一系列分段300A-300D。每个分段300A-300D是VMFS卷302中的连续区域,其中VMFS 302已由系统的管理员通过分配可从存储系统106的LUN 156A-156M集获得的一组LUN 156D-156G构建。如上文参考图1B和2所讨论的,文件分段的每个连续区域,其在所分配的一个LUN之上也是连续的,被视为可以被表示为<LUN ID,偏移量,长度>的LUN“块”304。如图3所示,对应于文件分段一部分的LUN块304可以取决于文件分段有多大以及该文件分段的哪部分实际上对应于所分配LUN的连续区域而具有不同长度。因此,文件可以具有一个或多个分段,并且分段可以由一个或多个LUN的一个或多个块构成。在图示的示例中,文件分段300A具有2个LUN块,文件分段300B具有3个LUN块,文件分段300C具有4个LUN块,并且文件分段300D具有1个LUN块。如图3所示,利用将文件分段300连接到LUN 156中的LUN块304的线,VMFS卷302中的文件分段被转换成LUN块,其中LUN 156代表LUN地址空间。当存储系统106是NAS设备时,文件分段在NAS设备内被管理。
通过将构成虚拟盘222A的所有文件分段300A-300D解析成它们对应LUN块的有序列表(对于图3的示例,供10个块),VMFS 230创建LUN块形式的“块列表”(例如,<LUN ID,偏移量,长度>的列表),其中“块列表”是虚拟盘222A的代表。如。前面参考图1所讨论的,存储系统106可以使用用于LUN 156D-156G的扩展区映射,将块列表中的每个LUN块解析成轴体152A-152N中的对应<轴体#,扩展区#>对(轴体-扩展区对)的列表。如图3所示,利用将LUN156中的LUN块304连接到轴体152中的扩展区的线,LUN块304被转换成轴体-扩展区对。轴体152A内的扩展区153在图3中被明确标记。在图3中其它扩展区152内的扩展区未被标记。本领域普通技术人员将认识到,尽管图3是参考其中虚拟盘被分配成文件分段的虚拟化系统进行讨论的,但是类似于图1B的非虚拟化系统也可以将文件存储在其文件系统中,该文件系统将类似分段类型呈现为LUN块。
如前文所讨论的,诸如存储系统106的存储设备典型地向与其通信的计算机系统呈现LUN块级别操作。例如,标准原始SCSI读或写操作需要LUN标识符、逻辑块地址和传送长度(即,类似于这里描述的<LUN ID,偏移量,长度>编码)。这样,为了执行对以VMFS 230文件系统级别管理的文件(诸如虚拟盘222A)的操作,标准原始SCSI操作需要被单独应用于虚拟盘222A块列表中的10个块的每个之上。计算机系统200与操作系统106的每个I/O通信(例如,原始SCSI操作的传输)会占用非常多的计算机资源,例如HBA队列中的SCSI命令、CPU周期和DMA缓冲器。
通过将LUN块列表级别原语呈现给与存储系统106通信的计算机系统可用的操作集,盘阵列厂商给予计算机系统将与盘阵列的资源密集型通信卸载到盘阵列自身的能力。盘阵列随后可以平衡其内部可施行的任何专有硬件优化。在一个实施例中,块列表级别原语可以被插入计算机系统和盘阵列之间的通信接口协议的早已存在标准命令中的命令描述符块(CDB)中,或者可以作为额外命令被添加到标准命令集中。例如,对于计算机系统和盘阵列之间SCSI支持的交互中,某些块列表级别原语可能被插入到SCSI的早已存在的WRITE BUFFER命令的CDB中,而其它块列表级别原语可能需要添加新SCSI级别命令(例如,具有其自己的CDB)以增加SCSI的当前命令。下面的讨论提出存储系统106支持的三种可能的块列表级别原语(即,用于清零文件的“零”,用于克隆文件的“克隆”以及用于删除文件的“删除”)。这三个块列表级别原语采用通用的形式:操作符(源块列表,目的地块列表,上下文标识符),并且可以用来将更大复合虚拟机操作的不可分组分卸载到盘阵列。然而,本领域普通技术人员将意识到,在不背离本发明精神和范围的前提下,盘阵列可以支持其它额外的和替代性的块列表级别原语。
图4A是用于根据本发明一个或多个实施例将诸如以VMFS 320文件系统级别存储的虚拟盘222A的文件清零的流程图。图4A的实施例设想基于SCSI的盘阵列支持被称为“零”的新块列表级别原语,该原语将上下文标识符(例如虚拟机标识符(VMID))和源块列表作为参数,并且可以被插入到标准SCSI WRITE BUFFER命令的CDB中。本领域普通技术人员将意识到,所使用的原语名称、原语所支持的参数个数、以及原语是被插入到当前SCSI命令的CDB中还是作为新SCSI级别命令一部分,是本领域技术人员可用的实施方案选择。
在步骤400,操作系统的VM核208内的文件系统接收将文件清零的请求。例如,在实现虚拟化的特定实施例中,VM核208中的VMFS 230可以接收将文件(例如虚拟盘222A)清零的请求(例如为维护VM隔离)。在步骤402,文件系统将文件解析成其组分文件分段,其中步骤402中的<文件id,偏移量,长度>+代表<文件id,偏移量,长度>文件分段的列表。文件id是区分与一个文件相关联的分段和与另一文件相关联的分段的唯一标识符。在步骤403,VM核208将文件分段解析成逻辑扩展区。在步骤404,VM核208将每个逻辑扩展区解析成对应的LUN块列表<LUN ID,偏移量,长度>+。在步骤406,VM核208将这些LUN块列表合并成源块列表,有序列表LUN块代表相关文件。在步骤408,VM核208生成包含源块列表的新零块列表原语,并将其插入标准SCSI命令WRITE BUFFER的CDB中。在步骤410,VM核208向盘阵列发出WRITE BUFFER命令。在判决步骤412,如果盘阵列支持新的零块列表原语,那么在步骤414,内部盘阵列机构将源块列表翻译成对应的轴体-扩展区,并将多个零写入代表相关文件的扩展区。
在判决步骤412,如果存储系统106不支持新零块列表原语,那么在步骤416,对于源块列表中的每个块<LUN ID,偏移量,长度>,VM核208生成SCSI WRITE SAME命令,其中写缓冲器中具有零值。在步骤418,VM核208向存储系统106发出WRITE SAME命令。在步骤420,存储系统106接收WRITE SAME命令,在内部将LUN块翻译成适当的轴体-扩展区,并将多个零写入代表该块的扩展区。在判决步骤422,VM核208确定是否应对源块列表中的另一块写入零,如果是,则步骤416、418和420被重复以生成并向存储系统106发出另一块的SCSIWRITE SAME命令。当所有块已被处理之后,VM核208进入步骤424,并且执行完成。本领域普通技术人员将认识到,VM核208的不同功能组件或层可以实现步骤400至410。例如,在实现虚拟化的实施例中,VM核208的VMFS 230层可以执行将文件解析成分段以及随后解析成逻辑扩展区的步骤402至403。逻辑卷管理器232可以执行生成LUN块操作的步骤404至406,VM核208的逻辑卷管理器228在步骤408可以将源块列表转换成原始SCSI WRITE BUFFER操作,并且VM核208的设备访问层234在步骤410最终将WRITE BUFFER操作传输到存储系统106。
图4B是图示出当执行零原语时轴体152中的扩展区的概念示图。当零原语被执行以清零文件分段300B时,存储系统106将轴体152中存储文件分段300B的扩展区清零。参考将LUN 156D和156E中的LUN块具体映射到轴体152的图3。零原语可以用来利用零来初始化存储系统106的大部分,从而维护VM隔离。在传统系统中,该初始化在CPU周期、存储器存取、DMA缓冲器、以及HBA队列中的SCSI命令方面会要求非常大量的主机资源。除了改善初始化的效率,零原语可以被存储系统106用来对基于硬件的精简配置(thin-provisioning)优化。特别地,当对应块尚未被分配时,存储系统106可以选择不在精简配置的LUN上写零。对于精简配置,存储系统106可以通过不分配用于零写入的扩展区来进行优化,并且还释放扩展区并将其标记为零。
图4B示出了与轴体152A、152B和152H内的分段300B相对应的被清零的扩展区401、405、407、409、411和413。元数据155被配置成存储如表1所示的扩展区映射,该扩展区映射包括虚拟LUN(假设每个轴体扩展区的尺寸为64K字节)至轴体-扩展区对的映射,其中s1、s2和s3每个可以对应于轴体152A-152N中的一个。尽管每个轴体扩展区被示为64K字节,但是其它尺寸可以用于轴体扩展区。通过更新元数据155,被清零的扩展区可以从其相应的扩展区映射去映射。元数据155被更新以指示那些扩展区被清零(不是必须写零)并且专有机构可以被用来使用后台进程对所请求的扩展区进行怠性清零,即使是对于非精简配置的LUN。例如,元数据155中的标志用于与分段300B相对应的每个轴体扩展区,该标志指示扩展区应当向用户被有效呈现为零。用于执行怠性清零的技术在2008年3月18日递交的专利申请序列号为12/050,805名为“INITIALIZING FILE DATA BLOCKS”的美国专利申请中进行了描述。与零原语相关的元数据还可以和配置信息存储在一起,配置信息将结合图8A、8B、8C、9A和9B进行详细描述。
表1:扩展区映射
LUN偏移量(K字节) <轴体,扩展区> 元数据/配置信息
0 <s2,e3> 清零,精简配置
64 <s1,e1> <s2,e1>的克隆
128 <s3,e1> 清零,精简配置
192 <s2,e3> 空闲
图5A是根据本发明的一个或多个实施例克隆诸如虚拟盘222A的文件的流程图,虚拟盘222A以VMFS 320文件系统级别进行存储,并且已以此级别被分段成不同的LUN块。在步骤500,操作系统核内的文件系统会接收将一个文件A拷贝或克隆到另一文件B的请求。在步骤502,文件系统将文件A和文件B解析成它们的组分文件分段,例如<文件id,偏移量,长度>文件分段的列表。在步骤503,VMFS 230将文件分段解析成逻辑扩展区。
在步骤504,逻辑卷管理器232将用于文件A和文件B中的每个的每个逻辑扩展区解析成它们对应的LUN块的列表<LUN ID,偏移量,长度>+。在步骤506,逻辑卷管理器232将这些LUN块的列表分别合并成用于文件A和文件B的源块列表和目的地块列表,其是代表相应文件的有序列表LUN块。在步骤508,VM核208生成包含源块列表和目的地块列表的新克隆块列表原语,并且将其插入标准SCSI命令WRITE BUFFER的CDB中。在步骤510,VM核208向存储系统106发出SCSI命令。在判决步骤512,如果存储系统106支持新的克隆块列表原语,那么在步骤514,内部盘阵列机构用源列表的扩展区列表来克隆目的地块列表的扩展区列表(包括利用存储系统106内的任何硬件优化,例如“写时拷贝”技术)。
然而,如果在判决步骤512,存储系统106不支持新克隆块列表原语,那么在步骤516,对于源块列表中的每个块<LUN ID,偏移量,长度>,VM核208生成带有目的地块列表的<LUN ID,偏移量,长度>的SCSI XCOPY命令。在步骤518,VM核508向存储系统106发出SCSIXCOPY命令。在步骤520,存储系统106接收XCOPY命令,在内部将LUN块翻译成适当的轴体-扩展区,并将源扩展区拷贝到代表该块的目的地扩展区。在判决步骤522,VM核208确定是否源块列表中有更多的块尚待克隆,如果是,那么步骤516和518被重复以生成并向存储系统106发出用于另一块的SCSI XCOPY命令。当所有块已被处理时,克隆操作完成。本领域普通技术人员将认识到,VM核208的不同功能组件或层可以实现步骤500至510。例如,在实现虚拟化的实施例中,VM核208的VMFS 230层可以执行生成LUN块操作的步骤502-503,VM核208的逻辑卷管理器228可以在步骤504-506创建源块列表和目的地块列表,并且在步骤508将其转换成原始SCSI XCOPY操作,并且VM核208的设备访问层234在步骤510最终将XCOPY操作传输到存储系统106。
图5B是图示出当执行克隆原语时轴体152中的扩展区的概念示图。当克隆原语被执行以将虚拟盘222A的文件分段300A克隆到虚拟盘222B的文件分段300E时,存储系统106将存储文件分段300A的轴体152A和152G中的扩展区501、505和507拷贝到存储文件分段300E的轴体152M中的扩展区509和511,参考用于将LUN 156D、156E和156G中的lUN块具体映射到轴体152的图3。在传统系统中,克隆在CPU周期、存储器存取、DMA缓冲器、以及HBA队列中的SCSI命令方面会要求非常大量的主机资源。被克隆的文件的尺寸可能有数千兆字节,使得克隆操作持续数分钟甚至数小时。除了改善初始化的效率,克隆原语可以被存储系统106利用,以使用专有机构(例如元数据155)来将克隆的目的地扩展区标记为源扩展区的复制品。例如,扩展区509可以被存储系统106在元数据155的扩展区映射中去映射,并且扩展区可以被替换为只读格式。
图6A是根据本发明一个或多个实施例删除诸如以VMFS 230文件系统级别存储的虚拟盘222A的文件的流程图。传统上,当文件从文件系统删除时,空间会被回收到卷的逻辑地址空间中,但是LUN块活跃度(liveness)不必传送到盘阵列。尽管文件块分配可以通过向先前未写区域的第一写入被隐性告知盘阵列,但是文件系统块的重新分配不能以类似的方式隐性告知盘阵列。因此,盘阵列不能通过利用与仅在计算机系统的文件系统级别上知晓的被删除文件有关的扩展区,来提供用于任务(例如精简配置、去复制(de-duplication)、镜像和复制)的盘管理优化技术。
类似于图4A的“零”原语实施例,图6A的实施例设想基于SCSI的盘阵列支持被称为“删除”的新块列表级别原语,该原语将上下文标识符(例如虚拟机标识符(VMID))和源块列表作为参数,并且可以被插入到标准SCSI WRITE BUFFER命令的CDB中。在步骤600,操作系统的核内的文件系统接收删除文件的请求。例如,在实现虚拟化的特定实施例中,VM核208中的VMFS 230可以接收删除诸如虚拟盘222A的文件的请求。在步骤602,文件系统将文件解析成其组分文件分段。在步骤603,VMFS 230将文件分段解析成逻辑扩展区,并且在步骤604,逻辑卷管理器232将每个文件分段解析成它们对应的LUN块的列表<LUN ID,偏移量,长度>+。在步骤606,逻辑卷管理器232将这些LUN块的列表合并成源块列表,有序的列表LUN块代表相关文件。在步骤608,VM核208生成包含源块列表的新删除块列表原语,并将其插入标准SCSI命令WRITE BUFFER的CDB中。在步骤610,VM核208向盘阵列发出WRITE BUFFER命令。在步骤612,内部盘阵列机构能够将源块列表翻译成对应的轴体-扩展区,并将它们标记成删除的或更新元数据155以指示扩展区应被返回到空闲池。
图6B是图示出当执行删除原语时轴体152中的扩展区的概念示图。参考将LUN156D和156E中的LUN块具体映射到轴体152的图3。当文件被从硬件经精简配置的虚拟盘A222A上的VMFS卷删除时,其中该文件对应于存储系统106中的扩展区605、607和609以及分段300A,存储系统106可以将删除的扩展区从元数据155中存储的扩展区映射去映射,并将它们返回到空闲池。诸如去映射删除的扩展区的内部优化技术可以由存储系统106使用,用于诸如精简配置、去复制、镜像和复制之类的任务。此外,LUN地址空间的去映射区域可以指向专有表达,例如零-扩展区表达。在没有删除原语的情况下,经精简配置的LUN将不必要地使用来自存储池的三个扩展区(以代替扩展区605、607和609),其将不能由文件系统使用,直到下次文件系统地址空间的那部分被分配给文件的时候。
通过将诸如清零、克隆和删除的文件管理级别操作呈现给与基于NAS的存储设备通信的计算机系统可用的文件操作集,存储装置厂商给予计算机系统将与文件存储装置的资源密集型通信卸载到NAS设备自身的能力,NAS设备随后可以平衡NAS设备内部可用的任何专有硬件优化。在一个实施例中,文件级别原语可以通过使用计算机系统和NAS设备之间的通信接口协议的早已存在的标准命令作为(I/O控制)命令进行访问,或者可以作为额外命令被添加到标准命令集中。下面的讨论提出基于NAS的存储系统106支持的三种可能的文件级别原语(即,用于清零文件的“零”,用于克隆文件的“克隆”以及用于删除文件的“删除”)。这三个文件级别原语可以用来将较大复合虚拟机操作的不可分组分卸载到存储系统。然而,本领域普通技术人员将意识到,在不背离本发明精神和范围的前提下,存储系统106可以支持其它额外的和替代性的块列表级别原语。
图7A是根据本发明一个或多个实施例使用文件级别原语将存储在NAS设备中的文件清零的流程图。图7A的实施例设想NAS设备支持被称作ZERO_BLOCKS的新文件级别原语,该原语将源文件的开放NFS/CIFS句柄(文件句柄)、偏移量和长度作为参数,并且可以作为ioctl命令发送。本领域普通技术人员将认识到,所使用的原语名称和原语所支持的参数个数是本领域技术人员可用的实施方案选择。在步骤702,VM核208中的VMFS 230接收将文件id、偏移量和长度规定的文件分段清零的请求。在步骤706,VM核208确定用于源文件的文件句柄。在步骤708,VM核208准备ZERO_BLOCKS ioctl命令,并且在步骤710,VM核208向NAS设备发出ioctl命令。如果在判决步骤712,NAS设备支持新ZERO_BLOCKS,那么在步骤714,内部NAS设备机构能够将零写入对应的轴体-扩展区,并将零写入代表相关文件的扩展区。否则,在步骤716,VM核208通过数据搬运器(mover)驱动器发出管线式I/O以使用传统机构写零。
本领域普通技术人员将认识到,核的不同功能组件或层可以实现步骤702至710。传统NAS设备可以被配置成将零写入块以执行管理操作,然而,该功能对NAS设备的用户(例如VM 212)不可用。在没有ZERO_BLOCKS命令的情况下,VM 212将零传送到NAS设备以将零写入与文件相对应的块。在一些情形中,例如当使用了两个万亿字节虚拟盘时,与为将存储操作从计算机系统200下载到NAS设备(例如,存储系统106)使用ZERO_BLOCKS命令传送20字节的参数相比,需要向NAS设备传送多达两万亿字节的零。此外,NAS设备提供的管理优化也可以通过ZERO_BLOCKS命令来平衡。例如,特定NAS设备可以被配置成在接收到命令时不存储零。
图7B是根据本发明一个或多个实施例使用文件级别原语克隆存储在NAS设备中的文件的流程图。图7B的实施例设想NAS设备支持被称为CLONE_BLOCKS的新文件级别原语,该原语将源文件和目的地文件的开放NFS/CIFS句柄(文件句柄)、偏移量和长度作为参数,并且可以作为ioctl命令发送。本领域普通技术人员将认识到,所使用的原语名称和原语所支持的参数个数是本领域技术人员可用的实施方案选择。在步骤722,VM核208中的VMFS 230接收将文件分段A克隆到分段B的请求,其中每个分段由文件id、偏移量和长度规定。在步骤726,VM核208确定用于文件A的文件句柄。在步骤728,VM核208准备CLONE_BLOCKS ioctl命令,并且在步骤730,VM核208向NAS设备发出ioctl命令。如果在判决步骤732,NAS设备支持新的CLONE_BLOCKS,那么在步骤734,内部盘阵列机构能够将文件分段A的对应轴体-扩展区拷贝到代表文件分段B的扩展区(包括使用NAS设备支持的用于诸如“写时拷贝”技术的管理操作的任何硬件优化)。否则,在步骤736,VM核208通过数据搬运器驱动器发出I/O以使用传统机构拷贝文件。
图7C是根据本发明一个或多个实施例使用文件级别原语删除存储在NAS设备中的文件分段的流程图。当文件从文件系统删除时,空间会被回收到逻辑地址空间卷中,并且文件删除操作由NAS设备上的存储系统管理器执行。在传统系统中,当应用释放文件的子集时,例如如果VM内部的客户OS删除其文件系统内的若干文件时,NAS设备将不知道用来存储文件子集的块可以被重新分配。当使用删除原语时,客户OS启动的删除将翻译成文件分段的删除,其随后通过DELETE_BLOCKS原语被传送到NAS设备。当使用新原语时,NAS设备通过使用与仅在计算机系统的文件系统级别上知晓的被删除文件有关的扩展区,来提供用于任务(例如精简配置、去复制(de-duplication)、镜像和复制)的盘管理优化技术。
与ZERO_BLOCKS和CLONE_BLOCKS原语类似,图7C的实施例设想NAS设备支持被称为DELETE_BLOCKS的新文件级别原语,该原语将文件句柄、偏移量和长度作为参数,并且可以作为ioctl命令发送。本领域普通技术人员将认识到,所使用的原语名称和原语所支持的参数个数是本领域技术人员可用的实施方案选择。在步骤722,VM核208中的VMFS 230接收删除文件id、偏移量和长度所规定的分段的请求。在步骤746,VM核208确定用于文件的文件句柄。在步骤748,VM核208准备DELETE_BLOCKS ioctl命令,并且在步骤750,VM核208向NAS设备发出ioctl命令。在步骤752,内部盘专利机构能够删除文件的对应轴体-扩展区,并将该扩展区记录为是由文件系统释放的,从而它们可以在用于诸如精简配置、去复制、镜像和复制之类任务的内部优化技术中使用。例如,在LUN可以被精简配置的实施例中,通过前述“删除”块列表原语删除文件分段,使得NAS设备能够从它们关联的经精简配置的LUN的扩展区映射中将与文件分段相关联的扩展区去映射,从而将去映射的扩展区返回到空闲扩展区池。
本领域普通技术人员将认识到,前述讨论以及图4A、4B、5A、5B、6A、6B、7A、7B和7C仅仅是示例性的,在不背离本发明精神和范围的前提下,可以实现替代性的块列表和文件级别原语。此外,尽管这里的讨论集中于传输块列表级别原语,其中块列表是文件系统上的整个文件的代表,但是本领域普通技术人员将认识到,替代性实施例可以使用更小的块列表,例如文件分段级别上的块列表。例如,对于将图3中的虚拟盘222A清零的情形,与包含块列表的零块列表原语的单个实例相比(其中块列表包括用于4个文件分段300A-300D的四个较小块列表的合并),替代性文件分段块列表级别实施例将需要向存储系统106发出零块列表原语的4个实例(即,每个零块列表原语用于文件分段300A-300D中的一个)。
上面讨论的原语可以用来构造在文件级别操作的硬件辅助的数据保护(例如,快照、克隆、镜像和复制)和其它文件管理命令,并且可以平衡盘阵列的内部性能。虚拟盘的快照是是虚拟盘给定时点存在的拷贝(即虚拟盘的在前版本)。诸如图2的虚拟化系统可以使用图4A、4B、5A、5B、6A、6B、7A、7B和7C的零原语来(a)克隆用于急切清零(eager-zeroed)虚拟盘的操作,(b)初始化经精简配置的虚拟盘中的新文件块,(c)初始化清零虚拟盘的先前未写的块,以及(d)利用盘阵列的基于硬件的精简配置来整合经精简配置的以及清零的虚拟盘格式。类似地,如图5A中描述的XCOPY原语内的嵌入式块列表以及图7B的CLONE_BLOCKS文件原语可以用来(a)即时配置虚拟盘以及(b)为虚拟盘拍快照。图6和7C的删除原语可以用来(a)销毁或重新格式化空间优化(精简配置或去复制)或保护(镜像、复制或快照)卷上的文件,(b)删除空间优化或保护卷上的虚拟盘快照或虚拟盘,以及(c)利用盘阵列的基于硬件的精简配置来整合经精简配置的以及清零的虚拟盘格式。
例如,与在不结合使用块列表和WRITE_BUFFER或XCOPY的情况下的数分钟和数小时相比,使用块列表并结合图5A和5B中讨论的XCOPY SCSI操作或图7B中讨论的CLONE_BLOCKS命令使得虚拟化系统能够在几微秒或几秒的量级上提供虚拟盘的即时配置。即时配置涉及在创建或配置计算机系统内的新虚拟机的过程期间进行模板虚拟盘的完整拷贝。由于虚拟盘表现为文件系统上的非常大文件,执行LUN块级别上的连续标准SCSI READ和WRITE操作,包括使用计算机系统内的读和写缓冲器,占用非常多的时间和资源。通过将文件转换为块列表并使用WRITE_BUFFER或XCOPY命令,执行克隆的努力可以卸载到存储系统的硬件自身。
类似地,图6A、6B和7C的删除原语帮助管理虚拟化系统内经精简配置的虚拟盘。与在预期将来需要的前提下分配虚拟盘的存储空间不同,经精简配置的虚拟盘被分配用于其当前需求的最小数量的存储空间,并且当虚拟盘要求时从空闲空间池动态提供额外的空间。如参考图6A、6B和7C所讨论的,因为删除块列表原语或DELETE_BLOCKS命令释放存储系统中的扩展区,并且使得存储系统控制器能够将该释放的扩展区从先前使用这些扩展区的LUN的扩展区映射中去映射,因此这些扩展区可以被返回到空闲扩展区池,该空闲扩展区池在其它经精简配置的虚拟盘需要额外存储空间时被所述其它虚拟盘利用。
这里参考图2提供的详细说明涉及虚拟化计算机系统。但是,本领域普通技术人员将认识到,即使非虚拟化计算机系统也可以从这种块列表级别原语获益-存在于任何计算机系统的文件系统级别上的任何文件(即,不必是虚拟LUN的代表)都可利用这种块列表级别原语。类似地,尽管前述讨论利用了SCSI接口作为盘阵列和计算机系统之间的协议通信的主示例,但是本领域普通技术人员将意识到,在不背离本发明精神和范围的前提下,可以采用其它通信协议。特别地,如结合图7A、7B和7C所描述的,通过诸如NFS的协议提供对存储装置的文件级别访问的NAS设备(与支持SCSI的SAN盘阵列相对比),与将块列表原语插入早已存在的SCSI命令的CDB中不同,可以使用被开发作为用于NFS的标准ioctl操作的ioctl控制功能的功能性文件原语。
向第三方服务器卸载存储操作
图8A是可以实施本发明一个或多个实施例的虚拟化计算机系统拓扑结构的另一功能框图。如前面结合图1A所描述的,计算机系统可以包括VM核208和虚拟中心应用180。根据本发明的一个或多个实施例,虚拟中心应用180在补充配置信息(SCI)802中存储由上下文标识符标识的VM专用存储元数据。SCI 802可以由客户通过用户界面引用上下文标识符进行查询和编辑。第三方服务器190是服务器机器,其也存储由上下文标识符标识的VM专用存储元数据(属性和策略),并且包括用来管理VM存储操作的厂商专用扩展件822或插件。虚拟中心应用180可以使用符合SNIA(存储网络工业协会)的概述文件(或厂商专用API)与第三方服务器190通信,以便集中报告并设置用于VM 212的存储元数据。扩展件822将VM专用存储元数据翻译成被用来更新存储系统106的元数据的配置信息812。扩展件822还可以被配置成将VM专用存储元数据翻译成被用来更新NAS设备185的元数据的配置信息807。配置信息812可以被存储为元数据155的一部分,并且包含更新元数据155所需的信息以使存储设备能够执行规定的存储操作。例如,扩展件822生成用于更新元数据155的配置信息812或807,以使存储设备能够执行诸如镜像和复制之类的复合存储操作,如结合图8B和8C所描述的那样。
当基于硬件的存储操作将在VM组件(例如虚拟盘)上执行的时候,该操作的上下文作为配置信息812或807通过第三方服务器190被分别传送到存储系统106或NAS设备185。例如,当设立用于VM 212的硬件精简配置的虚拟盘时(参考图2),存储系统106被指示将与该虚拟盘相关联的上下文标识符映射到指示该VM 212已进行精简配置的元数据,并在配置信息812中存储精简配置属性。扩展件822接收用于复合存储操作的SCI 802,并且生成提供给存储系统106的配置信息,从而存储系统106将知道与上下文标识符相关联的文件是经精简配置的。与VM 212相对应的先前未写入的扩展区可以在后台或在创建时被去映射。此外,作为零操作进入存储系统106的零写入可以被存储系统106无声丢弃。如果没有配置信息812或807,存储系统106或NAS设备185将不知道VM 212是经精简配置的。
诸如打开、关闭、删除之类的不需要数据移动的基本操作由VM核208执行。存储操作的数据移动部分(例如拷贝),在使用厂商专用扩展件822或插件的第三方服务器190的控制下,被从VM核208卸载到存储系统106,如结合图8B和8C所描述的那样。此外,诸如零、克隆和删除的原语每个可以运送作为它们有效载荷一部分的上下文标识符,从而操作可以立即映射到管理请求该操作的上下文的属性。此外,原语还可以携带基于操作的指示符(directive)。例如,原语可以包括对给定文件分段集进行完全克隆(急切拷贝块)而非快速克隆(写时拷贝块)的指示符。
图8B是根据本发明一个或多个实施例使用第三方服务器190卸载复合存储操作(例如镜像和复制)的流程图。在步骤822,用户通过虚拟中心应用180或命令行启动复合存储操作。在步骤824,虚拟中心应用180通过VM核对VMFS卷302执行元数据操作。例如,当规定了复制复合操作时,由虚拟中心应用180在不同数据中心中建立第二虚拟盘集。当执行“镜像”复合存储操作时,虚拟中心应用180在相同数据中心内建立第二虚拟盘集。在步骤826,VM核208结合虚拟中心应用180从VM核208获得位置信息,例如文件句柄(对于存储在NAS设备185上的文件)或块列表(对于存储在存储系统106上的文件),并且用操作专用配置信息(例如,虚拟盘是另一虚拟盘的拷贝(镜像或复制))更新SCI 802。
在步骤828,第三方服务器190从VM核208接收包括在SCI 802中的操作专用配置信息。第三方服务器190将操作专用配置信息转换成厂商专用格式,以生成复合存储操作所需的配置信息807或812,并且通过带外路径188和183将其分别提供给例如NAS设备185或存储系统106之类的存储设备。或者,存储专用配置信息可以由存储设备转换以产生配置信息807或812。配置信息可以包括在扩展区映射中。
当执行镜像时,配置信息指示被镜像的文件和镜像文件之间存在关系,并且可以指示镜像是同步的还是异步的以及服务质量(QOS)级别。类似地,对于复制,配置信息可以指示是否应当采用压缩或加密。配置信息由存储设备使用以保持镜像文件在被镜像的文件被修改(例如,写入、拍快照、回卷(roll back)等)时被更新。存储系统106或NAS设备185将分别基于配置信息812或807将对被镜像(或被复制)文件的写入反映到镜像(或复制)文件上。对复制扩展区的写入被存储系统106反映到另一数据中心中的存储系统106处。重要的是,数据的传送是由存储系统而非第三方服务器190、虚拟中心应用180或VM核208执行的。
在步骤830,第三方服务器190控制存储设备对复合存储操作的执行,以便将存储操作从VM核208卸载。例如,第三方服务器190发出命令以通过创建克隆来镜像或复制文件。
图8C是根据本发明一个或多个实施例使用第三方服务器190执行镜像操作的流程图。在步骤832,虚拟中心应用180接收镜像命令,镜像(F1,F2),其中文件F1被镜像到新文件F2。用于新文件F2的虚拟盘222由VM核208在虚拟机执行空间210中创建。虚拟应用中心180从VM核208获得用于F2的块列表(或文件句柄)。
在存储设备上创建新文件F2是完成镜像操作所必需的。还需要(通过第三方服务器190)向虚拟中心应用180和存储设备提供配置信息,从而存储系统106或NAS设备185知道F2是F1的镜像,进而存储设备能够将F2作为镜像文件正确维护。因此,在步骤838,第三方服务器190向存储设备提供配置信息,如前面结合图8B所描述的那样。并且,不需要要求VM核208进行任何动作,虚拟中心应用180通过第三方服务器190建立映射。新文件F2被创建,F1被拷贝到F2,并且虚拟中心应用180通过第三方服务器190向存储设备提供配置信息,该配置信息指示F2是F1的镜像。
由于文件F2是文件F1的镜像,所有对F1的写入也由存储设备反映到F2。在步骤840,VM核208接收对文件F1拍快照的命令。存储设备为F1创建了重做(redo)日志。由于虚拟中心应用180被提供了指示F2是F1镜像的配置信息,所以响应于来自虚拟中心应用180的指令,VM核208也为F2创建了重做日志。虚拟中心应用180随后建立F2的重做日志,其是F1的重做日志的镜像。当数据通过虚拟机文件系统被写入F1时,在F1的重做日志文件中捕获数据写,并且将其镜像到F2的重做日志文件。虚拟中心应用180将F1数据写的块列表发送到第三方服务器190,第三方服务器190执行对F1和F2的重做日志文件以及F2的镜像。
在步骤842,虚拟中心应用180接收将F1回卷到最近快照的命令。虚拟中心应用180和VM核208执行F1和F2的回卷(rollback)命令。如果虚拟中心应用180和VM核208尚未创建重做日志,那么在步骤842完成后,F2将不是F1的准确镜像。因为第三方服务器190向存储设备提供配置信息812或807,所以存储设备将F2正确维护F1的镜像,包括创建并维护重做日志。如果配置信息未被提供给存储设备,那么VM核208承担创建并维护F2和重做日志的任务。第三方服务器190有利地允许VM核208或虚拟中心应用180分别控制存储设备(NAS设备185和存储设备106)的NAS和SAN能力,以便从VM核208卸载数据的移动。
在步骤844,虚拟中心应用180接收使F2与F1破裂(fracture)的命令。第三方服务器190更新用于存储设备的配置信息,以指示文件F2不再是文件F1的镜像,并且F2重做日志不再是F1重做日志的镜像。虚拟中心应用180通过VM核208删除F2重做日志。在步骤846,虚拟中心应用180接收删除文件F2的命令。VM核208从VMFS230删除F2文件,并且第三方服务器190从存储设备删除F2文件。先前描述的删除原语可以由第三方服务器190用来删除F2文件,并产生更新的配置信息807或812。虚拟中心应用180在破裂或删除操作时还将对VM 212的配置信息进行相应的改变,以便将受影响的文件与VM212的当前状态分离。
利用第三方服务器190将存储操作的数据移动部分(例如拷贝)从VM核208下载到存储设备,改善了主机系统的效率。此外,第三方服务器190向存储设备传送与复合存储操作相关联的配置信息,使得能够将存储设备的能力整合到虚拟机工作流程中。
向交换器卸载存储操作
交换器197(图9A中示出)可以通过翻译原语(例如,拷贝和克隆)并提供给不支持新块列表原语的存储设备,用来从VM核208卸载存储操作。例如,当物理存储设备未被配置成直接执行块列表原语时,诸如拷贝和克隆的新原语可以由交换器197翻译,进而由物理存储设备执行。该翻译将存储操作的数据移动部分从文件系统卸载。通过交换器197卸载存储操作的另一好处是,交换器197对由不同厂商提供的存储系统起作用,因而允许与现有和全异存储系统的互用性。交换器197可以执行翻译,或者诸如另一计算机系统100或200的虚拟目标可以由交换器建立以执行翻译。此外,基于VM的策略可以被规定,并且交换器197可以被配置成实施这些策略。示例策略包括RAID级别、快照频率、数据保护、QOS(服务质量)、精简配置等。当存储操作被执行时,策略完成对数据移动的处理,并且可以被包括在SCI802、配置信息807或配置信息812之中。
图9A是可以实施本发明一个或多个实施例的图8A虚拟化计算机系统拓扑结构的一部分的功能框图。交换器197包括一个或多个数据路径处理器DPP 901和一个或多个控制路径处理器CPP 902。每个DPP 901将在交换器197的一个组构端口(fabric port)处接收到的协议分组900路由到交换器197的另一组构端口,以在源和目标目的地之间路由请求(包括存储请求)。每个CPP 902被配置成提供智能处理,包括实现策略以及翻译目的地存储设备(例如存储系统106或NAS设备185)不能识别的块列表原语,进而从VM核208卸载存储操作的数据移动部分。控制单元903被配置成确定接收到的分组是由DPP 901处理还是由CPP902处理。
当CPP 902不包括对翻译特定块列表原语的支持的时候,发出请求的计算机系统100或200中的VMFS 230或LVM 232指示交换器197创建具有唯一LUN标识符的虚拟目标,例如虚拟目标服务器920。CPP 902随后被编程以与虚拟目标服务器920通信。虚拟目标服务器920被配置成代理主机,该代理主机能够翻译块列表原语以由存储设备执行。CPP 902将带有其未被配置能翻译的块列表原语的分组路由到虚拟目标服务器920。虚拟目标服务器920翻译该块列表原语以由存储设备执行,从而从VM核208卸载存储操作的数据移动部分。当使用零块列表原语时,对于源块列表中的每个块<LUN ID,偏移量,长度>,CPP 902或虚拟目标服务器920可以将零块列表原语翻译成具有零值的SCSI WRITE SAME命令,如前文结合图4A所描述的那样。当使用克隆块列表原语时,对于源块列表中的每个块<LUN ID,偏移量,长度>,CPP 902或虚拟目标服务器920可以将克隆块列表原语翻译成SCSI XCOPY命令,如前文结合图5A描述的那样。
图9B是根据本发明一个或多个实施例向交换器197卸载存储操作的流程图。在步骤910,交换器197接收包括存储操作的协议分组。在判决步骤915,控制单元903确定为存储操作规定的块列表原语是否是简单操作,例如可以由DPP 901处理的读或写存储操作。
如果协议分组中包括的操作是简单操作,那么在步骤935,DPP 901处理协议分组。否则,在判决步骤920,CPP 902确定其是否被配置成可将块列表原语翻译成可由存储设备执行的命令。如果CPP 902未被配置成可翻译块列表原语,那么在步骤940,CPP 902将协议分组路由到虚拟目标服务器920以进行翻译。在步骤945,虚拟目标服务器920接收包括块列表原语的协议分组,将块列表原语翻译成用于由目标存储设备执行的命令,并且将具有经翻译的块列表原语的协议分组返回到交换器197,用以路由到目标目的地。DPP 901将处理分组并将其路由到目标目的地。
返回到步骤920,如果CPP 902确定其被配置成可翻译块列表原语,那么在步骤925,CPP 902将块列表原语翻译成用于由目标存储设备执行的命令。在步骤930,CPP 902(或在步骤935处理协议分组的DPP 901)将协议分组输出到目标目的地,例如,存储设备。CPP 902或虚拟目标服务器920将块列表原语翻译成命令的操作,将存储操作从VM核208卸载。
在图9B所示流程图之外,主机系统确定存储设备是否被配置成执行块列表原语。当存储设备未被配置成执行该原语时,主机系统提供包括块列表原语的协议分组用于进行翻译。如果交换器197不能翻译原语,那么交换器197向主机系统报告错误,并且主机系统处理翻译。
本发明的一个或多个实施例可以被实现为结合计算机系统使用的程序产品。程序产品的程序定义实施例(包括这里描述的方法)的功能,并且可以包含在多种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(1)永久存储信息的不可写存储介质(例如,计算机内的只读存储器设备,例如可由CD-ROM驱动读取的CD-ROM盘、闪存、ROM芯片或任何类型的固态非易失性半导体存储器);以及存储可改信息的可写存储介质(例如盘驱动内的软盘或硬盘驱动或任何类型的固态随机存取半导体存储器)。
已经参考具体实施例描述了本发明。然而,本领域技术人员将了解,在不背离权利要求限定的本发明的较宽泛精神和范围的前提下,可以对其作出多种修改和改变。因此,前述说明和附图应看作是示例性的,而无限制意义。

Claims (12)

1.一种在包括连接到存储系统的主机计算机的计算机系统中执行存储操作的方法,所述存储系统具有被表示为逻辑存储单元的存储设备,所述方法特征在于:
从所述主机计算机向所述存储系统发出单个指令,所述单个指令标识块列表,所述块列表对应于被存储在一个或多个逻辑存储单元中的至少两个非邻接位置中的虚拟盘;以及
由所述存储系统确定所述单个指令是否被所述存储系统支持;
响应于确定所述单个指令不被所述存储系统支持,
由被配置在所述主机计算机中的虚拟机生成针对所述块列表中的块的指定命令;以及
从所述虚拟机向所述存储系统发送所述指定命令,以便将所述块列表中的块转换成盘区,以及
响应于确定所述单个指令被所述存储系统支持,
在所述存储系统处对所述虚拟盘执行所述单个指令,直到所述单个指令的完成,所述执行独立于所述主机计算机。
2.根据权利要求1所述的方法,其中所述单个指令是清零、克隆和删除中的一个。
3.根据权利要求1所述的方法,其中每个块使用对应于逻辑存储单元的逻辑单元号、偏移值和长度,来标识所述逻辑存储单元中的存储位置的连续区域。
4.一种计算机系统,包括:
主机计算机;以及
存储系统,所述存储系统连接到所述主机计算机,其具有对所述主机计算机呈现为一个或多个逻辑存储单元的存储设备,
其特征在于:
所述主机计算机具有在其中配置的虚拟机;
其中从所述主机计算机到所述存储系统的数据流包括对虚拟盘执行存储操作的指令,并且所述指令标识对应于所述虚拟盘并且被存储在所述一个或多个逻辑存储单元中的至少两个非邻接位置中的块列表,以及
其中所述存储系统被配置为:
确定所述指令是否被所述存储系统支持;
响应于确定所述指令不被所述存储系统支持,从所述虚拟机接收针对所述块列表中的块的指定命令,以便将所述块列表中的块转换成盘区,以及
响应于确定所述指令被所述存储系统支持,在所述存储系统处上执行所述指令,直到所述指令的完成,所述执行独立于所述主机计算机。
5.根据权利要求4所述的计算机系统,其中所述存储操作包括清零、克隆和删除中的一个。
6.根据权利要求4所述的计算机系统,其中每个块使用对应于逻辑存储单元的逻辑单元号、偏移值和长度,来标识所述逻辑存储单元中的存储位置的连续区域。
7.一种存储系统,所述存储系统包括:
多个存储设备;
至少一个存储处理器,
其特征在于:
所述存储系统用于虚拟机,所述虚拟机具有通过虚拟机文件系统管理的文件;
所述多个存储设备存储所述虚拟机的所述文件;
所述至少一个存储处理器被编程用于:
(i)将所述存储设备管理为一个或多个逻辑存储单元,其中所述逻辑存储单元中的每个逻辑存储单元由逻辑单元号标识并具有可寻址的块;
(ii)从所述虚拟机文件系统接收指令,其中所述指令包含多个输入参数并且标识要对所述输入参数执行的操作,每个输入参数寻址逻辑存储单元中的块的连续区域,并且所述多个输入参数定义虚拟盘的块,所述虚拟盘被存储在所述一个或多个逻辑存储单元中的至少两个非邻接位置中;
(iii)确定所述指令是否被所述存储系统支持;
(iv)响应于确定所述指令不被所述存储系统支持,从所述虚拟机接收针对块列表中的块的指定命令,以便将所述块列表中的块转换成盘区,以及
(v)响应于确定所述指令被所述存储系统支持,执行所述指令。
8.根据权利要求7所述的存储系统,其中所述操作包括清零、克隆和删除中的一个。
9.根据权利要求7所述的存储系统,其中所述指令包括用于将数据块从源块列表克隆到目的地块列表的指令的ID,并且所述指令进一步包括定义所述源块列表和所述目的地块列表的参数。
10.一种连接到存储系统的计算机系统,所述存储系统具有被表示为一个或多个逻辑存储单元的存储设备,所述计算机系统包括:
接口,存储指令和存储数据通过所述接口被传输到所述存储系统;以及
处理器,其被编程用于:
向所述存储系统发出指令,其中所述指令包含多个输入参数并且标识要对所述输入参数执行的操作,每个输入参数寻址逻辑存储单元中的块的连续区域,并且所述多个输入参数定义虚拟盘的块,所述虚拟盘被存储在所述一个或多个逻辑存储单元中的至少两个非邻接位置中;以及
响应于接收到所述指令不被所述存储系统支持的确定,
由被配置在所述计算机系统中的虚拟机生成针对块列表中的块的指定命令;以及
从所述虚拟机向所述存储系统发送所述指定命令,以便将所述块列表中的块转换成盘区;并且
其中所述计算机系统具有用于虚拟机的文件系统。
11.根据权利要求10所述的计算机系统,其中所述操作包括清零、克隆和删除中的一个。
12.根据权利要求10所述的计算机系统,其中所述指令包括用于将数据块从源块列表克隆到目的地块列表的指令的ID,并且所述指令进一步包括定义所述源块列表和所述目的地块列表的参数。
CN201710049036.2A 2008-05-29 2009-03-27 向存储硬件的存储操作卸载 Active CN107122127B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/129,323 US8745336B2 (en) 2008-05-29 2008-05-29 Offloading storage operations to storage hardware
US12/129,323 2008-05-29
CN200980000189A CN101689148A (zh) 2008-05-29 2009-03-27 向存储硬件的存储操作卸载

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200980000189A Division CN101689148A (zh) 2008-05-29 2009-03-27 向存储硬件的存储操作卸载

Publications (2)

Publication Number Publication Date
CN107122127A CN107122127A (zh) 2017-09-01
CN107122127B true CN107122127B (zh) 2020-03-10

Family

ID=41377467

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200980000189A Pending CN101689148A (zh) 2008-05-29 2009-03-27 向存储硬件的存储操作卸载
CN201710049036.2A Active CN107122127B (zh) 2008-05-29 2009-03-27 向存储硬件的存储操作卸载

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN200980000189A Pending CN101689148A (zh) 2008-05-29 2009-03-27 向存储硬件的存储操作卸载

Country Status (3)

Country Link
US (1) US8745336B2 (zh)
CN (2) CN101689148A (zh)
WO (1) WO2009146001A1 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621573B2 (en) 2007-08-28 2013-12-31 Cisco Technology, Inc. Highly scalable application network appliances with virtualized services
US9454368B2 (en) 2009-01-21 2016-09-27 Vmware, Inc. Data mover permitting data transfer without transferring data between application and operating system
US9134922B2 (en) 2009-03-12 2015-09-15 Vmware, Inc. System and method for allocating datastores for virtual machines
US8694563B1 (en) * 2009-04-18 2014-04-08 Hewlett-Packard Development Company, L.P. Space recovery for thin-provisioned storage volumes
US8527749B2 (en) * 2009-11-11 2013-09-03 International Business Machines Corporation User device, computer program product and computer system for system for secure network storage
WO2011083505A1 (en) * 2010-01-05 2011-07-14 Hitachi, Ltd. Method and server system for testing and executing migration between virtual servers
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US8725692B1 (en) * 2010-12-16 2014-05-13 Emc Corporation Replication of xcopy command
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
JP5712713B2 (ja) * 2011-03-18 2015-05-07 富士通株式会社 制御装置、制御方法およびストレージ装置
US9058120B2 (en) * 2011-11-09 2015-06-16 International Business Machines Corporation Setting optimal space allocation policy for creating dependent snapshots to enhance application write performance and reduce resource usage
US8930568B1 (en) * 2011-12-20 2015-01-06 Emc Corporation Method and apparatus for enabling access to storage
US8977826B1 (en) * 2011-12-28 2015-03-10 Emc Corporation Extent commands in replication
US9817582B2 (en) * 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US8868877B2 (en) * 2012-04-11 2014-10-21 Dell Products, Lp Creating encrypted storage volumes based on thin-provisioning mode information
US20140082128A1 (en) * 2012-09-18 2014-03-20 Netapp, Inc. Dynamic detection and selection of file servers in a caching application or system
US9177177B1 (en) * 2012-10-04 2015-11-03 Symantec Corporation Systems and methods for securing storage space
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
US9003135B2 (en) 2013-01-15 2015-04-07 International Business Machines Corporation Efficient allocation and reclamation of thin-provisioned storage
US9467294B2 (en) 2013-02-01 2016-10-11 Symbolic Io Corporation Methods and systems for storing and retrieving data
US9628108B2 (en) 2013-02-01 2017-04-18 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9817728B2 (en) 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US9304703B1 (en) 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US10133636B2 (en) * 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US9983992B2 (en) 2013-04-30 2018-05-29 WMware Inc. Trim support for a solid-state drive in a virtualized environment
US9405479B1 (en) * 2013-08-26 2016-08-02 Western Digital Technologies, Inc. Faster file compression using sliding compression window and backward compound pointers
US20150074368A1 (en) * 2013-09-06 2015-03-12 International Business Machines Corporation Thin provisioning storage devices in connection with secure delete operations
CN103744625B (zh) * 2014-01-14 2017-05-10 浪潮电子信息产业股份有限公司 一种虚拟化应用中拷贝磁盘数据的方法
CN103902354A (zh) * 2014-04-11 2014-07-02 浪潮电子信息产业股份有限公司 一种虚拟化应用中快速初始化磁盘的方法
CN104035887B (zh) * 2014-05-22 2017-10-31 中国科学院计算技术研究所 一种基于精简配置系统的块设备缓存装置及其方法
US9509773B2 (en) * 2014-09-10 2016-11-29 Futurewei Technologies, Inc. Array-based computations on a storage device
US9715351B2 (en) 2015-02-13 2017-07-25 Red Hat, Inc. Copy-offload on a device stack
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
WO2017046864A1 (ja) * 2015-09-15 2017-03-23 株式会社日立製作所 ストレージシステム、計算機システム、およびストレージシステムの制御方法
US10740303B2 (en) * 2017-03-28 2020-08-11 Oracle International Corporation Composite file system commands
US10572186B2 (en) 2017-12-18 2020-02-25 Formulus Black Corporation Random access memory (RAM)-based computer systems, devices, and methods
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US10901645B1 (en) * 2019-09-06 2021-01-26 International Business Machines Corporation Converting small extent storage pools into large extent storage pools in place
US11132138B2 (en) 2019-09-06 2021-09-28 International Business Machines Corporation Converting large extent storage pools into small extent storage pools in place
CN110795043B (zh) * 2019-10-29 2023-06-06 北京浪潮数据技术有限公司 一种分布式存储块置零方法、装置、电子设备及存储介质
US11789657B2 (en) * 2020-10-23 2023-10-17 Cirrus Data Solutions Inc. Devices, systems, and methods for transparently intercepting data stored on a storage device and providing services related to the data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1724980A (zh) * 2004-07-21 2006-01-25 株式会社日立制作所 存储系统
US7263108B2 (en) * 2002-08-06 2007-08-28 Netxen, Inc. Dual-mode network storage systems and methods
US7284104B1 (en) * 2003-06-30 2007-10-16 Veritas Operating Corporation Volume-based incremental backup and recovery of files

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269382B1 (en) * 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
US7203732B2 (en) * 1999-11-11 2007-04-10 Miralink Corporation Flexible remote data mirroring
US6678752B1 (en) * 2000-09-28 2004-01-13 International Business Machines Corporation Data storage system with automatic storage request analysis and selection of optimal output media type
US20020161846A1 (en) * 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6880052B2 (en) * 2002-03-26 2005-04-12 Hewlett-Packard Development Company, Lp Storage area network, data replication and storage controller, and method for replicating data using virtualized volumes
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US20040221123A1 (en) * 2003-05-02 2004-11-04 Lam Wai Tung Virtual data switch and method of use
US7055014B1 (en) * 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US20050114595A1 (en) * 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
JP4428993B2 (ja) * 2003-11-27 2010-03-10 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US7225314B1 (en) * 2004-05-26 2007-05-29 Sun Microsystems, Inc. Automatic conversion of all-zero data storage blocks into file holes
US7581118B2 (en) * 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7747836B2 (en) * 2005-03-08 2010-06-29 Netapp, Inc. Integrated storage virtualization and switch system
US7529816B2 (en) * 2005-06-03 2009-05-05 Hewlett-Packard Development Company, L.P. System for providing multi-path input/output in a clustered data storage network
US7801864B2 (en) * 2005-11-28 2010-09-21 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
US8001339B1 (en) * 2005-12-22 2011-08-16 Storage Technology Corporation Storage management policies in a virtual data storage system
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8140785B2 (en) * 2006-06-29 2012-03-20 International Business Machines Corporation Updating metadata in a logical volume associated with a storage controller for data units indicated in a data structure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263108B2 (en) * 2002-08-06 2007-08-28 Netxen, Inc. Dual-mode network storage systems and methods
US7284104B1 (en) * 2003-06-30 2007-10-16 Veritas Operating Corporation Volume-based incremental backup and recovery of files
CN1724980A (zh) * 2004-07-21 2006-01-25 株式会社日立制作所 存储系统

Also Published As

Publication number Publication date
CN107122127A (zh) 2017-09-01
CN101689148A (zh) 2010-03-31
WO2009146001A1 (en) 2009-12-03
US20090300301A1 (en) 2009-12-03
US8745336B2 (en) 2014-06-03

Similar Documents

Publication Publication Date Title
CN107122127B (zh) 向存储硬件的存储操作卸载
US8566502B2 (en) Offloading storage operations to storage hardware using a switch
US11188254B2 (en) Using a data mover and a clone blocklist primitive to clone files on a virtual file system
US8266099B2 (en) Offloading storage operations to storage hardware using a third party server
US10713074B2 (en) Method, apparatus, and system for accessing storage device
US8935497B1 (en) De-duplication in a virtualized storage environment
JP4175764B2 (ja) 計算機システム
CN105975214B (zh) 配置用于输入/输出操作的对象存储系统
JP4440098B2 (ja) ファイル・アクセス・プロトコルとブロック・アクセス・プロトコルの統合サポートを提供するマルチプロトコル・ストレージ・アプライアンス
US9262097B2 (en) System and method for non-volatile random access memory emulation
US10120618B2 (en) Systems and methods for adaptive offloading of mass storage data movement
JP2007141216A (ja) 複数のプロトコルアクセス可能なosdストレージサブシステムのためのシステム、方法および装置
US9582219B2 (en) Technique for rapidly converting between storage representations in a virtualized computing environment
JP2005535962A (ja) ファイルシステム上に仮想ディスクオブジェクトを階層化することによるストレージ仮想化
WO2009033074A2 (en) De-duplication in virtualized server and virtualized storage environments
JP2008134712A (ja) ファイル共有システム、ファイル共有装置及びファイル共有用ボリュームの移行方法
US11586391B2 (en) Technique for efficient migration of live virtual disk across storage containers of a cluster
US20210042032A1 (en) Drive box, storage system and data transfer method
US7627710B1 (en) Converting an object identifier to a block I/O address to identify a storage location on a server
US10089125B2 (en) Virtual machines accessing file data, object data, and block data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: California, USA

Patentee after: Weirui LLC

Country or region after: U.S.A.

Address before: Kayo fukuboku

Patentee before: VMWARE, Inc.

Country or region before: U.S.A.