2025-11-03 16:55:55 +01:00
2025-11-03 16:55:55 +01:00
2025-11-03 16:54:50 +01:00

Audit du swap sur VMs & CTs Proxmox (PVE)

🔍 Objectif
Lister, en un seul passage, létat du swap et de la mémoire pour un ensemble de VMs et de containers LXC sur un hôte Proxmox VE.

  • Pour les VMs : utilise le QEMU Guest Agent afin dexécuter des commandes invité (swapon --show, free -h).
  • Pour les CTs : exécute directement via pct exec les mêmes commandes.

🧩 Fonctionnement (résumé)

  1. Définit deux tableaux didentifiants : VM_IDS=(...) et CT_IDS=(...).
  2. Pour chaque VM :
    • Vérifie que la VM est allumée (qm status <id>).
    • Tente une commande via QEMU Agent (qm guest cmd <id> get-osinfo).
    • Si OK, exécute sur linvité :
      echo '[swapon]'; swapon --show || echo 'Aucun swap'; echo; echo '[free]'; free -h
      
    • Sinon, signale que lagent est inactif/non installé.
  3. Pour chaque CT :
    • Vérifie que le CT est running (pct status <id>).
    • Exécute les mêmes commandes avec pct exec.

Prérequis

  • Hôte Proxmox VE avec accès root (pas de sudo en PVE).
  • QEMU Guest Agent installé & actif dans les VMs (sinon seules les CTs seront auditées).
    • Linux (Debian/Ubuntu) dans la VM :
      apt update && apt install -y qemu-guest-agent
      systemctl enable --now qemu-guest-agent
      
    • Côté PVE (optionnel) : assurez-vous que Options ▸ QEMU Agent = Activé dans la conf de la VM.
  • Les containers LXC doivent avoir bash, swapon, free disponibles (paquets procps, util-linux selon distro).

📦 Installation

  1. Copier le script dans votre dépôt de scripts, ex. /home/scripts :
    install -m 0755 check_swap_all.sh /home/scripts/check_swap_all.sh
    
  2. Adapter les listes dIDs en tête de script :
    VM_IDS=(100 101 102 103 104)
    CT_IDS=(20009000 20232400 20308096 20401080 20508080)
    

💡 Conformément à votre organisation, /home/scripts est le dossier de référence.


▶️ Utilisation

Exécuter en root sur lhôte PVE :

/home/scripts/check_swap_all.sh

Extrait de sortie typique :

======================
🔍 CHECK SWAP - VMs
======================

➡️ VM 102
✅ QEMU Agent actif sur VM 102
[swapon]
NAME      TYPE SIZE USED PRIO
/dev/sda2 file   4G 1.2G   -2

[free]
               total        used        free      shared  buff/cache   available
Mem:           16Gi        3.1Gi        8.7Gi        183Mi        4.0Gi         12Gi
Swap:         4.0Gi        1.2Gi        2.8Gi

➡️ VM 103
⚠️ VM 103 allumée mais QEMU agent inactif ou non installé

======================
🔍 CHECK SWAP - CTs
======================

➡️ CT 20009000
✅ CT 20009000 en cours d'exécution
[swapon]
Aucun swap

[free]
               total        used        free      shared  buff/cache   available
Mem:          2048Mi        350Mi       1400Mi         50Mi        297Mi       1720Mi
Swap:            0B           0B           0B

➡️ CT 20308096
⚠️ CT 20308096 éteint

⏱️ Planification (cron) — audit régulier

Pour un rapport manuel ponctuel, lancer le script à la demande.
Pour un contrôle régulier, vous pouvez planifier un cron journalier à 08:00 (exécution locale, sortie visible dans mail root ou redirigée vers un fichier) :

0 8 * * * /home/scripts/check_swap_all.sh >> /var/log/check_swap_all.log 2>&1
  • Supprimez la redirection >> si vous préférez recevoir lemail cron root.
  • Pour un run silencieux (uniquement log) : gardez la redirection comme ci-dessus.

🧰 Dépannage

  • “QEMU agent inactif” sur VM :
    • Vérifier linstallation/service côté VM (systemctl status qemu-guest-agent).
    • Vérifier loption QEMU Agent activée dans la conf PVE de la VM.
  • Commandes introuvables dans CT/VM :
    • Installer procps pour free, et vérifier util-linux pour swapon.
  • Temps de réponse long sur certaines VMs :
    • Lappel qm guest exec attend la fin de la commande ; sous forte charge, la sortie peut être retardée.

🛡️ Sécurité & impacts

  • Le script est read-only côté invités (consultation détat), sans modification de configuration.
  • Aucune opération nest lancée si la VM/CT nest pas running.
  • Les appels invités via QEMU Agent exigent une VM fiablement configurée (agent en service).

🗑️ Désinstallation

rm -f /home/scripts/check_swap_all.sh
rm -f /var/log/check_swap_all.log  # si vous aviez activé la redirection cron

✍️ Note

  • Script compatible PVE standards (qm, pct).
  • Aucune dépendance externe hors PVE et outils système de base dans linvité.
  • Idéal comme check rapide avant dactiver une purge automatisée (cf. swap_cleaner.sh).

📄 Licence

Utilisation interne. Adapter selon votre politique de sécurité.

Description
No description provided
Readme 68 KiB
Languages
Shell 100%