自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux上的虛擬化技術(shù)

系統(tǒng) Linux
虛擬化技術(shù)的應(yīng)用十分廣泛. 當(dāng)前虛擬化技術(shù)主要關(guān)注于服務(wù)器的虛擬化, 或在單個主機(jī)上寄存多個獨(dú)立的操作系統(tǒng). 本文首先介紹虛擬化技術(shù)的原理, 然后討論多個虛擬化技術(shù)的實(shí)現(xiàn)方法. 另外介紹了一些其它的虛擬化技術(shù), 比如Linux上操作系統(tǒng)級的虛擬化技術(shù)。

虛擬化技術(shù)的應(yīng)用十分廣泛. 當(dāng)前虛擬化技術(shù)主要關(guān)注于服務(wù)器的虛擬化, 或在單個主機(jī)上寄存多個獨(dú)立的操作系統(tǒng). 本文首先介紹虛擬化技術(shù)的原理, 然后討論多個虛擬化技術(shù)的實(shí)現(xiàn)方法. 另外介紹了一些其它的虛擬化技術(shù), 比如Linux上操作系統(tǒng)級的虛擬化技術(shù).

虛擬化把事物從一種形式改變?yōu)榱硪环N形式. 計算機(jī)的虛擬化使單個計算機(jī)看起來像多個計算機(jī)或完全不同的計算機(jī).

虛擬化技術(shù)也可以使多臺計算機(jī)看起來像一臺計算機(jī). 這叫做服務(wù)器聚合(server aggregation)或網(wǎng)格計算(grid computing).

首先我們回顧一下虛擬化技術(shù)的歷史.

虛擬化技術(shù)的歷史

虛擬化技術(shù)不是一個新的主題; 實(shí)際上, 它已有40年的歷史. 最早使用虛擬化技術(shù)的是IBM 7044計算機(jī), 它是基于MIT(麻省理工學(xué)院)為IBM704計算機(jī)開發(fā)的分時系統(tǒng)CTSS(Compatible Time Sharing System), 和曼徹斯特大學(xué)的Atlas項(xiàng)目(世界最早的超級計算機(jī)之一), ***使用了請求調(diào)頁和系統(tǒng)管理程序調(diào)用.

硬件虛擬化

IBM早在1960年就認(rèn)識到虛擬化技術(shù)的重要性, 于是開發(fā)了型號為Model 67的System/360主機(jī). Model 67主機(jī)通過虛擬機(jī)監(jiān)視器(VMM, Virtual Machine Monitor)虛擬所有的硬件接口. 在早期的計算中, 操作系統(tǒng)被稱做Supervisor. 能夠運(yùn)行在其它操作系統(tǒng)之上的操作系統(tǒng)被稱做hypervisor(名稱***出現(xiàn)在1970年).

VMM直接運(yùn)行在底層硬件上, 允許執(zhí)行多個虛擬機(jī)(VMs). 每一個VM(虛擬機(jī))運(yùn)行自己的操作系統(tǒng)實(shí)例 -- 早期時候稱為CMS, 或會話監(jiān)視系統(tǒng)(CMS, Conversational Monitor System). 然后VM繼續(xù)發(fā)展. 今天你能夠在System z9主機(jī)上發(fā)現(xiàn)VM, 它能夠向后兼容, 甚至是System/360.

處理器虛擬化

另外一個早期使 用的虛擬化技術(shù), 仿真處理器, 也叫做P-code(or pseudo-code)機(jī). P-code是一種機(jī)器語言, 運(yùn)行在虛擬機(jī)上而不是實(shí)際的硬件. 知名的P-code語言在1970年由加州大學(xué)圣地亞哥分校的Pascal系統(tǒng)項(xiàng)目組開發(fā). 它可以把Pascal程序編譯成P-code代碼, 然后在具有P-code功能的虛擬機(jī)上運(yùn)行. P-code程序具有高度可移植性, 能夠運(yùn)行在任何具有P-code功能的虛擬機(jī)上.

1960年的BCPL語言(基本組合程序設(shè)計語言, Basic Combined Programming Language)也使用了同樣的概念, 它是C語言的前身. 編譯器首先把BCPL代碼編譯成一個中間機(jī)器代碼: O-code. 然后, O-code被編譯成目標(biāo)機(jī)器代碼. P-code模型已被廣泛使用到各種編譯器當(dāng)中, 從而為編譯器移植到新的主機(jī)架構(gòu)提供了復(fù)雜性.(通過一個中間語言分成前端和后端).

Java虛擬機(jī)(JVM)

Java虛擬機(jī)也采用了P-code模型. 從而我們可以簡單通過移植JVM程序到新架構(gòu)的機(jī)器上來廣泛發(fā)布Java程序.

指令虛擬化

