ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

虚拟化与 KVM 实战:拆解云计算底层基石

虚拟化与 KVM 实战:拆解云计算底层基石

虚拟化与 KVM 实战:拆解云计算底层基石

摘要:我们日常使用的公有云 ECS、私有云平台,底层核心都离不开虚拟化技术。很多初学云计算的同学,容易混淆存储架构、虚拟化类型、KVM/QEMU/Libvirt 组件关系。本文结合 PDF 文档资料,跳过传统 IT 历史背景,直接从存储体系、虚拟化原理、KVM 完整实操带你吃透底层技术,适合运维、云计算入门阅读。

前言

现在不管是公有云厂商阿里云、华为云,还是企业内部搭建私有云,虚拟化都是整个云计算的底层地基。很多人会使用云主机,但并不清楚虚拟机到底如何实现、块存储 / 文件存储区别、KVM 整套组件如何协同工作。

本文基于学习文档,聚焦存储架构、虚拟化原理、KVM 完整实操,包含理论概念 + 可复制的生产级命令,帮助大家建立完整的虚拟化知识体系。

一、企业存储架构完整演进

存储是虚拟化与云计算不可分割的一部分,从早期直连存储发展到现代 SAN、NAS,不同架构适用不同业务场景。

1. DAS 直连附加存储

DAS (Direct Attached Storage) 直连存储,是最早出现的存储架构,诞生于 70 年代。

  • 连接方式:SCSI、SAS、FC 线缆,磁盘阵列直接物理连接到一台服务器。
  • 特点:架构简单;但是存储设备只能被一台服务器使用,无法多服务器共享存储。
  • 缺点:硬盘容易成为性能瓶颈;硬盘槽位有限,容量扩展困难;数据分散,维护麻烦。

适用场景:早期小型业务,现在企业生产环境很少大规模使用 DAS。

2. NAS 网络附加存储

NAS(Network Attached Storage)网络附加存储,90 年代随局域网发展诞生。

  • NAS 是文件级存储,存储设备接入局域网,自带独立文件系统。
  • 协议:Linux/Unix 客户端使用NFS 协议;Windows 客户端使用CIFS 协议。
  • 核心优势:多台服务器可以同时挂载访问同一套存储,实现文件共享。
  • 典型用途:文件服务器、文档共享、素材存储。

3. SAN 存储区域网络

SAN 是专用高速存储网络,提供块存储,服务器识别 SAN 提供的资源如同本地物理硬盘。SAN 分为两大技术路线 FC‑SAN、IP‑SAN。

FC‑SAN
  • 使用 FC 光纤链路,依赖专用FC 光纤交换机。
  • 存储划分 LUN 提供给前端服务器使用,支持快照、容灾等高阶特性。
  • 优点:性能高、延迟低;缺点:硬件成本昂贵,FC 交换机、光纤模块价格高。
IP‑SAN(iSCSI)

2001 年出现,为了解决 FC‑SAN 成本高昂的痛点。

  • 复用现有以太网基础设施,使用普通以太网交换机、网线,基于 IP 网络传输 SCSI 指令。
  • 同样把存储划分为 LUN 给服务器使用,同样支持快照、容灾。
  • 优势:复用现有 IP 网络,学习、运维成本低,是现在中小企业主流块存储方案。

✨ 快速记忆区分 NAS:给你「共享文件夹」,文件级别访问,适合文件共享; SAN:给你「一块虚拟硬盘」,块级别访问,适合数据库业务。

4. 集中式存储与分布式存储

  1. 集中式存储:整套存储硬件集中在一套设备,分为 SAN、NAS 架构。部署简单,市面上华为 OceanStor、HPE 企业存储都属于集中式存储。
  2. 分布式存储:本世纪兴起,多台普通服务器组成存储集群,横向无限扩展,代表 Ceph,云环境广泛使用。

硬盘关键性能指标

不管什么存储架构,硬盘硬件指标决定整体性能:

  1. 容量:磁盘可存储数据大小;
  2. 转速:机械硬盘 HDD 指标,转速越高读写越快,SAS 硬盘常见 10K、15000 转;
  3. 带宽:针对大文件连续读写;
  4. IOPS:每秒 IO 操作次数,针对小文件随机读写,SSD 固态硬盘 IOPS 远高于机械硬盘。

硬盘分类:

  • SATA 盘:多用于桌面、归档存储;
  • SAS 盘:企业服务器机械硬盘;
  • SSD 固态硬盘:高性能,高 IOPS 业务首选。

二、虚拟化核心技术原理

虚拟化定义:将物理硬件资源做抽象,把硬件资源逻辑表示,实现资源池化,上层操作系统和底层硬件解耦。

