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