Les derniers mois, j’ai eu beaucoup de projets en proxmox. Certaines tâches, j’ai découvert, peut se faire qu’en ligne commande ou peut se faire plus vite en ligne commande.
Kill VM
Ça m’est arrivé quelques fois de ne pouvoir pas arrêter une VM via l’interface graphique, voila ma solution:
echo who wants to die?
# qui veut mourir?
read machine
# je declare l'id du machine bloque
result=$(qm list | awk '{print $1}' |grep $machine)
# je vérifie l'existence de cette machine dans la liste de machines existantes
if [ $? != 0 ]; then
echo no such machine boss
elif [ $result ]; then
# je cherche le numéro de processus assigne à la machine concerne
tokill=$(ps aux | grep "/usr/bin/kvm -id $machine" | awk -F " " '{print $2;exit}')
# j'arrête le processus
kill -9 $tokill
echo $tokill killed
fi
Effacer VM
À la fin d’un projet, quand il y a trop de machines à effacer, c’est plutôt bien d’avoir un peu d’aide :
# Quelles machines ?
read -p "who? " vm
# Itérer par la liste
for v in $vm; do
# Effacer les vms une apres l'autre
qm destroy $v --purge
done
Deplacer VM (échoué)
Le script suivant ne marche pas, c’est un script qui devrait prendre l’id d’une machine, le type de disque virtuel et déplacer ce disque sur un autre espace de stockage:
# Je prends l'ids des machines concernées et le type de disque (ça permet
# d'identifier le disque, je souhaite déplacer) et je specifie le format de la
# liste
read -p "id of machine and disk like ide1, sata2... separated by ; Go " vm
# Je configure le séparateur de champ en m'assurant que ma liste est bien
# formatée
# Ex:
# vm1 sata2;
# vm2 ide1;
OIFS="$IFS"
IFS=";"
# Je commence d'itérer par la liste
for v in $vm;do
qm disk move $v Backup --delete
done
IFS=$OIFS
Pourquoi ça ne marche pas ?
Sauvegarder
En fin un petit script de sauvegarde informatique qui marche vraiment bien avec crontab.
Ce qui est spécial est le système de sauvegarde de journaux. J’ai voulu avoir les traces de chaque déplacement/copie organisée d’une manière logique qui facilite la découverte des erreurs.
À ce moment-là, j’avais un disque peu fiable.
for folder in {PhotoOriginal,PhotoEdit,Docs,dump,};
do
year=`date +%Y`
month=`date +%m`
day=`date +%d`
time=`date +%H:%M`
# echo $year $month $day $folder $date $time
mkdir -p /home/radu/cron_logs/$year
mkdir -p /home/radu/cron_logs/$year/month_$month
mkdir -p /home/radu/cron_logs/$year/month_$month/$folder
rsync -az --update --info=progress2 --delete /mnt/pve/Public/$folder /mnt/Backup/ --log-file=/home/radu/cron_logs/$year/month_$month/$folder/$day-$time.log ;
done