Backup Proxmox server: start KVM at boot

Proxmox is a great virtualization platform which I am using for a few years now and I’m very familiar with it.

I’ve setup a Proxmox HA cluster which works great, but there are situations where cluster is just too much and all you need is a backup Proxmox server sitting there offline waiting to jump-in in case of primary server failure.

At one client I’ve made a setup of two bare metal Proxmox servers, each running it’s own Proxmox software (no cluster mode) with network storage (NAS) and synchronized/duplicated KVM configuration in /etc/pve/qemu-server.

Backup server (proxmox2) is mostly offline (powered off), but sometimes the client powers it up and uses the KVM with some special software, which is only used once/twice a month.

So, I’ve setup a script which runs at startup and checks which KVMs must be run on that server. It searches the KVM config files for a note: “autostart: proxmox2”. If this is found, it starts the KVM. On the primary server the note is: “autostart: proxmox1”.

Here is the script, just save it into /etc/init.d/start-kvm, chmod it 755 and add it to startup (update-rc.d start-kvm defaults). Now go to you Proxmox GUI and add into KVM’s Notes: “autostart: <youserver’s hostname>” (without “”).

#!/bin/sh
### BEGIN INIT INFO
# Provides: start-kvm
# Required-Start:    +iscsi pve-cluster cman clvm $network $local_fs $remote_fs
# Required-Stop:     +iscsi pve-cluster cman clvm $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start KVMs
### END INIT INFO

case "$1" in
        start)
                HOSTNAME=`/bin/hostname`
                RUNCOUNT=`/bin/grep "autostart%3A ${HOSTNAME}$" /etc/pve/qemu-server/* -l | /usr/bin/wc -l`
                if [ ${RUNCOUNT} -gt 0 ]; then
                        cd /etc/pve/qemu-server
                        VMIDS=`/bin/grep "autostart%3A ${HOSTNAME}$" -l * | /usr/bin/awk -F"." '{print $1}'`
                        for vmid in ${VMIDS}
                        do
                                echo "Starting VM ${vmid}"
                                /usr/sbin/qm start ${vmid}
                        done
                fi
        ;;
        stop)
        ;;
        *)
        ;;
esac
exit 0

If you have a better idea, please use comments below and share…. thank you!