自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為 OpenStack 私有云創(chuàng)建 Linux 和 Windows 映像

云計算 OpenStack
開源 OpenStack 云操作系統(tǒng)是一個功能豐富且可以大規(guī)模擴展的平臺,適用于所有類型的云計算。但 OpenStack 仍缺乏一些針對私有云的特性,尤其是針對開發(fā)和測試環(huán)境的特性。例如,映像構(gòu)建就不是一個簡單的過程。本文為 OpenStack 私有云提供一種全新且改進的映像創(chuàng)建方法。

開源 OpenStack 云操作系統(tǒng)是一個功能豐富且可以大規(guī)模擴展的平臺,適用于所有類型的云計算。一些公共云服務(wù)基于 OpenStack,許多組織內(nèi)的私有云實現(xiàn)也是如此。但 OpenStack 仍缺乏一些針對私有云的特性,尤其是針對開發(fā)和測試環(huán)境的特性。例如,映像構(gòu)建就不是一個簡單的過程。本文為 OpenStack 私有云提供一種全新且改進的映像創(chuàng)建方法。我們在 QEMU/KVM 平臺上驗證了這種新方法,但在理論上該方法也適用于其他虛擬機管理程序平臺。

介紹這個新方法之前,我們將概述目前在 OpenStack 中如何創(chuàng)建映像。

目前在 OpenStack 中創(chuàng)建映像的方式

在 OpenStack 中創(chuàng)建 Linux 或 Windows 映像的過程由多個耗時的步驟組成。

基于 Linux 的映像

官方 OpenStack 虛擬機映像指南 詳細介紹了 7 種 要求,必須滿足這些要求,基于 Linux 的映像才能在 OpenStack 云中完全正常工作(可通過安裝 cloud-init 包來滿足一些要求)。該映像指南建議用戶在創(chuàng)建自己的映像之前閱讀指南中很長一節(jié)的內(nèi)容,確保映像支持他們計劃使用的 OpenStack 特性。

對于一些特定的發(fā)行版,可手動或使用工具創(chuàng)建 Linux 映像 — 比如 VMBuilder、Oz 或 imagefactory。無論使用哪種方法,在創(chuàng)建自己的 Linux 映像之前都需要以下材料:

  • OS 安裝 CD/DVD 或 ISO 映像文件。
  • 一個啟用了 KVM/QEMU 虛擬機管理程序的 Linux 機器。一些發(fā)行版可能需要 virt-manager/virt-viewer GUI 實用程序。
  • cloud-init 或針對操作系統(tǒng)自行編寫的等效腳本。
  • guestfish、guestmount 或 virt-* 工具,用于修改映像。

滿足所有必須的條件后,即可開始根據(jù)下面總結(jié)的步驟創(chuàng)建自己的 Linux 映像:

  • 使用 virt-manager 或 virt-install 創(chuàng)建一個虛擬機 (VM) 并安裝操作系統(tǒng)。
  • 配置操作系統(tǒng),以滿足您自己的需求(例如通過安裝所需的中間件),或者安裝 cloud-init 或等效的腳本來滿足 OpenStack 的要求。
  • 使用 guestfish、guestmount 或 virt-* 修改映像,以滿足 OpenStack 的要求。
  • 將新映像上傳到 OpenStack 映像服務(wù)并驗證該映像。

基于 Windows 的映像

OpenStack 網(wǎng)站上沒有詳細的示例介紹如何創(chuàng)建基于 Windows 的映像。但要讓您創(chuàng)建的基于 Windows 的映像能正常運行,您必須至少:

  • 安裝一個 VirtIO 驅(qū)動程序。
  • 啟用遠程桌面協(xié)議 (Remote Desktop Protocol, RDP) 并配置它以通過防火墻。
  • 配置 Internet 控制消息協(xié)議 (Internet Control Message Protocol, ICMP) 以通過防火墻。
  • 將磁盤分區(qū)并(使用 cloudbase-init)調(diào)整引導(dǎo)磁盤上的根分區(qū)大小。
  • 處理用戶數(shù)據(jù)和其他元數(shù)據(jù)(使用 cloudbase-init)。
  • 啟用 Windows System Preparation (Sysprep) 工具,以自定義來賓操作系統(tǒng)。

