一、定义与意义

1、可以理解为虚拟机技术中,物理机上由操作系统控制的虚拟机(通常称为全虚拟化)直接访问底层硬件资源,省去了中间件的干涉。这种方式可以提高虚拟机的性能表现,对于需要快速响应的高吞吐量应用尤其有益。

2、去虚拟化本质是使用虚拟化技术将硬件资源虚拟化,将各个应用隔离开来,相互之间不会产生冲突。自然,每个应用访问时间、资源需要都各不相同,因此对于一些对性能要求高的应用,如数据库系统、数据备份等,造成额外的开销会相对较大,此时若能够去虚拟化,将不可避免地提升性能。

3、而虚拟化技术让用户可以将若干物理计算机的资源汇聚为虚拟环境中的单台计算机,在运行时虚拟机计算机将每个虚拟机看作单独的物理机,这样就增加了可伸缩性,提高了资源利用率。

二、实现方式

1、类全虚拟化:在类全虚拟化方式下,VM不再需要直接访问物理硬件,而是通过直接操作虚拟设备以及虚拟机设备来实现访问,进而避免DeviceInsterface层带来的中间件干预。而常用的就是Xen,vSphere、RHEV、Hyper-V、Openstack、Kubernetes等。

2、Para-virtualization方式:在Para-virtualization方式下,所有的虚拟机都运行在同一个内核下,而不是仅仅启动一个虚拟机单独使用一个内核,因此这也是类全虚拟化的体现,而常用的就是Xen、docker等。

3、硬件辅助虚拟化:这种方式基于CPU的虚拟化,CPU内置了硬件虚拟化的支持,可以增加虚拟化的效率,并减轻操作系统对真实硬件的压力,后来也被VMware等虚拟化开发者引入。

三、几种方案的实践与比对

1、全虚拟化的缺陷在于,由于直接访问硬件,因此对于性能要求非常高的应用,如HPC,而对于那些采用Para-virtualization方式以上等的应用,则性能会好很多,如Xen、VMware。在实践中,可通过提升应用性能的方式来实现。(注:此处可结合具体的实践案例来给出详细阐述,并附上代码示例)

2、对于虚拟机环境的搭建,KVM作为全面覆盖Linux的虚拟环境,具备性能卓越,同时也是安全性和稳定性良好的选择。通过对比可知,对于Linux虚拟机的搭建,KVM是推荐的选择。(注:此处可结合具体的实践案例来给出详细阐述,并附上代码示例)

3、在实践中,常常会将虚拟机架构和容器化架构组合使用,两者各自具有优势,能够互相补充。事实上,在实际生产环境中,容器和VM都需要相互搭配使用,且各扮演重要角色,不可缺少。(注:此处可结合具体的实践案例来给出详细阐述,并附上代码示例)

四、补充说明

1、与容器相比,VM的不足在于虚拟化主机的特殊性,虚拟化层的层数以及复杂度比较高,因此VM的性能和可维护性相比,都有所欠缺。但在某些场景下,VM的优势也表现得淋漓尽致。

2、从容器技术的角度来看,虽然有时比不上虚拟机的性能,但容器的大小、快速地创建和销毁、更高的弹性和可移植性使得其在云时代中更为受欢迎。

示例代码


def vmware_deploy():
    #使用vmware部署虚拟机
    pass

def kvm_deploy():
    #使用kvm部署虚拟机
    pass

def container_deploy():
    #使用容器部署应用
    pass

def hybrid_deploy():
    #混合部署:使用虚拟化技术和容器技术相结合
    pass