效率與性能的提升:基于容器的虛擬化
如果你不介意只使用一種操作系統(tǒng)的話,那么和傳統(tǒng)的hypervisor相比,基于容器的虛擬化能夠提供更高的效率與性能。
基于容器的虛擬化使用單個內(nèi)核運行一個操作系統(tǒng)的多個實例。每個實例在一個完全隔離的環(huán)境中運行,因此不存在一個容器訪問另一個容器中文件這樣的風(fēng)險。因此,基于容器的虛擬化是安全的。
而且這種虛擬化方式的資源使用效率也是非常高的,因為所有的容器都運行在同一個內(nèi)核上。但是這種方式同樣存在弊端:只有一個內(nèi)核意味著無法選擇其他的操作系統(tǒng)。在對虛擬化方式進(jìn)行評估時,了解它們之間的差異以及每種虛擬化方式的優(yōu)勢是非常重要的。
基于容器的虛擬化與hypervisor的差異
hypervisor與基于容器的虛擬化存在一些不同之處。首先,基于hypervisor的虛擬化,其每個虛擬機(jī)都需要安裝一個完整的操作系統(tǒng),這當(dāng)然包括內(nèi)核。這一需求使得基于hypervisor的虛擬化相當(dāng)厚重但也非常靈活。因為每個虛擬機(jī)都有自己的內(nèi)核,所以hypervisor只需要協(xié)調(diào)虛擬機(jī)訪問硬件設(shè)備。因此,你可以安裝任何操作系統(tǒng),而且它們都是在完全隔離的環(huán)境中運行的。
另一方面,在基于容器的虛擬化環(huán)境中,虛擬機(jī)與硬件的關(guān)系更緊密,因為所有的虛擬機(jī)都使用同一個內(nèi)核,不再需要hypervisor.流行的基于容器的虛擬化運行在Windows內(nèi)核(使用Parallels Virtuozzo虛擬化容器時)或者Linux內(nèi)核之上。由于Linux內(nèi)核具備開放性以及靈活性,所以在多數(shù)情況下基于容器的虛擬化通常使用Linux內(nèi)核。而且可以使用很多開放以及免費的解決方案。
通常企業(yè)不會使用基于容器的虛擬化,他們偏愛hypervisor使用多種操作系統(tǒng)。但是基于容器的虛擬環(huán)境是虛擬主機(jī)提供商的一個理想選擇?;谌萜鞯奶摂M化為用戶提供了一種高效、安全的運行服務(wù)的方式。
為簡化虛擬機(jī)的維護(hù),虛擬主機(jī)提供商力圖為所有的虛擬機(jī)提供相同的操作系統(tǒng)。例如,只需要升級物理服務(wù)器的Linux內(nèi)核,就完成了運行在該物理服務(wù)器上的數(shù)百臺虛擬機(jī)的內(nèi)核升級工作。如果最先考慮的是實現(xiàn)效率的最大化而不是在不同的操作系統(tǒng)之間進(jìn)行選擇,而且要使用影響更為深遠(yuǎn)的方式(比如cgroups)對性能進(jìn)行優(yōu)化,那么基于容器的虛擬化是一種理想的解決方案。
Linux LXC為基于容器的虛擬化提供了便利
LXC是最新的Linux附加產(chǎn)品之一,它天生就能創(chuàng)建基于容器的虛擬化解決方案。LXC基于chroot和所謂的chroot jail.允許在單個內(nèi)核之上運行彼此隔離的虛擬機(jī)。但是LXC并沒有完全復(fù)制chroot jail--實際上只需要二進(jìn)制文件、庫文件以及配置文件。同樣,可以對單個虛擬機(jī)進(jìn)行最大化的精簡。
Linux容器虛擬化另一項重大的改進(jìn)就是使用了cgroups.cgroups可以在內(nèi)核級別創(chuàng)建資源組,而且你可以指定這些資源的優(yōu)先級。這樣,你就可以確保所有的虛擬機(jī)恰好具備它所需要的資源。
基于容器的虛擬化的上述兩個方面創(chuàng)建了一個非常高效的環(huán)境,正是在這個高效的環(huán)境中同一個操作系統(tǒng)的多個實例可以提供您的用戶使用。