如何打开kvm虚拟机?,KVM虚拟机启动步骤教程

打开KVM虚拟机,最直接的方式是使用virsh start命令,或者通过virt-manager图形界面点击启动,具体选哪种,取决于你是在SSH远程终端里操作,还是坐在宿主机屏幕前。下面我按照不同使用场景,把打开KVM虚拟机的各种姿势拆开讲清楚。

怎么打开KVM虚拟机:先分清你的操作环境

KVM是Linux内核自带的虚拟化模块,管理工具通常是libvirt,打开虚拟机之前,先确认你手上有什么“遥控器”,绝大多数情况下,你只需要记住两条路:命令行和图形界面。

  • 命令行方式:适合老手、远程维护、脚本自动化,核心命令是virsh。
  • 图形界面方式:适合新手或宿主机有桌面环境,核心工具是virt-manager。

如果你的宿主机没有桌面,只能通过SSH连接,那就老老实实用命令行,如果宿主机装了GNOME或KDE桌面,virt-manager能让你像打开普通软件一样打开虚拟机。

打开KVM虚拟机前必须看的三个状态

先不要急着执行start命令,用这个命令看看全部虚拟机列表:

virsh list --all

这个命令会显示所有定义过的虚拟机,包括正在运行和已经关闭的,注意看ID、名称和状态三列。状态显示“关闭”的虚拟机才能用start启动,如果显示“运行中”,你再去start会报错,另一个常见情况是,虚拟机名称拼错了,导致系统提示找不到域,所以第一步是copy大概率正确的名称。

命令行打开KVM虚拟机的标准动作

确认名称无误后,执行:

virsh start 虚拟机名称

比如你的虚拟机叫ubuntu20.04,就写:

virsh start ubuntu20.04

成功后会显示“域 ubuntu20.04 已启动”,然后你可以用virsh list看看它是否在运行列表里,如果想在启动后立刻进入控制台,追加--console参数:

virsh start ubuntu20.04 --console

这个命令会把你的终端直接接到虚拟机的串口或VGA上,类似物理服务器的本地显示,不过要注意,虚拟机内部如果没有配置串口终端,可能黑屏或无输出,此时你需要在虚拟机内开启getty服务。

打开KVM虚拟机命令详解:从virsh到boot目录

virsh是libvirt的命令行管理工具,也是打开KVM虚拟机最常用的方式,除了简单的start,还有几个衍生命令需要掌握。

如何打开kvm虚拟机?,KVM虚拟机启动步骤教程

virsh start不起作用?试试define和autostart

如果你的虚拟机没有在virsh list --all里出现,说明它还没有被定义,此时需要从XML文件加载:

virsh define /etc/libvirt/qemu/ubuntu20.04.xml

这个XML文件里写明了虚拟机的CPU、内存、磁盘等配置,加载成功后,虚拟机就会出现在列表中,接着就可以start。

想让虚拟机随宿主机开机自动启动,使用:

virsh autostart ubuntu20.04

取消自动启动:

virsh autostart --disable ubuntu20.04

行业共识认为,在物理服务器重启场景下,直接依赖virsh autostart比手动开机后逐个启动更可靠,因为libvirt守护进程会在宿主机启动阶段按顺序拉起虚拟机。

打开虚拟机后如何优雅关闭和重启

启动只是第一步,运维中你需要管理虚拟机的生命周期,这里有几个不同力度的“关闭”:

  • virsh shutdown ubuntu20.04:发送ACPI关机信号,让虚拟机内部系统正常关机,这最安全。
  • virsh reboot ubuntu20.04:发送重启信号,等价于物理机按重启键。
  • virsh destroy ubuntu20.04:强制断电,相当于直接拔电源线,仅在虚拟机死机时使用。

在命令行下,你还可以配合virsh console进入虚拟机内部操作,如果一切正常,exit会退出控制台,但虚拟机继续运行。

KVM虚拟机无法打开?先排查这五个环节

在实际操作中,经常遇到virsh start执行后提示错误,不要慌,按照下面顺序依次排查,绝大多数情况都能解决。

