《现代操作系统》第7章读书笔记--虚拟化和云(未完成)
寫在前面:本文僅供個人學習使用,如有侵權,請聯系刪除。文章中所用圖片絕大多數來源于《現代操作系統(第4版)》,請讀者支持原版。
文章目錄
- 第7章 虛擬化和云
- 7.2 虛擬化的必要條件
第7章 虛擬化和云
有時,一家機構雖然擁有一個多計算機系統,但并不是真正想要它。一個很常見的例子是,一家公司擁有郵件服務器、Web服務器、FTP服務器、電子商務服務器及其他服務器。這些服務器都運行在同一機架的不同計算機上,通過高速網絡連接,組成多計算機系統。
這些服務器都運行在不同機器上的原因之一可能是[1]一臺計算機無法處理所有負載。另一個原因是[2]可靠性,管理層根本不相信一個操作系統能一年365天、一天24小時連續無故障運行。把各個服務放到獨立的計算機上之后,如果一個服務器崩潰了,至少其他的能不受影響。這樣做的另一個好處是[3]安全性。惡意入侵者即使攻陷了Web服務器,也不能立即看到敏感的電子郵件。這個性質有時候被稱作沙盒(sangboxing)。雖然多計算機系統實現了隔離和容錯,但是這種解決方案昂貴且難以管理,因為涉及的機器太多。
值得一提的是,除了可靠性和安全性之外,保留多臺獨立的機器還有很多其他原因。例如,[4]機構的日常運行通常依賴于多個操作系統:Web服務器運行在Linux上,郵件服務器運行在Windows上,電子商務服務器運行在OS X上,其他服務運行在不同種類的UNIX上。多計算機系統同樣是個有效的解決方案,但不夠廉價。
除了多計算機系統以外,還有什么辦法呢?一個可能(而且流行)的解決方案是使用虛擬化技術。 虛擬化聽起來時髦,但思想并不新穎,可以追溯到20世紀60年代。不過,現在使用的虛擬化技術的方式是嶄新的。虛擬化的主要思想是虛擬機監控程序(Virtual Machine Monitor,VMM) 在同一物理硬件上創建出有多臺虛擬機器的假象。 VMM\color{red}{VMM}VMM又稱作虛擬機管理程序(hypervisor) .我們區分第一類虛擬機管理程序和第二類虛擬機管理程序。前者運行在裸機上,而后者依賴于底層操作系統提供的服務和抽象。無論是哪一類,虛擬化技術都允許單一計算機上運行多個虛擬機,各虛擬機能運行不同的操作系統。
這種方法的好處是一臺虛擬機的故障不會影響到其他虛擬機(隔離性)。在一個虛擬化系統中,不同的服務器可以運行在不同的虛擬機上,從而以更低的開銷和更好的可維護性保留多計算機系統具有的局部故障模型。而且,可以在同一硬件上運行多個不同的操作系統,并享受虛擬機隔離帶來的安全性和其他好處。
當然,這樣整合不同服務器就相當于把雞蛋放到同一個籃子中。如果運行虛擬機的機器本身出現故障,后果將比單個專用服務器的崩潰更具災難性。不過,虛擬化技術有效的前提是絕大多數服務中斷不是硬件缺陷造成的,而是由于軟件設計不周、不可靠、有缺陷、配置不當造成的,特別是操作系統。 使用虛擬化技術時,只有虛擬機管理程序在最高特權級下運行,而虛擬機管理程序的代碼行數比一個完整的操作系統少兩個數量級,因而缺陷數量也少兩個數量級。虛擬機管理程序比操作系統簡單,因為它只做模擬裸機(通常是Intel X86體系結構)的多個拷貝這一件事兒。
除了強隔離性之外,在虛擬機上運行軟件還有其他好處。其中之一是物理機數量的減少節省了硬件和電力開銷以及機架空間的占用。
虛擬機的另一個優勢是設置檢查點和虛擬機遷移(例如跨多臺服務器進行負載均衡)比在普通操作系統上運行的遷移要容易得多。在后一種情況下,在操作系統表中保留有關于每個進程的大量關鍵狀態信息,包括打開的文件、計時器、信號處理程序等。而遷移虛擬機時,只需要遷移虛擬機的內存和磁盤鏡像,就能完成整個操作系統的遷移。
虛擬機的另一個用途是在已停止支持或無法工作于當前硬件的操作系統(或操作系統版本)上運行遺留應用程序。遺留應用程序可以與當前應用程序同時運行在相同硬件上。事實上,能同時運行不同操作系統中的應用程序是虛擬機受歡迎的重要理由。
虛擬機還有一個重要用途是協助軟件開發。程序員不需要在多臺機器上安裝不同操作系統來保證軟件能在各種操作系統上運行。相反,他只需要在一臺機器上創建一些虛擬機來安裝不同的操作系統。當然,他也可以對磁盤進行分區,在每個分區上安裝不同的操作系統,但這種方法更為困難。首先,普通PC不管磁盤空間有多大,都只支持4個主分區。其次,雖然可以在引導塊上安裝多引導程序,但是不同操作系統之間的切換需要重啟計算機。虛擬機使所有的操作系統都能同時運行,因為這些虛擬機實際上只是一些進程。
虛擬化技術目前最重要、最時髦的用途是云(cloud)。云的核心思想很直接:將你的計算或存儲需求外包給一個管理良好的數據中心\color{red}{云的核心思想很直接:將你的計算或存儲需求外包給一個管理良好的數據中心}云的核心思想很直接:將你的計算或存儲需求外包給一個管理良好的數據中心。領域專家組成的公司專門運營這個數據中心。由于數據中心通常是他人所有,因此你需要為使用的資源付費,但是你不用考慮機器、供電、冷卻和維護問題。由于虛擬化技術提供了隔離性,因此云提供商可以允許多個用戶甚至商業競爭對手共享單一物理機,每個客戶分享一部分資源。目前不計其數的機構在云上的虛擬機中運行著自己的應用程序。
7.2 虛擬化的必要條件
對于虛擬機而言,非常重要的一點是要像真實的機器那樣運轉。例如,虛擬機要能像真實的機器那樣啟動,支持安裝任意操作系統。虛擬機管理程序的任務就是提供這種幻象,并高效地實現。虛擬機管理程序需要在以下三個維度上有良好的表現
毫無疑問,在解釋器中逐條考慮指令并準確執行其行為是一種安全執行指令的方式。有些指令可以直接執行,例如解釋器可以按原樣執行INC(增量)指令。其他不能安全地直接執行的指令需要由解釋器進行模擬。例如,不能真正允許客戶操作系統禁用整臺機器的中斷,或者修改頁表映射。模擬的技巧是使虛擬機管理程序上運行的操作系統認為自己已經禁用了中斷或修改了頁表映射。 具體的實現方法稍后討論。目前,可以認為解釋器能夠保證安全性,如果精心實現甚至能做到高保真,但是解釋器的性能堪憂。為了滿足性能要求,我們將看到虛擬機管理程序試圖直接執行大多數代碼。
總結
以上是生活随笔為你收集整理的《现代操作系统》第7章读书笔记--虚拟化和云(未完成)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《现代操作系统》第1章读书笔记-- 引论
- 下一篇: 《现代操作系统》第4章读书笔记--文件系