要在KVM宿主机上开启虚拟机,最直接的命令就是virsh start 虚拟机名称,图形界面里双击对应虚拟机点击运行即可;如果虚拟机尚未创建,得先用virt-install或virt-manager完成定义。
KVM虚拟机怎么开启:先分清“启动”和“启用”
很多人把“开启KVM虚拟机”理解成两种动作:一种是宿主机已经有一台定义好的虚拟机,只是处于关机状态,把它拉起来;另一种是宿主机刚装好KVM环境,要从零创建一台能跑的虚拟机,这两种场景操作路径不同,但底层都依赖KVM内核模块和libvirt管理工具。
- 启动已存在的虚拟机:
virsh start 域名或图形界面点击“运行”。 - 创建并启动新虚拟机:
virt-install带磁盘、内存、ISO参数,安装系统后自动拉起。 - 启用KVM能力:确认
/dev/kvm存在,CPU支持VMX或SVM,内核模块kvm_intel或kvm_amd已加载。
理解这个区分后,实际操作会清晰很多,下面按最常见的使用场景拆开讲。
Linux KVM开启虚拟机命令
在Linux服务器上,libvirt提供的virsh是管理虚拟机的标准命令行工具,大多数生产环境没有安装桌面环境,因此掌握命令方式比图形界面更实用。
无图形界面怎么开启kvm虚拟机
纯SSH登录宿主机后,用以下命令即可完成查看、启动、进入控制台等操作。
- 查看所有虚拟机及其状态:
virsh list --all - 查看正在运行的虚拟机:
virsh list - 启动指定虚拟机:
virsh start 虚拟机名称 - 强制关机:
virsh destroy 虚拟机名称 - 正常关机:
virsh shutdown 虚拟机名称 - 查看某台虚拟机详细信息:
virsh dominfo 虚拟机名称
假设虚拟机在配置文件中叫 web-server-01,启动命令就是:
virsh start web-server-01
如果虚拟机已经处于运行状态,再次执行会报错,可以先用 virsh list 确认,多数情况下,刚定义好的虚拟机会出现在 virsh list --all 的输出里,状态为 shut off,这时执行 virsh start 就会拉起来。
批量开启多台虚拟机
宿主机上虚拟机数量多时,可以用循环批量启动所有处于关机状态的虚拟机。
for vm in $(virsh list --all --name); do
state=$(virsh domstate "$vm")
if [ "$state" = "shut off" ]; then
virsh start "$vm"
fi
done
这段脚本先列出所有虚拟机名称,再逐台判断状态,只启动 shut off 的虚拟机,适合宿主机重启后批量恢复业务的场景。
KVM和VMware哪个适合个人开发者
这是搜索量很高的对比问题,尤其出现在个人开发者想搭建本地测试环境时,从开启虚拟机的方式看,两者差异明显。
| 对比项 | KVM | VMware Workstation/ESXi |
|---|---|---|
| 授权费用 | 免费开源,无额外授权费 | Workstation 需购买授权,ESXi 部分免费但高级功能收费 |
| 命令行管理 | virsh / virt-install,适合脚本化 |
PowerCLI 或 vSphere API,学习成本较高 |
| 图形界面 | virt-manager,轻量够用 | Workstation 图形功能更完善,拖拽、快照更友好 |
| 宿主机要求 | Linux内核,依赖CPU虚拟化 | Windows/Linux均可,闭源驱动 |
| 适合人群 | 熟悉Linux、需要批量自动化、预算有限的开发者 | 习惯Windows、需要商用支持、图形操作频繁的团队 |
个人开发者如果主要在Linux笔记本或一台旧服务器上做测试,KVM的免费优势和命令行管理会更顺手,如果主力机是Windows且不想碰Linux命令,VMware Workstation 的图形体验更好,行业共识认为,KVM在云服务商和Linux运维岗位中的普及度更高,因为它的底层集成和自动化能力强于多数闭源方案。
KVM虚拟机开机自动启动配置
宿主机重启后,默认情况下虚拟机不会自动启动,如果业务要求虚拟机随宿主机拉起,需要单独配置 autostart。
让虚拟机随宿主机启动
virsh autostart 虚拟机名称
执行后,libvirt 会在 /etc/libvirt/qemu/autostart/ 目录下创建对应虚拟机配置文件的符号链接,宿主机开机时,libvirtd 服务会自动拉起这些标记为 autostart 的虚拟机。
- 查看某台虚拟机是否已设置自动启动:
virsh dominfo 虚拟机名称 | grep Autostart - 取消自动启动:
virsh autostart --disable 虚拟机名称 - 查看所有自动启动的虚拟机:
ls -l /etc/libvirt/qemu/autostart/
批量设置自动启动
如果宿主机上有几十台业务虚拟机,手工逐台设置效率太低,可以用脚本处理。
for vm in $(virsh list --all --name); do virsh autostart "$vm" done
执行后,所有已定义的虚拟机都会具备开机自启能力,需要注意,这个操作只影响 libvirt 管理的虚拟机,对直接由 QEMU 进程启动的虚拟机无效。
从零开启一台KVM虚拟机的完整步骤
如果宿主机刚装好KVM环境,需要先创建虚拟机,下面按操作顺序给出可验证的命令。
检查KVM模块与libvirtd服务
先确认CPU支持虚拟化,内核模块加载正常。
egrep -c '(vmx|svm)' /proc/cpuinfo lsmod | grep kvm ls -l /dev/kvm systemctl status libvirtd
- 第一条命令输出非0,说明CPU支持虚拟化。
- 第二条命令会显示
kvm_intel或kvm_amd模块。 - 第三条命令确认
/dev/kvm设备存在。 - 第四条命令确认 libvirtd 服务运行中。
/dev/kvm 不存在,需要检查BIOS是否开启VT-x或AMD-V,libvirtd 没有运行,执行:
systemctl enable --now libvirtd
创建并首次启动Linux虚拟机
用 virt-install 创建一台带图形安装的Linux虚拟机,以下命令会定义虚拟机并自动启动安装过程。
virt-install --name test-ubuntu --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/test-ubuntu.qcow2,size=20,format=qcow2 --os-variant ubuntu22.04 --network bridge=virbr0 --cdrom /home/user/ubuntu-22.04.4-live-server-amd64.iso --graphics vnc,listen=0.0.0.0 --noautoconsole
参数含义:
--name是虚拟机唯一标识,后续virsh start test-ubuntu用它。--disk指定磁盘文件路径、大小和格式,常用 qcow2。--os-variant帮助 libvirt 优化硬件配置,可用osinfo-query os查看支持列表。--network bridge=virbr0使用默认NAT网络。--graphics vnc让安装界面通过VNC暴露,便于远程连接。
命令执行后,虚拟机进入安装流程,安装完成后,如果系统重启后进入 shut off 状态,用 virsh start test-ubuntu 即可再次开启。
启动失败常见排查
- 权限不足:当前用户不在
libvirt组,无法连接 qemu:///system,执行sudo usermod -aG libvirt $(whoami)后重新登录。 - 磁盘路径不存在:
--disk指定的目录或文件路径错误,libvirt 无法创建磁盘。 - 网络桥接不存在:
virbr0未启用,执行virsh net-start default和virsh net-autostart default。 - ISO镜像路径错误
:宿主机上找不到安装介质,控制台会提示找不到启动设备。
- SELinux/AppArmor 拦截:镜像文件放在非标准目录时,SELinux 可能阻止访问,需调整文件上下文或改用
/var/lib/libvirt/images/。
场景化选择:命令行、图形界面还是自动启动
不同使用场景对“开启虚拟机”的需求不同,操作方式也可以灵活切换。
- 放置在北京机房的物理服务器:没有本地显示器,只能通过SSH远程操作,安装
libvirt-clients后,在本地用virt-manager远程连接宿主机,或直接用virsh命令管理,北京地域的网络延迟通常在可接受范围内,VNC 和 SPICE 桌面能正常使用。 - 个人开发者本地测试:推荐
virt-manager图形界面,双击虚拟机名称就能启动,点击“打开”查看系统安装界面,熟悉命令后,再过渡到virsh提高效率。 - 生产环境宿主机恢复:优先使用 autostart 配置让虚拟机随宿主机自启,减少人工介入,同时编写批量启动脚本,便于非自动启动虚拟机快速拉起。
在KVM环境里开启虚拟机,核心动作就是 virsh start 或图形界面点击运行;从零创建则要先完成 virt-install 定义,把“启动”“创建”“自动启动”三条路径分开理解,就能覆盖绝大多数实际操作场景。
Q&A
kvm虚拟机怎么开启失败常见原因有哪些
最常见的原因是当前用户没有 libvirt 权限,无法访问 qemu:///system,其次是虚拟机配置文件损坏、磁盘镜像不存在或网络桥接未启动,可以先执行 virsh list --all 确认虚拟机是否被 libvirt 识别,再用 sudo journalctl -u libvirtd -n 50 查看服务日志。
没有图形界面怎么开启kvm虚拟机并连接控制台
在纯命令行环境下,用 virsh start 虚拟机名称 启动后,执行 virsh console 虚拟机名称 可以进入串口控制台,需要虚拟机内部开启串口登录,否则控制台可能无输出,对于未完成安装的新虚拟机,可用 virt-viewer 在本地远程连接宿主机的 VNC 端口,或使用 virsh vncdisplay 虚拟机名称 查看VNC端口号。
kvm虚拟机开机自动启动如何取消
取消自动启动的命令是 virsh autostart --disable 虚拟机名称,执行后,/etc/libvirt/qemu/autostart/ 目录中的对应符号链接会被删除,取消后宿主机重启时,该虚拟机不会自动拉起,但仍可通过 virsh start 手动启动。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/653354.html