對于大多數(shù)私有云用例,本列表中的***兩個要求是可選的。而且您可以手動或使用腳本將磁盤分區(qū),并調(diào)整引導(dǎo)磁盤上的根分區(qū)大小。但必須安裝一個 VirtIO 驅(qū)動程序,Windows 映像才能在 OpenStack 云中工作。此外,您需要擁有 VirtIO-Win 驅(qū)動程序包。

滿足***要求后,構(gòu)建 Windows 映像的過程是:

  1. 使用一個 Internet Drive Electronics (IDE) 磁盤和一個 AMD PCnet32 或 Realtek rt8139 網(wǎng)絡(luò)接口卡 (NIC) 創(chuàng)建一個虛擬機。
  2. 安裝操作系統(tǒng)。
  3. 配置操作系統(tǒng)以滿足您自己的要求(例如通過安裝所需的中間件),或者安裝 cloudbase-init 或等效的腳本來滿足 OpenStack 要求。
  4. 關(guān)閉虛擬機。
  5. 添加一個小 VirtIO 磁盤和一個 VirtIO NIC。
  6. 啟動虛擬機并安裝 VirtIO 磁盤和 NIC 的 VirtIO 驅(qū)動程序。
  7. 重新啟動虛擬機,檢查操作系統(tǒng),然后關(guān)閉虛擬機。
  8. 將映像上傳到 OpenStack 映像服務(wù)并驗證該映像。

也可執(zhí)行以下步驟:

1.創(chuàng)建一個包含以下部分的虛擬機:

  • 一個 VirtIO 磁盤
  • 一個 PCnet32 或 rt8139 NIC
  • 一個額外的 CD-ROM,包含用于比 Windows Vista 或 Windows Server 2008 更高版本的 Windows 的 VirtIO 磁盤驅(qū)動程序,或者一個額外的軟盤,包含用于比 Windows server 2003 R2 更低版本的 Windows 的 VirtIO 磁盤驅(qū)動程序

2.在操作系統(tǒng)中安裝所需的 VirtIO 磁盤驅(qū)動程序。

3.配置操作系統(tǒng),以滿足您自己的要求(例如通過安裝所需的中間件),或者安裝 cloudbase-init 或運行等效的腳本來滿足 OpenStack 的要求。

4.關(guān)閉虛擬機。

5.添加一個 VirtIO NIC。

6.啟動虛擬機并安裝 VirtIO NIC 的 VirtIO 驅(qū)動程序。

7.重新啟動虛擬機,檢查操作系統(tǒng),然后關(guān)閉虛擬機。

8.將映像上傳到 OpenStack 映像服務(wù)并驗證該映像。

不足

盡管目前為 OpenStack 創(chuàng)建映像的方法有一些好處(如創(chuàng)建基于 Linux 的映像的開源工具的廣泛可用性),但該方法并不容易。創(chuàng)建基于 Windows 的映像看起來可能比創(chuàng)建 Linux 映像簡單一些,因為不需要使用 guestfish 等工具修改映像。但目前還沒有自動化工具來為 OpenStack 創(chuàng)建全功能的 Windows 映像,所以最終用戶或操作人員還必須手動創(chuàng)建它們。如果一個全球化團隊的測試人員或開發(fā)人員需要 Windows 映像,這些映像必須有不同的語言版本 — 而且團隊可能使用數(shù)十種語言。云操作人員準(zhǔn)備所有請求的語言版本的 Windows 映像,這是不可能完成的任務(wù)。

為私有云創(chuàng)建 Linux 和 Windows 映像對最終用戶而言是一個耗時的工作 — 甚至對經(jīng)驗豐富的云操作人員也是如此。而且,組織可能缺乏資源讓最終用戶創(chuàng)建映像 — 例如,創(chuàng)建 Linux 映像所需的額外 KVM/QEMU 虛擬機管理程序。在這種情況下,創(chuàng)建最終用戶請求的所有映像,對云操作人員而言是一項艱巨的任務(wù)。

