虚拟环境中的动态存储分层的制作方法

文档序号:6497521阅读:132来源:国知局
虚拟环境中的动态存储分层的制作方法
【专利摘要】本发明公开了用于在虚拟环境中执行动态存储分层的系统和方法。识别存储对象在虚拟机文件中的位置,其中所述虚拟机文件包括多个存储对象。检测所述存储对象是否满足分层策略的标准,如果满足,则将所述存储对象从多层存储系统的一个层移动到所述多层存储系统的另一个层。
【专利说明】虚拟环境中的动态存储分层
【技术领域】
[0001]本发明涉及对数据的组织,更具体地讲,涉及在虚拟环境中执行存储分层。
【背景技术】
[0002]多层存储系统包括具有不同属性(例如性能特征)的存储设备,所述存储设备基于存储设备的属性布置成独立的层。基于数据的特征在多层存储系统的各个层之间移动数据的操作被称为存储分层。存储分层可提供多种优势,例如降低数据存储的成本以及提高各种类型的计算系统的性能。
[0003]分层策略可以指定一个或多个标准,所述一个或多个标准决定应该将给定存储对象(例如文件)存储到多层存储系统中的哪个层。计算机系统可以通过检测给定的存储对象是否满足分层策略中指定的一个或多个标准来实施分层策略。基于存储对象是否满足标准,计算机系统可以将存储对象从多层存储系统的一个层迁移到多层存储系统的另一个层。
[0004]动态存储分层是指对可供一个或多个应用程序访问的存储对象实施存储分层策略的操作。这避免了使存储对象“脱机”以执行存储分层操作的需要。示例性存储分层操作包括检测存储对象是否满足存储分层策略中的标准,以及将存储对象从多层存储系统的第一层迁移到多层存储系统的第二层。
[0005]存储分层可以在虚拟环境中实施。虚拟环境是包括一台或多台虚拟机的计算环境。虚拟机是物理计算机的软件具体实施,所述软件具体实施以物理计算机硬件的方式执行计算机指令。虚拟机是使用虚拟机文件(例如存储在计算机内存中的镜像文件)进行实施的,该虚拟机文件包括用于在主机计算机系统上启动和操作虚拟机的信息。无论是单个计算机还是一组联网计算机,当今的许多(即使不是大多数)计算机系统都能够用作虚拟机的主机计算机系统。
[0006]主机计算机系统包括操作系统,称为主机操作系统。主机操作系统实施主机文件系统。主机操作系统使用主机文件系统来组织和调控主机计算机系统所使用的存储对象(例如文件)。主机操作系统将虚拟机文件视为一个此类存储对象。
[0007]虚拟机也包括操作系统,称为客户操作系统。客户操作系统实施客户文件系统。客户操作系统使用客户文件系统来组织和调控虚拟机所使用的存储对象(例如文件)。
[0008]主机操作系统和客户操作系统是独立的操作系统,不以相同的详细程度来查看虚拟机文件。主机操作系统将虚拟机文件视为单个文件,不支持对虚拟机文件中的数据(例如由客户文件系统创建的文件)进行任何逻辑组织。因此,由主机执行的存储分层操作无法有效地选择将虚拟机使用的个体存储对象置于哪一层。

【发明内容】

[0009]本发明公开了用于在虚拟环境中执行动态存储分层的各种系统和方法。例如,一种方法可涉及识别存储对象在虚拟机文件中的位置,其中虚拟机文件包括多个存储对象。例如,存储对象可以是虚拟机文件中的文件。该方法然后涉及检测存储对象是否满足分层策略的标准。如果存储对象满足标准,则将存储对象从多层存储器系统的一个层移动到多层存储系统的另一个层。存储对象可以包括文件数据和/或元数据。该方法还可涉及检测存储对象在此类移动期间是否被修改。
[0010]在一个实施例中,该方法涉及访问虚拟机文件中识别多个索引节点的元数据。虚拟机文件中元数据的类型和位置可取决于由通过执行虚拟机文件而实施的虚拟机所执行的文件系统。该方法使用索引节点中的信息来识别虚拟机文件中的存储对象。为了访问元数据,可以装载虚拟机文件,例如通过主机文件系统进行装载。
[0011]针对多个存储对象中受分层策略约束的每个存储对象来创建列表。对受策略约束的每个存储对象进行映射,其中映射识别出存储对象在虚拟机文件中的位置。
【专利附图】

