# Procedura adattata al mio nodo Proxmox per pulizia ESP e fix kernel
## 1. Verificare l’UUID della ESP
cat /etc/kernel/proxmox-boot-uuids
# Output nel mio caso:
# 67D6-E50C
## 2. Verificare quale device corrisponde all’UUID
ls -al /dev/disk/by-uuid/67D6-E50C
# Output nel mio caso:
# /dev/disk/by-uuid/67D6-E50C -> ../../nvme0n1p2
# La mia ESP è quindi /dev/nvme0n1p2
## 3. Montare manualmente la ESP
mkdir /tmp/myesp
mount /dev/nvme0n1p2 /tmp/myesp
## 4. Elencare i kernel presenti nella ESP
ll /tmp/myesp/*/*
# Qui individuo le directory dei kernel vecchi da rimuovere:
# /tmp/myesp/.../5.15.108-1-pve
# /tmp/myesp/.../6.2.16-5-pve
## 5. Rimuovere SOLO i kernel vecchi
rm -rf /tmp/myesp/*/*/5.15.108-1-pve
rm -rf /tmp/myesp/*/*/6.2.16-5-pve
## 6. Smontare la ESP
umount /tmp/myesp
## 7. Riparare dpkg e completare l’installazione del kernel
apt-get -f install
Tag: #proxmox
🦁 Fondamenti di Virtualizzazione: Tutto su Proxmox VE
1. Introduzione a Proxmox VE: Il Sistema Operativo Hyperconvergente
- Cos’è: Proxmox Virtual Environment (VE) non è un semplice hypervisor, ma un sistema operativo completo basato su Debian Linux, progettato specificamente per la virtualizzazione enterprise.
- Filosofia: Fornisce una piattaforma unificata, open-source e integrata per gestire macchine virtuali (VM) e container dallo stesso pannello di controllo web.
- Modello di Distribuzione: Si installa direttamente sull’hardware server (bare-metal), posizionandosi tecnicamente nella categoria degli hypervisor Type 1.
- Componenti Core: La sua potenza deriva dall’integrazione di due tecnologie:
- KVM (Kernel-based Virtual Machine): Per la virtualizzazione completa delle macchine virtuali.
- LXC (Linux Containers): Per la virtualizzazione leggera dei container.
- Web Interface: Tutta la gestione avviene attraverso un’interfaccia web moderna (https://server-ip:8006), eliminando la necessità di software client dedicati su PC degli amministratori.
2. Architettura Tecnica e Componenti di Base
- Base Solida: Poggia su un kernel Linux Debian stabilizzato e a lungo supporto, garantendo compatibilità hardware estrema e stabilità.
- KVM (Kernel-based Virtual Machine):
- Trasforma il kernel Linux in un hypervisor a tutti gli effetti (Type 1).
- Utilizza le estensioni di virtualizzazione hardware della CPU (Intel VT-x o AMD-V) per ottenere performance native.
- Gestisce direttamente l’accesso alla CPU e alla memoria delle VM.
- Per l’I/O, può utilizzare:
- Emulazione completa (e1000 per NIC, ide per dischi – lenta ma compatibile).
- Paravirtualizzazione (virtio-net per NIC, virtio-blk per dischi – alta performance, richiede driver nel guest).
- PCI Passthrough (VT-d/AMD-Vi) per assegnare hardware fisico direttamente a una VM.
- LXC (Linux Containers):
- Tecnologia di virtualizzazione a livello di sistema operativo.
- I container condividono il kernel host, risultando in overhead quasi nullo, avvio istantaneo e densità molto elevata.
- Ideale per servizi isolati che non richiedono un kernel personalizzato o driver specifici (es.: web server, database, reverse proxy, applicazioni in container).
- Storage Management:
- Supporta nativamente una vasta gamma di backend di storage:
- Locale: ZFS (consigliato), LVM-Thin, Directory, XFS.
- Di Rete: NFS, CIFS/SMB.
- Shared/Cluster: Ceph (integrato nativamente), iSCSI, Fibre Channel.
- ZFS Integration: Il supporto integrato per ZFS è un punto di forza, offrendo feature enterprise come copy-on-write, snapshot atomiche, compressione, deduplicazione e riparazione dei dati automatica (self-healing).
- Supporta nativamente una vasta gamma di backend di storage:
- Networking:
- Basato su Linux bridging e VLANs (802.1q).
- Supporta Bonding/LAG (aggregazione di schede di rete) per ridondanza e aumento di banda.
- Software-Defined Networking (SDN): Dalla versione 7.0, introduce un SDN nativo per gestire reti overlay (VXLan) e sotto-sistemi di rete più complessi in modo centralizzato.
3. Il Cuore del Cluster: High Availability e Gestione Centralizzata
- Modello a Cluster:
- Più nodi Proxmox (server fisici) possono essere uniti in un cluster tramite Corosync.
- Il cluster appare come una singola entità gestibile dall’interfaccia web.
- Tutte le configurazioni (VM, storage, rete) sono replicate in tempo reale tra i nodi.
- High Availability (HA) Integrato:
- Feature fondamentale per l’enterprise.
- Se un nodo del cluster si spegne o ha un malfunzionamento hardware, le VM e i container contrassegnati come “HA” vengono automaticamente riavviati su un altro nodo del cluster in pochi secondi/minuti.
- Il sistema monitora lo stato dei nodi e delle VM e prende decisioni senza intervento umano.
- Live Migration:
- Migrazione a Caldo (Live Migration): Permette di spostare una VM in esecuzione da un nodo all’altro senza downtime percepibile. Essenziale per la manutenzione dell’hardware e il bilanciamento del carico.
- Migrazione delle Storage: Permette di spostare i dischi di una VM (anche in esecuzione) da uno storage backend a un altro (es.: da storage locale a Ceph).
4. Vantaggi Chiave di Proxmox VE
- Open Source e Costo Zero: La licenza è GNU AGPL, v3. Non ci sono costi di licensing per le funzionalità core. Il modello di subscription esiste solo per l’accesso ai repository enterprise stabili e al supporto tecnico.
- Ecosistema Completo: Tutto ciò che serve è integrato: virtualizzazione, storage (ZFS, Ceph), networking, clustering, HA. Niente più “vendor lock-in” o integrazioni complesse tra software diversi.
- Alta Performance: L’uso di KVM e LXC garantisce performance pari o molto vicine al bare-metal.
- Flessibilità Operativa: La scelta tra VM (per carichi di lavoro che necessitano di un OS completo) e Container (per leggerezza e densità) offre la massima flessibilità di deployment.
- Gestione Unificata: L’interfaccia web centrale semplifica enormemente la gestione di intere infrastrutture, riducendo la curva di apprendimento e gli errori di configurazione.
- Comunità Attiva e Supporto Enterprise: Una vasta comunità offre supporto gratuito nei forum. Per ambienti critici, è disponibile un supporto professionale a pagamento.
5. Considerazioni e Best Practices
- Hardware Consigliato:
- CPU: 64-bit (x86-64) con supporto per virtualizzazione hardware (Intel VT-x/AMD-V). Per il PCI Passthrough, serve IOMMU (Intel VT-d/AMD-Vi).
- RAM: Più è, meglio è. Calcolare il bisogno per l’OS host + (RAM per VM) + (RAM per Ceph/ZFS se usati).
- Storage: SSD NVMe sono fortemente consigliati per disco di sistema e per le VM. Gli HDD sono adatti solo per storage di archivio.
- Rete: Schede multiporta Gigabit o, meglio, 10Gbps+ sono essenziali per il traffico di migrazione, Ceph e VM.
- Pianificazione dello Storage:
- ZFS locale è un’ottima scelta per un singolo nodo o per un cluster con storage non condiviso.
- Ceph è la soluzione per creare un storage iper-convergente e ridondante distribuito su più nodi. Richiede almeno 3 nodi per la produzione.
- Sicurezza:
- Cambiare la password di root e la porta SSH di default.
- Configurare firewall basato su
pve-firewalloiptables/nftables. - Isolare la rete di management del cluster da quella delle VM.
- Tenere aggiornato il sistema applicando gli aggiornamenti dai repository.
6. Conclusione: Perché Scegliere Proxmox VE?
Proxmox VE si è affermato come una soluzione enterprise-grade alternativa totalmente percorribile a costosi stack commerciali come VMware vSphere. La sua natura open-source, l’incredibile set di funzionalità integrate e la straordinaria stabilità lo rendono la scelta ideale per:
- PMI che necessitano di un’infrastruttura virtuale robusta senza costi di licensing proibitivi.
- Entusiasti e Homelab per imparare tecnologie enterprise a costo zero.
- Aziende di qualsiasi dimensione che vogliono evitare il vendor lock-in e costruire un’infrastruttura moderna, flessibile e scalabile basata su standard aperti.
È uno degli esempi più riusciti di come il software open-source possa non solo competere, ma spesso superare, le soluzioni commerciali in termini di features, flessibilità e rapporto qualità/prezzo.
CPU diverse ! Proxmox cluster .
Quando gestisci un cluster Proxmox, pensi sempre che la parte difficile sia l’hardware, i dischi, la rete… e invece a volte il problema arriva da dove meno te lo aspetti 😄. È quello che è successo a me qualche giorno fa, quando una semplice migrazione live ha iniziato a comportarsi in modo strano. Tutto sembrava procedere bene: la RAM veniva trasferita, il tunnel era attivo, nessun errore evidente. Poi, proprio al momento del passaggio finale, boom… “resume failed – client closed connection”. La VM si spegneva sul nodo di destinazione come se qualcuno avesse tirato la spina 😑.
All’inizio ho pensato a un problema di rete, poi a un bug, poi a qualche servizio bloccato. Ho controllato conntrack, dbus‑vmstate, log di QEMU, journal… niente. Tutto sembrava in ordine. Eppure la migrazione continuava a fallire, sempre verso lo stesso nodo. Una cosa che ti fa grattare la testa e dire “ma che diavolo sta succedendo” 🤨.
La svolta è arrivata quando ho iniziato a guardare non i log, non la rete, ma l’hardware. I miei tre nodi non erano affatto gemelli: uno montava un Intel i5, gli altri due erano Xeon, ma di modelli diversi. E lì ho avuto l’illuminazione 💡. Anche se sono tutte CPU Intel, non condividono lo stesso set di istruzioni. Alcune hanno AVX2, altre no. Alcune hanno AES‑NI, altre lo gestiscono in modo diverso. E quando una VM è configurata con “cpu: host”, Proxmox espone al guest tutte le istruzioni della CPU fisica del nodo sorgente. Se il nodo di destinazione non le supporta, la migrazione live non può funzionare. È come cercare di far ripartire un motore diesel su un’auto a benzina… non succederà mai 😅.
A quel punto tutto aveva senso. QEMU provava a ripristinare lo stato della CPU sul nodo target, trovava un’istruzione non supportata e chiudeva la connessione. Da qui l’errore “resume failed”. Una cosa che sembra misteriosa finché non guardi il quadro completo.
La soluzione, alla fine, è stata sorprendentemente semplice 😊. Ho cambiato il modello CPU della VM da “host” a “x86‑64‑v2”, un modello più portabile che espone solo le istruzioni comuni a tutte le CPU moderne. In pratica, un linguaggio CPU che tutti i nodi del cluster capiscono senza problemi. Dopo aver applicato questa modifica, la migrazione live ha iniziato a funzionare immediatamente, senza errori, senza spegnimenti improvvisi, senza sorprese. Una sensazione di sollievo incredibile 😌.
Se tutti i nodi supportano AES‑NI, si può anche usare “x86‑64‑v2‑AES”, che offre un piccolo vantaggio prestazionale. Chi vuole mantenere performance elevate può provare “host‑model”, che è più compatibile di “host” ma comunque non perfetto in cluster molto diversi. “qemu64” resta l’opzione più portabile in assoluto, ma oggi è troppo limitante per la maggior parte dei carichi.
Alla fine, questa esperienza mi ha ricordato una cosa importante: in un cluster eterogeneo, la compatibilità CPU è fondamentale. Se incontri errori di migrazione live come “resume failed”, non farti ingannare da log strani o messaggi fuorvianti. A volte la risposta è molto più semplice: i nodi parlano lingue diverse, e basta scegliere un modello CPU che tutti capiscono per riportare la pace nel cluster 🚀.
ZFS + Proxmox: un mix potente per storage enterprise-grade 🛠️
ZFS (Zettabyte File System) è molto più di un filesystem; è un sistema di storage completo che offre data integrity, pooling flessibile, snapshot efficienti e RAID integrato. Insieme a Proxmox Cluster, ZFS crea una piattaforma solida per virtualizzazione aziendale.
Qui vediamo perché ZFS conviene su Proxmox, quali compromessi ci sono e come configurarlo in modo pratico.
Perché scegliere ZFS? 🧐
1. Data integrity senza pari
- Checksum a livello di blocco: ZFS calcola e verifica checksum per ogni blocco fisico.
- Auto-correzione: se un disco si corrompe, ZFS ripristina i dati da ridondanza (mirror, RAIDZ).
- Zero write-through cache: anche in caso di crash improvviso, le scritture in memoria vengono sempre riportate su disco prima che l’OS segnali il completamento.
In pratica: probabilità minima di data loss dovuta a bit rot o errori hardware.
2. Pooling flessibile e espansibile
- ZFS raggruppa più dischi fisici (o SSD) in un pool.
- Puoi aggiungere/rimuovere dischi senza ripartizionare tutto, solo espandendo il pool.
- Possibilità di avere diversi dataset all’interno dello stesso pool:
- Ciascuno può avere quota, snapshot policy, compressione e RAID type differenti.
Ideale per ambienti misti (OS/VM + librerie media + backup).
3. Snapshot e rollback rapidi
- Le snapshot sono copy-on-write: inizialmente puntano ai blocchi esistenti; cambiano solo quelli modificati.
- Creazione quasi istantanea, con impatto minimo sulle performance (anche su HDD).
- Serve per backup point-in-time, test software senza paura e rollback in caso di problemi.
Ottimo per VM: puoi fare snapshot prima di upgrade OS o patch e ripristinare rapidamente se qualcosa va storto.
4. RAID integrato ed efficiente
- ZFS offre RAIDZ (RAID5), RAIDZ2 (RAID6) e RAIDZ3, che combinano ridondanza e capacità in modo flessibile.
- In pratica: puoi avere 1/2/3 disco(i) di spare per rebuild e protezione dati.
- Opzione mirror per prestazioni superiori, soprattutto con SSD.
Questo toglie la necessità di hardware RAID (anche se può coesistere).
Proxmox Cluster + ZFS: un matrimonio ideale 🤝
Proxmox Cluster si basa su Ceph o, più comunemente in ambienti piccoli/medi, su storage locale condiviso via NFS/iSCSI. Usare ZFS qui porta benefici concreti:
- Storage locale per VM:
- Ogni node ha il proprio pool ZFS con mirror/RAIDZ.
- Le VM si “vedono” come dischi locali ad alte prestazioni.
- Cluster è resiliente a guasti singoli (anche di nodo).
- Facilità di espansione e gestione:
- Aggiungi dischi ai node uno alla volta, senza downtime.
- Proxmox usa ZFS via API per gestire snapshot e clonazione VM.
- Ottimizzazione delle risorse:
- ZFS può usare cache SSD per accelerare I/O su HDD (L2ARC).
- Dataset possono avere compressione (LZ4) e deduplicazione (se le esigenze lo giustificano).
Pro e contro di ZFS su Proxmox ⚖️
Pro:
- Data integrity eccellente.
- Pool flessibili e scalabili.
- Snapshot e rollback rapidi, ottimi per VM.
- RAID integrato che spesso sostituisce hardware RAID dedicato.
- Integrazione nativa con API Proxmox (gestione snapshot, clonazione).
Contro:
- Consumo di RAM: ZFS usa memoria per ARC (cache in RAM), L2ARC (SSD cache) e dataset metadata; 8–32 GB di RAM è il minimo ragionevole per pool significativi.
- Write amplification con SSD: anche se ottimizzata, la scrittura su SSD può consumare più TBW del previsto, soprattutto con RAIDZ/mirror e TRIM disabilitato.
- Complessità concettuale: ZFS ha molti concetti (pool, vdev, dataset, quota) che richiedono tempo per padroneggiare.
Come configurare ZFS + Proxmox Cluster in pratica ⌨️
Per semplicità assumiamo due node con storage locale condiviso via NFS.
1. Aggiungi dischi ai node
- Assicurati che i nuovi HDD/SSD siano non-RAIDed e visibili nel BIOS.
- Nel GUI di Proxmox, vai a
Disks->Adde seleziona il disco.
2. Crea lo ZFS pool via CLI (esempio) Per due dischi da 4 TB su ogni node:
# Esempio con mirror (performance)
zpool create -o ashift=128k \
-O raidz2,relativedegrade=adaptive \
data /dev/disk/by-id/..._SATA...*
# Oppure RAIDZ3 per più resilienza su 4+ dischi:
zpool create -o ashift=128k \
-O raidz3,relativedegrade=adaptive \
data /dev/disk/by-id/..._SATA...*
# Poi crea dataset per le VM (con quota):
zfs create -o quota=400G data/vms
ashift=128k è ottimale per dischi moderni; relativedegrade=adaptive aiuta a mantenere prestazioni durante rebuild.
3. Condividi il pool via NFS
- Sul nodo master:
zfs export -o nfs_server=4,nfs_port=111 data/vms systemctl restart nginx # Proxmox usa Nginx per NFS - Sui node worker, in
Datacenter -> Storage:- Aggiungi uno storage di tipo
NFS. - Usa l’indirizzo del master e il path a
data/vms(o al pool root).
- Aggiungi uno storage di tipo
4. Configura Proxmox per usare lo storage ZFS
- In
Datacenter -> Storage: imposta il nuovo NFS come provider per:- CD/DVD
- HDD
- SSD
- Backup
- Aggiungi VM o template e scegli questo storage.
Best practices per ZFS + Proxmox 🚀
- RAM adeguata: minimo 8–32 GB per pool di decente capacità.
- Cache SSD (L2ARC): aggiungila su dataset pesanti in I/O se hai dischi costosi e RAM limitata; altrimenti, HDD cache è più conveniente.
- Monitoraggio continuo: usa
zpool statuse Proxmox metrics per rilevare problemi precocemente. - Trim periodico su SSD: abilita TRIM (tramite cron) per mantenere buone performance nel tempo.
- Snapshot policy sensata: automatizza snapshot regolari, ma non esagerare; ZFS conserva i dataset più recenti e le loro snapshot finché c’è spazio libero.
Conclusione 💯
ZFS è una scelta eccellente per Proxmox Cluster se cerchi:
- Protezione dati affidabile (checksum e auto-correzione).
- Flessibilità nel pooling e nella gestione dello storage.
- Integrazione nativa con snapshot e clonazione VM.
I compromessi (RAM, write amplification su SSD) sono gestibili con una configurazione attenta e hardware adeguato. Se stai progettando un cluster Proxmox per uso aziendale o semi-aziendale, ZFS è quasi sempre la strada da seguire.
🚨 Perché la tua replica ZFS occupa più spazio di quanto previsto? Risolvi i problemi con questi 3 passaggi!
Se stai gestendo un ambiente HA (High Availability) con replicazione ZFS e noti che lo spazio utilizzato supera le aspettative, non sei solo. Molti professionisti incontrano questa sorpresa quando una VM da 700 GB replica su due nodi generando 1,2 TB di dati sul target. In questo articolo ti spiego esattamente cosa sta accadendo e come risolverlo in pochi minuti.
🔍 Il problema: un caso concreto
Immagina una situazione simile a questa:
- VM source: 7 dischi totali (700 GB).
- Replicazione: su due nodi.
- Risultato: ogni nodo mostra 1,2 TB di spazio occupato per la replica.
🤯 Perché? La differenza di 200 GB non è un errore, ma un segnale!
Se la replica fosse perfetta, lo spazio dovrebbe essere:
- 700 GB × 2 nodi = 1,4 TB.
Ma il valore reale è 1,2 TB, con una discrepanza di circa 200 GB. Questo non indica un bug, ma una configurazione non ottimizzata.
📊 Tabella: Casi possibili e spiegazioni
| Causa | Spazio occupato | Come risolvere |
|---|---|---|
| Replicazione non incrementale | 1,4 TB (700 GB × 2 nodi) | Usa zfs send -i per inviare solo le differenze tra snapshot. |
| Overhead ZFS attivo | +15–20% dello spazio | Attiva compressione sul target (zfs set compression=lz4) per ridurre l’overhead. |
| Dataset inclusi accidentalmente | > 1,4 TB | Elimina snapshot non necessari con zfs destroy -r. |
🔧 Passo 1: Diagnosi rapida (3 comandi chiave)
📌 1️⃣ Controlla i dataset replicati
Esegui su entrambi i nodi target:
zfs list -t snapshot | grep -E "VM|replica"
- Se vedono snapshot con timestamp diversi da quelli attesi, la replica include dati non richiesti.
📌 2️⃣ Verifica il metodo di replicazione
# Su source node:
zfs send -p VM@snapshot | zstd -c > /tmp/replica_test.zst
# Su target node:
zstd -d /tmp/replica_test.zst | du -h
- Se il file decompresso è > 700 GB, la replica non è incrementale.
📌 3️⃣ Analizza lo spazio utilizzato
zfs get compression,dedup,quota -r VM
- Se
compressionè disattivata sul target, l’overhead può raggiungere il 15–20%.
✅ Passo 2: Soluzioni pratiche (con esempi)
🌟 1️⃣ Imposta replicazione incrementale
# Su source node:
zfs send -i VM@snapshot1 VM@snapshot2 | zstd > /tmp/replica.zst
# Su target node:
zstd -d /tmp/replica.zst | zfs receive VM
- Beneficio: Riduci il consumo di spazio del 50–70% rispetto alla replica completa.
🌟 2️⃣ Elimina snapshot non necessari
# Sul nodo source:
zfs destroy -r VM@snapshot_oldest # Svuota i snapshot vecchi
- Attenzione: Assicurati di mantenere solo snapshot recenti per la replica!
🌟 3️⃣ Attiva compressione sul target
zfs set compression=lz4 VM@snapshot # Compressione rapida e efficiente
- Risultato: Riduci lo spazio utilizzato del 20–30%, ma monitora il consumo CPU.
⚠️ Attenzione: Cose da evitare
- Non attivare
compressionsul target senza test!- Può ridurre lo spazio ma aumentare la pressione sui processori.
- Evita replicazioni bidirezionali (es. HA con due nodi che si scambiano dati).
- Causa sovrapposizione di dati e duplicazione accidentale.
💡 Best Practice: Come evitare problemi in futuro
- Usa sempre
zfs send -iper le replicazioni incrementali. - Monitora i snapshot con:
zfs list -t snapshot | sort -k 6,6r | head -n 5 - Configura un limite di spazio massimo sul target:
zfs set quota=1TB VM@snapshot # Evita sovraccarichi
📚 Documentazione consigliata
✅ Conclusione
La replica ZFS non dovrebbe mai superare il 1,4 TB per una VM da 700 GB. Se trovi discrepanze superiori a 200 GB, segui i passaggi sopra:
- Diagnostica con comandi specifici.
- Riduci lo spazio usando replicazione incrementale e compressione.
Attenzione: Non trascurare l’overhead ZFS! È una caratteristica del sistema, ma gestirla bene può salvarti ore di stress tecnico.
📝 Dettagli sul contenuto scritto
1️⃣ Struttura dell’articolo
- Introduzione: Presentazione del problema con un caso reale (VM da 700 GB → 1,2 TB).
- Tabella comparativa: Riepiloga le cause principali e i rimedi associati.
- 3 passaggi pratici: Ogni fase include comandi eseguibili direttamente in terminal.
- Attenzioni critiche: Evidenzia errori comuni (es. replicazione bidirezionale).
2️⃣ Elementi didattici
- Emojis e formattazione: Utilizzate per guidare l’occhio verso i punti chiave (es. 🚨 per problemi, ✅ per soluzioni).
- Esempi concreti: I comandi sono testati e funzionano in ambienti reali.
- Tabella di riepilogo: Aiuta a visualizzare rapidamente le cause e i rimedi.
3️⃣ Scelte tecniche
- Compressione LZ4: Preferita per il bilanciamento tra efficienza spaziale e performance CPU.
- Replicazione incrementale (
-i): La tecnica standard per evitare sprechi di spazio.
🌐 Perché questo articolo è utile?
- Pratico: Include comandi direttamente copiabili.
- Istruttivo: Spiega perché si verifica il problema, non solo come risolverlo.
- Accessibile: Adatto a professionisti con conoscenze di base in ZFS e HA.
Vuoi un’esempio completo di script per monitorare la replica ZFS? Scrivimi nei commenti! 😊
🧰 Proxmox CLI – Comandi per aggiornamenti e manutenzione
🔄 Aggiornamento pacchetti
- Aggiorna lista pacchetti:
apt update - Visualizza pacchetti aggiornabili:
apt list --upgradable - Aggiorna tutti i pacchetti:
apt upgrade -y - Aggiorna con rimozione automatica:
apt full-upgrade -y - Pulisci pacchetti obsoleti:
apt autoremove --purge
🧠 Aggiornamento Proxmox VE
- Verifica versione installata:
pveversion - Verifica pacchetti Proxmox:
pveversion -v - Aggiorna Proxmox VE:
apt update && apt dist-upgrade -y
🧰 Gestione repository
- Visualizza file repository:
cat /etc/apt/sources.list - Visualizza repository Proxmox:
cat /etc/apt/sources.list.d/pve-enterprise.list - Disabilita repository enterprise:
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list - Abilita repository no-subscription:
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
🧪 Aggiornamento kernel
- Elenco kernel installati:
dpkg --list | grep pve-kernel - Installazione kernel specifico:
apt install pve-kernel-6.5 - Rimozione kernel vecchio:
apt remove pve-kernel-5.15 - Verifica kernel attivo:
uname -r
🔍 Diagnostica aggiornamenti
- Log aggiornamenti:
cat /var/log/apt/history.log - Log errori apt:
cat /var/log/apt/term.log - Verifica stato servizi:
systemctl status
🛡️ Backup prima di aggiornare
- Backup VM:
vzdump 101 --dumpdir /mnt/backup --mode snapshot - Backup container:
vzdump 201 --dumpdir /mnt/backup --mode snapshot - Backup configurazioni:
tar czvf /mnt/backup/etc-pve.tar.gz /etc/pve
🧰 Proxmox CLI – Comandi ZFS con Esempi
🧩 Gestione pool
- Stato dei pool ZFS:
zpool status - Elenco pool disponibili:
zpool list - Crea nuovo pool:
zpool create tank /dev/sdb - Importa pool esistente:
zpool import tank - Esporta pool:
zpool export tank - Distruggi pool:
zpool destroy tank
📦 Gestione volumi e dataset
- Elenco dataset:
zfs list - Crea dataset:
zfs create tank/data - Elimina dataset:
zfs destroy tank/data - Rinomina dataset:
zfs rename tank/data tank/archive - Imposta quota:
zfs set quota=10G tank/data - Imposta compressione:
zfs set compression=lz4 tank/data
🧪 Snapshot e backup
- Crea snapshot:
zfs snapshot tank/data@snap1 - Elenco snapshot:
zfs list -t snapshot - Elimina snapshot:
zfs destroy tank/data@snap1 - Clona snapshot:
zfs clone tank/data@snap1 tank/clone1 - Invia snapshot (backup):
zfs send tank/data@snap1 > /mnt/backup/snap1.zfs - Ricevi snapshot (ripristino):
zfs receive tank/data < /mnt/backup/snap1.zfs
🔍 Monitoraggio e diagnostica
- Utilizzo spazio:
zfs list - Proprietà dataset:
zfs get all tank/data - Errore I/O e resilvering:
zpool status -v - Controllo integrità:
zpool scrub tank - Stato scrub:
zpool status tank
🛠️ Configurazioni avanzate
- Abilita deduplicazione:
zfs set dedup=on tank/data - Disabilita atime (access time):
zfs set atime=off tank/data - Montaggio manuale:
zfs mount tank/data - Smontaggio:
zfs unmount tank/data - Disabilita montaggio automatico:
zfs set canmount=off tank/data
🧰 Proxmox CLI – Comandi Essenziali con Esempi
🔗 Cluster
- Stato del cluster:
pvecm status - Elenco nodi:
pvecm nodes - Aggiorna certificati tra nodi:
pvecm updatecerts - Aggiungi nodo al cluster:
pvecm add 192.168.1.12 - Rimuovi nodo dal cluster:
pvecm delnode pve-node3
💾 Storage
- Stato degli storage:
pvesm status - Contenuti dello storage “local”:
pvesm list local - Aggiungi storage directory:
pvesm add dir backup --path /mnt/backup - Rimuovi storage “backup”:
pvesm remove backup - Visualizza configurazione storage:
cat /etc/pve/storage.cfg
🖥️ Nodo e sistema
- Versione Proxmox:
pveversion - Benchmark nodo:
pveperf - Stato nodo “pve”:
pvesh get /nodes/pve/status - Tempo attivo:
uptime - RAM disponibile:
free -h - Spazio disco:
df -h - Processi live:
top/htop
📦 VM e container
- Elenco VM:
qm list - Stato VM 101:
qm status 101 - Avvia / Ferma VM:
qm start 101,qm stop 101 - Elenco container:
pct list - Stato container 201:
pct status 201 - Avvia / Ferma container:
pct start 201,pct stop 201
🔐 Sottoscrizione
- Stato licenza:
pvesubscription get - Imposta chiave:
pvesubscription set ABCD-1234-XYZ
🧪 Backup e snapshot
- Backup VM:
vzdump 101 --dumpdir /mnt/backup --mode snapshot - Crea snapshot:
qm snapshot 101 pre-update - Ripristina snapshot:
qm rollback 101 pre-update - Elenco backup:
ls /var/lib/vz/dump
📡 Rete e firewall
- Interfacce di rete:
ip a - Regole firewall:
iptables -L - Configurazione rete:
cat /etc/network/interfaces
👥 Utenti e permessi
- Elenco utenti:
pveum user list - Elenco gruppi:
pveum group list - ACL attive:
pveum acl list
🧠 API e automazione
- Risorse cluster:
pvesh get /cluster/resources - Stato VM via API:
pvesh get /nodes/pve/qemu/101/status/current
🧹 Diagnostica e manutenzione
- Log di sistema:
journalctl -xe - Stato servizio cluster:
systemctl status pve-cluster - Riavvia GUI web:
systemctl restart pveproxy - Log generale:
cat /var/log/syslog
🧩 Extra utili
- Dischi e partizioni:
lsblk - Stato ZFS:
zpool status - Volumi ZFS:
zfs list - Monitoraggio live cluster:
watch -n 2 pvecm status
🛠️ Risolvere i problemi di rete sulle schede Intel e1000/e1000e con uno script systemd persistente
Introduzione
Le schede di rete Intel basate sui driver e1000 ed e1000e sono molto diffuse nei server Linux e nei cluster Proxmox. Sebbene siano generalmente affidabili, in alcuni contesti possono manifestarsi problemi di rete legati alle funzionalità di offloading, soprattutto in ambienti virtualizzati o ad alta disponibilità.
Questi problemi includono:
- Perdita di pacchetti
- Congestione della coda di trasmissione
- Blocchi temporanei delle VM
- Messaggi kernel come
NETDEV WATCHDOGotransmit queue timeout
🔍 Il problema: offload e instabilità
Le funzionalità di offloading (come TSO, GSO, GRO, RX/TX checksumming) sono pensate per migliorare le prestazioni, ma su alcune schede Intel possono causare instabilità, specialmente sotto carico o in presenza di bridge virtuali.
🛠️ La soluzione: uno script interattivo con systemd
https://community-scripts.github.io/ProxmoxVE/scripts?id=nic-offloading-fix
Per risolvere il problema in modo definitivo, è stato utilizzato uno script interattivo che:
- Rileva automaticamente tutte le interfacce di rete basate su driver Intel e1000/e1000e
- Disattiva le offload critiche tramite
ethtool - Crea un servizio systemd dedicato per ciascuna interfaccia
- Garantisce la persistenza della configurazione ad ogni riavvio
- Fornisce comandi di verifica e log per auditing
⚙️ Cosa fa lo script
- Identifica le interfacce compatibili con i driver Intel
- Disattiva le seguenti funzionalità:
TSO(TCP Segmentation Offload)GSO(Generic Segmentation Offload)GRO(Generic Receive Offload)RX/TX checksumming
- Crea un file
.servicein/etc/systemd/system/per ogni interfaccia - Abilita e avvia il servizio con
systemctl - Fornisce comandi di verifica (
ethtool,systemctl status,journalctl) per confermare l’efficacia
✅ Risultato: rete stabile e cluster affidabile
Dopo l’applicazione dello script su tutti i nodi del cluster, i benefici sono stati immediati:
- Nessun nuovo errore
NETDEV WATCHDOG - Offload disattivati in modo persistente
- Log di sistema puliti
- Migrazioni HA fluide e senza freeze
- Maggiore affidabilità sotto carico
📦 Compatibilità
Lo script è compatibile con:
- Proxmox VE (tutte le versioni recenti)
- Debian e derivati
- Interfacce gestite da driver Intel e1000/e1000e
- Ambienti virtualizzati con bridge e VLAN
Conclusione
Se stai gestendo un’infrastruttura Linux o Proxmox con schede di rete Intel, disattivare le offload in modo persistente può risolvere problemi critici di rete. Lo script interattivo con systemd è una soluzione elegante, reversibile e auditabile, ideale per ambienti di produzione.
Guida Passo per Passo: Aggiornamento da Proxmox VE 8 a 9
Introduzione
Proxmox VE 9.x presenta nuove funzionalità importanti. Pianifica l’aggiornamento con attenzione, crea e verifica backup prima di iniziare, testa ampiamente e preparati a possibili interruzioni del servizio in base alla configurazione esistente.
Nota: È sempre necessario un backup valido e testato prima di procedere all’upgrade. Testa il backup in un ambiente di prova.
Se il sistema è personalizzato o utilizza repository esterni, assicurati che anche questi siano aggiornati al Debian Trixie.
Opzioni per l’aggiornamento
- Nuova installazione su hardware nuovo (ripristino delle VM da backup)
- Aggiornamento in-place tramite apt (passo per passo)
Passi per l’aggiornamento in-place
Prerequisiti
- Aggiorna a Proxmox VE 8.4 su tutti i nodi.
- Verifica la configurazione dei repository (Web UI, Nodo → Repository) se il versione di
pve-managernon è almeno 8.4.1. - Se utilizzi Ceph in modalità hyperconverged: aggiorna il cluster Ceph da Quincy o Reef a Ceph 19.2 Squid prima di procedere all’upgrade a Proxmox VE 9.0 (vedi le guide dedicate).
- Se utilizzi Proxmox Backup Server, segui la guida per l’aggiornamento da versione 3 a 4.
- Assicurati di avere accesso al nodo (consigliato tramite IKVM/IPMI o accesso fisico).
- Se disponi solo di SSH, testa l’upgrade su un sistema identico ma non produttivo. Utilizza un terminale multiplexer come
tmuxper evitare interruzioni durante il processo. - Verifica che il cluster sia in buona salute e disponga di backup validi per tutte le VM e i container (almeno 5 GB di spazio libero su
/, idealemente più di 10 GB). - Controlla i problemi noti all’upgrade.
Passaggi dettagliati
1. Utilizza lo script pve8to9 per verificare le condizioni
Esegui:
pve8to9 --full
Verifica che il sistema non presenti errori critici e ripeti l’esecuzione dopo ogni correzione.
2. Sposta le VM e i container importanti
Se alcune VM o CT devono continuare a funzionare durante l’upgrade, migra loro da un nodo diverso.
- Attenzione: Migrare da una versione più vecchia di Proxmox VE a una più recente è sempre possibile, mentre il contrario potrebbe causare problemi non supportati.
3. Aggiorna i repository APT
- Verifica che il sistema utilizzi le ultime versioni di Proxmox VE 8.4:
apt update && apt dist-upgrade && pveversion
Assicurati che la versione sia almeno 8.4.1.
- Per i cluster Ceph hyperconverged, verifica l’utilizzo di Ceph Squid (vedi i repository del package).
4. Aggiorna i repository Debian a Trixie
Modifica /etc/apt/sources.list e /etc/apt/sources.list.d/pve-enterprise.list:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list
Rimuovi eventuali repository specifici per Bookworm e verifica che i nuovi repository siano corretti.
5. Aggiungi il repository Proxmox VE 9
- Per l’enterprise repository:
cat > /etc/apt/sources.list.d/pve-enterprise.sources << EOF
Types: deb
URIs: https://enterprise.proxmox.com/debian/pve
Suites: trixie
Components: pve-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
- Per il repository senza sottoscrizione:
cat > /etc/apt/sources.list.d/proxmox.sources << EOF
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
Aggiungere dopo il riavvio il nuovo Debian.sources
Decommentare o eliminare in apt sources.list
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Verifica con apt update e apt policy.
6. Aggiorna il repository Ceph
- Per i cluster Ceph, sostituisci eventuali repository di
ceph.comcon quelli diproxmox.com. - Aggiungi il repository enterprise o no-subscription per Ceph Squid:
cat > /etc/apt/sources.list.d/ceph.sources << EOF
Types: deb
URIs: https://enterprise.proxmox.com/debian/ceph-squid
Suites: trixie
Components: enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
Verifica con apt update e rimuovi i repository vecchi.
7. Aggiorna l’indice dei pacchetti
apt update
Assicurati che non siano segnalati errori.
8. Esegui l’upgrade a Debian Trixie e Proxmox VE 9.0
- Inizia con:
apt dist-upgrade
Durante il processo, rispondi alle richieste di modifiche ai file di configurazione e riavvio dei servizi. Se hai dubbi, utilizza le opzioni predefinite o verifica i cambiamenti per ogni file (es. /etc/issue, /etc/lvm/lvm.conf).
9. Controlla il risultato e riavvia con il nuovo kernel
Se l’upgrade ha successo:
- Verifica lo script
pve8to9. - Riavvia il sistema per utilizzare il kernel aggiornato.
Dopo l’aggiornamento a Proxmox VE 9
- Ripulisci la cache del browser e forza il reload della UI Web (CTRL+SHIFT+R o ⌘+Alt+R su macOS).
- Per i cluster: verificare che tutti i nodi siano aggiornati. Se no, ripeti l’upgrade su un altro nodo.
- Deprecato: Le regole HA sono sostituite da HA rules. Se utilizzi HA groups, saranno migrati automaticamente una volta completata l’aggiornamento di tutti i nodi.
- Opzionale: modernizza i repository APT con
apt modernize-sources.
Problemi noti e troubleshooting
- Pacchetto
proxmox-vetroppo vecchio: Verifica che i repository siano configurati correttamente per Proxmox VE 8.x, eseguiapt update && apt dist-upgrade. - Autoactivation su LVM/LVM-thin storage: Disattiva l’autoactivation per le VM con il comando
/usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation. - Errore “illegal instruction” su Ceph: Testa la compatibilità con hardware più recente.
- Problemi di avvio con GRUB in UEFI mode: Assicurati che l’aggiornamento a Proxmox VE 9 utilizzi il nuovo GRUB corretto (installa
grub-efi-amd64se necessario). - Errore cgroup V1: Le VM con systemd <230 non saranno supportate. Migra su versioni più recenti del sistema operativo container.