虚拟化

CPU虚拟化:

1、模拟:emulation;

2、虚拟:virtualization;

a、完全虚拟化(full-virtualization):BT:二进制翻译(软件)、HVM:硬件辅助的虚拟化(硬件)

b、半虚拟化(para-virtualization):

 

Memory虚拟化:

进程:线性地址空间

内核:物理地址空间

MMU   virtualization:

1、intel:EPT,extended page table

2、amd:NPT,nested page  table

TLB(Translation Lookaside Buffer)转换检测缓冲区  virtualization:tagged TLB

 

I/O 虚拟化:

外存:硬盘、光盘、U盘

网络设备:网卡

显示设备:VGA;frame buffer(帧缓存)机制

键盘鼠标:ps/2、usb

总结I/O虚拟化的方式:

1、模拟:完全使用软件来模拟真实硬件;

2、半虚拟化:通常仅适用于硬盘、网卡设备;

3、IO-through:IO透传;intel:VT-d

1

 

虚拟化模型:即实现方式

类型一:在系统上电之后首先加载运行虚拟机监控程序,而传统的操作系统则是运行在其创建的虚拟机中。代表:xen、vmware esx/esxi;

类型二:在系统上电之后仍然运行一般意义上的操作系统(也就是俗称的宿主操作系统),虚拟机监控程序作为特殊的应用程序,可以视作操作系统功能的扩展。代表:kvm、vmware workstation、virtualbox;

Intel硬件辅助的虚拟化:
CPU: vt-x, EPT, tagged-TLB
IO/CPU: vt-d, IOV, VMDq
第一类:跟处理器相关:vt-x
第二类:跟芯片相关:vt-d
第三类:跟IO相关:VMDq和SR-IOV
虚拟化技术的分类:
模拟:著名的模拟器,PearPC, Bochs, QEMU
完全虚拟化:也称为native virtulization
两种加速方式:
BT
HVM
VMware Workstation, VMware Server, Parallels Desktop, KVM, Xen(HVM)
半虚拟化:para-virtualization
xen, uml(user-mode linux)
OS级别的虚拟化:
OpenVZ, lxc
Solaris Containers
FreeBSD jails
库虚拟化:
wine
应用程序虚拟化:
jvm

 

虚拟化网络:
nat mode
bridge mode
routed mode
isolation mode
使用brctl的配置的过程示例:
# brctl addbr br0
# brctl stp br0 on
# ifconfig eth0 0 up
# brctl addif br0 eth0
# ifconfig br0 IP/NETMASK up
# route add default gw GW
KVM: Kernel-based Virtual Machine, Qumranet公司, 依赖于HVM;Intel VT-x, ADM ADM-V;
KVM模块载入后的系统的运行模式:
内核模式:GuestOS执行I/O类操作,或其它的特殊指令的操作;称作“来宾-内核”模式;
用户模式:代表GuestOS请求I/O类操作;
来宾模式:GuestOS的非I/O类操作;事实上,它被称作“来宾-用户”模式;
kvm hypervisor:
KVM的组件:
两类组件:
/dev/kvm:工作于hypervisor,在用户空间可通过ioctl()系统调用来完成VM创建、启动等管理功能;它是一个字符设备,功能:
创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等;
qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备;
KVM特性:
内存管理:
将分配给VM的内存交换至SWAP;
支持使用Huge Page;
支持使用Intel EPT或AMD RVI技术完成内存地址映射;GVA–>GPA–>HPA
支持KSM (Kernel Same-page Merging)
硬件支持:
取决于Linux内核;
存储:
本地存储:
网络附加存储:
存储区域网络:
分布式存储:例如GlustFS
实时迁移:
支持的GuestOS:
Linux, Windows, OpenBSD, FreeBSD, OpenSolaris;
设备驱动:
IO设备的完全虚拟化:模拟硬件
IO设备的半虚拟化:在GuestOS中安装驱动;virtio
virtio-blk, virtio-net, virtio-pci, virtio-console, virtio-ballon
KVM局限性:
1、一般局限性:
a、CPU overcommit
b、时间记录难以精确,依赖于时间同步机制
2、MAC地址:
a、VM量特别大时,存在冲突的可能性;
b、实时迁移:
c、性能局限性:
KVM的工具栈:
1、qemu:
qemu-kvm
qemu-img
qemu-io
2、libvirt:
GUI: virt-manager, virt-viewer
CLI: virt-install, virsh
QEMU主要提供了以下几个部分:
处理器模拟器
仿真IO设备
关联模拟的设备至真实设备;
调试器
与模拟器交互的用户接口
安装:
(1) 确保CPU支持HVM
# grep -E –color=auto “(vmx|svm)” /proc/cpuinfo
(2) 装载模块
# modprobe kvm
# modprobe kvm-intel
(3) 验正:
/dev/kvm
管理工具栈:
1、使用qemu-kvm管理工具:
# yum install qemu-kvm
# ln -sv /usr/libexec/qemu-kvm /usr/bin/
2、libvirt:

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102640

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班