KoaVM
Pagine della guida

Guida · Per gli amministratori

Nodi

Un nodo è un server con Incus. Le VPS nascono sul nodo con più RAM ancora assegnabile (con il suo overbooking, vedi sotto), a meno che tu non ne scelga uno.

Collegare un nodo

Aggiungi nodo ha tre strade: Server che hai già e Ordina un server preparano il nodo da soli (vedi Nodi nuovi e acquisto automatico); Incus già pronto (token) collega un server dove Incus è già installato:

  1. Sul server, se l'API di Incus non è ancora in ascolto sulla rete, attivala:
incus config set core.https_address :8443
  1. Crea un token per il pannello e copialo intero:
incus config trust add koavm
  1. In Nodi › Aggiungi nodo incolla il token, dai un nome al nodo (es. gra-01) e scegli la città sulla mappa.

Il token contiene l'impronta del certificato del server: il collegamento è cifrato e verificato. Nelle opzioni avanzate puoi cambiare l'indirizzo, il bridge delle VPS (predefinito br-vps) e lo storage pool (predefinito default).

La chiave SSH del pannello

Per alcune cose il pannello entra nel nodo via SSH: migrazioni, backup salvati su un nodo, preparazione dell'IPv6, RAM vera, disco e CPU delle VPS e limiti del disco e della CPU (dalla 1.14). Aggiungi la chiave del pannello (la trovi in Migrazione) a /root/.ssh/authorized_keys del nodo, oppure a un utente con sudo senza password, e indica utente e porta nella stessa pagina. Il pulsante Prova controlla che funzioni.

Stato e risorse

In alto a destra si sceglie la vista: Schede (una scheda per nodo) o Elenco (una riga per nodo, come nel Finder: si ordina cliccando sulle colonne e il triangolino apre la scheda completa sotto la riga). Il pannello ricorda la scelta.

