虚拟化和云计算
2025/12/3大约 4 分钟
第12章 虚拟化和云计算
虚拟化技术概述
虚拟化是一种将物理资源抽象、转换、分割的技术,使多个逻辑实例能够在一套物理硬件上并行运行,每个实例都感觉自己独占一套完整的硬件资源。
虚拟化的类型
按虚拟化层次分类
- 硬件虚拟化:在硬件上直接运行虚拟机监控器
- 操作系统级虚拟化:在操作系统内核上创建多个隔离环境
- 应用级虚拟化:在应用层模拟不同操作系统环境
- 库级虚拟化:通过库重定向实现API级别虚拟化
按虚拟化技术分类
- 全虚拟化:虚拟机不知道自己在虚拟化环境中
- 准虚拟化:虚拟机知道虚拟化环境,配合修改Guest OS
- 硬件辅助虚拟化:利用CPU硬件特性支持虚拟化
虚拟机监控器(Hypervisor)
类型1:裸机型Hypervisor
- 直接在硬件上运行
- 代表:VMware ESX、Xen、Hyper-V
- 优点:性能好,安全性高
- 缺点:安装和维护复杂
类型2:宿主型Hypervisor
- 运行在宿主操作系统上
- 代表:VMware Workstation、VirtualBox、KVM
- 优点:安装使用简单
- 缺点:性能有开销
虚拟化核心技术
CPU虚拟化
- 特权指令处理:敏感指令通过二进制翻译或硬件辅助处理
- 异常处理:虚拟化异常和中断
- 上下文切换:虚拟机切换时的状态保存和恢复
内存虚拟化
- 虚拟内存映射:Guest虚拟地址到Host物理地址的两级转换
- 影子页表:Hypervisor维护的映射表
- 直接页表映射:Intel EPT/AMD RVI硬件支持
I/O虚拟化
- 设备模拟:完全模拟物理设备
- 半虚拟化:使用特殊驱动程序
- 直接I/O:虚拟机直接访问物理设备
- SR-IOV:单根I/O虚拟化技术
容器技术
容器vs虚拟机
- 容器:
- 共享主机操作系统内核
- 启动快,资源开销小
- 隔离性相对较弱
- 虚拟机:
- 虚拟化整个硬件栈
- 启动慢,资源开销大
- 隔离性强
Docker容器技术
- 镜像:应用及其依赖的打包
- 容器:镜像的运行实例
- Dockerfile:构建镜像的配置文件
- Registry:镜像存储和分发服务
Kubernetes容器编排
- Pod:最小部署单元
- Service:服务抽象层
- Deployment:应用部署管理
- ConfigMap:配置管理
云计算
云计算服务模型
- IaaS(基础设施即服务):
- 提供虚拟化计算资源
- 代表:AWS EC2、阿里云ECS
- PaaS(平台即服务):
- 提供开发和部署平台
- 代表:Google App Engine、Heroku
- SaaS(软件即服务):
- 提供应用软件服务
- 代表:Google Workspace、Office 365
云计算部署模型
- 公有云:第三方提供商运营的云服务
- 私有云:企业自建的云环境
- 混合云:公有云和私有云的结合
- 多云:使用多个不同的云服务提供商
云计算关键技术
- 虚拟化:资源抽象和隔离
- 弹性伸缩:根据负载动态调整资源
- 负载均衡:分发请求到多个计算节点
- 自动化运维:自动化部署、监控、故障处理
虚拟化性能优化
性能开销来源
- 指令执行开销:特权指令虚拟化
- 内存访问开销:两级地址转换
- I/O访问开销:设备模拟和虚拟化
- 缓存开销:缓存污染和失效
优化策略
- Intel VT-x/AMD-V:硬件辅助虚拟化
- VT-d/IOMMU:设备直通技术
- NUMA优化:NUMA感知的内存分配
- SR-IOV:单根I/O虚拟化
云原生技术
微服务架构
- 服务拆分:单体应用拆分为多个独立服务
- API网关:统一入口和服务路由
- 服务发现:动态服务注册和发现
- 分布式事务:跨服务的事务一致性
DevOps实践
- CI/CD:持续集成和持续部署
- 基础设施即代码:使用代码管理基础设施
- 监控告警:全链路监控和问题追踪
- 容器化部署:标准化部署流程
可观测性
- 日志:应用行为记录
- 指标:性能数据监控
- 链路追踪:请求链路分析
- 健康检查:服务状态监控
虚拟化安全
安全威胁
- 侧信道攻击:通过共享资源泄露信息
- 虚拟机逃逸:从虚拟机攻击宿主机
- 资源耗尽:恶意占用系统资源
- 数据泄露:虚拟化环境中的数据安全问题
安全防护
- 隔离增强:更强的资源隔离
- 加密虚拟化:保护虚拟机数据和通信
- 安全启动:确保虚拟机可信启动
- 审计日志:记录和监控虚拟化操作