歡迎您光臨本站 註冊首頁

轉帖!使用 Xen:使用虛擬 Linux 來測試應用程序

←手機掃碼閱讀     火星人 @ 2014-03-23 , reply:0

使用 Xen:使用虛擬 Linux 來測試應用程序

構建一個沙盒,以保持您的應用程序獨立、安全和正確
級別: 初級
Bryan Clark (bclark@redhat.com), 互動設計師, Red Hat

2005 年 4 月 04 日

Xen 是可用於 Linux™ 內核的一種虛擬化技術,讓您可以像在現有環境中一樣安裝並測試新的升級,而不必擔心破壞原有的系統。作者將向您介紹如何使用 Fedora Core 安裝 Xen,不過,安裝之後,在任何發行版本上的 Xen 中,所有程序運轉起來都是相同的。了解 Linux 上的虛擬化,知道具有一個用於測試新軟體的沙盒的好處,並練習在同一台 Linux 機器上運行多個虛擬機。

隨著對現有軟體的改進和 bug 修復,開源世界的變化永無止境。要保持軟體總是升級到最新,這可能得作為一份專職的工作。升級軟體最難處理的問題之一是:您永遠不會真正知道升級完成後應用程序是否還能夠工作。大部分軟體打包系統都具備回滾功能,但通常只有這項功能還不夠;理想情況下,您應該去測試這些新的升級,並在一個不會破壞任何東西的環境中去嘗試它們。

就像玩耍的小孩子一樣,您希望擁有一個屬於自己的沙盒,在那裡您可以隨意做任何事情。

通常通過 虛擬化(Virtualization)(或者「沙盒(sandbox)」)將同一硬體上的應用程序和系統彼此隔離開來。從硬體模擬到完全硬體虛擬化,Linux 支持很多種不同形式的虛擬化。在不斷增加的虛擬化技術列表中,Xen 是近來最引人注目的技術之一,它由劍橋大學開發。Xen 值得您關注,因為它具有空前的性能與安全性。

初識 Xen

Xen 是在劍橋大學作為一個研究項目被開發出來的,它已經在開源社區中得到了極大的推動。Xen 是一款 半虛擬化(paravirtualizing) VMM(虛擬機監視器,Virtual Machine Monitor),這表示,為了調用系統管理程序,要有選擇地修改操作系統,然而卻不需要修改操作系統上運行的應用程序。雖然 VMWare 等其他虛擬化系統實現了完全的虛擬化(它們不必修改使用中的操作系統),但它們仍需要進行實時的機器代碼翻譯,這會影響性能。

由於 Xen 需要修改操作系統,所以您不能直接讓當前的 Linux 內核在 Xen 系統管理程序中運行,除非它已經移植到了 Xen 架構。不過,如果當前系統可以使用新的已經移植到 Xen 架構的 Linux 內核,那麼您就可以不加修改地運行現有的系統。


圖 1. 簡單的 Xen 架構


獲得 Xen

可以從 Xen 的項目主頁上獲得它的源代碼(請參閱 參考資料 部分的鏈接),但是,如果已經在使用某個 Linux 發行版本,那麼您或許能夠通過軟體包升級或者安裝來獲得 Xen。這些主流發行版本都包含了 Xen:

Fedora Core
SUSE Linux
Debian
可以獲得位於 Gentoo's bugzilla 的實驗用的 e-builds。

檢查您的發行版本 —— 如果它不在這個列表中,那麼您可能只能直接使用源代碼。除了安裝過程特定於發行版本之外,在任何發行版本上,Xen 中的所有工作都是相同的。

使用 Fedora Core

我有一個可以使用的 Fedora Core 3 安裝,為了保持本文的簡潔,我將討論如何在 Fedora Core 上安裝和運行系統。

儘管軟體包只是在最近才開始進行開發,但 Fedora 已經為大量 Xen 用戶所使用。由於有很多人嘗試在 Fedora 上使用 Xen,所以您可能成功地獲得大量的在線幫助。


--------------------------------------------------------------------------------

安裝 Xen

為了幫助您迅速上手和使用,本節著重指出了 參考資料 部分中 Quick Start Guide 的要點。由於 Fedora 中正在融入 Xen 更新,所以隨著時間的推移,Quick Start Guide 將很可能會發生變化,希望 wiki 會保持對這些變化的更新。

首先,為基礎機器(base machine)進行最簡化的伺服器安裝。這台基礎機器是您的系統管理程序,將不會運行任何伺服器應用程序。您將可以在運行於此機器之上的 Xen 伺服器中安裝所需要的軟體包,所以現在不需要安裝想要運行的應用程序。

系統開始運行后,您應該將其更新到 Fedora 的最新開發版本(稱為 rawhide)。要完成此任務,請遍歷 /etc/yum.repos.d/ 目錄中的元素,將除了 fedora-devel.repo 以外的所有元素都改為 enabled=0;將 fedora-devel.repo 改為 enabled=1。

建立了 yum 儲存庫(repository)后,需要將機器更新到 rawhide,以便您可以開始使用最新發布的 Xen。