Per ogni nodo vedi CPU, RAM assegnata (su quella assegnabile con l'overbooking) e in uso davvero, swap (e quanta è in uso), disco usato e assegnato, vCPU vendute su quelle vendibili, CPU in uso davvero e VPS accese. Il pannello legge i nodi ogni 30 secondi; Aggiorna li rilegge subito. Se un nodo non risponde lo vedi in rosso con l'ultimo errore.

Overbooking

Il pannello conta la RAM, il disco e le vCPU assegnati alle VPS, non quelli usati davvero. Senza overbooking si assegna fino al 90% della RAM del server, fino a tutto il disco del pool e una vCPU per thread.

Con Nodi › Overbooking (o quando aggiungi il nodo) scegli quanto vendere in più:

  • Disco da 1× a 3×. I dischi su ZFS occupano solo quello che le VPS scrivono davvero, quindi 1,5–2× è normale.
  • RAM da 1× a 2×. Le VPS restituiscono al nodo la RAM che liberano (vedi sotto), ma una VPS che usa tutta la sua RAM la tiene. Oltre 1,2× serve la swap.
  • CPU da 1× a 16× (vCPU vendute per ogni thread del server; di base 4×, anche sui nodi collegati prima della 1.5). Le VPS usano la CPU a turno e raramente tutte insieme: 4× è il rapporto più comune. Una VPS non può comunque avere più vCPU dei thread del server.

C'è anche un freno sull'uso vero (Impostazioni › Nodi e overbooking, di base 85%). Quando la RAM, il disco o la CPU davvero in uso su un nodo arrivano alla soglia, il nodo non riceve altre VPS, spostamenti, migrazioni o piani più grandi, anche se l'overbooking lo permetterebbe. La CPU in uso è la somma di quella che usano davvero le VPS accese (campioni ogni 30 secondi). Gli avvisi di RAM e disco del nodo restano come prima.

La RAM in uso davvero

Incus conta la RAM delle VM come «cache» (è memoria condivisa), quindi da solo dice molto meno del vero. Dalla 1.5 il pannello legge /proc/meminfo dai nodi in cui entra via SSH, ogni minuto: in uso = RAM totale meno quella disponibile, più la swap in uso. Senza accesso SSH il pannello stima (quello che dice Incus più la RAM usata dentro le VPS accese) e lo scrive accanto alla percentuale: (stima). Il freno, gli avvisi della RAM e la mappa live usano questo numero.

La RAM che le VPS liberano torna al nodo

Una VM senza aiuto tiene per sempre la RAM che ha toccato una volta, anche dopo averla liberata. Dalla 1.5 le VPS hanno il free page reporting del dispositivo balloon: il sistema dentro la VPS dice al nodo quali pagine ha liberato e il nodo se le riprende in pochi secondi (prova: VPS che usa 3 GB e poi li libera, sul nodo da 3,9 GB a 0,7 GB). È quello che rende sicuro l'overbooking della RAM.

Vale per le VPS nuove e per quelle che c'erano già dal prossimo avvio o riavvio dal pannello (il riavvio dal pannello spegne, cambia e riaccende; un riavvio fatto dentro la VPS non basta). Resta negli spostamenti, anche a caldo, e nei ripristini. Un raw.qemu.conf messo a mano non viene toccato.

Le stesse regole valgono per l'acquisto automatico dei nodi: un nodo oltre il freno conta come pieno.

VPS su un solo chip

Alcuni server hanno più chip dentro lo stesso processore, ognuno con i suoi thread e la sua RAM (nodi NUMA: per esempio gli AMD EPYC di prima generazione, 4 chip da 8 thread e 32 GB). Una VPS libera può avere le vCPU su un chip e la RAM su un altro, e ogni accesso alla memoria fa il giro. Dalla 1.5.1, sui nodi con più chip il pannello tiene ogni VPS su un solo chip: nelle prove la RAM con più thread va il 50% più forte e senza cali (la velocità di un thread solo non cambia).

Il chip lo sceglie il pannello, non Incus: quello con meno RAM assegnata (con l'overbooking del nodo) e vCPU libere. Ci mette solo le VPS che ci stanno: una VPS con più vCPU dei thread di un chip, o più RAM di quella di un chip, resta libera, e se i chip sono pieni anche le VPS nuove restano libere. Serve perché una VPS su un chip può usare solo la RAM di quel chip: un chip troppo pieno andrebbe in swap anche con gli altri liberi.

Vale per le VPS nuove e per quelle che ci sono dal prossimo avvio o riavvio dal pannello. Si spegne da Overbooking › Chip della CPU (le VPS tornano libere dal prossimo riavvio dal pannello). Una VPS su un chip si sposta a caldo solo verso un nodo con gli stessi chip; un limits.cpu.nodes messo a mano non viene toccato. La scheda del nodo dice quanti chip ha e quante VPS stanno su un chip.

La swap: la RAM può usare il disco se serve

La scelta si fa quando il pannello prepara il nodo, e si può cambiare dopo da Overbooking › Applica la swap se il pannello entra nel nodo via SSH:

  • Sì, automatica: metà della RAM del server, da 2 a 32 GB;
  • Sì, scelgo io: i GB che vuoi (fino a 256);
  • No: la RAM delle VPS non va mai sul disco. Se la RAM del server finisce, il sistema chiude una VPS.

La swap del pannello è il file /var/lib/koavm-swap (serve ext4 o xfs). Se il server ha già una swap, per esempio la partizione del fornitore, il file aggiunge solo quello che manca. vm.swappiness è 10: il server usa la swap solo quando la RAM non basta. Con No il pannello spegne anche le swap che ci sono e le commenta in /etc/fstab.

Dalla 1.5, con la swap accesa il pannello accende anche la RAM compressa (zswap, compressione zstd): le pagine che vanno in swap restano prima compresse in RAM, 2–3 volte più piccole e fino al 20% della RAM, e arrivano sul disco solo quando quella parte è piena. È molto più veloce del disco e consuma meno gli NVMe. Si riaccende a ogni avvio (servizio koavm-zswap). Sui nodi collegati prima della 1.5 basta premere Applica la swap una volta.

La swap è un paracadute, non RAM in più: anche su NVMe il disco è circa 100 volte più lento della RAM. Va bene per la RAM che le VPS hanno preso ma non usano; se le VPS la usano davvero tutte insieme rallentano tutte. Per questo c'è il freno sull'uso vero.

Dischi e cache di ZFS

Sui nodi con ZFS il pannello tiene un tetto alla cache (ARC): 10% della RAM, tra 2 e 16 GB. Senza tetto ZFS userebbe quasi tutta la RAM libera e sotto carico la toglierebbe alle VPS. Il tetto si applica da solo a tutti i nodi (anche a quelli già collegati) e resta dopo i riavvii (/etc/modprobe.d/zfs-koavm.conf).

Le VPS Linux nuove create dal catalogo hanno il disco virtio-blk (nel sistema è vda), più veloce di virtio-scsi; le altre restano come sono. I piani con scritture veloci mettono sync=disabled sui dischi delle loro VPS (vedi Piani e sistemi).

Dalla 1.5.2 le scritture veloci si accendono anche per tutto un nodo (Nodi › Scritture veloci): valgono per tutte le sue VPS, anche quelle dei piani senza, in pochi secondi e senza riavvii; una VPS spostata su un altro nodo prende le regole di quel nodo. Servono sui nodi con dischi da PC, senza protezione dai cali di corrente, dove ogni scrittura confermata aspetta il disco (su gra-02 circa 500 al secondo invece di 5.000): con le scritture veloci arrivano a circa 4.000, ma se il nodo si spegne di colpo ogni VPS perde gli ultimi secondi di dati. La scheda del nodo lo segna con «Scritture veloci».

La cosa che conta di più per le scritture dei database sono i dischi: gli NVMe da datacenter con protezione contro i cali di corrente confermano una scrittura in 20–50 µs, quelli da PC in circa 1 ms.

Più pool di storage

Dalla 1.12 un nodo può avere più pool di storage, per esempio i dischi in mirror per le VPS normali e un disco a parte per un servizio. Il pool scelto quando colleghi il nodo (default se non lo cambi) resta il predefinito: lì vanno le VPS, i dischi aggiuntivi, i volumi, le ISO e i template.

Gli altri pool li crei sul nodo con Incus, per esempio:

zpool create cdn /dev/sdb1
incus storage create cdn zfs source=cdn

Il pannello li trova da solo entro un minuto e li mostra nella scheda del nodo, in Pool di storage, con lo spazio usato e il disco assegnato alle VPS. Un pool nuovo non prende VPS finché non spunti la sua casella Per le VPS. Una VPS va su un altro pool:

  • se l'amministratore lo sceglie nella creazione (il campo Pool di storage compare quando scegli un nodo con più di un pool acceso), oppure con "pool": "cdn" in POST /api/vps;
  • se il suo piano ha un pool di storage preferito (Clienti e piani › Piani, vedi Piani e sistemi): nei nodi che lo hanno acceso le VPS del piano vanno lì, negli altri sul predefinito;
  • con Cambia pool nella pagina della VPS (riga Pool di storage). Incus copia il disco con gli snapshot; la VPS resta spenta per il tempo della copia e si riaccende da sola se era accesa.

Ogni pool ha il suo conto: il disco assegnato e il tetto dell'overbooking del disco valgono per pool, e anche il freno sull'uso vero. Se sposti un disco a mano con Incus (incus move --storage, incus storage volume move), il pannello se ne accorge al primo controllo, entro 30 secondi, e aggiorna il pool della VPS.

Limiti:

  • i dischi aggiuntivi e i volumi restano sul pool predefinito;
  • una VPS fuori dal pool predefinito non si sposta su altri nodi (nemmeno con il riequilibrio): riportala prima sul predefinito con Cambia pool;
  • i backup delle VPS fuori dal pool predefinito usano l'archivio a pezzi, non la replica ZFS;
  • il pool predefinito del nodo si cambia solo se il nodo non ha VPS né dischi.

Chi usa di più

Quando un nodo rallenta, Chi usa di più nella scheda del nodo mostra le VPS che negli ultimi 10 minuti hanno usato più CPU e più disco: è il modo più veloce per trovare il «vicino rumoroso». Per ogni VPS (con il link alla sua pagina):

  • CPU: quante CPU intere ha usato in media e che parte delle sue vCPU, con il suo limite;
  • Disco: lettura e scrittura in MB/s, operazioni al secondo (IOPS) e i suoi limiti per disco, con la parte del limite usata dal disco più carico; al limite quando in media è ad almeno il 90%.

I numeri vengono dal nodo, non dall'agente dentro la VPS (che il cliente può fermare o falsare): ogni 30 secondi il pannello legge via SSH, con una connessione che resta aperta, i contatori del processo di ogni VPS accesa. Senza accesso SSH al nodo la CPU viene dall'agente (scritto accanto) e il disco manca. Il grafico Disco nelle ultime 24 ore nella pagina di ogni VPS usa gli stessi numeri. Per frenare chi esagera ci sono i limiti del disco e della CPU dei piani; per tenerli d'occhio c'è l'avviso Disco al limite (vedi Avvisi).

Limiti del disco e della CPU sul nodo

Incus mette i processi di tutte le VM nello stesso gruppo, quello del suo servizio: lì non si può limitare una VPS sola. Per i limiti il pannello mette ogni VPS del nodo in un suo gruppo cgroup v2 (/sys/fs/cgroup/koavm/<vps>) e lì scrive:

  • l'uso massimo della CPU (cpu.max) e il peso (cpu.weight, 40 per vCPU: a nodo pieno ogni VPS conta per le vCPU che ha, come prima; la priorità bassa conta un quarto, l'alta il doppio). Il gruppo koavm ha come peso la somma dei pesi delle VPS (al massimo 10.000), così le VPS insieme contano come contavano prima dentro il servizio di Incus;
  • i limiti del disco (io.max), una riga per ogni disco della VPS: il disco principale e quelli aggiuntivi o i volumi, cioè gli zvol di ZFS e i volumi logici di LVM che QEMU tiene aperti. Banda (rbps, wbps) e operazioni al secondo (riops, wiops) valgono insieme.

Ci vanno tutte le VPS del nodo, non solo quelle con i limiti, perché altrimenti le VPS limitate conterebbero tutte insieme come un solo gruppo. Il pannello riconosce il processo di ogni VPS dal file del pid di Incus (/run/incus/<vps>/qemu.pid) o dal nome nella riga di comando di QEMU, e non tocca nessun altro processo.

I limiti si applicano nello stesso giro che legge disco e CPU, ogni 30 secondi, e subito dopo la creazione, l'accensione, un cambio piano, le risorse su misura e i dischi aggiunti o tolti; quando salvi un piano, sui nodi delle sue VPS. Il giro scrive solo quello che è cambiato. Una VPS che si accende ha un processo nuovo: resta senza limiti al massimo per un giro (30 secondi), poi torna nel suo gruppo. Con i gruppi il grafico del disco mostra anche le operazioni al secondo.

Cosa non si limita:

  • i dischi sui pool dir sono file, non dischi a blocchi: per loro il limite del disco non vale (la CPU sì);
  • con un kernel più vecchio del 6.4 i thread vhost della rete restano nel gruppo di Incus: la CPU che usano per la rete non entra nel limite della VPS (Debian 13 ha il 6.12, Debian 12 il 6.1).

In Impostazioni › Nodi e overbooking › Gruppi delle VPS sui nodi scegli dove usarli: solo sui nodi che hanno almeno una VPS con limiti del disco o della CPU (di serie), su tutti, oppure mai. Quando un nodo non li usa più (o scegli «mai») il pannello rimette i processi nel gruppo di Incus, toglie i limiti e cancella i gruppi: i limiti dei piani non valgono. Serve un nodo con cgroup v2 (Debian 12 e 13 lo hanno).

In fondo a Chi usa di più vedi se i gruppi sono attivi sul nodo. Se il nodo non accetta un limite (per esempio un controller del cgroup che non si attiva o un disco che rifiuta io.max) il pannello lo scrive nel suo registro e lo mostra lì e sul pulsante Chi usa di più della scheda del nodo.

Guasti di dischi e RAM

Dalla 1.7 il pannello controlla ogni nodo ogni 15 minuti con l'accesso SSH, senza cambiare niente: lo SMART di ogni disco (salute, usura, scorta dei blocchi di riserva, temperatura, settori sostituiti o illeggibili, errori del supporto, ultimo autotest), i pool ZFS e i RAID del sistema (dischi guasti o mancanti, errori di lettura, scrittura e checksum, ricostruzione), gli errori della RAM che il kernel conta con l'ECC (corretti e non corretti, per modulo) e il registro del kernel (errori di I/O dei dischi, errori hardware del processore o della RAM). Se smartctl manca lo installa (pacchetto smartmontools, senza i pacchetti consigliati); i nodi preparati dal pannello lo hanno già.

La scheda del nodo mostra Dischi e RAM con «a posto», «attenzione» o «guasto»; il pulsante apre il dettaglio con i dischi (modello, numero di serie, usura, temperatura, ore di accensione, errori), i pool, la RAM e le ultime righe con errori del registro, e Controlla adesso rifà il controllo subito. Un disco che sparisce dal server resta in elenco come «non risponde» per 7 giorni: quando il fornitore l'ha sostituito, Togli dall'elenco i dischi che non rispondono.

Quando qualcosa si guasta arriva un avviso (vedi Avvisi): sposta le VPS su un altro nodo con Svuota nodo e chiedi al fornitore di controllare il server. Senza RAM ECC gli errori della RAM non si possono vedere: il dettaglio lo dice.

Manutenzione e dismissione

  • Metti in manutenzione: sul nodo non nascono nuove VPS; quelle che ci sono continuano a funzionare. Con l'alta affidabilità un nodo in manutenzione non fa ripartire le sue VPS altrove da solo: mettilo in manutenzione prima di riavviarlo.
  • Dismetti: possibile solo senza VPS sul nodo. Il pannello toglie anche il proprio certificato dal server e, se il nodo è collegato a un fornitore, può disdire il server.

Dopo un riavvio del nodo Incus riaccende le VPS che erano accese. Le VPS protette dall'alta affidabilità no (boot.autostart=false): le riaccende il pannello appena il nodo risponde, se non sono ripartite altrove.

Nodi dei fornitori

Se il server è di OVHcloud, Hetzner, Contabo o Scaleway (Dedibox) e hai collegato l'account del fornitore, il nodo viene riconosciuto dal suo IP principale e i suoi IP aggiuntivi diventano disponibili per le VPS. Vedi Rete e IP.