常用操作

快照管理

  • 最好先关机再打快照,否则内存一同打进快照后,恢复时非常慢。
# 创建快照 -atomic 确保快照创建是原子操作,要么成功要么失败,不会部分完成。
virsh snapshot-create-as 虚拟机名称 快照名称 --atomic

# 查看快照
virsh snapshot-list 虚拟机名称

# 恢复快照
virsh snapshot-revert 虚拟机名称 快照名称

# 删除快照
virsh snapshot-delete 虚拟机名称 快照名称

创建虚拟机

通过官方 qcow2 镜像

下面以 openEuler 为例

# 下载镜像
wget https://repo.openeuler.org/openEuler-24.03-LTS-SP3/virtual_machine_img/x86_64/openEuler-24.03-LTS-SP3-x86_64.qcow2.xz

# 备份一份(可选)
cp openEuler-24.03-LTS-SP3-x86_64.qcow2.xz openEuler-24.03-LTS-SP3-x86_64.qcow2.xz.bak

# 解压镜像
xz -d openEuler-24.03-LTS-SP3-x86_64.qcow2.xz

# 将镜像的虚拟容量扩展到所需大小,例如 100GB
qemu-img resize openEuler-24.03-LTS-SP3-x86_64.qcow2 100G

# 自定义 CPU、内存并拉起虚拟机,名称、cpu、内存、磁盘路径、网络等按需填写
sudo virt-install \
  --name t1 \
  --vcpus 4 \
  --memory 8192 \
  --disk path=t1.qcow2,format=qcow2,bus=virtio \
  --network network=default,model=virtio \
  --os-variant generic \
  --import \
  --noautoconsole

# 启动后可通过console配置ip等信息,另外还需扩容分区和创建文件系统,否则扩容的磁盘空间将无法使用

通过克隆

# 确定源虚拟机名称
virsh list --all

# 克隆前建议先停止(关机)源虚拟机,以确保磁盘数据的一致性。
virsh shutdown 源虚拟机名称

# 执行克隆
virt-clone -o 源虚拟机名称 -n 新虚拟机名称 -f 新虚拟机磁盘文件的存储路径.qcow2

为虚拟机添加描述

# 创建虚拟机时添加,在使用 virt-install 创建虚拟机时,添加 --description 参数即可:
virt-install --name my-vm-01 --description "研发部-张三-用于Web接口测试" ...

# 创建后添加描述
virsh desc prod-harbor --new-desc "生产环境harbor" --live --config
# --config:修改下次启动时生效(持久化)
# --live:修改立即生效(仅限本次运行,重启丢失)
# 通常两个参数配合使用,如果机器已经关机,则只添加 --config 参数即可

虚拟机改名

# 停止虚拟机(重命名必须在关机状态下进行):
virsh shutdown 老名称

# 执行重命名:
virsh domrename 老名称 新名称

关闭虚拟机

  • 正常关机(建议首选):
virsh shutdown <虚拟机名称>
  • 强制断电(如果正常关机无响应):
virsh destroy <虚拟机名称>

删除虚拟机

较新版本的 virsh 支持使用参数在删除配置的同时一并删除关联的存储和 NVRAM 变量。

virsh undefine <虚拟机名称> --remove-all-storage --nvram --managed-save
  • --remove-all-storage:删除该虚拟机所有挂载的磁盘卷。
  • --nvram:如果虚拟机使用了 UEFI 启动,此参数会一并清理 NVRAM 文件。
  • --managed-save:清理可能存在的休眠保存状态。