Linux虚拟化与容器化
随着云计算的不断发展,计算资源不断集中于大规模的服务器集群上。为了充分发挥硬件潜力,提高服务器性能,虚拟化技术由此诞生。 所谓虚拟化技术,是指将计算元件和硬件隔离开来,隐藏底层的硬件物理特性,为用户提供抽象、统一的模拟计算环境,从而可以适应庞大的硬件资源而不至于浪费性能。如Intel-VT和AMD-V技术可以单CPU模拟多CPU运行,允许同一平台同时运行多个操作系统,且应用程序和服务在相互独立的空间内运行而不影响,从而尽可能的压榨硬件性能并提高工作效率。 虚拟化级别可分为:硬件抽象层、指令集层、操作系统层、基础运行库层、应用程序层。 指令集层:使用类似代码解释的方法实现不同平台计算资源的通用,但是效率极低,如Bochs,可以实现Unix like系统中模拟X86平台(指令集、I/O、内存、BIOS等等),例如在Android上运行Windows。 硬件抽象层:将底层硬件虚拟化,如VMware ESXi,Windows Hyper-V,Xen,Linux KVM等,可以使同一硬件平台上运行多个不同的操作系统;又可分为全虚拟化和半虚拟化(下文详解)。目前I/O和内存的虚拟化较为成熟,CPU方面由于指令集在设计时未考虑到特权指令(hypervisor)和非特权指令(用户)区分的原因(主要是X86)会造成性能下降,因此开发出了Intel-VT等CPU虚拟化技术(硬件辅助虚拟化)