Linux KVM虚拟化虚拟机部署从入门到实战
开始前先确认硬件和系统支持
并不是所有Linux服务器都能直接运行KVM虚拟化。
你需要确认三个要点:
- CPU支持硬件虚拟化:在终端执行
egrep -c '(vmx|svm)' /proc/cpuinfo,返回值大于0表示支持。 - 操作系统为64位:执行
uname -m,输出应为x86_64。 - 内核版本:建议使用3.10以上内核,通过
uname -r查看。
如果上述条件都满足,就可以继续往下走了。
如果CPU不支持虚拟化,请考虑更换硬件或改用其他虚拟化方案。
安装KVM及管理工具
这里以CentOS 7/8和Ubuntu 20.04为例演示安装命令。
CentOS:
yum install -y qemu-kvm libvirt virt-install bridge-utils
systemctl enable --now libvirtd
Ubuntu:
apt update && apt install -y qemu-kvm libvirt-daemon-system virtinst bridge-utils
systemctl enable --now libvirtd
安装后执行 lsmod | grep kvm,看到 kvm 和 kvm_intel(或 kvm_amd)模块已加载即成功。
注意普通用户需要加入 libvirt 组才能管理虚拟机:usermod -aG libvirt $(whoami),然后重新登录。
创建第一台Linux虚拟机
使用 virt-install 命令创建虚拟机是最直接的方式。
下面创建一个1核1G内存、10G磁盘的CentOS 7虚拟机:
virt-install \
--name centos7-test \
--ram 1024 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=10 \
--cdrom /path/to/CentOS-7-x86_64-Minimal.iso \
--os-variant centos7.0 \
--graphics vnc,listen=0.0.0.0,password=123456 \
--noautoconsole
参数说明:--name 虚拟机名称;--ram 内存MB;--vcpus CPU核心数;--disk 指定磁盘路径和大小;--cdrom ISO镜像位置;--os-variant 优化操作系统配置;--graphics 启用VNC远程控制;--noautoconsole 不自动进入控制台。
执行后命令行会返回“域已创建”,虚拟机随即启动。
你可以用 virsh list 查看运行中的虚拟机。
部署中的常见坑与对策
- 报错“kvm: not supported”:检查BIOS中Intel VT-x或AMD-V是否未开启,重启进BIOS启用。
- “no network with specified name”:默认NAT网络未启动,执行
virsh net-start default即可。 - 普通用户无法管理虚拟机:忘记加入
libvirt组,或者重新登录未生效,建议执行newgrp libvirt临时切换。 - VNC连接时密码错误:创建时指定了
password,连接时需输入;若需修改,使用virsh edit centos7-test修改graphics节点的passwd值。 - 磁盘空间不足:检查
/var/lib/libvirt/images/所在分区剩余空间,建议预留至少两倍虚拟机磁盘大小的空间。
验证虚拟机是否正常运行
通过以下几步快速确认虚拟机状态:
- 查看虚拟机列表:
virsh list看到虚拟机处于running状态。 - 登录控制台:如果创建时未指定VNC,可以用
virsh console centos7-test直接进入串口控制台(需在客户机内配置grub启用串口)。 - 测试网络连通:找到虚拟机IP(通过
virsh net-dhcp-leases default获取),然后从宿主机ping该IP,能通表示网络正常。 - 暂停与恢复:
virsh suspend centos7-test暂停,virsh resume centos7-test恢复,检查管理命令是否生效。
如果以上步骤全部通过,说明你的Linux KVM虚拟化虚拟机部署已经成功,可以正常使用了。
后续你可以根据需求调整资源配置,或者通过virt-manager图形工具进一步管理。
遇到任何异常时,建议先查看 /var/log/libvirt/qemu/ 下的日志文件,里面记录了虚拟机启动的详细报错信息。