存储虚拟化卸载的制作方法

文档序号:15072104发布日期:2018-08-01 00:02阅读:224来源:国知局

一些类型的存储设备具有在一些情况下可能难以完全利用的执行能力。例如,考虑具有通过pcie(高速外围组件互连)总线连接到ssd(固态器件)的cpu的计算机,该ssd实现nvme(高速非易失性存储器)逻辑器件接口标准的一个版本。ssd的成本可能具有与传统盘驱动器的成本相同的量级,但在具有相同的高速总线的同一计算机中,ssd的等待时间和吞吐量性能可能具有比旋转型盘驱动器更大的量级。换言之,当通过诸如pcie总线等高性能总线附连时,ssd的等待时间和吞吐量能改进到以下程度:存储设备具有与诸如具有旋转介质的盘驱动器等其它类型的基于块的存储设备完全不同的特性。

高速总线的可用性使ssd与传统的旋转盘驱动器之间的性能差异得以显现。在诸如pcie总线等高速总线上,ssd的净等待时间和吞吐量能显著优于旋转盘驱动器的净等待时间和吞吐量。例如,通过pcie总线附连的ssd可能具有数微秒的等待时间并且或许具备每秒数万或数十万兆的吞吐量的能力。

用于访问存储设备的许多软件已经在假定基于块的持久存储将相对较慢的情况下设计。例如,操作系统可能被设计成降低访问存储的进程的优先级,因为这些进程将很有可能在等待存储响应时具有空闲周期。而且,因为存储已经相对于处理器和存储器较慢,所以经常使用复杂的存储器要求的高速缓存方案来提高有效存储性能。通常,用于高速缓存的存储器可以向计算系统增加大量成本和功率负载。如果存储能够以接近处理器速度的速度被访问,则需要较少的存储器和功率。

存储速度的迟滞影响了虚拟化技术的进步。虽然存储虚拟化的某些方面已经用硬件实现,但此处讨论的存储虚拟化的其它方面缺乏正当性且先前未被考虑,因为软件中的虚拟化已被证明是足够的。存储系统尚未能提供足够的数据吞吐量以证明非软件虚拟化解决方案是正当的。另外,仅仅在操作系统或虚拟化软件处抛出附加cpu周期不一定会提高性能。诸如nvmessd等设备能够以可影响系统的cpu的速率与该系统交换数据;cpu负载一般随着数据交换速率一起增加。由于存储成本降低并因此存储量增加,此类设备的高吞吐率将增加主机系统的负担。如果主机的处理容量的一部分专用于处置存储,则随着存储增加,更少的处理变得可用于其它目的。

此外,一些软件被设计成限制存储等待时间或吞吐量。当例如虚拟机请求访问存储时,可能内置延迟,因为其它请求通常紧接在此类请求之后。请求的这一延迟或批处理减少管理程序上下文与虚拟机上下文之间的相对较慢的切换的次数。如果存储设备及其附件具备约30us等待时间的能力,则人为的200us批处理延迟降低了存储硬件的利用率。然而,如果虚拟化软件被调节至以30us工作,则其cpu消耗可显著增加(为了处置增加的数据吞吐量以及对存储硬件的访问)。

如果存在提高存储虚拟化效率的方便且经济的方式,则将会是有益的。本文描述了针对该效果的技术。

概述

包括以下概述仅仅是为了介绍在以下详细描述中讨论的一些概念。该概述不是完整性的并且不意图划定所要求保护的主题的范围,所述范围由结尾处呈现的权利要求书提出。

实施例涉及将存储虚拟化的各方面卸载到存储硬件并将软件修改成利用硬件虚拟化特征。硬件和软件的协同设计允许文件系统提供文件以使得访问文件内容通常需要的间接转换开销能被规避,同时仍将文件作为文件系统对象来管理。存储设备管理并展示用于存储文件内容的虚拟卷。虚拟卷可被初始化或填充以使得其中的虚拟块与设备存储块对齐。虚拟卷可通过解析虚拟盘文件以访问虚拟盘元数据来初始化和填充,然后使用虚拟盘元数据来确定并设置虚拟卷的特征。

许多附带特征将随着参考下面的详细描述并结合附图进行解释。

附图简述