清單 1. 將 FC3 更新到 rawhide 並安裝 Xen 軟體包

程序代碼:
yum update
yum install xen kernel-xen0 kernel-xenU

然後,創建一個將要使用的虛擬文件系統。

清單 2. 格式化並建立 Xen 伺服器文件系統

程序代碼:
mkdir -p /xen/base
dd if=/dev/zero of=/root/base.img bs=1M count=1 seek=1024
mkfs.ext3 /root/base.img
mount -o loop /root/base.img /xen/base

格式化並掛載 Xen 伺服器文件系統之後,下一個步驟是安裝必要的軟體包,以便在這些軟體包上運行某些程序。為了在 Xen 伺服器上運行一個 Web 伺服器,您應該安裝一組 Web-server 軟體包。(警告: 這將需要一段時間!您可以先運行 yum,然後出去散散步。)


清單 3. 安裝 Xen 伺服器軟體包

程序代碼:
yum --installroot=/xen/base -y groupinstall web-server --enablerepo=base --disablerepo=development

(現在應該去散步了。)

現在已經安裝了所有需要的軟體包,不過您應該去查看一個簡單的 fstab 文件,這個文件會告知 Xen 伺服器它們將要獲得根(root)設備 sda1,將該設備作為根。根設備實際上是來自系統管理程序的一個虛擬的設備,但您的伺服器不會知道這一點。


清單 4. Xen 伺服器 fstab 文件

程序代碼:
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

將這個文件寫入 /xen/base/etc/fstab。如果不是標準的 Fedora 安裝,那麼不會為您創建任何 fstab。預計 Fedora 的未來版本會包含處理此問題的工具。

最後,為了讓系統正確地運行,您應該做一些處理。目前,Xen 使用 initrd 時仍然存在問題,所以,如果想要啟動系統,則需要為自己創建一些設備代碼。然後,為了讓程序平穩運行,刪除 TLS 程序庫會有所幫助,因為目前它們與 Xen 衝突很嚴重。完成這個步驟后,可以卸載這個文件系統。

清單 5. 為開始運行所做的最後的處理

程序代碼:
for i in console null zero ; do MAKEDEV -d /xen/base/dev -x $i ; done
mv /lib/tls /lib/tls.disabled
mv /xen/base/lib/tls /xeb/base/lib/tls.disabled
umount /xen/base/

運行 Xen

既然已經細心地手工建立起了客戶系統,那麼您現在就可以真正重新啟動機器,開始使用 Xen 內核。您可能將會看到比平時多得多的列印輸出,並且您還會看到關於 TLS 程序庫(上一節中您刪除的那個會出問題的程序庫)的可怕的消息。

Xen 要求為運行的每個伺服器準備配置文件。儘管您可以為所有伺服器創建一個惟一的動態配置文件,但我還是建議您創建兩個靜態的配置文件,各用一個。如您所見,磁碟標籤告訴伺服器您的文件映像是 sda1 設備。也指定了您所使用的 xenU 內核,以及伺服器客戶將要獲得的內存。


清單 6. Xen 伺服器配置文件

程序代碼:
/etc/xen/base
kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"
memory = 64
name = "BaseServer"
nics = 1
disk = ['file:/root/base.img,sda1,w']
root = "/dev/sda1 ro"
/etc/xen/test
kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"
memory = 64
name = "TestServer"
nics = 1
disk = ['file:/root/test.img,sda1,w']
root = "/dev/sda1 ro"

要啟動並運行伺服器,首先要使用命令 xend start 啟動 Xen 服務,然後使用命令 xm create base 通過基本配置文件創建 BaseServer。通過這些步驟,您將進入 Xen 客戶系統中,可以看到該系統已經啟動起來。不論何時,如果您想跳出客戶系統控制台,那麼按下 Ctrl-] 組合鍵就可以直接返回到系統管理程序控制台。


--------------------------------------------------------------------------------


使用 Xen

現在您已經用了一些時間來編輯配置,並建立了運行兩個 Xen 伺服器的系統。所有這些艱苦的工作完成後,接下來做什麼?

現在您擁有了一個系統的兩個副本,它們運行相同內核,在同一台機器上被虛擬化。如果 BaseServer 代表的是您希望正常運行 Web 服務的穩定環境,那麼 TestServer 代表的就是 Fedora rawhide 所提供的最新軟體更新。您可以隨意保持對 TestServer 系統的升級,嘗試所有新版本的軟體更新 —— 當您認為它足夠穩定時,可以將 TestServer 作為 BaseServer 來運行。

設置 BaseServer

BaseServer 運行時,是修改將要運行的 httpd 服務的配置的好時機。您應該將 ssl.conf 文件移出 /etc/httpd/conf.d/ 目錄,以此來停用 ssl;否則,您將需要為伺服器生成證書。另外,可能需要向系統添加一個 apache 用戶。

Xen 系統管理程序已經自動提供了一個可以使用的虛擬網路設備。如果您可以在這個設備上運行 dhcp,那麼只需要執行 dhclient eth0,BaseServer 就會獲得 IP 地址。

