Virtualization基础
官方文檔學(xué)習(xí)
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Virtualization_Getting_Started_Guide/Red_Hat_Enterprise_Linux-7-Virtualization_Getting_Started_Guide-en-US.pdf
?
CPU虛擬化
模擬 emulation
對于CPU來說,需要模擬ring 0、1、2、3
虛擬機(jī)內(nèi)核運(yùn)行在ring 1上
虛擬 virtualization
完全虛擬化 full-virtualization
對于CPU來說,需要虛擬ring 0
虛擬機(jī)內(nèi)核運(yùn)行在ring -1 上
Guest認(rèn)為自己直接運(yùn)行在物理主機(jī)上,沒有意識(shí)到自己是虛擬機(jī)
BT 二進(jìn)制翻譯,基于軟件的方式
HVM 硬件輔助的虛擬化,基于底層硬件支持虛擬化指令集
半虛擬化 para-virtualization
Guest清楚的知道自己是虛擬機(jī)
如果虛擬機(jī)要運(yùn)行特權(quán)指令,但這條特權(quán)指令不會(huì)影響到其它的虛擬機(jī)和物理機(jī),則由虛擬機(jī)的內(nèi)核直接調(diào)用硬件資源,減少了中間的指令轉(zhuǎn)換層
如果虛擬機(jī)要運(yùn)行的特權(quán)指令,會(huì)影響虛擬機(jī)和物理機(jī),則發(fā)出hyper call,交由hypervisor調(diào)用硬件資源
?
Memory虛擬化
在虛擬機(jī)中
Shadow Page Table 實(shí)現(xiàn)虛擬機(jī)中邏輯地址到虛擬機(jī)物理地址的轉(zhuǎn)換
MMU 將虛擬機(jī)的物理地址轉(zhuǎn)換為物理主機(jī)的物理地址
GVA ---> GPA ---> HPA
MMU Virtualization 硬件實(shí)現(xiàn),能使得虛擬機(jī)中的邏輯地址直接轉(zhuǎn)換成為物理主機(jī)的物理地址
Intel EPT Extended Page Table
AMD NTP Nested Page Table
GVA ---> HPA
TLB Virtualization
Translation Lookaside Buffer 轉(zhuǎn)換檢測緩沖區(qū)是一個(gè)內(nèi)存管理單元
tagged TLB
存儲(chǔ)虛擬機(jī)中邏輯地址到物理機(jī)的物理地址的轉(zhuǎn)化
?
I/O虛擬化
存儲(chǔ)設(shè)備
硬盤、光盤、U盤、軟盤
網(wǎng)絡(luò)設(shè)備
網(wǎng)卡
顯示設(shè)備
VGA
frame buffer機(jī)制
給每個(gè)驅(qū)動(dòng)一個(gè)緩沖窗口,一般使用完全虛擬化
字符設(shè)備
鍵盤
ps/2、usb
鼠標(biāo)
ps/2、usb
使用焦點(diǎn)捕獲方式,將字符設(shè)備和虛擬機(jī)建立臨時(shí)關(guān)聯(lián),一般使用完全虛擬化
I/O虛擬化方式
完全虛擬化
完全使用軟件來模擬真實(shí)硬件
適用于所有的設(shè)備
半虛擬化
移除了虛擬機(jī)中不必要的模擬驅(qū)動(dòng)使用,而是調(diào)用I/O前端驅(qū)動(dòng),I/O前端驅(qū)動(dòng)和物理主機(jī)上的I/O后端驅(qū)動(dòng)交互,從而直接調(diào)用物理驅(qū)動(dòng)
通常僅適用于
磁盤、網(wǎng)卡
IO-through IO透傳
讓虛擬機(jī)直接使用物理設(shè)備,仍然需要hypervisor協(xié)調(diào)
需要硬件支持透傳技術(shù)
Intel VT-d
在IO MMU層隔離各虛擬機(jī)的IO數(shù)據(jù),避免因?yàn)榧械腄MA設(shè)備管理,導(dǎo)致多虛擬機(jī)的IO數(shù)據(jù)混淆
并且還能完成中斷映射的對應(yīng)關(guān)系,明確各IO中斷對應(yīng)的處理虛擬機(jī)
基于北橋的硬件輔助的虛擬化技術(shù),主要提升I/O設(shè)備可靠性、靈活性以及性能
?
虛擬化技術(shù)兩種實(shí)現(xiàn)
Type-I
hypervisor ---> vm
Xen、RHEV、ESXi
Type-II
host vmm ---> vms
KVM、VMware Workstation、Virtual Box
依賴底層操作系統(tǒng)
?
KVM、Xen缺陷
它們都不能完整意義上的實(shí)現(xiàn)IO,必須通過qemu、virtio實(shí)現(xiàn)IO傳輸
?
虛擬化技術(shù)分類
模擬
PearPC
Bochs
QEMU
(模擬器)
完全虛擬化
native virtualization
底層硬件架構(gòu)必須和虛擬機(jī)架構(gòu)一致
VMware Workstation、VMware Server、Parallels Desktop、KVM、Xen(HVM)
半虛擬化
para-virtualization
底層硬件架構(gòu)必須和虛擬機(jī)架構(gòu)一致
xen、uml(user-mode linux)
OS級(jí)別虛擬化
OpenVZ
lxc
Solaris Containers
FreeBSD jails
(性能好)
庫虛擬化
wine
在Linux上模擬Windows庫,可以玩Windows上的游戲、軟件
應(yīng)用程序虛擬化
jvm
?
TUN與TAP
在計(jì)算機(jī)網(wǎng)絡(luò)中,TUN與TAP是操作系統(tǒng)內(nèi)核中的虛擬網(wǎng)絡(luò)設(shè)備。不同于普通靠硬件網(wǎng)卡實(shí)現(xiàn)的設(shè)備,這些虛擬的網(wǎng)絡(luò)全部用軟件實(shí)現(xiàn),并向運(yùn)行于操作系統(tǒng)上的軟件提供與硬件網(wǎng)絡(luò)設(shè)備相同的功能
TAP等同于一個(gè)以太網(wǎng)設(shè)備,它操作第二層數(shù)據(jù)包如以太網(wǎng)數(shù)據(jù)幀
TUN模擬了網(wǎng)絡(luò)層設(shè)備,操作第三層數(shù)據(jù)包比如IP數(shù)據(jù)包
操作系統(tǒng)通過TUN/TAP設(shè)備向綁定該設(shè)備的用戶空間的程序發(fā)送數(shù)據(jù)。反之,用戶空間的程序也可以像操作硬件網(wǎng)絡(luò)設(shè)備那樣,通過TUN/TAP設(shè)備發(fā)送數(shù)據(jù),數(shù)據(jù)包投遞至操作系統(tǒng)的網(wǎng)絡(luò)棧,從而模擬外部接受數(shù)據(jù)的過程
?
虛擬化網(wǎng)絡(luò)
nat
bridge
route
isolation
?
網(wǎng)橋設(shè)備管理
NetworkManager不支持橋設(shè)備管理
1 chkconfig NetworkManager off 2 chkconfig networ on?
橋設(shè)備管理軟件包安裝
1 yum install -y bridge-utils?
編輯橋配置文件
cp ifcfg-eth0 ifcfg-br0vim ifcfg-br0DEVICE=br0NM_CONTROLLED=noTYPE=Bridge# 下面IP、掩碼、DNS直接使用原網(wǎng)卡的# 如果有mac地址最好刪除掉 vim ifcfg-eth0# 將 IP、掩碼、DNS等刪除BRIDGE=br0service network restart?
使用brctl配置橋設(shè)備(不持久)
brctl addbr br0brctl stp br0 on ifconfig eth0 0 upbrctl addif br0 eth0ifconfig br0 IP/NETMASK uproute add default gw GW_IP?
轉(zhuǎn)載于:https://www.cnblogs.com/cq146637/p/8893627.html
總結(jié)
以上是生活随笔為你收集整理的Virtualization基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL数据库Innodb储存引擎--
- 下一篇: 【JUnit 报错】 method in