从结合附图阅读的以下详细描述将更好地理解本发明的描述,其中相同的附图标记用户指示所附描述中相同的部分。

图1示出了具有提供对虚拟机的基于块的虚拟化访问的存储软件栈的计算设备的示例。

图2示出了处在不同存储层的元件如何能执行间接转换的细节。

图3示出了如何能在不一定损失使用文件系统来管理和访问虚拟盘文件的便利性的情况下避免一个或多个软件间接转换层的概览。

图4示出了存储层之间的对齐的概念图。

图5示出了具有虚拟卷特征的存储设备。

图6示出了根据现有文件系统中的内容来配置虚拟卷的实施例。

图7示出了用于通过拷贝入数据而不是在存储设备上分配设备块来初始化虚拟卷的实施例。

图8示出了文件系统模块如何可被修改成帮助保留用作文件系统卷中的文件的后备存储的虚拟卷的完整性。

图9示出了与存储设备和文件系统模块对接的客户机。

图10示出了客户机和存储设备的另一实施例。

图11示出了计算设备的细节。

详细描述

以下公开的实施例涉及将存储虚拟化的各方面卸载到存储硬件并将软件修改成利用硬件虚拟化特征。讨论将开始于解释存储栈中的多个间接转换层如何影响处理负载、吞吐量和等待时间。然后讨论硬件和软件的协同设计,该协同设计允许将该间接转换开销中的某一些移至硬件,同时保留存储的合乎需要的方面。之后讨论用于将存储设备修改成能够展示虚拟卷的实施例,其中存储设备展示具有虚拟块空间的虚拟卷,并且该存储设备处置虚拟块空间与设备块空间中的设备块之间的间接转换。然后讨论用于启动和管理基于硬件的虚拟卷的技术。还阐述利用虚拟卷的软件实施例,包括如何将虚拟卷纳入文件系统以及如何使得虚拟卷能够存储文件系统对象(例如,文件)的内容,同时使得存储虚拟化软件或其它软件能够将文件作为文件系统对象来访问。

应注意,其它类型的存储软件类似于文件系统并且此类存储软件通常以类似于文件系统对象的某些方式管理软件层对象(诸如团块、虚拟卷等存储单元)。例如,内容可寻址数据存储(诸如亚马逊公司的简单存储服务(tm)和微软公司的azure团块存储(tm))在团块中存储数据。而且,诸如vmware虚拟卷(tm)等存储阵列内的对象类似于文件系统对象。存在提供对数据存储的抽象访问的众多类型的软件和对象。因此,如此处所使用的,“文件系统”和“文件系统对象”被认为涵盖具有类似的相关特征的软件和对象。相关的类似特征将例如通过使用软件层地址空间与由存储设备直接或间接使用的更下层存储地址空间之间的间接转换来管理和展示具有软件层地址空间(或命名空间)的软件层存储单元(文件、对象、团块等)。

图1示出了具有提供对虚拟机104的基于块的虚拟化访问的存储软件栈102的计算设备100的示例。虚拟机104由诸如xen管理程序、hyper-v(tm)服务器、vmware(tm)平台等任何已知机器虚拟化软件来管理。应注意,此处的实施例不限于机器虚拟化应用。大多数机器虚拟化软件将使用或实现某种形式的存储设备虚拟化以提供具有虚拟盘的虚拟机,这些虚拟机对接,就像它们是基于块的硬件存储设备那样。

参照图1,在虚拟机104中执行的客户软件106可具有包括虚拟设备驱动程序(未示出)的客户操作系统。虚拟设备驱动程序与虚拟盘层108提供的虚拟设备(虚拟盘)对接。虚拟盘层108通常实现虚拟盘文件格式,并根据该格式将虚拟盘109存储在底层文件系统层110中的文件中。经常被称为虚拟盘文件的文件是文件系统层110大致如它管理任何其它文件那样管理的文件。软件存储栈102通常包括诸如设备驱动程序等用于管理对存储设备114的访问的设备接口112。并非所有图1中的组件都需要存在,并且诸如卷层、分区层、vmware虚拟卷(tm)层或设备驱动程序框架等其它组件可能存在,但对于本文中的技术公开并不重要。

如在

