[譯文] Xen: 完成工作

[譯文] Xen: 完成工作

http://lwn.net/Articles/321696/ 
By Jonathan Corbet 
March 4, 2009 
王旭 2009年3月22日譯 http://wangxu.me/blog/?p=126

曾幾何時,Xen是炙手可熱的虛擬化技術。Xen的開發者們擁有一個自由軟件中最爲領先的虛擬化解決方案,Xen看起來正是Linux虛擬化的未來。很多風投在追逐這個神話,各個發行版也競相提供基於Xen的虛擬化平臺。然而,在這條路上,Xen似乎已經走失了。XenSource的開發者們看起來似乎沒有興趣讓他們的代碼進入主線內核,而其他人的努力也遇到了沒完沒了的障礙。於是,Xen在多年以來就一直停留在主線之外了。Xen首次對外發布是2003年的事了,可Xen的核心代碼僅僅在2007年10月才進入了2.6.23。

就在同時,KVM出現了,而且一下子搶走了衆多的注意力。它以難以置信的速度一下子就進入了主線內核,而且很多內核開發者都毫不掩飾的表達了他們對於KVM鎖採用的方法的青睞。就在最近,Red Hat發佈了他們的KVM虛擬化時間表,讓這種偏愛更加官方了。同時,lguest 成爲了那些想要嘗試虛擬化的人的簡單選擇。

Xen的故事是“上游優先”策略產生的原因的一個經典實例,該策略要求代碼在被提供給客戶之前應該首先進入主線。發佈者們忙不迭地首先發布Xen,然後就發現他們自己正在支持一段out-of-tree的代碼,這些代碼常常根本不被他們的開發者鎖支持。特別地,對外發布的Xen通常只支持相當老的內核,希望提供一些更新的內容的發佈者需要做很多工作來讓它們一起工作。現在,至少部分的發佈者(發行版)已經開始走向其他的選擇了,而高層的內核開發者則在問一個問題——事到如今,是否還值得來把剩下的Xen代碼merge進來。

所有人都在說,Xen已經岌岌可危了。不過,或許更嚴重的所謂Xen已經死掉了的流言有些言過其實了。

主線中的代碼實現了 Xen 的 DomU 概念——一沒有訪問硬件的權限的非特權域。而一個完整的Xen則需要更多功能;需要一個用戶空間(原文如此)的hypervisor(是以GPL許可發佈的)和內核中的Dom0代碼。Dom0是hypervisor啓動的第一個域;定性情況下,它比其他Xen guest擁有更多的特權。Dom0用於在管理策略的管理下小心的向其他域提供那些諸如訪問硬件、網絡等的特權。一個實用的Xen系統必須包含Dom0代碼——目前是一大塊out-of-tree的kernel代碼。

Jeremy Fitzhardinge 希望改變這一局面。他發出了一組Xen Dom0 patch ,希望能夠進入 2.6.30。在審閱者中,Andrew Morton問了這個問題 :

我討厭成爲說着句話的人,不過,我們確實應該坐下來弄明白把它merge到Linux當中來是否真的合適。我覺得Xen是實現虛擬化功能的老方法了,世界已經專項新方向KVM了。

三年之內,我們是不是會後悔我們merge了Xen?

Andrew的問題本質上是:(1)完成這個工作需要什麼代碼(這次提交的代碼之外),和(2)這麼做的原因是什麼?第一個問題的答案 是“再有2-3個尺寸差不多的補丁集就將提供引導dom0所需的所有代碼”。之後有一些其他的不同內容可能不會進入主線。不過,Jeremy說,讓核心代碼進入主線將會減少發行版需要打的out-of-tree的補丁,讓所有人的生活變輕鬆一些。對於第二個問題,Jeremy迴應到:

儘管kernel週期中有來自kvm的影響,Xen還是擁有龐大並且仍在增長的用戶羣的。此時,他們都工作在大量的out-of-tree補丁之上,這對大家來說都十分不快。讓他們成爲主線內核的一部分再好不過了。你知道,這和我們爭論的所有其他事情都一樣。

此外,Jeremy表示,Xen仍然有其存在的價值。它的設計在很多方面和KVM有本質的不同;這封郵件精闢的解釋了這些差異。所以,Xen作爲另一個解決方案已然有意義。

Jeremy指出的一些Xen的優勢包括:

  • Xen的實現頁表的方法消除了shadow頁表或guest中嵌入頁表的需要;這樣,可以讓許多負載獲得更好的性能。
  • Xen的hypervisor是非常輕的,並且可以獨立運行;而KVM的hypervisor則就是Linux內核本身。似乎有些廠商(HP 和Dell被點到名了)在他們的很多系統的firmware中會提供一個Xen的hypervisor。這些代碼於是和可以和其他的東西一樣具有可以立即使用的特性了。
  • Xen的半虛擬化方式可以使用不支持虛擬化的硬件一起工作。而KVM則需要硬件支持。
  • 分離hypervisor, Dom0和 DomeU的方式讓安全性檢查更簡單了。各個域之間的隔離還允許讓每個設備都在一個獨立的域中提供服務,這可以看做是一種重量級的微內核架構。

與此不同,KVM相對更簡單、更易用,並且可以訪問所有的內核特徵。在Jeremy看來,兩個系統在Linux中各有不同的位置。

這個討論在最後重歸沉默,這表明Jeremy的解釋相當不錯。Xen歷史上犯過錯誤,但這個項目仍然活着,而且仍然有它的原因繼續存在下去。你的編輯(譯 着:編輯就是本文原文作者)預測,Dom0的代碼在嘗試進入2.6.30的merge window的時候還會遇到一定的反對意見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章