B站视频
一、虚拟化
定义:一种计算机资源管理技术,将各种IT实体资源抽象、转换成另一种形式的技术。
作用:将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可以运行不同操作系统,提高计算机工作效率。
云计算以虚拟化为核心技术。
- 虚拟化中的几个概念
- Guest OS:运行在虚拟机上的OS
- Guest Machine:虚拟出来的虚拟机
-
VMM(Virtual Machine Monitor):虚拟机监视器,即虚拟化层。相当于一个软件,安装就行。
提供转换抽象这个核心功能,调配物理机资源
- Host OS:运行在物理机上的OS
- Host Machine:物理机
- 虚拟化特点
1、 分区:指可在一台服务器上运行多台虚拟机。
2、 隔离:分区完后的所有虚拟机之间相互隔离,每个虚拟机就像一台单独的物理机。
优点:当前虚拟机中毒崩溃并不会影响该物理机上的其他虚拟机。
3、 封装:整个虚拟机运行条件封装在独立文件夹中,可通过移动文件夹方式迁移虚拟机。
4、 相对于硬件独立:软硬件解耦。不必考虑硬件设施,解决了硬件的不兼容性。
summary:操作系统与物理服务器分离;易迁扩展,资源易于整合,易于保护;物理硬件标准化;
二、虚拟化类型
- 寄居虚拟化
在宿主机操作系统上安装和运行虚拟化程序(虚拟化层安装在主机操作系统上面)。eg.在windows上装一个Ubuntu虚拟机。
- 特点
① 简单、易于实现。
① 安装和运行应用程序依赖于主机OS对设备的支持;
② 两层OS,管理开销、性能损耗大;
③ 虚拟机对各种物理设备(CPU、内存、硬盘等)的调用,通过虚拟化层和宿主机OS一起协调才能完成。
- 典型
Vmware Workstation、VirtualBox
- 裸金属虚拟化
直接将VMM安装在硬件设备上,VMM在这种模式下又叫Hypervisor,虚拟机有指令要执行时,Hypervisor会接管该指令,模拟相应操作。
- 特点
① 不依赖于主操作系统
② 支持多种操作系统多种应用(屏蔽了底部硬件的不兼容性)
① 依赖于虚拟层内核和服务器控制台进行管理
④ 需要对虚拟层内核进行开发(难度大)
- 典型
Vmware ESX、Xen、华为FusionSphere
- 混合虚拟化
在现有的正常的操作系统下安装插入一个内核模块,内核拥有虚拟化能力。(相当于寄居和裸金属的混合)
- 特点
① 相较于寄居虚拟化架构,性能高
② 相较于裸金属虚拟化架构,不需要开发内核
③ 可支持多种操作系统
① 需要底层硬件支持虚拟化扩展功能
- 典型
Redhat KVM
三、虚拟化层架构
虚拟层架构有:全虚拟化、半虚拟化、硬件辅助虚拟化。
- 全虚拟化
所抽象的VM具有完全的物理特性,虚拟化层负责捕获CPU指令,为指令访问硬件充当媒介。(<=>混合虚拟化)
eg. VMware、VirtualBox、Virtual PC、KVM-x86
- 特点
① Guest OS不需要修改(只需在Host OS中插入一个KVM模块)
② 功能和速度好,使用简单
③ 移植性好(只需移动内核)
① 效率不高
- 典型代表——KVM
基于Linux内核的虚拟化技术,可以直接将Linux内核转换为Hypervisor,从而使得Linux内核能够直接管理虚拟机,直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机。
组成:内核态KVM + 用户态QEMU
将内核模块(KVM+QEMU)插入宿主机,使得宿主机具有虚拟化功能。
KVM:提供CPU和内存虚拟化功能,以及一些核心安全的功能,并向这些功能提供一些接口。
QEMU:使用接口完成设备的模拟(eg. IO虚拟化模拟、网络虚拟化模拟等等)。
物理机进程:宿主机上运行的进程
虚拟机进程:虚拟出来的虚拟机中运行的进程
虚拟机进程只是物理机进程的一个线程。 eg. 上述windows虚拟机其实是一个物理机进程,其中的虚拟机进程是其的一个线程。
进程是由CPU产生的,因此才可以虚拟出来多台虚拟机。eg. 一个CPU最多可生成16个进程,则最多可虚拟出来16台虚拟机。
- 半虚拟化
起初为解决全虚拟化效率不高的问题。Hypervisor直接安装在物理机上,多个虚拟机在Hypervisor上运行。(全虚拟化不修改OS,直接插入;半虚拟化修改OS,将底层直接变成虚拟化层,因此效率高) <=> 裸金属虚拟化
eg. Xen、VMware ESXi、微软Hype-V
- 特点
① 架构精简,整体速度上有一定优势
① 修改开发OS,用户体验麻烦,难度大(每次升级都要修改开发一次,升级麻烦;全虚拟化升级简单)
- 典型代表——Xen
直接修改OS内核成一个轻量级Hypervisor,在里面运行了一个管理所有资源、做资源调度的Domain0。
组成:Xen Hypervisor(虚拟化层) + Domain0(管理主机) + DomainU(用户虚拟机)
用户态运行调用过程(通过Domain0进行控制和转发):
资源分配过程正好相反。
- 硬件辅助虚拟化
直接修改CPU使其支持虚拟化技术。只是辅助全虚拟化和半虚拟化。
- 全/半虚拟化架构的对比
summary:
1、 Xen平台架构侧重安全性:为保证安全性,各Domain之间对共享区域的访问和映射必须通过Hypervisor授权。
2、 KVM平台架构侧重性能:VM之间以及与Host Kernel之间对共享区域的访问和映射无需Hypervisor进行授权。使用Linux 裸金属内核,故整个访问路径较短,无性能损耗。
四、容器
利用1个开源应用容器引擎,让开发者可以打包他们的应用和依赖包到一个可移植镜像中,发布到任意Linux or Windows机器上实现虚拟化。实现app与OS解耦。
镜像是可执行的独立软件包,包含软件运行的内容(代码、运行环境、系统工具…)。容器就是将OS上层的应用进行隔离。
- 主流容器技术——Docker
Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。有了Docker就不用担心环境问题了。
将应用程序与该程序的依赖打包在一个文件里,运行这个文件就会生成一个虚拟容器,程序在这个虚拟容器中运行,就好像在真实物理机上运行一样。
核心:实现应用与运行环境整体打包以及打包格式的统一。
- 容器的组成
客户端(Docker Client):图形化界面,与客户交流;
守护进程(Docker Daemon):接收客户端消息,与底层交流;
镜像(Docker Image):创建Docker容器;
容器(Docker Container):镜像运行的示例;
仓库(Docker Registry):存放镜像文件。
- 容器的特点
本质上是一款轻量级的虚拟化技术。
① 用户需要高效运行环境,而非整个机器;
② 一次构建(build),到处运行;
③ 部署方便(创建速度秒级);
④ 隔离性好(相对于应用程序而非OS);
⑤ 成本低。
- 容器和虚拟化的区别
主要:容器不用打包OS,虚拟化需要
虚拟化 | 容器 |
---|---|
隔离性强,有独立的Guest OS | 共享内核和OS,隔离性弱 |
虚拟化性能差(>15%) | 计算/存储无损耗,无Guest OS内存开销(~200M) |
镜像庞大(10几G),实例化时不能共享 | 镜像200~300M,公共基础镜像实例化时可以共享 |
镜像缺乏统一标准 | Docker提供了容器应用镜像事实标准,OCI推动进一步标准化 |
创建慢(>2min) | 秒级创建,相当于建立索引 |
启动慢(>30s),读文件逐个加载 | 秒级启动(不含应用本身启动) |
资源虚拟化粒度低,单机10~100虚拟机 | 单机支持1000+容器,密度高,适合大规模部署 |
- 容器应用场景
1、提供一次性环境;
2、提供弹性云服务。随开随关、动态扩容缩容;
3、组建微服务架构。一台机器通过多个容器跑多个服务。文章来源:https://www.toymoban.com/news/detail-753318.html
summary:虚拟化实现底层硬件和OS解耦,容器实现app和OS解耦。
文章来源地址https://www.toymoban.com/news/detail-753318.html
到了这里,关于【云计算基础知识1】虚拟化与容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!