什么是虚拟化?

什么是虚拟化?

“虚拟化“这个词只要是接触过计算机和网络的,或多或少都有听过。什么虚拟机、存储虚拟化、网络虚拟化、网络功能虚拟化(NFV)、虚拟资源池……今天从什么是虚拟化讲起。

什么是虚拟化

由于虚拟化在各种企业的技术宣传中都被使用过,虚拟化(Virtualization)这个词比较难界定,按照虚拟的对象、抽象程度等也可以分成多种虚拟化,用维基百科中提到的不严格的定义来讲:

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和资料存储。

Red Hat在官网也对虚拟化作出了通俗的描述。

以我的理解,虚拟化技术就是把真实存在的XXX以软件等形式,在原有XXX的基础上,实现多个虚拟XXX,或者把真实存在的多个XXX以某种方式使其透明地成为整个虚拟的XXX。比如你可以在你的主机上开多个虚拟机;又如把存储设备统一管理,对外是一整个存储设备。

看看各大企业是怎么解释的

IBM

维基百科上说IBM是虚拟化的鼻祖,看看它是咋说的:

虚拟化是让物理主机硬件资源得到更充分应用的过程,也是云计算的基础

虚拟化通过软件在计算机硬件之上构建一层抽象层,允许硬件的处理器、内存、存储硬盘等被划分成多个虚拟计算机,也就是俗称的Virtual Machine(VM),每个VM运行各自的操作系统,即便他们实际都是运行在底层计算机硬件上的一部分,各个VM也表现为互相独立的计算机。

由此可见,虚拟化能够更有效地利用计算机物理硬件资源,能够为一个机构在硬件上的投资带来更大的回报。

如今,虚拟化是企业在IT架构上的标准做法,同时也是云计算的主要驱动技术。虚拟化使得云提供商能够基于他们现有的计算机物理硬件,为用户提供更好的服务;云用户也能够按需购买所需的计算资源,并在工作负载增加时经济而高效的拓展计算资源。

Red Hat

红帽的图让人很喜欢。

虚拟化是一种技术,可以利用以往局限于硬件的资源来创建有用的 IT 服务。它让您能够将物理计算机的工作能力分配给多个用户或环境,从而充分利用计算机的所有能力。

举一个实际例子,假设您有 3 台物理服务器,分别用于不同的特定用途。 其中一台是邮件服务器,一台是 Web 服务器,最后一台则用于运行企业内部的传统应用。 每台服务器只使用了大约 30% 的计算容量,这仅是运行潜能的一小部分。但是,由于传统应用对内部运营非常重要,您必须将其连同所运行的第三台服务器予以保留,对吗?

什么是虚拟化?_第1张图片

过去确实如此。相对简单和可靠的做法是在单独的服务器上运行单独的任务:1 台服务器, 1 个运行操作系统,1 个处理任务。我们很难让 1 台服务器有多个大脑。但是,借助虚拟化技术,您可以将邮件服务器分为 2 个能够处理独立任务的特殊服务器,从而实现传统应用的迁移。您仍然使用相同的硬件,但可以更加高效地利用这些资源。

什么是虚拟化?_第2张图片

考虑到安全问题,您可以再次划分第一台服务器,从而可以处理另一项任务,将其使用率从 30% 提高到 60%,甚至提高到 90%。这样,现在空闲的服务器可以用于其他任务或停用,以降低散热和维护成本。

VMware

像大多数组织一样,随着业务的发展和增长,你可能正面临新的IT挑战。在一个动态的环境中,你需要提高敏捷性以跟上快速变化的业务需求。你的员工、客户和业务伙伴都要求更多的响应服务和更复杂的应用程序。当你试图跟上新的要求和不断增长的需求时,你的IT基础设施正变得越来越大,越来越复杂,给你的IT设施带来了更大的压力。

虚拟化有助于解决你最紧迫的技术挑战:基础设施的无序扩张迫使IT部门将70%的预算用在维护上,并消耗了用于业务建设创新的资源。困难源于当今X86计算机的架构:它们被设计为一次只运行一个操作系统和应用程序。这意味着,即使是小型的数据中心也必须部署许多服务器–每台服务器只能以12%的容量运行。虚拟化软件通过使多个操作系统和应用程序在一台物理服务器(host)上运行来解决这个问题。

回到原本想回答的问题:

请介绍目前通用的虚拟化方案有哪些,其对应的优劣及应用场景分别是什么?

从两个角度来答:架构角度和企业侧角度。

架构角度

从实现架构上将虚拟化方案分类,也就是从虚拟化技术本身出发。现在网上资料众说纷纭,我在这里加上自己的理解做一个整合,起一个通识的作用:

