文章目录
- 1 介绍
- 1.1 简介
- 1.2 虚拟化工作原理
- 1.3 两大核心组件:QEMU、KVM
- QEMU
- KVM
- 1.4 发展历史
- 1.5 虚拟化类型
- 1.6 云计算与虚拟化
- 1.7 Hypervisor
- Hypervisor分为两大类
- 1.8 虚拟化 VS 容器
- 2 虚拟化应用
- docker
- docker 与虚拟机的区别
- K8S
- wine
- 参考
1 介绍
1.1 简介
虚拟化(技术)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。
1.2 虚拟化工作原理
1.3 两大核心组件:QEMU、KVM
QEMU
- QEMU是I/O控制的模块,可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。
- QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。
KVM
- 用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。
- 只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。
1.4 发展历史
1974年,两位计算机科学家Gerald Popek 和 Robert Goldberg发表了一篇重要的论文《虚拟化第三代体系结构的正式要求》,在这篇论文中提出了虚拟化的三个基本条件:
- 等价性:程序在本地计算机执行和在虚拟机中执行应该表现出一样的结果(不包括执行时间的差异)
- 安全性:虚拟机彼此隔离,与宿主计算机隔离
- 性能:绝大多数情况下虚拟机中的代码指令应该直接在物理CPU中执行,少部分特殊指令可由VMM参与。
1.5 虚拟化类型
全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
半虚拟化:需要修改操作系统
全虚拟化:【KVM】产品vmware—ce
半虚拟化:【EXSI】workststion vsphere
1.6 云计算与虚拟化
SaaS: Software-as-a-Service(软件即服务)
PaaS: Platform-as-a-Service(平台即服务)
IaaS: Infrastructure-as-a-Service(基础设施即服务)
1.7 Hypervisor
Hypervisor,汉译为“超级监督者”,也叫做VMM(Virtual Machine Monitor,虚拟机监视器),它是一类软件的统称。
Hypervisor分为两大类
- Type I: 直接凌驾于硬件之上,构建出多个隔离的操作系统环境
- Type II: 依赖于宿主操作系统,在其上构建出多个隔离的操作系统环境pp
像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。
1.8 虚拟化 VS 容器
2 虚拟化应用
docker
Docker是创建容器的工具,属于轻量级虚拟机。
Docker能够运行Windows实际上是通过QEMU完成的,Docker做的事情只是把QEMU的这个环境打包成一个独立的环境。
docker 与虚拟机的区别
不同点 | Docker容器 | 虚拟机 |
---|---|---|
启动速度 | 快(几秒) | 慢(几分钟) |
行性能 | 接近原生(直接在内核中运行) | 运行于Hypervisor上,50%左右损失 |
磁盘占用 | 小,设置几十kb(根据镜像层的情况) | 非常大(GB) |
并发性 | 一台宿主机可以启动成百上千个容器 | 最多几十个虚拟机 |
隔离性 | 进程级别 | 资源隔离、限制 |
操作系统 | 主要支持Linux | 主要支持Linux |
封装程度 | 打包项目代码和依赖关系,共享宿主机内核 | 完整的操作系统,与宿主机隔离 |
K8S
K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。
wine
Wine完成的目标是“在Linux系统上,运行Windows应用程序“。
Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。
参考
1、Docker:简单了解虚拟化和容器概念
2、看懂云计算、虚拟化和容器,这一篇就够啦!
3、虚拟化软件Docker、Wine、Qemu、KVM有什么区别?
4、懂了!VMware/KVM/Docker原来是这么回事儿
5、系统–车载系统
6、机器人开发–OS系统介绍
7、ubuntu虚拟机中使用QEMU搭建ARM64环境
8、Wine(ubuntu)