确认宿主机CPU虚拟化功能已开启

KVM依赖CPU的VT-x或AMD-V指令集,在命令行输入:

egrep -c '(vmx|svm)' /proc/cpuinfo

如果返回数字是0,说明虚拟化没有开启,需要进入BIOS/UEFI设置里打开Intel VT-x或AMD SVM,如果宿主机是云服务器,通常没有这些指令集,KVM根本跑不起来。

检查虚拟机名称和XML定义是否匹配

virsh start报错信息里若提示“找不到域”,多半是名称问题,用virsh list --all对比一下你输入的名称,Libvirt中的域名区分大小写,比如

如何打开kvm虚拟机?,KVM虚拟机启动步骤教程

Ubuntu和ubuntu是两个不同的域。

看磁盘镜像文件是否还在

虚拟机启动时要读取磁盘镜像,比如qcow2或raw文件,如果镜像被移动、删除或权限不对,启动就会失败,检查XML里的路径:

virsh dumpxml ubuntu20.04 | grep -i source

然后去对应目录查看文件是否存在,并用ls -l确认属主是qemu用户(或libvirt-qemu)且权限为可读,如果权限不对,执行:

chown libvirt-qemu:kvm /path/to/disk.img

检查内存和CPU资源是否足够

KVM虚拟机的内存是预分配的(启动时就要占满),如果你的虚拟机配置了8GB内存,但宿主机可用内存只有6GB,启动会失败,用free -h看内存余量,用virsh dumpxml调整<memory>和<currentMemory>

查看libvirt日志和错误信息

当上面的检查都无果时,看日志最直接,日志文件在:

/var/log/libvirt/libvirtd.log

或者用journactl -u libvirtd查看系统日志,错误信息会直接告诉你哪一步失败,无法读取文件”、“设备不存在”等。

打开KVM虚拟机管理界面:virt-manager图形化操作

如果你在宿主机上有桌面环境,或者想在Windows/Mac上用远程桌面管理Linux宿主机,virt-manager是更亲民的选择,它相当于KVM的“控制面板”,所有虚拟机以列表或图标形式展示。

安装virt-manager并连接宿主机

在Debian/Ubuntu上:

apt install virt-manager

在RHEL/CentOS上:

dnf install virt-manager

安装好后,在应用菜单里找到“Virtual Machine Manager”,打开就是本地连接,如果你在Windows上,可以先用X11转发或NoMachine远程到宿主机桌面,再运行virt-manager,还可以用PuTTY设置X11转发,然后在Windows本地弹窗显示virt-manager界面。

图形界面里打开虚拟机的具体步骤

  1. 双击列表中的虚拟机图标,弹出一个显示器窗口。
  2. 如果虚拟机是关闭状态,单击顶部工具栏的“播放”按钮(开始)。
  3. 如果虚拟机在运行,但显示器黑屏,点击“发送键” -> “Ctrl+Alt+Del”唤醒系统登录界面。

virt-manager还提供了硬件详情页,你可以实时调整CPU、内存、添加网卡、挂载ISO镜像,这些操作同样会写入XML配置文件,下次启动自动生效。

如何打开kvm虚拟机?,KVM虚拟机启动步骤教程

打开KVM虚拟机时遇到黑屏或卡死怎么处理

图形界面打开虚拟机时,黑屏是一个高频问题,多数情况下不是因为系统崩溃,而是显示输出定向错了,KVM虚拟机的图形设备有VGA、QXL、Virtio三种类型,QXL支持高分辨率但部分系统缺驱动,Virtio则适合服务器场景,如果你用SSH命令行启动虚拟机,则根本没有图形输出,自然黑屏,此时应该用virsh console连进去,或者配置SPICE协议远程查看。

另一个典型场景是:宿主机是Ubuntu服务器,没有安装X11桌面,你却在virt-manager里试图打开图形窗口,virt-manager需要GTK图形环境,没有桌面它根本起不来,这种情况下,请老老实实使用virsh start加--console。

关于打开KVM虚拟机的三个常见问题

