Sostituzione di un disco guasto nella root ZFS

Concetti introduttivi

Questo documento è una guida per gli amministratori e le persone che possiedono un certo livello di conoscenza delle piattaforme hardware e dei concetti di storage, come RAID. Se si possiede già una buona comprensione del processo generale di guasto, si possono saltare le sezioni relative alla sostituzione di un'unità e alla riparazione del pool.

Gradi di verbosità

Quando un'unità si guasta o presenta errori, SmartOS registra una grande quantità di informazioni. Per individuare la causa del guasto del disco è necessario scendere nei dettagli. Di seguito sono riportati i comandi in ordine decrescente di verbosità:

Il comando 'zpool status' fornisce una panoramica sullo stato di salute del pool.

iostat fornisce il conteggio degli errori di alto livello e informazioni specifiche sui dispositivi.

fmadm faulty ci aiuterà a determinare con maggiore precisione la causa del guasto del disco. fmadm è anche in grado di cancellare i guasti transitori;

Il comando fmdump fornisce un registro degli ultimi {n} giorni di eventi di guasto.

Oltre alla sostituzione dei dischi guasti, queste informazioni possono essere estremamente utili per isolare la causa principale del problema se il problema è più complesso di un semplice guasto del disco.

Processo generale di guasto

Nel sistema, quando si verifica un guasto del disco, ZFS non è il primo componente a rilevarlo e a rispondere. Al contrario, si verifica il seguente ordine generale di eventi:

1. FMA (Fault Management Architecture) rileva e registra un disco guasto. FMA monitora e gestisce i guasti hardware nel sistema.

2. Una volta che FMA ha rilevato il disco guasto, il sistema operativo interviene e rimuove il disco dal sistema.

3. ZFS, che è un file system robusto e scalabile, viene a conoscenza del cambiamento di stato. ZFS rileva che il disco è stato rimosso e reagisce mandando in errore il dispositivo. Il guasto del dispositivo significa che ZFS contrassegna il disco come difettoso e prende le misure necessarie per mantenere l'integrità e la disponibilità dei dati.

Questo processo generale di guasto assicura che qualsiasi guasto del disco nel sistema venga prontamente rilevato, registrato e risposto dai componenti pertinenti. FMA esegue la fase iniziale di identificazione del disco guasto, seguita dalla sua rimozione da parte del sistema operativo e, infine, dalla reazione di ZFS al cambiamento di stato con il guasto del dispositivo. Seguendo questo ordine di eventi, il sistema è in grado di gestire efficacemente i guasti dei dischi e di mantenere la stabilità e l'affidabilità generale dell'infrastruttura di archiviazione.

Si noti che questa è una descrizione generale del processo di guasto e può variare a seconda dell'implementazione e della configurazione specifica del sistema.

Come sostituire un disco

Panoramica di alto livello della sostituzione di un disco guasto nella root ZFS

Nota: Prima di procedere con la sostituzione del disco, assicurarsi di aver identificato correttamente il disco guasto. Inoltre, assicurarsi di avere a disposizione un disco di riserva per la sostituzione.

Guida passo passo alla sostituzione di un disco guasto nella root ZFS

Supponiamo che il server abbia 2 dischi: /dev/sda e /dev/sdb.
Uno dei dischi si è guastato, ad esempio /dev/sdb
Il disco danneggiato deve essere sostituito.

Per prima cosa, definiamo il nostro pool con il comando:

zpool list
Sostituzione di un disco guasto nella root ZFS

Prima di sostituire il disco, è consigliabile rimuoverlo dall'array:

zpool detach rpool /dev/sdb

Quindi, spegnere il server se non è possibile scambiare i dischi a caldo, ma tutto ciò che viene descritto di seguito può essere fatto senza fermare il server, se si dispone di un controller e di un hotswap.

poweroff

Sostituire fisicamente il disco guasto.

Determinazione della tabella delle partizioni (GPT o MBR) e trasferimento sul nuovo disco

Dopo aver sostituito un disco danneggiato, è necessario determinare se la tabella delle partizioni è GPT o MBR.
Per farlo, utilizzare gdisk. Installare gdisk:

apt-get install gdisk -y

Eseguire il comando:

gdisk -l /dev/sda

Dove /dev/sda è un disco valido in RAID.

Per MBR l'output sarà approssimativamente il seguente:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

Per il GPT, è approssimativamente il seguente:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Prima di aggiungere un disco all'array, è necessario partizionarlo esattamente come un buon disco sda. Questa operazione viene eseguita in modo diverso a seconda del partizionamento del disco.

Copia del partizionamento per GPT

Per copiare il partizionamento GPT:

Nota:il primo è il disco su cui viene copiato il partizionamento e il secondo è il disco da cui viene copiato il partizionamento. Se si confondono, il partizionamento sul disco originariamente utilizzabile verrà distrutto.

sgdisk -R /dev/sdb /dev/sda

Assegnare un nuovo UUID casuale al disco:

sgdisk -G /dev/sdb

Copia del partizionamento MBR

Per copiare il partizionamento MBR:

Nota!
Qui si scrive prima il disco da cui si trasferisce il partizionamento e poi il disco su cui lo si trasferisce.

sfdisk -d /dev/sda | sfdisk /dev/sdb

Se le partizioni non sono visibili nel sistema, è possibile rileggere la tabella delle partizioni con il comando:

sfdisk -R /dev/sdb

Installazione del bootloader

Dopo aver partizionato il disco, è necessario installarvi il bootloader:

grub-install /dev/sdb

Aggiunta di un disco

Specificare il disco da sostituire (nel nostro caso è /dev/sdb3):

zpool replace rpool /dev/sdb3

Aggiunta di un disco al raid:

zpool online rpool /dev/sdb3

Attendere il completamento della sincronizzazione dell'array:

zpool status

Conclusione

Seguendo queste istruzioni, è possibile sostituire con successo un disco guasto nella root ZFS senza compromettere l'integrità dei dati. È essenziale prendere le dovute precauzioni ed eseguire le fasi di backup e di verifica per evitare la potenziale perdita di dati e garantire un funzionamento regolare.