CN102521009B - 创建并部署服务准备完毕虚拟硬盘 - Google Patents

创建并部署服务准备完毕虚拟硬盘 Download PDF

Info

Publication number
CN102521009B
CN102521009B CN201110340497.8A CN201110340497A CN102521009B CN 102521009 B CN102521009 B CN 102521009B CN 201110340497 A CN201110340497 A CN 201110340497A CN 102521009 B CN102521009 B CN 102521009B
Authority
CN
China
Prior art keywords
vhd
machine
task
network
hard disk
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
CN201110340497.8A
Other languages
English (en)
Other versions
CN102521009A (zh
Inventor
J·M·卡希尔
A·霍普曼
M·K·温德尔
E·R·莱尔马
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing 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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102521009A publication Critical patent/CN102521009A/zh
Application granted granted Critical
Publication of CN102521009B publication Critical patent/CN102521009B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

本发明描述了创建并部署服务准备完毕虚拟硬盘。云管理器为在线服务控制机器的部署和管理。构建系统创建安装在机器上的部署准备完毕的虚拟硬盘(VHD),该机器跨场中的一个或多个网络的分布,每个场都可以包括不同的配置。配置构建系统以构建不同配置的VHD,该不同配置取决于要对其使用VHD的虚拟机(VM)的角色。构建系统使用VHD以在测试和生产环境两者中为在线服务创建虚拟机(VM)。云管理器系统自动将所创建的虚拟硬盘(VHD)提供给机器。可在已经过测试的机器上直接安装相同的VHD。

Description

创建并部署服务准备完毕虚拟硬盘
技术领域
本发明涉及虚拟硬盘,尤其涉及创建并部署服务准备完毕虚拟硬盘。
背景技术
基于web的服务包括位于web服务器上的文件以及存储在数据库中的数据。例如,存在大量位于不同网络中以处理被定向到该服务的通信量的服务器。对包括大量服务器的在线服务的部署和操作进行管理是一种耗时的过程,该过程要求会受到人类错误影响的大运营人员队伍。
发明内容
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中还描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
云管理器为在线服务控制机器的部署和管理。构建系统创建安装在机器上的部署准备完毕的虚拟硬盘(VHD),该机器跨场(farm)中的一个或多个网络分布,每个场都可以包括不同的配置。配置构建系统以自动地构建不同配置的VHD,该不同配置取决于对其使用该VHD的虚拟机(VM)的角色。构建系统使用VHD以在测试和生产环境两者中为在线服务创建虚拟机(VM)。云管理系统自动将所创建的虚拟硬盘(VHD)提供给机器。可在已经过测试的机器上直接安装相同的VHD。
附图说明
图1示出了用于管理与诸如内容管理服务之类的在线服务相关联的网络的云管理器系统;
图2示出了包括管理器和相关联的数据库的云管理器;
图3示出了存储在数据库的一行内的示例性作业记录;
图4示出了用于网络的示例系统,所述网络包括用于在线服务的前端和后端服务器;
图5示出计算机的计算机体系结构;
图6示出了用于构建在在线服务内使用的虚拟盘的构建系统;
图7示出了用在构建系统中的示例性项目文件;
图8示出了示例性依赖性树;
图9示出了提供由构建系统创建的VHD的用于在线服务的云管理器;以及
图10示出了构建要被部署在在线系统中的VHD的过程。
具体实施方式
现将参考其中相同的标号代表相似的元素的附图来描述各实施例。
一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。也可使用其它计算机系统配置,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等等。也可使用在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
图1示出了用于管理与在线服务相关联的网络的云管理系统。系统100示出了云管理器105,该云管理器105连接到并且管理可能分布在世界各地的不同网络。网络中的每个被配置成为一个或多个承租人(tenant)(例如客户、顾客)提供内容服务。这些网络可以寄宿在云服务内和/或内部部署的(on-premises)数据中心内。云管理器105用于部署、配置和管理这些网络。云管理器被配置为通过可容忍间歇性网络故障的幂等的和异步的应用web服务应用编程接口(API)150来接收请求。
如所示的,云管理器105包括工作管理器110、机器管理器115、应用专用管理器120、脚本130以及诸如数据存储140(例如数据库)的中央储存库。未包括在所示管理器之一内的功能可以驻留在云管理器的某个其他位置处。根据一个实施例,应用管理器120是SharePoint承租人管理器,该管理器包括SharePoint专用逻辑。
工作管理器110管理任务的执行,并且启用对较长时间运行的任务的调度和重试。工作管理器110启动存储在作业队列112中的作业并且跟踪运行中的作业。当已经流逝了预定的时间时,工作管理器110可以自动地取消任务并且执行与该任务相关的某些进一步处理。根据一个实施例,作业队列112中的任务由工作管理器110通过调用一个或多个脚本130来执行。例如,可以使用诸如微软的的脚本语言来对由工作管理器110执行的任务进行编程。每个脚本可以作为新进程运行。尽管将每个脚本作为新进程来执行可以具有相当高的CPU开销,但是该系统是可伸缩的,并且帮助为每次脚本执行确保干净的环境,加上在脚本完成时进行完全的清理。
机器管理器115被配置为管理网络(例如网络1、网络2、网络3)中的物理机。一般而言,机器管理器115理解网络、物理机、虚拟机(VM)、VM映像(VHD)等等。机器管理器不具有到网络内运行的特定服务的强绑定,而是在“角色”方面跟踪网络中的各种组件。例如,可以通过API150请求机器管理器115在网络3上部署类型为“Foo”的具有版本12.34.56.78的VM。响应于对云管理器105的请求,机器管理器115对位于网络3上的合适物理机进行定位,并且根据与VM的角色相关联的VM映像来配置VM。使用类型为Foo的具有版本12.34.56.78的VHD来配置物理机,该VHD存储在诸如数据存储140的数据存储内。在网络内使用的映像也可以存储在其他位置处,诸如用于网络中的一个或多个的本地数据共享中。可以运行脚本来执行VHD在物理机上的安装以及用于执行任何部署后的配置。机器管理器115跟踪每个网络的机器配置。例如,机器管理器115可以跟踪VM的角色(VM的类型)、VM的状态(供应、运行、停止、故障)、版本以及VM是否存在于给定场中(这隐含了其网络)。
脚本130被配置为存储将要执行以便既本地地为云管理器105执行工作又远程地在所述网络中的一个或多个上执行工作的脚本。脚本130中的一个或多个还可以存储在其他位置。例如,将要在网络(例如网络1、网络2、网络3)上执行的脚本可以本地地存储到该网络。这些脚本可用于许多不同目的。例如,所述脚本可以用于执行对网络中的一个或多个中的机器的配置,改变之前配置的机器上的设定,添加新的VM,添加新的数据库,将数据从一个机器移动到另一个机器,移动承租人,改变方案等。根据一个实施例,这些脚本是微软的脚本。可以使用其他编程实现。例如,可以使用经编译的和/或前期绑定的编程语言来实现该功能。然而,脚本是一种表达将要执行的任务中的许多个的相当精确的语言。用诸如C#的编程语言对等价物进行编程将常常需要冗长得多的实现。脚本还被后期绑定,这意味着可以以多个版本的底层代码库为目标,而不必不断地链接到不同的接口DLL。使用PowerShell脚本将允许进程由云管理器105本地地启动,云管理器105进而可以启动远程机器(即,所附连的网络之一中的物理机)上的进程。还可以使用其他技术来启动远程机器上的进程,诸如安全外壳(SSH)等。
云管理器105正在管理的应用专用信息由应用管理器120来执行。根据一个实施例,应用专用信息与微软有关。由此,应用管理器120被配置为了解SharePoint承租人、站点集合等。
每个网络可以被配置成用于承租人的专用网络和/或服务于一个以上客户的多承租人网络。网络可以包括变化数目的物理机/虚拟机,物理机/虚拟机的配置在部署之后也不断变化。一般而言,只要未超过联网极限(例如,负载平衡器和网络交换机),网络就可以继续增长。例如,网络可以从十个服务器开始,并且之后扩充为一百个或更多个服务器。可以给网络内的物理机分配类或类型。例如,机器中的某些可以是计算机器(用于web前端和应用服务器),而其他机器可以是与计算机器相比配备有更多存储的存储机器。根据一实施例,云管理器105用多个版本的映像文件来配置网络内的机器。根据一实施例,场常常具有相同版本的映像文件。
根据一个实施例,在网络内由云管理器系统100通过虚拟化机器并且管理该网络内部独立地行动的“场”来管理软件极限。每个网络可以包括一个或多个场(例如,参见网络1)。根据一个实施例,网络被认为是经网络负载平衡的机器的单个群集,所述机器向外部世界展示一个或多个VIP(虚拟IP)并且可以将通信路由到网络内的任何机器。网络中的机器通常是紧耦合的,并且具有最小等待时间(即<1ms的查验(ping)等待时间)。
场是用于对需要紧密绑定关系的应用进行协调的机器的基本分组。例如,内容场可以部署在每个网络内以用于诸如微软的内容管理应用。一般而言,每一个场中的那组机器一起提供web服务和应用服务器功能。通常,场内的机器运行相同构建的应用(即SharePoint)并且共享公共的配置数据库以服务特定的承租人和站点集合。
场可以包含不同种类的虚拟机组。云管理器105在数据存储140内维护“场目标”,该场目标是每个场的每种角色的机器的目标数目。一些角色包括内容前端、内容中央管理、内容计时器服务、联合中央管理、联合应用服务器等。例如,内容场是处理接入消费者请求的基本SharePoint场。联合服务场包含可以跨场运行的诸如搜索和简档存储这样的SharePoint服务。场可以用于托管大容量公共因特网站点。某些场可以包含一组活动目录服务器和供应端口监控程序(ProvisioningDaemon)。云管理器105自动地部署网络中的虚拟机和/或停用网络中的虚拟机,以帮助满足所定义的目标。这些场目标可以自动地和/或手动地来配置。例如,场目标可以改变以响应于活动和容量需求的改变。网络场-每个网络存在一个包含可以作为整个网络的资源的容易扩展的所有VM角色的网络场。
云管理器web服务API150被设计为在可大规模伸缩的全局服务的上下文中工作。该API假定:任何网络请求可能失效和/或停留在传送中。对云管理器105的调用被配置为是幂等的。换言之,可以对云管理器105进行多次相同的调用(只要参数是相同的)而不改变结果。
云管理器105被设计为在向任何给定的请求返回响应之前进行非常少的处理(<10ms,<50ms)。云管理器105维护记录以跟踪当前请求。例如,云管理器105更新本地数据库中的记录,并且若需要则调度“作业”以在稍后执行更冗长的活动。
云管理器跟踪作为用于在网络内部署新机器的模板的映像(诸如,虚拟盘映像)。映像引用可以存储在诸如数据库140的数据库中和/或某个其他位置中。映像可以存储在对其上将部署映像的网络而言是本地的一个或多个共享的数据存储中。根据一个实施例,每个映像都包括:虚拟机(VM)角色类型,它指定映像可以部署的VM的类型;该映像应当使用的处理器的数目;将分配给该映像的RAM的量;用于找出附近安装点的网络ID(使得它们不会通过跨数据中心链路被反复地复制);以及可以被部署代码用于访问VHD的共享路径。
一般而言,由云系统100所管理的网络中的机器不是以传统方式通过下载数据并且将该数据合并到机器上的现有软件中来升级的。相反,机器是通过用已更新的VHD替换VHD来更新的。例如,当场需要新版本的软件时,部署安装了该新版本的新场。当部署新场时,将承租人从旧场移动到该新场。以此方式,由于升级造成的停机时间被最小化,并且场中的每个机器具有已被测试的相同版本。当虚拟机需要升级时,机器上的VM可以被删除并且由被配置为运行所需服务的VM所代替。
尽管对现有软件的升级不是最优的,但是网络内的某些服务器的确使用原地升级的传统更新过程。例如,活动目录域控制器是通过升级服务器上的当前软件而非完全替换机器上的映像来升级的。在一些实例中,云管理器也可以原地升级。
图2示出了包括管理器和相关联的数据库的云管理器。如所示的,云管理器200包括工作管理器210、工作数据库215、机器管理器220、机器数据库225、承租人管理器230、承租人数据库235、私密数据库245、以及web服务API240。
一般而言,将在云管理系统(例如系统100)内使用的数据库的大小调整为实现高性能。例如,数据库(诸如,工作数据库215、机器数据库225、承租人数据库235和私密数据库245)不能超过预定义的大小限制(例如30GB、50GB、100GB等)。根据一实施例,调整数据库的大小以使得其足够小以适合物理机的存储器。这有助于高读取I/O性能。还可以基于对于应用程序(诸如,与SQL服务器交互)的性能来选择数据库的大小。还可以调整用在场中的数据库的大小以实现高性能。例如,它们的大小可以被调整为能适合主机的存储器和/或被调整为使得备份操作、移动操作、复制操作、恢复操作一般在预定的时间段内执行。
云管理器200将云管理器数据划分成四个数据库。工作数据库215用于工作管理器。机器数据库225用于机器管理器220。承租人数据库235用于承租人管理器230,并且私密数据库245用于存储敏感信息,诸如系统账户和密码信息、凭证、证书等。数据库可以位于相同的服务器上,或者跨服务器分割。根据一实施例,每个数据库被镜像以获得高可用性,并且都是SQL数据库。
云管理器200被配置为使用缩减的SQL特征组与数据库交互以便有助于在数据库升级期间提供云管理器200的可用性。例如,尝试避免外键或已存储的过程。外键可能使方案变化变得困难并且导致意料之外的失效情况。已存储的过程将应用中的较大部分放置在数据库本身中。
尝试最小化与SQL服务器的通信,因为与底层操作的成本相比,往返可能是昂贵的。例如,如果当前SQL服务器到单个数据库的全部交互被包装在单个往返中,则常常是效率高得多的。
极少在数据库(215,225,235)内使用限制条件。一般而言,限制条件在其有助于在没有额外查询的情况下提供具有正确类型的错误处理的简单更新时是有用的。例如,完全合格的域名(FQDN)表具有对施加在“名称”上的限制条件,以帮助防止承租人意外地试图主张与已经被分配给不同承租人的FQDN相同的FQDN。
当添加索引时使用警告。索引通常以写入操作的额外I/O为代价来改善读取性能。由于数据库内的数据主要是驻留在RAM上的,因此即使全表扫描仍然是相对快的。根据一实施例,一旦查询模式已经稳定就可以添加索引,并且可以根据所提出的索引来确定性能改善。根据一实施例,如果添加索引将可能花费长时间,则可以指定“ONLINE=ON(在线=开启)”选项,以使得在最初构该建索引时表不被锁定。
根据一实施例,可以执行对云管理器内数据库的升级而不导致云管理器系统停工。换言之,即使在云管理器升级期间,云管理器继续处理已接收的请求。由此,对方案作出的改变将与之前的方案兼容。在升级云管理器所使用的web服务器之前运行SQL方案升级。当web服务器升级时,它们可以开始使用数据库中所启用的新特性。数据库升级被限制以使得升级中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向现有列添加新的可空列。可以在表的结尾处添加新的列。一般而言,避免对数据库的耗时操作。例如,在存在大量数据时,在创建时间向新添加的列添加缺省值可能是非常耗时的操作。然而,添加可空列是非常快速的操作。如上面所讨论的,允许添加新的索引,但是在添加新的限制条件时应当要小心以帮助保证方案升级不会破除现有数据。例如,当添加限制条件时,该限制条件可以被设置为如下状态:该限制条件不被检查并且避免对现有行和潜在的错误进行高成本的验证。旧表和未使用的列在新版本被使用并且云管理器不访问这些表和列以后被移除。
一般而言,每个数据库中的单个行用于指示任务和/或所需状态。例如,承租人数据库235包括用于每个承租人的单个行。给定的承租人可以包括所需版本(RequiredVersion)记录。该记录用于帮助确保该承租人被放置在运行所需版本的场上。例如,对于要停留在SharePoint14SP1上的承租人1而言,该承租人的所需版本可以被设置为“14.1”,并且包括14.1的任何版本都将匹配并且任何其他版本(例如14.2.xxxx)都将不匹配。承租人记录可以包括其他项目,诸如已授权的用户数目、限额(例如所允许的总数据使用、每用户的数据使用等)、时间限制等。某个组织可能具有代表不同地理位置、组织或能力的多个承租人。根据一实施例,在没有(经由外联网或其他特性)对用户的明确邀请的情况下承租人被彼此隔开。
根据一个实施例,每个承租人都被锁定到一专用网络中。使承租人相对于一小组数据库而言是本地化的。承租人或者是小的(小于将填充一个数据库的程度),在这种情况下,该承租人处于与其他承租人共享的恰好一个数据库中。这意味着共享该数据库的所有承租人需要同时升级。当承租人变大时,它可被移动到它自己的专用数据库,并且现在可以具有一个以上、但是不与其他承租人共享的数据库。在一个或多个专用数据库中维护大承租人有助于减少需要在单次升级中同时升级的数据库的数目。
类似地,工作数据库215包括用于每个作业的单个行。机器数据库225可以包括用于每个物理机、VM、场等的行。例如,机器管理器数据库225可以包括版本串。根据一实施例,网络内的每个VHD、场和VM具有相关联的版本串。
根据一个实施例,云管理器包括简单日志记录系统,该简单日志记录系统可以被配置为为每个web服务调用记录日志条目。可以实现包括如所期望的那样少和/或那样多的特性的日志记录系统。一般而言,日志记录系统被用于度量使用和性能剖析。
根据一实施例,web服务API240是使用具有ASP.net的SOAP来构建的。API中的各种web方法遵循两种主要模式——获取(Get)和更新(Update)。一般而言,更新方法采取数据结构作为输入,并且返回相同的结构作为输出。输出结构返回数据库中的底层对象的当前状态,其中如果确认或其他业务逻辑改变了一些特性或者以其他方式填充了附加的特性(例如记录ID或由云管理器计算出的其他值),则该底层对象可能不同于输入对象。这些更新方法被用于初始对象创建以及随后的更新。换言之,对web服务API240的调用者可以简单地请求它们想要的配置并且它们不需要跟踪对象是否已经存在。另外,这意味着更新是幂等的,因为相同更新调用可以进行两次而具有相同效果以使得该调用只有一次。根据一实施例,更新方法可以包括LastUpdated(最后更新)特性。当存在LastUpdated特性时,云管理器200在LastUpdated的值不与数据库中当前存储的值匹配的情况下拒绝该更新。一些更新方法包括在第一次调用该方法以后被设置并且在该方法的其他调用以后未被设置的特性。
云管理器200被配置为避免使用回调。由于回调可能是不可靠的,因此与云管理器200交互的客户可以在他们想要检查更新状况时使用web服务API来检查对象状况。根据一实施例,对更新方法的调用致使云管理器200将底层对象的状态设置为“供应”,并且当更新完成时,该状态被设置为“活动”。
图3示出了存储在数据库的一行内的示例性作业记录。如所示那样,记录300包括作业标识符302、类型304、数据306、所有者308、步骤310、最后一次运行312、期满时间314、下次时间316、状态318以及状况320。
一般而言,针对所请求执行的每个任务,云管理器都在数据库350(例如,图2中的工作数据库215)中创建记录。
作业标识符302用于为所请求的任务指定唯一的标识符。
类型304指定要执行的任务。例如,类型可以包括将要执行的脚本的名称。例如,当任务是运行名称为“DeployVM.ps1”的脚本时,则数据306可以包括标识符(例如“-VMID123”)。这允许将新任务类型被添加到系统,而不需要对该系统的经编译的或其他二进制部分进行任何改变。
数据306用于存储与该任务相关联的数据。例如,数据可以被设置成其上将执行该任务的承租人、机器、网络、VM等等。数据306还可以存储数据库中的值被设置成的一个或多个值。运行该任务的进程可以查看作业记录以获悉:所期望的机器数目被设置成何值。脚本使用数据库中的该值来执行操作。
所有者308指定进程/正在执行该进程的机器。例如,当云管理器机器开始执行作业时,该机器用该机器的ID来更新记录的所有者308部分。
步骤310提供对当前脚本的步骤的指示。例如,脚本可以将任务划分成任何数目的步骤。当该进程完成该脚本的步骤时,步骤310被更新。进程还可以查看步骤310以确定在该脚本中要执行什么步骤以及避免必须重新执行之前完成的步骤。
最后一次运行312提供脚本最后一次启动的时间。每当脚本启动时,最后一次运行时间都被更新。
期满时间314是指示该进程应当何时终止的时间。根据一实施例,期满时间是在进程启动以后的预定的时间量(例如5分钟、10分钟...)。期满时间可以由提出请求的进程通过web服务API来更新。
下次时间316是指示任务下次应当何时被执行的时间。例如,进程可以在完成某步骤以后停止,并且被指示等待直到所指定的下次时间316以恢复处理。
状态318指示当前状态,并且状况320指示作业的状况(例如已创建、已挂起、已恢复、执行中、已删除)。
如果数据库中重复的行具有相同的任务类型和数据值,则它们可以在被执行以前被移除。例如,可以进行多个请求以执行存储在数据库的多个行中的相同任务。
作业可以具有与它相关联的一个或多个锁355。如果锁不可用,则作业将不被调度运行,直到锁可用。这些锁可以以许多不同的方式来配置。例如,锁可以基于互斥锁、信号机等等。一般而言,互斥锁防止代码被一个以上线程并发地执行,而信号机将共享资源的同时使用的数目限制为最大数目。根据一实施例,锁是表示资源的字符串。该资源可以是任何类型的资源。例如,锁可以是场、机器、承租人等等。一般而言,锁用于延迟一个或多个任务的执行。每个作业都可以指定其在运行以前需要的一个或多个锁。作业可以在其操作期间的任何时间释放锁。当存在锁时,作业不被调度。需要一个以上锁的作业一次请求所需的所有锁。例如,已经持有锁的作业可以不请求附加的锁。这样的方案有助于防止由多个作业间的循环锁依赖性造成的可能的死锁情况。
图4示出了用于网络的示例系统400,该网络包括用于在线服务的前端和后端服务器。示例系统400包括客户端402和404、网络406、负载平衡器408、WFE服务器410、412、414以及后端服务器416-419。可使用更多或更少的客户端、WFE、后端服务器、负载平衡器和网络。附加地,由系统400中的组件所提供的一些功能可以由其他组件来执行。例如,一些负载平衡可以在WFE中执行。
在示例实施例中,客户端402和404是诸如台式计算机、膝上型计算机、终端计算机、个人数字助理、或蜂窝电话设备之类的计算设备。客户端402和404可包括输入/输出设备、中央处理单元(“CPU”)、数据存储设备和网络设备。在本申请中,术语客户端和客户端计算机互换地使用。
WFE410、412和414可由客户端402和404经由负载平衡器408通过网络406访问。如所讨论的那样,这些服务器可以在场中配置。后端服务器416对WFE410、412和414是可访问的。负载平衡器408是专用网络设备和/或一个或多个服务器计算机。负载平衡器408、420,WFE410、412和414以及后端服务器416可包括输入/输出设备、中央处理单元(“CPU”)、数据存储设备和网络设备。在示例实施例中,网络406是因特网,并且客户端402和404可以远程地访问WFE410、412和414以及连接到WFE410、412和414的资源。
在一示例实施例中,系统400是在线的、基于浏览器的文档协作系统。在线的、基于浏览器的文档协作系统的一个示例是来自华盛顿州雷蒙德市的微软公司的Microsoft在系统400中,后端服务器416-419中的一个或多个是SQL服务器,例如,来自华盛顿州雷蒙德市的微软公司的SQL服务器。
WFE410、412和414提供客户端402和404以及后端服务器416-419之间的接口。负载平衡器408、420将请求从自客户端402和404引导到WFE410、412和414,以及从WFF引导到后端服务器416-419。负载平衡器408使用诸如WFE的利用率、连接到WFE的连接数目和整体WFE性能之类的因素来确定哪个WFE服务器接收客户端请求。类似地,负载平衡器420使用诸如后端服务器利用率、连接到服务器的连接数目和整体性能之类的因素来确定哪个后端服务器接收请求。
客户端请求的示例可以是:访问存储在后端服务器中的一个上的文档;编辑存储在后端服务器(例如416-419)上的文档;或者将文档存储在后端服务器上。当负载平衡器408通过网络406接收到客户端请求时,负载平衡器408确定WFE服务器410、412和414中的哪个接收该客户端请求。类似地,负载平衡器420确定后端服务器416-419中的哪个从该WFE服务器接收请求。后端服务器可以被配置为存储一个或多个承租人(例如消费者)的数据。
现在参考图5,将描述在各实施例中利用的计算机500的说明性计算机体系结构。图5所示的计算机体系结构可被配置为服务器、台式或移动计算机,并且包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器(“ROM”)11的系统存储器7、以及将存储器耦合至中央处理单元(“CPU”)5的系统总线12。
基本输入/输出系统存储在ROM11中,所述基本输入/输出系统包含帮助在诸如启动期间在计算机内元件之间传递信息的基本例程。计算机500还包括大容量存储设备14以用于存储操作系统16、应用程序10、数据存储24、文件、以及与云系统100的执行和同云系统100的交互相关的云程序26。
大容量存储设备14通过连接至总线12的大容量存储控制器(未示出)连接到CPU5。大容量存储设备14及其相关联的计算机可读介质为计算机500提供非易失性的存储。虽然此处包含的计算机可读介质的描述指的是诸如硬盘或CD-ROM驱动器等大容量存储设备,但是计算机可读介质可以是能够由计算机100访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、可擦除可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机500访问的任何其它介质。
根据各实施例,计算机500可以使用通过诸如因特网等网络18至远程计算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线12的网络接口单元20来连接到网络18。网络连接可以是无线的和/或有线的。网络接口单元20也可用于连接到其它类型的网络和远程计算机系统。计算机500还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器22,这些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/输出控制器22可以为显示屏28、打印机或其它类型的输出设备提供输出。
如上面简要提到的那样,多个程序模块和数据文件可以存储在计算机500的大容量存储设备14和RAM9内,包括适于控制联网计算机的操作的操作系统16,比如华盛顿州雷蒙德市的微软公司的操作系统。大容量存储设备14和RAM9还可以存储一个或多个程序模块。具体而言地,大容量存储设备14和RAM9可以存储诸如云程序26之类的执行与云系统相关的任务的一个或多个应用程序。
图6示出了用于构建在在线服务内使用的虚拟盘的构建系统。
如所示,构建系统600包括源代码605、软件库606、构建机器610、VHD存储615、云管理器620以及网络1和2(630、640)。
配置构建机器610来创建将要在云管理器系统内使用以创建VM的VHD。构建机器610创建部署准备完毕虚拟硬盘(VHD),它可被存储在VHD存储615中并在主机上使用,以实例化跨场中的一个或多个网络分布的VM,每一个场可包括不同配置。配置构建系统以构建不同配置的VHD,该不同配置取决于要对VHD使用的虚拟机(VM)的角色。例如,可为web前端(WFE)、SQL服务器、联合服务服务器、活动目录服务器等等创建VM。构建机器使用VHD以在测试和生产环境两者中为在线服务创建虚拟机(VM)。根据一实施例,使用来自微软公司的MSBUILD和HYPER-V创建VHD和VM。还可以使用其它构建工具。
通过主项目文件控制VHD的整个构建过程(参见图7示例性构建文件700)。主项目文件包括定义、软件引用、配置操作,以及用于构建VHD的项目文件。使用这个主项目文件,构建器612(例如msbuild.exe)从构建机器610被调用以构建由这些项目文件定义的VHD。VHD可在检测到触发事件时或按需自动构建。例如,当检测到软件的新版本时,使用该新软件的VHD可被自动构建。在构建之后,可将VHD自动复制到对于一个网络来说是本地的一个或多个网络共享(例如网络共享632、网络共享642)和/或一些其他全局网络共享(未示出)。
在构建过程中,多个VHD可并行或串行构建。例如,独立项目可同时构建。可使用依赖性树来确定可并行构建的项目(参见图8示例性依赖性树)。可将其他VHD用作开始点来构建VHD,而非每次必须从头创建。被构建的VHD的项目定义可包含对其他VHD的引用,使得一VHD可被用作要在其顶部构建许多其他VHD的公共“基础”。以此方式,一个VHD项目定义的输入可能是另一个的输出,从而形成整个构建过程的依赖性树。由于这些依赖性在项目文件它们自身中被指示,依赖性管理可由构建器612自动处理。这帮助确保,如果先决条件VHD已经改变,那么那个VHD,以及依赖于它的其他VHD将以合适次序被重新构建。
可创建差异VHD,而不是每次创建一组新的VHD时创建且必须部署完整的VHD。差异VHD仅包含相关联父VHD的被修改了的盘块。父VHD也可以是差异VHD。多个差异VHD创建差异链。在云管理器系统内使用差异VHD允许更快的部署新VHD,因为不需要将那么多信息从一个网络位置移动到另一个网络位置。
在构建过程中,构建机器610访问来自一个或多个数据存储(例如源605)的源代码,以及来自一个或多个软件库(例如软件库606)的软件。构建器612将创建临时VM并附加VHD。按照构建文件700中的指令,构建器612复制脚本和二进制代码,安装指定的软件,并对软件和/或对VM的操作系统执行指定的配置。在构建结束时,构建器612准备用于普通消费的VM。构建器612丢弃临时VM并随后将已构建的VHD存储在另一数据存储中(例如VHD存储615)。根据一实施例,使用来自微软的SYSPREP工具来准备VM。在另一实施例中,在构建过程中,构建器612不需要临时VM安装软件或改变操作系统。相反,构建器可装配VHD并在已装配的盘上直接执行全部配置。所构建的VHD也可自动地/手动地部署到一个或多个其他位置。例如,要被部署在网络1(630)中的VHD可被放置在网络共享632中,而要被部署在网络2(640)中的VHD可被放置在网络共享642中。当创建差异VHD时,则可仅将差异VHD部署到本地网络共享。
云管理器620被配置为自动将所创建的虚拟硬盘(VHD)提供给机器。可在已经过测试的机器上直接安装相同的VHD。例如,在一个或多个场内的每个机器可包括相同版本和构建的VHD。例如,当部署场(例如场11、12、13、15、16)时,云管理器620可执行作业,该作业调用包含向机器通过匹配其在在线服务内的角色的VHD的任务的脚本。在一实施例中,用于创建VM的VHD在紧接着用它们创建VM之前,可动态扩展并被转换为固定的。动态扩展VHD使用与它们包含的数据量成比例的盘空间,反之固定VHD使用预先确定的已完全扩展的量。虽然固定VHD提供改善了的VM性能。可出于不同的目的创建场。例如,可以有内容场、联合服务场、SQL场等等。机器可主存在它们的VHD之间共享共性的多个VM。当指定角色的VM正在一机器上被创建时,它的VHD被复制到该机器。在一个实施例中,这些VHD的副本存储在机器上以供后来的VM使用,这些VM将被部署到机器并可能共享同一VHD的部分或全部。此实施例避免为相同机器上的后续VM的公共VHD进行网络复制,从而改善了部署时间。
图7示出了用在构建系统中的示例性项目文件。
该项目文件描述了要构建什么项目以及如何用不同平台和配置来构建它们。该项目文件格式也使得开发者能够创作可重新使用的构建规则,该构建规则可被分解到分开的文件中,使得可在它们的产品中跨不同项目始终如一地执行构建。
参考项目文件700,PropertyGroup(特性组)710用于将一组特性集中在一起。在一个项目文件中可以有超过一个特性组,并且相同的特性可被放置在一个以上的PropertyGroup中。定义PropertyGroup时可包括,指定仅当条件满足时将PropertyGroup用于构建的可选条件属性。
通过将项目集合的名称作为ItemGroup(项目组)元素720之子以创建元素,来在项目文件中声明项目。项目代表了向构建系统的输入,并且基于它们的用户定义了的集合名称来组合到项目集合中。这些项目集合可被用作任务的参数,该任务使用包含在集合中的单独的项目来执行构建过程的步骤。
任务被包含在Target(目标)元素730中。任务可使用参数,该参数作为元素的属性来传递。项目集合和特性也可被用作参数。目标按特定次序将任务集中在一起,并将项目文件的部分暴露作为进入构建过程的入口点。目标常常被组织为逻辑部分以允许扩展和增加可读性。将构建步骤打破为许多目标允许你从其他目标中调用构建过程的一片,无须将代码的那部分复制到每个目标中。例如,如果进入构建过程的几个入口点需要构建引用,你可以创建构建引用的目标并从每个需要的入口点运行那个目标。
根据一实施例,在构建过程中使用PowerShell脚本。例如,在正被构建的VM上发生的任务执行,通过使用POWERSHELL从构建机器主存操作系统远程发送到VM它自身来执行。还使用其他自定义构建任务。以下是被创建以使用VM为在线系统构建VHD的示例性任务列表。
PowerShell任务被用于调用PowerShell代码。日志记录和错误被反馈回构建器612。根据一实施例,不可恢复的错误作为错误提出,否则可使用警告或消息。参数包括脚本、脚本文件和计算机名称。根据一实施例,脚本参数是直接执行的PowerShell代码。该脚本可调用自定义代码和/或调用CmdLets。脚本文件参数包括到PowerShell脚本文件的一个或多个相对或绝对路径以及被执行的参数。根据一实施例,路径以所提供的相同次序以及在相同运行空间中执行(例如:<path1>-param“foo”;<path2>-param“bar”)。计算机名称参数是其上运行脚本的计算机的名称。如果提供远程机器,则在远程机器上创建新运行空间。以下是用于VHD的构建过程中的示例性任务。
NewVM(新VM)任务使用指定的VHD文件创建新虚拟机。参数包括Name(名称)、ComputerName(计算机名称)、VHD、Unattend(不参与),以及Passwordfile(口令文件)。Name参数是要创建的虚拟机的名称。Unattend参数是通往要在系统预备的(sysprepped)VHD上使用的Unattend文件的相对或绝对路径。Passwordfile参数是通往包含要用于链接到VM的经散列的凭证的文件的相对或绝对路径。RemoveVM(移除VM)任务移除现存的虚拟机。参数包括Name(名称)、VHDPath(VHD路径),以及ManifestPath(清单路径)。Name参数是要移除的虚拟机的名称。ManifestPath参数是通往要输出清单的位置的相对或绝对路径。
StartVM(开始VM)任务启动指定的虚拟机,并包括指定要启动的VM的名称的Name(名称)参数。
ShutdownVM(关闭VM)任务关闭指定的虚拟机。参数包括Name(名称)和Sysprep(系统预备)。Name参数是要关闭的虚拟机的名称。Sysprep参数指示在关闭前虚拟机是否要被系统预备。
NewVHD(新VHD)任务在指定路径上创建新VHD。如果提供了ISO和可选Unattend参数,新VHD任务使用该ISO和Unattend参数创建新VM,系统预备它,并将那些改变提交给VHD。参数包括VHDPath(VHD路径)、Size(大小)、Fixed(固定)、ISO以及Unattend(不参与)。VHDPath参数是关于在哪里创建VHD文件的绝对或相对本地路径。Size参数是要被创建的VHD的以MB为单位的大小。Fixed参数是所创建的VHD将是固定的或动态的。ISO参数是通往用于创建VHD的OSISO映像的相对或绝对路径。Unattend参数是通往用来安装ISO的Unattend文件的相对或绝对路径。
MountVHD(装配VHD)任务将VHD装配到本地文件系统,因此其内容可被操纵。参数包括VHDPath(VHD路径)和MountPath(装配路径)。VHDPath是通往要装配的VHD文件的相对或绝对路径。MountPath参数是装配VHD的绝对路径。
UnmountVHD(卸载VHD)任务卸载先前装配的VHD文件。参数包括VHDPath(VHD路径)参数,该参数为通往要卸载的VHD文件的相对或绝对路径。
图9示出了提供由构建系统创建的VHD的用于在线服务的云管理器。
云管理器905用于部署、配置和管理在线服务的网络。云管理器被配置为通过不能依靠可靠网络的幂等和异步的应用web服务应用编程接口(API)920来接收请求。
如图所示,云管理器905包括工作管理器110、机器管理器115、应用专用管理器120、脚本130、数据库910、脚本130、VHD915,和web服务API920。根据一个实施例,应用管理器920是SharePoint承租人管理器,该管理器包括SharePoint专用逻辑。
使用API920的请求可用于在跨不同网络(网络1、网络2)的各种拓扑结构中管理和部署服务器。尽管仅仅示出了两个网络,但是一般管理多得多的网络(例如十个、一百个、一千个、一万个等等)。云管理器905运行,并且可以与上面所示和所描述的云管理器系统类似地来配置。web服务API920包括向工作管理器110、机器管理器115和应用管理器120请求服务的方法。例如,可以使用API920作出请求,以便更新数据库中的承租人、添加新的SQL服务器、部署新的场、添加新的机器、更新VM、获得数据存储内的值、等等。
Web服务API920被设计为在可缩放全局服务的上下文中工作。由于网络请求被假定为是固有地不可靠的,因此API假定任一网络请求可能失效和/或停留在传送中。使用web服务API920的请求被配置为是幂等的。换言之,可以使用web服务API920作出具有相同参数的相同调用,而不改变结果。
云管理器905被设计为在向任何给定的请求返回响应之前进行非常少的处理(<10ms,<50ms)。云管理器905维护记录以跟踪当前请求。例如,云管理器905更新本地数据库中的记录,并且若需要则调度“作业”以在稍后执行更长的活动。一旦参数和作业信息被提交到数据库之后,响应就被发送给请求者。根据一实施例,web服务API920是使用带有ASP.net的SOAP来构建的。
VHD915被配置为存储正在被使用的和/或将要部署在一个或多个网络的一个或多个机器上的虚拟硬盘(VHD)映像。使用此处描述的中央构建系统980创建VHD。根据一实施例,使用VHD文件格式,该格式指定可以驻留在封装在单个文件内的本机主文件系统上的虚拟机硬盘。一般而言,VHD格式是广泛适用的,因为该格式对与该格式一起使用的虚拟化技术、主操作系统、或者客操作系统是不可知的。用在特定网络内的VHD可以移动到全局共享945和/或对网络而言是本地的网络共享(例如网络共享955)。将VHD存储在网络共享上将节省部署映像的时间,因为减少了网络通信时间。更新方法可用于更新VHD945内和/或全局/网络共享之一内的VHD。
图10示出了用于构建要被部署在在线系统中的VHD的过程。
当阅读对在此提供的例程的讨论时,应当理解,各实施例的逻辑操作被实现为(1)运行于计算系统上的一系列计算机实现的动作或程序模块,和/或(2)计算系统内互连的机器逻辑电路或电路模块。该实现是取决于实现本发明的计算系统的性能要求来选择的。因此,所例示的并且构成此处所描述的实施例的逻辑操作被不同地表示为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。
在开始操作后,过程1000进展到操作1010,其中创建了构建项目,该构建项目指定包括要被包括在虚拟硬盘上的虚拟机的运行环境的创建。构建项目包括一个或多个项目文件,该一个或多个项目文件描述了要构建什么项目以及如何用不同平台和配置来构建它们。
移到操作1020,作出关于何时构建VHD的确定。可手动和/或基于触发事件自动开始VHD的构建过程。触发事件可以与许多不同事件相关。例如,一个或多个以下事件可被用作触发事件:源代码改变、特定日期、新场请求、新机器请求、定义的VM的新类型,等等。根据一实施例,当检测到源代码的新版本时,开始VHD的构建过程。
流到操作1030,构建被项目和项目内的文件所指定的VHD和VM。在构建过程期间,构建机器访问引用的源代码和软件来为在线系统创建VHD。所创建的VHD可以是完全VHD和/或差异VHD。例如,差异VHD可在基础VHD已被创建后使用。
转向操作1040,所创建的VHD被存储。VHD可被存储在一个或多个位置中。VHD可被存储在与构建机器相关联的数据存储、用于在线系统中的一个或多个网络的本地数据存储、全局数据存储等中。例如,一旦VHD被创建,VHD可被自动放置在对于它们在其中被提供的网络而言是本地的数据共享中。
移到操作1050,VHD可被自动放置在网络内部的机器上并开始。例如,云管理器系统可请求部署新机器、场等的作业。
以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。

Claims (10)

1.一种用于构建虚拟硬盘以用于在线系统中的部署的方法,包括:
访问构建项目,所述构建项目指定要执行的动作来创建一组部署准备完毕虚拟硬盘VHD,以用于在线服务中的远程部署,所述在线服务包括包含在场中安排的机器的不同网络(1010);
从所述构建项目自动构建依赖性树(800)以确定构建所述VHD的次序;
检测包括以下至少一个的触发事件:检测到软件的新版本、特定日期、新场请求、新机器请求,和定义的VM的新类型;
响应于检测到所述触发事件,使用所述构建项目根据由所述依赖性树确定的构建次序自动构建所述VHD,其中所述构建项目内的不同VHD基于虚拟机的角色来创建(1030);
将所述VHD存储在数据存储中以用于自动部署(1040);以及
在至少一个所述场内的机器上部署同样的VHD。
2.如权利要求1所述的方法,其特征在于,所述触发事件是用于构建所述VHD(600)的源代码更新。
3.如权利要求1所述的方法,其特征在于,VHD的项目定义包括对基础VHD的引用,所述基础VHD用作构建其它VHD的基础(1020)。
4.如权利要求3所述的方法,其特征在于,自动构建VHD包括构建包含相关联父VHD的已修改的盘块的差异VHD。
5.如权利要求4所述的方法,其特征在于,还包括自动将所述差异VHD存储在所述不同网络的至少一个中的本地数据共享中(1040)。
6.如权利要求1所述的方法,其特征在于,脚本(130)被用于执行所述构建项目中所指定的任务,其中所述任务包括,运行脚本任务、新虚拟机任务、移除虚拟机任务、开始虚拟机任务、关闭虚拟机任务、新VHD任务、装配VHD任务,以及卸载VHD任务。
7.如权利要求1所述的方法,其特征在于,使用所述构建项目自动构建所述VHD包括使用中央服务内的机器自动构建所述VHD,所述中央服务部署和管理所述在线服务的机器;以及在至少一个所述场内的机器上部署同样的VHD包括,响应于从所述中央服务中的远程机器接收的命令自动将所述VHD安装在所述在线服务中的机器上。
8.一种用于构建虚拟硬盘以用于在线系统中的部署的系统,包括:
处理器和计算机可读介质(5);
存储在所述计算机可读介质上并在所述处理器上执行的操作环境(16);
被耦合到不同网络的云管理器(105),用于管理对机器的部署和对所述网络的配置,以及自动向所述在线服务中的机器部署虚拟硬盘VHD;以及
所述不同网络的每一个中的数据存储(632),用于存储虚拟硬盘,所述虚拟硬盘被用于所述网络内的机器的部署;以及
构建系统,被配置成执行动作,所述动作包括:
访问构建项目,所述构建项目指定要执行的动作,以创建一组虚拟硬盘VHD以及虚拟机VM以用于远程部署(1010);
从所述构建项目自动构建依赖性树(800)以确定构建所述VHD的次序;
检测包括以下至少一个的触发事件:检测到软件的新版本、特定日期、新场请求、新机器请求,和定义的VM的新类型;
响应于检测到所述触发事件,使用所述构建项目根据由所述依赖性树确定的构建次序自动创建所述VHD(1030);以及
将所述VHD存储在数据存储中以用于自动部署(1040)。
9.如权利要求8所述的系统,其特征在于,还包括使用所述依赖性树来确定要并行构建的VM。
10.如权利要求8所述的系统,其特征在于,脚本(130)被用于执行所述构建项目中所指定的任务,其中所述任务包括,运行脚本任务、新虚拟机任务、移除虚拟机任务、开始虚拟机任务、关闭虚拟机任务、新VHD任务、装配VHD任务,以及卸载VHD任务。
CN201110340497.8A 2010-10-20 2011-10-19 创建并部署服务准备完毕虚拟硬盘 Active CN102521009B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/908,671 US9069620B2 (en) 2010-10-20 2010-10-20 Creating and deploying service-ready virtual hard disks
US12/908,671 2010-10-20

Publications (2)

Publication Number Publication Date
CN102521009A CN102521009A (zh) 2012-06-27
CN102521009B true CN102521009B (zh) 2016-04-27

Family

ID=45974091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110340497.8A Active CN102521009B (zh) 2010-10-20 2011-10-19 创建并部署服务准备完毕虚拟硬盘

Country Status (4)

Country Link
US (3) US9069620B2 (zh)
CN (1) CN102521009B (zh)
SG (2) SG189889A1 (zh)
WO (1) WO2012054216A2 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069620B2 (en) 2010-10-20 2015-06-30 Microsoft Technology Licensing, Llc Creating and deploying service-ready virtual hard disks
US8635607B2 (en) 2011-08-30 2014-01-21 Microsoft Corporation Cloud-based build service
US20130074066A1 (en) * 2011-09-21 2013-03-21 Cisco Technology, Inc. Portable Port Profiles for Virtual Machines in a Virtualized Data Center
US9313099B2 (en) 2012-01-13 2016-04-12 Logic PD, Inc. Systems, devices and methods for provisioning, pairing and activating a newly manufactured device for automatic joining of customer's network
US8857705B2 (en) 2012-01-13 2014-10-14 Logic PD, Inc. Methods for embedding device-specific data to enable remote identification and provisioning of specific devices
US8857704B2 (en) 2012-01-13 2014-10-14 Logic PD, Inc. Methods for embedding device-specific data to enable remote access to real time device data
KR101623297B1 (ko) * 2012-04-13 2016-05-20 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 목적지 클라우드 시스템 요건들의 결정
US20130326063A1 (en) * 2012-05-31 2013-12-05 Lloyd Leon Burch Techniques for workload discovery and organization
US20140019960A1 (en) * 2012-07-12 2014-01-16 Microsoft Corporation Systems and methods of creating custom virtual machines
GB2506595A (en) 2012-10-02 2014-04-09 Ibm Provisioning systems in parallel based on success rate
TWI502366B (zh) * 2012-11-02 2015-10-01 Hope Bay Technologies Inc 雲端叢集系統及其開機部署方法
US9338254B2 (en) 2013-01-09 2016-05-10 Microsoft Corporation Service migration across cluster boundaries
US9032402B2 (en) 2013-03-14 2015-05-12 Vmware, Inc. Managing an independent virtual disk
US9436494B2 (en) * 2013-03-14 2016-09-06 Vmware, Inc. Preserving an independent virtual disk
CN103150203B (zh) * 2013-03-29 2016-04-13 北京奇虎科技有限公司 一种虚拟机控制系统、虚拟机控制器及控制方法
SG11201607320TA (en) * 2014-03-07 2016-10-28 Capitalogix Llc Systems and methods for allocating capital to trading strategies for big data trading in financial markets
US9817651B2 (en) * 2014-03-17 2017-11-14 Successfactors, Inc. Recommending updates to an instance in a SaaS model
US9804789B2 (en) * 2015-06-24 2017-10-31 Vmware, Inc. Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
US10101915B2 (en) 2015-06-24 2018-10-16 Vmware, Inc. Methods and apparatus to manage inter-virtual disk relations in a modularized virtualization topology using virtual hard disks
US10126983B2 (en) 2015-06-24 2018-11-13 Vmware, Inc. Methods and apparatus to enforce life cycle rules in a modularized virtualization topology using virtual hard disks
US9928010B2 (en) 2015-06-24 2018-03-27 Vmware, Inc. Methods and apparatus to re-direct detected access requests in a modularized virtualization topology using virtual hard disks
US10235209B2 (en) * 2015-08-28 2019-03-19 Vmware, Inc. Hybrid task framework
CN105740099B (zh) * 2016-01-27 2019-07-09 北京轻元科技有限公司 一种基于上下文感知的云计算系统镜像准备工具和方法
US10320572B2 (en) * 2016-08-04 2019-06-11 Microsoft Technology Licensing, Llc Scope-based certificate deployment
FI20165910L (fi) * 2016-11-30 2018-05-31 AJR Solutions Oy Virtuaalikoneiden siirtäminen
US10951600B2 (en) * 2017-05-08 2021-03-16 Microsoft Technology Licensing, Llc Domain authentication
US10715494B2 (en) 2017-05-15 2020-07-14 Microsoft Technology Licensing, Llc Orchestrating work across domains and work streams
CN108874507A (zh) * 2018-06-27 2018-11-23 郑州云海信息技术有限公司 一种信息清除方法、装置及计算机可读存储介质
US10742517B2 (en) 2018-06-29 2020-08-11 International Business Machines Corporation Rapid testing of configuration changes in software defined infrastructure
CN111538738B (zh) * 2020-04-27 2023-04-14 咪咕文化科技有限公司 服务升级方法、装置、电子设备及存储介质
CN112433677A (zh) * 2020-11-24 2021-03-02 浪潮云信息技术股份公司 一种云镜像服务对接多种存储后端的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257584B2 (en) * 2002-03-18 2007-08-14 Surgient, Inc. Server file management

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1297446B1 (en) 2000-07-05 2005-09-21 Ernst &amp; Young LLP Method and apparatus for providing computer services
US20050149682A1 (en) 2001-10-09 2005-07-07 Han-Gyoo Kim Virtual multiple removable media jukebox
GB0220846D0 (en) * 2002-09-07 2002-10-16 Ibm Remote dynamic configuration of a web server to facilitate capacity on demand
US8225306B2 (en) 2002-12-12 2012-07-17 Dell Products L.P. Platform independent imaging method and system
JP4429763B2 (ja) 2004-02-26 2010-03-10 株式会社日立製作所 情報処理装置の制御方法、情報処理装置、及びストレージ装置の制御方法
US7810092B1 (en) * 2004-03-02 2010-10-05 Symantec Operating Corporation Central administration and maintenance of workstations using virtual machines, network filesystems, and replication
US7802000B1 (en) * 2005-08-01 2010-09-21 Vmware Virtual network in server farm
US9547485B2 (en) * 2006-03-31 2017-01-17 Prowess Consulting, Llc System and method for deploying a virtual machine
US8015563B2 (en) * 2006-04-14 2011-09-06 Microsoft Corporation Managing virtual machines with system-wide policies
US8924524B2 (en) * 2009-07-27 2014-12-30 Vmware, Inc. Automated network configuration of virtual machines in a virtual lab data environment
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8108855B2 (en) * 2007-01-02 2012-01-31 International Business Machines Corporation Method and apparatus for deploying a set of virtual software resource templates to a set of nodes
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
US8219987B1 (en) * 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US9262366B2 (en) * 2007-09-21 2016-02-16 Microsoft Technology Licensing, Llc Software deployment in large-scale networked systems
US8572043B2 (en) 2007-12-20 2013-10-29 International Business Machines Corporation Method and system for storage of unstructured data for electronic discovery in external data stores
US8291180B2 (en) * 2008-03-20 2012-10-16 Vmware, Inc. Loose synchronization of virtual disks
US8849971B2 (en) 2008-05-28 2014-09-30 Red Hat, Inc. Load balancing in cloud-based networks
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8397046B2 (en) * 2009-03-26 2013-03-12 Hitachi, Ltd. Method and apparatus for deploying virtual hard disk to storage system
US8135818B2 (en) * 2009-06-22 2012-03-13 Red Hat Israel, Ltd. Automatic virtual machine migration in mixed SBC/CBC environment
US8234469B2 (en) 2009-07-09 2012-07-31 Microsoft Corporation Backup of virtual machines using cloned virtual machines
US8751738B2 (en) 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US8434081B2 (en) * 2010-07-02 2013-04-30 International Business Machines Corporation Storage manager for virtual machines with virtual storage
US9069620B2 (en) 2010-10-20 2015-06-30 Microsoft Technology Licensing, Llc Creating and deploying service-ready virtual hard disks
US8589538B2 (en) 2010-10-22 2013-11-19 International Business Machines Corporation Storage workload balancing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257584B2 (en) * 2002-03-18 2007-08-14 Surgient, Inc. Server file management

Also Published As

Publication number Publication date
SG189889A1 (en) 2013-06-28
SG10201508577TA (en) 2015-11-27
US20190138366A1 (en) 2019-05-09
CN102521009A (zh) 2012-06-27
US9069620B2 (en) 2015-06-30
US10795733B2 (en) 2020-10-06
US10180860B2 (en) 2019-01-15
US20160019098A1 (en) 2016-01-21
WO2012054216A2 (en) 2012-04-26
US20120102487A1 (en) 2012-04-26
WO2012054216A3 (en) 2012-06-14

Similar Documents

Publication Publication Date Title
CN102521009B (zh) 创建并部署服务准备完毕虚拟硬盘
CN102571905B (zh) 一种为在线服务管理网络和机器的方法和系统
CN102541987B (zh) 升级期间的在线数据库可用性
CN102436485B (zh) 动态拆分多承租人数据库
CN102571906B (zh) 打补丁期间机器的高可用性
CN102426543B (zh) 使用硬和软限制将对象放置在主机上
CN102438041B (zh) 高可用性场服务器组的升级
CN102523101B (zh) 机器管理器服务结构
CN102426530B (zh) 使用高特权过程远程安装软件
KR101107434B1 (ko) 보안 맞춤형 애플리케이션 클라우드 컴퓨팅 아키텍처
CN102420847B (zh) 在在线服务中以高可用性路由通信
CN102455937A (zh) 用于全局分布的服务结构的Web服务模式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant