当前位置: 首页>后端>正文

虚拟化与docker

什么是虚拟化技术?

(什么是虚拟化) 什么是虚拟化

在计算机技术中,虚拟化(Virtualization)是一种资源管理技术。它是将计算机的各种实体资源,如:服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用更好的方式来利用这些资源。

虚拟化的目的是为了在同一个主机上运行多个系统或应用,从而提高系统资源的利用率,并带来降低成本、方便管理和容错容灾等好处。

(虚拟化技术分类) 虚拟化技术分类

从实现形式来分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。

(硬件虚拟化) 硬件虚拟化

硬件虚拟化就是硬件物理平台本身提供了对特殊指令的截获和重定向的支持。支持虚拟化的硬件,也是一些基于硬件实现软件虚拟化技术的关键。在基于硬件实现软件虚拟化的技术中,在硬件是实现虚拟化的基础,硬件(主要是CPU)会为虚拟化软件提供支持,从而实现硬件资源的虚拟化。

支持虚拟化的硬件有:

  • Intel-VT-(Intel Virtualization Technology),Intel公司为解决纯软件虚拟化解决方案在可靠性、安全性和性能上的不足而引进的技术。它可以让一个CPU工作起来像多个CPU在并行运行,从而使得在一部电脑内同时运行多个操作系统成为可能
  • AMD-V-(AMD Virtualization),是AMD公司的虚拟化技术。它是对x86处理器系统架构的一组硬件扩展和硬件辅助虚拟化技术,可以简化纯软件的虚拟化解决方案,改进VMM(虚拟机监视器)的设计,更充分地利用硬件资源,提高服务器和数据中心的虚拟化效率

(软件虚拟化) 软件虚拟化

软件虚拟化就是利用软件技术,在现有的物理平台上实现对物理平台访问的截获和模拟。在软件虚拟化技术中,有些技术不需要硬件支持,如:QEMU;而有些软件虚拟化技术,则依赖硬件支持,如:VMware、KVM。

对软件虚拟化进行细分,又可以分为以下几类:

  • 完全虚拟化:(Full Virtualization)虚拟机模拟完整的底层硬件环境和特权指令的执行过程,使客户机操作系统可以独立运行。支持完全虚拟化的软件有:Parallels Workstation、VirtualBox、Virtual Iron、Oracle VM、Virtual PC、Virtual Server、Hyper-V、VMware Workstation、QEMU等
  • 硬件辅助虚拟化:(Hardware-assisted Virtualization)是指通过硬件辅助支持模拟运行环境,使客户机操作系统可以独立运行,实现完全虚拟化的功能。支持硬件辅助虚拟化的软件有:Linux KVM、VMware Workstation、VMware Fusion、Virtual PC、Xen、VirtualBox、Parallels Workstation等
  • 部分虚拟化:(Partial Virtualization)只针对部分硬件资源进行虚拟化,虚拟机模拟部分底层硬件环境,特别是地址空间。这样的环境支持资源共享和线程独立,但是不允许建立独立的客户机操作系统。
  • 平行虚拟化:(Para-Virtualization)虚拟机不需要模拟硬件,而是将部分硬件接口以软件的形式提供给客户机操作系统。如:早期的Xen。
  • 操作系统层虚拟化:(OS-level virtualization)这种技术将操作系统内核虚拟化,可以允许使用者空间软件实例被分割成几个独立的单元,在内核中运行,而不是只有一个单一实例运行。这个软件实例,也被称为是一个容器(containers)、虚拟引擎(Virtualization engine)、虚拟专用服务器(virtual private servers)。每个容器的进程是独立的,对于使用者来说,就像是在使用自己的专用服务器。 Docker容器技术就是属于操作系统层虚拟化的范畴。

(几种虚拟化技术) 几种虚拟化技术

