天天看點

【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生

大家好! 我是複旦大學CodeWisdom實驗室的同學,在OpenHarmony成長計劃啃論文俱樂部裡,與華為、軟通動力、潤和軟體、拓維資訊、深開鴻等公司一起,學習和研究核心、邊緣計算和虛拟化等技術。我們所在的小組是【EC-VT】Edge Computing - Virtualization Technology。

本期看點

  • 【小組規劃】
  • 【論文簡介】
  • 【智慧場景】
  • 【技術地圖】
  • 【内容介紹】
    • 發展曆史
    • 常用的虛拟化技術
    • 參考文獻

小組規劃

小組學習的主要目标就是學習虛拟化技術,虛拟化技術主要分為兩大類:虛拟機和容器技術。依據鴻蒙作業系統的特性,我們會首先依據曆史地圖和容器技術的技術地圖逐層的研究容器技術,随後我們會再去研究虛拟機技術。

論文簡介

本篇内容主要來源于論文:回顧虛拟機和容器的曆史- The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers

  • 這篇論文發表于2019年,随後在2021年被ACM Computing Surveys Volume 53收錄。
  • 作者是Allison Randal。她是Software Freedom Conservancy的董事會成員、 Open Infrastructure Foundation的董事會主席、 Open Usage Commons的董事會成員以及FLOSS Foundations開源上司者小組的聯合創始人。目前在劍橋大學攻讀博士學位。
  • 論文摘要:

    目前學術文獻和業界的普遍看法是,虛拟機提供了更好的安全性,而容器則提供更好的性能。然而。詳細回顧一下這些技術的曆史以及它們目前所面臨的威脅揭示了一個不同的故事。本篇論文主要是調研了從1950至今的虛拟機和容器的演變過程中的重要節點,目的是以準确的曆史資料來反駁現代人的誤解,并為正在進行的研究内容提供一個堅實的基礎。

智慧場景

相信虛拟機和docker大家都略有耳聞。我們在購買雲伺服器的時候買的就是一個個虛拟機,而我們在伺服器部署mysql、nacos這樣的服務時會采用docker一條指令安裝。這些都是典型的虛拟化技術使用場景。

【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生

此外,物聯網這個詞自誕生以來已經過了20多個年頭了,但發展并不令人滿意。微小的實體裝置很難承受複雜的計算任務,是以提出了一種新的思路,利用邊緣計算為物聯網裝置提供額外的計算資源。相比較雲計算,邊緣計算裝置有非常大的異構性,大到邊緣雲小到手機等移動裝置。雲計算與邊緣計算最重要的技術就是虛拟化技術,是以虛拟化技術非常有意義。

技術地圖

  • 虛拟化技術的曆史地圖
【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生
【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生
  • 容器技術的技術地圖
【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生

(上圖可以忽略arm架構,因為容器技術也可以在其他架構上隻是本圖沒有展現)

  • 虛拟機技術的技術地圖
【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生

内容介紹

所有的技術都與當時的曆史場景息息相關。計算機的發展曆史可以大緻的認為是大型機->個人主機->雲計算->邊緣計算,是以虛拟化技術也在每個階段有不同的表現。

【EC-VT】OpenHarmony啃論文俱樂部——虛拟化技術的前世今生

大型機時期(PC出現之前)

虛拟化技術的起源就是在大型機時期,當時所有的計算機大到隻能在實驗室部署。同時許多大型機作業系統同時段僅能處理單任務。是以多任務處理(多道程式程式設計)在研究員心裡萌芽。對于多道程式處理這個想法研究員主要分為三條路去探索:分時作業系統、基于能力的作業系統、硬體虛拟化。多任務處理就是虛拟機和容器技術的起源,也就是後面兩條路的發展。

虛拟機技術的起源是硬體虛拟化的想法。研究員探索将任務涉及到的CPU、記憶體和I/O進行虛拟化,這樣就可以将一個實體機虛拟出許多實體機的假象,供多個人同時使用這個實體機。當然這個虛拟化的研究過程非常漫長,一直到1970年左右個人主機出現。

容器技術的起源是基于能力的作業系統。研究員希望給每個任務配置設定一個域,也就是一部分實體資源。基于能力的作業系統是給任務配置設定能力,任務和任務之間的運作環境完全是隔離開的。這類研究因為硬體裝置、實驗以及個人主機的出現等種種原因在1970年左右也停止了。

個人主機時期

