Linux自带虚拟机通常指KVM/QEMU加libvirt这套方案,新手先开CPU虚拟化,装好qemu-kvm、libvirt和virt-manager,再建NAT网络与qcow2磁盘,就能在图形界面或命令行里创建第一台虚拟机。 下面按“确认环境安装建机配网优化排错”的顺序,把可验证的操作路径讲清楚。
先确认:Linux自带虚拟机到底指什么
很多新手以为Linux发行版里有一个叫“虚拟机”的单独软件,实际更常见的情况是:Linux内核自带KVM模块,配合QEMU做硬件模拟,libvirt负责管理,virt-manager提供图形界面,它们分工不同,但组合起来就是常用的Linux自带虚拟机方案。
KVM、QEMU、libvirt和virt-manager的关系
- KVM:内核模块,负责CPU和内存虚拟化,需要CPU支持VT-x或AMD-V。
- QEMU:设备模拟器,负责磁盘、网卡、显示等虚拟硬件。
- libvirt:管理接口和守护进程,统一管理虚拟机、网络、存储池。
- virt-manager:图形化前端,适合桌面用户;命令行则常用
virsh和virt-install。
据Linux内核文档和libvirt官方文档,KVM需要硬件虚拟化扩展;没有开启时,虚拟机可能退化为纯软件模拟,速度会明显变慢,业内专家指出,桌面新手用virt-manager上手最快,服务器环境则更适合用virsh配合脚本管理。
你的机器能不能跑KVM
先在终端执行:
grep -Eoc '(vmx|svm)' /proc/cpuinfo lsmod | grep kvm ls -l /dev/kvm
第一条输出大于0,说明CPU暴露了虚拟化标志;第二条能看到kvm_intel或kvm_amd;第三条存在/dev/kvm,普通用户还需要加入kvm和libvirt组,若没有输出,先进BIOS/UEFI开启Intel VT-x、AMD-V或SVM Mode,云服务器上还要确认商家是否允许嵌套虚拟化,多数情况下默认不开放。
Linux自带虚拟机怎么用:从安装到第一次开机
安装思路很简单:装软件包、启动libvirtd、把当前用户加入用户组、确认默认网络,不同发行版包名有差异,下面给常见路径。
Ubuntu下KVM虚拟机配置步骤
Ubuntu和Debian系可以这样装:
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virt-manager bridge-utils ovmf sudo systemctl enable --now libvirtd sudo usermod -aG libvirt,kvm $USER
执行完重新登录,再运行:
virsh list --all virsh net-list --all sudo virt-host-validate
如果default网络没启动,执行sudo virsh net-start default和sudo virsh net-autostart default,Fedora/RHEL系可用sudo dnf install -y @virtualization,Arch系可用sudo pacman -S virt-manager qemu-full libvirt edk2-ovmf,启动服务与用户组操作类似。
Linux KVM虚拟机安装Windows教程
在virt-manager里点“新建虚拟机”,选择本地ISO,分配4GB内存、2个vCPU、40GB qcow2磁盘作为新手起点,网络先选default NAT,显示选SPICE,安装Windows时有两个细节:
- Windows 11通常需要UEFI和TPM,创建时选OVMF固件,并添加TPM 2.0设备。
- Windows安装程序可能识别不到virtio磁盘或网卡,新手可先把磁盘总线设为SATA、网卡设为e1000,装完系统后再安装Fedora项目提供的virtio-win驱动,最后切换为virtio。
如果直接用virtio,安装界面会看不到硬盘,需要点击“加载驱动程序”并挂载virtio-win ISO,这个顺序别弄反,否则容易卡在分区页面。
没有桌面环境时用virt-install
服务器没有图形界面时,可以用命令行建机:
sudo virt-install \ --name win10 \ --ram 4096 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/win10.qcow2,size=40,format=qcow2,bus=sata \ --cdrom /home/user/iso/Win10.iso \ --network network=default,model=e1000 \ --graphics spice \ --os-variant win10
建完后用virsh list --all查看状态,用virsh console或SPICE客户端连接,等Windows装好virtio驱动,再用virsh edit win10把磁盘和网卡模型改成virtio,性能会更稳。
Linux虚拟机桥接网络和NAT区别
网络是新手最容易卡住的一步,默认的NAT让虚拟机通过宿主机上网,配置简单;桥接则让虚拟机像局域网里一台独立电脑,适合对外提供服务,两者没有绝对好坏,关键看场景。
| 模式 | 虚拟机上网 | 外部主动访问虚拟机 | 适用场景 |
|---|---|---|---|
| NAT | 可以 | 通常需要端口转发 | 新手测试、笔记本、临时环境 |
| 桥接 | 可以 | 可以 | 服务器、对外服务、局域网互访 |
| 仅主机 | 不能直接出网 | 宿主机可访问 | 隔离实验、内部测试 |
NAT模式:新手先从这个开始
libvirt默认会创建virbr0和default网络,虚拟机拿到的地址通常在私有网段里,出网靠宿主机转发,查看租约:
virsh net-list --all virsh net-dhcp-leases default
这种模式对无线网卡也友好,不用折腾交换机,做开发测试、装软件、临时开Windows,先用NAT最省心。
桥接模式:让虚拟机像一台独立电脑
桥接需要把物理网卡加入网桥,用NetworkManager时可以参考:
sudo nmcli con add type bridge ifname br0 con-name br0 sudo nmcli con add type bridge-slave ifname enp3s0 master br0 sudo nmcli con up br0
然后把虚拟机的网络来源改成“桥接设备br0”,注意:远程SSH操作时直接改桥接有断网风险,最好在本地控制台旁操作,或先准备好回滚命令,桥接适合跑Web服务、数据库、需要被局域网其他设备访问的虚拟机。
无线网卡桥接的现实限制
不少无线网卡驱动不支持透明桥接,强行配置可能失败,遇到这种情况,用NAT加端口转发更实际,或者改用路由模式,别在无线桥接上耗太久,这是驱动层限制,不是virt-manager设置错了。
存储池、快照和克隆:少走弯路
虚拟机磁盘文件比配置文件更占空间,默认存储池一般在/var/lib/libvirt/images,用virsh pool-list --all可以查看,qcow2格式支持稀疏分配和快照,适合大多数新手。
qcow2磁盘和默认存储池
创建磁盘时优先选qcow2,不要一上来就预分配整块空间,查看磁盘信息:
qemu-img info /var/lib/libvirt/images/win10.qcow2
磁盘快满时,可以在virt-manager里扩容,再进系统扩展分区,宿主机空间不足时,别只删快照文件,先用virsh snapshot-list确认关系。
快照不是备份
给虚拟机做快照很简单:
virsh snapshot-create-as --domain win10 snap1 "before update" virsh snapshot-list win10 virsh snapshot-revert win10 snap1
快照适合系统更新前留退路,但它和虚拟机磁盘放在同一存储上,宿主机磁盘损坏时可能一起丢,重要数据仍要做外部备份,行业共识认为,快照解决的是“短时间回滚”,不是“灾备”。
克隆后要改主机名和IP
复制一台现成虚拟机可以用:
virt-clone --original win10 --name win10-test --auto-clone
克隆后要改主机名、IP和机器ID,Windows克隆建议先sysprep,否则可能出现SID冲突;Linux克隆要清理/etc/machine-id和网络配置,直接开机就用,容易出现网络冲突。
Linux自带虚拟机性能设置技巧
性能优化不需要一上来全开,先把CPU、磁盘、网络三个瓶颈看清楚,再逐项调整。
CPU与内存
- vCPU数量别超过物理核心数,新手给2到4个vCPU通常够用。
- CPU模式可选
host-passthrough,让虚拟机看到宿主机CPU特性,兼容性和性能更平衡。 - 内存按用途分配,桌面Windows建议4GB起步,Linux服务器实验1GB到2GB也能跑。
- 开启内存气球设备后,可在需要时调整内存,但不要低于系统最低要求。
磁盘与显示
磁盘总线优先virtio,缓存模式可试cache=none,io=native,并开启discard=unmap支持TRIM,桌面虚拟机用SPICE显示,需要3D加速时再开VirGL,服务器虚拟机不必装图形界面,减少资源占用。
网络
网卡模型选virtio-net,宿主机内核支持时启用vhost-net,多队列适合高吞吐场景,普通测试不用急着开,用ethtool -S和virsh domstats可以看丢包与流量,先定位再调参。
常见故障排查
提示KVM acceleration not available
先查ls -l /dev/kvm和grep -Eoc '(vmx|svm)' /proc/cpuinfo,没有标志就进BIOS开虚拟化;有标志但权限不足,执行sudo usermod -aG kvm $USER后重新登录,云主机还要确认是否支持嵌套虚拟化。
虚拟机能启动但上不了网
按顺序查:virsh net-list --all看default是否active;virsh net-dhcp-leases default看是否拿到地址;虚拟机内查IP和网关;宿主机查防火墙转发,NAT模式下,虚拟机网关通常是168.122.1,但以实际网络配置为准。
virt-manager连不上libvirt
常见原因是libvirtd没启动或用户不在libvirt组,执行systemctl status libvirtd、groups确认,改完用户组要注销重登,不是开个新终端就生效。
把安装、网络、存储、性能四件事按顺序做完,Linux自带虚拟机就能稳定日常使用,新手不必追求一次把所有参数调到最优,先用NAT和qcow2跑通,再按场景改桥接、virtio和快照策略,返工最少。
Q&A:Linux自带虚拟机怎么用常见问题
Linux自带虚拟机怎么用命令查看运行状态?
用virsh list --all看虚拟机和状态,virsh dominfo 虚拟机名看CPU内存,virsh net-list --all看网络,systemctl status libvirtd看管理服务,需要看磁盘和块设备时用virsh domblklist 虚拟机名。
Linux KVM虚拟机和VirtualBox哪个更适合新手?
桌面新手临时装系统、用共享文件夹和USB设备,VirtualBox图形化更直接;需要长期运行、接近内核性能、学习服务器虚拟化,KVM更合适,行业共识认为,KVM在Linux服务器场景更常见,VirtualBox在跨平台桌面测试里更省事。
Linux自带虚拟机安装Windows需要额外驱动吗?
需要,Windows安装程序通常不带virtio磁盘和网卡驱动,直接用virtio会找不到硬盘或网络,准备Fedora项目提供的virtio-win驱动ISO,在安装界面加载;或者先用SATA和e1000完成安装,进系统后再装驱动并切换virtio。