背景技术:
中讨论的,使用虚拟盘109的客户机(例如,虚拟机106)与存储虚拟盘文件的硬件存储设备114之间的数据路径可能是复杂的,并且可涉及各自增加计算设备100的总处理负载的多个间接转换层。接下来将描述典型的写入操作。在每一层将只描述单个块,但实际上在任一层可以牵涉多个块。如此处所使用的,术语“块”将指代在任何硬件或软件层管理的任何通用存储单元;所指代的块的类型从该术语的上下文中将会是显而易见的。例如,ssd块通常被称为页,但将在此处被称为块。

在图1中的最上面的标注后,首先在虚拟机104中执行的应用指令客户操作系统的文件系统向客户文件系统的文件位置写入数据。客户文件系统执行间接转换以将该客户文件位置(例如,文件名和偏移)映射到虚拟盘109中的虚拟盘块。虚拟盘层108进而接收到向虚拟块写入的指令。虚拟盘层通过将虚拟块的编号/标识符映射到文件系统层110中的对应虚拟盘文件的文件位置来执行另一间接转换。文件系统层110将该文件位置间接转换到设备块。该设备块包含文件系统块,该文件系统块包含虚拟块,该虚拟块包含客户文件位置。

另一透明间接转换可能在设备层进行。一些ssd维护其自己的在设备块(由存储设备展示的块号)与物理块(内部块标识符)之间的内部映射。该一对一映射允许ssd决定哪些物理存储位置用于更新,而不改变所存储的数据的所展示的位置(设备块号)。内部间接转换给予存储设备在需要更新时使用哪些物理块的自由,这允许该设备平均地分布其存储介质的降级。

图2示出了处在不同存储层的元件如何能执行间接转换的细节。客户机130实现虚拟盘格式。虚拟盘文件132的内容有点像文件系统那样组织和维护。虚拟盘文件132包含两种通用类型的虚拟盘元数据134;虚拟间接转换元数据和虚拟属性元数据。虚拟属性元数据可描述虚拟盘特征,诸如块大小、设备类型、最大虚拟盘大小、父虚拟盘文件的位置等。虚拟间接转换元数据通过将虚拟块(虚拟块号)映射到虚拟盘文件132内的位置来用作间接转换映射。虚拟间接转换元数据的细节在他处可用。值得注意的是以下事实:可解析并解释对应的虚拟盘格式的任何软件能使用虚拟间接转换元数据来确定虚拟盘文件132中的相应虚拟块的文件系统位置。

当任意客户机130向具有标识符v-block(块)-i的虚拟盘块写入数据时,客户机130将该数据和虚拟块标识符传递至诸如虚拟盘驱动程序138等实现虚拟盘格式的组件。

虚拟盘驱动程序138检查虚拟间接转换元数据以查找针对v-block-i的将v-block-i映射到文件位置140的虚拟间接转换配对136。文件位置140通常是虚拟盘文件132内的某种形式的偏移。虚拟盘驱动程序138然后指令管理文件系统143(虚拟盘文件132驻留在其上)的文件系统驱动程序142按所确定的偏移向虚拟盘文件132写入数据。

文件系统143具有文件系统元数据144。类似于虚拟盘元数据134,文件系统元数据144具有文件系统属性元数据和文件系统间接转换元数据。文件系统属性元数据存储关于文件系统143及其内的文件系统对象的信息(例如,所有权、许可、文件名、完整路径等)。文件系统间接转换元数据将文件位置映射到设备块。文件系统驱动程序142使用文件位置(例如,"f.vhd"+偏移)来查找将文件位置映射到具有标识符d-block-k的设备块148的文件系统间接转换配对146。文件系统驱动程序142告知存储设备驱动程序150或类似组件向虚拟块d-block-k写入数据。

存储设备114接收该数据和设备块标识符d-block-k并相应地存储该数据。如果存储设备114是nvmessd,则由存储设备114在例如包含来自存储设备驱动程序150的nvme消息的pcie信号中接收该数据和设备块标识符。

图3示出了如何能在不一定损失使用文件系统来管理和访问虚拟盘文件的便利性的情况下避免一个或多个软件间接转换层的概览。在步骤160,更新虚拟盘文件驻留在其上的文件系统以存储指示特定目标文件与虚拟卷相关联的标志。该标志可以是例如目标文件的文件系统元数据中的属性。在步骤162,与存储设备的通信致使该存储设备创建虚拟卷。存储设备通过虚拟卷提供虚拟化块访问形式。虚拟化块访问的概念尤其可包括实现或跟踪虚拟块与设备块之间的间接转换,其中存储设备接收读取和写入特定虚拟块的请求并将这些操作转换成设备块。或者,存储设备接收涉及设备块的更新并且还接收对间接转换元数据的对应更新。

