Skip to main content

虛擬化技術

和康顧問 版權所有 2023 © All Rights Reserved

在講述Docker以前,我們先來概述虛擬化的定義即出現。

為何有虛擬化技術?

工程師在開發程式時,都是以自己電腦環境上開發的,比如筆者是在Windows 10作業系統之環境開發程式,此時,如果想要將此程式運行在Mac OS或Linux上時,該怎辦?此外,如果此程式在我環境中運作時是正常的,但在你的電腦內卻無法運行,該怎辦呢?

 
 留言

關於第一個問題的解法是如果開發者想要讓程式運行在多個環境,也就是在一台電腦或伺服器上運行多個伺服器,那就是需要更多台實體伺服器(一台專門運行Mac OS、一台專門運行Windows…)。

關於第二個問題是因為每台電腦的作業系統與硬體配置不盡相同,所以可能在環境與相容性上出了點問題,那麼就是要創造一個能讓那台電腦運行的環境。

以上問題的出現才誕生了「虛擬化」這個技術。

何謂虛擬化?

虛擬化(Virtualization)如同字面上的意思,將東西虛擬化的意思,那麼東西是什麼?就是我們的資源、環境、應用程式等。虛擬化是透過軟體來對電腦硬體如CPU、RAM、儲存空間、網路介面等予以抽象,使其能分割成多個虛擬電腦,它們通稱為虛擬機器(Virtual Machine,VM)。在每一個虛擬機器裡都能安裝自己想要的作業系統,進而達成在同一個實體電腦上運行多個作業系統。但為何可以這麼做呢?因為主要是靠Hypervisor達成的。

Hypervisor

Hypervisor稱為虛擬機器監督器虛擬機器管理器,又稱為VMM(Virtual Machine Monitor)。Hyperviosor是一個軟體,允許我們在主作業系統建構並運行多個虛擬機器,且適當地分配資源如CPU、RAM、儲存空間至虛擬機器,另外,亦會幫助開發者管理所有的虛擬機器。如果真的要說,其實Hypervisor可作為實體硬體與虛擬機器(Virtual Machine,VM)之間的介面。現在市面上有很多的Hypervisor產品,其中最為有名的是VMware公司的VMware WorkstationOracle的VirtualBoxMicrosoft的Hyper-v。Hypervisor有兩大類分別為Type1Type2,說明如下 :

Host OS 與 Guest OS 的差別

Host OS => 主要的作業系統

Guest OS => 次要(訪客)的作業系統

例如: 現在我們電腦的作業系統是Windows 10,此時我們在此作業系統上安裝VirtualBox,在VirtualBox裡裝VM虛擬機器,裡面裝Linux

Host OS => VM裡的Linux

Guset OS => Windows 10

Type1 Hypervisor

第1類的Hypervisor是直接在基礎電腦的實體硬體上運行,直接與CPU、RAM、儲存空間進行互動,並取代主機作業系統的地位,因此又稱為裸機Hypervisor

 留言

通常此類型的Hypervisor普遍應用於企業級資料中心或其他以伺服器為基礎的環境。目前屬於Type1 Hypervisor有Microsoft Hpyper-vKVMVMware vSphere…等等。

Type2 Hypervisor

第2類的Hypervisor是在主作業系統(Host OS)上以應用程式或軟體的身分運行,通常此類型適用於工程師、資安人員或想要執行多個作業系統的個別使用者。目前屬於Type2 Hypervisor有VMware WorkstationOracle VirtualBox…等等。

 留言

底下為Type1與Type2的示意圖 :

然而虛擬化已擴展至很多東西上,例如桌面虛擬化、網路虛擬化、資料虛擬化、雲端虛擬化…等等,其中討論度最高的是伺服器虛擬化,那接下來會對大家說明伺服器虛擬化的定義。

伺服器虛擬化

伺服器虛擬化是將一台實體的伺服器切割成多個虛擬伺服器的過程,又稱為虛擬專用伺服器(Virtual Private Server,VPS),好比如現階段筆者所使用的Linode虛擬伺服器,實體機房在台灣,但藉由那一台伺服器切割成很多虛擬伺服器給開發者使用。想要實現VPS的技術有兩種分別為容器化技術虛擬機器的技術,針對這兩種技術於後面會為大家做詳細的說明,每一個VPS都可以分配到獨立的IP位址、CPU、RAM、作業系統、磁碟空間等等,且彼此間互不干擾,可以獨立開機或重新啟動,並獨佔計算資源。

Linode專門提供虛擬伺服器的服務,但Google的GCP、Amazon的AWS、Microsoft的Azure都是屬於雲端平台,提供非常多雲服務,虛擬伺服器只是其中一項服務

虛擬機器(Virtual Machine,VM)

虛擬機器其實就是實體電腦的數位版本,虛擬機器可以執行作業系統、資料的儲存、連結網路上網,以及執行應用程式,且從VMM的軟體(Hypervisor)中取得運算資源。我們這邊用下面這張圖做解釋 :

從上圖可知,視窗的這個軟體是VMware Workstation,也就是Hypervisor,最左側看到的2個都是虛擬機器VM,裡面是用來運行作業系統或其他應用程式的執行。代表如果要運行不同的作業系統,必須運行在虛擬機器哩,且每個VM內的軟體都不會影響到主機電腦的作業系統。

容器化技術

早期接觸虛擬化技術時,都是強調把實體電腦虛擬化,並產生以下趨勢 :

 留言
  1. 雲端運算普及
  2. 私有伺服器服務移至雲端
  3. 企業開始建構屬於自己的私有雲或使用各大科技龍頭的公有雲

當時的虛擬化技術簡單可以理解為把作業系統虛擬化,也就是先前所說的虛擬機器VM。當然,使用虛擬機器作為虛擬化技術有很多優點,如下 :

  • 安全性高,Guest OS之間不知道彼此的存在,就算Guest OS毀損也不會影響到Host OS
  • 系統選擇較多,可以選擇不同的OS
  • OS裡的應用程式不須被拆分,且也不須大幅更改應用程式之架構

但也有一些缺點,如下 :

  • 因包含OS的關係,檔案大小通常為GB以上
  • 因要開啟OS,啟動速度較為緩慢
  • 必須消耗較多的系統資源,因為不單只給應用程式,還需要將一部分資源給OS

因這些缺點的關係才衍生出了容器化技術!!

容器化技術並不是完全取代虛擬機器的新技術!

虛擬機器是屬於作業系統層級的虛擬化,容器化技術則是屬於應用程式層級的虛擬化,針對於應用程式執行的環境與相依的資源進行打包,並讓它具備可搬遷與重複利用的特性

 留言

使用容器化技術的好處如下 :

  • 檔案容量較小,通常只有幾MB
  • 因沒有OS的關係,啟動速度較為快速
  • 因為沒有作業系統占用資源,因此更多的資源都會轉移至服務上
  • 在容器(Container)中執行的應用程式可以在不同作業系統與平台運作
  • 可以讓應用程式更快速地部署

底下為虛擬機器與容器化技術的架構 :