虚拟化
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统。
目前在Linux上的虚拟化技术有Xen,KVM,LXC(Linux Container)。
Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个的操作系统。Xen无需特殊硬件支持,就能达到高性能的虚拟化。
KVM是基于硬件的虚拟化。其嵌入到Linux的内核中的一个虚拟化模块。能够将一个Linux标准内核转换成一个VMM,有KVM模块的Linux标准内核可以支持通过kvm tools。
LXC(Linux Container)容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
KVM
KVM必须依赖于HVM:Interl VT-x,AMD AMD-V:
KVM是基于内核的虚拟化。
KVM通过/dev/kvm这个字符设备调用接口。KVM内核通过/dev/kvm设备提供了内存虚拟化,给予GuestOS与内核或者相对其他的GuestOS相对独立的地址空间。每个GuestOS都有自己的地址空间。
QEMU是一个I/O虚拟化的解决方案,能够对一个完整的计算机物理层环境进行虚拟化(EG,磁盘,网络设备)。
在GuestOS中生成的I/O操作全被qemu中途截获。并重新发送到qemu进程模拟的user mode中。