在步骤164,基于该标志,存储栈提供对目标文件的差别管理。如以下进一步描述的,在某些方式中目标文件被如同任何其它文件系统对象那样管理,并且在其它方式中目标文件被专门管理以促成对虚拟卷的高效的可靠使用,其中虚拟卷是其上存储设备存储至少文件内容的介质。例如,如果目标文件是虚拟机所使用的虚拟盘文件,则虚拟卷存储该虚拟机租户的数据。在步骤166,诸如虚拟盘驱动程序等客户机通过直接(或者可能通过另一设备驱动程序)与存储设备通信、指定针对虚拟块的读取和写入来与虚拟卷对接,并且存储设备使用本地间接转换数据来将虚拟块映射到设备块。客户机可以与虚拟卷对接,而不必通过存储栈,具体而言是管理目标文件的文件系统。替换地,客户机确定将哪些虚拟块分配至哪些设备块,发送对设备块的更新,并将对应的间接转换更新告知虚拟卷。存储设备保留关联于或分配给虚拟卷的设备块。

尽管图3和此处的其它附图讨论虚拟文件/盘层和文件系统层,但应注意,本文描述的混合软件-硬件虚拟化技术能适用于任一层或这两层。一般而言,此处的实施例能适用于使用在上层存储单元(例如,群集、虚拟块等)与下层存储单元(例如,卷或设备块)之间的间接转换的任何存储软件。例如,文件系统本身可被修改成使用设备虚拟化卷。因为文件系统和盘虚拟化软件两者都使用同一种间接转换元数据来对块存储进行自组织和映射,所以本文描述的实施例能容易地适用于任一种或这两种类型的存储软件。本文参照一种类型的软件描述的任何实施例应被认为等同地描述另一种类型的软件或者使用基于块的间接转换的任何其它软件。实施例在期望软件即使在其间接转换逻辑中的某一些被规避或消除的情况下也继续执行其面向文件系统的许多功能。此外,本文描述的极简形式的硬件虚拟化使得存储设备制造商方便地用硬件和/或固件支持它们。例如,基于此处的公开,扩展nvme标准以支持虚拟卷将会是直接明了的。考虑以下旁注。

可以向nvme“管理队列”发送命令以将介质区域定义为副命名空间。其它可选nvme命令可能指定副命名空间的数据应包含在主命名空间中找到的数据。此类命令可采取提供主命名空间块到副命名空间块的“映射对”的形式。替换地,相同的目的可通过与scsi标准的odx(卸载数据转移)部分相似的“复制卸载”技术来达成。即,存在以下规范:数据应从主命名空间的一个块复制到副命名空间的一个块,但具有无需实际上复制数据并且这两个命名空间可共享同一介质的某一提示。

图4示出了存储层之间的对齐的概念图。为了效率以及软件块层182与设备块层184之间的一致性,与存储设备的虚拟卷的设备块的对齐将会是合乎需要的。如此处所使用的,对齐指布置块以尽可能地使虚拟块的开头与设备块的开头相符或者与其具有规则偏移。给定虚拟块的偏移可能是相关虚拟卷的虚拟块大小的倍数。在其中例如虚拟块是设备块的均等划分的情形中,此类对齐将会是空间高效的。多对一间接转换是等同可行的。也可使用多对多间接转换以例如用于冗余性。

为了便于理解,此处的实施例可以用暗示虚拟块(由虚拟卷展示的块)与设备块之间的简单的一对一映射的术语来描述。例如,在间接转换对,诸如"",被提及的情况下,暗示其它对,诸如可使用用于执行多对一间接转换(例如,许多虚拟块到一个设备块)的已知算法。例如,若干虚拟块可以映射到同一设备块的不同偏移;虚拟块的间接转换按照设备块和偏移。

