🖥️ 虚拟化技术与应用

复习提纲 + 150道题库 · 涵盖虚拟化原理/KVM/Docker/Kubernetes/云计算

← 返回 CloudOps Master
📋 复习提纲
📝 题库练习

第1章 · 虚拟化技术概述

1.1 虚拟化的定义与发展

虚拟化:将物理资源(CPU/内存/存储/网络)抽象为逻辑资源,实现一台物理机运行多个隔离环境
发展历程:IBM大型机(1960s) → x86虚拟化(VMware 1999) → 开源KVM/Xen → 容器化Docker(2013) → 编排K8s(2014)
虚拟化的意义:提高资源利用率、降低成本、快速部署、隔离安全、灾备恢复

1.2 虚拟化分类

按对象分:服务器虚拟化、桌面虚拟化、存储虚拟化、网络虚拟化、应用虚拟化
按实现方式分:全虚拟化(Full) — 完全模拟硬件,Guest OS不需修改(如VMware/KVM)
半虚拟化(Para) — Guest OS需修改内核以配合Hypervisor(如Xen早期)
操作系统级虚拟化(OS-level) — 共享内核,进程级隔离(如Docker/LXC)

1.3 Hypervisor

Type 1(裸金属):直接运行在硬件上 — VMware ESXi、Xen、Hyper-V
Type 2(宿主型):运行在操作系统上 — VMware Workstation、VirtualBox、KVM(特殊,内核模块但归Type1)
考点:KVM本质是Linux内核模块,利用Intel VT-x/AMD-V硬件辅助虚拟化。虽然运行在Linux上,但因直接使用硬件虚拟化扩展,通常归为Type 1。

第2章 · CPU/内存/IO虚拟化原理

2.1 CPU虚拟化

特权指令问题:x86 Ring0-Ring3,Guest OS运行在Ring1/3时无法执行Ring0特权指令
解决方案:①二进制翻译(BT) — 运行时替换特权指令(VMware早期)②半虚拟化 — 修改Guest内核替换特权调用(Xen)③硬件辅助 — Intel VT-x/AMD-V增加VMX root/non-root模式(KVM)
VMX模式:Root模式运行Hypervisor,Non-Root模式运行Guest。VM Entry进入Guest,VM Exit回到Hypervisor

2.2 内存虚拟化

地址翻译:GVA(Guest虚拟) → GPA(Guest物理) → HPA(Host物理),需要两级转换
影子页表(SPT):软件维护GVA→HPA的映射,开销大
EPT/NPT:Intel EPT / AMD NPT 硬件辅助,硬件自动完成两级翻译,性能好
内存气球(Balloon):通过Guest内部驱动主动释放内存给Hypervisor,实现内存超分

2.3 I/O虚拟化

模拟(Emulation):完全软件模拟设备,兼容性好但性能差
半虚拟化(Virtio):前端(Guest驱动)+后端(Host处理),性能接近物理设备
直通(Passthrough):Intel VT-d/SR-IOV,设备直接分配给VM,性能最好但不能共享
考点:Virtio是KVM中最常用的IO虚拟化方式,性能远优于纯模拟。SR-IOV可将一个物理网卡虚拟为多个VF(Virtual Function)分配给不同VM。

第3章 · KVM虚拟化

3.1 KVM架构

KVM = Linux内核模块(kvm.ko + kvm_intel.ko/kvm_amd.ko),将Linux变成Hypervisor
QEMU = 用户空间设备模拟器,负责模拟IO设备(磁盘/网卡/显卡等)
libvirt = 虚拟化管理API层,提供统一接口管理KVM/Xen/QEMU等
virsh = libvirt的命令行工具,管理虚拟机的创建/启动/关闭/迁移等

3.2 virsh常用命令

virsh list --all 列出所有VM | virsh start/shutdown/destroy vm 启动/关机/强制关闭
virsh console vm 连接控制台 | virsh define/undefine xml 定义/删除VM
virsh snapshot-create-as vm snap1 创建快照 | virsh migrate 热迁移

3.3 虚拟机磁盘

qcow2:KVM原生格式,支持快照/压缩/加密/增量备份,文件按需增长(稀疏分配)
raw:裸格式,性能最好但不支持快照,文件预先分配全部空间
qemu-img create -f qcow2 disk.qcow2 20G 创建虚拟磁盘
qemu-img convert -f raw -O qcow2 disk.raw disk.qcow2 格式转换
考点:生产环境推荐qcow2(灵活),性能要求极高场景用raw。虚拟机迁移需要共享存储或先复制磁盘文件。热迁移(Live Migration)可在VM运行中迁移到另一台宿主机。

