使用KVM(Kernel-based Virtual Machine)命令行安装虚拟机是一种高效且灵活的方式,尤其适合在Linux服务器环境中快速部署虚拟化环境,KVM作为Linux内核的虚拟化模块,支持硬件加速,能够提供接近物理机的性能,以下是详细的安装步骤和操作流程,涵盖环境准备、虚拟机创建、磁盘配置、系统安装及后续管理等内容。

环境准备
在安装虚拟机前,需确保宿主机系统满足KVM运行的基本要求,首先检查CPU是否支持虚拟化扩展(Intel VT-x或AMD-V),可通过命令grep -E 'vmx|svm' /proc/cpuinfo验证,若输出结果包含vmx或svm,则说明支持,安装必要的软件包,包括KVM模块、QEMU(模拟器)和libvirt(虚拟化管理工具),以Ubuntu/Debian系统为例,执行以下命令安装:
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
安装完成后,启动libvirtd服务并设置开机自启:
sudo systemctl enable --now libvirtd
将当前用户添加到libvirt和kvm用户组,以避免权限问题:
sudo usermod -aG libvirt,kvm $USER
注销并重新登录使组权限生效,之后可通过virsh list --all验证libvirt是否正常工作。

创建虚拟机磁盘
虚拟机磁盘通常采用qcow2格式,支持动态扩容和快照功能,使用qemu-img命令创建磁盘文件,例如创建一个20GB的磁盘:
qemu-img create -f qcow2 /var/lib/libvirt/images/vm_disk.qcow2 20G
磁盘文件默认存储在/var/lib/libvirt/images/目录,这是libvirt的默认存储路径,若需调整路径,需确保目录存在且libvirt有访问权限。
安装虚拟机
通过virt-install命令可以交互式或非交互式安装虚拟机,以下是一个典型示例,安装一个基于Ubuntu的虚拟机:
sudo virt-install \ --name ubuntu_vm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/vm_disk.qcow2,size=20 \ --os-variant ubuntu20.04 \ --network bridge=virbr0 \ --graphics spice \ --cdrom /path/to/ubuntu-20.04.3-live-server-amd64.iso
参数说明:

--name:虚拟机名称,需唯一。--ram:分配内存大小(MB)。--vcpus:虚拟CPU核心数。--disk:磁盘路径和大小(GB),若使用已存在的磁盘文件,可省略size。--os-variant:指定操作系统类型,libvirt会优化配置。--network:网络模式,bridge=virbr0表示使用NAT网络,也可改为bridge=br0使用桥接模式。--graphics:图形显示协议,spice或vnc,若无图形界面可省略。--cdrom:指定ISO镜像路径,用于系统安装。
安装过程中,会弹出虚拟机控制台,按照提示完成系统安装,安装完成后,虚拟机会自动重启,此时需移除--cdrom参数以避免从ISO重启。
虚拟机管理
安装完成后,可通过virsh命令管理虚拟机,常用命令如下:
- 启动虚拟机:
sudo virsh start ubuntu_vm - 关闭虚拟机:
sudo virsh shutdown ubuntu_vm - 强制关机:
sudo virsh destroy ubuntu_vm - 查看虚拟机状态:
sudo virsh list --all - 编辑虚拟机配置:
sudo virsh edit ubuntu_vm(修改XML配置文件) - 删除虚拟机:
sudo virsh undefine ubuntu_vm(需先关闭虚拟机) 
若需调整虚拟机配置(如增加内存或CPU),可通过virsh edit修改XML文件中的<memory>和vcpu标签,然后重启虚拟机生效。
网络配置
默认情况下,KVM虚拟机使用NAT网络(virbr0),宿主机作为网关,若需桥接模式,使虚拟机直接接入物理网络,需配置网桥,首先安装bridge-utils:
sudo apt install bridge-utils
编辑网络配置文件(如/etc/network/interfaces),添加以下内容:
auto br0
iface br0 inet dhcp
    bridge_ports enp3s0  # 替换为物理网卡名称
    bridge_stp off
    bridge_fd 0
重启网络服务后,虚拟机配置中改为--network bridge=br0即可。
性能优化
为提升虚拟机性能,可启用KVM的硬件加速功能,确保宿主机BIOS中已开启VT-x/AMD-V,并在virt-install中添加--cpu host参数以透传CPU特性,使用SSD存储磁盘文件可显著提升I/O性能。
相关问答FAQs
如何解决虚拟机无法连接网络的问题?
答:首先检查虚拟机网络模式是否为NAT或桥接,若为NAT,确保dnsmasq服务在宿主机正常运行(systemctl status libvirtd);若为桥接,验证物理网卡与网桥配置是否正确,在虚拟机内检查网卡是否启用(如ip a),并确保DHCP客户端正常运行(Ubuntu中安装cloud-init可自动配置网络)。
如何为已安装的虚拟机扩容磁盘?
答:首先使用qemu-img扩容磁盘文件:
qemu-img resize /var/lib/libvirt/images/vm_disk.qcow2 +10G
然后登录虚拟机,使用分区工具(如fdisk或growpart)扩展分区,在Linux虚拟机中:
sudo growpart /dev/vda 1 # 扩展第一个分区 sudo resize2fs /dev/vda1 # 调整文件系统大小
Windows虚拟机需通过磁盘管理工具或diskpart命令完成扩容。