再次参照图4,如果假设虚拟卷180驻留在存储设备上并且虚拟卷180存储文件数据,则文件数据单元186与虚拟或文件系统块对齐,虚拟或文件系统块与设备块对齐。尽管避免软件间接转换可以是合乎需要的,但一些实现有时可允许虚拟卷的虚拟块仍通过文件系统等来访问。例如,如果虚拟卷使用文件系统的块的相同的编号空间(例如,设备块号)来为虚拟块编号,则文件系统能容易地相对于虚拟块定址设备块。虚拟卷没有理由无法被实现为设备块号的集合之间的映射。

图5示出了具有虚拟卷特征的存储设备200。存储设备200可具有总线接口202,诸如pcie接口。存储设备200具有实现存储设备200所需的存储逻辑的控制器204。控制器204可实现nvme标准。控制器204可展示类似于应用编程接口(api)的逻辑控制器接口206。如果使用正式控制器接口206,则该接口可包括虚拟卷接口208。虚拟卷接口可被配置成接收与管理虚拟卷相关的指令(诸如创建新虚拟卷的指令、指定虚拟卷的参数的指令)、与读取和更新以下各项相关的指令:将用于虚拟卷的间接转换数据、将被移动或复制到虚拟卷的内容、该卷的虚拟块的大小、虚拟卷的大小(例如,虚拟或设备块的数量)、虚拟块编号方案的规范(例如,起始值、虚拟块号之间的递增等),等等。

虚拟卷管理器210实现由虚拟卷接口208展示的功能。虚拟卷管理器210管理虚拟卷表212和卷元数据存储214中的虚拟卷的状态和属性。每一个虚拟卷在虚拟卷表212中具有通过该虚拟卷的名称或标识符索引的条目。保留用于虚拟卷的设备块号的单独紧凑存储可使得能够快速访问存储设备200的可使用块号/范围以阻止对被保留用于虚拟卷的介质区域的读取和写入的其他逻辑。另外,每一个虚拟卷可以在卷元数据存储214中具有卷元数据216的集合。如所提及的,卷元数据通常将包括属性元数据和间接转换元数据。为了安全起见,虚拟卷的属性元数据可包括令牌、现时、私钥签名、或者虚拟卷管理器210在提供到虚拟卷的通道之前可需要的某一其他信息片段。

如果存储设备200是增强型nvmessd,则虚拟卷机制可被构建在nvme的命名空间特征之上。即,虚拟卷可以在向nvme命名空间提供虚拟卷的各种附加特征的情况下被部分地实现为nvme命名空间。换言之,虚拟卷可以是具有诸如间接转换维护/存储和为了支持存储虚拟化而添加的块保留/指派等功能的nvme命名空间。存储设备可能还被构建成包括“复制卸载”语义,其中存储设备或许可通过添加对已经存在的数据的引用来在内部执行块从一个命名空间到另一命名空间的复制。虚拟卷可以是充分自包含的,以使得不需要或需要极少的虚拟卷之外的管理或信息。

图6示出了用于根据存储在存储设备200上的非卷设备块252中的现有文件系统250中的内容来配置虚拟卷248的实施例。非卷设备块252至少最初并非由虚拟卷管理器210管理。图5提及将用作虚拟卷248的示例的“卷1”虚拟卷。操作系统256的存储栈254执行用于根据文件系统250的内容来初始化虚拟卷的过程258。在步骤[a],确定文件系统256或其一部分(取决于实现)将进行设备虚拟化。该确定可以是指定例如虚拟盘文件或文件系统卷的用户输入。该确定还可以是基于诸如以下认识等因素的自动确定:存储设备200提供虚拟卷支持并且存在适于或被标记供进行设备虚拟化的文件系统内容。过程258可由任何软件模块/程序或其组合在可能具有内核模式特权的情况下执行。例如,过程258可由工具或实用程序和/或虚拟化管理程序和/或虚拟机管理器(协调和控制多个管理程序的服务器)和/或其本地代理和/或虚拟盘驱动程序等来执行。

