首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Rocky Linux 10虚拟机变慢?先确认它是否真的跑在KVM上
📅 2026/9/8 3:02:15
✍️ 爱科研究院
👁 阅读 3,247
如果你的 Rocky Linux 10 虚拟机跑起来明显拖沓CPU 占用高、磁盘写入像蜗牛、网络吞吐上不去先别急着调内核参数。很多情况下问题根本不是 Rocky 10 本身而是虚拟机压根没有获得硬件虚拟化加速甚至已经退回到了纯软件模拟模式。排障的第一步就是先确认它到底跑在哪一层虚拟化平台上。这篇文章围绕“确认虚拟化类型”这条主线展开。我会带你从宿主机、Guest 内部、设备型号、CPU 虚拟化透传几个层面逐一排查把 Rocky 10 虚拟机变慢的常见原因定位到具体环节。文章会给出可复制的检查命令、判断标准和整改建议适合刚接触 KVM 虚拟化、在 PVE 或 OpenStack 上运行 Rocky Linux 10以及用 VMware Workstation / VirtualBox 搭建实验环境后遇到性能问题的读者。读完之后至少能回答一个问题这台 Rocky 10 到底是不是真的跑在 KVM 上。1. 排障前的关键认知先确认虚拟化类型KVM 是 Linux 内核自带的虚拟化模块QEMU 负责设备模拟。两者配合时虚拟机的 CPU 指令可以直接交给硬件执行性能接近物理机。如果 /dev/kvm 不存在或者内核没有加载 KVM 模块QEMU 会退回 TCG 纯软件模拟模式虚拟机的每个 CPU 指令都要在用户态翻译执行性能下降幅度非常明显。根据实际使用环境我把虚拟化类型分成三类虚拟化类型运行方式性能表现常见场景KVM 硬件加速QEMU KVMCPU 指令直接下沉到硬件接近物理机服务器虚拟化、PVE、OpenStack、生产环境QEMU 纯软件模拟只有 QEMU没有 KVM 模块TCG 翻译执行明显偏慢无硬件虚拟化扩展、容器内嵌 QEMU、测试环境非 KVM 虚拟化VMware Workstation、VirtualBox、Hyper-V 等取决于嵌套透传和驱动配置个人桌面实验、跨平台开发排障时最容易踩的坑是宿主机装了 KVM也创建了虚拟机但虚拟机内看到的设备还是默认的 IDE 磁盘和 e1000 网卡或者根本没有启用硬件虚拟化透传。这时候虚拟机虽然“创建成功”但没有真正发挥 KVM 的半虚拟化能力慢是必然结果。另外要注意 guest OS 这个概念。在 KVM 语境里guest OS 就是跑在虚拟机里的操作系统比如这里的 Rocky Linux 10。确认虚拟化类型时要分别从宿主机 host 和客户机 guest 两个角度查看只信一方的输出都不够稳妥。2. 适用场景与使用边界这篇排障思路适合三类人第一类是刚把 Rocky Linux 10 装进 KVM / PVE / OpenStack 环境的运维新手虚拟机创建成功但性能不理想需要快速判断虚拟化层是否正常工作。第二类是在 VMware Workstation 或 VirtualBox 里做嵌套 KVM 实验的开发者启动 Rocky 10 虚拟机的速度特别慢需要确认是否开启了 CPU 虚拟化透传。第三类是负责虚拟化平台迁移的人要把物理机或 VMware 虚拟机迁移到 KVM迁移后 Rocky 10 出现明显卡顿需要先排除虚拟化层配置问题。它不解决什么问题如果你的虚拟机 CPU 占用和磁盘延迟都正常只是某个应用本身慢那问题可能在应用层比如数据库索引、Nginx 配置、Java 堆内存设置而不是虚拟化层。如果宿主机 CPU 不支持虚拟化扩展KVM 硬件加速无法使用软件模拟会有性能瓶颈此时更合适的做法是换硬件或者改用其他虚拟化方案。如果涉及企业生产业务迁移还要提前确认服务商对虚拟化平台的支持策略、授权边界和迁移窗口。另外需要强调使用边界无论是做性能排障、驱动安装还是网络配置都应该在测试环境或已获得授权维护的服务器上操作。不要对生产环境的虚拟机和宿主机随意执行高风险命令尤其不要在生产上直接修改虚拟机 XML 后忘记回退。涉及系统配置、内核参数调整时先备份原配置保留可回滚的快照操作前确认业务维护窗口。3. 环境准备与前置条件在开始排障前先把环境检查清单过一遍。这里不限定具体版本只列通用条件。检查项说明操作系统宿主机建议使用 Rocky Linux 9/10 系列、Ubuntu Server 或 Debian 等 Linux 发行版内核版本需要包含 KVM 模块主流 Linux 发行版默认已编译CPU 虚拟化Intel 需要 VT-xAMD 需要 SVM物理机 BIOS 里开启或者嵌套虚拟化环境里要透传/dev/kvmKVM 设备节点启动 KVM 虚拟机的必要条件管理工具libvirt、virt-manager、virsh、qemu-kvm根据发行版安装磁盘空间虚拟机镜像、快照、日志预留足够空间网络桥接网络或 NAT 网络保证 SSH 登录和测试连通性快照能力修改系统配置前建议先在宿主机打快照对于 Rocky Linux 10 环境你可以这样准备# 安装虚拟化管理工具包名以实际发行版仓库为准 sudo dnf install -y qemu-kvm libvirt virt-install virt-manager # 启动 libvirtd 服务 sudo systemctl enable --now libvirtd # 检查 KVM 模块是否加载 lsmod | grep kvm # 常见输出为 kvm_intel 或 kvm_amd确认后继续 # 检查 KVM 设备节点 ls -l /dev/kvm如果上面的输出里没有 kvm 模块也没有 /dev/kvm说明当前内核没有启用 KVM或者 CPU 虚拟化扩展在 BIOS/固件层面没有打开。需要回到宿主机基础环境排查这一步不过关后面虚拟机性能很难正常。4. 确认虚拟机是否真的跑在 KVM 上这是整篇排障的核心。确认过程要分四个层面宿主机、Guest 内部、虚拟设备型号、嵌套虚拟化透传。4.1 宿主机层面检查 KVM 是否就绪先登录宿主机执行下面的命令。# 查看 KVM 模块加载情况 lsmod | grep kvm # 查看 KVM 设备权限 ls -la /dev/kvm # 查看正在运行的虚拟机 sudo virsh list --all # 查看某个虚拟机的 VCPU 信息 sudo virsh vcpuinfo 虚拟机名称如果virsh vcpuinfo正常返回 VCPU 编号、运行时间等状态说明 libvirt 和 KVM 通信正常。如果提示找不到虚拟机或无法连接先检查 libvirtd 是否运行再用virsh list --all确认虚拟机名称是否写对。从宿主机视角看确认虚拟机 XML 配置中是否启用了正确的 CPU 模式和半虚拟化设备也很有必要。用virsh edit查看时重点看三段CPU 模式、磁盘控制器、网卡模型。sudo virsh edit 虚拟机名称在 XML 里CPU 模式可以采用host-passthrough或host-model磁盘设备推荐使用virtio-blk网卡推荐使用virtio-net。如果看到的是ide磁盘和e1000网卡说明设备模型比较保守性能上会有损耗建议在维护窗口内改成 virtio。4.2 Guest 系统内确认虚拟化类型登录 Rocky Linux 10 虚拟机内部执行 systemd 自带工具几乎不需要额外安装依赖。# 查看系统检测到的虚拟化类型 systemd-detect-virt # 如果返回 kvm说明跑在 KVM 上 # 如果返回 none说明可能是物理机或容器环境 # 如果返回 vmware / oracle / microsoft 等说明跑在其他虚拟化平台另外一个常用命令是lscpu可以看 Hypervisor vendor 信息。lscpu | grep -i hypervisor输出结果如果是Hypervisor vendor: KVM基本可以确定 guest 正在 KVM 上运行。如果输出为空或没有 Hypervisor 行则说明没有检测到 hypervisor可能运行在物理机上也可能是虚拟化层信息没有正确透传。再看内核日志dmesg | grep -i kvm dmesg | grep -i hypervisor如果 dmesg 里有 KVM 相关的 CPU 特性、kvm-clock 等条目说明 guest 已经感知到 KVM 时钟源和 CPU 特性半虚拟化加速生效。如果完全没有 KVM 相关内容很可能是退回到了纯软件模拟。4.3 磁盘设备与网卡型号确认很多 Rocky 10 虚拟机慢不是 KVM 没生效而是磁盘和网卡还在用模拟设备。KVM 的半虚拟化优势要靠 virtio 设备才能完全发挥。Guest 内用下面命令查看磁盘和网卡。# 查看块设备列表 lsblk -d -o NAME,TRAN,MODEL # 查看所有网卡 ip link show如果lsblk中 TRAN 显示virtio说明磁盘设备是 virtio-blk 或 virtio-scsi属于正常状态。如果显示sata或者ata说明还是 SATA/IDE 模拟设备性能会明显受限。网卡方面ip link show查看设备名再配合ethtool -i查看驱动。ethtool -i 网卡名称驱动如果是virtio_net说明网卡半虚拟化正常。如果看到的是e1000、e1000e、vmxnet3说明当前不是纯 KVM virtio 网络模型或者跑在 VMware 平台。结合热词里的部署场景如果用户是通过 VMware Workstation 安装 Rocky 10 后再做 KVM 实验就需要特别注意VMware 虚拟机的网卡驱动可能是 vmxnet3磁盘可能是 SCSI这并不表示跑在 KVM 上。要在 VMware 里做嵌套 KVM必须先在 VMware Workstation 的虚拟机设置中开启“虚拟化引擎”相关的 CPU 虚拟化透传选项否则 guest 内的 KVM 模块即使加载也无法使用硬件加速。4.4 确认嵌套虚拟化是否可用如果你是在虚拟机里再创建虚拟机比如在 VMware Workstation 或 VirtualBox 上跑 Rocky 10然后在 Rocky 10 里跑 KVM 虚拟机那就进入了嵌套虚拟化场景。此时要确认宿主虚拟机是否把 CPU 虚拟化扩展透传给了 guest。登录 Rocky 10 虚拟机查看 CPU 特性grep -Eo (vmx|svm) /proc/cpuinfo | sort -u输出包含vmx表示 Intel 虚拟化扩展可用包含svm表示 AMD 虚拟化扩展可用。如果没有任何输出说明 CPU 虚拟化扩展没有透传Rocky 10 内部即使装了 KVM 也无法使用硬件加速。同时检查 KVM 模块是否可以加载sudo modprobe kvm_intel # 或 sudo modprobe kvm_amd ls -l /dev/kvm如果能成功创建 /dev/kvm说明嵌套虚拟化可用。如果 modprobe 报错或者 /dev/kvm 没出现说明上层虚拟机没有透传 VT-x/SVM。对于 VMware Workstation需要在虚拟机设置的“处理器”选项卡里勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”相关选项对于 VirtualBox需要在系统设置里启用“嵌套 VT-x/AMD-V”相关选项。不同版本菜单位置不一样具体以你安装的版本为准排障时优先找“虚拟化引擎”相关配置。5. Rocky 10 虚拟机“慢”的常见原因定位确认虚拟化类型后接下来按优先级定位慢的原因。我列了六个高频场景。5.1 KVM 模块未加载退回到 QEMU 软件模拟这是最严重的一种情况。创建虚拟机时如果 libvirt 发现 /dev/kvm 不存在会默认用纯软件模式运行不会直接报错。最容易发现的问题是虚拟机 CPU 占用极高、启动时间非常长。排查方式就是上面第 3 节和第 4.1 节的内容确认宿主机 KVM 模块和设备节点是否正常。如果宿主机只有一个 CPU 内核没有硬件虚拟化扩展建议不要继续用 KVM 方案换用轻量级容器方案会更合适。5.2 磁盘控制器配置不合理Rocky 10 安装时如果默认选了 IDE/SATA 控制器I/O 性能会明显下降。特别是数据库、编译任务、日志写入这类高 I/O 场景SATA 模拟设备会成为瓶颈。整改方式是在停机状态下把磁盘控制器改为 virtio并在 Guest 内安装 virtio 驱动。Rocky Linux 内核默认自带 virtio_blk 和 virtio_scsi 驱动通常不需要额外安装。5.3 网卡模型不匹配虚拟机网络吞吐上不去也可能是 e1000 模拟网卡的问题。e1000 兼容性好但性能不如 virtio-net。如果业务对网络要求高比如跑 Nginx、对象存储网关或数据库主从同步建议改成 virtio-net并确认桥接模式正确。改网卡模型后在 Guest 内重新获取 IP 即可。如果通过 SSH 管理虚拟机注意改网卡时可能断连最好在宿主机上通过virsh console或带外管理操作。5.4 Guest Agent 未安装KVM 环境下安装 qemu-guest-agent 可以提供更强的性能和状态反馈。它能让宿主机通过 VirtIO 串口获取 guest 的 IP、文件系统状态和负载信息部分管理平台也要依赖它才能展示正确的 guest 指标。没有 agent 不影响核心运行但会影响统一监控和优雅关机。Rocky Linux 10 安装命令sudo dnf install -y qemu-guest-agent sudo systemctl enable --now qemu-guest-agent如果是在 VMware 平台对应的组件是 VMware Tools 或 open-vm-tools在 VirtualBox 里是 Guest Additions。不同平台别装混避免设备冲突。5.5 CPU 模式导致特性缺失虚拟机 XML 中 CPU 模式如果设置为比较保守的模型guest 内看到的 CPU 特性会减少某些软件可能无法利用新的指令集。生产环境建议使用host-passthrough或host-model前提是宿主机的 CPU 型号在所有迁移目标主机上兼容。如果有热迁移需求就需要更谨慎地选择 CPU 模式不能只追求最高性能而忽略迁移兼容性。5.6 网络配置错误导致重试和慢连接Rocky 10 作为 guest 时如果系统的网络配置成 DHCP且 DHCP 服务没有及时响应开机阶段会等待很久。另外热词里经常提到“rocky 10 配置网络静态ip”也就是静态 IP 配置问题。如果网卡名称或连接配置不对network-scripts 和 NetworkManager 同时管理会导致网络服务启动慢。可以使用 NetworkManager 配置静态 IP# 查看网络连接名称 nmcli connection show # 修改指定连接的 IP 地址、网关和 DNS参数按实际网络环境调整 sudo nmcli connection modify Wired connection 1 ipv4.method manual ipv4.addresses 192.168.122.10/24 ipv4.gateway 192.168.122.1 ipv4.dns 192.168.122.1 # 重启连接生效 sudo nmcli connection down Wired connection 1 sudo nmcli connection up Wired connection 1这类问题虽然不会让 CPU 变慢但会让虚拟机开机、SSH 登录、应用启动过程显得很卡容易被误判成性能问题。6. 性能观察与效果验证排障不能只看“感觉变快了”要有可重复的验证方法。无论是要确认 KVM 是否生效还是检查 virtio 设备是否起作用都可以用下面的通用流程做前后对比。6.1 基础状态验证流程每次调整前先记录当前状态# 记录虚拟化类型 systemd-detect-virt # 记录 CPU 信息 lscpu | grep -E Hypervisor|Model name|CPU\(s\) # 记录磁盘设备类型 lsblk -d -o NAME,TRAN,MODEL # 记录网卡驱动 for iface in $(ls /sys/class/net/ | grep -v lo); do echo $iface: $(ethtool -i $iface 2/dev/null | grep driver); done然后把输出保存到文件作为排障基线。改动配置后再执行一遍相同命令对比虚拟化类型和设备驱动是否有变化。6.2 半虚拟化是否生效的关键信号在 Guest 内可以检查时钟源cat /sys/devices/system/clocksource/clocksource0/current_clocksource如果输出是kvm-clock说明 KVM PV 时钟已经生效。如果输出是tsc或hpet说明虚拟化时钟支持没有完全启用需要进一步看内核模块和启动参数。另外可以查看内核是否加载了 virtio 相关模块lsmod | grep virtio正常环境下应该能看到 virtio、virtio_net、virtio_blk、virtio_pci 等模块。如果这些模块缺失说明当前内核没有打开 VirtIO 支持或者系统安装时精简了内核模块。6.3 CPU、内存、磁盘、网络四维度验证性能对比不能只看一个指标。CPU 维度用高压力命令观察用户态和系统态 CPU 占比。纯软件模拟时CPU 的系统态占用和整体负载会显著偏高。内存维度观察 guest 内存分配是否合理不要出现宿主机物理内存不足导致 swap 频繁使用。磁盘维度用 dd 或 fio 做简单读写测试重点对比修改 virtio 前后的顺序读、顺序写和随机写性能。测试时不要在生产业务磁盘上直接做破坏性写入。网络维度在 guest 与宿主机之间用 iperf3 测试 TCP 吞吐对比 e1000 与 virtio-net 的差异。需要说明的是具体数值受宿主机磁盘类型、CPU 型号、内存频率、网络环境和工作负载影响不能一概而论。这里给的是对比方法不是绝对基准。只要记录修改前后两轮数据就能看出调整是否有效。7. 常见问题与排查方法问题现象可能原因排查方式解决方案虚拟机开机极慢CPU 占用高KVM 模块未加载QEMU 退回纯软件模拟查看 /dev/kvm、lsmod | grep kvm开启 BIOS 虚拟化加载 kvm 模块重启 libvirtdsystemd-detect-virt 输出 noneguest 没检测到 hypervisor虚拟化透传失败在宿主机检查 CPU 信息和虚拟机配置检查虚拟化平台配置嵌套环境开启透传磁盘性能明显偏低磁盘控制器是 IDE/SATAlsblk -d -o NAME,TRAN,MODEL停机修改磁盘控制器为 virtio确认 virtio_blk 驱动网络吞吐低且 CPU 高网卡模型是 e1000ethtool -i 查看驱动改为 virtio-net配置桥接网络开机卡在等待网络静态 IP 或 DHCP 配置问题nmcli connection show、systemd-analyze blame用 NetworkManager 重配静态 IP 或调整 DHCP 超时宿主机上无法创建新虚拟机/dev/kvm 权限不足或不存在ls -l /dev/kvm将运行用户加入 kvm 组确认模块已加载嵌套 KVM 环境 modprobe 失败上层虚拟机没有透传 VT-x/SVMgrep -Eo (vmx|svm) /proc/cpuinfo在 VMware/VirtualBox 设置中开启虚拟化引擎透传VMware Tools 提示没有数字签名驱动签名策略导致 vmtool 无法安装查看系统日志、检查签名策略使用 open-vm-tools或调整测试环境的驱动签名策略VMware Workstation 无法连接虚拟机虚拟机服务未启动或 vmx 路径错误检查 VMware 服务状态和虚拟机日志重启 VMware 服务确认 vmx 文件路径客户机操作系统已禁用 CPU虚拟化设置中 CPU 受限查看 CPU 设置和 VMware 日志调整处理器设置进入虚拟机设置确认虚拟化引擎选项表格里没有涵盖所有可能但覆盖了 Rocky 10 虚拟机在 KVM、VMware、VirtualBox 环境中的高频问题。排障时按“先确认虚拟化类型再查设备驱动再测性能”的顺序走不要跳步。8. 最佳实践与整改建议排障完成之后可以用下面这些工程化方式减少后续问题。8.1 保留一套最小可运行配置把确定能正常启动且性能达标的虚拟机配置保存下来包括 virtio 磁盘、virtio-net、host-passthrough CPU、qemu-guest-agent 等。下次创建新虚拟机时直接复用模板避免每次重新踩坑。可以使用 virt-clone 或 virt-sysprep 制作模板镜像。8.2 目录和快照管理建议把磁盘镜像、ISO 镜像、快照和日志分别放到独立目录管理。修改虚拟机 XML 前先备份配置# 备份虚拟机定义 sudo virsh dumpxml 虚拟机名称 /backup/虚拟机名称.xml # 查看磁盘镜像位置 sudo virsh domblklist 虚拟机名称涉及系统内核参数、网卡模型、磁盘控制器调整时先打快照。测试环境里快照可以节约大量回滚时间生产环境要谨慎确认快照链长度和备份策略。8.3 日志和监控批量管理多个 KVM 虚拟机时建议把日志统一收集。宿主机的 /var/log/libvirt/qemu/ 目录下会有每个虚拟机的日志guest 内部可以用 journald 记录系统日志。如果虚拟机变慢优先看宿主机负载、内存占用、磁盘 I/O wait 和网络重传统计再进 guest 内看应用日志。8.4 合规与授权提示排障过程中会涉及系统配置、网络策略、镜像和数据集。如果你在虚拟机里处理的是用户数据、版权素材或业务敏感信息需要确认有明确的授权和使用边界。不要在生产业务虚拟机里随意安装来源不明的驱动或 agent也不要使用未经授权的镜像。涉及自动化批量操作时先用一台测试虚拟机验证完整流程再对目标机器执行。9. 总结与下一步这次排障的核心思路可以压缩成一句话Rocky Linux 10 虚拟机很慢先不要默认是系统调优问题先确认它真的跑在 KVM 上。重点验证四件事宿主机有没有可用的 /dev/kvmguest 内部 systemd-detect-virt 是否返回 kvm磁盘和网卡是否用了 virtio 设备嵌套虚拟化环境是否透传了 VT-x/SVM。最容易踩的坑是VMware Workstation 或 VirtualBox 里创建 Rocky 10然后发现内部无法使用 KVM 加速因为上层虚拟机没有打开 CPU 虚拟化透传。如果没有硬件虚拟化支持KVM 方案就不成立这时候纠结内核参数没有意义。我最建议你先做一件事登录 Rocky 10 执行systemd-detect-virt再执行lsblk -d -o NAME,TRAN,MODEL和ethtool -i检查驱动。这三个命令一分钟内能出结果可以快速判断虚拟化层是否正常。如果输出显示 KVM virtio那说明平台没问题慢的原因是应用或资源分配如果输出显示 QEMU 纯软件模拟或 e1000/IDE 设备那就是虚拟化层配置问题按文章里的步骤整改。后续可以继续扩展的方向包括Rocky 10 虚拟机内存和 CPU 的静态绑定、大页内存配置、NUMA 拓扑优化、virtio-scsi 多队列、网卡多队列调优以及把整套 KVM 排障脚本化、接入监控告警。先把虚拟化层确认清楚后面这些优化才有意义。建议收藏备用下次遇到虚拟机性能问题时可以一条条对照。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/8 3:02:15
春节后家电省电全面指南:从冰箱空调到待机功耗的实用调整
2026/9/8 3:02:15
桌面FDM 3D打印非遗玩具全流程:从切片参数到打磨上色实战
2026/9/8 2:57:15
69元USB副屏装机全攻略:从驱动原理到AIDA64布局
2026/9/8 3:37:20
凭什么PaperXie是2026本科论文天花板✨硬核综合实力解析
2026/9/8 3:37:20
AI辅助软件开发架构设计:从分层到落地的完整指南
2026/9/8 3:37:20
年轻人装家庭影院值不值?从观影到游戏,六大场景真实体验与配置指南
2026/9/8 3:37:20
AIGC动画制作全流程实战:从扩散模型到数字人直播
2026/9/8 3:37:19
3D打印复刻非遗玩具全流程:以凯泽T1 CD为例
2026/9/8 3:32:19
拧紧枪TCP/IP通讯实战:从Socket到MES数据对接
2026/9/8 0:02:01
中国车企再破谣言,GAC吉利零跑获欧盟安全五星
2026/9/8 0:02:01
Compose Hot Reload新增MCP服务器助AI智能体调试
2026/9/8 0:02:01
你熟悉的GoPro正在悄然改变
2026/9/8 0:43:11
超人会飞不算本事:系统稳定依赖清晰规则与边界设计
2026/9/8 1:13:27
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
2026/9/8 2:18:22
基于CNN的调制信号识别:MATLAB实现时频图分类实战