linuxstorage

ZFS: Guida all'espansione di un Pool (Raid ZFS)

3 min di lettura
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.

⚠️
**Backup Prima di Iniziare:** Anche se ZFS è estremamente robusto, la sostituzione di dischi in un array comporta sempre un rischio. Assicurati di avere un backup aggiornato dei dati critici prima di procedere.

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:

  1. Spegni il sistema (o scollega il disco se hot-swap).
  2. Rimuovi il disco vecchio e inserisci quello nuovo di capacità maggiore.
  3. 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.

💡
**Consiglio:** Se hai molti dischi, puoi pianificare queste operazioni durante le ore di basso carico, poiché il processo di resilvering può impattare leggermente sulle performance di I/O del sistema.