虛擬化與容器

2020-09-24 老王的日誌

虛擬化按目前使用的類別分類,可分為兩種,主機級別虛擬化和容器級別虛擬化

1.主機級別虛擬化

  • type-I:Hypervisor
  • type-II:OS-hosted

a.type-I

這種虛擬化,hypervisor繞過我們熟知的os內核,直接接管硬體,然後自己再虛擬出對應所需要的os內核。主要產品有VMware ESXI,如下圖左側

b.type-II

宿主機虛擬化,hypervisor層運行於宿主機os之上,通過主機os內核來進行硬體的內核調試,主要產品有VMware workstation,如上圖右側

2.容器級別虛擬化

容器虛擬化,有別於主機虛擬化,其存在宿主機os,但其與主機級別虛擬化的type-II不一樣,並非進行內核的虛擬化,而是通過namespace進行虛擬化,通過namespace的隔離,進行各程序的隔離,通過cgroups,進行資源的控制,以此來進行虛擬化。如下圖

3.namespace

linux 內核從版本 2.4.19 開始陸續引入了 namespace 的概念。當一個程序運行於主機之中時,其基本要求有,系統根文件目錄、運行pid進程號、主機名、網卡、ipc通信、程序運行用戶這六大類。

linux將以上六類進行了內核級別的虛擬化,這六大類統稱為namespace

因為centos6的內核為2.6,所以user name不支持,所以centos6天然不太支持容器,雖然可以通過升級內核來進行支持,不過建議直接使用centos7以上的系統

4.cgroups

cgroups: Linux control groups,linux為運行的任務分配cpu、ram等,當namespace為容器進行隔離之後,還需要對每個容器進行資源的使用進行控制,不能讓其搶佔其它容器的資源。

cgroups主要對以下內容進行資源控制

  • blkio:塊設備IO
  • cpu:CPU
  • cpuacct:CPU資源使用報告
  • cpuset:多處理器平臺上的cpu集合
  • devices:設備訪問
  • freezer:掛起或恢復任務
  • memory:內存用量及報告
  • perf_event:對cgroup中的任務進行統一性能測試
  • net_cls:cgroup中的任務創建的數據報文的類別標識

5.AUFS

a. AUFS的概念

AUFS:Union File System,聯合文件系統,主要功能是將位於不同物理位置的目錄合併成同一個目錄,有點類似於hadoop中hdfs的分布式存儲。

b.linux的基本文件系列

linux系統啟動,至少需要有兩種文件系統,一種是bootfs,一種是rootfs,

  • bootfs:包含 boot loader 和 kernel。用戶不會修改這個文件系統。實際上,在啟動(boot)過程完成後,整個內核都會被加載進內存,此時 bootfs 會被卸載掉從而釋放出所佔用的內存。同時也可以看出,對於同樣內核版本的不同的 Linux 發行版的 bootfs 都是一致的。
  • rootfs:包含典型的目錄結構,包括 /dev, /proc, /bin, /etc, /lib, /usr, and /tmp 等再加上要運行用戶應用所需要的所有配置文件,二進位文件和庫文件。這個文件系統在不同的Linux 發行版中是不同的。而且用戶可以對這個文件進行修改。

同一個內核版本的所有linux系統的bootfs是相同的,rootfs不同

c.docker 鏡像

在docker images中,其採用的是分層技術,基礎鏡像中的roofs會一直保持只讀模式,docker利用union mount來在這個rootfs上增加更多的只讀文件系統,最後它們看起來就像一個文件系統即容器的rootfs。

在docker的分層鏡像中,除了支持aufs之外,還支持devicemapper,因為在aufs暫時還未被收納入linux內核主幹,ubuntu14支持aufs,所以docker在ubuntu上面使用aufs,而作為比較保留的redhat系列上,docker使用的devicemapper

