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