近來頻繁出現(xiàn)的虛擬化概念: 指令虛擬化, 也叫做二進(jìn)制翻譯. 在這個模型中, 虛擬指令被動態(tài)翻譯成底層硬件的物理指令. 程序執(zhí)行后, 代碼一段一段地被翻譯. 如果出現(xiàn)分支, 一套新的代碼指令將被引入和翻譯. 這十分類似于緩存操作, 指令塊從內(nèi)存移動到本地的快速緩存內(nèi)存中執(zhí)行.

近來Transmeta公司設(shè)計的Crusoe中央處理器使用了該模型. 二進(jìn)制翻譯由Code Morphing專利技術(shù)實(shí)現(xiàn). 類似的一個實(shí)例, 全虛擬技術(shù)通過使用動態(tài)生成代碼掃描來發(fā)現(xiàn)和重定向特權(quán)指令(解決特殊處理指令集中的問題).

 虛擬化技術(shù)的類型

現(xiàn)在不只存在一種虛擬化技術(shù). 事實(shí)上有多種方法可以使用不同層次的抽象來實(shí)現(xiàn)同樣的結(jié)果. 本章介紹Linux上三種最常用虛擬化技術(shù)的優(yōu)點(diǎn)和弱點(diǎn). 業(yè)屆有時使用不同的術(shù)語來描述同一個虛擬化技術(shù). 為了保持連續(xù)性, 下面使用的術(shù)語參考了其它的術(shù)語.

虛擬化技術(shù)和游戲

一篇虛擬化技術(shù)的文章如果沒有提到復(fù)合式大型電玩模擬器(MAME)就不是一篇完整的文章. MAME, 就如名字一樣, 是一個能夠模擬以往arcade游戲的機(jī)器模擬器(全部). 做一個補(bǔ)充, 整個機(jī)器是被虛擬的, 包括聲音和圖形還有控制硬件. MAME是一個非常棒的應(yīng)用程序, 你也可以通過仔細(xì)閱讀源碼來了解它是如何實(shí)現(xiàn)的.

硬件模擬器

無可否認(rèn), 最復(fù)雜的虛擬化技術(shù)是硬件模擬器. 在這個方法中, 首先在主機(jī)系統(tǒng)上創(chuàng)建硬件VM, 然后模擬硬件的功能, 如圖1顯示:

Linux上的虛擬化技術(shù)
 

  圖1. 硬件模擬器: 使用VM模擬需要的硬件

正如你可能猜到, 硬件模擬器的主要問題是速度極慢. 因?yàn)槊恳粋€指令在底層硬件都需模擬, 所以速度慢了100倍. 高保真模擬還包含了循環(huán)校驗(yàn), 用于模擬CPU的管道和緩存行為, 實(shí)際速度會慢了1000倍.

硬件模擬有自己的優(yōu)點(diǎn). 比如, 使用硬件模擬, 你能夠在基于ARM處理器的主機(jī)上模擬運(yùn)行基于PowerPC未經(jīng)任何修改的操作系統(tǒng). 你甚至能在每個不同模擬處理器上運(yùn)行多個虛擬機(jī).

模擬器和開發(fā)

硬件模擬器最有意思的一個應(yīng)用是firmware(固件)和硬件協(xié)作開發(fā). firmware開發(fā)人員無需等待***硬件的推出, 他們可以使用目標(biāo)硬件的虛擬機(jī)來驗(yàn)證實(shí)際代碼中的許多概念.

 全虛擬化

全虛擬化(Full virtualization), 也稱為原始虛擬化技術(shù), 是另一種虛擬化方法. 該模型使用虛擬機(jī)協(xié)調(diào)客戶操作系統(tǒng)和原始硬件(見圖2). 這里"協(xié)調(diào)"是一個關(guān)鍵詞, 因?yàn)閂MM在客戶操作系統(tǒng)和裸硬件之間用于工作協(xié)調(diào). 一些受保護(hù)的指令必須由Hypervisor(虛擬機(jī)管理程序)來捕獲和處理. 因?yàn)椴僮飨到y(tǒng)是通過Hypervisor來分享底層硬件.

Linux上的虛擬化技術(shù)
 

  圖2. 全虛擬化: 使用Hypervisor分享底層硬件

全虛擬化的運(yùn)行速度要快于硬件模擬, 但是性能方面不如裸機(jī), 因?yàn)镠ypervisor需要占用一些資源. 全虛擬化***的優(yōu)點(diǎn)是操作系統(tǒng)沒有經(jīng)過任何修改. 它的唯一限制是操作系統(tǒng)必須能夠支持底層硬件(比如, PowerPC).

老機(jī)器上的Hypervisors