相關焦點

  • 容器與虛擬化的結合:淺談「安全容器」技術發展趨勢
    為什麼不能直接將虛擬化級別的隔離引入到容器技術中呢?結合虛擬化的安全性和容器在軟體生命周期管理方面的優勢,是不是可以給軟體開發運維帶來巨大的便利呢?OCI標準定義了一套容器運行時的命令行接口和文件規範,docker將其RunC捐給OCI作為運行時標準的一個參考實現。2015年Hyper.sh開源了RunV,則是一種基於虛擬化的容器運行時接口的實現,它很好地結合了虛擬化的安全性和容器的便利性。後來RunV和ClearContainer合併成立了kata項目,kata提供了更加完整的基於虛擬化的容器實現。
  • 航司虛擬化&容器化等部署思路
    但是如何將這些技術設施部分的部署和選型定位好,是需要根據業務應用的訴求和方向而針對性的建設的,而不是無服務方式將完全替代容器化,或未來不存在虛擬化等等的情況。虛擬化虛擬化提供了一個硬體抽象層,它可以根據每臺伺服器的應用程式的特定CPU、內存、存儲和網絡需求進行調整。如果沒有虛擬化,應用程式和操作體系結構團隊將設計、獲取和安裝每個應用程式所需的伺服器、存儲和網絡。
  • 基於容器的虛擬化技術能否最終取代虛擬機?
    基於容器的虛擬化技術並不是一個新概念,但最近得到了紅帽等公司的關注。這些公司為最新推出的Docker提供了很多支持,人們開始猜想輕量級的容器解決方案是否將會取代傳統的虛擬機。
  • 易思捷與VMware同步實現虛擬化架構管理容器技術
    昨日該公司宣布:實現了單一控制平臺並可同時管理虛擬化和容器技術,即可以在同一個IAAS平臺上同時支持虛擬機以及輕量化容器管理而無需k8s等第三方平臺,助力企業實現現代化應用,在安全可控的大道上,易思捷正一步步地縮短與國際巨頭的距離。
  • 看懂雲計算、虛擬化和容器,這一篇就夠啦
    什麼是虛擬化 如果要對物理資源進行管理,第一步,就是「虛擬化」。 虛擬化是雲計算的基礎。簡單來說,虛擬化就是在一臺物理伺服器上,運行多臺「虛擬伺服器」。這種虛擬伺服器,也叫虛擬機(VM,Virtual Machine)。
  • 運維必備的Docker虛擬化容器4個高級實戰項目案例!
    一: Docker虛擬化特點跟傳統VM比較具有如下優點:操作啟動快運行時的性能可以獲取極大提升,管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。輕量級虛擬化你會擁有足夠的「作業系統」,僅需添加或減小鏡像即可。在一臺伺服器上可以布署100~1000個Containers容器。
  • 先進的輕量虛擬化架構,矽雲推進虛擬主機行業容器化
    為什麼大家都追捧容器和Docker呢?James Bottomley是Parallels公司的伺服器虛擬化首席技術官,也是一位知名的Linux內核開發人員,他曾這樣解釋道:「Hyper-V、KVM和Xen等虛擬機管理程序都「基於虛擬化硬體仿真機制。
  • 通過數據虛擬化和容器化使資料庫現代化,從而獲得更高的 ROI
    幸運的是,資料庫技術已經發展——包括採用虛擬化和容器化——以應對這些挑戰。IBM®Db2®現在作為 IBM Cloud Pak® for Data的擴展提供,提供了數據虛擬化的容器化體驗,甚至比以前更靈活。 通過我們獨家的現代化升級計劃,現在的Db2客戶可以更輕鬆地訪問 IBM Cloud Pak for Data帶來的好處。
  • X86虛擬化之三種伺服器虛擬化戰略架構
    • 容器:虛擬機運行在傳統作業系統上,創建一個獨立的虛擬化實例,指向底層託管作業系統,被稱為「作業系統虛擬化」。  圖 1 三種主要的虛擬化架構類型    相關閱讀:    X86虛擬化之Citrix XenServer     X86虛擬化之Red Hat企業級虛擬化KVM     X86虛擬化之Hyper-V R2和System Center     X86伺服器虛擬化之Vmware vSphere  作業系統虛擬化:容器  在容器模型中
  • 虛擬化技術概述-虛擬化層次
    有了虛擬化之後,用於的應用程式由相應的客戶作業系統管理,且客戶作業系統可以獨立於主機的作業系統,運行在同一個硬體上,且不需要適配硬體的特定體系結構。這通常通過增加一個虛擬化層來實現,該虛擬化層稱為hypervisor或VMM(Virtual Machine Monitor)。
  • 「15」進大廠必須掌握的面試題-容器化和虛擬化面試
    什麼是容器?我的建議是首先解釋對容器化的需求,容器用於提供一致的計算環境,從開發人員的筆記本電腦到測試環境,從過渡環境到生產環境。 現在給出容器的定義,一個容器包含一個完整的運行時環境:一個應用程式,及其所有依賴項,庫和其他二進位文件,以及運行該文件所需的配置文件,這些文件捆綁在一個程序包中。容器化應用程式平臺及其依賴項可消除OS分布和基礎架構中的差異。
  • 基於統信 UOS+龍芯 3B4000 的虛擬化和容器雲平臺完成 OA 適配
    IT之家3月16日消息 近日,統信軟體與龍芯中科首次完成基於龍芯3B4000伺服器與統信作業系統UOS的KVM虛擬機和Docker容器的安裝與調試工作,並在該平臺上完成OA系統和檔案管理系統的適配部署。
  • 伺服器虛擬化適合企業的業務嗎?
    虛擬化技術有多種類型,其中包括支持虛擬機的管理程序、容器虛擬化、硬體輔助虛擬化。在較高的層次上,所有虛擬化技術的目標都是為了實現同一個目標,即通過分層技術並以高效和靈活的方式配置資源,使物理計算資產更加可用。虛擬化與雲計算虛擬化和雲計算是兩個相互關聯的主題和技術。
  • 虛擬化技術的分類及介紹
    2.3 作業系統級虛擬化在作業系統虛擬化技術中,每個節點上只有唯一的系統內核,不虛擬任何硬體設備。通過使用作業系統提供的功能,多個虛擬環境之間可以相互隔離。通常所說的容器(Container)技術,如目前為止最流行的容器系統Docker,即屬於作業系統級虛擬化。
  • 關於容器和容器運行時的那些事
    為了實現我們之前提到的那些需求,我們需要一種更為強大的虛擬化技術,容器也就隨之發展起來。Docker容器與虛擬機類似,但原理上,容器是將作業系統層虛擬化,虛擬機則是虛擬化硬體,因此容器更具有便攜性、高效地利用伺服器。
  • 關於容器和容器運行時的那些事
    為了實現我們之前提到的那些需求,我們需要一種更為強大的虛擬化技術,容器也就隨之發展起來。2.容器VS.虛機Linux的容器和虛擬機的差比我想大家都比較了解了,我這裡再簡單敘述一下:對於使用虛擬機的傳統虛擬化,每個虛擬機都有自己的完整作業系統,因此在運行內置於虛擬機的應用程式時,內存使用量可能會高於必要值,虛擬機可能會開始耗盡主機所需的資源。
  • docker 容器在重啟以後處於
    docker 相對於傳統的虛擬化技術來說,優點就是不能不用語言來形容的,因為不管是哪個方面都要強於傳統的虛擬化技術。而傳統的虛擬化技術就不可以做到了。docker既然這麼厲害,那麼ta是怎麼的一個構成呢?
  • 容器技術之發展簡史
    1999 年,FreeBSD 4.0 支持 jail,第一個商用化的 OS 虛擬化技術。2004 年,Solaris 10 支持 Solaris Zone,第二個商用化的 OS 虛擬化技術。2005 年,OpenVZ 發布,非常重要的 Linux OS 虛擬化技術先行者。
  • 威睿(VMW.US):伺服器虛擬化的王者
    積極擁抱容器,計算虛擬化原生支持K8S伺服器計算虛擬化領域當之無愧的第一,滲透率已經很高。計算虛擬化的市場已經非常成熟, 2016年整體市場規模增長只有5.7%,目前來看,X86伺服器的虛擬化滲透率已經超過90%。同時,根據Gartner預測,計算虛擬化市場未來將維持個位數的增長。
  • 科技雲報導:容器與虛擬機之爭?不存在的
    ,可以理解為作業系統虛擬化技術,它是一種輕量級的虛擬化技術。 另一方面,容器廠商也認識到了虛擬化的客觀存在,也在擁抱虛擬化技術,kubevirt 就是基於這個目的推出的。,不僅如此,虛擬機也正在成為雲原生架構的一部分——這就是容器原生虛擬化。