虚拟化是通过软件的方式模拟实体服务器,其初衷是为了解决“一种应用占用一台服务器”模式所带来的服务器数量剧增的问题,从而降低数据中心复杂度,简化管理难度。在虚拟化的发展过程中,出现过以下主要虚拟化技术或产品:

  • Xen - 由剑桥大学开发的,一款开源的虚拟机监视器。采用ICA协议,它通过一种叫做准虚拟化的技术来获取高性能,甚至在一些与传统虚拟技术极度不友好的架构上(如:x86),Xen也有极佳的表现。Xen属于半虚拟化的技术,所以其性能损失非常小。Xen没有指令翻译,其或者使用使能理解和翻译虚拟操作系统发出的未修改指令的CPU(即:完全虚拟化);或者修改操作系统,使它发出的指令最优化,便于在虚拟化环境中执行(即:准虚拟化)。
  • KVM - KVM是一个Linux kernel模块,可以使用modprobe来加载KVM,加载后还需要通过其他工具创建虚拟机。KVM是一个全虚拟化的解决方案,但需要CPU支持虚拟化功能。相比Xen来说,KVM可以更加方便的整合进Linux内核,但它还需要其它虚拟化软件(如:QEMU)才能实现虚拟化功能
  • LXC - 即:Linux Container,Linux容器,是一种轻量级的虚拟化的手段。它可以提供轻量级的虚拟化,以隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。容器会有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
  • OpenVZ - 是SWsoft公司开发的开源软件,是该公司Virtuozzo软件的基础产品,是基于Linux平台的操作系统级服务器虚拟化解决方案。通过OpenVZ,可以在单个物理服务器上创建多个相互隔离的虚拟专用服务器(VPS)并以最大的效率共享硬件和管理资源。其上运行虚拟服务器被称为VPS(Virtual Private Serve),每个VPS的运行环境和独立服务器完全一致。OpenVZ基于Linux系统内核及作业系统提供操作系统级虚拟化,在虚拟化过程中资源消耗非常小,官方宣称约1-2%。
  • Hyper-V - 是微软件推出的一种虚拟化技术,可以采用半虚拟化或全虚拟的方式创建虚拟机。虽然它可以创建Windows或Linux操作系统,但其本身只能运行在Windows系统下,使用范围较为有限
  • Oracle VM - Oracle推出的服务器虚拟化软件,基于开源的Xen技术,包括Oracle VM Server和Oracle VM Manager两部分。
  • VMWare - 是一家非常出名虚拟化软件公司,其产品涵盖服务器、桌面等各种虚拟化领域,如:VMware Workstation - 是一款桌面虚拟机软件,可以在一台实体机器上模拟完整的网络环境,并可运行多个Windows、DOS、Linux或Mac系统,是非常好的开发、测试、部署解决方案。从技术角度来说,VMware Workstation是一款完全虚拟化产品,可借助硬件辅助在不修改用户操作系统的情况下完整虚拟化操作系统。
  • VMware ESX Server - 是一款适用于任何系统环境的企业级的虚拟机软件,可以认为是VMware Server的升级版。相比VMware Workstation来说,其功能更加强大,可以用于构建高伸缩和高可靠企业级服务器,并可实现远程管理、高级资源管理控制等高级功能。

Hypervisor,又称虚拟机监控器(英语:virtual machine monitor,缩写为 VMM),是用来创建与执行虚拟机的软件、固件或硬件。

类型 I:原生或裸机 hypervisor

虚拟化与docker,第1张
类型 I

这些虚拟机管理程序直接运行在宿主机的硬件上来控制硬件和管理客操作系统。

  • 特点
  1. 需要硬件支持
  2. 虚拟机监视器作为主操作系统
  3. 运行效率高
  • 举例
  1. VMware ESX服务器版本
  2. Xen 3.0 及以后版本
  3. Virtual PC 2005
  4. KVM

类型 II:寄居或托管 hypervisor

虚拟化与docker,第2张
类型 II

这些虚拟机管理程序运行在传统的操作系统上,就像其他计算机程序那样运行。

  • 特点
  1. 虚拟机监视器作为应用程序运行在主操作系统环境内
  2. 运行效率一般较类型 I 低
  • 举例
  1. VMware workstation
  2. Xen 3.0 以前版本
  3. Virtual PC 2004
  4. Virtual Box

虚拟化技术 - Docker Vs. 虚拟机
https://pdai.tech/md/devops/docker/docker-01-docker-vm.html

如何理解虚拟化
https://www.redhat.com/zh/topics/virtualization/what-is-virtualization

KVM 虚拟化详解
https://zhuanlan.zhihu.com/p/105499858

libvirt与qemu
https://www.cnblogs.com/itxdm/p/libvirt_and_QEMU.html


https://www.xamrdz.com/backend/3v31941836.html

相关文章: