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