【附图说明】
[0012]通过参照附图,本发明可能更便于理解,并且其众多对象、特征和优点对于本领域的技术人员来说变得显而易见。
[0013]图1是根据本发明一个实施例的在虚拟环境中执行动态存储分层的系统的框图。
[0014]图2是根据本发明一个实施例的虚拟机文件的框图。
[0015]图3示出根据本发明一个实施例的确定文件在虚拟机文件中的位置的方法的流程图。
[0016]图4示出根据本发明一个实施例的在虚拟环境中执行动态存储分层的方法的流程图。
[0017]图5是根据本发明一个实施例的计算设备的框图,示出了可如何在软件中实施分层模块。
[0018]图6是根据本发明一个实施例的联网系统的框图,示出了各种计算设备可如何通过网络进行通信。
[0019]虽然本发明可以具有各种修改形式和替代形式,但仍提供本发明的具体实施例作为附图和【具体实施方式】中的实例。应当理解,附图和【具体实施方式】并非旨在将本发明限于所公开的特定形式。相反,其目的在于涵盖所附权利要求所限定的本发明精神和范围内的所有修改形式、等同形式和替代形式。
【具体实施方式】
[0020]动态存储分层(DST)包括用于确定应该将哪些数据存储在多层存储系统的哪一层中的过程。可以将数据组织成各种分组或存储对象。例如,可将数据逻辑地分组到文件中。形成在物理层处的另一类型的分组是块或组块。可以对任何类型的存储对象执行存储分层操作。
[0021]DST是一种限制数据存储成本的有效方式,因为DST可以用于确保在任何适当的情况下根据分层策略的指示将数据移动到低成本的层。然而,在某些情况下,DST的有效性可能受到限制。例如,当典型的主机操作系统在包含虚拟机的计算环境中执行DST时,主机操作系统通常将虚拟机视为单个虚拟机文件。因此,主机操作系统仅可以将虚拟机文件作为一个整体来对其执行DST操作。这可能是低效率的,因为虚拟机文件可以相当大,并且虚拟机文件中实际上可能只有一部分数据满足分层策略的标准。例如,可以由通过虚拟机执行的客户操作系统所实施的文件系统来将虚拟机文件分成多个存储对象,例如文件。然而,主机操作系统不会得知客户操作系统在虚拟机文件中进行的将数据到个体文件的划分。
[0022]举例来说,虚拟机文件中的特定文件足够热(例如由于对该文件进行频繁的I/O访问),因此需要存储在多层存储系统的顶层中,而虚拟机文件中的其余文件足够冷,因此被存储在更低的层中。主机操作系统将整个虚拟机文件的热度视为特定文件的热度,并将整个虚拟机文件存储在顶层中。这就要求将整个虚拟机文件存储在顶层中,而不必要地增加虚拟机文件的存储成本。实际上,仅虚拟机文件中的特定文件应存储在顶层中,而虚拟机文件中的其余数据则可以迁移到更低的层中,从而降低存储虚拟机文件的成本。
[0023]图1是执行动态存储分层的计算环境100的框图。如图所示,计算环境100包括通过网络30连接到存储系统20的主机10。网络30可以包括WAN(广域网)诸如互联网、一个或多个LAN(局域网)和/或一个或多个SAN(存储区域网)。
[0024]主机10是计算设备或计算设备的一部分,诸如个人计算机、膝上型计算机、服务器、个人数字助理、手机等。主机10被配置为托管一个或多个虚拟机,诸如虚拟机50。主机10的资源由主机10上实施的任何虚拟机共享。
[0025]主机10包括连接到处理器414的内存416。在一个实施例中,内存416是随机存取存储器(RAM)。内存416存储可由处理器414执行的程序指令以实施主机操作系统40,该主机操作系统实施主机文件系统42并且包括分层模块44。主机操作系统40还包括映射信息46。
[0026]内存416还存储可由处理器414执行的程序指令以实施虚拟机50,该虚拟机执行客户操作系统52,该客户操作系统实施客户文件系统54和分层模块56。内存416还存储分层信息12和虚拟化模块14。虚拟化模块14为虚拟机执行与虚拟机及资源的创建和管理相关的操作。虚拟化模块14被示出为独立的模块,但也可以包括在主机操作系统40中。虚拟化模块14为主机10提供同时支持一个或多个虚拟机(诸如虚拟机50)的能力。虚拟化模块14通过为虚拟机协调计算机资源(例如处理能力、内存等)的分配来提供此能力,使得虚拟机以类似于物理计算机的方式运行。虚拟化模块14可设计为通过以下方式支持虚拟机:协调处理器资源以支持代表虚拟机的指令执行,以及执行内存管理以确保虚拟机有效地共享主机计算机的系统内存。
[0027]存储系统20可包括多个个体存储设备。每个存储设备可以具有不同的特征,诸如输入/输出(I/o)性能、数据可用性和相对成本特征。存储系统管理员可以将存储系统20的存储设备分成多个层。管理员可以将具有相对类似特征的存储设备分组到层中。例如,如果存储系统20包括若干固态驱动器(SSD)存储设备、若干光纤通道(FC)存储设备和若干串行高级技术附件(SATA)设备,则管理员可以基于设备类型将存储系统20分成三个层。即,管理员可以将存储系统20分成由SSD设备构成的第一层、由FC设备构成的第二层以及由SATA设备构成的第三层。鉴于SSD设备是相对于FC设备和SATA设备而言的高性能设备,第一层可能在三个层中具有最佳的性能。相对于第二层和第三层中存储的数据,可以更快、更可靠地访问SSD设备构成的第一层中存储的数据。然而,SSD设备的成本也相对较高,因此在第一层中存储数据比在第二层和第三层中存储数据更加昂贵。因此,将数据从更高的层移到更低的层意味着总体存储成本的下降。然而,一些数据更加重要,应该存储在尽可能高的层中。
[0028]尽管上述实例列出了三种可能的层类型,但是诸如存储系统20的多层存储系统不限于三层,也不一定按照设备类型进行划分。例如,可以使用磁带驱动器或其他类型的存储设备来创建层。可以基于年限或存储设备使用的技术,或各种其他属性(例如存储设备的成本)来创建层。通常,诸如存储系统20的多层存储系统包括层的层次结构,其中每个层都由属性彼此相似的存储设备构成,这些属性与其他层中的存储设备的属性不同。层次结构中的顶层基于存储目标提供最理想的性能特征(例如速度、容量),最低层提供最低的性能。层次结构也可以按照成本进行组织,例如顶层提供每个存储单位的最高成本,最低层提供每个存储单位的最低成本。可以根据其他原则或组织目标来组织多层存储系统。
[0029]存储系统20提供持久数据存储,使得存储在存储系统20中的数据即使在存储系统20断电之后仍将保持存储。存储系统20可以包括一个或多个存储设备或存储装置,诸如固态驱动器、光纤通道设备、硬盘、光盘(⑶)、数字通用光盘(DVD)、顺序存取介质(例如磁带存储器)或其他大容量存储设备、文件服务装置或存储系统(例如独立磁盘冗余阵列(RAID)系统或光学存储存取盒)。存储系统20也可以包括一种或多种类型的存储介质,包括固态介质(例如闪存驱动器)、光学介质(例如CD和DVD)和磁性介质(例如,硬盘或磁带)。在实施例中,可以使用云存储器来实施存储系统20,其中存储系统20是逻辑存储设备,物理存储设备在按需和/或按契约的基础上分配到该逻辑存储设备。
[0030]存储系统20包括从24 (O)到24 (N)的多个层,其中N是大于或等于二的整数,指示存储系统20中的层数。每个层都可以由一个或多个同质存储设备构成,所述同质存储设备的类型不同于其他层中的那些类型,例如层24(0)可以仅包括固态驱动器,而层24(1)可以仅包括硬盘。各层也可以基于一个或多个性能特征来进行组织。例如,层24(0)可以包括速度相对较高的存储设备,层24(1)可以包括速度相对较低的存储设备。例如,层24(0)可以包括高速硬盘驱动器,例如采用较新技术的硬盘驱动器,而层24(1)可以包括更低速的硬盘驱动器,例如采用较旧技术的硬盘驱动器。在一实施例中,每一层都可以包括多种类型的存储设备。各层也可以基于访问时间、安全性、地理位置、存储系统20中的设备的任何其他物理或逻辑特征而形成。在一实施例中,第一层是SSD,第二层是光纤通道LUN,第三层是 SATA。
[0031]存储管理器22提供存储管理功能。例如,当主机操作系统40确定应该将文件从一个层移到另一个层时,主机操作系统40可以向存储管理器22传输指令。存储管理器22可以生成指令来执行移动。
[0032]存储系统20还可以包括数据27和虚拟机文件28。虚拟机文件28 (I)和虚拟机文件28 (2)存储用于实施虚拟机(诸如虚拟机50)的数据。虚拟机文件28 (例如VMDK、VHD等)包括可供由虚拟机(诸如虚拟机50)执行的客户操作系统(诸如客户操作系统52)访问的多个数据块。使用各种技术(例如平面文件、稀疏文件等)来布置虚拟机文件中的多个数据块。客户操作系统52被配置为在虚拟机文件28中创建供(例如)虚拟机50使用的各种存储对象,诸如分区、逻辑驱动器、动态磁盘、卷和文件。存储对象可以包括用于对主机计算机系统的硬件和软件进行虚拟化的设备驱动程序、操作系统文件、各种数据和元数据以及多个软件包。执行虚拟机文件28会生成虚拟机50。
[0033]存储系统20可以在存储系统20的容量限制范围内包括任意数量的虚拟机文件。一般来讲,每个虚拟机文件都被实例化为主机系统上的虚拟机。虽然图1示出了具有单个虚拟机的单个主机,但省略附加的主机和虚拟机仅仅是为了清楚起见,并不暗示计算环境100可以支持的主机和虚拟机数量是有限的。
[0034]主机10被配置为通过包含分层模块44和分层信息12来执行分层操作。分层信息12包括形成分层决策的基础的策略。分层信息12中包括的策略包括一个或多个标准,所述一个或多个标准指定确定存储对象属于多层存储系统(例如存储系统20)的哪个层的条件。例如,该策略可以指定应将访问频率超过指定频率的存储对象存储在层24(0)中。该策略可以指定应将访问频率低于指定频率但高于第二指定频率的存储对象存储在层24(I)中。
[0035]管理员可以制定用于帮助确定应将哪些数据存储在哪个层中的策略。可以在策略中指定与存储系统20中的每个层关联的标准,诸如热度范围。例如,该策略可以指定应将更频繁访问的存储对象存储在存储系统20的更高层中,并且应将较不频繁访问的存储对象存储在存储系统20的更低层中。为了实施该策略,主机操作系统40可以跟踪存储对象的访问频率。存储对象的访问频率被称为存储对象的热度。存储对象被访问的频率越高,存储对象就“越热”。类似地,存储对象被访问的频率越低,存储对象就“越冷”。基于热度的分层策略指定一个或多个热度阈值或一个或多个热度范围。例如,该策略可以指定应将热度大于给定值(例如,访问次数超过每个给定时间段内的特定次数)的任何数据放到多层存储系统(例如存储系统20)的顶层中。该策略可以指定应将热度低于给定值但高于第二值的数据放入下一个较低的层,以此类推。
[0036]虽然将热度用作分层策略中所用标准的实例来执行分层操作,但热度仅仅是多个可能的分层标准中的一个实例。例如,分层标准还可以包括存储对象的所有者或创建者、上次访问时间、年龄、安全性信息、相关数据等。
[0037]计算机系统(诸如主机10)可以自动实施策略。例如,主机10的主机操作系统40可以跟踪针对给定存储对象的I/o访问请求并计算该存储对象的热度。主机操作系统40的分层模块44可以将存储对象的热度与在分层信息12所包括的分层策略中指定的热度进行比较,以检测策略是否指示应将存储对象移动到存储系统20的另一层,或者基于存储对象的热度是否满足分层策略所指定的热度标准来检测存储对象是否位于它所属的层中。分层模块44可以将存储对象的其他特征与分层策略的其他标准进行比较,以检测是否应将存储对象从一个层移动到另一个层。
[0038]如果分层模块基于分层策略检测到应将存储对象从第一层移动到第二层,则主机操作系统40可以发起存储对象的移动。主机操作系统40可以指定存储对象的标识符以及应将存储对象迁移到的目的地地址。例如,主机操作系统40可以指定将存储在第一卷中的具有给定文件名称的文件移动到第二卷。在该实例中,主机操作系统40知道第一卷位于第
一层中且第二卷位于第二层中。
[0039]分层信息12可以为存储系统20中的层指定多个标准。如以上实例所述,策略可以指定热度标准。策略还可以指定附加标准。例如,策略可以指定应将特定用户创建的存储对象存储在层24(0)中,即使存储对象不满足包括在层24(0)中的热度标准。即,即使给定存储对象的热度会强制要求将存储对象存储在更低的层中,但如果存储对象满足附加标准,例如存储对象由特定用户创建,则仍然会将存储对象存储在层24(0)中。策略可以包括标准的层次结构,其中每个标准都具有优先级。较高优先级的标准覆盖低优先级的标准。
[0040]主机10从外部源接收分层信息12。例如,可以将分层信息12载入作为主机10上初始软件安装的一部分。管理员可以手动更新分层信息12,或可以在周期性基础上或响应于检测到已建立新策略而自动更新分层信息12。
[0041]分层模块44实施存储在分层信息12中的策略。分层模块44将与给定存储对象相关的元数据与分层信息12中指定的标准进行比较,并检测是否将存储对象存储在合适的层中。即,分层模块44检测是否将存储对象存储在策略指示该存储对象所属的层中,或是否应将存储对象移动到另一层。
[0042]分层模块44访问主机操作系统40收集的元数据。在默认情况下,主机操作系统40收集与可由主机文件系统42访问的存储对象有关的特定元数据。例如,默认情况下,主机操作系统40识别文件的上次访问时间。主机操作系统40可被配置为响应于检测到分层策略将附加的元数据用作分层决策的基础而收集附加的元数据。例如,主机操作系统40通常可能不计算文件的热度。然而,响应于在将文件分配到层时接收到考虑了热度的策略,主机操作系统40可以开始计算文件的热度。
[0043]如果分层模块检测到应将存储对象移动到另一层,则分层模块44指示主机操作系统40应移动存储对象并指定应将存储对象移动到哪个层。主机操作系统40解译层并指定目的地地址。或者,主机操作系统40可以为存储管理器22指定目标层,而存储管理器22可以检测存储系统20中的哪个存储位置与该层对应。
[0044]主机操作系统40收集与主机文件系统42可访问的存储对象有关的元数据。主机文件系统42将虚拟机文件28识别为存储对象或文件。虚拟机文件28包含个体存储对象。这些存储对象由客户操作系统52 (具体地讲,由客户文件系统54)识别。然而,主机文件系统42不识别虚拟机文件28中的存储对象。
[0045]客户操作系统52被配置为向主机操作系统40提供与虚拟机文件28中的存储对象有关的元数据。一旦主机操作系统拥有此元数据,主机操作系统40就可以将分层策略应用到虚拟机文件28中的存储对象。
[0046]主机操作系统40将虚拟机文件28视为单个文件。虚拟机文件28具有起始位置和分配至虚拟机文件28的多个块。主机操作系统40知道虚拟机文件28的块的位置。即,主机操作系统40知道存储系统20中的哪些块属于虚拟机文件28。一旦主机操作系统40可以识别虚拟机文件28中的哪些数据块属于虚拟机文件28中的特定存储对象,分层模块44就可以对这些存储对象执行分层操作。
[0047]虚拟机50执行客户操作系统52。客户操作系统52收集与客户文件系统54可访问的存储对象有关的元数据。这些存储对象包括存储虚拟机50的虚拟机文件中的存储对象,例如,虚拟机文件28中的一个。
[0048]主机10可以装载虚拟机文件28。这就允许主机文件系统42访问客户操作系统52所收集的元数据。通过这种访问,主机文件系统42可以识别虚拟机文件28中的文件。或者,客户操作系统52可能(例如)通过虚拟机50或分层模块56中实施的代理将元数据传输到主机操作系统40。
[0049]在主机操作系统40接收到对虚拟机文件中的文件进行描述的元数据之后,主机操作系统40将生成列出虚拟机文件中的每个文件的映射。主机操作系统40将映射存储在映射信息46中。该映射还包括由客户操作系统50 (具体地讲,由客户文件系统54)计算的虚拟机文件28中的块的位置。例如,文件Fl可能包括由客户操作系统52从虚拟机文件28的开头开始计数的虚拟机文件的第42、第43和第54个块。主机操作系统40可以将这些相对于虚拟机文件28的块位置转换成相对于存储系统20中的存储位置的位置。主机操作系统可以包括映射中虚拟机文件的每个块的已转换位置。即,主机操作系统40可以相对于存储虚拟机文件的卷或存储设备来计算虚拟机文件的每个块的地址或偏移,并将这些地址或偏移添加到映射信息46中存储的映射。
[0050]一旦主机操作系统40识别虚拟机文件28中的文件,分层模块44就可以检测虚拟机文件的哪些部分受到分层信息12中的策略的影响。例如,如果策略指定应将所有元数据放在更高的层中,则分层模块44可以识别虚拟机文件28的哪些部分包括元数据。主机操作系统40然后可以发起将元数据移动到更高的层。又如,如果策略指定特定类型的文件受热度标准约束,则分层模块44可以识别虚拟机文件28中的该特定类型的文件。一旦识别到文件受策略约束,分层模块44就可以确定是否应将文件中的任一者移动到存储系统20的不同层。即,分层模块44可以将文件(具体地讲,与文件相关的元数据)与策略所指定的分层标准进行比较,并检测是否应移动文件。
[0051]主机操作系统40可以周期性地访问虚拟机文件28中的元数据,并更新受策略约束的文件的列表。响应于接收或检测到虚拟机文件28中的客户操作系统50对与文件组织相关的元数据进行的更改,主机操作系统40也更新映射信息46。
[0052]如果在检测时分层模块44检测到应将文件从所存储的层移动到不同的层,则分层模块44可以指示需要将文件移动到主机操作系统40。即,分层模块44可以向主机操作系统40传递应将给定文件从一个层移动到另一个层的信息。作为响应,主机操作系统40可以通过执行移动命令来发起移动。或者,主机操作系统40可以向存储管理器22传输指示应移动的文件以及 源和/或目的地层的信息。存储管理器22然后可以向存储系统20的实际存储设备发出指令以移动文件。
[0053]在一实施例中,分层模块44可以检测虚拟机文件元数据的访问频率。如果分层模块检测到所述访问频率低于指定阈值(例如,通过将所述访问频率与分层策略中指定的频率进行比较),则分层模块44得出由虚拟机文件所实施的虚拟机已不再执行的结论。响应于该结论,分层模块44可以指定应将虚拟机文件的所有数据均迁移到更低的层。迁移虚拟机文件释放了先前被虚拟机文件占用的空间,以存储附加的数据,例如附加的虚拟机文件。
[0054]图2是虚拟机文件200的框图。虚拟机文件200被示出为分成多个部分。每个部分代表一个区间。区间是连续的存储区域。客户操作(诸如图1的客户操作系统52)出于各种目的(诸如为文件数据或元数据)来分配区间。客户操作系统(具体地讲,由客户操作系统实施的文件系统,诸如图1的客户文件系统54)保持对虚拟机文件200的每个区间的跟踪。虚拟机文件200包括多个分立的存储对象,例如文件。
[0055]虚拟机文件200还包括元数据210,如标有“M”的位置所指示。如图所示,虚拟机文件200的前13个位置存储元数据210。元数据210包括(例如)交换文件、大小、年龄、访问时间、修改时间、创建时间、所有者以及为虚拟机文件200的每个文件存储文件数据的区间位置列表。在一实施例中,元数据210包括索引节点(inode)表,该索引节点表包括虚拟机文件200中每个文件的索引节点。元数据210由客户操作系统收集和更新。[0056]虚拟机文件200还包括若干文件,包括文件220 (由标有Fl的位置指示)、文件230 (由标有F2的位置指示)、文件240 (由标有F3的位置指示)和文件250 (由标有F4的位置指示)。此类文件可以包括应用程序数据文件、操作系统文件等。所述文件可以存储在虚拟机文件200中的连续位置或非连续位置中。客户操作系统存储元数据,所述元数据指示将虚拟机文件200的哪些位置分配到哪些文件,以及何时访问和/或修改文件。
[0057]图3示出了确定文件在虚拟机文件中的位置的方法的流程图。该方法可以由实施分层模块(诸如图1的分层模块44)的计算设备(诸如图1的主机10)来执行。
[0058]该方法从300处开始,主机在此处接收分层信息,诸如图1的分层信息12。分层信息可由主机操作系统(诸如图1的主机操作系统40)接收。可以将分层信息作为手动配置(例如由管理员执行)的结果或作为自动软件更新的一部分而进行接收。
[0059]分层信息包括分层策略。所述策略包括一组标准和多层存储系统(诸如图1的存储系统20)的层列表。所述标准指示针对将要存储在每个层中的文件或其他存储对象应存在哪些条件。例如,所述策略可以包括声明应将热度大于给定值的文件存储在第一层中的标准。
[0060]在305处,主机操作系统识别虚拟机文件中的文件,诸如图1的虚拟机文件28。为此,主机操作系统访问对虚拟机文件中的文件进行描述的元数据。主机操作系统可以通过客户操作系统(诸如图1的客户操作系统52)来访问该元数据。为通过客户操作系统访问元数据,主机操作系统在主机文件系统(诸如主机文件系统42)中装载虚拟机文件。装载虚拟机文件允许主机操作系统读取虚拟机文件中存储的元数据。或者,主机操作系统可以接收来自客户操作系统实施的代理或分层模块的元数据。
[0061]在310处,主机操作系统识别虚拟机文件中的哪些文件(如果有)受策略约束。这涉及主机操作系统评估策略并针对每个标准确定虚拟机文件的任何文件是否可能或确实满足标准。例如,如果策略包括一标准,所述标准指定应将特定用户创建的文件存储在哪个层中,则主机操作系统可以检测虚拟机文件中的任何文件是否由该特定用户创建。如果是,则该特定用户创建的文件受策略约束。主机操作系统可以在虚拟机文件中创建受策略约束的文件的列表。在315处,主机操作系统检测虚拟机文件中的任何文件是否受策略约束。如果主机操作系统检测到虚拟机文件中没有文件受策略约束,则该方法前进到335。
[0062]否则,主机操作系统在320处选择受策略约束的文件中的第一文件。在325处,主机操作系统生成映射,所述映射将文件相对于虚拟机文件的位置转换成相对于主机操作系统所使用的存储方案的位置。主机操作系统在330处检测是否任何其他文件被识别为受分层策略约束。如果是,则该方法返回到320,主机操作系统在此处选择另一个文件。否则,该方法前进到335,将结合图4对此处进行讨论。
[0063]图4示出了在虚拟环境中执行动态存储分层的方法的流程图。该方法在350处开始,主机操作系统(诸如图1的主机操作系统40)在此处检测是否有任何文件满足分层策略中的分层标准(诸如包括在图1的分层信息12中的分层标准)。具体地讲,分层模块(诸如如图1的分层模块44)检测是否有任何文件满足分层标准。分层模块可以检测到与文件相关联的元数据指示该文件满足分层标准。例如,策略可以包括指示应将热度高于特定值的文件移动到特定层的热度标准。其元数据基于文件热度(由主机操作系统计算)来指示其未处于正确层的任何文件均满足分层标准并且应移动到合适的层。例如,如果文件的元数据指示该文件热度低于策略针对文件所在的层而指定的最低热度,则文件满足分层标准并应移动到另一个(更低)的层。如果没有文件满足分层标准,则该方法结束。
[0064]如果分层模块检测到文件满足分层标准,则该方法前进到355。在355处,主机操作系统检测文件是否被修改。为此,主机操作系统可以监控虚拟机文件的元数据以检测任何更改。在一实施例中,元数据包括位图,该位图包括虚拟机文件中每个文件的位。如果与文件对应的位变脏(例如被设置),则该文件已被修改并且在360处取消分层操作。
[0065]如果主机操作系统未指示文件已被修改,则在365处将文件移动到分层策略所指定的层并且方法结束。所述移动可以是从多层存储系统中的一个层移动到另一个更高或更低的层。或者,可以将文件向上或向下移动多个层,例如,从最低的层到最高的层。
[0066]图5是计算设备的框图,示出了可如何在软件中实施分层模块。计算系统510在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统510的实例包括但不限于各种设备中的任一种或多种,包括工作站、个人计算机、膝上型计算机、客户端侧终端、服务器、分布式计算系统、手持设备(例如个人数字助理和移动电话)、网络装置、存储器控制器(例如阵列控制器、磁带驱动器控制器或硬盘驱动器控制器)等。在其最基本的配置中,计算系统510可以包括至少一个处理器514和系统内存516。通过执行用于实施分层模块44的软件,计算系统510变为可被配置为在虚拟环境中执行DST的专用计算设备。
[0067]处理器514通常表示能够处理数据或解译和执行指令的任何类型或形式的处理单元。在某些实施例中,处理器514可以接收来自软件应用程序或模块的指令。这些指令可以使处理器514执行本文描述和/或不出的一个或多个实施例的功能。例如,处理器514可以执行和/或作为一种方法来执行本文描述的所有或一些操作。处理器514还可以执行和/或作为一种方法来执行本文描述和/或示出的任何其他操作、方法或过程。
[0068]系统内存516通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。系统内存516的实例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其他适用的内存设备。在一个实例中,可以将用于实施RAM模块135的程序指令加载到系统内存516中。
[0069]在某些实施例中,除处理器514和系统内存516之外,计算系统510还可以包括一个或多个组件或元件。例如,如图5所示,计算系统510可以包括内存控制器518、输入/输出(I/O)控制器520和通信接口 522,它们中的每一者都可以通过通信基础结构512互连。通信基础结构512通常表示能够在计算设备的一个或多个组件之间促进通信的任何类型或形式的基础结构。通信基础结构512的实例包括但不限于通信总线(诸如工业标准体系结构(ISA))、外围组件互连(PCI)、PCI Express(PCIe)或类似的总线)和网络。
[0070]内存控制器518通常表示能够处理内存或数据或控制计算系统510的一个或多个组件之间的通信的任何类型或形式的设备。例如,在某些实施例中,内存控制器518可以通过通信基础结构512来控制处理器514、系统内存516和I/O控制器520之间的通信。在某些实施例中,内存控制器518可以执行和/或作为一种方法单独或与其他元件共同执行本文描述和/或示出的一种或多种操作或功能。
[0071]I/O控制器520通常表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。例如,在某些实施例中,I/o控制器520可以控制或促进计算系统510的一个或多个元件之间的数据传输,所述元件诸如处理器514、系统内存516、通信接口 522、显示适配器526、输入接口 550和存储接口 554。
[0072]通信接口 522在广义上表示能够促进计算系统510与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施例中,通信接口 522可以促进计算系统510与包括附加计算系统的专用或公共网络之间的通信。通信接口 522的实例包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器和任何其他合适的接口。在至少一个实施例中,通信接口 522可以通过与网络(诸如互联网)的直接链接来提供与远程服务器的直接连接。通信接口 522还可以通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其他合适的连接来间接提供此类连接。
[0073]在某些实施例中,通信接口 522还可以表示主机适配器,该主机适配器可被配置为通过外部总线或通信信道来促进计算系统510与一个或多个附加网络或存储设备之间的通信。主机适配器的实例包括但不限于小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE) 1594主机适配器、串行高级技术附件(SATA)、串行连接SCSI (SAS)和外部SATA (eSATA)主机适配器、高级技术附件(ATA)和并行ATA (PATA)主机适配器、光纤通道接口适配器、以太网适配器等。
[0074]通信接口 522还可以允许计算系统510参与分布式或远程计算。例如,通信接口522可以接收来自远程设备的指令或将指令发送到远程设备以供执行。
[0075]如图5所示,计算系统510还可以包括至少一个显示设备524,该显示设备通过显示适配器526连接到通信基础结构512。显示设备524通常表示能够以可视方式显示显示适配器526转发的信息的任何类型或形式的设备。类似地,显示适配器526通常表示被配置为转发来自通信基础结构512(或来自帧缓冲器,如本领域所已知)的图形、文本和其他数据以在显示设备524上显示的任何类型或形式的设备。
[0076]如图5所示,计算系统510还可以包括通过输入接口 550连接到通信基础结构512的至少一个输入设备528。输入设备528通常表示能够向计算系统510提供输入(由计算机或人生成)的任何类型或形式的输入设备。输入设备528的实例包括但不限于键盘、指针设备、语音识别设备或任何其他输入设备。
[0077]如图5所示,计算系统510还可以包括通过存储接口 534连接到通信基础结构512的数据存储设备533。存储设备533通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备533可以包括磁盘驱动器(例如所谓的硬盘驱动器)、软盘驱动器、光盘驱动器、闪存驱动器等。存储接口 534通常表示用于在计算系统510的存储设备533和其他组件之间传输数据的任何类型或形式的接口或设备。
[0078]在某些实施例中,存储设备533可以被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的实例包括但不限于软盘、磁带、光盘、闪存设备等。存储设备533还可以包括允许将计算机软件、数据或其他计算机可读指令加载到计算系统510的其他类似结构或设备。例如,存储设备533可以被配置为读取和写入软件、数据或其他计算机可读信息。存储设备533还可以是计算系统510的一部分,或者可以是通过其他接口系统进行访问的独立设备。
[0079]可将多个其他设备或子系统连接到计算系统510。相反地,无需提供图5中示出的所有组件和设备,亦可操作本文描述和/或示出的实施例。上文提及的设备和子系统也可以通过不同于图5所示的方式互连。
[0080]计算系统510还可以采用任何数量的软件、固件和/或硬件配置。例如,本文所公开的一个或多个实施例可被编码为计算机可读存储介质上的计算机程序(也称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。计算机可读存储介质的实例包括磁性存储介质(例如硬盘驱动器和软盘)、光学存储介质(例如CD或DVD-ROM)、电子存储介质(例如固态驱动器和闪存介质)等。此类计算机程序也可以通过网络(诸如互联网)或载体介质传输到计算系统510以存储在内存中。
[0081]可以将包含计算机程序的计算机可读介质加载到计算系统510中。然后可以将计算机可读介质上存储的全部或部分计算机程序存储在系统内存516中和/或存储设备532和533的各个部分中。当由处理器514执行时,加载到计算系统510中的计算机程序可以使处理器514执行和/或作为一种方法来执行本文描述和/或示出的一个或多个实施例的功能。除此之外或作为另外一种选择,可以在固件和/或硬件中实施本文描述和/或示出的一个或多个实施例。例如,计算系统510可以被配置为用于实施本文所公开的一个或多个实施例的专用集成电路(ASIC)。
[0082]图6是网络体系结构600的框图,其中客户端系统610、620和630以及服务器640和645可以连接到网络650。客户端系统610、620和630通常表示任何类型或形式的计算设备或系统。
[0083]类似地,服务器640和645通常表示被配置为提供各种数据库服务和/或运行特定软件应用程序的计算设备或系统,诸如在计算设备(诸如图5中的计算系统510)上实施的应用程序服务器或数据库服务器。网络650通常表示任何电信或计算机网络,包括(例如)内联网、广域网(WAN)、局域网(LAN)、个人区域网(PAN)或互联网。在一个实例中,月艮务器640和/或645可以包括如图1所示的RAM模块135。
[0084]如图6所示,一个或多个存储设备660(1)-(N)可以直接连接到服务器640。类似地,一个或多个存储设备670 (I)-(N)可以直接连接到服务器645。存储设备660 (I) - (N)和存储设备670 (I)-(N)通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。在某些实施例中,存储设备660 (I)-(N)和存储设备670 (I)-(N)可以表示被配置为使用各种协议(诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS))与服务器640和645进行通信的网络连接存储(NAS)设备。
[0085]服务器640和645也可以连接到存储区域网络(SAN)光纤网680。SAN光纤网680通常表示能够促进多个存储设备之间的通信的任何类型或形式的计算机网络或体系结构。SAN光纤网680可以促进服务器640和645与多个存储设备690 (I)-(N)和/或智能存储阵列695之间的通信。SAN光纤网680还可以通过网络650以及服务器640和645以这样的方式促进客户端系统610、620和630与存储设备690(1)-(N)和/或智能存储阵列695之间的通信:设备690 (I)-(N)和阵列695呈现为客户端系统610、620和630的本地连接设备。与存储设备660 (I)-(N)和存储设备670 (I)-(N)相同,存储设备690 (I) - (N)和智能存储阵列695通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。
[0086]在某些实施例中,并参照图5的计算系统510,通信接口(诸如图5中的通信接口522)可以用于在每个客户端系统610、620和630与网络650之间提供连接。客户端系统610、620和630可能能够使用(例如)网页浏览器或其他客户端软件来访问服务器640或645上的信息。此类软件可以允许客户端系统610、620和630访问由服务器640、服务器645、存储设备660(1)-(N)、存储设备670(1)-(N)、存储设备690(1)-(N)或智能存储阵列695托管的数据。尽管图6示出了使用网络(例如互联网)来交换数据,但本文描述和/或示出的实施例并非仅限于互联网或任何特定的基于网络的环境。
[0087]在至少一个实施例中,本文所公开的一个或多个实施例中的全部或部分可被编码为计算机程序并加载到服务器640、服务器645、存储设备660(1)-(N)、存储设备670 (I)-(N)、存储设备690(1)-(N)或智能存储阵列695或它们的任意组合上并加以执行。本文所公开的一个或多个实施例中的全部或部分也可被编码为计算机程序,存储在服务器640中,由服务器645运行,以及通过网络650分配到客户端系统610、620和630。
[0088]在一些实例中,图1、5和6中的计算设备中的全部或部分可以表示云计算或基于网络的环境的一部分。云计算环境可以通过互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务(software as a service)、平台即服务(platform as a service)、基础结构即服务等(infrastructure as a service))可以通过网页浏览器或其他远程接口进行访问。本文所述的各种功能可以通过远程桌面环境或任何其他基于云的计算环境提供。
[0089]此外,本文所述的一个或多个组件可以将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,图1中的分层模块可以转换计算设备的行为,以便使计算设备在虚拟环境中执行DST操作。
[0090]尽管已结合多个实施例描述了本发明,但本发明并非旨在限制为本文中示出的具体形式。相反,本发明旨在涵盖可以合理地包含在所附权利要求所限定的本发明范围内的替代形式、修改形式和等同形式。
【权利要求】
1.一种方法,所述方法包括: 识别存储对象在虚拟机文件中的位置,其中 所述虚拟机文件包括多个存储对象; 检测所述存储对象是否满足标准,其中 所述标准是在分层策略中指定的;以及 响应于所述检测,发起将所述存储对象从第一存储层到第二存储层的移动。
2.根据权利要求1所述的方法,其中 所述识别包括访问元数据,其中 所述元数据包括用于识别多个索引节点的信息。
3.根据权利要求1所述的方法,其中 所述识别包括装载所述虚拟机文件。
4.根据权利要求1所述的方法,其中 所述存储对象包括元数据。
5.根据权利要求1所述的方法,还包括: 检测对所述存储对象的修改,其中 所述检测发生在所述移动期间。
6.根据权利要求1所述的方法,还包括: 创建列表,所述列表包括用于识别所述多个存储对象中的受所述分层策略约束的每个存储对象的信息。
7.根据权利要求1所述的方法,还包括: 生成映射,其中 所述映射识别所述多个存储对象中的受所述分层策略约束的每个存储对象在所述虚拟机文件中的位置。
8.根据权利要求1所述的方法,其中 所述存储对象包括文件。
9.根据权利要求1所述的方法,还包括: 识别由所述虚拟机执行的文件系统。
10.一种计算机可读存储介质,所述计算机可读存储介质包括可执行以下操作的程序指令: 识别存储对象在虚拟机文件中的位置,其中 所述虚拟机文件包括多个存储对象; 检测所述存储对象是否满足标准,其中 所述标准是在分层策略中指定的;以及 响应于检测所述存储对象是否满足所述标准,发起将所述存储对象从第一存储层到第二存储层的移动。
11.根据权利要求10所述的计算机可读存储介质,其中可进一步执行所述程序指令以便于: 访问元数据,其中 所述元数据包括用于识别多个索引节点的信息。
12.根据权利要求10所述的计算机可读存储介质,其中可进一步执行所述程序指令以便于: 装载所述虚拟机文件。
13.根据权利要求10所述的计算机可读存储介质,其中可进一步执行所述程序指令以便于: 检测所述存储对象是否在所述移动期间被修改。
14.根据权利要求10所述的计算机可读存储介质,其中可进一步执行所述程序指令以便于: 创建列表,所述列表包括用于识别所述多个存储对象中的受所述分层策略约束的每个存储对象的信息。
15.根据权利要求10所述的计算机可读存储介质,其中可进一步执行所述程序指令以便于: 生成映射,其中 所述映射识别所述多个存储对象中的受所述分层策略约束的每个存储对象在所述虚拟机文件中的位置。
16.—种系统,所述 系统包括: 一个或多个处理器;以及 连接到所述一个或多个处理器的内存,其中所述内存存储可执行以下操作的程序指令: 识别存储对象在虚拟机文件中的位置,其中 所述虚拟机文件包括多个存储对象; 检测所述存储对象是否满足标准,其中 所述标准是在分层策略中指定的;以及 响应于检测所述存储对象是否满足所述标准,发起将所述存储对象 从第一存储层到第二存储层的移动。
17.根据权利要求16所述的系统,其中可进一步执行所述程序指令以便于: 访问元数据,其中 所述元数据包括用于识别多个索引节点的信息。
18.根据权利要求16所述的系统,其中可进一步执行所述程序指令以便于: 检测所述存储对象是否在所述移动期间被修改。
19.根据权利要求16所述的系统,其中可进一步执行所述程序指令以便于: 创建列表,所述列表包括用于识别所述多个存储对象中的受所述分 层策略约束的每个存储对象的信息。
20.根据权利要求16所述的系统,其中可进一步执行所述程序指令以便于: 生成映射,其中 所述映射识别所述多个存储对象中的受所述分层策略约束的每个存储对象在所述虚拟机文件中的位置。
【文档编号】G06F9/50GK104025054SQ201280059684
【公开日】2014年9月3日 申请日期:2012年12月11日 优先权日:2011年12月15日
【发明者】S·库马尔, 文凯特莎·M·G 申请人:赛门铁克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1