Q:KVM虚拟机无法打开,提示“无法获取EMulator”或者“/usr/bin/kvm 不存在”怎么办?

A:这是libvirt找不到KVM执行程序,在Ubuntu上,KVM包名通常是qemu-kvm,需要先安装:apt install qemu-kvm libvirt-daemon-system,安装后确认/usr/bin/kvm或/usr/libexec/qemu-kvm存在,如果路径不同,编辑/etc/libvirt/qemu.conf中的emulator路径,或者重新定义虚拟机。

Q:virsh start能打开虚拟机,但开机自启不生效,怎么回事?

A:先检查是否执行了virsh autostart 虚拟机名称,然后确认libvirtd服务是否设为开机自启:systemctl enable libvirtd,在多数发行版中,libvirtd默认开机启动,但如果你的虚拟机在守护进程启动前就尝试启动(比如宿主机启动顺序问题),会失败,可以设置/etc/libvirt/qemu/autostart目录下的软链接,并确保该目录可写。

Q:打开KVM虚拟机后,从外部SSH连不上,但虚拟机内部显示启动正常,是哪里没配置?

A:这是典型的网络问题,检查宿主机上的虚拟网卡是否存在,用ip link show查看,如果没有名为virbr0的桥接网卡,执行virsh net-start default启动默认NAT网络,并设置virsh net-autostart default,还要确认虚拟机内部网卡启用了DHCP,IP地址正确,且防火墙放行22端口。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/911017.html

赞 (0)
上一篇 2026年10月9日 18:28
下一篇 2026年10月9日 19:00

相关推荐

  • 七牛测试域名怎么配置,七牛云测试域名

    七牛测试域名是用于验证存储桶配置、加速规则及SDK集成的临时环境,其核心结论为:测试域名具备与正式域名相同的底层读写能力,但受限于有效期且严禁用于生产环境,2026年最佳实践是将其作为CI/CD流水线中的自动化回归测试节点,而非手动调试工具,在云存储架构日益复杂的今天,许多开发者仍混淆“测试域名”与“自定义域名……

    2026年7月9日
    01992
  • ee33新域名怎么注册,ee33新域名注册流程是什么

    ee33新域名作为一个新兴的顶级域名后缀,凭借其独特的记忆点和较高的性价比,正成为个人站长和中小企业建站的新选择,ee33新域名有哪些独特优势记忆与辨识度ee33新域名由两个字母和两个数字组成,简短且不常见,在众多新后缀中容易让人记住,行业共识认为,选择一个好记的域名能显著降低用户访问门槛,对于个人博客或品牌官……

    2026年8月19日
    01183
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 有域名了怎么建站,域名建站步骤有哪些

    有域名了怎么建站?答案是:先明确网站类型和预算,再选择服务器与建站方式,最后绑定域名并上线,整个过程并不复杂,但2026年的百度SEO环境对网站速度、HTTPS加密、移动端适配提出了更高要求,下文按实操顺序拆解,每一步都给出可执行方案,建站前必须先定三件事网站类型决定技术路线个人博客、企业展示、电商商城、行业门……

    2026年9月1日
    0664
  • apache只允许域名访问,apache配置域名访问

    在Apache中实现“只允许域名访问”的核心结论是:通过配置<VirtualHost>模块,移除默认监听*:80的无主机头(Host Header)默认虚拟主机,或将其重定向至HTTPS,确保所有未绑定域名的IP直接访问均被拒绝或跳转,从而杜绝IP直连带来的SEO权重分散与安全漏洞, 为什么必须限制……

    2026年5月29日
    01894

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(4条)

  • 星星247的头像
    星星247 2026年10月9日 18:47

    读了这篇文章,我深有感触。作者对打开的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

    • 小平静9195的头像
      小平静9195 2026年10月9日 18:47

      @星星247:读了这篇文章,我深有感触。作者对打开的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

    • 肉ai231的头像
      肉ai231 2026年10月9日 18:47

      @星星247:读了这篇文章,我深有感触。作者对打开的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

  • happy兔9的头像
    happy兔9 2026年10月9日 18:49

    读了这篇文章,我深有感触。作者对打开的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!