1. 程式人生 > >虛擬化技術基礎原理詳解

虛擬化技術基礎原理詳解

虛擬化技術基礎原理詳解

DISK :

IO調度模式

CFQ

deadline

anticipatory

NOOP

/sys/block/<device>/queue/scheduler


Memory:

MMU

TLB

vm.swappiness={0..100},使用交換分區的傾向性,默認60%

overcommit_memory=2過量使用內存

RAM,swap

overcommit_ratio=50 允許使用交換分區的比例

所有的swap +RAM*ratio

swap=4G

RAM=8G

可以使用為4+8*50%=8G

充分使用物理內存;1.swap=RAM,swappiness=0;

2.overcommit_memory=2,overcommit_ratio=100,vm.swappiness=0

tcp_max_tw_buckets:只能調大

tw:連接個數,主動斷開端

established-->tw


IPC:

message 消息隊列

msgmni

msgmax

msgmnb


shm共享內存

shmall

shmmax

shmmni


監控內存和cpu的命令

sar ,dstat ,vmstat ,mpstat ,iostat ,top,free ,iotop ,uptime,

cat/proc/meminfo,ss,netstat,lsof,strace

blktrace,blkparse,btt,

壓力測試工具

dd,iozone,io-stress,fio




虛擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

虛擬化使用軟件的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。

在計算機中,虛擬化(英語:Virtualization)是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。

在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬件產能過剩和老的舊的硬件產能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件



1974年,Popek和Goldberg在一篇論文中定義了“經典虛擬化(Classical virtualization)”的基本需求,他們認為,一款真正意義上的VMM至少要符合三個方面的標準:

◇ 等價執行(Equivalient execution):除了資源的可用性及時間上的不同之外,程序在虛擬化環境中及真實環境中的執行是完全相同的;
◇ 性能(Performance):指令集中的大部分指令要能夠直接運行於CPU上;
◇ 安全(Safety):VMM要能夠完全控制系統資源;

1.1 x86平臺實現虛擬化技術的挑戰

x86處理器有4個特權級別,Ring 0 ~ Ring 3,只有運行在Ring 0 ~ 2 級時,處理器才可以訪問特權資源或執行特權指令;運行在 Ring 0級時,處理器可以運行所有的特權指令。x86平臺上的操作系統一般只使用Ring 0和Ring 3這兩個級別,其中,操作系統運行在Ring 0級,用戶進程運行在 Ring 3 級。


1.1.1 特權級壓縮(ring compression)

為了滿足上面所述的需求,VMM自身必須運行在Ring 0級,同時為了避免GuestOS控制系統資源,GuestOS不得不降低自身的運行級別而運行於Ring 3(Ring 1、2 不使用)。

此外,VMM使用分頁或段限制的方式保護物理內存的訪問,但是64位模式下段限制不起作用,而分頁又不區分Ring 0,1,2。為了統一和簡化VMM的設計,GuestOS只能和用戶進程一樣運行在 Ring 3。VMM必須監視GuestOS對GDT、IDT等特權資源的設置,防止GuestOS運行在Ring 0級,同時又要保護降級後的GuestOS不受Guest進程的主動攻擊或無意破壞。

1.1.2 特權級別名(Ring Alias)

設計上的原因,操作系統假設自己運行於ring 0,然而虛擬化環境中的GuestOS實際上運行於Ring 1或Ring 3,由此,VMM必須保證各GuestOS不能得知其正運行於虛擬機中這一事實,以免其打破前面的“等價執行”標準。例如,x86處理器的特權級別存放在CS代碼段寄存器內,GuestOS卻可以使用非特權PUSH指令將CS寄存器壓棧,然後POP出來檢查該值;又如,GuestOS在低特權級別時讀取特權寄存器GDT、LDT、IDT和TR時並不發生異常。這些行為都不同於GuestOS的正常期望。

1.1.3 地址空間壓縮(Address Space Compression)

地址空間壓縮是指VMM必須在GuestOS的地址空間中保留一段供自己使用,這是x86虛擬化技術面臨的另一個挑戰。VMM可以完全運行於自有的地址空間,也可以部分地運行於GuestOS的地址空間。前一種方式,需在VMM模式與GuestOS模式之間切換,這會帶來較大的開銷;此外,盡管運行於自己的地址空間,VMM仍需要在GuestOS的地址空間保留出一部分來保存控制結構,如IDT和GDT。無論是哪一種方式,VMM必須保證自己用到地址空間不會受到GuestOS的訪問或修改。

1.1.4 非特權敏感指令

x86使用的敏感指令並不完全隸屬於特權指令集,VMM將無法正確捕獲此類指令並作出處理。例如,非特權指令SMSW在寄存器中存儲的機器狀態就能夠被GuestOS所讀取,這違反了經典虛擬化理論的要求。

1.1.5 靜默特權失敗(Silent Privilege Failures)

x86的某些特權指令在失敗時並不返回錯誤,因此,其錯誤將無法被VMM捕獲,這將導致其違反經典虛擬化信條中的“等價執行”法則。

1.1.6 中斷虛擬化(Interrupt Virtualization)

虛擬化環境中,屏蔽中斷及非屏蔽中斷的管理都應該由VMM進行;然而,GuestOS對特權資源的每次訪問都會觸發處理器異常,這必然會頻繁屏蔽或啟用中斷,如果這些請求均由VMM處理,勢必會極大影響整體系統性能。

1.2 X86平臺虛擬化

完整意義上的計算機由硬件平臺和軟件平臺共同組成。根據計算機體系結構理論,其硬件平臺包括CPU、內存和各種I/O設備;而軟件平臺則包括BIOS、操作系統、運行時庫及各種應用程序等。對於主機虛擬化技術來講,其主要負責虛擬硬件平臺及BIOS,而操作系統、運行時庫及各種應用程序可以使用以往在物理平臺上各種現有技術及產品。


full-virtualization 完全虛擬化,虛擬機以為自己運行在真實機器上

CPU不支持硬件虛擬化技術,模擬特權指令;簡稱模擬

CPU支持硬件虛擬化技術,VMM運行ring -1;而guestOS運行在ring 0; 簡稱HVM(Hardware-asistant VM)

para-virtualization 半虛擬化,虛擬機知道自己運行在虛擬化上 簡稱PV

CPU IO MEMORY


PV on HVM


虛擬化模型,

1.Vmware workstation 在操作系統上安裝VMM

Vmware workstation有:Vmware Server

2.VMWare ESX 在硬件上直接安裝VMM,此時的VMM相當於精簡的系統,只為VMM提供服務。

VMWare ESX免費版的有:VMWare ESXi簡裝版

3.Xen,在硬件上安裝Xen,然後再Xen上安裝操作系統,比如Linux,操作系統在這裏稱作為Dom0=特權域。然後Dom0提供管理界面,主要對CPU,memory,interrupt提供虛擬技術



KVM基於內核的虛擬化(完全虛擬化)

KVM+QEMU 只能運行在支持硬件虛擬化的CPU上,只能跑64位系統

QEMU虛擬化的CPU效果沒有KVM好


KVM-virtio(IO設備的半虛擬化技術)




Container:

在系統上提供多個用戶空間,直接和硬件內核交互。

有點性能好,缺點沒有完全虛擬化和半虛擬化隔離效果好

OpenVZ



wine 在Linux上虛擬windows庫

cywin在windows上虛擬linux庫


Intel:IOMMU


x86:平臺虛擬化技術

Intel:VT-x,EPT,IOMMU







本文出自 “運維成長路” 博客,謝絕轉載!

虛擬化技術基礎原理詳解