個人主機的出現後,作業系統不斷的完善多任務處理的能力。檔案系統管理、程序管理、IO管理等等子產品不斷的豐富,也使得虛拟化技術消失在人們視野中。

雲計算時期

20世紀90年代之前,雖然雲計算的技術已經紛紛出現了,但人們沉浸于PC市場的繁榮,主要精力都放在了軟體和網絡上。直到90年代後,雲計算相關的理念重新回到了人們的視野。不過這次它換了一個更簡單的名字,叫做**網格計算(Grid Computing)**。

網格(Grid)的叫法,和我們日常了解的“網格化管理”有很大不同,它是直接照搬自電網的概念(Electric Power Grid)。它的本質目的,還是把大量機器整合成一個虛拟的超級機器,給分布在世界各地的人們使用,也就是公共計算服務。

随着雲計算的興起,虛拟化技術也再度出現在人們視野中。雲計算也分為不同階段,從實體資源池化通過虛拟機來共享實體資源,到通服務來共享實體資源。

從20世紀90年代至今,虛拟機技術從純軟體虛拟化發展到硬體虛拟化(CPU提供VT指令集與軟體一同完成虛拟化技術)。現在的技術在不斷追求虛拟機的安全性和性能提升上,主要用于Iaas這樣基礎裝置供應平台,例如阿裡、騰訊雲等。甚至最新的技術大家在修改核心架構去更好虛拟化實體資源。

同時期,容器技術從chroot開始使用命名空間等技術對資源進行隔離和管理。01年随着大規模叢集管理中的資源共享思想的發展,提出了pod概念,就是利用命名空間來限制一組程序和資源形成最小機關可以使其子實體機上自由遷移。容器概念提出在08年LXC,然後是14年Docker用libcontainer取代了LXC,同年Docker開始着手開發Swarm,并将其描述為Docker的叢集系統。谷歌開始開發Kubernetes,這是一種用于部署和管理容器生命周期的編制工具。2015年,Docker将容器運作時拆分為一個獨立的項目runc,以支援由開放容器倡議(OCI)維護的獨立于供應商的容器運作時規範。

目前常用的虛拟化技術

  • KVM

    Linux KVM虛拟化全稱為kernel-based Virtual Machine,是一個開源的系統虛拟化子產品,基于核心的虛拟機 (KVM) 是針對包含虛拟化擴充(Intel VT 或 AMD-V)的 x86 硬體上的 Linux 的完全原生的虛拟化解決方案。目前KVM已經被redhat公司收購,成為Linux 核心裡面的一種加速虛拟機的功能擴充。

    Linux中還有一種虛拟化技術Qemu,和KVM互為補充,叫做Qemu-kvm,它補充了kvm技術的不足,而且在性能上對kvm進行了優化。

    Libvirt又是什麼呢。它是一系列提供出來的庫函數,用以其他技術調用,來管理機器上的虛拟機。包括各種虛拟機技術,kvm、xen與lxc等,不同虛拟機技術就可以使用不同驅動,都可以調用libvirt提供的api對虛拟機進行管理。我們建立的各種虛拟機都是基于libvirt庫及相關指令去管理的。

  • Docker

    Docker是一款輕量級、高性能的虛拟化技術,是目前網際網路使用最多的虛拟化技術,Docker虛拟化技術的本質類似集裝箱機制,最早集裝箱沒有出現的時候,碼頭上有許多搬運的勞工在搬運貨物,集裝箱出現以後,碼頭上看到更多的不是勞工,而且集裝箱的搬運模式更加單一,更加高效。将貨物多打包在集裝箱裡面,可以防止貨物之間互相影響。并且到了另外一個碼頭需要轉運的話,有了在集裝箱以後,直接把它運送到另一個碼頭即可,完全可以保證裡面的貨物是整體的搬遷,并且不會損壞貨物本身。

    Docker虛拟化是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實作虛拟化。

    Docker容器是完全使用沙箱機制,互相之間不會有任何接口,幾乎沒有性能開銷,可以很容易地在機器和資料中心中運作。最重要的是,他們不依賴于任何語言、架構或包括系統。

    Docker虛拟化技術是在硬體的基礎上,基于現有的作業系統層面上實作虛拟化,直接複用本地主機的作業系統,直接虛拟生成Docker容器,而Docker容器上部署相關的APP應用(Apache、MYSQL、PHP、JAVA)。

參考資料

繼續閱讀