Linux conatiners (LXC) 是在Linux平台上基於容器的虛擬化技術的未來標准,它和傳統的解決方案如Linux-VServer
和OpenVZ
有所區別。最初的LXC技術是由IBM研發的,目前已經進入Linux內核主線,這意味著LXC技術將是目前最有競爭力的輕量級虛擬容器技術,相比較傳統的VServer和OpenVZ輕量級虛擬技術(兩者都需要對標准內核進行補丁),發展潛力更大。
一直以來,我對Solaris平台的輕量級虛擬技術Container非常喜歡,因為Container虛擬技術不僅帶來了完全隔離的完整虛擬平台,而且由 於是基於應用的虛擬化,所以每個虛擬機僅是主機系統的一個進程,不需要完全模擬硬件,資源占用非常少。這樣Container虛擬技術是那種不需要完全模 擬硬件(不直接操作磁盤硬件)的虛擬環境的良好選擇,輕量級並且速度快,能夠在一台主機上運行成百上千的虛擬容器。
這種容器虛擬化技術特別適合測試環境,測試各種應用平台,對系統硬件要求也極低。以往我嘗試使用的Linux-VServer
就是我用來測試各種應用軟件的平台,使用非常滿意。不過,傳統的容器虛擬化技術存在一個根本限制,就是代碼沒有進入到Linux內核發行中,每次都需要針對新發布的內核進行補丁,這對系統穩定帶來很大隱患,並且也不利於長期跟蹤和應用。
目前,LXC技術也正處於起步階段,管理工具LXC的版本尚只達到0.7.2。
從網上中文資料來看,主要發源於IBM developer網站(IBM是LXC的開源發起者,中文資料是從英文網站翻譯過來的):
中文版:
英文版:
LXC英文參考資料相對較多,用Google還是能夠找到很多資料的。
我也是最近開始接觸LXC虛擬技術,對於原理性的資料尚搜集不多,以下僅僅是簡單羅列一些,有待今後不斷學習補充。
技術以實踐為主,很快我會提供一些我的實踐記錄,給喜歡虛擬技術的同好參考。
容器虛擬化技術是非常快速和高效的。它的原理基於操作系統內核對不同的運行進程提供了不同的系統視圖。這種隔離可以用於確保在保證安全和效率的情況下授權訪問硬件資源,如CPU和IO帶寬。
在unix系列操作系統,容器虛擬化起源於1982年發布的chroot工具,這是一個特殊居於容器虛擬的文件系統子系統,最早由Sun公司創始人Bill Joy開發並且作為BSD 4.2的組成進行發布。
以後,大量的開發帶來了以下一些強勁的容器虛擬化技術:
然而,這些技術都沒有被Linux內核所接受。相反Linus已經選擇了一個更具伸縮性,更長遠的技術來達到相同目標,即使用一系列新的內核特性。lxc就是使用這些新特性的下一代容器虛擬化技術。
完全虛擬化也稱為paravirtual虛擬化解決方案。和lxc這種容器虛擬化技術不同,完全虛擬化通常允許運行任何操作系統,因為完全虛擬化模擬了硬件。最流行的完全虛擬化技術有,VMWare,KVM和Xen。
使用lxc可以有效管理資源分配,並且可以使用相同內核的不同容器中運行不同的Linux發行版本。
但是和完全虛擬化技術不同,不能運行其他種類操作系統,也不能運行不同的內核。
此外,可以使用libvirt的虛擬化管理API進行開發。
lxc使用了兩個新型的、少有人知的內核特性 control groups 和 POSIX file capabilities。
Control Groups是多層次,多子系統資源管理和控制框架。
簡單的說,這意味著和陳舊的chroot工具限制文件系統訪問不同,control groups允許定義一個包括一個或多個進程(例如,sshd、apache等),然後設置一系列資源控制和記賬選項來控制該組和其他子系統分離,例如:
POSIX文件能力是一種分配權限給一個進程允許更多的特定安全控制而不是傳統的’root’對應’user’的常規unix操作系統權限分離。