雲最成熟的架構是IaaS(Infrastructure as a Service),其中用到的技術有xen,kvm,lxd等,VMware虛拟化技術也是其中的一種。
為什麼要虛拟化技術呢?目前在衆多大規模網際網路公司和遊戲公司大都采用xen,kvm等虛拟化技術,使用這些虛拟化技術的好處是當伺服器當機時,運維人員在做維護時隻需要将在虛拟機上運作的服務切換到另一台實體機上。而如果不使用虛拟化技術,運維人員就必須在服務離線前再找一台實體機配置服務,以實作切換。是以,虛拟化技術可以實作服務實時切換、遷移。另外,在運維上,特别是自動化運維以及實作彈性運算等進階功能隻能通過虛拟機的運作方式來實作,而實體機的運作方式是運作不了的。
IBM和Intel公司在硬體制造生産上也不斷地為提供更好地、更便捷地實作虛拟化技術開發出CPU的新特性。
那麼,建立虛拟機的工作原理又是怎樣的呢?建立虛拟機又是一個怎樣的過程?簡單地說,建立虛拟機就是在一台電腦上虛拟出多台電腦,并且虛拟機之間彼此獨立,看起來就像獨立的電腦一樣。我們知道,一台主機最核心的硬體部件是CPU(Central Processing Unit),Memory,I/O裝置,它們通過主機闆連接配接起來。是以嚴格來說,建立虛拟機是通過軟體方式虛拟出各個具有獨立的CPU、Memory、I/O裝置的平台。我們把主控端稱為Host,把各個虛拟機稱為Guest。
問題來了,假設我們的電腦CPU隻有一個,是以底層能實作運算的隻有一個CPU,那麼軟體如何保證各個虛拟機擁有獨立的CPU?對于Memory和I/O來說又是怎麼實作的?
對于CPU來說,因為CPU的工作方式是分時的(Time-sharing),它能把運作時間分為多個時間段,并将這些時間段配置設定給各個虛拟機,是這樣來實作的。
對于Memory來說,首先要明白讀取記憶體資料的方式。記憶體是編址的存儲單元,讀取方式是CPU通過尋址後定位到記憶體某一個cell存儲空間上擷取資料的。是以,虛拟記憶體是通過人為地在邏輯上把記憶體切成多段,分别配置設定給各個虛拟機,每個虛拟機隻能使用自己位址範圍内的記憶體,剩下的記憶體則配置設定給主控端。
I/O的虛拟化是比較難的。例如輸入裝置鍵盤是不可能同時為多個虛拟機以及主控端占用的,是以也隻能類似“分時”地使用,鍵盤或者滑鼠的控制權在各個虛拟機和主控端間的切換是通過“捕獲”來實作的。
此外,網卡的虛拟化是通過軟體的方式,為各個虛拟機虛拟出網卡,這些網卡最終都要對應到實體網卡上。
OK,建立虛拟機的原理大概講完了,那麼建立虛拟機的步驟究竟怎麼樣呢?主要有兩大步驟,一是虛拟出一個實體機,二是為這個實體機安裝OS。
虛拟出一個實體機是指虛拟出硬體部件的意思,根據上面提到的,主要是虛拟出CPU、Memory、I/O(Disk,Ethercard等)。例如指定有多少個CPU,CPU有幾個核,有多少記憶體,有多少個硬碟,這些硬碟是什麼格式的,有多少個網卡,這些網卡又是什麼格式的......做完這一步驟之後,實體機就虛拟出來了,但是我們知道,如果沒有軟體在這些硬體上面運作,那麼這些硬體就相當于一堆廢鐵,是以我們還要為這個實體機安裝上作業系統。
再拓展一點,上面建立虛拟機的過程中,硬碟的虛拟化或磁盤的虛拟化是通過磁盤映像檔案來實作的(disk p_w_picpath file),即将一個或多個檔案當做硬碟或磁盤來使用。那麼問題來了,怎麼把檔案當成磁盤來使用的?這就是這個用來做虛拟化的軟體(例如VMware Workstation)的意義了。這個軟體能夠通過某個接口虛拟出硬碟控制器,這個控制器就能把檔案當做磁盤來使用了,而且不僅能指定這個硬碟檔案的大小,還能支援稀疏格式(sparse)。什麼是稀疏格式呢?例如我們在建立虛拟機時,指定這個虛拟機的硬碟為20G,但實際上在我們的電腦上看到的這個硬碟檔案隻是顯示20k,由此導緻的虛拟機的硬碟大小與其在主控端上占用空間的大小不一緻,這就是稀疏格式(sparse)。并且,這個20k會随着我們的需求以及我們在虛拟機上的操作不斷增加,例如從20k增加到4G,再到10G等等。
以下以VMware Workstation為例建立虛拟機:
(1)首先打開軟體,點選建立虛拟機。

(2)為了盡可能滿足個人需求,建議選擇自定義(進階)。
(3)這裡的硬體相容性是向下相容的,可以選擇相容的版本,這裡預設選項即可。
(4)選擇稍後安裝OS。
(5)這裡選擇的作業系統的意義在于,因為不同的OS對于硬體的要求以及一些配置各不相同,是以在虛拟實體機時盡量選擇比對的客戶機作業系統,這樣才能夠對硬體做更具針對性的優化。
(6)如果主機支援硬體虛拟化則選擇64位。
(7)這裡虛拟機名稱是虛拟機的标簽,可随意設定,但一般設定為作業系統版本名以友善識别。
位置是建立的磁盤映像檔案的存放位置。
(8)指定多少個CPU,一個CPU多少核。注意兩者相乘不能超過實體機核心數。
(9)指定虛拟機記憶體(Memory),不管主機記憶體多少,建議指定為512MB或1024MB即可。
(10)指定網絡類型,這裡選擇NAT模式。
(11)預設。
(12)要注意FAT32分區無法存放大于4G的單個檔案。注意:不推薦選擇“立即配置設定所有磁盤空間”,否則不支援稀疏格式。
(13)指定磁盤映像檔案名。
(14)建立實體機後可重新調整硬體設定。
(15)對于不需要的硬體可以删除,需要的硬體可以添加,或者編輯硬體的設定。
(16)如果CPU支援硬體虛拟化,則可以選擇此選項。
(17)點選開啟,按組合鍵“Ctrl+Alt+Insert”建可重新開機,開機按F2鍵可進入BIOS界面。
最後就隻剩下安裝系統這一步驟啦!