在Linux系统中管理虚拟机,最主流的方案是基于KVM内核虚拟化模块配合libvirt管理工具集,这种方式性能优异且生态成熟,能够满足绝大多数场景的虚拟机管理需求。

环境准备
首先需要确认系统是否支持虚拟化,并且安装对应的管理工具。如果是Ubuntu/Debian系系统,执行以下命令安装依赖:
# 检查CPU是否支持虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo # 如果输出大于0说明支持虚拟化 # 安装KVM和相关管理工具 sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst
如果是CentOS/RHEL系系统,执行以下命令安装:
# 检查CPU虚拟化支持 egrep -c '(vmx|svm)' /proc/cpuinfo # 安装依赖包 sudo yum install -y qemu-kvm libvirt virt-install bridge-utils
安装完成后启动libvirt服务并设置开机自启:
sudo systemctl start libvirtd sudo systemctl enable libvirtd
使用virsh命令管理虚拟机
virsh是libvirt提供的命令行管理工具,支持几乎所有虚拟机操作,下面是常用操作示例。
创建虚拟机
可以通过virt-install命令快速创建虚拟机,以下示例创建一个2核4G内存、20G磁盘的CentOS虚拟机:
sudo virt-install --name centos-vm # 虚拟机名称 --ram 4096 # 内存大小,单位MB --vcpus 2 # CPU核心数 --disk path=/var/lib/libvirt/images/centos-vm.qcow2,size=20 # 磁盘路径和大小,单位GB --os-type linux # 操作系统类型 --os-variant centos7.0 # 操作系统版本 --network bridge=virbr0 # 网络配置,使用默认NAT网桥 --graphics vnc,listen=0.0.0.0,port=5901 # VNC配置,方便远程连接 --cdrom /path/to/CentOS-7-x86_64-DVD-2009.iso # 系统镜像路径 --noautoconsole # 不自动连接到控制台
虚拟机基础操作
创建完成后可以通过virsh命令进行日常管理:
- 查看所有虚拟机状态:
sudo virsh list --all - 启动虚拟机:
sudo virsh start centos-vm - 关闭虚拟机:
sudo virsh shutdown centos-vm - 强制关闭虚拟机:
sudo virsh destroy centos-vm - 重启虚拟机:
sudo virsh reboot centos-vm - 删除虚拟机(同时删除磁盘):
sudo virsh undefine centos-vm --remove-all-storage
虚拟机配置修改
如果需要修改虚拟机的CPU、内存等配置,可以先编辑虚拟机的XML配置文件:
# 编辑指定虚拟机的配置文件 sudo virsh edit centos-vm
在打开的XML文件中,可以修改<vcpu>标签调整CPU核心数,修改<memory>标签调整内存大小,修改完成后保存,需要重启虚拟机让配置生效。
虚拟机磁盘和网络管理
磁盘管理
如果需要给虚拟机添加新磁盘,可以执行以下步骤:
# 创建新的磁盘镜像,大小10G,格式为qcow2 sudo qemu-img create -f qcow2 /var/lib/libvirt/images/centos-vm-data.qcow2 10G # 将磁盘挂载到虚拟机 sudo virsh attach-disk centos-vm /var/lib/libvirt/images/centos-vm-data.qcow2 vdb --persistent
其中vdb是磁盘在虚拟机中的设备名,--persistent参数表示配置持久化,重启虚拟机后配置不会丢失。
网络管理
默认情况下虚拟机使用NAT网络,如果需要创建桥接网络让虚拟机和物理网络处于同一网段,可以修改网络配置:
# 查看现有网络 sudo virsh net-list --all # 创建新的桥接网络,编辑网络XML文件 sudo virsh net-edit default
在XML文件中可以调整网络的桥接配置,修改完成后重启网络:
sudo virsh net-destroy default sudo virsh net-start default
虚拟机快照管理
libvirt支持虚拟机快照功能,可以方便地进行状态备份和恢复:
- 创建快照:
sudo virsh snapshot-create-as centos-vm snap1 "初始系统快照" - 查看快照列表:
sudo virsh snapshot-list centos-vm - 恢复快照:
sudo virsh snapshot-revert centos-vm snap1 - 删除快照:
sudo virsh snapshot-delete centos-vm snap1
需要注意的是,快照功能依赖磁盘格式为qcow2,raw格式的磁盘不支持快照。