在步骤[b],收集元数据260。这可涉及各种技术。如果一虚拟盘文件将被虚拟化,则该虚拟盘文件被解析以提取相关的属性元数据,诸如虚拟盘块大小、逻辑盘大小等。还收集间接转换元数据。如果一虚拟盘文件将被虚拟化,则该文件被打开,并且根据该虚拟盘文件的格式和内容,该文件中的虚拟块被映射到对应的文件系统位置(例如,虚拟盘文件中的偏移),这些对应的文件系统位置然后根据存储该虚拟盘文件的文件系统来被映射到设备块。可能需要附加步骤,诸如将文件位置映射到群集并将群集映射到设备块。最终,获取间接转换元数据集,该间接转换元数据集将设备块映射到上层块,诸如虚拟盘文件块或文件系统块;上层块然后将用作由新虚拟卷展示的虚拟卷块。如图6所示,获取元数据260涉及向下走遍各存储层并且在每一层访问诸如文件系统元数据262等间接转换元数据,该间接转换元数据用于将顶层块(例如,虚拟块)映射到当前层的块,直到顶层块被映射到源内容和元数据最初驻留在其上的底层设备块264。

如果必要,则过程258可包括步骤[c],其中将元数据260格式化和归一化成与虚拟卷接口208所期望的形式相一致的形式。例如,可精简交叠或冗余间接转换映射的范围。替换地,可使用“复制卸载”技术,如以上讨论的。在步骤[d],将归一化的元数据266传递至控制器204和虚拟卷接口208。虚拟卷管理器210执行过程268,该过程包括以下步骤[e]:接收至少调用卷创建功能并传递告知新虚拟卷的创建的数据的一个或多个请求。在步骤[f],虚拟卷管理器210创建虚拟卷。这可涉及在虚拟卷表212和卷元数据存储214中设立条目,拷贝入新卷的虚拟块和设备块之间的初始间接转换映射,以及以其他方式根据相应的元数据来配置虚拟卷248。如果存储设备200具有透明的内部间接转换层,则在需要设备块整合的情况下设备块内容可以到处移动,而不改变设备块号。

当完整初始化时,虚拟卷248由存储设备200来如此展示。可以按与读取和写入非虚拟化块几乎一样的方式将数据读取和写入到虚拟卷248。例如,相同的命令和语义集合用于虚拟卷访问,且具有寻址个别虚拟块的附加能力。如果存储设备200是nvme存储设备,则可使用普通nvme命令。例如,nvme写请求可指定入站数据以及虚拟块号virtual-block(虚拟块)-101。当存储设备200确定写与特定虚拟卷248相关联时,存储设备200对相应的间接转换元数据270(参见图5)应用virtual-block-101以标识设备块号(device-block(设备块)-36)并且或许标识到将用于该写入的设备块中的偏移。替换地,存储设备展示虚拟卷的设备块并且间接转换元数据由软件更新。所存储的间接转换元数据允许访问虚拟卷的任何软件知晓虚拟块相对于设备块位于何处。

为了详细说明按照副命名空间的lba(逻辑块地址或虚拟块号/地址)发送存储命令(具体而言是nvme)的理由,考虑通过在存储设备上创建副命名空间,按照由租户(例如,操作系统、应用、vm内的管理员等)使用的lba(或其他单元,诸如虚拟块)来创建副命名空间(或块地址空间)。租户的视图与主机的视图之间的这一基于设备的转换/间接转换能方便地消除对存储设备以外的转换/间接转换的需求。不仅能或许避免文件系统间接转换,而且能避免与文件系统本身的通信。另外,基于设备的间接转换可以与向虚拟机显示足够的底层nvme控制器(或类似组件)以使得租户虚拟机自身能够使请求入队的技术相组合。为了进一步理解,参见single-root(单根)i/o虚拟化(sr-iov)标准。为了供租户虚拟机使请求入队,该租户优选地只能访问其数据且无法访问其它租户的数据。总之,租户使用的lba(或一般地,虚拟块号)是来自只包含该租户的数据的副命名空间的lba。

应注意,图6以及本文描述的其它附图中的步骤无需以描述它们的次序执行。并且,可省略一些步骤。

图7示出了用于通过拷贝入数据而不是在存储设备200上分配设备块来初始化虚拟卷的实施例。虚拟卷管理器210包括执行过程292的虚拟卷创建器。新虚拟卷293根据诸如虚拟块大小等可能已经由用户输入的任意卷参数294来创建。当接收到拷贝入数据296时,虚拟卷创建器290缓冲数据,填充新虚拟卷293的虚拟块,并且在填充虚拟块时生成新的间接转换对。当完成时,拷贝入的数据在新虚拟卷293的虚拟块中是可寻址的。未被指定至存储设备200的任何虚拟卷属性可由虚拟卷创建器290赋予默认值。

