PVE 关机重启时 自动挂起 虚拟机
关机重启时自动挂起虚拟机
不在乎过程的直接到最后面复制最后两段红字就行了
剩下还有关机的时候自动挂起黑群的虚拟机
指令是找到了,后面加不加1都可以,
区别在于--todisk是个布尔值没声明就是默认0,声明了就是1,声明了加1就。。。也可以(官网说明)
qm suspend 101 --todisk
官方论坛有人写的pve-hibernate-all 很不错
https://forum.proxmox.com/threads/feature-request-hibernate-vms-on-pve-host-reboot.65529/page-2
写个自动挂起全部的脚本
在/etc/systemd/system/pve-manager.service 服务的stop中加入执行,这样当停止pve manager自动就会执行挂起全部
mkdir /var/lib/vz/snippets
因为没有这个文件夹
cat > /var/lib/vz/snippets/pve-hibernate-all <<EOF
qm list | grep running | awk -F '[^0-9]*' '\$0=\$2' | while read -r vm_id; do qm suspend \$vm_id --todisk 1; done;
EOF
添加执行权限
chmod 755 /var/lib/vz/snippets/pve-hibernate-all
添加到 /etc/systemd/system/pve-manager.service 中
ExecStop=/var/lib/vz/snippets/pve-hibernate-all
添加该行
最好在其他的stop前面,不然执行顺序没法被保证
老哥给的参考
[Service]
Environment="PVE_LOG_ID=pve-guests"
ExecStartPre=-/usr/share/pve-manager/helpers/pve-startall-delay
ExecStart=/usr/bin/pvesh --nooutput create /nodes/localhost/startall
ExecStop=/var/lib/vz/snippets/pve-hibernate-all
ExecStop=-/usr/bin/vzdump -stop
ExecStop=/usr/bin/pvesh --nooutput create /nodes/localhost/stopall
具体操作在shell或者ssh中输入
vi /etc/systemd/system/pve-manager.service
找到21行按o添加行并编辑
输入或者粘贴
ExecStop=/var/lib/vz/snippets/pve-hibernate-all
按esc键输入:wq保存并关闭
记得切换输入法,最起码百度中文输入的时候按不上去
systemctl daemon-reload
重新加载systemd cache
目前直接运行shell显示
awk: not an option: -bash=
https://github.com/gvalkov/tailon-legacy/issues/62
给出的是切换awk
dpkg -l |grep awk
还真是mawk,那就切换下awk到gawk,本来想换成写入脚本就是mawk一样不可以。。。
apt-get install gawk && apt-get remove mawk
还是有错。。。应该是 awk -F 后面没有空格导致的???
真正问题是cat写入文件对$符号处理问题导致的因为vi去看了。。。$被替换了
呃。。。重启并不会执行挂起。。。挂在这个点貌似。。。不起作用
ExecStop=/usr/bin/pvesh --nooutput create /nodes/localhost/stopall
行删除试试,毕竟挂起了就不用关机了,也是执行不到。。。
要不然改poweroff 还有reboot指令???等待几分钟执行完再重启???
sleep 秒数
确定开关机的位置用脚本代替
mv /usr/sbin/reboot /usr/sbin/reboot_now
mv /usr/sbin/poweroff /usr/sbin/poweroff_now
等到直到没有running
mkdir /var/lib/vz/snippets/
cat > /var/lib/vz/snippets/pve-hibernate-all <<EOF
qm list | grep running | awk -F '[^0-9]*' '\$0=\$2' | while read -r vm_id; do qm suspend \$vm_id --todisk 1; done;
while qm list | grep running>/dev/null; do sleep 1; done;
EOF
cat > /usr/sbin/poweroff <<EOF
/var/lib/vz/snippets/pve-hibernate-all
/usr/sbin/poweroff_now
EOF
cat > /usr/sbin/reboot <<EOF
/var/lib/vz/snippets/pve-hibernate-all
/usr/sbin/reboot_now
EOF
chmod 777 /usr/sbin/reboot /usr/sbin/poweroff /var/lib/vz/snippets/pve-hibernate-all
每次系统更新完得重新添加。。。因为这些指令很有可能被重置
嗯。。。原来的关机和重启就是777只是link到systemctl我也不知道怎么做到的。。。
如果挂起出错会锁住虚拟机解锁
qm unlock 101