基础名词释义

  • Host Machine:物理服务器
  • Host OS:物理机操作系统
  • Guest Machine:虚拟机实例
  • Guest OS:虚拟机内部运行的操作系统
  • Hypervisor (VMM 虚拟机监控器):虚拟化中间层,管理、调度硬件资源,隔离多台虚拟机。主流产品 KVM、Xen、VMware ESXi、Hyper‑V。

虚拟化四大核心特性

  1. 分区:单台物理服务器,划分出多份资源,同时运行多台虚拟机,虚拟机可以跑不同操作系统(Windows、CentOS、Ubuntu),充分利用硬件资源。
  2. 隔离:虚拟机之间互相隔离。一台虚拟机系统崩溃、中毒,不会影响同一物理机其他虚拟机;同时可以做资源限额,防止某一台虚拟机耗尽 CPU 内存。
  3. 封装:虚拟机的 BIOS、CPU、内存、磁盘全部状态封装成一组文件。复制这组文件,即可完成虚拟机复制、迁移。
  4. 硬件无关性:虚拟机不绑定物理服务器硬件,虚拟机镜像不需要修改,就可以在不同 x86 物理主机运行。

三种虚拟化实现方式

x86 架构 CPU 设计之初并不适合虚拟化,存在 19 条敏感非特权指令,后续发展出 3 套虚拟化实现方案:

  1. 全虚拟化(二进制翻译 BT)VMM 捕获敏感指令,二进制翻译模拟执行;Guest 操作系统不需要做任何修改,兼容性极强。缺点:二进制翻译带来 CPU 性能开销。
  2. 半虚拟化(Para‑Virtualization)修改虚拟机 Guest OS 内核,增加专门和 Hypervisor 交互的 Hypercall 调用。
  • 优点:性能非常接近物理裸机;
  • 缺点:必须修改虚拟机操作系统内核,兼容性差,无法直接运行普通 Windows 等闭源系统。
  1. 硬件辅助虚拟化(工业界现在主流)CPU 芯片增加虚拟化扩展指令集:Intel VT‑X、AMD AMD‑V。 硬件层面完成指令捕获,不再需要软件翻译;不需要修改 Guest OS,同时获得接近物理机的性能。现在 KVM、VMware 全部默认开启硬件辅助虚拟化。

CPU Ring0‑Ring3 保护环

x86 CPU 分为 4 个权限环 Ring0~Ring3

  • Ring0:最高权限,可以直接操作硬件,操作系统内核运行在此;
  • Ring3:最低权限,普通应用程序运行在这里。

早期 x86 虚拟化难题:部分敏感指令属于非特权指令,运行在 Ring3,VMM 无法捕获,引发异常。硬件辅助虚拟化引入 VMX 根模式 / 非根模式,解决该历史问题。

KVM、QEMU、Libvirt 三者关系(重中之重)

很多初学者容易混淆三者,三者分工明确,组合起来构成完整虚拟化方案。

  1. KVM

    :全称 Kernel‑based Virtual Machine,基于内核虚拟机。是 Linux 内核内置模块

    kvm.ko

    ,2007 合并进入 Linux 主线内核。

    • 只负责CPU 虚拟化、内存虚拟化;
    • KVM 视角:每一台虚拟机本质就是 Linux 普通进程,由内核调度。
    • KVM 本身不做任何 IO 设备模拟。
  2. QEMU:用户空间开源模拟器。专门模拟 IO 设备:网卡、硬盘、显卡、USB 控制器等外设。

协作逻辑:KVM 负责 CPU 内存;QEMU 负责 IO 设备模拟,二者组合实现完整虚拟机。

  1. Libvirt:不是虚拟化,它是一套管理抽象 API 库。 Libvirt 屏蔽底层差异,可以统一管理 KVM、Xen、VMware 等多种 Hypervisor。 基于 libvirt 衍生出全套运维工具:
  • virsh:功能最全命令行管理工具,适合脚本自动化、无图形服务器;
  • virt‑manager:图形 GUI 管理界面;
  • virt‑install:命令行创建虚拟机;
  • virt‑viewer:轻量虚拟机控制台,只负责显示虚拟机画面;
  • 配套工具:virt‑clone克隆虚拟机,virt‑xml修改配置。

libvirt 中概念: Node:物理主机节点;Hypervisor 虚拟化层;Domain:就是虚拟机实例。

三、KVM 完整实操指南

环境说明:Linux 操作系统,已经安装 kvm、qemu、libvirt 组件。两种操作模式:图形 virt‑manager、命令行 virsh。

方式 1:图形界面 virt‑manager

  1. 启动图形界面
virt‑manager
  1. 准备 ISO 镜像:在服务器创建目录存放镜像,例mkdir /iso,通过 SFTP 把操作系统镜像上传到此目录。
  2. 新建虚拟机流程: 选择本地 ISO 介质 → 指定 ISO 镜像路径 → 分配内存、vCPU → 创建 qcow2 虚拟磁盘 → 设置虚拟机名称,完成创建。