还可反转用于创建虚拟卷的过程;虚拟卷可用作用于创建新虚拟盘文件的源。实现虚拟盘格式的任何软件可以向存储设备请求虚拟卷的元数据。该软件使用结构元数据来以合适的虚拟块大小或其它属性初始化虚拟盘文件。该软件还使用虚拟卷的间接转换元数据来从虚拟卷中读取虚拟块,以与虚拟盘格式一致的方式将虚拟块插入虚拟盘文件中,并且更新虚拟盘文件的间接转换元数据。

图8示出了文件系统模块320如何可被修改成帮助保留用作文件系统卷324中的文件323(“文件1”)的后备存储的虚拟卷322的完整性。文件系统模块320具有文件323具有特殊状态或者与虚拟卷322相关联的指示。在一个实施例中,该指示是文件系统元数据326中的文件322的属性。在另一实施例中,该指示可以是已被锁定至虚拟卷的文件名列表或者设备块列表。在任何情形中,文件系统模块320监视在被执行的情况下将改变文件323的内容的第一操作328。例如,截断、写入、物理移动等。内部文件系统操作(如移动设备块以用于碎片整理或文件整合)还可以在进行适当的文件系统修改的情况下被禁止或避免。文件系统模块320阻止这些类型的操作发生,这保留对应的虚拟卷322的间接转换映射。如果存储设备200能够保护虚拟卷的完整性,则文件系统模块320可被设计成允许下层的存储层拒绝第一操作328;文件系统模块320处置该拒绝。总之,文件系统模块320、软件存储栈或者存储设备200或其组合中的任一者防止虚拟卷的间接转换映射被不经意地破坏。

尽管文件323具有附加到它的虚拟卷,但文件系统模块320以某些方式将文件323视作任何其它文件。第二文件系统操作330可以如它们对任何其它文件那样执行。一般而言,将更改文件323的元数据而不是文件323的内容的任何文件系统操作都能以其平常方式执行。例如,文件系统模块320允许重命名文件323、逻辑上在文件系统324内移动文件323、改变文件323的许可或所有者,等等。

混合软件-硬件方法允许将文件323作为文件系统对象来管理。该方法还允许由存储设备200虚拟化文件323的内容。这可具有许多优点。

图9示出了与存储设备和文件系统模块对接的客户机328。该客户机可具有可将文件作为文件系统对象来与其交互的面向文件系统的逻辑。该客户机还具有在不使用文件系统模块320的情况下与存储设备和虚拟卷通信的面向设备的逻辑。如以上讨论的,客户机328传递涉及虚拟块的读和写请求。该客户机可以是例如虚拟盘驱动程序、管理程序或者虚拟机中的虚拟设备驱动程序。该客户机可使用虚拟存储地址来对存储进行读和写,并且处置到设备块的间接转换,而不必经过文件系统间接转换逻辑332或者或许复杂软件存储栈的其它层。如果需要,文件系统模块320还可被配置成访问虚拟卷所支持的文件的内容。

图10示出了客户机328和存储设备200的另一实施例。在该实施例中,存储设备200不执行间接转换或者确定哪些虚拟块将进入哪些设备块。而是无论哪个软件组件访问虚拟卷都管理虚拟块与设备块之间的间接转换,并且该软件(例如,客户机328)告知存储设备那些映射是什么。存储设备存储映射以使得在保证任何给定虚拟块号都将指向正确的物理介质位置的情况下访问虚拟卷的任何软件都能随后使用间接转换映射来呈现相同的虚拟块。

在该实施例中,存储设备200可使用间接转换来知晓要锁定哪些设备块,并防止改变,除非通过涉及对应的虚拟卷的请求。假定客户机328是使用虚拟盘文件来提供虚拟块存储设备(虚拟驱动器)的虚拟盘驱动程序。虚拟盘驱动程序解析虚拟盘文件的基于文件系统的元数据以标识相关联的虚拟卷。虚拟盘驱动程序然后打开到虚拟卷的连接并获取该虚拟卷的间接转换元数据。虚拟盘驱动程序可将虚拟卷的虚拟块展示为虚拟盘(或许由虚拟机客户访问),同时控制哪些虚拟块进入哪些设备块,并且同时通过发送对正确的设备块(以及可能的其中的偏移)的相应的读和写来处置对虚拟块的读和写。虚拟盘驱动程序更新虚拟卷的间接转换元数据以反映虚拟块更新。存储设备还可决定在需要新设备块来存储新虚拟块时哪些设备块要隔绝于虚拟卷。存储设备使用间接转换元数据来保护虚拟卷的完整性。替换地,存储设备使用被排除在存储设备认为未被使用的设备块池之外的保留设备块的预定义范围或集合。