***,需要將新映像上傳到 OpenStack 映像服務(wù),根據(jù)映像來源與 OpenStack 映像服務(wù)之間的網(wǎng)絡(luò)性能,這個過程可能要花很長的時間。出于相同的原因,反復(fù)驗證新映像也可能會花很長的時間。

#p#

新的 OpenStack 映像創(chuàng)建方法

如果啟用了 OpenStack 的用戶要在線創(chuàng)建映像,創(chuàng)建能滿足其需求的映像要容易得多。我們提出了一種新的映像創(chuàng)建方法,其中用戶通過云服務(wù)所提供的 OpenStack 儀表板在線創(chuàng)建新映像。借助此功能,最終用戶無需額外的虛擬機管理程序,不需要自行將映像上傳到 OpenStack 映像服務(wù)。他們所需的只是操作系統(tǒng)安裝 CD/DVD ISO 映像文件。

概念設(shè)計

在概念上,為 OpenStack 創(chuàng)建一個新映像的理想過程是,最終用戶:

  1. 將操作系統(tǒng)安裝 CD/DVD ISO 映像文件上傳到 OpenStack 映像服務(wù)。
  2. 通過已上傳的 ISO 映像啟動一個新實例。
  3. 通過 OpenStack 儀表板中的 Virtual Networking Computing (VNC)/Simple Protocol for Independent Computing Environments (SPICE) 控制臺安裝操作系統(tǒng)。
  4. 執(zhí)行特殊需要所要求的必要配置并安裝所需的軟件包。
  5. 手動或運行服務(wù)操作人員提供的腳本來執(zhí)行 OpenStack 所要求的修改 — 例如,安裝 cloud-init、獲取公共 SSH 密鑰、啟用 SSHD 遠程登錄/RDP 等的腳本。
  6. 創(chuàng)建實例的快照。
  7. 根據(jù)需要在快照上運行 glance image-update 命令,將快照轉(zhuǎn)換為映像并添加其他元數(shù)據(jù)。

前提條件

必須滿足一些條件才能確保新的映像創(chuàng)建方法取得成功:

  • 一個可供所有最終用戶使用的有效儀表板或 Web UI。
  • VNC 代理或 SPICE 代理運行正常且可用于所有最終用戶。
  • 一個 cloud-init 或等效的腳本工具存儲庫可供所有最終用戶使用。
  • OpenStack 映像服務(wù)中擁有 VirtIO-win 驅(qū)動程序的一個 ISO 映像可供所有最終用戶使用。

下面我們演示新方法的可行性。

#p#

可行性分析

該新方法最重要的兩個方面是:如何支持 ISO 映像以及如何為從 ISO 映像啟動的實例組裝塊設(shè)備。

目前對 ISO 映像的支持

OpenStack 支持 ISO 映像。也支持從 ISO 映像啟動實例。但是,將來賓操作系統(tǒng)從 ISO 映像安裝到從 ISO 映像啟動的實例中,對此并未提供良好的支持。要想成功安裝,必須滿足一些嚴(yán)格的條件:

  • ISO 映像中的來賓操作系統(tǒng)必須默認(rèn)已啟用 VirtIO 設(shè)備驅(qū)動程序。
  • 必須設(shè)置臨時磁盤風(fēng)格,它的大小必須滿足來賓操作系統(tǒng)的要求。
  • 儀表板和 OpenStack novncproxy 服務(wù)器必須在正常運行。

如果所有這些條件都已滿足,即可從 ISO 映像成功地將來賓操作系統(tǒng)安裝到從這個 ISO 映像啟動的實例的臨時磁盤上。當(dāng)然,在來賓操作系統(tǒng)上也可像使用其他實例一樣工作。但是,由于 OpenStack 中目前的實例快照機制,您無法成功地將實例轉(zhuǎn)換為實例快照或映像。實例快照將僅包含實例的根磁盤。其他塊設(shè)備(包括臨時磁盤和卷)將被忽略。