Windows7 安装小技巧:系统安装界面按shift+F10调出 CMD,执行lusrmgr.msc,取消 Administrator 账户禁用;打开任务管理器结束msoobe进程,跳过新建普通用户步骤。

  1. 快照:虚拟机关机状态,图形界面可以创建快照,用于故障回滚。

默认存储池 default 路径:/var/lib/libvirt/images,存放 qcow2 虚拟机磁盘镜像。qcow2 属于稀疏格式,虚拟磁盘大小和实际占用宿主机磁盘空间不一致。

方式 2:virsh 核心命令行(生产环境高频)

# 查看运行中虚拟机virshlist# 查看全部虚拟机,包含关机状态virshlist--allvirshstart vmname# 启动虚拟机virshshutdownvmname# 优雅关机(优先使用,给系统时间保存数据)virshdestroy vmname# 强制断电,相当于拔电源,故障应急使用virshrebootvmname# 重启虚拟机virshsuspendvmname# 挂起虚拟机,内存写入磁盘virshresume vmname# 恢复挂起虚拟机virshautostart vmname# 设置虚拟机宿主机开机自启virshautostart--disablevmname# 关闭开机自启virshdumpxml vmname# 输出虚拟机完整XML配置virshedit vmname# 编辑虚拟机xml配置文件# 快照全套命令virshsnapshot‑create‑as vmname--namesnap01# 创建快照,自定义快照名virshsnapshot‑list vmname# 列出该虚拟机全部快照virshsnapshot‑revert vmname--snapshotnamesnap01# 回滚快照virshsnapshot‑delete vmname--snapshotnamesnap01# 删除快照

qemu‑img 磁盘管理工具

qcow2 磁盘格式管理工具,关机状态操作磁盘镜像。

# 创建qcow2磁盘镜像qemu‑img create-fqcow2 /disk/test.qcow2 20G# 查看磁盘镜像详细信息qemu‑img info /disk/test.qcow2

virt‑install 命令行无图形创建虚拟机

服务器没有图形界面,使用virt‑install直接命令行部署虚拟机,同时支持 VNC 远程访问安装界面。

# 创建磁盘qemu-img create-fqcow2 /disk/vm3.qcow2 20G# 创建虚拟机,开启VNC远程访问virt-install--namevm3--memory2048--vcpus1\--diskpath=/disk/vm3.qcow2\--location/iso/CentOS-7-x86_64-Minimal-1810.iso\--networknetwork=default\--vnc--vnclisten=0.0.0.0--vncport=5903--noautoconsole

参数解释:

  • --vnc --vnclisten=0.0.0.0 --vncport=5903:开启 VNC,允许外部访问,端口 5903;
  • --noautoconsole:宿主机本地不自动弹出控制台。

外部 PC 使用 VNC Viewer,连接宿主机IP:5903,就可以打开虚拟机安装界面。

四、补充拓展知识点

1. 服务器硬件基础

服务器硬件形态分为塔式、机架、刀片服务器。

  • 机架服务器单位:1U=1.75英寸=44.45mm;
  • 机房常见机柜 42U(约 1.87 米)、47U 机柜; 国内主流服务器厂商:浪潮、华为、超聚变、联想、H3C 新华三、中科曙光。

2. IPMI、BIOS 基础概念

  • IPMI:智能平台管理接口,通过 BMC 基板管理控制器,可以不依赖操作系统,远程管理服务器硬件,开关机、查看硬件状态。
  • BIOS:基本输入输出系统;负责硬件检测初始化、引导操作系统。不同品牌服务器、主板进入 BIOS 热键不同。

3. 网络设备基础概念

  • 交换机(二层):终端接入,做帧交换;同一个交换机属于同一个广播域。
  • 路由器(三层):连接不同网段,隔离广播域,做 IP 报文转发,维护路由表。
  • 光猫:光信号转电信号;
  • 防火墙:隔离不同安全级别网络,访问控制、NAT、VPN;
  • 无线 AP:胖 AP 独立工作;瘦 AP+AC 控制器架构,适合大规模无线网络部署。

小提示:快照≠完整备份!快照依赖原始磁盘镜像,适合测试环境快速回滚;生产业务数据需要独立完整备份。

写在最后

虚拟化是打开云计算大门的钥匙。KVM 作为开源虚拟化标杆,大量云平台 OpenStack 底层都基于 KVM。 记住分层逻辑:物理硬件 → KVM 内核模块(CPU 内存虚拟化) → QEMU 模拟 IO 外设 → libvirt 工具层提供运维能力。

存储上分清块存储 SAN 与文件存储 NAS,理解 FC‑SAN 与 IP‑SAN 的取舍。掌握 virsh 日常命令,就可以完成 KVM 虚拟机大部分运维工作。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进