Guida verificata con Ubuntu: 20.04 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

In questa guida sono descritte le procedure su come gestire la corruzione del filesystem Btrfs.

Nonostante Btrfs sia progettato con solide caratteristiche per rilevare e correggere la corruzione dei dati, ci sono ancora casi in cui il filesystem può subire danni a causa di problemi hardware. Ad esempio:

Nella guida viene preso come esempio il nome del dispositivo /dev/sda2; sostituirlo con il nome del dispositivo della partizione Btrfs (consultare questa guida per identificarlo).

Salvare i dati

In caso di corruzione, Btrfs passa automaticamente alla modalità di sola lettura per non far propagare la corruzione. In questo scenario è possibile salvare i dati, che è la l'azione raccomandata prima di provare a riparare il filesystem.

  1. Nel caso in cui il filesystem non sia montabile, provare a montarlo in sola lettura nella modalità “rescue”. Abilitare quindi tutte le opzioni di recupero supportate (btrfs-progs 5.9):

    sudo mount -o ro,rescue=all /dev/sda2 /mnt
  2. Qualora l'azione precedente non sia andata buon fine, provare a utilizzare gli slot root di backup all'interno del super blocco (btrfs-progs 5.9):

    sudo mount -o ro,rescue=usebackuproot /dev/sda2 /mnt
  3. Infine salvare tutti i dati e procedere alla riparazione del filesystem.

Potrebbe capitare che il filesystem non venga montato con le opzioni di salvataggio. Ad esempio questo avviene in caso di errore simile al seguente: [ 4007.489730] BTRFS error (device vdb): parent transid verify failed on 30736384 wanted 10 found 8. L'errore parent transiid verify indica un errore critico. Si consiglia quindi di passare direttamente al paragrafo Recupero dati per cercare di recuperare più dati possibili. Per ulteriori dettagli consultare questo link.

Perché si verificano errori transid?

Linux utilizza Flush/FUA (precedentemente noto come barriers) per garantire che nessun dato aggiuntivo venga scritto su disco prima che Flush/FUA sia completato. Questo è essenziale poiché i dispositivi di archiviazione possono riordinare le scritture nella loro cache per ottimizzare le prestazioni. Quindi Flush/FUA assicura che i dati su disco siano in un ordine coerente, anche in caso di interruzione dell'alimentazione.

Quando si verifica un errore Parent Transid Verify Failed spesso significa che il dispositivo di archiviazione non ha rispettato correttamente Flush/FUA. In alcuni casi potrebbe esserci stato un problema con un bus o con un ripristino del dispositivo, causando la perdita di dati in transito, o nella cache del disco, portando a un filesystem incoerente.

Altre situazioni che possono portare a errori sono:

Controllo hardware

Prima di procedere al tentativo di riparazione è importante escludere problemi hardware, poiché un tentativo di riparazione su un hardware difettoso non fa altro che peggiorare la corruzione del filesystem.

Informazioni preliminari

Test sull'hardware

  1. Test del drive: consultare questo paragrafo.

  2. Test della Ram: utilizzare la funzione MemTest disponibile in una qualsiasi live di Ubuntu o derivata (o anche altra distribuzione). Memtest86 eseguirà molti test diversi sulla RAM (alcuni dei quali possono richiedere più di 30 minuti).

  3. Stabilità alimentatore: verificare il corretto funzionamento dell'alimentazione.

  4. Controllo dei cavi SATA: verificare che i siano ben collegati e funzionanti.

Controllo del filesystem

La soluzione più sicura e attendibile per procedere al controllo del filesystem è eseguirlo con quest'ultimo smontato. Se è una partizione di sistema, si raccomanda di utilizzare una live che includa l’ultima versione stabile di btrfs-progs (per controllare l'ultima versione consultare il tag release dal progetto upstream).

Riparazione

Recupero dati

Il recupero dei dati va eseguito se il filesystem non viene montato neanche in modalità rescue.

Il comando btrfs restore viene utilizzato per recuperare file da un filesystem Btrfs danneggiato senza montarlo. Questo comando è utile quando il filesystem non può essere montato normalmente a causa di corruzione o di altri errori gravi. Invece di tentare di riparare il filesystem, btrfs restore cerca di copiare i dati leggibili in un'altra posizione.

  1. Preparare un dispositivo per poter copiare i dati, di dimensione uguale o maggiore alla quantità di dati presenti sul filesystem.
  2. Montare il dispositivo (verrà preso come esempio il percorso: /mnt/recupero; modificarlo in base alla posizione di mount del disco di recupero).

  3. Eseguire uno dei seguenti comandi in base all'azione desiderata:
    • Elencare i file recuperabili senza copiarli:

      sudo btrfs restore -l /dev/sda2
    • Recuperare tutti i file :

      sudo btrfs restore /dev/sda2 /mnt/recupero
    • Ignorare i file corrotti:

      sudo btrfs restore -i /dev/sda2 /mnt/recupero
    • Recuperare solo un file specifico:

      sudo btrfs restore -o /percorso/del/file /dev/sda2 /mnt/recupero

Recupero dei dati cancellati accidentalmente

Grazie alla sua struttura interna e alle sue caratteristiche avanzate di gestione dei dati, su Btrfs è possibile recuperare file cancellati in determinate circostanze. Sebbene non offra direttamente un "livello di backup" come farebbe un sistema di backup tradizionale, alcune funzionalità del filesystem facilitano il recupero dei dati cancellati:

Ulteriori risorse


CategoryAmministrazione CategoryHardware

Hardware/DispositiviPartizioni/Btrfs/Riparazione (l'ultima modifica è del 01/10/2024 21.12.21, fatta da andreas-xavier)