在Linux服务器上安装虚拟机,libvirt是目前最主流、最稳定的管理方案,核心操作流程是安装libvirt守护进程、配置虚拟网络、再通过virt-install命令加载系统镜像完成创建。
libvirt 安装虚拟机 为什么绕不开它
很多刚接触服务器虚拟化的朋友会问,libvirt 和 KVM 到底什么关系,这里用大白话讲明白:KVM是内核级的虚拟化引擎,负责把CPU和内存虚拟化到底层;而libvirt是一套管理工具集,相当于KVM的“遥控器”,你不需要直接面对复杂的QEMU命令行,libvirt帮你在上层统一调度存储、网络和虚拟机生命周期。
业内专家指出,libvirt 已经成为Linux虚拟化管理的事实标准,无论是OpenStack还是Proxmox VE,底层都在调libvirt的API,掌握libvirt,意味着你看懂了虚拟化的一大半逻辑。
libvirt 安装虚拟机 和 virt-manager 图形界面 选哪个
新手常纠结这个问题,virt-manager确实友好,鼠标点一点就能建虚拟机,适合单机少量管理,但生产环境讲究自动化、批量部署、远程操作,命令行工具virt-install加virsh才是主流姿势。
举个具体场景:你在上海某机房租了一台裸金属服务器,操作系统是Ubuntu Server 22.04,没有图形桌面,这时候virt-manager根本装不了,唯一可行的路径就是SSH连上去,用libvirt的命令行工具创建虚拟机,学会这套操作,libvirt 安装虚拟机 的性价比远高于图形界面方案。
准备工作:三件事没做好 后面全白搭
第一步,确认CPU虚拟化已开启,执行以下命令:
egrep -c '(vmx|svm)' /proc/cpuinfo
返回数字大于0,说明硬件虚拟化支持已启用,如果是云服务器,大概率不支持嵌套虚拟化,建议放弃挣扎,直接换物理机。
第二步,安装核心软件包,Debian/Ubuntu系统执行:
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils
CentOS/RHEL系则用:
sudo yum install -y qemu-kvm libvirt libvirt-client virt-install
安装完成后,启动并设置开机自启:

sudo systemctl enable --now libvirtd
用systemctl status libvirtd检查状态,看到active (running)就代表守护进程工作正常。
第三步,确认libvirt用户组权限,把你当前的用户加入libvirt和kvm组,避免每次操作都加sudo:
sudo usermod -aG libvirt,kvm $USER newgrp libvirt
libvirt 安装虚拟机 实操:一条命令完成部署
这里演示最常用的场景:通过本地ISO镜像文件,创建一个CentOS Stream 9虚拟机,先把ISO镜像放到/var/lib/libvirt/images/目录下,然后执行:
sudo virt-install --name centos9-test --memory 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/centos9-test.qcow2,size=20,format=qcow2 --cdrom /var/lib/libvirt/images/CentOS-Stream-9-latest-x86_64-dvd.iso --os-variant centos-stream9 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
参数含义拆解如下:
- –name:虚拟机名称,唯一标识,后续所有操作都靠它
- –memory / –vcpus:分配的内存大小和CPU核数,按需调整,不建议超过宿主机物理资源的一半(多数情况下性能会严重下降)
- –disk:磁盘路径、大小和格式,qcow2支持写时复制和快照
- –os-variant:优化虚拟机操作系统配置,可通过
osinfo-query os查看支持列表 - –network:网络模式,默认NAT让虚拟机通过宿主机上网
看到Domain installation still in progress提示,说明安装会话已经挂起等待VNC连接,用VNC客户端连接到宿主机IP的5900端口,就能看到图形化的CentOS安装界面。
磁盘映像管理技巧
如果不想要图形安装,还可以用无人值守的cloud-init方式,适合批量创建相同配置的虚拟机,先在宿主机上准备一个seed.img镜像,里面写好用户密码和网络配置,然后通过--disk参数挂载上去,操作路径为:用cloud-localds工具生成seed镜像,再让virt-install指向它,--import模式直接跳过安装环节,启动即用。