什么是虚拟化?_第3张图片

  • 全虚拟化(Full Virtualization)

    全虚拟化是最早出现的虚拟化技术。顾名思义,全虚拟化中VM从头到脚都是虚拟化的,VM操作系统所发出的一切可能指令都由虚拟化层(即VM Manager, VMM或者Hyperviser)处理。

    全虚拟化最先完全由软件实现,典型的实现是将客户VM的二进制代码进行翻译。后来出现了硬件辅助的全虚拟化,典型的如Intel-VT和AMD-V。

    相对来说更加简单和易于实现,但由于有两层OS,管理开销更大,性能损耗大。

    很多个人或者小型的组织使用的VMware Workstation和VirtualBox就属于这种软件辅助的全虚拟化,还有KVM等

  • 半虚拟化(Para Virtualization)

    半虚拟化中客户VM知道其运行在虚拟平台上,并需要主动适应,这样的虚拟平台需要对所运行的客户机操作系统进行或多或少的修改使之适应虚拟环境。虚拟化层是直接安装在硬件设备上的,会接管虚机的指令。

    这种技术不依赖于操作系统,但需要对虚拟层的内核进行开发,开发难度更大。

    VMware ESX、Xen、华为的FusionSphere都是这种模式。

  • 混合虚拟化

    无需开发内核,可支持多种操作系统,但需要底层硬件的虚拟化支持。

    KVM就是这种模式

  • 操作系统级别虚拟化(Operating system–level virtualization)

    常说的容器化就是一种OS级别虚拟化,也有人不把容器算作虚拟化方式的,目的是与VM方式区分开。

    操作系统层上的虚拟化是指操作系统的内核可以提供多个互相隔离的用户态实例。这些用户态实例(经常被称为容器)对于它的用户来说就像是一台真实的计算机,有自己独立的文件系统、网络、系统设置和库函数等。

    由于是OS提供的,这种方式往往非常高效,最核心的优点,也是Docker最鼓吹的——占用资源更少、启动更快,因为容器不需要像虚机一样运行客户端OS,容器底层是主机OS,其上只需运行需要的应用,同样做到了相互隔离,这种启动速度也使得容器可以不需要时关闭,释放主机资源。此外模块化程度更高,体积小,应用可以通过微服务技术部署在多个容器。劣势来说,首先容器是基于Host OS的,不同系统OS的区别也就使得容器不能在各种系统环境混用;安全性相对更差,因为容器需要与底层操作系统或者其他容器通信。

    容器化的应用场景更多是在应用程序上,而不是隔离操作系统,可能这也是很多资料将其与其他虚拟化技术分隔开的原因。

企业侧角度

应该得更关心市面上有哪些通用的1虚拟化方案以及他们各自的优劣(包括价格),也许这个角度是本问题更关心的?

我们主要讲这几个主流方案:KVM、Hyper-V、VMware sPhere、Xen

1. KVM

KVM全称Kernel-based Virtual Machine,可将Linux内核转化为一个虚拟机监视器。需要硬件的支持,比如Intel-VT和AMD-V。属于全虚拟化技术。

应用场景:

用于支持虚拟化技术(Intel V或AMD-V)的x86架构硬件,的Linux的全虚拟化。

优势:

  • 首先从现有形势来看,国内的阿里云,华为云,国外的AWS 之类的云服务提供商从几年前开始就均将技术路线向KVM进行切换,性能和稳定性经历了考研。
  • 开源。不仅开源性能还比vmware、xen等老牌虚拟化服务好,费用基本可以无视,高度可定制。
  • 已写入Linux内核,可以利用内核的优化和改进,是Linux的一部分,Linux活着可以不用太担心KVM死掉。且KVM本身是内核模块,结构更精简,无需对内核进行修改。
  • 充分支持现有的硬件虚拟化功能,支持SR-IOV,

劣势:

  • 需要支持虚拟化的处理器,如果CPU比较旧或者不支持虚拟化,KVM也就不能用了,因为KVM本身并不执行硬件模拟。
2. Hyper-V

微软家的,旧称Windows Server Virtualization。可以归属到半虚拟化

应用场景:

更适合小型的组织和企业

优势:

  • Hyper-V建立在微内核化设计之上,因此设备驱动程序在控制层中独立运行和操作,可以保持最少的设备驱动程序管理;
  • 初始化时间更短

劣势:

  • 使用Hyper-V之前必须安装主OS,且由于架构问题,父OS的崩溃会使得所有的VM崩溃。
3. VMware vSphere

应用场景:

更适合大型组织或企业。

优势:

  • 独立,无需像Hyper-V一样使用一个主OS控制所有的的虚拟化组件。

劣势:

  • 需要硬件的支持。
  • 由于设备驱动程序在体系结构的管理程序层中初始化,因此需要更多的初始化时间。该层中的任何损坏代码都可能导致初始化速度变慢,甚至导致服务器挂起或崩溃。
  • 贵。
4. Xen

Xen是开放源代码虚拟机监视器,由XenProject开发,能够在单个计算机运行多达128个有完全功能的操作系统。支持半虚拟化和全虚拟化。

优势:

  • 无需特殊硬件支持,就能达到高性能的虚拟化。即支持更广泛的CPU架构。

劣势:

  • 版本更新需要对内核重新打补丁,重新编译整个内核。

  1. 即不与软硬件绑定,可以部署在我自己的服务器上的。 ↩︎

你可能感兴趣的:(网络,云计算)