snap
[lnks@kp920 ~]$ virsh list --all
Id Name State
------------------------------------------
1 kylin-v10 running
- chenlianghong shut off
[lnks@kp920 ~]$ virsh dumpxml chenlianghong | grep "source file"
<source file='/var/lib/libvirt/filesystems/chenglianghong.qcow2'/>
<source file='/tmp/alpine-virt-3.22.2-aarch64.iso'/>
[lnks@kp920 ~]$ ls -lah /var/lib/libvirt/filesystems/chenglianghong.qcow2
-rw-r--r-- 1 root root 157M Jan 14 10:56 /var/lib/libvirt/filesystems/chenglianghong.qcow2
[lnks@kp920 ~]$ sudo qemu-img snapshot -c "afterInstall" /var/lib/libvirt/filesystems/chenglianghong.qcow2
[sudo] password for lnks:
[lnks@kp920 ~]$ qemu-img snapshot -l /var/lib/libvirt/filesystems/chenglianghong.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK ICOUNT
1 afterInstall 0 B 2026-01-14 11:04:57 00:00:00.000 0
Use snap
# 以后想回滚(危险!会覆盖当前状态)
qemu-img snapshot -a "afterInstall" /var/lib/libvirt/filesystems/chenglianghong.qcow2
# 回滚后重新启动虚拟机即可
# 优点:快照速度极快,空间效率高,不会损坏 UEFI 变量
# 缺点:必须关机 + 手动管理(建议自己建个小脚本或别名)
# 连快照一起备份
qemu-img convert -O qcow2 -c chenglianghong.qcow2 chenlianghong-back-compressed.qcow2
# 验证备份文件的快照是否正常
qemu-img snapshot -l chenlianghong-back-compressed.qcow2
# 查看备份文件的快照详细信息
qemu-img info --output=json backup.qcow2 | grep -A 10 snapshots
Backup virsh machine
# virsh dumpxml --inactive chenlianghong > ~/vm-backups/chenlianghong.virsh-$(date +%Y%m%d).xml
[lnks@kp920 virsh]$ virsh dumpxml --inactive chenlianghong > chenlianghong.virsh-$(date +%Y%m%d%H).xml
[lnks@kp920 virsh]$ virsh domblklist chenlianghong
Target Source
-------------------------------------------------------------
sda /var/lib/libvirt/filesystems/chenglianghong.qcow2
sdb /tmp/alpine-virt-3.22.2-aarch64.iso
[lnks@kp920 virsh]$ cp --sparse=always /var/lib/libvirt/filesystems/chenglianghong.qcow2 chenlianghong.virsh-$(date +%Y%m%d%H).qcow2
[lnks@kp920 virsh]$ ls -lah
total 139M
drwxr-xr-x 2 lnks lnks 4.0K Jan 14 11:21 .
drwxr-xr-x. 8 lnks lnks 4.0K Jan 14 11:17 ..
-rw-r--r-- 1 lnks lnks 157M Jan 14 11:21 chenlianghong.virsh-20260114.qcow2
-rw-r--r-- 1 lnks lnks 4.8K Jan 14 11:18 chenlianghong.virsh-20260114.xml
[lnks@kp920 virsh]$
ReStore virsh machine
[lnks@kp920 sda]$ sudo mv chenlianghong.virsh-20260114.qcow2 /var/lib/libvirt/filesystems/chenlianghong.qcow2
[lnks@kp920 sda]$ sudo ls -lah /var/lib/libvirt/filesystems/
total 230G
drwx--x--x. 2 root root 4.0K Jan 14 13:04 .
drwxr-xr-x. 9 root root 4.0K Dec 9 19:36 ..
-rw-r--r-- 1 root root 66G Jan 14 13:02 chenglianghong.qcow2
-rw-r--r-- 1 root root 157M Jan 14 13:02 chenlianghong.qcow2
[lnks@kp920 sda]$ virsh edit chenlianghong
Domain chenlianghong XML configuration edited.
sudo cp --sparse=always /sda/lianghong/virsh/chenlianghong.virsh-20260114.qcow2 /var/lib/libvirt/filesystems/
# 如果磁盘路径变了,先编辑 XML 文件,把 <source file='...'> 改成新路径
# virsh define ~/vm-backups/某个备份.xml
# 把指定的 XML 文件注册/定义到 libvirt 系统中,成为一个新的(或覆盖现有的)持久化虚拟机
virsh define /sda/lianghong/virsh/chenlianghong.virsh-20260114.xml
virsh start myvm
# 最可靠的做法
# virsh dumpxml --inactive 你的虚拟机名 > ~/vm-backups/你的虚拟机名-$(date +%Y%m%d).xml
virsh dumpxml --inactive chenlianghong > /sda/lianghong/virsh/chenlianghong.virsh-20260114.xml
Other
[lnks@kp920 sda]$ virsh shutdown chenlianghong
Domain chenlianghong is being shutdown
[lnks@kp920 sda]$ virsh list --all --persistent
Id Name State
------------------------------------------
1 kylin-v10 running
- chenlianghong shut off
[lnks@kp920 sda]$ sudo ls -lah /etc/libvirt/qemu/
[sudo] password for lnks:
total 152K
drwx------. 4 root root 4.0K Jan 14 10:45 .
drwx------. 6 root root 4.0K Jan 7 17:37 ..
drwxr-xr-x. 2 root root 4.0K Jul 25 22:53 autostart
-rw------- 1 root root 5.0K Jan 14 10:45 chenlianghong.xml
-rw------- 1 root root 4.1K Jan 13 20:46 kylin-v10.xml
[lnks@kp920 sda]$ virsh edit chenlianghong
Domain chenlianghong XML configuration edited.
[lnks@kp920 sda]$ virsh start chenlianghong
Domain chenlianghong started
[lnks@kp920 sda]$ virsh list --all --persistent
Id Name State
------------------------------------------
1 kylin-v10 running
42 chenlianghong running
[lnks@kp920 sda]$ virsh shutdown chenlianghong
Domain chenlianghong is being shutdown
[lnks@kp920 lianghong]$ sudo qemu-img snapshot -l /var/lib/libvirt/filesystems/chenlianghong.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK ICOUNT
1 afterInstall 0 B 2026-01-14 11:04:57 00:00:00.000 0
[lnks@kp920 lianghong]$ sudo qemu-img snapshot -c "add-user-docker" /var/lib/libvirt/filesystems/chenlianghong.qcow2
[lnks@kp920 lianghong]$ sudo qemu-img snapshot -l /var/lib/libvirt/filesystems/chenlianghong.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK ICOUNT
1 afterInstall 0 B 2026-01-14 11:04:57 00:00:00.000 0
2 add-user-docker 0 B 2026-01-14 13:22:30 00:00:00.000 0
[lnks@kp920 lianghong]$ virsh domblklist chenlianghong
Target Source
------------------------------------------------------------
sda /var/lib/libvirt/filesystems/chenlianghong.qcow2
sdb -
[lnks@kp920 lianghong]$ virsh dumpxml --inactive chenlianghong > chenlianghong.virsh-$(date +%Y%m%d%H).xml
[lnks@kp920 lianghong]$ cp --sparse=always /var/lib/libvirt/filesystems/chenlianghong.qcow2 chenlianghong.virsh-$(date +%Y%m%d%H).qcow2
[lnks@kp920 lianghong]$ ls -lah
total 386M
drwxr-xr-x 2 lnks lnks 4.0K Jan 14 13:24 .
drwxr-xr-x 13 lnks lnks 4.0K Jan 14 13:17 ..
-rw-r--r-- 1 lnks lnks 419M Jan 14 13:24 chenlianghong.virsh-2026011413.qcow2
-rw-r--r-- 1 lnks lnks 4.7K Jan 14 13:24 chenlianghong.virsh-2026011413.xml
Just Quick
virsh shutdown chenlianghong
virsh list --all --persistent
sudo qemu-img snapshot -l /var/lib/libvirt/filesystems/chenlianghong.qcow2
# 创建快照
sudo qemu-img snapshot -c "deploy sync customer" /var/lib/libvirt/filesystems/chenlianghong.qcow2
# 使用ID恢复快照(例如恢复ID为1的快照)
sudo qemu-img snapshot -a 1 /var/lib/libvirt/filesystems/chenlianghong.qcow2
# 使用快照名称恢复(例如恢复"afterInstall"快照)
sudo qemu-img snapshot -a afterInstall /var/lib/libvirt/filesystems/chenlianghong.qcow2
virsh start chenlianghong