常用virsh命令:管理虚拟机的十八般武艺
虚拟机创建完成后,日常管理全交给virsh,下面这些命令是高频操作,建议收藏:
| 操作 | 命令示例 | 说明 |
|---|---|---|
| 查看所有虚拟机 | virsh list --all |
带–all会显示已关机状态 |
| 启动虚拟机 | virsh start centos9-test |
从关机状态启动 |
| 强制关机 | virsh destroy centos9-test |
相当于拔电源,谨慎使用 |
| 正常关机 | virsh shutdown centos9-test |
发送ACPI关机信号 |
| 设置开机自启 | virsh autostart centos9-test |
宿主机重启后自动拉起 |
| 挂起/恢复 | virsh suspend / resume |
保存内存状态到磁盘 |
更强大的操作是修改虚拟机硬件配置,执行virsh edit centos9-test会打开XML配置文件,你可以调整内存大小、添加第二块网卡、挂载新硬盘,修改完成后重启虚拟机生效。
克隆和迁移场景
用virt-clone可以快速复制一个虚拟机的完整镜像和配置:
sudo virt-clone --original centos9-test --name centos9-test-clone --auto-clone
这比手动复制磁盘文件再新建虚拟机快得多,因为会自动处理MAC地址和UUID的冲突,跨物理机迁移则需要用到virsh dumpxml导出配置、virsh migrate配合共享存储完成。
libvirt 安装虚拟机 常见问题排查
虚拟机启动失败,报cannot access /var/lib/libvirt/images/xxx.qcow2,多数情况下是SELinux或AppArmor在拦截,检查SELinux是否开启:
getenforce
如果输出Enforcing,有两种处理方案,一是临时放行sudo setenforce 0;二是给文件打上正确的标签sudo chcon -t virt_image_t /var/lib/libvirt/images/xxx.qcow2。
网桥模式上不了网,默认NAT网络能出网但在外部访问不到虚拟机,要让局域网其他机器直接连入虚拟机,需要配置Linux网桥,在/etc/network/interfaces里新建一个br0网桥,绑上物理网卡eth0,配置好IP,重启网络服务后用

--network bridge=br0创建虚拟机即可。
VNC连不上、黑屏,先确认监听地址是否设置为0.0.0.0,然后检查防火墙规则,在Ubuntu上执行sudo ufw allow 5900/tcp,CentOS上执行sudo firewall-cmd --add-port=5900/tcp --permanent && sudo firewall-cmd --reload。
VNC调优与性能损耗
VNC远程安装过程中,图形界面一卡一顿很常见,有个小技巧:在virt-install命令里加上--video virtio,用virtio显卡驱动,比默认的VGA模拟有较大比例的性能提升,安装完系统后记得在虚拟机内安装qemu-guest-agent,它能让宿主机更好地感知客户机的磁盘和网络状态。
从命令行安装到脚本化部署
操作熟练后,可以把virt-install命令封装成一个bash脚本,实现半自动化部署,核心逻辑就是循环读取参数、调用virt-install、等待启动完成后用virsh console登录,再配合DHCP的静态绑定,一个中小型测试环境的搭建在几分钟内就能完成。
libvirt 安装虚拟机 的核心结论
libvirt的价值在于用一套标准的XML描述语言统一了虚拟化资源的定义,你写的每个配置文件都可以跨平台复用,整个流程的绝对核心就三步:装好libvirt-daemon-system、准备好系统镜像、用virt-install挂载镜像并指定资源,剩下的都是围绕这三步的精细化调优。
关于libvirt 安装虚拟机 的常见问题
libvirt 安装虚拟机 一定要用root用户吗?
不一定,但至少要把用户加入libvirt组才能免sudo操作,直接用root虽然省事,但生产环境违反安全最小化原则,推荐做法是创建专用管理用户如virtadmin,纳入libvirt组,通过sudo来管理。
宿主机的磁盘空间怎么分配给虚拟机最合理?
建议为主机预留至少20%的剩余空间,因为qcow2格式是动态增长的,写多少占多少,虚拟机磁盘大小不要等于剩余空间总量,否则快照、临时交换文件会无处存放,统计显示,磁盘使用率达到90%以上时,io性能出现明显波动。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/917293.html


评论列表(4条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于安装虚拟机的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@cool129:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是安装虚拟机部分,给了我很多新的思路。感谢分享这么好的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于安装虚拟机的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是安装虚拟机部分,给了我很多新的思路。感谢分享这么好的内容!