PVE虚拟机关机自动还原脚本

本脚本实现了Proxmox VE虚拟机在关机之后,能够自动还原快照。实现系统永远只读的一个形式。

github地址:https://github.com/jiangcuo/foxi/blob/main/hookscripts/rollback.pl

实现原理:

1、提前给虚拟机磁盘打上快照。

2、在虚拟机关机之后,钩子脚本调用qemu-img恢复磁盘快照。

使用限制

需要文件级存储,磁盘类型为qcow2,不支持块存储,好让qemu-img执行快照。

不能修改虚拟机的磁盘名,使用默认的虚拟机命名格式即可。

现在只支持一块硬盘做还原操作。如需多块。自行添加命令即可。

不适用链接克隆磁盘

使用说明

1、给虚拟机硬盘打一个快照

root@pve1: qemu-img snapshot -c snapshot /mnt/pve/Nvme/images/802/vm-802-disk-0.qcow2
#验证一下快照是否生效:
root@pve1:/var/lib/vz/snippets# qemu-img snapshot -l /mnt/pve/Nvme/images/802/vm-802-disk-0.qcow2
#有如下即代表成功
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK ICOUNT
1 snapshot 0 B 2022-02-21 13:20:22 00:00:00.000 0

2、下载钩子脚本

 

wget -P /var/lib/vz/snippets/ https://fastly.jsdelivr.net/gh/jiangcuo/foxi/hookscripts/rollback.pl 
chmod +x /var/lib/vz/snippets/rollback.pl 
#将hookscript添加到虚拟机中,注意替换vmid 
qm set <vmid> --hookscript local:snippets/rollback.pl

3、修改脚本中的vmpath

将脚本中/mnt/pve/Nvme改成自己的磁盘路径。

 

如果你的是/mnt/pve/SSD,那么最后格式应该为。

my $conf = PVE::QemuConfig->load_config($vmid);
my $phase = shift;
my $vmpath = "/mnt/pve/SSD"
my $cmd ="qemu-img snapshot -a snapshot $vmpath/images/$vmid/vm-$vmid-disk-0.qcow2";

注意,如果自己的硬盘不是disk0,而是disk1或者其他,请更改my $cmd  将磁盘的disk-0改成disk-1

如下

my $cmd ="qemu-img snapshot -a snapshot $vmpath/images/$vmid/vm-$vmid-disk-1.qcow2";

bug反馈

请加入网页右上角qq群。

版权声明:
作者:佛西
链接:https://foxi.buduanwang.vip/virtualization/1592.html/
文章版权归作者所有,未经允许请勿转载
如需获得支持,请点击网页右上角
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录