專(zhuān)利名稱(chēng):創(chuàng)建并部署服務(wù)準(zhǔn)備完畢虛擬硬盤(pán)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬硬盤(pán),尤其涉及創(chuàng)建并部署服務(wù)準(zhǔn)備完畢虛擬硬盤(pán)。
技術(shù)背景
基于web的服務(wù)包括位于web服務(wù)器上的文件以及存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。例如, 存在大量位于不同網(wǎng)絡(luò)中以處理被定向到該服務(wù)的通信量的服務(wù)器。對(duì)包括大量服務(wù)器的在線服務(wù)的部署和操作進(jìn)行管理是一種耗時(shí)的過(guò)程,該過(guò)程要求會(huì)受到人類(lèi)錯(cuò)誤影響的大運(yùn)營(yíng)人員隊(duì)伍。發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中還描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
云管理器為在線服務(wù)控制機(jī)器的部署和管理。構(gòu)建系統(tǒng)創(chuàng)建安裝在機(jī)器上的部署準(zhǔn)備完畢的虛擬硬盤(pán)(VHD),該機(jī)器跨場(chǎng)(farm)中的一個(gè)或多個(gè)網(wǎng)絡(luò)分布,每個(gè)場(chǎng)都可以包括不同的配置。配置構(gòu)建系統(tǒng)以自動(dòng)地構(gòu)建不同配置的VHD,該不同配置取決于對(duì)其使用該VHD的虛擬機(jī)(VM)的角色。構(gòu)建系統(tǒng)使用VHD以在測(cè)試和生產(chǎn)環(huán)境兩者中為在線服務(wù)創(chuàng)建虛擬機(jī)(VM)。云管理系統(tǒng)自動(dòng)將所創(chuàng)建的虛擬硬盤(pán)(VHD)提供給機(jī)器。可在已經(jīng)過(guò)測(cè)試的機(jī)器上直接安裝相同的VHD。
圖1示出了用于管理與諸如內(nèi)容管理服務(wù)之類(lèi)的在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理器系統(tǒng);
圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫(kù)的云管理器;
圖3示出了存儲(chǔ)在數(shù)據(jù)庫(kù)的一行內(nèi)的示例性作業(yè)記錄;
圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng),所述網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器;
圖5示出計(jì)算機(jī)的計(jì)算機(jī)體系結(jié)構(gòu);
圖6示出了用于構(gòu)建在在線服務(wù)內(nèi)使用的虛擬盤(pán)的構(gòu)建系統(tǒng);
圖7示出了用在構(gòu)建系統(tǒng)中的示例性項(xiàng)目文件;
圖8示出了示例性依賴(lài)性樹(shù);
圖9示出了提供由構(gòu)建系統(tǒng)創(chuàng)建的VHD的用于在線服務(wù)的云管理器;以及
圖10示出了構(gòu)建要被部署在在線系統(tǒng)中的VHD的過(guò)程。
具體實(shí)施方式
現(xiàn)將參考其中相同的標(biāo)號(hào)代表相似的元素的附圖來(lái)描述各實(shí)施例。
一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類(lèi)型的結(jié)構(gòu)。也可使用其它計(jì)算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。也可使用在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者中。
圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105連接到并且管理可能分布在世界各地的不同網(wǎng)絡(luò)。網(wǎng)絡(luò)中的每個(gè)被配置成為一個(gè)或多個(gè)承租人(tenant)(例如客戶(hù)、顧客)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以寄宿在云服務(wù)內(nèi)和/或內(nèi)部部署的(on-premises)數(shù)據(jù)中心內(nèi)。云管理器105用于部署、配置和管理這些網(wǎng)絡(luò)。云管理器被配置為通過(guò)可容忍間歇性網(wǎng)絡(luò)故障的冪等的和異步的應(yīng)用web服務(wù)應(yīng)用編程接口(API) 150來(lái)接收請(qǐng)求。
如所示的,云管理器105包括工作管理器110、機(jī)器管理器115、應(yīng)用專(zhuān)用管理器 120、腳本130以及諸如數(shù)據(jù)存儲(chǔ)140(例如數(shù)據(jù)庫(kù))的中央儲(chǔ)存庫(kù)。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個(gè)其他位置處。根據(jù)一個(gè)實(shí)施例,應(yīng)用管理器120 是SharePoint承租人管理器,該管理器包括SharePoint專(zhuān)用邏輯。
工作管理器110管理任務(wù)的執(zhí)行,并且啟用對(duì)較長(zhǎng)時(shí)間運(yùn)行的任務(wù)的調(diào)度和重試。工作管理器110啟動(dòng)存儲(chǔ)在作業(yè)隊(duì)列112中的作業(yè)并且跟蹤運(yùn)行中的作業(yè)。當(dāng)已經(jīng)流逝了預(yù)定的時(shí)間時(shí),工作管理器110可以自動(dòng)地取消任務(wù)并且執(zhí)行與該任務(wù)相關(guān)的某些進(jìn)一步處理。根據(jù)一個(gè)實(shí)施例,作業(yè)隊(duì)列112中的任務(wù)由工作管理器110通過(guò)調(diào)用一個(gè)或多個(gè)腳本130來(lái)執(zhí)行。例如,可以使用諸如微軟的PowerShell 的腳本語(yǔ)言來(lái)對(duì)由工作管理器110執(zhí)行的任務(wù)進(jìn)行編程。每個(gè)腳本可以作為新進(jìn)程運(yùn)行。盡管將每個(gè)腳本作為新進(jìn)程來(lái)執(zhí)行可以具有相當(dāng)高的CPU開(kāi)銷(xiāo),但是該系統(tǒng)是可伸縮的,并且?guī)椭鸀槊看文_本執(zhí)行確保干凈的環(huán)境,加上在腳本完成時(shí)進(jìn)行完全的清理。
機(jī)器管理器115被配置為管理網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)中的物理機(jī)。一般而言,機(jī)器管理器115理解網(wǎng)絡(luò)、物理機(jī)、虛擬機(jī)(VM)、VM映像(VHD)等等。機(jī)器管理器不具有到網(wǎng)絡(luò)內(nèi)運(yùn)行的特定服務(wù)的強(qiáng)綁定,而是在“角色”方面跟蹤網(wǎng)絡(luò)中的各種組件。 例如,可以通過(guò)API 150請(qǐng)求機(jī)器管理器115在網(wǎng)絡(luò)3上部署類(lèi)型為“Foo”的具有版本 12. 34. 56. 78的VM。響應(yīng)于對(duì)云管理器105的請(qǐng)求,機(jī)器管理器115對(duì)位于網(wǎng)絡(luò)3上的合適物理機(jī)進(jìn)行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM映像來(lái)配置VM。使用類(lèi)型為的具有版本12. 34. 56. 78的VHD來(lái)配置物理機(jī),該VHD存儲(chǔ)在諸如數(shù)據(jù)存儲(chǔ)140的數(shù)據(jù)存儲(chǔ)內(nèi)。 在網(wǎng)絡(luò)內(nèi)使用的映像也可以存儲(chǔ)在其他位置處,諸如用于網(wǎng)絡(luò)中的一個(gè)或多個(gè)的本地?cái)?shù)據(jù)共享中??梢赃\(yùn)行腳本來(lái)執(zhí)行VHD在物理機(jī)上的安裝以及用于執(zhí)行任何部署后的配置。機(jī)器管理器115跟蹤每個(gè)網(wǎng)絡(luò)的機(jī)器配置。例如,機(jī)器管理器115可以跟蹤VM的角色(VM的類(lèi)型)、VM的狀態(tài)(供應(yīng)、運(yùn)行、停止、故障)、版本以及VM是否存在于給定場(chǎng)中(這隱含了其網(wǎng)絡(luò))。
腳本130被配置為存儲(chǔ)將要執(zhí)行以便既本地地為云管理器105執(zhí)行工作又遠(yuǎn)程地在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)上執(zhí)行工作的腳本。腳本130中的一個(gè)或多個(gè)還可以存儲(chǔ)在其他位置。例如,將要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以本地地存儲(chǔ)到該網(wǎng)絡(luò)。這些腳本可用于許多不同目的。例如,所述腳本可以用于執(zhí)行對(duì)網(wǎng)絡(luò)中的一個(gè)或多個(gè)中的機(jī)器的配置,改變之前配置的機(jī)器上的設(shè)定,添加新的VM,添加新的數(shù)據(jù)庫(kù),將數(shù)據(jù)從一個(gè)機(jī)器移動(dòng)到另一個(gè)機(jī)器,移動(dòng)承租人,改變方案等。根據(jù)一個(gè)實(shí)施例,這些腳本是微軟的Power Shell 腳本。可以使用其他編程實(shí)現(xiàn)。例如,可以使用經(jīng)編譯的和/或前期綁定的編程語(yǔ)言來(lái)實(shí)現(xiàn)該功能。然而,腳本是一種表達(dá)將要執(zhí)行的任務(wù)中的許多個(gè)的相當(dāng)精確的語(yǔ)言。用諸如C#的編程語(yǔ)言對(duì)等價(jià)物進(jìn)行編程將常常需要冗長(zhǎng)得多的實(shí)現(xiàn)。腳本還被后期綁定,這意味著可以以多個(gè)版本的底層代碼庫(kù)為目標(biāo),而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進(jìn)程由云管理器105本地地啟動(dòng),云管理器105 進(jìn)而可以啟動(dòng)遠(yuǎn)程機(jī)器(即,所附連的網(wǎng)絡(luò)之一中的物理機(jī))上的進(jìn)程。還可以使用其他技術(shù)來(lái)啟動(dòng)遠(yuǎn)程機(jī)器上的進(jìn)程,諸如安全外殼(SSH)等。
云管理器105正在管理的應(yīng)用專(zhuān)用信息由應(yīng)用管理器120來(lái)執(zhí)行。根據(jù)一個(gè)實(shí)施例,應(yīng)用專(zhuān)用信息與微軟SharePoint 有關(guān)。由此,應(yīng)用管理器120被配置為了解 SharePoint承租人、站點(diǎn)集合等。
每個(gè)網(wǎng)絡(luò)可以被配置成用于承租人的專(zhuān)用網(wǎng)絡(luò)和/或服務(wù)于一個(gè)以上客戶(hù)的多承租人網(wǎng)絡(luò)。網(wǎng)絡(luò)可以包括變化數(shù)目的物理機(jī)/虛擬機(jī),物理機(jī)/虛擬機(jī)的配置在部署之后也不斷變化。一般而言,只要未超過(guò)聯(lián)網(wǎng)極限(例如,負(fù)載平衡器和網(wǎng)絡(luò)交換機(jī)),網(wǎng)絡(luò)就可以繼續(xù)增長(zhǎng)。例如,網(wǎng)絡(luò)可以從十個(gè)服務(wù)器開(kāi)始,并且之后擴(kuò)充為一百個(gè)或更多個(gè)服務(wù)器??梢越o網(wǎng)絡(luò)內(nèi)的物理機(jī)分配類(lèi)或類(lèi)型。例如,機(jī)器中的某些可以是計(jì)算機(jī)器(用于web 前端和應(yīng)用服務(wù)器),而其他機(jī)器可以是與計(jì)算機(jī)器相比配備有更多存儲(chǔ)的存儲(chǔ)機(jī)器。根據(jù)一實(shí)施例,云管理器105用多個(gè)版本的映像文件來(lái)配置網(wǎng)絡(luò)內(nèi)的機(jī)器。根據(jù)一實(shí)施例,場(chǎng)常常具有相同版本的映像文件。
根據(jù)一個(gè)實(shí)施例,在網(wǎng)絡(luò)內(nèi)由云管理器系統(tǒng)100通過(guò)虛擬化機(jī)器并且管理該網(wǎng)絡(luò)內(nèi)部獨(dú)立地行動(dòng)的“場(chǎng)”來(lái)管理軟件極限。每個(gè)網(wǎng)絡(luò)可以包括一個(gè)或多個(gè)場(chǎng)(例如,參見(jiàn)網(wǎng)絡(luò)1)。根據(jù)一個(gè)實(shí)施例,網(wǎng)絡(luò)被認(rèn)為是經(jīng)網(wǎng)絡(luò)負(fù)載平衡的機(jī)器的單個(gè)群集,所述機(jī)器向外部世界展示一個(gè)或多個(gè)VIP(虛擬IP)并且可以將通信路由到網(wǎng)絡(luò)內(nèi)的任何機(jī)器。網(wǎng)絡(luò)中的機(jī)器通常是緊耦合的,并且具有最小等待時(shí)間(即< Ims的查驗(yàn)(ping)等待時(shí)間)。
場(chǎng)是用于對(duì)需要緊密綁定關(guān)系的應(yīng)用進(jìn)行協(xié)調(diào)的機(jī)器的基本分組。例如,內(nèi)容場(chǎng)可以部署在每個(gè)網(wǎng)絡(luò)內(nèi)以用于諸如微軟SharePoint 的內(nèi)容管理應(yīng)用。一般而言,每一個(gè)場(chǎng)中的那組機(jī)器一起提供web服務(wù)和應(yīng)用服務(wù)器功能。通常,場(chǎng)內(nèi)的機(jī)器運(yùn)行相同構(gòu)建的應(yīng)用(即SiarePoint)并且共享公共的配置數(shù)據(jù)庫(kù)以服務(wù)特定的承租人和站點(diǎn)集合。
場(chǎng)可以包含不同種類(lèi)的虛擬機(jī)組。云管理器105在數(shù)據(jù)存儲(chǔ)140內(nèi)維護(hù)“場(chǎng)目標(biāo)”,該場(chǎng)目標(biāo)是每個(gè)場(chǎng)的每種角色的機(jī)器的目標(biāo)數(shù)目。一些角色包括內(nèi)容前端、內(nèi)容中央管理、內(nèi)容計(jì)時(shí)器服務(wù)、聯(lián)合中央管理、聯(lián)合應(yīng)用服務(wù)器等。例如,內(nèi)容場(chǎng)是處理接入消費(fèi)者請(qǐng)求的基本SiarePoint場(chǎng)。聯(lián)合服務(wù)場(chǎng)包含可以跨場(chǎng)運(yùn)行的諸如搜索和簡(jiǎn)檔存儲(chǔ)這樣的 SiarePoint服務(wù)。場(chǎng)可以用于托管大容量公共因特網(wǎng)站點(diǎn)。某些場(chǎng)可以包含一組活動(dòng)目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Provisioning Daemon)。云管理器105自動(dòng)地部署網(wǎng)絡(luò)中的虛擬機(jī)和/或停用網(wǎng)絡(luò)中的虛擬機(jī),以幫助滿(mǎn)足所定義的目標(biāo)。這些場(chǎng)目標(biāo)可以自動(dòng)地和/ 或手動(dòng)地來(lái)配置。例如,場(chǎng)目標(biāo)可以改變以響應(yīng)于活動(dòng)和容量需求的改變。網(wǎng)絡(luò)場(chǎng)-每個(gè)網(wǎng)絡(luò)存在一個(gè)包含可以作為整個(gè)網(wǎng)絡(luò)的資源的容易擴(kuò)展的所有VM角色的網(wǎng)絡(luò)場(chǎng)。
云管理器web服務(wù)API 150被設(shè)計(jì)為在可大規(guī)模伸縮的全局服務(wù)的上下文中工作。該API假定任何網(wǎng)絡(luò)請(qǐng)求可能失效和/或停留在傳送中。對(duì)云管理器105的調(diào)用被配置為是冪等的。換言之,可以對(duì)云管理器105進(jìn)行多次相同的調(diào)用(只要參數(shù)是相同的) 而不改變結(jié)果。
云管理器105被設(shè)計(jì)為在向任何給定的請(qǐng)求返回響應(yīng)之前進(jìn)行非常少的處理 (< 10ms, < 50ms)。云管理器105維護(hù)記錄以跟蹤當(dāng)前請(qǐng)求。例如,云管理器105更新本地?cái)?shù)據(jù)庫(kù)中的記錄,并且若需要?jiǎng)t調(diào)度“作業(yè)”以在稍后執(zhí)行更冗長(zhǎng)的活動(dòng)。
云管理器跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機(jī)器的模板的映像(諸如,虛擬盤(pán)映像)。 映像引用可以存儲(chǔ)在諸如數(shù)據(jù)庫(kù)140的數(shù)據(jù)庫(kù)中和/或某個(gè)其他位置中。映像可以存儲(chǔ)在對(duì)其上將部署映像的網(wǎng)絡(luò)而言是本地的一個(gè)或多個(gè)共享的數(shù)據(jù)存儲(chǔ)中。根據(jù)一個(gè)實(shí)施例, 每個(gè)映像都包括虛擬機(jī)(VM)角色類(lèi)型,它指定映像可以部署的VM的類(lèi)型;該映像應(yīng)當(dāng)使用的處理器的數(shù)目;將分配給該映像的RAM的量;用于找出附近安裝點(diǎn)的網(wǎng)絡(luò)ID(使得它們不會(huì)通過(guò)跨數(shù)據(jù)中心鏈路被反復(fù)地復(fù)制);以及可以被部署代碼用于訪問(wèn)VHD的共享路徑。
一般而言,由云系統(tǒng)100所管理的網(wǎng)絡(luò)中的機(jī)器不是以傳統(tǒng)方式通過(guò)下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機(jī)器上的現(xiàn)有軟件中來(lái)升級(jí)的。相反,機(jī)器是通過(guò)用已更新的VHD替換 VHD來(lái)更新的。例如,當(dāng)場(chǎng)需要新版本的軟件時(shí),部署安裝了該新版本的新場(chǎng)。當(dāng)部署新場(chǎng)時(shí),將承租人從舊場(chǎng)移動(dòng)到該新場(chǎng)。以此方式,由于升級(jí)造成的停機(jī)時(shí)間被最小化,并且場(chǎng)中的每個(gè)機(jī)器具有已被測(cè)試的相同版本。當(dāng)虛擬機(jī)需要升級(jí)時(shí),機(jī)器上的VM可以被刪除并且由被配置為運(yùn)行所需服務(wù)的VM所代替。
盡管對(duì)現(xiàn)有軟件的升級(jí)不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的某些服務(wù)器的確使用原地升級(jí)的傳統(tǒng)更新過(guò)程。例如,活動(dòng)目錄域控制器是通過(guò)升級(jí)服務(wù)器上的當(dāng)前軟件而非完全替換機(jī)器上的映像來(lái)升級(jí)的。在一些實(shí)例中,云管理器也可以原地升級(jí)。
圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫(kù)的云管理器。如所示的,云管理器200 包括工作管理器210、工作數(shù)據(jù)庫(kù)215、機(jī)器管理器220、機(jī)器數(shù)據(jù)庫(kù)225、承租人管理器230、 承租人數(shù)據(jù)庫(kù)235、私密數(shù)據(jù)庫(kù)M5、以及web服務(wù)API 240 0
一般而言,將在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫(kù)的大小調(diào)整為實(shí)現(xiàn)高性能。例如,數(shù)據(jù)庫(kù)(諸如,工作數(shù)據(jù)庫(kù)215、機(jī)器數(shù)據(jù)庫(kù)225、承租人數(shù)據(jù)庫(kù)235和私密數(shù)據(jù)庫(kù)對(duì)幻不能超過(guò)預(yù)定義的大小限制(例如30GB、50GB、100GB等)。根據(jù)一實(shí)施例,調(diào)整數(shù)據(jù)庫(kù)的大小以使得其足夠小以適合物理機(jī)的存儲(chǔ)器。這有助于高讀取I/O性能。還可以基于對(duì)于應(yīng)用程序(諸如,與SQL服務(wù)器交互)的性能來(lái)選擇數(shù)據(jù)庫(kù)的大小。還可以調(diào)整用在場(chǎng)中的數(shù)據(jù)庫(kù)的大小以實(shí)現(xiàn)高性能。例如,它們的大小可以被調(diào)整為能適合主機(jī)的存儲(chǔ)器和/或被調(diào)整為使得備份操作、移動(dòng)操作、復(fù)制操作、恢復(fù)操作一般在預(yù)定的時(shí)間段內(nèi)執(zhí)行。
云管理器200將云管理器數(shù)據(jù)劃分成四個(gè)數(shù)據(jù)庫(kù)。工作數(shù)據(jù)庫(kù)215用于工作管理器。機(jī)器數(shù)據(jù)庫(kù)225用于機(jī)器管理器220。承租人數(shù)據(jù)庫(kù)235用于承租人管理器230,并且私密數(shù)據(jù)庫(kù)245用于存儲(chǔ)敏感信息,諸如系統(tǒng)賬戶(hù)和密碼信息、憑證、證書(shū)等。數(shù)據(jù)庫(kù)可以位于相同的服務(wù)器上,或者跨服務(wù)器分割。根據(jù)一實(shí)施例,每個(gè)數(shù)據(jù)庫(kù)被鏡像以獲得高可用性,并且都是SQL數(shù)據(jù)庫(kù)。
云管理器200被配置為使用縮減的SQL特征組與數(shù)據(jù)庫(kù)交互以便有助于在數(shù)據(jù)庫(kù)7升級(jí)期間提供云管理器200的可用性。例如,嘗試避免外鍵或已存儲(chǔ)的過(guò)程。外鍵可能使方案變化變得困難并且導(dǎo)致意料之外的失效情況。已存儲(chǔ)的過(guò)程將應(yīng)用中的較大部分放置在數(shù)據(jù)庫(kù)本身中。
嘗試最小化與SQL服務(wù)器的通信,因?yàn)榕c底層操作的成本相比,往返可能是昂貴的。例如,如果當(dāng)前SQL服務(wù)器到單個(gè)數(shù)據(jù)庫(kù)的全部交互被包裝在單個(gè)往返中,則常常是效率高得多的。
極少在數(shù)據(jù)庫(kù)015,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒(méi)有額外查詢(xún)的情況下提供具有正確類(lèi)型的錯(cuò)誤處理的簡(jiǎn)單更新時(shí)是有用的。例如,完全合格的域名(FQDN)表具有對(duì)施加在“名稱(chēng)”上的限制條件,以幫助防止承租人意外地試圖主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。
當(dāng)添加索引時(shí)使用警告。索引通常以寫(xiě)入操作的額外I/O為代價(jià)來(lái)改善讀取性能。由于數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對(duì)快的。根據(jù)一實(shí)施例,一旦查詢(xún)模式已經(jīng)穩(wěn)定就可以添加索引,并且可以根據(jù)所提出的索引來(lái)確定性能改善。根據(jù)一實(shí)施例,如果添加索引將可能花費(fèi)長(zhǎng)時(shí)間,則可以指定“ONLINE = ON(在線=開(kāi)啟)”選項(xiàng),以使得在最初構(gòu)該建索引時(shí)表不被鎖定。
根據(jù)一實(shí)施例,可以執(zhí)行對(duì)云管理器內(nèi)數(shù)據(jù)庫(kù)的升級(jí)而不導(dǎo)致云管理器系統(tǒng)停工。換言之,即使在云管理器升級(jí)期間,云管理器繼續(xù)處理已接收的請(qǐng)求。由此,對(duì)方案作出的改變將與之前的方案兼容。在升級(jí)云管理器所使用的web服務(wù)器之前運(yùn)行SQL方案升級(jí)。當(dāng)web服務(wù)器升級(jí)時(shí),它們可以開(kāi)始使用數(shù)據(jù)庫(kù)中所啟用的新特性。數(shù)據(jù)庫(kù)升級(jí)被限制以使得升級(jí)中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可空列。可以在表的結(jié)尾處添加新的列。一般而言,避免對(duì)數(shù)據(jù)庫(kù)的耗時(shí)操作。例如, 在存在大量數(shù)據(jù)時(shí),在創(chuàng)建時(shí)間向新添加的列添加缺省值可能是非常耗時(shí)的操作。然而,添加可空列是非??焖俚牟僮?。如上面所討論的,允許添加新的索引,但是在添加新的限制條件時(shí)應(yīng)當(dāng)要小心以幫助保證方案升級(jí)不會(huì)破除現(xiàn)有數(shù)據(jù)。例如,當(dāng)添加限制條件時(shí),該限制條件可以被設(shè)置為如下?tīng)顟B(tài)該限制條件不被檢查并且避免對(duì)現(xiàn)有行和潛在的錯(cuò)誤進(jìn)行高成本的驗(yàn)證。舊表和未使用的列在新版本被使用并且云管理器不訪問(wèn)這些表和列以后被移除。
一般而言,每個(gè)數(shù)據(jù)庫(kù)中的單個(gè)行用于指示任務(wù)和/或所需狀態(tài)。例如,承租人數(shù)據(jù)庫(kù)235包括用于每個(gè)承租人的單個(gè)行。給定的承租人可以包括所需版本(Required Version)記錄。該記錄用于幫助確保該承租人被放置在運(yùn)行所需版本的場(chǎng)上。例如,對(duì)于要停留在SharePoint 14SP1上的承租人1而言,該承租人的所需版本可以被設(shè)置為“14. 1”, 并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括其他項(xiàng)目,諸如已授權(quán)的用戶(hù)數(shù)目、限額(例如所允許的總數(shù)據(jù)使用、每用戶(hù)的數(shù)據(jù)使用等)、時(shí)間限制等。某個(gè)組織可能具有代表不同地理位置、組織或能力的多個(gè)承租人。根據(jù)一實(shí)施例,在沒(méi)有(經(jīng)由外聯(lián)網(wǎng)或其他特性)對(duì)用戶(hù)的明確邀請(qǐng)的情況下承租人被彼此隔開(kāi)。
根據(jù)一個(gè)實(shí)施例,每個(gè)承租人都被鎖定到一專(zhuān)用網(wǎng)絡(luò)中。使承租人相對(duì)于一小組數(shù)據(jù)庫(kù)而言是本地化的。承租人或者是小的(小于將填充一個(gè)數(shù)據(jù)庫(kù)的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個(gè)數(shù)據(jù)庫(kù)中。這意味著共享該數(shù)據(jù)庫(kù)的所有承租人需要同時(shí)升級(jí)。當(dāng)承租人變大時(shí),它可被移動(dòng)到它自己的專(zhuān)用數(shù)據(jù)庫(kù),并且現(xiàn)在可以具有一個(gè)以上、但是不與其他承租人共享的數(shù)據(jù)庫(kù)。在一個(gè)或多個(gè)專(zhuān)用數(shù)據(jù)庫(kù)中維護(hù)大承租人有助于減少需要在單次升級(jí)中同時(shí)升級(jí)的數(shù)據(jù)庫(kù)的數(shù)目。
類(lèi)似地,工作數(shù)據(jù)庫(kù)215包括用于每個(gè)作業(yè)的單個(gè)行。機(jī)器數(shù)據(jù)庫(kù)225可以包括用于每個(gè)物理機(jī)、VM、場(chǎng)等的行。例如,機(jī)器管理器數(shù)據(jù)庫(kù)225可以包括版本串。根據(jù)一實(shí)施例,網(wǎng)絡(luò)內(nèi)的每個(gè)VHD、場(chǎng)和VM具有相關(guān)聯(lián)的版本串。
根據(jù)一個(gè)實(shí)施例,云管理器包括簡(jiǎn)單日志記錄系統(tǒng),該簡(jiǎn)單日志記錄系統(tǒng)可以被配置為為每個(gè)web服務(wù)調(diào)用記錄日志條目??梢詫?shí)現(xiàn)包括如所期望的那樣少和/或那樣多的特性的日志記錄系統(tǒng)。一般而言,日志記錄系統(tǒng)被用于度量使用和性能剖析。
根據(jù)一實(shí)施例,web服務(wù)API 240是使用具有ASP. net的SOAP來(lái)構(gòu)建的。API中的各種web方法遵循兩種主要模式——獲取(Get)和更新(Update)。一般而言,更新方法采取數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回?cái)?shù)據(jù)庫(kù)中的底層對(duì)象的當(dāng)前狀態(tài),其中如果確認(rèn)或其他業(yè)務(wù)邏輯改變了一些特性或者以其他方式填充了附加的特性(例如記錄ID或由云管理器計(jì)算出的其他值),則該底層對(duì)象可能不同于輸入對(duì)象。 這些更新方法被用于初始對(duì)象創(chuàng)建以及隨后的更新。換言之,對(duì)web服務(wù)API 240的調(diào)用者可以簡(jiǎn)單地請(qǐng)求它們想要的配置并且它們不需要跟蹤對(duì)象是否已經(jīng)存在。另外,這意味著更新是冪等的,因?yàn)橄嗤抡{(diào)用可以進(jìn)行兩次而具有相同效果以使得該調(diào)用只有一次。 根據(jù)一實(shí)施例,更新方法可以包括LastUpdated (最后更新)特性。當(dāng)存在LastUpdated特性時(shí),云管理器200在LastUpdated的值不與數(shù)據(jù)庫(kù)中當(dāng)前存儲(chǔ)的值匹配的情況下拒絕該更新。一些更新方法包括在第一次調(diào)用該方法以后被設(shè)置并且在該方法的其他調(diào)用以后未被設(shè)置的特性。
云管理器200被配置為避免使用回調(diào)。由于回調(diào)可能是不可靠的,因此與云管理器200交互的客戶(hù)可以在他們想要檢查更新?tīng)顩r時(shí)使用web服務(wù)API來(lái)檢查對(duì)象狀況。根據(jù)一實(shí)施例,對(duì)更新方法的調(diào)用致使云管理器200將底層對(duì)象的狀態(tài)設(shè)置為“供應(yīng)”,并且當(dāng)更新完成時(shí),該狀態(tài)被設(shè)置為“活動(dòng)”。
圖3示出了存儲(chǔ)在數(shù)據(jù)庫(kù)的一行內(nèi)的示例性作業(yè)記錄。如所示那樣,記錄300包括作業(yè)標(biāo)識(shí)符302、類(lèi)型304、數(shù)據(jù)306、所有者308、步驟310、最后一次運(yùn)行312、期滿(mǎn)時(shí)間 314、下次時(shí)間316、狀態(tài)318以及狀況320。
一般而言,針對(duì)所請(qǐng)求執(zhí)行的每個(gè)任務(wù),云管理器都在數(shù)據(jù)庫(kù)350 (例如,圖2中的工作數(shù)據(jù)庫(kù)215)中創(chuàng)建記錄。
作業(yè)標(biāo)識(shí)符302用于為所請(qǐng)求的任務(wù)指定唯一的標(biāo)識(shí)符。
類(lèi)型304指定要執(zhí)行的任務(wù)。例如,類(lèi)型可以包括將要執(zhí)行的腳本的名稱(chēng)。例如, 當(dāng)任務(wù)是運(yùn)行名稱(chēng)為“D印loyVM. psl ”的腳本時(shí),則數(shù)據(jù)306可以包括標(biāo)識(shí)符(例如“-VMID 123”)。這允許將新任務(wù)類(lèi)型被添加到系統(tǒng),而不需要對(duì)該系統(tǒng)的經(jīng)編譯的或其他二進(jìn)制部分進(jìn)行任何改變。
數(shù)據(jù)306用于存儲(chǔ)與該任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以被設(shè)置成其上將執(zhí)行該任務(wù)的承租人、機(jī)器、網(wǎng)絡(luò)、VM等等。數(shù)據(jù)306還可以存儲(chǔ)數(shù)據(jù)庫(kù)中的值被設(shè)置成的一個(gè)或多個(gè)值。運(yùn)行該任務(wù)的進(jìn)程可以查看作業(yè)記錄以獲悉所期望的機(jī)器數(shù)目被設(shè)置成何值。 腳本使用數(shù)據(jù)庫(kù)中的該值來(lái)執(zhí)行操作。
所有者308指定進(jìn)程/正在執(zhí)行該進(jìn)程的機(jī)器。例如,當(dāng)云管理器機(jī)器開(kāi)始執(zhí)行作業(yè)時(shí),該機(jī)器用該機(jī)器的ID來(lái)更新記錄的所有者308部分。
步驟310提供對(duì)當(dāng)前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當(dāng)該進(jìn)程完成該腳本的步驟時(shí),步驟310被更新。進(jìn)程還可以查看步驟310以確定在該腳本中要執(zhí)行什么步驟以及避免必須重新執(zhí)行之前完成的步驟。
最后一次運(yùn)行312提供腳本最后一次啟動(dòng)的時(shí)間。每當(dāng)腳本啟動(dòng)時(shí),最后一次運(yùn)行時(shí)間都被更新。
期滿(mǎn)時(shí)間314是指示該進(jìn)程應(yīng)當(dāng)何時(shí)終止的時(shí)間。根據(jù)一實(shí)施例,期滿(mǎn)時(shí)間是在進(jìn)程啟動(dòng)以后的預(yù)定的時(shí)間量(例如5分鐘、10分鐘...)。期滿(mǎn)時(shí)間可以由提出請(qǐng)求的進(jìn)程通過(guò)web服務(wù)API來(lái)更新。
下次時(shí)間316是指示任務(wù)下次應(yīng)當(dāng)何時(shí)被執(zhí)行的時(shí)間。例如,進(jìn)程可以在完成某步驟以后停止,并且被指示等待直到所指定的下次時(shí)間316以恢復(fù)處理。
狀態(tài)318指示當(dāng)前狀態(tài),并且狀況320指示作業(yè)的狀況(例如已創(chuàng)建、已掛起、已恢復(fù)、執(zhí)行中、已刪除)。
如果數(shù)據(jù)庫(kù)中重復(fù)的行具有相同的任務(wù)類(lèi)型和數(shù)據(jù)值,則它們可以在被執(zhí)行以前被移除。例如,可以進(jìn)行多個(gè)請(qǐng)求以執(zhí)行存儲(chǔ)在數(shù)據(jù)庫(kù)的多個(gè)行中的相同任務(wù)。
作業(yè)可以具有與它相關(guān)聯(lián)的一個(gè)或多個(gè)鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運(yùn)行,直到鎖可用。這些鎖可以以許多不同的方式來(lái)配置。例如,鎖可以基于互斥鎖、信號(hào)機(jī)等等。一般而言,互斥鎖防止代碼被一個(gè)以上線程并發(fā)地執(zhí)行,而信號(hào)機(jī)將共享資源的同時(shí)使用的數(shù)目限制為最大數(shù)目。根據(jù)一實(shí)施例,鎖是表示資源的字符串。該資源可以是任何類(lèi)型的資源。例如,鎖可以是場(chǎng)、機(jī)器、承租人等等。一般而言,鎖用于延遲一個(gè)或多個(gè)任務(wù)的執(zhí)行。每個(gè)作業(yè)都可以指定其在運(yùn)行以前需要的一個(gè)或多個(gè)鎖。作業(yè)可以在其操作期間的任何時(shí)間釋放鎖。當(dāng)存在鎖時(shí),作業(yè)不被調(diào)度。需要一個(gè)以上鎖的作業(yè)一次請(qǐng)求所需的所有鎖。例如,已經(jīng)持有鎖的作業(yè)可以不請(qǐng)求附加的鎖。這樣的方案有助于防止由多個(gè)作業(yè)間的循環(huán)鎖依賴(lài)性造成的可能的死鎖情況。
圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng)400,該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器。示例系統(tǒng)400包括客戶(hù)端402和404、網(wǎng)絡(luò)406、負(fù)載平衡器408、WFE服務(wù)器410、 412,414以及后端服務(wù)器416-419。可使用更多或更少的客戶(hù)端、WFE、后端服務(wù)器、負(fù)載平衡器和網(wǎng)絡(luò)。附加地,由系統(tǒng)400中的組件所提供的一些功能可以由其他組件來(lái)執(zhí)行。例如,一些負(fù)載平衡可以在WFE中執(zhí)行。
在示例實(shí)施例中,客戶(hù)端402和404是諸如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、終端計(jì)算機(jī)、個(gè)人數(shù)字助理、或蜂窩電話設(shè)備之類(lèi)的計(jì)算設(shè)備??蛻?hù)端402和404可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請(qǐng)中,術(shù)語(yǔ)客戶(hù)端和客戶(hù)端計(jì)算機(jī)互換地使用。
WFE 410,412和414可由客戶(hù)端402和404經(jīng)由負(fù)載平衡器408通過(guò)網(wǎng)絡(luò)406訪問(wèn)。如所討論的那樣,這些服務(wù)器可以在場(chǎng)中配置。后端服務(wù)器416對(duì)WFE 410、412和414 是可訪問(wèn)的。負(fù)載平衡器408是專(zhuān)用網(wǎng)絡(luò)設(shè)備和/或一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。負(fù)載平衡器408、420,WFE410、412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在示例實(shí)施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶(hù)端402和404可以遠(yuǎn)程地訪問(wèn)WFE 410,412和414以及連接到WFE 410,412和414的資源。在一示例實(shí)施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)的一個(gè)示例是來(lái)自華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,后端服務(wù)器416-419中的一個(gè)或多個(gè)是SQL服務(wù)器,例如,來(lái)自華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。WFE 410、412和414提供客戶(hù)端402和404以及后端服務(wù)器416-419之間的接口。 負(fù)載平衡器408、420將請(qǐng)求從自客戶(hù)端402和404引導(dǎo)到WFE 410,412和414,以及從WFF 引導(dǎo)到后端服務(wù)器416-419。負(fù)載平衡器408使用諸如WFE的利用率、連接到WFE的連接數(shù)目和整體WFE性能之類(lèi)的因素來(lái)確定哪個(gè)WFE服務(wù)器接收客戶(hù)端請(qǐng)求。類(lèi)似地,負(fù)載平衡器420使用諸如后端服務(wù)器利用率、連接到服務(wù)器的連接數(shù)目和整體性能之類(lèi)的因素來(lái)確定哪個(gè)后端服務(wù)器接收請(qǐng)求??蛻?hù)端請(qǐng)求的示例可以是訪問(wèn)存儲(chǔ)在后端服務(wù)器中的一個(gè)上的文檔;編輯存儲(chǔ)在后端服務(wù)器(例如416-419)上的文檔;或者將文檔存儲(chǔ)在后端服務(wù)器上。當(dāng)負(fù)載平衡器 408通過(guò)網(wǎng)絡(luò)406接收到客戶(hù)端請(qǐng)求時(shí),負(fù)載平衡器408確定WFE服務(wù)器410、412和414中的哪個(gè)接收該客戶(hù)端請(qǐng)求。類(lèi)似地,負(fù)載平衡器420確定后端服務(wù)器416-419中的哪個(gè)從該WFE服務(wù)器接收請(qǐng)求。后端服務(wù)器可以被配置為存儲(chǔ)一個(gè)或多個(gè)承租人(例如消費(fèi)者) 的數(shù)據(jù)?,F(xiàn)在參考圖5,將描述在各實(shí)施例中利用的計(jì)算機(jī)500的說(shuō)明性計(jì)算機(jī)體系結(jié)構(gòu)。 圖5所示的計(jì)算機(jī)體系結(jié)構(gòu)可被配置為服務(wù)器、臺(tái)式或移動(dòng)計(jì)算機(jī),并且包括中央處理單元5( “CPU”)、包括隨機(jī)存取存儲(chǔ)器9 ( “RAM”)和只讀存儲(chǔ)器("ROM") 11的系統(tǒng)存儲(chǔ)器 7、以及將存儲(chǔ)器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12。基本輸入/輸出系統(tǒng)存儲(chǔ)在ROM 11中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)內(nèi)元件之間傳遞信息的基本例程。計(jì)算機(jī)500還包括大容量存儲(chǔ)設(shè)備14 以用于存儲(chǔ)操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲(chǔ)24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲(chǔ)設(shè)備14通過(guò)連接至總線12的大容量存儲(chǔ)控制器(未示出)連接到 CPU 5。大容量存儲(chǔ)設(shè)備14及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)500提供非易失性的存儲(chǔ)。雖然此處包含的計(jì)算機(jī)可讀介質(zhì)的描述指的是諸如硬盤(pán)或CD-ROM驅(qū)動(dòng)器等大容量存儲(chǔ)設(shè)備,但是計(jì)算機(jī)可讀介質(zhì)可以是能夠由計(jì)算機(jī)100訪問(wèn)的任何可用介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、可擦除可編程只讀存儲(chǔ)器(“EPR0M”)、電可擦可編程只讀存儲(chǔ)器 (“EEPR0M”)、閃存或其它固態(tài)存儲(chǔ)器技術(shù)、⑶-ROM、數(shù)字多功能盤(pán)(“DVD”)或其它光存儲(chǔ)、 磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)500 訪問(wèn)的任何其它介質(zhì)。根據(jù)各實(shí)施例,計(jì)算機(jī)500可以使用通過(guò)諸如因特網(wǎng)等網(wǎng)絡(luò)18至遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計(jì)算機(jī)500可以通過(guò)連接至總線12的網(wǎng)絡(luò)接口單元20來(lái)連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無(wú)線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類(lèi)型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)500還可以包括用于接收和處理來(lái)自多個(gè)其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤(pán)、鼠標(biāo)或者電子指示筆(未在圖5中示出)。類(lèi)似地,輸入/輸出控制器22可以為顯示屏觀、打印機(jī)或其它類(lèi)型的輸出設(shè)備提供輸出。如上面簡(jiǎn)要提到的那樣,多個(gè)程序模塊和數(shù)據(jù)文件可以存儲(chǔ)在計(jì)算機(jī)500的大容量存儲(chǔ)設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計(jì)算機(jī)的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲(chǔ)設(shè)備14和RAM 9還可以存儲(chǔ)一個(gè)或多個(gè)程序模塊。具體而言地,大容量存儲(chǔ)設(shè)備14和RAM 9可以存儲(chǔ)諸如云程序沈之類(lèi)的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個(gè)或多個(gè)應(yīng)用程序。圖6示出了用于構(gòu)建在在線服務(wù)內(nèi)使用的虛擬盤(pán)的構(gòu)建系統(tǒng)。如所示,構(gòu)建系統(tǒng)600包括源代碼605、軟件庫(kù)606、構(gòu)建機(jī)器610、VHD存儲(chǔ)615、 云管理器620以及網(wǎng)絡(luò)1和2 (630,640)。配置構(gòu)建機(jī)器610來(lái)創(chuàng)建將要在云管理器系統(tǒng)內(nèi)使用以創(chuàng)建VM的VHD。構(gòu)建機(jī)器 610創(chuàng)建部署準(zhǔn)備完畢虛擬硬盤(pán)(VHD),它可被存儲(chǔ)在VHD存儲(chǔ)615中并在主機(jī)上使用,以實(shí)例化跨場(chǎng)中的一個(gè)或多個(gè)網(wǎng)絡(luò)分布的VM,每一個(gè)場(chǎng)可包括不同配置。配置構(gòu)建系統(tǒng)以構(gòu)建不同配置的VHD,該不同配置取決于要對(duì)VHD使用的虛擬機(jī)(VM)的角色。例如,可為web 前端(WFE)、SQL服務(wù)器、聯(lián)合服務(wù)服務(wù)器、活動(dòng)目錄服務(wù)器等等創(chuàng)建VM。構(gòu)建機(jī)器使用VHD 以在測(cè)試和生產(chǎn)環(huán)境兩者中為在線服務(wù)創(chuàng)建虛擬機(jī)(VM)。根據(jù)一實(shí)施例,使用來(lái)自微軟公司的MSBUILD和HYPER-V創(chuàng)建VHD和VM。還可以使用其它構(gòu)建工具。通過(guò)主項(xiàng)目文件控制VHD的整個(gè)構(gòu)建過(guò)程(參見(jiàn)圖7示例性構(gòu)建文件700)。主項(xiàng)目文件包括定義、軟件引用、配置操作,以及用于構(gòu)建VHD的項(xiàng)目文件。使用這個(gè)主項(xiàng)目文件,構(gòu)建器612(例如msbuild. exe)從構(gòu)建機(jī)器610被調(diào)用以構(gòu)建由這些項(xiàng)目文件定義的VHD。VHD可在檢測(cè)到觸發(fā)事件時(shí)或按需自動(dòng)構(gòu)建。例如,當(dāng)檢測(cè)到軟件的新版本時(shí),使用該新軟件的VHD可被自動(dòng)構(gòu)建。在構(gòu)建之后,可將VHD自動(dòng)復(fù)制到對(duì)于一個(gè)網(wǎng)絡(luò)來(lái)說(shuō)是本地的一個(gè)或多個(gè)網(wǎng)絡(luò)共享(例如網(wǎng)絡(luò)共享632、網(wǎng)絡(luò)共享64 和/或一些其他全局網(wǎng)絡(luò)共享(未示出)。在構(gòu)建過(guò)程中,多個(gè)VHD可并行或串行構(gòu)建。例如,獨(dú)立項(xiàng)目可同時(shí)構(gòu)建??墒褂靡蕾?lài)性樹(shù)來(lái)確定可并行構(gòu)建的項(xiàng)目(參見(jiàn)圖8示例性依賴(lài)性樹(shù))??蓪⑵渌鸙HD用作開(kāi)始點(diǎn)來(lái)構(gòu)建VHD,而非每次必須從頭創(chuàng)建。被構(gòu)建的VHD的項(xiàng)目定義可包含對(duì)其他VHD的引用,使得一 VHD可被用作要在其頂部構(gòu)建許多其他VHD的公共“基礎(chǔ)”。以此方式,一個(gè)VHD 項(xiàng)目定義的輸入可能是另一個(gè)的輸出,從而形成整個(gè)構(gòu)建過(guò)程的依賴(lài)性樹(shù)。由于這些依賴(lài)性在項(xiàng)目文件它們自身中被指示,依賴(lài)性管理可由構(gòu)建器612自動(dòng)處理。這幫助確保,如果先決條件VHD已經(jīng)改變,那么那個(gè)VHD,以及依賴(lài)于它的其他VHD將以合適次序被重新構(gòu)建??蓜?chuàng)建差異VHD,而不是每次創(chuàng)建一組新的VHD時(shí)創(chuàng)建且必須部署完整的VHD。差異VHD僅包含相關(guān)聯(lián)父VHD的被修改了的盤(pán)塊。父VHD也可以是差異VHD。多個(gè)差異VHD 創(chuàng)建差異鏈。在云管理器系統(tǒng)內(nèi)使用差異VHD允許更快的部署新VHD,因?yàn)椴恍枰獙⒛敲炊嘈畔囊粋€(gè)網(wǎng)絡(luò)位置移動(dòng)到另一個(gè)網(wǎng)絡(luò)位置。在構(gòu)建過(guò)程中,構(gòu)建機(jī)器610訪問(wèn)來(lái)自一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)(例如源605)的源代碼,以及來(lái)自一個(gè)或多個(gè)軟件庫(kù)(例如軟件庫(kù)606)的軟件。構(gòu)建器612將創(chuàng)建臨時(shí)VM并附加VHD。按照構(gòu)建文件700中的指令,構(gòu)建器612復(fù)制腳本和二進(jìn)制代碼,安裝指定的軟件,并對(duì)軟件和/或?qū)M的操作系統(tǒng)執(zhí)行指定的配置。在構(gòu)建結(jié)束時(shí),構(gòu)建器612準(zhǔn)備用于普通消費(fèi)的VM。構(gòu)建器612丟棄臨時(shí)VM并隨后將已構(gòu)建的VHD存儲(chǔ)在另一數(shù)據(jù)存儲(chǔ)中 (例如VHD存儲(chǔ)615)。根據(jù)一實(shí)施例,使用來(lái)自微軟的SYSPREP工具來(lái)準(zhǔn)備VM。在另一實(shí)施例中,在構(gòu)建過(guò)程中,構(gòu)建器612不需要臨時(shí)VM安裝軟件或改變操作系統(tǒng)。相反,構(gòu)建器可裝配VHD并在已裝配的盤(pán)上直接執(zhí)行全部配置。所構(gòu)建的VHD也可自動(dòng)地/手動(dòng)地部署到一個(gè)或多個(gè)其他位置。例如,要被部署在網(wǎng)絡(luò)1(630)中的VHD可被放置在網(wǎng)絡(luò)共享632 中,而要被部署在網(wǎng)絡(luò)2(640)中的VHD可被放置在網(wǎng)絡(luò)共享642中。當(dāng)創(chuàng)建差異VHD時(shí), 則可僅將差異VHD部署到本地網(wǎng)絡(luò)共享。云管理器620被配置為自動(dòng)將所創(chuàng)建的虛擬硬盤(pán)(VHD)提供給機(jī)器??稍谝呀?jīng)過(guò)測(cè)試的機(jī)器上直接安裝相同的VHD。例如,在一個(gè)或多個(gè)場(chǎng)內(nèi)的每個(gè)機(jī)器可包括相同版本和構(gòu)建的VHD。例如,當(dāng)部署場(chǎng)(例如場(chǎng)11、12、13、15、16)時(shí),云管理器620可執(zhí)行作業(yè),該作業(yè)調(diào)用包含向機(jī)器通過(guò)匹配其在在線服務(wù)內(nèi)的角色的VHD的任務(wù)的腳本。在一實(shí)施例中, 用于創(chuàng)建VM的VHD在緊接著用它們創(chuàng)建VM之前,可動(dòng)態(tài)擴(kuò)展并被轉(zhuǎn)換為固定的。動(dòng)態(tài)擴(kuò)展VHD使用與它們包含的數(shù)據(jù)量成比例的盤(pán)空間,反之固定VHD使用預(yù)先確定的已完全擴(kuò)展的量。雖然固定VHD提供改善了的VM性能??沙鲇诓煌哪康膭?chuàng)建場(chǎng)。例如,可以有內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)、SQL場(chǎng)等等。機(jī)器可主存在它們的VHD之間共享共性的多個(gè)VM。當(dāng)指定角色的VM正在一機(jī)器上被創(chuàng)建時(shí),它的VHD被復(fù)制到該機(jī)器。在一個(gè)實(shí)施例中,這些VHD 的副本存儲(chǔ)在機(jī)器上以供后來(lái)的VM使用,這些VM將被部署到機(jī)器并可能共享同一 VHD的部分或全部。此實(shí)施例避免為相同機(jī)器上的后續(xù)VM的公共VHD進(jìn)行網(wǎng)絡(luò)復(fù)制,從而改善了部署時(shí)間。圖7示出了用在構(gòu)建系統(tǒng)中的示例性項(xiàng)目文件。該項(xiàng)目文件描述了要構(gòu)建什么項(xiàng)目以及如何用不同平臺(tái)和配置來(lái)構(gòu)建它們。該項(xiàng)目文件格式也使得開(kāi)發(fā)者能夠創(chuàng)作可重新使用的構(gòu)建規(guī)則,該構(gòu)建規(guī)則可被分解到分開(kāi)的文件中,使得可在它們的產(chǎn)品中跨不同項(xiàng)目始終如一地執(zhí)行構(gòu)建。 參考項(xiàng)目文件700,PropertyGroup (特性組)710用于將一組特性集中在一起。在一個(gè)項(xiàng)目文件中可以有超過(guò)一個(gè)特性組,并且相同的特性可被放置在一個(gè)以上的 PropertyGroup中。定義PropertyGroup時(shí)可包括,指定僅當(dāng)條件滿(mǎn)足時(shí)將PropertyGroup 用于構(gòu)建的可選條件屬性。通過(guò)將項(xiàng)目集合的名稱(chēng)作為ItemGroup (項(xiàng)目組)元素720之子以創(chuàng)建元素,來(lái)在項(xiàng)目文件中聲明項(xiàng)目。項(xiàng)目代表了向構(gòu)建系統(tǒng)的輸入,并且基于它們的用戶(hù)定義了的集合名稱(chēng)來(lái)組合到項(xiàng)目集合中。這些項(xiàng)目集合可被用作任務(wù)的參數(shù),該任務(wù)使用包含在集合中的單獨(dú)的項(xiàng)目來(lái)執(zhí)行構(gòu)建過(guò)程的步驟。任務(wù)被包含在Target(目標(biāo))元素730中。任務(wù)可使用參數(shù),該參數(shù)作為元素的屬性來(lái)傳遞。項(xiàng)目集合和特性也可被用作參數(shù)。目標(biāo)按特定次序?qū)⑷蝿?wù)集中在一起,并將項(xiàng)目文件的部分暴露作為進(jìn)入構(gòu)建過(guò)程的入口點(diǎn)。目標(biāo)常常被組織為邏輯部分以允許擴(kuò)展和增加可讀性。將構(gòu)建步驟打破為許多目標(biāo)允許你從其他目標(biāo)中調(diào)用構(gòu)建過(guò)程的一片,無(wú)須將代碼的那部分復(fù)制到每個(gè)目標(biāo)中。例如,如果進(jìn)入構(gòu)建過(guò)程的幾個(gè)入口點(diǎn)需要構(gòu)建引用,你可以創(chuàng)建構(gòu)建引用的目標(biāo)并從每個(gè)需要的入口點(diǎn)運(yùn)行那個(gè)目標(biāo)。
13
根據(jù)一實(shí)施例,在構(gòu)建過(guò)程中使用PowerShell腳本。例如,在正被構(gòu)建的VM上發(fā)生的任務(wù)執(zhí)行,通過(guò)使用P0WERSHELL從構(gòu)建機(jī)器主存操作系統(tǒng)遠(yuǎn)程發(fā)送到VM它自身來(lái)執(zhí)行。還使用其他自定義構(gòu)建任務(wù)。以下是被創(chuàng)建以使用VM為在線系統(tǒng)構(gòu)建VHD的示例性任務(wù)列表。PowerShell任務(wù)被用于調(diào)用PowerShell代碼。日志記錄和錯(cuò)誤被反饋回構(gòu)建器 612。根據(jù)一實(shí)施例,不可恢復(fù)的錯(cuò)誤作為錯(cuò)誤提出,否則可使用警告或消息。參數(shù)包括腳本、腳本文件和計(jì)算機(jī)名稱(chēng)。根據(jù)一實(shí)施例,腳本參數(shù)是直接執(zhí)行的PowerShell代碼。該腳本可調(diào)用自定義代碼和/或調(diào)用CmdLets。腳本文件參數(shù)包括到PowerShell腳本文件的一個(gè)或多個(gè)相對(duì)或絕對(duì)路徑以及被執(zhí)行的參數(shù)。根據(jù)一實(shí)施例,路徑以所提供的相同次序以及在相同運(yùn)行空間中執(zhí)行(例如<pathl>-param “foo”;<path2>-param “bar”)。計(jì)算機(jī)名稱(chēng)參數(shù)是其上運(yùn)行腳本的計(jì)算機(jī)的名稱(chēng)。如果提供遠(yuǎn)程機(jī)器,則在遠(yuǎn)程機(jī)器上創(chuàng)建新運(yùn)行空間。以下是用于VHD的構(gòu)建過(guò)程中的示例性任務(wù)。NewVM(新VM)任務(wù)使用指定的VHD文件創(chuàng)建新虛擬機(jī)。參數(shù)包括Name (名稱(chēng))、 ComputerName (計(jì)算機(jī)名稱(chēng))、VHD、Unattend (不參與),以及 Passwordfile ( 口令文件)。 Name參數(shù)是要?jiǎng)?chuàng)建的虛擬機(jī)的名稱(chēng)。Unattend參數(shù)是通往要在系統(tǒng)預(yù)備的(sysprepped) VHD上使用的Unattend文件的相對(duì)或絕對(duì)路徑。Passwordfile參數(shù)是通往包含要用于鏈接到VM的經(jīng)散列的憑證的文件的相對(duì)或絕對(duì)路徑。Rem0VeVM(移除VM)任務(wù)移除現(xiàn)存的虛擬機(jī)。參數(shù)包括Name (名稱(chēng))、VHD Path (VHD路徑),以及Manifest Path (清單路徑)。 Name參數(shù)是要移除的虛擬機(jī)的名稱(chēng)。Manifest I^ath參數(shù)是通往要輸出清單的位置的相對(duì)或絕對(duì)路徑。StartVM(開(kāi)始VM)任務(wù)啟動(dòng)指定的虛擬機(jī),并包括指定要啟動(dòng)的VM的名稱(chēng)的 Name (名稱(chēng))參數(shù)。ShutdownVM (關(guān)閉VM)任務(wù)關(guān)閉指定的虛擬機(jī)。參數(shù)包括Name (名稱(chēng))和 Syspr印(系統(tǒng)預(yù)備)。Name參數(shù)是要關(guān)閉的虛擬機(jī)的名稱(chēng)。Sysprep參數(shù)指示在關(guān)閉前虛擬機(jī)是否要被系統(tǒng)預(yù)備。New VHD (新VHD)任務(wù)在指定路徑上創(chuàng)建新VHD。如果提供了 ISO和可選Unattend 參數(shù),新VHD任務(wù)使用該ISO和Unattend參數(shù)創(chuàng)建新VM,系統(tǒng)預(yù)備它,并將那些改變提交給 VHD。參數(shù)包括 VHD Path (VHD 路徑)、Size (大小)、Fixed (固定)、IS0 以及 Unattend (不參與)。VHDI^ath參數(shù)是關(guān)于在哪里創(chuàng)建VHD文件的絕對(duì)或相對(duì)本地路徑。Size參數(shù)是要被創(chuàng)建的VHD的以MB為單位的大小。Fixed參數(shù)是所創(chuàng)建的VHD將是固定的或動(dòng)態(tài)的。ISO 參數(shù)是通往用于創(chuàng)建VHD的OS ISO映像的相對(duì)或絕對(duì)路徑。Unattend參數(shù)是通往用來(lái)安裝ISO的Unattend文件的相對(duì)或絕對(duì)路徑。Mount VHD (裝配VHD)任務(wù)將VHD裝配到本地文件系統(tǒng),因此其內(nèi)容可被操縱。參數(shù)包括VHDI^ath (VHD路徑)和MountPath (裝配路徑)。VHDI^ath是通往要裝配的VHD文件的相對(duì)或絕對(duì)路徑。MountPath參數(shù)是裝配VHD的絕對(duì)路徑。 Unmount VHD (卸載VHD)任務(wù)卸載先前裝配的VHD文件。參數(shù)包括VHDPath (VHD 路徑)參數(shù),該參數(shù)為通往要卸載的VHD文件的相對(duì)或絕對(duì)路徑。圖9示出了提供由構(gòu)建系統(tǒng)創(chuàng)建的VHD的用于在線服務(wù)的云管理器。云管理器905用于部署、配置和管理在線服務(wù)的網(wǎng)絡(luò)。云管理器被配置為通過(guò)不能依靠可靠網(wǎng)絡(luò)的冪等和異步的應(yīng)用web服務(wù)應(yīng)用編程接口(API) 920來(lái)接收請(qǐng)求。如圖所示,云管理器905包括工作管理器110、機(jī)器管理器115、應(yīng)用專(zhuān)用管理器 120、腳本130、數(shù)據(jù)庫(kù)910、腳本130、VHD 915,和web服務(wù)API 920。根據(jù)一個(gè)實(shí)施例,應(yīng)用管理器920是SharePoint承租人管理器,該管理器包括SharePoint專(zhuān)用邏輯。使用API 920的請(qǐng)求可用于在跨不同網(wǎng)絡(luò)(網(wǎng)絡(luò)1、網(wǎng)絡(luò)2)的各種拓?fù)浣Y(jié)構(gòu)中管理和部署服務(wù)器。盡管僅僅示出了兩個(gè)網(wǎng)絡(luò),但是一般管理多得多的網(wǎng)絡(luò)(例如十個(gè)、一百個(gè)、一千個(gè)、一萬(wàn)個(gè)等等)。云管理器905運(yùn)行,并且可以與上面所示和所描述的云管理器系統(tǒng)類(lèi)似地來(lái)配置。web服務(wù)API 920包括向工作管理器110、機(jī)器管理器115和應(yīng)用管理器120請(qǐng)求服務(wù)的方法。例如,可以使用API 920作出請(qǐng)求,以便更新數(shù)據(jù)庫(kù)中的承租人、 添加新的SQL服務(wù)器、部署新的場(chǎng)、添加新的機(jī)器、更新VM、獲得數(shù)據(jù)存儲(chǔ)內(nèi)的值、等等。Web服務(wù)API 920被設(shè)計(jì)為在可縮放全局服務(wù)的上下文中工作。由于網(wǎng)絡(luò)請(qǐng)求被假定為是固有地不可靠的,因此API假定任一網(wǎng)絡(luò)請(qǐng)求可能失效和/或停留在傳送中。使用web服務(wù)API 920的請(qǐng)求被配置為是冪等的。換言之,可以使用web服務(wù)API 920作出具有相同參數(shù)的相同調(diào)用,而不改變結(jié)果。云管理器905被設(shè)計(jì)為在向任何給定的請(qǐng)求返回響應(yīng)之前進(jìn)行非常少的處理 (< 10ms, < 50ms)。云管理器905維護(hù)記錄以跟蹤當(dāng)前請(qǐng)求。例如,云管理器905更新本地?cái)?shù)據(jù)庫(kù)中的記錄,并且若需要?jiǎng)t調(diào)度“作業(yè)”以在稍后執(zhí)行更長(zhǎng)的活動(dòng)。一旦參數(shù)和作業(yè)信息被提交到數(shù)據(jù)庫(kù)之后,響應(yīng)就被發(fā)送給請(qǐng)求者。根據(jù)一實(shí)施例,web服務(wù)API 920是使用帶有ASP. net的SOAP來(lái)構(gòu)建的。VHD 915被配置為存儲(chǔ)正在被使用的和/或?qū)⒁渴鹪谝粋€(gè)或多個(gè)網(wǎng)絡(luò)的一個(gè)或多個(gè)機(jī)器上的虛擬硬盤(pán)(VHD)映像。使用此處描述的中央構(gòu)建系統(tǒng)980創(chuàng)建VHD。根據(jù)一實(shí)施例,使用MICROSOFT VHD文件格式,該格式指定可以駐留在封裝在單個(gè)文件內(nèi)的本機(jī)主文件系統(tǒng)上的虛擬機(jī)硬盤(pán)。一般而言,VHD格式是廣泛適用的,因?yàn)樵摳袷綄?duì)與該格式一起使用的虛擬化技術(shù)、主操作系統(tǒng)、或者客操作系統(tǒng)是不可知的。用在特定網(wǎng)絡(luò)內(nèi)的 VHD可以移動(dòng)到全局共享945和/或?qū)W(wǎng)絡(luò)而言是本地的網(wǎng)絡(luò)共享(例如網(wǎng)絡(luò)共享955)。 將VHD存儲(chǔ)在網(wǎng)絡(luò)共享上將節(jié)省部署映像的時(shí)間,因?yàn)闇p少了網(wǎng)絡(luò)通信時(shí)間。更新方法可用于更新VHD 945內(nèi)和/或全局/網(wǎng)絡(luò)共享之一內(nèi)的VHD。圖10示出了用于構(gòu)建要被部署在在線系統(tǒng)中的VHD的過(guò)程。當(dāng)閱讀對(duì)在此提供的例程的討論時(shí),應(yīng)當(dāng)理解,各實(shí)施例的邏輯操作被實(shí)現(xiàn)為(1) 運(yùn)行于計(jì)算系統(tǒng)上的一系列計(jì)算機(jī)實(shí)現(xiàn)的動(dòng)作或程序模塊,和/或(2)計(jì)算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)的性能要求來(lái)選擇的。 因此,所例示的并且構(gòu)成此處所描述的實(shí)施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、 動(dòng)作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動(dòng)作和模塊可用軟件、固件、專(zhuān)用數(shù)字邏輯以及它們的任何組合來(lái)實(shí)現(xiàn)。在開(kāi)始操作后,過(guò)程1000進(jìn)展到操作1010,其中創(chuàng)建了構(gòu)建項(xiàng)目,該構(gòu)建項(xiàng)目指定包括要被包括在虛擬硬盤(pán)上的虛擬機(jī)的運(yùn)行環(huán)境的創(chuàng)建。構(gòu)建項(xiàng)目包括一個(gè)或多個(gè)項(xiàng)目文件,該一個(gè)或多個(gè)項(xiàng)目文件描述了要構(gòu)建什么項(xiàng)目以及如何用不同平臺(tái)和配置來(lái)構(gòu)建它們。移到操作1020,作出關(guān)于何時(shí)構(gòu)建VHD的確定。可手動(dòng)和/或基于觸發(fā)事件自動(dòng)開(kāi)始VHD的構(gòu)建過(guò)程。觸發(fā)事件可以與許多不同事件相關(guān)。例如,一個(gè)或多個(gè)以下事件可被用作觸發(fā)事件源代碼改變、特定日期、新場(chǎng)請(qǐng)求、新機(jī)器請(qǐng)求、定義的VM的新類(lèi)型,等等。 根據(jù)一實(shí)施例,當(dāng)檢測(cè)到源代碼的新版本時(shí),開(kāi)始VHD的構(gòu)建過(guò)程。流到操作1030,構(gòu)建被項(xiàng)目和項(xiàng)目?jī)?nèi)的文件所指定的VHD和VM。在構(gòu)建過(guò)程期間, 構(gòu)建機(jī)器訪問(wèn)引用的源代碼和軟件來(lái)為在線系統(tǒng)創(chuàng)建VHD。所創(chuàng)建的VHD可以是完全VHD 和/或差異VHD。例如,差異VHD可在基礎(chǔ)VHD已被創(chuàng)建后使用。轉(zhuǎn)向操作1040,所創(chuàng)建的VHD被存儲(chǔ)。VHD可被存儲(chǔ)在一個(gè)或多個(gè)位置中。VHD可被存儲(chǔ)在與構(gòu)建機(jī)器相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)、用于在線系統(tǒng)中的一個(gè)或多個(gè)網(wǎng)絡(luò)的本地?cái)?shù)據(jù)存儲(chǔ)、全局?jǐn)?shù)據(jù)存儲(chǔ)等中。例如,一旦VHD被創(chuàng)建,VHD可被自動(dòng)放置在對(duì)于它們?cè)谄渲斜惶峁┑木W(wǎng)絡(luò)而言是本地的數(shù)據(jù)共享中。移到操作1050,VHD可被自動(dòng)放置在網(wǎng)絡(luò)內(nèi)部的機(jī)器上并開(kāi)始。例如,云管理器系統(tǒng)可請(qǐng)求部署新機(jī)器、場(chǎng)等的作業(yè)。以上說(shuō)明、示例和數(shù)據(jù)提供了對(duì)本發(fā)明的組成部分的制造和使用的全面描述。因?yàn)榭梢栽诓槐畴x本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實(shí)施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于構(gòu)建虛擬硬盤(pán)以用于在線系統(tǒng)中的部署的方法,包括訪問(wèn)構(gòu)建項(xiàng)目,所述構(gòu)建項(xiàng)目指定要執(zhí)行的動(dòng)作來(lái)創(chuàng)建一組部署準(zhǔn)備完畢虛擬硬盤(pán) VHD,以用于在線服務(wù)中的遠(yuǎn)程部署,所述在線服務(wù)包括包含在場(chǎng)中安排的機(jī)器的不同網(wǎng)絡(luò) (1010)使用所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建所述VHD ;其中所述構(gòu)建項(xiàng)目?jī)?nèi)的不同VHD基于虛擬機(jī)的角色來(lái)創(chuàng)建(1030);將所述VHD存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中以用于自動(dòng)部署(1040);以及在至少一個(gè)所述場(chǎng)內(nèi)的機(jī)器上部署同樣的VHD。
2.如權(quán)利要求1所述的方法,其特征在于,使用所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建所述VHD是響應(yīng)于檢測(cè)到觸發(fā)事件而自動(dòng)開(kāi)始的,所述觸發(fā)事件是用于構(gòu)建所述VHD(600)的源代碼更新。
3.如權(quán)利要求1所述的方法,其特征在于,VHD的項(xiàng)目定義包括對(duì)基礎(chǔ)VHD的引用,所述基礎(chǔ)VHD用作構(gòu)建其它VHD的基礎(chǔ)(1020)。
4.如權(quán)利要求3所述的方法,其特征在于,還包括從所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建依賴(lài)性樹(shù) (800)以確定構(gòu)建VHD的次序;且其中自動(dòng)構(gòu)建VHD包括構(gòu)建包含相關(guān)聯(lián)父VHD的已修改的盤(pán)塊的差異VHD。
5.如權(quán)利要求4所述的方法,其特征在于,還包括自動(dòng)將所述差異VHD存儲(chǔ)在所述不同網(wǎng)絡(luò)的至少一個(gè)中的本地?cái)?shù)據(jù)共享中(1040)。
6.如權(quán)利要求1所述的方法,其特征在于,所述腳本(130)被用于執(zhí)行所述構(gòu)建項(xiàng)目中所指定的任務(wù),其中所述任務(wù)包括,運(yùn)行腳本任務(wù)、新虛擬機(jī)任務(wù)、移除虛擬機(jī)任務(wù)、開(kāi)始虛擬機(jī)任務(wù)、關(guān)閉虛擬機(jī)任務(wù)、新VHD任務(wù)、裝配VHD任務(wù),以及卸載VHD任務(wù)。
7.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于構(gòu)建虛擬硬盤(pán)以用于部署在在線系統(tǒng)中,包括訪問(wèn)構(gòu)建項(xiàng)目,所述構(gòu)建項(xiàng)目指定要執(zhí)行的動(dòng)作來(lái)創(chuàng)建一組虛擬硬盤(pán)VHD和虛擬機(jī) VM,以用于在線服務(wù)中的遠(yuǎn)程部署,所述在線服務(wù)包括包含在場(chǎng)中安排的機(jī)器的不同網(wǎng)絡(luò) (1010);使用中央服務(wù)內(nèi)的機(jī)器使用所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建所述VHD,所述中央服務(wù)部署和管理所述在線服務(wù)的機(jī)器,其中使用所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建所述VHD是響應(yīng)于檢測(cè)到觸發(fā)事件而開(kāi)始的(1030);將所述VHD存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中以用于自動(dòng)部署(1040);以及自動(dòng)將所述VHD部署到所述在線服務(wù)中的機(jī)器,其中響應(yīng)于從所述中央服務(wù)中的遠(yuǎn)程機(jī)器接收的命令將所述VHD安裝在機(jī)器上(1050)。
8.一種用于構(gòu)建虛擬硬盤(pán)以用于在線系統(tǒng)中的部署的系統(tǒng),包括 處理器和計(jì)算機(jī)可讀介質(zhì)(5);存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16); 被耦合到不同網(wǎng)絡(luò)的云管理器(105),用于管理對(duì)機(jī)器的部署和對(duì)所述網(wǎng)絡(luò)的配置,以及自動(dòng)向所述在線服務(wù)中的機(jī)器部署虛擬硬盤(pán)VHD ;以及所述不同網(wǎng)絡(luò)的每一個(gè)中的數(shù)據(jù)存儲(chǔ)(632),用于存儲(chǔ)虛擬硬盤(pán),所述虛擬硬盤(pán)被用于所述網(wǎng)絡(luò)內(nèi)的機(jī)器的部署;以及構(gòu)建系統(tǒng),被配置成執(zhí)行動(dòng)作,所述動(dòng)作包括訪問(wèn)構(gòu)建項(xiàng)目,所述構(gòu)建項(xiàng)目指定要執(zhí)行的動(dòng)作,以創(chuàng)建一組虛擬硬盤(pán)VHD以及虛擬機(jī)VM以用于遠(yuǎn)程部署(1010);使用所述構(gòu)建項(xiàng)目自動(dòng)創(chuàng)建所述VHD ;以及將所述VHD存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中以用于自動(dòng)部署(1040)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括從所述構(gòu)建項(xiàng)目自動(dòng)構(gòu)建依賴(lài)性樹(shù) (800)以確定構(gòu)建所述VHD的次序,并使用所述依賴(lài)性樹(shù)來(lái)確定要并行構(gòu)建的VM。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述腳本(130)被用于執(zhí)行所述構(gòu)建項(xiàng)目中所指定的任務(wù),其中所述任務(wù)包括,運(yùn)行腳本任務(wù)、新虛擬機(jī)任務(wù)、移除虛擬機(jī)任務(wù)、開(kāi)始虛擬機(jī)任務(wù)、關(guān)閉虛擬機(jī)任務(wù)、新VHD任務(wù)、裝配VHD任務(wù),以及卸載VHD任務(wù)。
全文摘要
本發(fā)明描述了創(chuàng)建并部署服務(wù)準(zhǔn)備完畢虛擬硬盤(pán)。云管理器為在線服務(wù)控制機(jī)器的部署和管理。構(gòu)建系統(tǒng)創(chuàng)建安裝在機(jī)器上的部署準(zhǔn)備完畢的虛擬硬盤(pán)(VHD),該機(jī)器跨場(chǎng)中的一個(gè)或多個(gè)網(wǎng)絡(luò)的分布,每個(gè)場(chǎng)都可以包括不同的配置。配置構(gòu)建系統(tǒng)以構(gòu)建不同配置的VHD,該不同配置取決于要對(duì)其使用VHD的虛擬機(jī)(VM)的角色。構(gòu)建系統(tǒng)使用VHD以在測(cè)試和生產(chǎn)環(huán)境兩者中為在線服務(wù)創(chuàng)建虛擬機(jī)(VM)。云管理器系統(tǒng)自動(dòng)將所創(chuàng)建的虛擬硬盤(pán)(VHD)提供給機(jī)器??稍谝呀?jīng)過(guò)測(cè)試的機(jī)器上直接安裝相同的VHD。
文檔編號(hào)H04L29/08GK102521009SQ20111034049
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·霍普曼, E·R·萊爾馬, J·M·卡希爾, M·K·溫德?tīng)?申請(qǐng)人:微軟公司