設置 TestServer

設置了 BaseServer 的配置之後,在 BaseServer 控制台中執行 poweroff 以關閉該實例。如果您已經從 BaseServer 註銷,那麼可以使用 xm console BaseServer 重新進入它。

現在,通過 cp /root/base.img /root/test.img 複製基礎映像,以便獲得同一文件系統的副本。當運行 xm create -c test 時,它會運行與 BaseServer 相同的伺服器,但是它的名稱是 TestServer。登錄到 TestServer,然後像您在 安裝 Xen 那一節中所做的那樣啟用 rawhide 支持,然後運行 yum update。

TestServer 實例擁有與 BaseServer 完全相同的配置,但是您已經升級到了 Fedora rawhide 所必須具備的最新的軟體包。在此,您可以查看 Web 站點是否仍然可用。


關於 Xen 還有哪些內容?

我希望這些簡短的說明和簡單的示例能夠幫助您安裝和運行 Xen,這樣您就可以嘗試使用它。為了讓您迅速地熟悉 Xen,我沒有介紹如何利用 LVM 與快照(snapshots)等功能,也沒有介紹如何完成 Xen 伺服器從一台機器到另一台機器的網路遷移。但是,既然您已經了解了 Xen 所具備的一些優勢,請瀏覽下面的 參考資料,學習一些如何使用它的更為多變的技巧。


參考資料


您可以參閱本文在 developerWorks 全球站點上的 英文原文。
在 Xen Project Page 可以找到郵件列表以及對 Xen 提供支持的其他渠道。
「Xen and the Art of Virtualization」 是一篇詳細的研究論文,描述了 Xen 系統管理程序的架構。這篇文章以及 關於 Xen 架構的其他論文 是確切理解 Xen 如何工作的無價之寶。
「 Xen and the Art of Repeated Research」是 XenoLinux(運行於 Xen 虛擬機中的 Linux)與本地 Linux 以及與 IBM eServer™ zSeries® 主機上的其他虛擬化工具的性能比較。它對結果的一致性重複進行初期的性能分析。
請參閱Xen in Fedora Core Project,以獲得項目更新信息。
要安裝使用 Xen 並共享您的經驗,請使用來自 fedoraproject 站點 的 wiki page on the Xen Quick Start Guide for Fedora。
FUDCon: Fedora User and Developer Conference 對所有人開放,最近在第一次會議上引入了關於 Xen 的話題。
獲得支持 Xen 的這些發行版本:SUSE Linux、 Debian 和 Gentoo's bugzilla(實驗用的 e-builds)。
「Virtualization and the On Demand Business」 (IBM Redpaper,2004 年 8 月)描述了組織可以如何通過虛擬化技術讓自己能夠從 IT 基礎設施獲得更多商業價值和更高靈活性。
「Autonomic features of the IBM Virtualization Engine」(developerWorks,2004 年 9 月)介紹了標題中的引擎,它是一套系統服務和技術,能夠以集成的系統而不是以單個組件的方式來管理資源、伺服器、存儲器和網路。
「Architecture for Virtualization with WebSphere Application Server, Version 5」 闡述了如何使用 WebSphere® Application Server 構建虛擬化資源。
「Advanced Virtualization Features on p5 Servers」(IBM Redbooks Technote,2005 年 2 月)闡述了如何根據您的需要在 IBM eServer pSeries® 5 伺服器上選擇最佳的虛擬化配置。
Developer resources for an on demand world 對關於虛擬化的參考資料進行了綜述。
在 developerWorks Linux 專區 可以找到更多為 Linux 開發者準備的參考資料。
通過參與 developerWorks blogs 加入 developerWorks 社區。
在 Developer Bookstore Linux區訂購 [urlhttp://devworks.krcinfo.com/WebForms/ProductList.aspx?Search=Category&id=300&parent=Linux]打折出售的 Linux 書籍[/url]。
訂購免費的 SEK for Linux,這套 DVD(兩張),包含了來自 DB2®、Lotus®、Rational®、 Tivoli® 和 WebSphere® 的最新的用於 Linux 的 IBM 試用軟體。
使用可以直接從 developerWorks 下載的 IBM 試用軟體 來改進您的下一個 Linux 開發項目。

關於作者



Bryan Clark 是 Red Hat 的 Desktop Group 的擁躉者。Bryan 還是很多關於 GNOME Desktop 的項目的成員,他在設法儘可能主動地去接管所有的桌面。Bryan 以及他來自 Clarkson Open Source Institute 的同事們於去年發表了一篇對 Xen 性能統計進行重新評價的研究論文。他當前居住在馬薩諸塞州的 Cambridge,喜歡即興到其他地方去旅行。您可以通過 bclark@redhat.com 與 Bryan 聯繫。

[火星人 ] 轉帖!使用 Xen:使用虛擬 Linux 來測試應用程序已經有619次圍觀

http://coctec.com/docs/linux/show-post-122095.html