虚拟机VM的那点破事儿

Hypervisor

Hypervisor是虚拟技术的核心,有两种Hypervisor的实现。

Hypervisor直接安装在硬件(相当于某种特殊的操作系统),VM运行在Hypervisor之上,比如Xen。

Hypervisor安装运行在普通的操作系统比如Ubuntu, RHEL, CentOS等,KVM 和 VirtualBox属于这种Hypervisor。

KVM

KVM负责CPU/Memory的虚拟,Kernel和QEMU负责IO的虚拟化, 包括网络和存储。

Libvirt

KVM管理套件,通过virsh命令行和virt-manager图形化界面管理虚拟机。

CPU

每个VM占用宿主机的一个进程,每个VM的vCPU相当于VM进程的一个线程。vCPU是可以overcommit的,也就是说,宿主机上所有VM的vCPU总和可以大于甚至远大于宿主机CPU Core的数量,OpenStack默认为16倍(参考OpenStack nova.conf中cpu.allocation_ratio=16)。当然,如果所有的VM同时满负荷运行,那么将会是个灾难。

Memory

虚拟机的虚拟内存 <–> 虚拟机的物理内存 <–> 机器内存

Network

Bridge,eth0 <-> br0 <–> vm1 neth0, vm2 neth0

创建bridge br0后,host IP会挂到br0上。vm的网卡如果挂到br0上,那么会由DHCP自动分配IP, 和host同网段。

KVM默认会创建一个bridge virbr0,并分配一个IP,允许挂在它之上的VM通过NAT和外网连接。

也可以通过Linux Bridge创建vlan/vxlan。

标签:

发表评论