ZFS: Guida all'espansione di un Pool (Raid ZFS)
Quando un pool ZFS raggiunge il limite della sua capacità (raid full), la soluzione più comune è sostituire i dischi esistenti con unità più grandi. ZFS permette di eseguire questa operazione in modo relativamente semplice, a patto di seguire i passaggi corretti per garantire l’integrità dei dati.
In questa guida vedremo come sostituire i dischi uno alla volta, attendere la ricostruzione e infine abilitare l’espansione dello spazio disponibile.
1. Sostituzione Fisica del Primo Disco
La procedura standard prevede la sostituzione di un disco alla volta. Se il tuo sistema supporta l’hot-swap, puoi farlo a caldo; in caso contrario, spegni la macchina:
- Spegni il sistema (o scollega il disco se hot-swap).
- Rimuovi il disco vecchio e inserisci quello nuovo di capacità maggiore.
- Riavvia il sistema e identifica il nuovo device (es.
/dev/sdc).
Inserimento del nuovo disco nel Pool
Una volta identificato il nuovo disco, utilizziamo il comando zpool replace per iniziare il processo di resilvering (ricostruzione dei dati):
# Sostituiamo il vecchio device con il nuovo (sdc in questo esempio)
zpool replace -f pool1 sdc
Nota: L’opzione -f (force) viene utilizzata per forzare l’esecuzione se il disco nuovo appare già formattato o con partizioni esistenti.
Monitoraggio dello stato
È fondamentale attendere che la ricostruzione sia completata prima di passare al disco successivo:
zpool status -v
Monitora la percentuale di completamento sotto la voce “scan” (resilvering). Non procedere finché lo stato non torna su ONLINE.
2. Sostituzione dei dischi successivi
Ripeti esattamente la procedura del punto 1 per ogni disco che compone il tuo VDEV (es. se hai un Mirror o un Raid-Z). Importante: attendi sempre il completamento del resilvering per ogni singolo disco prima di passare al successivo.
3. Espansione dello Spazio (Autoexpand)
Una volta che tutti i dischi sono stati sostituiti e l’array è di nuovo in stato ONLINE, noterai che lo spazio disponibile è ancora quello vecchio. Dobbiamo dire a ZFS di utilizzare tutto il nuovo spazio disponibile.
Abilitazione autoexpand
Abilitiamo l’opzione autoexpand a livello di pool:
zpool set autoexpand=on pool1
Verifichiamo che l’opzione sia stata recepita correttamente:
zpool get autoexpand pool1
Espansione effettiva dei device
A volte, nonostante l’autoexpand, è necessario “forzare” ZFS a riconoscere la nuova dimensione fisica dei dischi con l’opzione -e (expand):
# Eseguiamo l'espansione per ogni device sostituito
zpool online -e pool1 sdc
zpool online -e pool1 sdd
4. Verifica Finale
Infine, controlliamo che il pool mostri ora la nuova capacità totale e che lo stato sia pulito:
zpool list
zpool status pool1 -v
Ora il tuo storage ZFS è stato ampliato con successo senza tempi di inattività prolungati (se hot-swap) e mantenendo tutti i tuoi dati integri.