整理一下虛擬化與Linux的學習經歷

roc_guo發表於2023-02-23

由於工作的原因,需要開始接觸虛擬化。正好前幾天學了許岑的《如何成為有效學習的高手》,其中建議成年人需要以任務驅動的方式進行學習,並且需要刻意製造反饋,比如把學習內容整理成文章才能更有效的學習,所以嘗試寫下此文作為學習虛擬化歷程的記錄。

虛擬化我們都不陌生,平時我們網路工程師或者 運維工程師進行實驗的各個平臺都用了虛擬化的技術,比如 VMware 還有 EVE 模擬器等等。但其實我們使用的 Windows 其實也是一種最基礎的虛擬化,它是分時複用系統,會將所有硬體進行虛擬化,再硬體資源邏輯化的基礎之上,使用分時複用和共享記憶體功能,所以我們的電腦才能同時處理不同軟體的工作。程式設計領域的 Java 虛擬機器其實也是一種虛擬化技術,也是將作業系統資源進行虛擬化,然後 Java 程式就可以方便的移植到其他計算機上了。

廣義上來講,虛擬化就是在一套硬體上同時執行多個 OS 。虛擬化的實現就是開發出 VMM virtual machine monitor )虛擬機器監視程式。最早的發展其實就是 IBM 開發分時系統了, IBM 工程師們透過將 CPU 的佔用切分為無數個極短的時間片,然後讓每片去執行不同的任務,透過輪詢的方式使之偽裝成多個 CPU 處理不同的程式,把物理資源邏輯化,以提高利用效率。

不同廠家開發出了不通的虛擬化軟體和技術,他們的實現也有所不同。比如 VMware 針對個⼈⽤戶是 VMware Workstation ,針對蘋果系統是 VMware Fusion ,針對企業⽤戶是 VMware vSphere+VMware vCenter Linux 大廠 RedHat 使用的是( QEUM-KVM kernel-based virtual machine QEUM 。微軟開發的是 hyper-V 運用在自家的 windows 系統上,廠家 Citrix 開發的是 Xen ,這家和其他廠家不太相同,是一種半虛擬化技術。

因為工作的原因,我注重學習的是 Linux KVM Linux IT 領域應用的更為廣泛,學習 Linux 就不在此多敘,如果想系統的入門學習 Linux ,可以去看看 這本書。

在虛擬化中,物理機提供物理資源,再上一層是 Hypervior/VMM 也就是宿主機,由他分成不同的客戶機 OS1 OS2 OS3......

虛擬化模式下有兩種指令,特權指令和敏感指令。顧名思義,特權指令是操作和管理關鍵系統資源的指令,只有在最高特權級才能正確執行,如果在非最高特權級執行,特權指令會引發一個異常,處理器可能會陷入最高特權級,交由系統軟體進行處理。敏感指令,是操作特權資源的指令,其中包含修改虛擬機器的運⾏模式或者下⾯物理機的狀態;讀寫時鐘、地址重定位系統及所有的 I/O 指令、中斷等暫存器;訪問儲存保護系統等等。透過對比可以得出特權指令比敏感指令等級更高。當 guest OS 執⾏特權指令的時候, VMM 會捕捉到異常,對 guest OS 執⾏的特權指令進⾏特權降級,然後進行模擬,透過模擬的⽅式實現 guest OS 需要實現的操作。

需要注意的是由於 X86 架構的 CPU ,敏感指令並不完全是特權執⾏,有些敏感指令對於 VMM 來說是捕捉不到的,所以⽆法進⾏特權降級然後陷⼊模擬,所以由於 X86 架構的 CPU 的這種情況,⽆法實現虛擬化的全部功能。

但如何解決 X86 架構的虛擬化實現呢, VMware 給出了他們的技術方案,那就是透過二進位制翻譯( BinaryTranslation )。 X86 硬體虛擬化誕生也就十多年,但 VMware 已經成立了二十多年了, BT 技術的歷史也早已超過硬體虛擬化的歷史,所以這是一項成熟到有些過時的技術了。 BT 技術包含了二進位制程式碼翻譯技術還有優先順序壓縮技術,他們的共用實現了讓虛擬監視器和客戶機可以執行在不同的特權級,實現 Guest OS 的核心指令透過虛擬監視器的捕獲和模擬來執行,實現客戶作業系統需要做的操作。由於純軟體的實現⽅式導致效率極低,速度慢,所以又有了半虛擬化技術。半虛擬化採用了 Hypercall 技術, guest os 部分的程式碼被改變,使它會將特權指令的草案中都轉還給 VMM Hypercall ,由 VMM 繼續處理,使 guest os 知道自己執行在 1 環而不是 0 環,有效的避免了虛擬化的執行衝突問題。半虛擬化有一項優點,那就是效率高,但缺點是他無法虛擬化 Windows ,因為 Windows 不能修改程式碼。

本片介紹了虛擬化的概念還有各個廠家對虛擬化的不同技術實現,下一篇會持續介紹 Linux 虛擬化技術 KVM 的安裝和使用等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2936537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章