虛拟機技術
虛拟機技術是虛拟化技術的一種,所謂虛拟化技術就是将事物從一種形式轉變成另一種形式,最常用的虛拟化技術有操作系統中内存的虛拟化,實際運行時用戶需要的内存空間可能遠遠大于物理機器的内存大小,利用内存的虛拟化技術,用戶可以将一部分硬盤虛拟化為内存,而這對用戶是透明的。又如,可以利用虛拟專用網技術(VPN)在公共網絡中虛拟化一條安全,穩定的“隧道”,用戶感覺像是使用私有網絡一樣。
虛拟系統
虛拟系統通過生成現有操作系統的全新虛拟鏡像,它具有真實windows系統完全一樣的功能,進入虛拟系統後,所有操作都是在這個全新的獨立的虛拟系統裡面進行,可以獨立安裝運行軟件,保存數據,擁有自己的獨立桌面,不會對真正的系統産生任何影響 ,而且具有能夠在現有系統與虛拟鏡像之間靈活切換的一類操作系統。
流行的虛拟機軟件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它們都能在Windows系統上虛拟出多個計算機。
虛拟系統和傳統的虛拟機(Parallels Desktop,Vmware,VirtualBox,Virtual pc)不同在于:虛拟系統不會降低電腦的性能,啟動虛拟系統不需要像啟動windows系統那樣耗費時間,運行程序更加方便快捷;虛拟系統隻能模拟和現有操作系統相同的環境,而虛拟機則可以模拟出其他種類的操作系統;而且虛拟機需要模拟底層的硬件指令,所以在應用程序運行速度上比虛拟系統慢得多。
虛拟機分類
linux虛拟機
一種安裝在Windows上的虛拟linux操作環境,就被稱為linux虛拟機。它實際上隻是個文件而已,是虛拟的linux環境,而非真正意義上的操作系統。但是它們的實際效果是一樣的。所以安裝在虛拟機上使用好。
windowsXP虛拟機vmware下安裝Linux 我們在實際的Windows XP中(宿主計算機)再虛拟出一台電腦(虛拟機),并在上面安裝Linux系統,這樣,你就可以放心大膽地進行各種Linux練習而無須擔心操作不當導緻宿主機系統崩潰了。并且你可以舉一反三,将一台電腦變成三台、四台,再分别安裝上其他的系統。(運行虛拟機軟件的操作系統叫Host OS,在虛拟機裡運行的操作系統叫Guest OS)。
windowsXP虛拟機vmware下安裝Linux過程
第一步:
啟動VMware,在其主界面“主頁”标簽頁中點擊“新建虛拟機”按鈕打開新建向導。
第二步:
單擊“下一步”按鈕,進入虛拟機配置界面,這裡有兩個選擇:一是“典型”方式,它根據虛拟機的用途自動調整配置;二是“自定義”方式,它允許用戶自行設置虛拟機的主要參數。典型方式要比自定義方式簡單,但缺少一定的靈活性。方便起見,這裡我們選擇典型方式。
第三步:
單擊“下一步”按鈕進入虛拟機操作系統選擇界面,可以看到Windows、Linux、Novell等多種不同的系統,這裡我們點選“Linux”。
Java虛拟機
Java虛拟機(JVM)是Java Virtual Machine的縮寫,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模拟各種計算機功能模拟來實現的。Java虛拟機有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。
※優點
Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛拟機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目标代碼。而引入Java語言虛拟機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用模式Java虛拟機屏蔽了與具體平台相關的信息,使得Java語言編譯程序隻需生成在Java虛拟機上運行的目标代碼(字節碼),就可以在多種平台上不加修改地運行。Java虛拟機在執行字節碼時,把字節碼解釋成具體平台上的機器指令執行。
Java虛拟機是Java語言底層實現的基礎,對Java語言感興趣的人都應對Java虛拟機有個大概的了解。這有助于理解Java語言的一些性質,也有助于使用Java語言。對于要在特定平台上實現Java虛拟機的軟件人員,Java語言的編譯器作者以及要用硬件芯片實現Java虛拟機的人來說,則必須深刻理解Java虛拟機的規範。另外,如果想擴展Java語言,或是把其它語言編譯成Java語言的字節碼,也需要深入地了解Java虛拟機。
※支持的數據類型
Java虛拟機支持Java語言的基本數據類型如下:
•byte://1字節有符号整數的補碼
•short://2字節有符号整數的補碼
•int://4字節有符号整數的補碼
•long://8字節有符号整數的補碼
•float://4字節IEEE754單精度浮點數
•double://8字節IEEE754雙精度浮點數
•char://2字節無符号Unicode字符
幾乎所有的Java類型檢查都是在編譯時完成的。上面列出的原始數據類型的數據在Java執行時不需要用硬件标記。操作這些原始數據類型數據的字節碼(指令)本身就已經指出了操作數的數據類型,例如iadd、ladd、fadd和dadd指令都是把兩個數相加,其操作數類型别是int、long、float和double。虛拟機沒有給boolean(布爾)類型設置單獨的指令。boolean型的數據是由integer指令,包括integer返回來處理的。boolean型的數組則是用byte數組來處理的。虛拟機使用IEEE754格式的浮點數。不支持IEEE格式的較舊的計算機,在運行Java數值計算程序時,可能會非常慢。
虛拟機支持的其它數據類型包括:
•object//對一個Javaobject(對象)的4字節引用
•returnAddress//4字節,用于jsr/ret/jsr-w/ret-w指令
注:Java數組被當做object處理。
虛拟機的規範對于object内部的結構沒有任何特殊的要求。在Sun公司的實現中,對object的引用是一個句柄,其中包含一對指針:一個指針指向該object的方法表,另一個指向該object的數據。用Java虛拟機的字節碼表示的程序應該遵守類型規定。Java虛拟機的實現應拒絕執行違反了類型規定的字節碼程序。Java虛拟機由于字節碼定義的限制似乎隻能運行于32位地址空間的機器上。但是可以創建一個Java虛拟機,它自動地把字節碼轉換成64位的形式。從Java虛拟機支持的數據類型可以看出,Java對數據類型的内部格式進行了嚴格規定,這樣使得各種Java虛拟機的實現對數據的解釋是相同的,從而保證了Java的與平台無關性和可移植性。
※體系結構
Java虛拟機由五個部分組成:一組指令集、一組寄存器、一個棧、一個無用單元收集堆(Garbage-collected-heap)、一個方法區域。這五部分是Java虛拟機的邏輯成份,不依賴任何實現技術或組織方式,但它們的功能必須在真實機器上以某種方式實現。
Java指令集
Java虛拟機支持大約248個字節碼。每個字節碼執行一種基本的CPU運算,例如,把一個整數加到寄存器,子程序轉移等。Java指令集相當于Java程序的彙編語言。
Java指令集中的指令包含一個單字節的操作符,用于指定要執行的操作,還有0個或多個操作數,提供操作所需的參數或數據。許多指令沒有操作數,僅由一個單字節的操作符構成。
虛拟機的内層循環的執行過程如下:
do{
取一個操作符字節;
根據操作符的值執行一個動作;
}while(程序未結束)
由于指令系統的簡單性,使得虛拟機執行的過程十分簡單,從而有利于提高執行的效率。指令中操作數的數量和大小是由操作符決定的。如果操作數比一個字節大,那麼它存儲的順序是高位字節優先。例如,一個16位的參數存放時占用兩個字節,其值為:
第一個字節*256+第二個字節字節碼指令流一般隻是字節對齊的。指令tabltch和lookup是例外,在這兩條指令内部要求強制的4字節邊界對齊。
寄存器
Java虛拟機的寄存器用于保存機器的運行狀态,與微處理器中的某些專用寄存器類似。
Java虛拟機的寄存器有四種:
•pc:Java程序計數器。
•optop:指向操作數棧頂端的指針。
•frame:指向當前執行方法的執行環境的指針。
•vars:指向當前執行方法的局部變量區第一個變量的指針。
Java虛拟機是棧式的,它不定義或使用寄存器來傳遞或接受參數,其目的是為了保證指令集的簡潔性和實現時的高效性(特别是對于寄存器數目不多的處理器)。
所有寄存器都是32位的。
棧
Java虛拟機的棧有三個區域:局部變量區、運行環境區、操作數區。
(1)局部變量區
每個Java方法使用一個固定大小的局部變量集。它們按照與vars寄存器的字偏移量來尋址。局部變量都是32位的。長整數和雙精度浮點數占據了兩個局部變量的空間,卻按照第一個局部變量的索引來尋址。(例如,一個具有索引n的局部變量,如果是一個雙精度浮點數,那麼它實際占據了索引n和n+1所代表的存儲空間。)虛拟機規範并不要求在局部變量中的64位的值是64位對齊的。虛拟機提供了把局部變量中的值裝載到操作數棧的指令,也提供了把操作數棧中的值寫入局部變量的指令。
(2)運行環境區
在運行環境中包含的信息用于動态鍊接,正常的方法返回以及異常傳播。
•動态鍊接
運行環境包括對指向當前類和當前方法的解釋器符号表的指針,用于支持方法代碼的動态鍊接。方法的class文件代碼在引用要調用的方法和要訪問的變量時使用符号。動态鍊接把符号形式的方法調用翻譯成實際方法調用,裝載必要的類以解釋還沒有定義的符号,并把變量訪問翻譯成與這些變量運行時的存儲結構相應的偏移地址。動态鍊接方法和變量使得方法中使用的其它類的變化不會影響到本程序的代碼。
•正常的方法返回
如果當前方法正常地結束了,在執行了一條具有正确類型的返回指令時,調用的方法會得到一個返回值。執行環境在正常返回的情況下用于恢複調用者的寄存器,并把調用者的程序計數器增加一個恰當的數值,以跳過已執行過的方法調用指令,然後在調用者的執行環境中繼續執行下去。
•異常和錯誤傳播
異常情況在Java中被稱作Error(錯誤)或Exception(異常),是Throwable類的子類,在程序中的原因是:①動态鍊接錯,如無法找到所需的class文件。②運行時錯,如對一個空指針的引用。
(3)操作數棧區機器指令隻從操作數棧中取操作數,對它們進行操作,并把結果返回到棧中。選擇棧結構的原因是:在隻有少量寄存器或非通用寄存器的機器(如Intel486)上,也能夠高效地模拟虛拟機的行為。操作數棧是32位的。它用于給方法傳遞參數,并從方法接收結果,也用于支持操作的參數,并保存操作的結果。例如,iadd指令将兩個整數相加。相加的兩個整數應該是操作數棧頂的兩個字。這兩個字是由先前的指令壓進堆棧的。這兩個整數将從堆棧彈出、相加,并把結果壓回到操作數棧中。
每個原始數據類型都有專門的指令對它們進行必須的操作。每個操作數在棧中需要一個存儲位置,除了long和double型,它們需要兩個位置。操作數隻能被适用于其類型的操作符所操作。例如,壓入兩個int類型的數,如果把它們當作是一個long類型的數則是非法的。在Sun的虛拟機實現中,這個限制由字節碼驗證器強制實行。但是,有少數操作(操作符dupe和swap),用于對運行時數據區進行操作時是不考慮類型的。
※無用單元收集堆
Java的堆是一個運行時數據區,類的實例(對象)從中分配空間。Java語言具有無用單元收集能力:它不給程序員顯式釋放對象的能力。Java不規定具體使用的無用單元收集算法,可以根據系統的需求使用各種各樣的算法。
※方法區
方法區與傳統語言中的編譯後代碼或是Unix進程中的正文段類似。它保存方法代碼(編譯後的java代碼)和符号表。在當前的Java實現中,方法代碼不包括在無用單元收集堆中,但計劃在将來的版本中實現。每個類文件包含了一個Java類或一個Java界面的編譯後的代碼。可以說類文件是Java語言的執行代碼文件。為了保證類文件的平台無關性,Java虛拟機規範中對類文件的格式也作了詳細的說明。其具體細節請參考Sun公司的Java虛拟機規範。
安裝
安裝過程
下面通過例子,介紹使用VMware Workstation創建虛拟機的方法與步驟。
1.運行VMware Workstation 6,單擊“File→New→Virtual Machine”命令,進入創建虛拟機向導,或者直接按“Crtl+N”快捷鍵同樣進入創建虛拟機向導。
2.在彈出的歡迎頁中單擊“下一步”按鈕。
3.在“Virtual machine configuration”選項區域内選擇“Custom”單選按鈕。
4.在Choose the Virtual Machine Hardware Compatibility頁中,選擇虛拟機的硬件格式,可以在Hardware compatibility下拉列表框中,在VMware Workstation 6、VMware Workstation 5或VMware Workstation 4三者之間進行選擇。通常情況下選擇Workstation 6的格式,因為新的虛拟機硬件格式支持更多的功能,選擇好後單擊“下一步”按鈕。
5.在Select a Guest Operating System對話框中,選擇要創建虛拟機類型及要運行的操作系統,這裡選擇Windows 2000 Professional操作系統,單擊“下一步”按鈕。
6.在Name the Virtual Machine對話框中,為新建的虛拟機命名并且選擇它的保存路徑。
7.在Processors選項區域中選擇虛拟機中CPU的數量,如果選擇Two,主機需要有兩個CPU或者是超線程的CPU。
8.在Memory for the Virtual Machine頁中,設置虛拟機使用的内存,通常情況下,對于Windows 98及其以下的系統,可以設置64MB;對于Windows 2000/XP,最少可以設置96MB;對于Windows 2003,最低為128MB;對于Windows Vista虛拟機,最低512MB。
9.在Network Type頁中選擇虛拟機網卡的“聯網類型”
選擇第一項,使用橋接網卡(VMnet0虛拟網卡),表示當前虛拟機與主機(指運行VMware Workstation軟件的計算機)在同一個網絡中。
選擇第二項,使用NAT網卡(VMnet8虛拟網卡),表示虛拟機通過主機單向訪問主機及主機之外的網絡,主機之外的網絡中的計算機,不能訪問該虛拟機。
選擇第三項,隻使用本地網絡(VMnet1虛拟網卡),表示虛拟機隻能訪問主機及所有使用VMnet1虛拟網卡的虛拟機。主機之外的網絡中的計算機不能訪問該虛拟機,也不能被該虛拟機所訪問。
選擇第四項,沒有網絡連接,表明該虛拟機與主機沒有網絡連接。
10.在Select I/O Adapter Type頁中,選擇虛拟機的SCSI卡的型号,通常選擇默認值即可。
11.在Select a Disk頁中,選擇Create a new virtual disk(創建一個新的虛拟硬盤)。
12.在Select a Disk Type頁中,選擇創建的虛拟硬盤的接口方式,通常選擇默認值即可。
13.在Specify Disk Capacity頁中設置虛拟磁盤大小,對于一般的使用來說,選擇默認值即可。
14.在Specify Disk File頁的Disk file選項區域内設置虛拟磁盤文件名稱,通常選擇默認值即可,然後單擊完成按鈕。
15.安裝VMware Tools:在虛拟機中安裝完操作系統之後,接下來需要安裝VMware Tools。VMware Tools相當于VMware虛拟機的主闆芯片組驅動和顯卡驅動、鼠标驅動,在安裝VMware Tools後,可以極大提高虛拟機的性能,并且可以讓虛拟機分辨率以任意大小進行設置,還可以使用鼠标直接從虛拟機窗口中切換到主機中來。
•從VM菜單下選擇安裝VMware Tools。
•按照提示安裝,最後重新啟動虛拟機即可。
注意事項
在虛拟機中安裝操作系統,和在真實的計算機中安裝沒有什麼區别,但在虛拟機中安裝操作系統,可以直接使用保存在主機上的安裝光盤鏡像(或者軟盤鏡像)作為虛拟機的光驅(或者軟驅)。
可以用打開前文創建的Windows 2000虛拟機配置文件,在Virtual Machine Settings頁中的Hardware選項卡中,選擇CD-ROM項,在Connection選項區域内選中Use ISO image單選按鈕,然後浏覽選擇Windows 2000安裝光盤鏡像文件(ISO格式)。如果使用安裝光盤,則選擇Use physical drive并選擇安裝光盤所在光驅。
選擇光驅完成後,然後單擊工具欄上的播放按鈕,打開虛拟機的電源,用鼠标在虛拟機工作窗口中單擊一下,進入虛拟機。
如果想從虛拟機窗口中切換回主機,需要按下Ctrl+Alt熱鍵。
雲中配置
部署法則
啟動和停止虛拟機是使用雲計算資源的例行公事。在雲中部署虛拟機有兩個基本的選項:客戶可以拷貝一個預先配置好的虛拟機鏡像(也被稱為最終版),或者他們可以按照需求裝配一個自定義的虛拟機鏡像。
要啟用一個虛拟機,首先要從雲目錄中選擇一個機器鏡像。當部署一個跟Apache Web或者是Jboss應用服務器有關的應用時,最好選擇一個預先裝好這些組件的Linux鏡像。如果你是一個.NET程序員,最好選擇一個預先安裝并配置好開發工具的Windows操作系統。除了選擇一個安裝好必備軟件的虛拟機鏡像之外,還必須确認這些軟件是最新的并且打過補丁。一旦你選擇好了鏡像,下一步就是在雲中部署這個鏡像。
完成版鏡像
使用最終版鏡像有幾大優勢。最主要的是它可以保證虛拟機的一緻性。此外,以一個已有的鏡像開始可以節省很多精力和時間。終端客戶不必去關心怎麼安裝程序庫或者附加的包;他們可以依靠雲管理員來維護最終版鏡像。
終端用戶擁有的選項受限是這個方法的缺陷;鏡像目錄通常會包含常用的鏡像而不是一些不常用的組件集合。對于一個專業的虛拟機鏡像,你可以選擇一個最終版并且安裝所需的組件。如果一個終端用戶經常部署自定義的鏡像,那麼他必須保留一個鏡像的副本,但是這就意味着用戶必須自己打補丁,從而失去了使用最終版的優勢。
考慮專業的雲中實例并不是很重要的情況:你的網頁應用已經在你配置負載均衡後的環境中運行了幾周,如果你的應用突然發生了中斷,你可能會考慮為負載均衡集群增加幾台服務器。在這種情況下,你需要在集群中運行完全相同的鏡像以保持一緻性。如果你以前重做過這個鏡像,那麼系統中就可能出現不同版本的組件。這種情況也會發生在一個組件在兩次部署期間發布了新版本。
按需裝配
每次部署新鏡像時創建自定義鏡像使終端用戶可以自己安裝所需的組件。雲用戶喜歡以一個基礎系統鏡像開始,然後安裝應用程序組件(數據庫,應用服務器和web服務器)。然而,如果沒有工具的幫助,創建所需的雲對于經常性的部署是不切實際的。在這種情況下,應考慮使用配置管理工具(例如Chef或者Puppet),它們允許你指定你想包含在鏡像中的組件。如果最新版本的應用和補丁對于鏡像至關重要,按需裝配它們是最好的選擇。舉例來說,如果你有一份數據庫服務器的标準配置,創建一個Chef或者Puppet腳本來創建鏡像可以保證你擁有最新版本的組件。
按需裝配還有助于在多服務器中保持一緻性,因為數據庫管理員不太喜歡點對點的為一個過時的最終版鏡像打補丁。
兩種部署雲中虛拟機方法(創建最終版鏡像和創建按需叠代鏡像)并不是相互獨立的。舉例來說,當你需要創建一個服務器集群時,你應該建立腳本來裝配一個自定義的鏡像并使它成為最終版。首先通過配置管理工具創建多個虛拟機鏡像然後使用這個鏡像創建多個虛拟機實例。在這個場景中,隻要你需要為集群添加新的虛拟服務器就要保留最終版鏡像。
這裡并沒有單一的途徑來在雲環境中裝配和部署鏡像。最終版鏡像在以一緻性為主的案例中運作良好;而裝配按需版本則可以保證你的環境中運行着最新的組件。
私有配置
行業對話已經超越了解什麼是雲計算,企業IT環境中要決定如何能更好的部署它。這種演變與過去的虛拟化候選人的辯論相似——懂得如何确定物理服務器能否成為一個好的虛拟機。
1.雲負荷需要什麼樣的網絡呢?如虛拟服務器的線程、内存的需求、網絡資源的總負荷、私有雲中的應用程序的消耗,這些都是極為重要的。
繁忙的網絡資源負荷的需求,在局域網中鍊接到其他服務器,這樣是不會制造出最好的雲候選者。把這些負荷放入到私有雲中,可能會造成帶寬或延遲等問題,會影響雲的整體性能。衡量雲服務器和位于本地數據中心的其他服務器的網絡利用率。
2、還有什麼其他服務與私有雲互連嗎?考慮到雲負荷與其他網絡中的雲工作量負荷之間的交流。例如,幾乎所有基于Windows的IT服務都傾向于Active Directory認證,因為桌面操作系統都是這樣做的。域控制者必須處理大量的通信,所以把它們完全轉移到雲中可能是一個壞主意。
另外,服務與本地數據中心的其他服務有一些交互,不太可能因為位置的遷移而受影響。延遲影響不大。查看虛拟機中的互操作,是一個好的辦法,可以找到雲中就緒的資源。
3、私有雲中的工作負荷和其他工作負荷之間是否存在明顯的分隔(例如,“硬線”)?隔離雲服務可以作為良好的雲候選人和壞的之間的分隔線。孤立服務,可以制造出傑出的雲候選人,例如,那些服務是否位于你的DMZ中。按照設計,DMZ有“硬線”環繞着它的服務,尤其是防火牆中,可以把它在網絡和局域網中分隔出來。分隔意味着你可以非常容易的把所有内容從DMZ移到雲中。DMZ可以很明确的劃分,什麼可以制造出優秀的私有雲候選者。結合不同雲服務、DMZ服務之間的虛拟防火牆的隔離,很有可能在雲中獲得成功。
4、雲服務可以友好的複制嗎?一些IT服務已經在心裡開始設計複制了:設計通信是為了支持延遲、帶寬的類型,你會在局域網與雲通信中體驗。這些服務可能包括異地備份、服務器故障轉移、或者其他服務的協議,為不能滿足局域網速度的網絡做準備。
5、如果私有雲中的數據妥協,你會多痛苦呢?最後的檢查,确實是早期圍繞雲安全和數據所有權的關注的一個直接結果。選擇把虛拟機放到雲中的時候,圍繞數據的安全、所有權和管理問題必須是要考慮的因素,一些虛拟機和某些IT資源與數據一起工作,如果丢失或者妥協,會為企業帶來明顯的痛苦。
注意,一個潛在的啟用雲虛拟機的數據類型可以處理。如果丢失或者暴露,數據的價值大于遷移到雲中,那麼最好把虛拟機放在數據中心。
為私有雲選擇正确的虛拟機,你要分析每一個虛拟機和服務所用的資源。你也需要檢查把這些資源移向雲中的風險。有了正确的調查,就可以找到最好的資源和服務,并且可以相對容易的部署到私有雲中。
資源分配
虛拟機資源涉及多個方面:CPU、内存、網絡以及磁盤。在規劃虛拟機時應該考慮這些資源之間的關系,否則,分配的資源 不合理将導緻虛拟機内的應用程序性能表現不佳。
CPU
虛拟機每個vCPU隻運行在一個物理核心之上,因此CPU頻率越高虛拟機的運行速度也就越高,vCPU數量越多有助于提升應用的性能表現。如果虛拟機需要占用大量的CPU時間,那麼可以考慮為虛拟機分配第二個vCPU,但是,為虛拟機分配兩個以上vCPU并不一定讓應用運行的更快,因為隻有多線程應用才能有效地使用多個vCPU。
RAM
RAM資源通常有限,因此在給虛拟機分配RAM時需要格外小心。物理内存被完全用完後,必須确定哪些虛拟機能夠保留物理内存,哪些虛拟機要釋放物理内存。這稱之為“内存回收”。當虛拟機占用的物理内存被回收後,存在的一個風險就是會對虛拟 機的性能造成影響。虛拟機被回收的内存越多,相應的風險也就越大。
最明智的是隻為虛拟機分配完成工作所需要的内存。分配額外的内存将會增加回收風險。另一方面,當虛拟機操作系統将未被使用的内存用作磁盤緩存時,将會顯著降低對磁盤系統的性能要求,所以這裡有一個折衷問題。
網絡帶寬
網絡帶寬包括兩個方面:一是虛拟機和虛拟交換機之間的帶寬,二是虛拟交換機與外部網絡之間的帶寬。對于與外部物理網絡的連接,一定要确保主機具備速度最快的物理網卡。進行大量網絡傳輸的虛拟機,虛拟機以及數據包的傳輸都會消耗CPU時間。因此,運行在CPU受限的服務器之上的虛拟機由于CPU無法快速響應請求可能會面臨網絡吞吐量不高的情況。
磁盤性能
磁盤性能往往是無聲的性能殺手。虛拟機磁盤性能受陣列磁盤數量、類型以及運行在其上的虛拟機的數量的限制。因為集中地共享存儲架構将導緻通過同一位置訪問所有的虛拟機磁盤,陣列的存儲控制器以及磁盤過載情況很容易出現,隻剩下虛拟機在 等待存儲的響應。
虛拟機等待磁盤IO、虛拟機CPU空閑對性能的影響有很大不同。等待IO的虛拟機無法做其他工作,因此高I/O等待時間意味 着性能肯定會下降。進行周密的存儲設計以避免上述情況的發生至關重要。
合理選擇磁盤 提升虛拟機性能。在虛拟化中,hypervisor将工作負載從運行在底層的物理硬件中抽象出來,允許快速分配并共享計算資源,遷移工作負載。盡管hypervisor以及與虛拟化兼容的處理器性能開銷很小,但是虛拟化層的存在卻對性能有影響。
當磁盤性能對工作負載至關重要時,某些管理員可能會選擇以直通模式配置LUN,允許虛拟機的操作系統繞過hypervisor與直接LUN進行通信。例如,Windows服務器虛拟機可能使用直通模式繞過Hyper-V直接訪問磁盤,這對SQL Server數據庫的性能有些許提升。然而,由于客戶操作系統(采用直通模式)以及hypervisor試圖同時訪問磁盤,那麼hypervisor必須被配置為忽略直通LUN。
直通模式存在的問題是其不被某些重要的虛拟化功能比如虛拟機快照或者集群所支持。因此,虛拟機在實際上可能會受益于虛拟化提供的各種功能特性而非采用直通模式所帶來的處于邊緣地位的性能提升。管理員需要評估虛拟機的需求并确定直通模式的适宜性。
除直通模式外,Hyper-V以及其他hypervisor還提供了其他磁盤存儲選項。例如,當.VHD文件被創建時,大小固定的磁盤将分配所有的數據塊。一旦被創建,大小固定的磁盤就不能夠進行調整了。然而,動态擴展磁盤從一開始創建的就是沒有數據塊的.VHD文件,當數據寫入到.VHD文件中後磁盤空間才會被分配出去。這和精簡配置類似,盡管在邏輯上創建了一塊磁盤,但實際的磁盤空間隻有數據寫入時才會被用到。
差分磁盤是一種特殊的動态擴展磁盤類型。其設計思路是父磁盤擁有固定的鏡像而且差分磁盤與父磁盤相關聯,因此寫入到磁盤的數據被存放在差分磁盤而非.VHD文件中。讀請求首先檢查差分磁盤的.VHD文件,如果沒有更改,就會讀父.VHD文件。當需要标準化的磁盤鏡像而且回滾功能很重要時,差分是一個不錯的主意,但是管理員在維護父子磁盤配置時可能會面臨挑戰。
主要用處
1.演示環境,可以安裝各種演示環境,便于做各種例子
2.保證主機的快速運行,減少不必要的垃圾安裝程序,偶爾使用的程序,或者測試用的程序在虛拟機上運行
3.避免每次重新安裝,銀行等常用工具,不經常使用,而且要求保密比較好的,單獨在一個環境下面運行
4.想測試一下不熟悉的應用,在虛拟機中随便安裝和徹底删除
5.體驗不同版本的操作系統,如Linux、Mac等。
終端虛拟化由于其帶來的維護費用的大幅降低而受到追捧——如能降低占用空間,降低購買軟硬件設備的成本,節省能源和更低的維護成本。它比實際存在的終端設備更加具備性價比優勢。但這些并非是教育行業和廠商對虛拟化技術情有獨鐘的惟一原因。另一方面,一般較少提及,虛拟化技術能大幅提升系統的安全性。
常用軟件
VMware Workstation
VMware是EMC公司旗下獨立的軟件公司,1998年1月,Stanford大學的Mendel Rosenblum教授帶領他的學生Edouard Bugnion和Scott Devine及對虛拟機技術多年的研究成果創立了VMware公司,主要研究在工業領域應用的大型主機級的虛拟技術計算機,并于1999年發布了它的第一款産品:基于主機模型的虛拟機VMware Workstation。爾後于2001年推出了面向服務器市場的VMware GSX Server和VMware ESX Server。今天VMware是虛拟機市場上的領航者,其首先提出并采用的氣球驅動程序(balloon driver),影子頁表(shadow page table),虛拟設備驅動程序(Virtual Driver)等均已被後來的其它虛拟機如Xen采用。
使用Vmware,可以同時運行Linux各種發行版、Dos、Windows各種版本,Unix等,甚至可以在同一台計算機上安裝多個Linux發行版、 多個Windows版本。
優點:
1. 可同時在同一台PC上運行多個操作系統,每個OS都有自己獨立的一個虛拟機, 就如同網絡上一個獨立的PC。
2. 在Windows NT/2000上同時運行兩個VM,相互之間可以進行對話,也可以在全屏方式下進行虛拟機之間對話,不過此時另一個虛拟機在後台運行。
3. 在VM上安裝同一種操作系統的另一發行版,不需要重新對硬盤進行分區。
4. 虛拟機之間共享文件、應用、網絡資源等。
5. 可以運行C/S方式的應用,也可以在同一台計算機上,使用另一台虛拟機的所有資源。
Parallels Desktop
Parallels Desktop是适用于Mac OS平台上的虛拟機解決方案。無需重啟即可在同時一台Mac電腦上随時訪問Windows和Mac兩個系統上的衆多應用程序。與VMware最大的區别在于Parallels Desktop無需重啟,兩個系 統同時運行。兩系統間可以實現文件互傳,素材共用。
融合模式(Coherence)支持不顯示Windows但是仍使用其應用程序,或者在Mac上保 留熟悉的Windows背景與開始菜單。兩種同時運行Windows與Mac應用程序的方式都不會對 性能産生任何影響。
多虛拟機支持:Windows、Linux、Chrome OS、Mac OS、Android OS等。
優點:
● 無縫集成。在Mac設備上也能使用Siri®與Cortana,它還支持iCloud、Dropbox與Google DriveTM。
● 性能好。比如暫停虛拟機與重啟操作系統的速度較VMware Fusion8.5快了3倍,可以實時優化虛拟磁盤,隻有在實際需要 時才會占用空間。
● 開發神器。免費為Docker、Jenkins和Chef等常用開發工具提供支持。
Virtual PC
Virtual PC是微軟公司(Microsoft)收購過來的,最早不是微軟開發的。Virtual PC可以允許你在一個工作站上同時運行多個PC操作系統,當你轉向一個新OS時,可以為你運行傳統應用提供一個安全的環境以保持兼容性,它可以保存重新配置的時間,使得你的支持,開發,培訓工作可以更加有效。
Virtual PC在使用PowerPC處理器的Mac OS X版本上,其模拟機“使用”Intel Pentium 4處理器及440BX系列的主闆;而 在Windows版本上,會使用電腦本身的處理器。模拟電腦上使用一塊标準的SVGA VESA圖卡,并與S3 Trio 64 PCI 8 MByte VideoRAM版本的兼容。主闆使用American Megatrends (AMI)的BIOS。并有“内置”的Creative Labs Sound Blaster 16 PnP聲卡(Vista上或運行模拟Vista環境時,則使用Vista本身的音效系統,因為Vista并不支援Creative Labs Sound Blaster)及DEC 21041或DEC 21140的Ethernet網卡。
Virtual PC可以在你的電腦上能同時模拟多台電腦,虛拟的電腦使用起來與一台真實的電腦一樣,可以進行bios設定,可以給它的硬盤進行分區,格式化,操作系統可以安裝DOS,Windows 95,Windows 98,Windows ME,Windows 2000,Windows XP,Windows Server 2003,UNIX,LINUX等等,可以在Windows XP裡運行Linux。
優點:
●兼容性好。和xp及其他微軟的系統的兼容性是最好的。
●占用内存小,使用方便。
●對網絡的支持好,安裝完成系統後配置一下ip即可上網。
Oracle VM VirtualBox
Oracle VMVirtualBox是由Sun Microsystems公司出品的軟件(Sun Microsystems于2010年被Oracle收購),原由德國innotek公司開發。2008年2月12日,Sun Microsystems宣布将以購買股票的方式收購德國Innotek軟件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM VirtualBox。2010年1月21日,歐盟終于同意Oracle收購Sun,VirtualBox再次改名變成Oracle VM VirtualBox。VirtualBox是開源軟件。
VirtualBox 3.2.0支持的操作系統包括:Debian,Fedora,Linux,Mac OS(Intel),Mandriva,OpenSolaris,PCLiunxOS,Red Hat,SUSE Linux,Solaris 10,Ubuntu,Windows,Xandros,openSUSE等。
Oracle VM VirtualBox支持的客戶端操作系統包括:從3.1到Vista的所有版本的Windows、Linux 2.2、2.4和2.6内核、Solaris x86、OS/2、、OpenBSD、Netware、FreeBSD和DOS。在2007年1月,InnoTek以GNU General Public License (GPL)釋出VirtualBox,并提供二進位版本及開放源碼版本的代碼。最新版本是VirtualBox 4.3.12-93733。
優點:
1.它小巧精悍,安裝文件下載方便,安裝起來占用的硬盤空間也小。
2.它支持的操作系統類型,更新的要比VMware WorkStation快。
3.它是免費的。
VMLite
VMLite是全球首款中國人自己設計的高速虛拟機,VMLite發布的短短幾周内已經吸引了全球上萬名虛拟機玩家注冊下載并使 用VMLite軟件。
VMLite是一個虛拟機軟件,其附帶的VMLite XP模式與微軟推出的Windows XP模式幾乎一模一樣,但是卻不要求你的CPU非得支持虛拟化才能運行。VMLite允許你直接使用從微軟網站上下載下來的Windows XP模式安裝文件,來建立Windows XP虛 拟機。VMLiteXP模式配置完成後,在Windows 7的開始菜單中也會出現虛拟機中安裝的軟件的快捷方式;在虛拟機中運行的程 序,可以無縫的在Windows 7桌面上顯示,看起來就跟在本機中運行一樣。
VMLite已經包括VMLite XP Mode、VMLite Workstation、MyOldPCs、VMLite VirtualApps Studio、VMLite VirtualApps Player、VBoot六大産品,非常全面。
優點:
1)VMLite是世界上運行速度最快的虛拟機
2)VMLite對硬件安裝沒有任何要求,就是對你的計算機配置沒有任何要求,比如不需要兼容VT-x或者AMD-V
3)VMLite不運行遠程程序所以速度非常快
4)VMLite文件共享快
5)VMLite擁有超大磁盤容量:2TB
6)VMLite支持32位和64位系統
7)VMLite支持多個虛拟CPU同時運行
8)VMLite支持3D動畫效果擁有32位高清晰顯卡,可以高清晰度的欣賞google earth以及讓玩家玩遍對畫質要求高的最時尚的網遊



