第4章 · Docker容器技术

4.1 容器 vs 虚拟机

容器共享Host内核,秒级启动,MB级体积,进程级隔离
虚拟机有完整Guest OS,分钟级启动,GB级体积,系统级隔离
容器适合微服务/CI/CD,虚拟机适合强隔离/多OS场景

4.2 Docker核心概念

镜像(Image):只读模板,由多层(Layer)叠加。docker pull/build/images
容器(Container):镜像的运行实例,可读写。docker run/ps/stop/rm
仓库(Registry):存储分发镜像。Docker Hub / 私有仓库Harbor

4.3 Docker底层技术

Namespace:提供资源隔离 — PID/NET/MNT/UTS/IPC/USER 六种命名空间
Cgroup:提供资源限制 — 限制CPU/内存/IO/网络带宽的使用量
UnionFS:分层文件系统 — OverlayFS/AUFS,镜像层只读+容器层可写

4.4 Dockerfile

FROM 基础镜像 | RUN 执行命令 | COPY/ADD 复制文件 | CMD/ENTRYPOINT 启动命令
EXPOSE 声明端口 | WORKDIR 工作目录 | ENV 环境变量 | VOLUME 数据卷

4.5 Docker网络

bridge:默认模式,容器通过docker0网桥通信
host:共享宿主机网络栈,性能好但无隔离
none:无网络 | overlay:跨主机容器通信(Swarm/K8s)

4.6 Docker Compose

YAML文件定义多容器应用。docker-compose up -d 启动,down 停止
services 定义服务 | volumes 数据卷 | networks 网络 | depends_on 依赖
考点:Namespace管隔离,Cgroup管限制,两者结合实现容器化。ADD比COPY多了解压和URL功能。CMD可被docker run参数覆盖,ENTRYPOINT不容易被覆盖。

第5章 · Kubernetes容器编排

5.1 K8s架构

Master节点:kube-apiserver(API入口) + etcd(数据存储) + kube-scheduler(调度) + kube-controller-manager(控制器)
Node节点:kubelet(管理Pod) + kube-proxy(网络代理) + container-runtime(容器运行时)

5.2 核心对象

Pod:最小部署单元,一个或多个容器共享网络和存储
Deployment:管理Pod副本数、滚动更新、回滚
Service:为Pod提供稳定IP和DNS,负载均衡(ClusterIP/NodePort/LoadBalancer)
Namespace:资源逻辑隔离,多租户
ConfigMap/Secret:配置管理。ConfigMap存普通配置,Secret存敏感数据(base64)
DaemonSet:每个节点运行一个Pod(如日志收集Agent)
StatefulSet:有状态应用(如数据库),保证Pod名称和存储稳定

5.3 kubectl常用命令

kubectl get pods/svc/deploy/ns | kubectl apply -f x.yaml | kubectl delete
kubectl describe pod x | kubectl logs x | kubectl exec -it x -- sh
kubectl scale deploy x --replicas=5 | kubectl rollout undo deploy x

5.4 探针与调度

livenessProbe:检测存活,失败则重启容器
readinessProbe:检测就绪,失败则从Service移除(不转发流量)
调度策略:nodeSelector/nodeAffinity/podAffinity/Taints&Tolerations
考点:etcd存储集群所有状态。kubelet在Node上管理Pod生命周期。Service的ClusterIP仅集群内部,NodePort对外暴露(30000-32767),LoadBalancer需要云平台支持。

第6章 · 云计算基础

6.1 云服务模型

IaaS(基础设施即服务):提供虚拟机/网络/存储 — 阿里云ECS、AWS EC2
PaaS(平台即服务):提供运行时环境/数据库/中间件 — Heroku、GAE
SaaS(软件即服务):提供完整应用 — Gmail、Office 365、钉钉

6.2 部署模型

公有云:开放给所有用户(阿里云/AWS/Azure)
私有云:企业内部专用(OpenStack/VMware vSphere)
混合云:公有+私有结合,业务灵活分配

6.3 云原生

云原生 = 微服务 + 容器化 + DevOps + 持续交付
CNCF(云原生计算基金会)管理K8s等项目
考点:IaaS/PaaS/SaaS层级关系:IaaS最底层(管硬件),PaaS中间(管平台),SaaS最上层(管应用)。用户管理的范围从IaaS到SaaS逐渐减少。
总题数 0
已答 0
正确 0
错误 0
正确率 --%