虚拟化技术

虚拟化简介:
计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通 过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储等 , 抽像 , 转换后呈现出来 , 打破实体结构间的不可切割的障碍,虚拟成多台逻辑 计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不 同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从 而显著提高计算机的工作效率。

虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、 灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础 设施,服务于各行各业中灵活多变的应用需求。

虚拟化目标 : 同一主机上运行多个系统或应用 , 从而提高系统资源的利用率 , 同时带来降低 成本 , 方便管理和容错容灾

虚拟化级别:
(1)完全虚拟 – 处理器密集型技术,因为它要求 hypervisor 管理各个虚拟 服务器,并让它们彼此独立 (Vmware/Virtual PC)
(2)准虚拟 – 改动客户操作系统,让它以为自己运行在虚拟环境下,能够与 hypervisor 协同工作 (para-virtualization)
(3)系统虚拟 – 没有独立的 hypervisor 层。相反,主机操作系统本身就负 责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立
(4)桌面虚拟化—桌面虚拟化主要功能是将分散的桌面环境集中保存并管理 起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面 管理变得简单,不用每台终端单独进行维护,每台终端进行更新

所以 ,Docker 和其他容器(container)技术都属于系统虚拟化范畴

虚拟化分类:
对于系统虚拟化技术来说,虚拟层为用户提供了一个完整的虚拟机:包括内核 在内的一个完整的系统镜像。 CPU 虚拟化技术可以为每个用户提供一个独享 且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的 CPU 、 内存和 IO 设备资源

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机 (Guest)。那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使 用的呢?

这个主要是通过一个叫做 Hypervisor 的程序实现的。根据 Hypervisor 的实 现方式和所处的位置,虚拟化按照结构分为两种类型:1型虚拟化和2型虚拟化。

1型虚拟化:(直接安装在硬件上)
Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。 Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。
虚拟化技术
2型虚拟化:(安装在操作系统上)
物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。 Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。 KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。
虚拟化技术
理论上讲:
1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;
2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

容器位于前两者之上,以进程的形式存在于操作系统之中
容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间, 并且一个容器内的变动不会影响其他容器的运行环境。为了能达到这种效果,容器技术使用了一系列的系统级别的机制诸如利用Linux namespaces 来进行空间隔离,通过文件系统的 挂载点来决定容器可以访问哪些文件,通过 cgroups 来确定每个容器可以利用多少资源。此 外容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升