虚拟化详解
虚拟化
1、虚拟化发展过程
第一个阶段:物理服务器
一台业务独占一台物理服务器,一个项目买一个物理机,硬件整机单独跑一个系统,业务
存在的痛点:
-
资源浪费及其的严重,服务器的cpu,内存,利用率只有5%~15%,大部分的性能空闲
-
部署慢,采购硬件,上架,布线,装系统,几天甚至几周
-
无法弹性扩容,高峰期只能重新购买机器,不能临时扩容
因此虚拟化技术诞生了
第二个阶段:服务器虚拟化(vmware,kvm时代)
为了解决物理机的资源浪费
核心思想:一台物理机,通过hypervisor虚拟化层,切分成多台虚拟机,每台虚拟机独立系统,独立隔离,互不影响,共享一台物理硬件
带来的好处
-
一台物理机跑十几台虚拟机,硬件资源利用率从10%提升到了60%~80%
-
不需要频繁的购买物理机,省钱,省机房空间,省电
-
虚拟机快速克隆,快照,迁移,几分钟就能新建一台服务器
-
隔离性好,一个虚拟机崩了,不影响其他
局限性
-
虚拟化只是单机资源盘活,只能管理本地几台物理机
-
没法大规模的,统一调度,按需自助使用,于是云计算的出现了
第三阶段:云计算(虚拟化规模化,服务化)
为什么会出现?
虚拟化只是单机小打小闹,企业想要的:
-
不用自己管硬件
-
随时开,随时关,想用多少付多少钱
-
成千上万台机器统一管理,自动调度
本质:云计算=虚拟化技术 + 大规模的集群 + 自动化调度 + 网络存储整合 + 按需计费
将成千上万台物理服务器,虚拟化资源,整合成一个超级大的资源池
用户按需领用,云主机,云磁盘,云网络,数据库,阿里云这样的
核心特点
-
资源池化,所有的cpu,内存,磁盘都汇成一个大池子
-
弹性伸缩,业务涨了自动加机器,低估的话,自动的减
-
按需付费,用多少付多少
-
自助服务,网页点一下就能创建虚拟机,不用运维人工干预
局限
虚拟机还是太重了
-
每台虚拟机都要装完整的操作系统
-
启动慢,占用的资源大,打包迁移比较的慢,开机要几分钟等等
-
开发环境和生产环境经常不一样,容器化诞生
第四阶段:容器化技术(docker + k8s)
为什么会出现了?
虚拟机太重了,启动慢,环境不一致,交付慢
核心思想:容器共享主机内核,不用每台装完整的操作系统,只打包:应用+依赖库+配置,秒级启动
和虚拟机的最大区别:
-
虚拟机:硬件级虚拟,每台独立内核,笨重,隔离强
-
容器:操作系统级虚拟化,共享内核,轻量级,启动快,交付一致
带来的价值
-
秒级启动,虚拟机分钟级别
-
占用资源极低,一台机器能够跑几百个容器
-
一次打包,多次运行,开发,测试,生产环境一致
-
配合k8s实现自动编排,自愈,扩容
总结
-
物理服务器:一台业务一台机 → 资源极度浪费
-
虚拟化:一台物理机切多台虚拟机 → 盘活硬件、提高利用率
-
云计算:虚拟化集群化 + 自动化 → 资源池化、按需弹性、免管硬件
-
容器化:解决虚拟机笨重、环境不一致 → 轻量、快速、标准化交付,进入云原生时代
2、虚拟化的几个概念

Host 宿主机,真实的物理机,真实的操作系统,承载虚拟机的底层机器
Guest 虚拟机, 跑在虚拟化软件里的系统,安装的linux,windows虚拟机
Hypervisor 虚拟机监控程序,虚拟化层的核心,负责接管硬件,创建管理虚拟机,负责虚拟机的生命周期
Hypervisor 2种类型

裸金属,华为的FC,将cna.iso直接安装在物理服务器上,就可以直接创建虚拟机了,这种就是hypervisor就是直接安装在操作系统上面的
宿主型 就是hypervisor装在操作系统的上层,而不是同一个层级,代表就是vmware workstation 就是直接安装在操作系统上面,然后在这个软件里面创建虚拟机,virtual box也属于这种
3、虚拟化的分类
1、完全虚拟化(基于软件的完全虚拟化)
-
用软件完整的模拟一套硬件(cpu,主板,磁盘,网卡,内存) ,不需要改虚拟机的系统,可以随便装linux,windows系统都可以
-
虚拟机不知道自己是虚拟机,以为自己跑在真实的物理机上
-
在vmwaere上安装了一个windows系统,在这个系统上,创建文件,写内容,会有一个空间分配,vmware 会欺骗这个系统,捕获这个分配内存空间的请求,然后发送给宿主机,说可以分配的,然后vmware就告诉这个里面的虚拟机,还是一个连续的分配的空间的地址
-
上面就是基于软件的完全虚拟化,但是会给这个处理器额外的开销,来回的翻译,传递这些
-
虚拟机申请的磁盘,其实就是虚拟化出来的
-
vmware work station 这个软件就可以实现完全虚拟化,就是一个二进制翻译技术
2、半虚拟化
- 就需要修改虚拟机的内核,用装专门的虚拟化驱动,虚拟机知道自己是虚拟机,直接和虚拟化层通信,性能更高

3、硬件辅助虚拟化
-
基于cpu的,依赖cpu intel VT-x/AMD-V 硬件指令集,cpu硬件帮着做隔离,地址翻译,特权指令截获,替代纯软件模拟,性能接近物理机
-
kvm是基于linux 内核的硬件辅助完全虚拟化
-
kvm强依赖 intel VT-x/ AMD-V ,没有cpu硬件虚拟化就不能用kvm
-
vmware软件完全虚拟机,xen半虚拟化现在都依赖硬件辅助虚拟化,vmware因为有cpu硬件辅助虚拟化支持,性能会非常的好

浙公网安备 33010602011771号