實例塊設(shè)備目前的組裝工作流

圖 1 顯示了在從 ISO 映像引導(dǎo)一個 KVM/QEMU 實例時,OpenStack Nova 中塊設(shè)備的組裝工作流。

圖 1. 組裝塊設(shè)備的現(xiàn)有工作流

 

為 OpenStack 私有云創(chuàng)建 Linux 和 Windows 映像

 

在圖 1 中的工作流中:

  1. Nova 從 Glance 獲取 ISO 映像并將它設(shè)置為一個虛擬機實例的根磁盤,以 CD-ROM 作為設(shè)備類型,IDE 作為總線類型。
  2. Nova 創(chuàng)建一個臨時磁盤并將它設(shè)置為虛擬機實例的第二個磁盤,以 disk 作為設(shè)備類型,VirtIO 作為總線類型。但只有在所設(shè)置的臨時磁盤大小符合實例的風(fēng)格時,這一步才能完成。
  3. 用戶將來賓操作系統(tǒng)從根磁盤(實例的 CD-ROM)安裝到臨時磁盤(實例的第二個磁盤)并通過 VNC 逐步配置它。
  4. 用戶從這個虛擬機實例創(chuàng)建一個快照,Nova 將快照保存到 glance 服務(wù)。

此工作流似乎適合從頭創(chuàng)建一個新虛擬機映像。但您獲得的是最初的 ISO 映像的副本。原因是快照中僅包含根磁盤(實例的***個塊設(shè)備,如果從 ISO 映像啟動,實際上是實例的 CD-ROM),臨時磁盤已被忽略。所以,在目前的 OpenStack 中,您可從 ISO 映像啟動實例,也可將 ISO 映像中的操作系統(tǒng)安裝到已配置臨時磁盤且已啟動的實例中,但不能創(chuàng)建已安裝了操作系統(tǒng)的臨時磁盤的快照。要解決此問題,需要調(diào)整實例的各個塊設(shè)備的組裝工作流。

新的組裝工作流

您可以更改塊設(shè)備組裝流程,創(chuàng)建一個臨時磁盤,其大小設(shè)置適當(dāng)且一定會設(shè)置為從 ISO 映像啟動的各個實例的根磁盤。更改之后,實例快照中包含的根磁盤將是已安裝了操作系統(tǒng)的臨時磁盤 — 完全滿足您的要求。

圖 2 顯示了在對 libvirt 驅(qū)動程序進行修改(將在本文的 概念證明 一節(jié)中介紹)后,您從一個 ISO 映像啟動一個實例時塊設(shè)備的組裝工作流。

圖 2. 修改后的塊設(shè)備組裝工作流

為 OpenStack 私有云創(chuàng)建 Linux 和 Windows 映像

 

下面是在從 ISO 映像啟動實例時,修改塊設(shè)備組裝工作流的過程:

  1. Nova 創(chuàng)建一個虛擬機磁盤文件并將它設(shè)置為虛擬機實例的根磁盤。設(shè)備總線默認(rèn)設(shè)置為 VirtIO。
  2. Nova 從 Glance 獲取來賓操作系統(tǒng)的 ISO 映像并將它設(shè)置為第二個磁盤設(shè)備,這是一個 CD-ROM。
  3. Nova 從 Glance 獲取 VirtIO 驅(qū)動程序的一個 ISO 映像并將它設(shè)置為第三個磁盤設(shè)備,這是另一個 CD-ROM。
  4. 用戶從第二個磁盤設(shè)備(***個 CD-ROM)安裝來賓操作系統(tǒng)并根據(jù)需要配置它。
  5. 如果 VirtIO 驅(qū)動程序默認(rèn)未包含在來賓操作系統(tǒng)中,會使用第三個磁盤設(shè)備(第二個 CD-ROM)安裝來賓操作系統(tǒng)的 VirtIO 驅(qū)動程序。
  6. 用戶創(chuàng)建該實例的一個快照,Nova 將它保存到 Glance 服務(wù)。

