x86虛擬化
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
虛擬化技術是指在x86的系統中,一個或以上的客操作系統(Guest Operating System,簡稱:Guest OS)在一個主操作系統(Host Operating System,簡稱:Host OS)下運行的一種技術。這種技術只要求對客操作系統有很少的修改或甚至根本沒有修改。x86處理器架構起先並不滿足波佩克與戈德堡虛擬化需求(Popek and Goldberg virtualization requirements),這使得在x86處理器下對普通虛擬機的操作變得十分複雜。在2005年,英特爾與AMD分別在它們的x86架構上解決了這個問題。
軟件技術
1999年2月8日,VMware展示了它的第一個x86虛擬化產品「VMware虛擬平台」(VMware Virtual Platform),此產品建立在創建者早期在斯坦福大學的研究基礎之上。VMware在1998年10月提交了對這一技術的專利申請,並於2002年5月28日被授予美國專利第6,397,242號。VMware與類似的x86虛擬化軟件必須使用十分複雜的技術來獲得並虛擬運行一些指令,這些技術被IBM的IBM_System/370 (頁面存檔備份,存於網際網路檔案館)以及摩托羅拉的MC68020等原生可虛擬化的架構遠遠超出。
Kevin Lawton啟動了Plex86項目(原來叫作「freemware」)來創建應用於x86虛擬化的自由軟件。此項目已經改變了原有的目的,現在只支持Linux作為客操作系統;然而在這之前,Lawton發表了一篇論文《使用虛擬化技術在一台IA-32 PC上同時運行多個操作系統》,作出了對x86架構虛擬化困難的分析以及提出了一些解決這些困難的技術。
2003年,應用於Linux平台的x86虛擬化方案Xen誕生。2005年,隨着Intel推出支持x86虛擬化技術的CPU,Xen亦加入全虛擬化模式。Xen的全虛擬化模式允許在虛擬機中運行Windows等非Linux系統。
微軟也提供了基於Windows的x86虛擬化產品:Microsoft Virtual PC與Microsoft Virtual Server,這兩個產品都基於微軟收購Connectix後獲得的技術。後來,微軟的Microsoft Virtual PC更名為Hyper-V並成為Windows的一個組件,亦曾推出Windows XP Mode以儘可能的解決Windows 7操作系統不支持某些老應用程序的問題。
開源的替代品也包括KVM、QEMU與VirtualBox。
硬件支持
英特爾與AMD獨立地開發出了x86架構的虛擬化擴展。它們並不直接兼容,但是能夠做到大部分的功能都相同。這兩個擴展都允許在虛擬的性能不出現明顯下降時運行一個虛擬機查看器,以運行未經過修改的客操作系統。
英特爾虛擬化技術
英特爾虛擬化技術(Intel Virtualization Technology)是由英特爾開發的一種虛擬化技術,利用IVT可以對在系統上的操作系統,通過虛擬機查看器(VMM,Virtual Machine Monitor)來虛擬一套硬件設備,以供虛擬機操作系統使用。
這些技術以往在VMware與Virtual PC上都通過軟件實現,而通過IVT的硬件支持可以加速此類軟件的進行。
英特爾在32位與64位x86架構下的虛擬化擴展被命名為「IVT」,有時候也用它的開發代號「Vanderpool」來稱呼它。32位/64位元的IVT擴展叫作「VT-x」。[1]英特爾同時為用於IA-64(安騰2)處理器的IVT發布了規格說明,此項IVT被稱為「VT-i」;[1]在這之前,IA-64的虛擬化技術的開發代號是「Silverdale」。
英特爾虛擬化技術是在2005年春季英特爾信息技術峰會時由官方發布的。部分型號的Pentium 4/Pentium D/Core 2/Pentium Dual-Core/Celeron/Xeon可用VT-x。Intel Core i3/i5/i7/i9可用SLAT。
VT-x不僅需要處理器的支持,也需要芯片組、BIOS的支持[2][3]。
在Linux中,支持虛擬化的英特爾處理器會在一個特別文件/proc/cpuinfo中有一個名為「vmx」的標誌。
Intel還推出了「直接輸入/輸出虛擬化」(Virtualization for Directed I/O,VT-d)技術。這項技術提供了一種配置傳送給獨立虛擬機的中斷與配置I/O內存單元的方式,以防止虛擬機使用DMA來終止與真實硬件的隔離。 不過值得注意的是,該功能在Core系列以及Xeon E3、Xeon D系列中並不完整。 [4]
AMD虛擬化
AMD虛擬化(AMD Virtualization),縮寫為「AMD-V」,是AMD為64位的x86架構提供的虛擬化擴展的名稱,但有時仍然會用「Pacifica」(AMD開發這項擴展時的內部項目代碼)來指代它。
AMD-V在AMD的步進為「F」與「G」的速龍64以及速龍64 X2處理器,使用Socket S1的炫龍64處理器、炫龍64 X2處理器、弈龍處理器,以及全部更新的處理器上可用。現在的AMD APU、AMD FX、AMD Athlon、AMD Ryzen、AMD Epyc等AMD處理器絕大多數都支援AMD SVM技術。
在Linux中,支持虛擬化的AMD處理器會在一個特別文件/proc/cpuinfo中有一個名為「svm」的標誌。
AMD為一項名為AMD-V的IO內存管理單元(IOMMU)發布過一份技術規範。這份技術規範提供了一種配置傳送給獨立虛擬機的中斷與配置I/O內存單元的方式,以防止虛擬機使用DMA來終止與真實硬件的隔離。IOMMU在高級的操作系統(如缺席虛擬化,absent virtualization)與AMD的Torrenza架構中起到了重要的作用。
AMD亦有I/O虛擬化的IOMMU技術。
Windows Vista
起初Windows Vista的家用入門版與家庭高級版在最終用戶許可協議中聲明,該系統不能夠在一台虛擬機中安裝或運行,儘管在技術上並沒有障礙使得用戶無法這樣做。這一條款在2008年1月時被修改了。[6]
參考文獻
- ^ 1.0 1.1 Intel Virtualization Technology. Intel. [2008-01-23]. (原始內容存檔於2012-10-25).
- ^ Intel Processors Supporting VT. Xen Source. [2008-01-23]. (原始內容存檔於2013-04-28).
- ^ Intel Pentium 4 Processor 6xx Sequence and Intel Pentium 4 Processor Extreme Edition Datasheet. Intel. [2008-01-23]. (原始內容存檔於2008-12-22).
- ^ Re: [vfio-users] IOMMU group question - different pcie slots gives different configuration. Red Hat. [2019-12-06]. (原始內容存檔於2019-07-25).
- ^ https://medium.com/@9to5tech/laptops-under-40000-843e6d0b2aa6
- ^ Microsoft relents: Vista consumer virtualization ban lifted. [2008-01-23]. (原始內容存檔於2008-09-17).