Migrare istanze Incus su una nuova pool

Da quasi dieci anni sono un grande estimatore di TrueNAS e per anni ho mantenuto un NAS casalingo sul ramo Core (su FreeBSD). Il sistema offre stabilità, prestazioni e un ecosistema di jail che mi ha permesso di ospitare decine di servizi in modo isolato e ordinato.

Purtroppo, come molti già sapranno, iXsystems ha abbandonato ufficialmente lo sviluppo di TrueNAS Core, puntando tutto su TrueNAS SCALE, ora ribattezzato Community Edition, basato su Linux (Debian). Una decisione che, per quanto comprensibile dal punto di vista strategico, ha costretto molti utenti – me compreso – a fare i conti con una migrazione importante.

Da jail a LXC: Incus e TrueNAS 25.04

Per circa un paio d’anni ho mantenuto la mia installazione su Core in quanto non ero un fan della virtualizzazione con kubernets e successivamente con docker (non mi addentro nei dettagli ma ha a che fare con la gestione del network). Con la versione 25.04 di TrueNAS SCALE è finalmente arrivato il supporto nativo a Incus, un fork di LXD pensato per andare a colmare la differenza tra le jail e i sistemi di virtualizzazione offerti fin ora. Questo ha rappresentato per me il momento di cambiare “ramo”: ho migrato sistema e tutte le mie jail FreeBSD in container LXC gestiti da Incus.

Non è stato un passaggio indolore, ma una volta capito il meccanismo, tutto ha preso forma.

SSD is better: migrazione dei container da pool NAS (meccanico) a SSD

All’inizio avevo creato tutti i container sulla mia pool NAS (istanziata su dischi meccanici), ma dopo aver visto i benefici in termini di reattività ho deciso di spostare i container su una nuova pool ZFS su dischi SSD.

In questa guida vedremo come migrare correttamente i container LXC da una pool all’altra, prendendo come esempio Nextcloud, ma gli stessi passaggi sono validi per tutte le altre istanze eventualmente installate.

1. Creare snapshot del container esistente

sudo zfs snapshot NAS/.ix-virt/containers/Nextcloud@migrazione

2. Creare una nuova istanza vuota sulla pool SSD

sudo incus init Nextcloud-new --empty --storage SSD

3. Esportare la configurazione corrente e modificarla

sudo incus config show Nextcloud > nextcloud-config.yaml
sudo nano nextcloud-config.yaml

Modificare la voce:

devices:
root:
pool: SSD # ← cambiare da "default" (NAS) a "SSD"

4. Importare la configurazione modificata nella nuova istanza

sudo incus config edit Nextcloud-new < nextcloud-config.yaml

5. Copiare il dataset tramite ZFS send/receive

sudo zfs send NAS/.ix-virt/containers/Nextcloud@migrazione | sudo zfs receive -F SSD/.ix-virt/containers/Nextcloud-new

Ripetere i passaggi precedenti per ciascuna istanza LXC.

6. Verifica e pulizia

In questo momento tutte le nuove istanze saranno nominate con -new finale. Verifica che tutte le istanze *-new si avviino correttamente:

sudo incus start Nextcloud-new
sudo incus list

Successivamente posso eliminare i vecchi container (da web UI o CLI):

sudo incus delete --force Nextcloud
sudo incus delete --force <nome-istanza>

7. Archiviazione del vecchio dataset

Una volta che sei sicuro che tutto funzioni, puoi mettere in sola lettura il vecchio dataset e rinominarlo (in futuro potrai decidere di eliminarlo definitivamente):

sudo zfs set readonly=on NAS/.ix-virt
sudo zfs rename NAS/.ix-virt NAS/.backup-ix-virt

8. Rinomina delle istanze *-new con i nomi originali

sudo incus rename Nextcloud-new Nextcloud
sudo incus rename
<nome-istanza>-new <nome-istanza>

9. Riavvio dei servizi

Per sicurezza, riavvia incus e middlewared:

sudo systemctl restart incus.service
sudo systemctl restart middlewared.service

10. Il DHCP!

Ultimo promemoria: Hai configurato il DHCP per assegnare alle macchine un IP statico? Attenzione ai MAC address!

Poiché le nuove istanze avranno MAC address diversi, se utilizzi delle assegnazioni statiche di IP via DHCP, assicurati di aggiornare le reservation per evitare problemi di rete.

Con questa procedura sono riuscito a spostare tutto su SSD e ora il mio ambiente è ancora più scattante e reattivo.

Hai anche tu un’infrastruttura simile?

Emanuele

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.