目前對 ISO 映像的支持 中已介紹,實例快照僅包含實例的根磁盤,無論根磁盤的類型是什么都是如此。使用修改后的組裝工作流,根磁盤是 Nova 創(chuàng)建的一個新磁盤文件,包含從作為操作系統(tǒng)映像的 CD-ROM(實例的第二個磁盤)所安裝的來賓操作系統(tǒng)。

正如我們所構(gòu)想的,結(jié)果是一個從操作系統(tǒng) ISO 映像安裝的新實例的實例快照 — 而不是最初的 ISO 映像的副本。

#p#

概念證明

要確保新的映像創(chuàng)建方法符合我們的設(shè)計目的,我們對 Nova 的代碼進行了一些修改 — 主要修改了 libvirt 驅(qū)動程序。請參見 下載 獲取相關(guān)代碼。我們修改的 python 模塊是 libvirt/driver.py 和 libvirt/blockinfo.py。這些文件中的注釋標(biāo)識了我們所修改的類方法和實例。

我們用于概念證明的環(huán)境包含:

硬件:

  • 2U 機架服務(wù)器
  • 2 個 4 核 Xeon 處理器
  • 12 個 8GB RAM
  • 4 個 900GB SAS 硬盤且配置了 RAID10
  • 4 個 1Gps 以太網(wǎng)卡

軟件:

  • Red Hat Enterprise Linux 6 update 4 作為虛擬機管理程序
  • RDO Grizzly 版本

我們在 RDO Grizzly 獨立環(huán)境、RDO Grizzly 的多節(jié)點安裝環(huán)境和官方 OpenStack Grizzly 版本上測試了修改后的代碼。

#p#

測試和結(jié)果

本節(jié)介紹了我們?yōu)槭褂眯路椒▌?chuàng)建虛擬機映像而修改的 Nova 代碼,執(zhí)行的簡單測試過程以及一些測試示例。

測試過程

  1. 為 Glance 創(chuàng)建操作系統(tǒng) ISO 映像。
  2. 檢查現(xiàn)有的風(fēng)格,確保根磁盤大小滿足您的要求。如果沒有適用的風(fēng)格,可創(chuàng)建一種新風(fēng)格。
  3. 使用適用的風(fēng)格,從這個操作系統(tǒng) ISO 映像啟動一個實例。
  4. 實例啟動后,按照屏幕上的安裝步驟,通過儀表板所提供的 VNC 控制臺完成操作系統(tǒng)的安裝工作。
  5. 根據(jù)需要安裝應(yīng)用程序并根據(jù) OpenStack 的需要配置操作系統(tǒng),例如安裝 cloud-init 或等效的腳本,啟用 SSHD 遠程登錄/RDP 服務(wù)等。
  6. 創(chuàng)建這個新安裝實例的一個實例快照。
  7. 運行 glance image-update,或者如果儀表板提供了相關(guān)的功能,從儀表板更新快照信息,將映像類型改為 image。

測試結(jié)果

修改 libvirt 驅(qū)動程序后,從 ISO 映像啟動的實例的塊設(shè)備如清單 1 所示。

清單 1. 從 ISO 映像啟動的實例的塊設(shè)備映射

  1. <disk type='file' device='disk'
  2.  <driver name='qemu' type='qcow2' cache='none'/> 
  3.  <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk.newos'/> 
  4.  <target dev='vda' bus='virtio'/> 
  5.  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
  6. </disk> 
  7. <disk type='file' device='cdrom'
  8.  <driver name='qemu' type='qcow2' cache='none'/> 
  9.  <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk'/> 
  10.  <target dev='hda' bus='ide'/> 
  11.  <readonly/> 
  12.  <address type='drive' controller='0' bus='0' target='0' unit='0'/> 
  13. </disk> 
  14. <disk type='file' device='cdrom'
  15.  <driver name='qemu' type='qcow2' cache='none'/> 
  16.  <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk.virtio'/> 
  17.  <target dev='hdb' bus='ide'/> 
  18.  <readonly/> 
  19.  <address type='drive' controller='0' bus='0' target='0' unit='1'/> 
  20. </disk> 

 

 

 

 

 

 

 

 

 

 

 