一些老的硬件如x86, 全虛擬化遇到了問題. 比如, 一些敏感的指令需要由VMM來處理(VMM不能設(shè)置陷阱). 因此, Hypervisors必須動態(tài)掃描和捕獲特權(quán)代碼來處理問題.

半虛擬化

半虛擬化(Paravirtualization)是另一種類似于全虛擬化的熱門技術(shù). 它使用Hypervisor(虛擬機(jī)管理程序)分享存取底層的硬件, 但是它的客戶操作系統(tǒng)集成了虛擬化方面的代碼. 該方法無需重新編譯或引起陷阱, 因?yàn)椴僮飨到y(tǒng)自身能夠與虛擬進(jìn)程進(jìn)行很好的協(xié)作.

Linux上的虛擬化技術(shù)
 

  圖3. 半虛擬化: 通過客戶操作系統(tǒng)分享進(jìn)程

上面提到過, 半虛擬化需要客戶操作系統(tǒng)做一些修改(配合Hypervisor), 這是一個不足之處. 但是半虛擬化提供了與原始系統(tǒng)相近的性能. 與全虛擬化一樣, 半虛擬化可以同時能支持多個不同的操作系統(tǒng).

 操作系統(tǒng)級的虛擬化

***一個我們需要了解的虛擬化技術(shù)是操作系統(tǒng)級的虛擬化(Operating system-level virtualization), 它使用不同于上面的虛擬化方法. 該技術(shù)在操作系統(tǒng)之上虛擬多個服務(wù)器, 支持在單個操作系統(tǒng)上簡單隔離每一個虛擬服務(wù)器(見圖4).

Linux上的虛擬化技術(shù)
 

  圖4. 操作系統(tǒng)級的虛擬化: 隔離單個服務(wù)器

操作系統(tǒng)級的虛擬化需要修改操作系統(tǒng)內(nèi)核, 它的優(yōu)點(diǎn)是具有原始主機(jī)的性能.

為什么虛擬技術(shù)如此重要?

在了解當(dāng)今主流的linux虛擬化技術(shù)之前, 我們先來看虛擬化技術(shù)的優(yōu)點(diǎn).

從商業(yè)角度來看, 使用虛擬化技術(shù)有非常多的原因. 不過大多是用于服務(wù)器加固. 簡單來說, 如果你能夠在單個服務(wù)上虛擬多個系統(tǒng), 這樣少數(shù)的幾臺計算機(jī)顯然能夠節(jié)省耗電, 空間, 冷卻和管理開支. 考慮到確定服務(wù)器利用狀況的困難, 虛擬化技術(shù)支持動態(tài)遷移(Live Migration). 動態(tài)遷移允許操作系統(tǒng)能夠遷移到另一臺全新的服務(wù)器上, 從而減少當(dāng)前主機(jī)的負(fù)載.

虛擬化技術(shù)對開發(fā)人員來說 也非常重要. Linux內(nèi)核占用了一個單一的地址空間, 這意味內(nèi)核或任何驅(qū)動程序錯誤都能導(dǎo)致整個操作系統(tǒng)停止工作. 而通過虛擬化你可以運(yùn)行多個操作系統(tǒng), 如果其中一個系統(tǒng)由于錯誤而宕機(jī), Hypervisor和其它的操作系統(tǒng)不會受到任何影響. 這對調(diào)試內(nèi)核來說就如同調(diào)試用戶空間程序一樣.

責(zé)任編輯:龐桂玉 來源: it168.com
相關(guān)推薦

2009-12-25 10:05:00

Linux虛擬化Xen虛擬化

2009-06-13 09:22:41

Linux虛擬化Xen

2017-11-29 14:42:28

虛擬化深度解密

2019-11-12 14:48:00

Linux桌面虛擬化KVM

2011-03-28 18:25:03

ibmdwLinux

2019-05-13 16:37:35

Linux網(wǎng)絡(luò)虛擬化

2019-07-24 10:06:15

Linux網(wǎng)絡(luò)虛擬化

2021-09-16 16:15:14

Linux設(shè)備虛擬化機(jī)器模擬器

2011-01-14 14:00:19

GanetiLinux集群虛擬化

2013-03-18 10:12:25

存儲虛擬化虛擬化技術(shù)

2009-09-03 15:39:15

紅帽集成虛擬化RHEL Linux

2009-11-23 19:47:57

ibmdwLinux

2013-08-23 10:32:41

Linux服務(wù)器虛擬化

2013-04-18 11:48:59

2012-05-31 13:22:00

虛擬化

2018-01-31 11:17:59

虛擬化技術(shù)硬件

2013-06-19 09:56:39

2010-05-06 09:45:18

Linux虛擬化

2018-08-15 10:48:45

云計算存儲虛擬化

2012-12-28 10:18:03

LinuxXenKVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號