打开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,还有几个衍生命令需要掌握。

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中的域名区分大小写,比如

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界面。
图形界面里打开虚拟机的具体步骤
- 双击列表中的虚拟机图标,弹出一个显示器窗口。
- 如果虚拟机是关闭状态,单击顶部工具栏的“播放”按钮(开始)。
- 如果虚拟机在运行,但显示器黑屏,点击“发送键” -> “Ctrl+Alt+Del”唤醒系统登录界面。
virt-manager还提供了硬件详情页,你可以实时调整CPU、内存、添加网卡、挂载ISO镜像,这些操作同样会写入XML配置文件,下次启动自动生效。

打开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


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