表 1 顯示了幾種主流操作系統(tǒng)的測試結(jié)果。

表 1. 測試結(jié)果

 

為 OpenStack 私有云創(chuàng)建 Linux 和 Windows 映像

 

#p#

結(jié)束語

我們新的映像創(chuàng)建方法的優(yōu)點包括:

  • 可輕松為 OpenStack 創(chuàng)建新映像。
  • 可輕松驗證新創(chuàng)建的映像。
  • 為所有最終用戶提供了一種自助服務(wù)機制。

缺點包括:

  • 映像可能無法支持全部功能 — 具體來講,分區(qū)磁盤和調(diào)整引導(dǎo)磁盤上根分區(qū)的大小。
  • 不支持早于 Windows Server 2003 R2 的 Windows 版本。(但如果通過支持舊 Windows 版本的軟盤驅(qū)動程序來創(chuàng)建更復(fù)雜的組裝工作流,也可支持這些版本。)
  • 不支持缺少 VirtIO 設(shè)備驅(qū)動程序支持的舊 Linux 版本。

目前為止,大多數(shù)基于 OpenStack 的公共 IaaS 云服務(wù)都提供在基礎(chǔ)映像中具有固定根磁盤大小的實例,以及 — 通過卷服務(wù) — 為實例提供額外的磁盤空間。在私有云中,實例的大部分需求主要與所安裝的中間件、來賓操作系統(tǒng)的主要版本/次要版本、實例風(fēng)格等相關(guān)。與公共云服務(wù)中一樣,可通過提供固定的平均根磁盤大小和足夠的卷來滿足磁盤大小要求。所以,分區(qū)磁盤和調(diào)整引導(dǎo)磁盤上根分區(qū)大小的功能對大多數(shù)私有云而言不是必需的。

OpenStack 已成長為一種適合開源云操作系統(tǒng)的全球流行平臺。它使各種各樣的云解決方案易于實施、可大規(guī)模擴展且包含豐富的功能。我們在本文中介紹的工作證明,可以基于 OpenStack 平臺來實現(xiàn)新功能 — 而且 OpenStack 是一個開放且靈活的框架,而不僅僅是一個軟件產(chǎn)品。

 

責(zé)任編輯:Ophira 來源: developerWorks 中國
相關(guān)推薦

2015-05-28 13:42:08

2013-05-27 09:32:07

構(gòu)建私有云OpenStack開源云計算

2010-10-25 09:32:44

Windows Ser

2016-10-25 12:59:49

私有云OpenStack選項

2011-06-08 14:24:11

CitrixOpenStack私有云

2017-05-03 09:49:14

OpenStack私有云搭建

2016-01-14 10:02:54

DockerOpenStack私有云

2015-11-05 10:20:21

蘑菇街Docker私有云

2015-08-06 09:45:14

私有云OpenStackVMware

2012-09-20 09:56:18

Windows Ser私有云

2015-05-25 13:13:24

GartnerOpenStack私有云

2012-08-17 09:21:54

RackspaceOpenStack私有云

2020-03-04 15:52:38

OpenStack私有云技術(shù)

2013-08-01 10:09:09

亞馬遜公有云OpenStack私有

2015-03-05 11:11:14

OpenStackMesosDocker

2013-07-25 09:13:57

SwiftStackOpenStackSwift對象存儲

2015-03-13 09:02:59

SUSE私有云

2015-06-19 07:20:46

OpenStack醫(yī)療私有云

2013-10-25 11:14:46

云發(fā)展OpenStack私有云

2015-04-17 09:11:34

點贊
收藏

51CTO技術(shù)棧公眾號