FEATURED · 精选文章

KVM虚拟化实战指南:从硬件切换器到虚拟机全流程配置

发布时间 / 2026/9/7 17:58:48
来源 / 创域科博编辑部
栏目 / 资讯中心
KVM虚拟化实战指南:从硬件切换器到虚拟机全流程配置 最近在社群里被问得最多的技术词绕不开“KVM”。有的人问“通过KVM给服务器做系统到底怎么操作”有的人问“KVM 的 guest OS 是用来做什么的”还有人卡在“KVM 内外剪贴板互通”“KVM 链接服务器全屏无法缩小”这些细节上。同一个词问出来却往往指向两种完全不同的东西一种是数据中心里的硬件切换器另一种是 Linux 内核级的虚拟化方案。这篇文章就把这两条线都讲清楚并以虚拟化 KVM 为主线带你把环境搭建、系统安装、剪贴板互通、UEFI 引导、全屏显示这些高频问题完整过一遍。不管你是第一次听说 KVM 的新手还是已经上手但总被某个细节卡住的老开发这份笔记都值得收藏备用。1. 背景与核心概念先分清两种 KVMKVM 这个缩写非常容易引起误会因为它在 IT 领域同时指代两种东西硬件层的 KVM 切换器Keyboard键盘、Video显示器、Mouse鼠标三个英文单词的首字母。它是一台物理设备让运维人员用一套键鼠显示器控制多台服务器。虚拟化层的 KVMKernel-based Virtual Machine 的缩写即基于内核的虚拟机。它是 Linux 内核自带的开源虚拟化模块可以把一台物理机拆成多台虚拟机。先理解这个差异后续看到“KVM 登录密码”“KVM 切换器”这类问题就不会和虚拟化概念混在一起了。1.1 KVM 硬件切换器是什么KVM 切换器通常出现在机房或服务器机柜里。服务器一般放在机架上如果每台服务器都配一套键盘、鼠标、显示器机房里会堆满线缆操作起来也非常麻烦。KVM 切换器解决的就是这个问题它把多台服务器的视频信号、键盘鼠标信号集中到一个控制端按一下按钮或者通过 OSD 菜单就能在不同服务器之间切换操作。更高级一点的叫 KVM over IP也就是通过 IP 网络远程控制服务器的键盘、鼠标和屏幕机房运维人员不需要站在机器前面在办公室通过网络就能给服务器装系统、改 BIOS、排查启动故障。“通过 KVM 给服务器做系统”这个热搜词很多时候指的就是这种场景。类型全称作用常见品牌本地 KVM 切换器Keyboard Video Mouse用一套键鼠显示器控制多台本地服务器ATEN、D-Link、Reton远程 KVMKVM over IP通过网络远程控制服务器的键盘鼠标和屏幕ATEN、Raritan、Avocent这类设备有独立的登录界面和账号体系所以网上会有人问“ATEN KVM 登录密码是什么”。不同型号的默认密码并不统一而且很多机房设备在上线前已经被管理员修改过默认密码指望一个“万能默认密码”走天下是不现实的后面排错章节会专门说这个问题。1.2 KVM 虚拟化是什么KVM 虚拟化则是另一条完全不同的技术线。它是 Linux 内核提供的一个虚拟化模块从 Linux 2.6.20 开始被合入内核主线。KVM 模块加载后Linux 内核本身相当于一个 Hypervisor虚拟机监控器可以把 CPU、内存、磁盘等物理资源虚拟化供多台虚拟机同时使用。KVM 本身只负责 CPU 虚拟化和内存虚拟化完整的虚拟机还需要 QEMU 来模拟网卡、磁盘、USB 等设备所以平时我们说的“KVM 虚拟化”通常指的是 KVM QEMU 的组合。管理工具上既可以用命令行工具virsh、virt-install也可以用图形化工具virt-manager。生产环境中还会搭配 Libvirt 这个 API 层来做统一管理。KVM 之所以受欢迎核心优势有几点它是 Linux 内核原生模块不需要额外安装独立的 Hypervisor 系统。开源免费商业支持也很完善。性能接近物理机因为虚拟机直接使用硬件虚拟化扩展。生态成熟OpenStack、Proxmox VE 等云平台底层都大量使用 KVM。1.3 guest OS 到底是什么搜“KVM 的 guest OS 是用来做什么的”其实是在问虚拟化里的“客户机操作系统”概念。在 KVM 虚拟化架构里host宿主机物理安装并运行 KVM 模块的 Linux 系统。guest客户机或 guest OS运行在虚拟机里的操作系统。guest OS 可以是 CentOS、Ubuntu、Windows、Debian 等任何一种受支持的系统。guest OS 和其他普通操作系统一样跑自己的内核、起自己的服务但它感知不到自己是被虚拟化出来的也不会直接操作物理硬件。它发出的指令由 KVM 和 QEMU 转发、翻译最终落到物理 CPU、内存和存储上。也就是说guest OS 就是你在虚拟机里安装的那个系统它和宿主机上的 OS 是隔离的彼此互不影响。宿主机崩溃未必会立刻影响 guest OS 的运行guest OS 中毒或者崩溃宿主机和其他虚拟机也可以保持正常。1.4 两种 KVM 的常见混淆场景很多人搜索“KVM”其实是带着具体问题来的搜“通过 KVM 给服务器做系统”可能是用硬件 KVM 切换器给物理机做系统也可能是用虚拟化 KVM 新建一个虚拟机来装系统。搜“KVM 内外剪贴板互通”一定是虚拟化场景。VMware 里的“无缝复制粘贴”在 KVM 虚拟机里也可以实现。搜“KVM 链接服务器全屏无法缩小”既可能指 virt-manager 里虚拟机窗口分辨率适配问题也可能指 KVM over IP 远程控制台全屏后无法缩放。搜“KVM UEFI 固件下载”指的是虚拟化 KVM 引导虚拟机时需要的 OVMF 固件。所以遇到问题先确定自己用的是哪一种 KVM排查方向才不会跑偏。接下来文章的主体内容将围绕虚拟化 KVM 展开在对应位置补充硬件 KVM 的注意事项。2. 环境准备搭建 KVM 虚拟化基础环境要亲手实践先准备一台带虚拟化能力的 Linux 服务器。版本需要根据你的项目实际情况调整本文以常见的 CentOS Stream / Rocky Linux 环境为例重点演示配置思路Ubuntu/Debian 的包管理器对应替换即可。2.1 硬件要求KVM 依赖 CPU 的硬件虚拟化扩展Intel CPU 需要支持 VT-x。AMD CPU 需要支持 SVMAMD-V。绝大多数服务器 CPU 都支持但部分云主机、低功耗小主机可能没有开放嵌套虚拟化需要在 BIOS 或者云厂商控制台里确认。内存方面宿主机至少预留 4GB 以上给系统本身使用再根据你要运行的 guest OS 分配内存。磁盘建议使用独立分区或逻辑卷方便后续快照和扩容。2.2 检查 CPU 虚拟化支持在宿主机上执行以下命令确认 CPU 虚拟化是否可用grep -E (vmx|svm) /proc/cpuinfo如果输出中包含vmx说明是 Intel CPU 且已开启 VT-x如果包含svm说明是 AMD CPU 且已开启 SVM。没有任何输出说明虚拟化功能未开启或 CPU 不支持。更直观的方式是使用virsh检查安装后执行virsh check也可以查看/dev/kvm设备是否存在ls -l /dev/kvm如果看到crw-rw-rw-或者其他读写权限的/dev/kvm说明 KVM 模块已经可以工作。2.3 安装 KVM 及管理工具在 Rocky Linux / CentOS Stream 上安装 KVM、QEMU 和相关管理工具dnf install -y qemu-kvm libvirt virt-install virt-manager bridge-utils在 Ubuntu / Debian 上对应安装apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst virt-manager bridge-utils安装完成后启动 libvirtd 服务并设置为开机自启systemctl enable --now libvirtd检查运行状态systemctl status libvirtd看到active (running)说明服务正常。如果本机默认用户是普通用户执行virsh list --all提示连不上 libvirt可以把用户加入libvirt用户组重新登录再试usermod -aG libvirt username2.4 验证虚拟化环境创建第一台测试虚拟机前可以先检查网络的默认状态virsh net-list --allKVM 安装后默认会创建一个default虚拟网络NAT 模式对外通信。如果没有 active启动它virsh net-start default virsh net-autostart default至此环境准备完成。接下来进入最核心的部分用它给服务器“做系统”。3. 核心操作通过 KVM 给服务器做系统新建 KVM 虚拟机并安装操作系统本质上有两条路径图形化工具virt-manager适合学习和临时调试命令行工具virt-install适合脚本化和批量部署。3.1 图形化方式 virt-manager 创建虚拟机如果宿主机桌面环境或 SSH X11 转发可用可以直接启动virt-managervirt-manager在图形界面中点击“新建虚拟机”选择本地 ISO 镜像或者网络安装源然后按向导设置内存、CPU 和磁盘即可。这种方式胜在直观创建虚拟机过程中的每一步都有可见确认适合新手第一次熟悉 KVM 的虚拟机创建流程。但生产环境通常没有图形界面更多时候依赖命令行工具。3.2 命令行方式 virt-install 创建虚拟机假设你已经有一个 Linux 发行版的 ISO 镜像放在 /data/iso 目录下下面这个命令创建一个名为centos-test的虚拟机分配 2 核 CPU、4GB 内存、50GB 磁盘virt-install \ --name centos-test \ --memory 4096 \ --vcpus 2 \ --disk path/data/kvm/centos-test.qcow2,size50,formatqcow2 \ --cdrom /data/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso \ --os-variant centos-stream9 \ --network networkdefault \ --graphics vnc,listen0.0.0.0 \ --noautoconsole参数说明--name虚拟机名称后续管理都会使用这个名字。--memory分配给虚拟机的内存单位 MB。--vcpus虚拟 CPU 数量。--disk磁盘路径、大小和镜像格式推荐使用 qcow2支持快照和按需分配空间。--cdrom挂载的安装 ISO。--os-variant操作系统类型它会自动优化默认配置。--network网络模型default是前面启动的 NAT 网络。--graphics vnc开放 VNC 远程显示方便接显示器画面。--noautoconsole创建后不自动打开控制台。如果不知道--os-variant应该填什么可以用osinfo-query os查询支持的系统列表osinfo-query os | grep centos3.3 UEFI 固件下载与启用默认安装虚拟机时KVM 模拟的是传统 BIOS 引导。如果要安装 Windows 11或者某些只支持 UEFI 引导的操作系统需要给虚拟机指定 UEFI 固件。这个“UEFI 固件”在 KVM 中通常就是 OVMFOpen Virtual Machine Firmware。它在包管理器里就能安装dnf install -y edk2-ovmfUbuntu / Debian 安装apt install -y ovmf安装完成后查看固件路径find /usr/share -name OVMF_CODE.fd 2/dev/null典型路径如下/usr/share/OVMF/OVMF_CODE.fd/usr/share/edk2/ovmf/OVMF_CODE.fd使用 virt-install 创建 UEFI 虚拟机时加上--boot参数virt-install \ --name windows11-test \ --memory 8192 \ --vcpus 4 \ --disk path/data/kvm/windows11-test.qcow2,size100,formatqcow2 \ --cdrom /data/iso/Win11.iso \ --os-variant win11 \ --network networkdefault \ --boot uefi \ --graphics spice \ --noautoconsole补充一点如果网上资料让你手动下载某个“OVMF 固件 bin 文件”要谨慎辨别来源。正常发行版仓库里的 edk2-ovmf / ovmf 包就是官方固件不需要从第三方站点私下下载避免引入安全风险。3.4 硬件 KVM 切换器装系统场景建议如果你的场景是机房里用硬件 KVM 切换器给物理服务器装系统要注意下面几点确认切换器主机端口和服务器显示输出接口一致老服务器常见 VGA新机器可能是 HDMI 或 DP需要转接头。安装系统时用切换器切换到目标服务器端口显示器上应能看到开机自检画面。进入 BIOS设置 U 盘或光驱为第一启动项保存重启后即可进入安装界面。系统安装过程中不要频繁切换端口避免键盘鼠标输入短暂失效造成误操作。如果是 KVM over IP建议使用有线网络连接远程控制台无线网络在安装界面下可能出现键盘响应延迟。4. 内外剪贴板互通与显示优化“KVM 内外剪贴板互通”是很多人在虚拟机里装完系统后遇到的第一个体验痛点。默认情况下KVM 虚拟机与宿主机之间的剪贴板是隔离的在虚拟机里复制的内容无法直接粘贴到宿主机反之亦然。VMware Workstation 默认能互通是因为它自动装了一套 VMware ToolsKVM 里对应的组件叫 SPICE guest tools。4.1 安装 SPICE guest 工具在 guest OS 是 Linux 的情况下在虚拟机里执行Ubuntu / Debianapt install -y spice-vdagentRocky / CentOSdnf install -y spice-vdagent安装完成后重新启动虚拟机或重启 spice-vdagent 服务。如果 guest OS 是 Windows可以在虚拟机的 CD-ROM 中挂载 virtio-win 驱动镜像里面有 spice-guest-tools 安装包。这个镜像同样可以从发行版仓库或 virtio-win 官方发布渠道获取不要在陌生站点下载来路不明的整合包。4.2 剪贴板互通配置检查安装 spice-vdagent 后virt-manager 查看虚拟机显示时宿主机和虚拟机之间就可以共用剪贴板了。需要注意剪贴板互通依赖两个条件虚拟机的 video 设备类型是 virtio 或 QXL而不是默认的 VGA。宿主机通过 SPICE 协议连接虚拟机而不是 VNC。VNC 协议本身不适合剪贴板双向同步。用 virsh 查看虚拟机 XML 配置中 video 和 graphics 部分virsh dumpxml windows11-test | grep -A 2 video virsh dumpxml windows11-test | grep -A 3 graphics如果确实是 VNC可以把图形协议改成 spice 后重启虚拟机virsh edit windows11-test修改前建议先virsh dumpxml windows11-test windows11-test.xml.bak备份配置。4.3 全屏无法缩小问题解决“KVM 链接服务器全屏无法缩小”一般出现在 virt-manager 或 virt-viewer 里。点全屏后虚拟机画面撑满屏幕但想按窗口小一点就不行了。常见原因和解决思路如下虚拟机内分辨率过高超过宿主机窗口尺寸。可以在 guest OS 显示设置中把分辨率调低。没有安装 SPICE guest tools显示器分辨率不能自动适配窗口大小。安装 spice-vdagent 后virt-manager 窗口变化时guest 桌面会自动跟随调整。virt-manager 开启了“全屏”模式没有退出快捷键。按Shift F11切换全屏或者把鼠标移到屏幕上边缘呼出菜单栏。使用 VNC 连接时由于分辨率协商机制不同缩放支持不理想。可以尝试用 virt-viewer 的缩放模式或者在 VNC 客户端中开启“缩放显示”。查看当前虚拟机的显示连接地址可以用virsh vncdisplay win11-test然后在 virt-viewer 中手动连接virt-viewer --connect qemu:///system win11-test5. 常见问题与排查思路把用户搜索热度最高的问题汇总成下表再逐个展开说明。问题现象常见原因解决思路KVM 初始化失败/dev/kvm 不存在CPU 虚拟化未开启或内核模块未加载检查 BIOS 设置modprobe kvm_intel/kvm_amdATEN KVM 登录密码无法进入默认密码已被修改或不适用查阅官方手册、设备复位或联系管理员虚拟机提示 UEFI 固件不存在未安装 OVMF 软件包安装 edk2-ovmf 或 ovmf 包guest 和宿主机剪贴板不互通guest OS 未安装 spice-vdagent安装 spice-vdagent 并确认使用 SPICE 协议全屏后无法缩小窗口分辨率超出窗口或缺少工具调节分辨率安装 SPICE toolsvirt-install 创建虚拟机失败os-variant 或磁盘路径错误用 osinfo-query 查询正确系统变体5.1 ATEN KVM 登录密码问题搜“ATEN KVM 登陆密码”的人很多是在使用 ATEN 品牌的硬件 KVM 切换器或 KVM over IP 时被登录界面拦住了。必须明确ATEN 不同系列、不同固件版本的管理员默认账号和密码并不完全相同而且新设备第一次登录通常还会强制修改密码。建议做法是先查看设备背面标签或说明书部分型号默认账号是admin密码是空的或password。如果没有说明书去 ATEN 官网对应型号页面下载用户手册以手册里写的初始凭据为准。如果之前有人配置过该设备直接联系设备管理员重置密码。某些型号支持硬件复位按钮恢复出厂设置后要重新配置网络参数操作前必须确认该设备在业务中的影响范围。一句话总结不要迷信网上流传的“通用密码”硬件设备的凭据管理要从安全角度对待。5.2 UEFI 固件下载和引导失败创建 UEFI 虚拟机最常见的报错是ERROR 配置域时出错: 内部错误: /usr/share/OVMF/OVMF_CODE.fd 不存在这个报错就是缺少 OVMF 固件文件。按前面第 3.3 节方式安装对应软件包即可。如果已经安装固件仍然引导失败另一种常见原因是存储池路径权限不足。给虚拟机磁盘文件所在目录设置合理权限并确保当前用户有权限访问chown -R qemu:qemu /data/kvm chmod 750 /data/kvm对于已经创建但配置中没有 UEFI 的传统 BIOS 虚拟机不能简单地改一个固件路径就切换启动模式因为分区表类型和引导方式不匹配。建议重新创建虚拟机在创建时直接指定 UEFI。5.3 其他高频问题通过 KVM 给服务器做系统时安装界面黑屏可能是显示协议问题和分辨率不支持。在 virt-install 中改用--graphics spice或者调整--video qxl。虚拟机网卡不通检查默认网络是否 activeguest 内网卡是否配置了 DHCP。性能差确认宿主机的 CPU 嵌套虚拟化是否开启虚拟机磁盘是否用了 qcow2并检查是否准备使用 virtio 驱动。virsh net-list --all virsh net-start default6. 最佳实践与工程建议KVM 虚拟化环境一旦进入生产就不再是“把虚拟机建出来”那么简单。下面几条建议来自工程落地的实际经验。6.1 命名与资源规划虚拟机名称建议使用“业务-环境-用途”的格式例如order-prod-node01。避免使用test1、centos-new这类含义不清的名字。创建前先评估 CPU、内存、磁盘容量避免宿主机超分过度导致性能抖动。查看宿主机资源使用情况virsh list --all virsh dominfo order-prod-node016.2 存储与备份虚拟机磁盘使用 qcow2 格式创建虚拟机时利用--disk指定固定大小或按需增长。对重要虚拟机定期做快照但在快照之前要确认 guest OS 内部文件系统处于一致状态最好先暂停或关机virsh snapshot-create-as order-prod-node01 snap-before-upgrade恢复快照的操作要谨慎它会覆盖当前磁盘状态virsh snapshot-revert order-prod-node01 snap-before-upgrade生产环境的核心数据必须在宿主机层之外再做异地备份快照不等于备份宿主机磁盘损坏时快照也会一起丢失。6.3 权限与安全限制 libvirt 管理员的用户组范围不要把所有用户都加入 libvirt 组。尽可能关闭不需要的 VNC 或 SPICE 对外监听端口或者通过防火墙限制来源 IP。使用 openEuler/Rocky 等系统时开启 SELinux默认不随意放行非常规目录作为虚拟机镜像路径。修改业务虚拟机之前先导出一份 XML 配置备份virsh dumpxml order-prod-node01 /backup/order-prod-node01.xml6.4 性能与运维优先使用 virtio 类型的网卡和磁盘控制器virtio 半虚拟化能显著降低 I/O 开销。给虚拟机设置 CPU 绑定之前先了解宿主机 NUMA 拓扑避免跨 NUMA 节点访问内存造成性能下降。批量创建虚拟机时把virt-install命令整理成 Shell 脚本并用--noautoconsole避免交互卡住。日志排查重点关注/var/log/libvirt/qemu/目录下对应虚拟机日志遇到启动失败优先查看这里。7. 总结与学习路线这篇长文从“两种 KVM”的区别切入覆盖了 KVM 硬件切换器和 KVM 虚拟化的基本概念重点展开了虚拟化 KVM 的环境搭建、virt-install 命令行创建虚拟机、UEFI 固件安装、剪贴板互通、全屏显示适配以及 ATEN KVM 密码、固件缺失等常见问题。做完这些操作后你已经能在一台 Linux 宿主机上独立创建和管理虚拟机了。下一步建议按这个顺序继续深入把 virt-manager 和 virsh 常用命令过一遍重点掌握virsh list、virsh dominfo、virsh shutdown、virsh destroy的管理区别。学习 Linux bridge 和 VLAN 配置把虚拟机从 NAT 网络切换到 bridge 网络让虚拟机直接接入业务网段。研究 qcow2 镜像的 backing file 克隆技术提高批量创建虚拟机的效率。如果你的生产环境已经用上了硬件 KVM 切换器建立一个设备密码台账和远程控制台登录规范避免下次求助时找不到管理员。KVM 看起来内容多但核心思路并不难底层是 Linux 内核的虚拟化能力上层是 libvirt 管理百种虚拟机中间真正影响使用体验的往往就是 UEFI 固件、virtio 驱动、SPICE tools 这几个细节。把本文的实践流程完整过一遍再遇到相关的坑就有明确的排查方向了。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