在另一实施例中,虚拟机客户可被配置成具有两种操作模式。如以上参照sr-iov讨论的,虚拟机所采用的设备驱动程序可以是被设计成用于特定存储设备的设备驱动程序。如果特定设备是nvme设备,则可使用用于对该特定存储设备的非虚拟化访问的相同驱动程序。虚拟机还可使用用于管理程序正在仿真的设备或者用于‘半虚拟化(paravirtualized)’i/o信道的设备驱动程序,其中设备驱动程序被专门设计成在虚拟机中使用。虚拟机客户可被配置成在使用虚拟卷的两种模式之间交替。在第一模式中,使用第一种类型的驱动程序,而在第二模式中,使用第二种类型的驱动程序。

存储设备还可包括用于虚拟卷的批量操纵的操作。例如,虚拟卷可被复制。复制累积父虚拟卷之间的区别,而不是复制所复制的虚拟卷的所有块。如接下来讨论的,这可使得能够用相应的虚拟卷来实现差分虚拟盘文件链。

虚拟机的快照具有许多用途。为了取得快照,将所有数据复制到虚拟盘中可以是禁止的。即使足够的空间可用于完整的复制,足够快地复制以避免停机时间也是不太可能的。可生成只包含与源虚拟卷的区别的存储快照,而不是进行完整复制,并且跟踪这些区别的成本与变更数量成比例。如以上提及的,差分虚拟盘文件链可以共同包含虚拟盘的数据,并且每一个文件包含与从其分叉的文件的区别。可以用虚拟卷实现类似效果。可提供块数据库,其中每一相关虚拟盘快照都具有对该数据库中的块的引用。可使用写时复制方案,其中新数据替代虚拟盘文件中的旧数据,并且其中旧数据被复制到副文件。

图11示出了其上可实现上述实施例的计算设备398的细节。计算设备398可具有显示器400、网络接口401以及存储402和处理硬件404,该处理硬件可以是以下任一者或多者的组合:中央处理单元、图形处理单元、模数转换器、总线芯片、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、或者复杂可编程逻辑器件(cpld)等。存储402可以是磁存储、静态存储器、易失性存储器等的任意组合。如此处所使用的术语“存储”的含义本质上不是指信号或能量,而是指可能被虚拟化的物理装置,包括物理介质(诸如磁存储介质、光存储介质、静态存储器设备等),但本质上不是信号。计算设备398的硬件元件可以按在计算领域中很好理解的方式协作。另外,输入设备406可以与计算设备398集成或通信。计算设备398可具有任何形状因子或者可以在任何类型的包围设备中使用。计算设备398可以是以下形式:手持式设备(诸如智能手机、平板计算机)、游戏设备、服务器、板载机架式或背板计算机、片上系统,或其它形式。

上文所描述的实施例和特征能够以被存储在易失性或非易失性计算机或设备可读介质中的信息的形式来实现。认为至少包括诸如光学存储(例如,紧致盘只读存储器(cd-rom))、磁介质、闪存只读存储器(rom)之类的介质,或存储数字信息的任何当前或未来的装置。所存储的信息的形式可以是机器可执行指令(例如,已编译的可执行二进制码)、源代码、字节码、或者可用于启用或配置计算设备以执行以上讨论的各种实施例的任何其他信息。在执行实施例的程序的执行期间,还认为至少包括诸如随机存取存储器(ram)之类的易失性存储器、和/或存储诸如中央处理单元(cpu)指令之类的信息的虚拟存储器、以及存储允许加载和执行程序或可执行文件的信息的非易失性介质。各实施例和特征可在任何类型的计算设备上执行,包括便携式设备、工作站、服务器、移动无线设备等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1