Modo corretto di gestire file system XFS corrotti


18

Recentemente ho avuto un filesystem XFS corrotto a causa di un errore. (Sistema CentOS 7). Il sistema non si avvia correttamente.

Ho avviato da un cd di ripristino e ho provato xfs_repair, mi ha detto di montare la partizione per gestire il registro.

Ho montato la partizione, e ho fatto un lsper verificare che sì, sembra essere lì. Ho smontato la partizione e xfs_repairriprovato e ho ricevuto lo stesso messaggio.

Cosa dovrei fare in questa situazione? C'è qualcosa di sbagliato nel mio cd di ripristino (System Rescue CD, versione 4.7.1)? C'è qualche altra procedura che avrei dovuto usare?

Ho finito semplicemente per ripristinare il sistema dai backup (in questo caso è stato facile e veloce), ma mi piacerebbe sapere cosa fare in futuro.

Risposte:


20

Se si sta tentando di eseguire xfs_repair , ottenendo il messaggio di errore che suggerisce di montare il filesystem per riprodurre il registro e dopo il montaggio continua a ricevere lo stesso messaggio di errore, potrebbe essere necessario eseguire una riparazione forzata (utilizzando il -Lflag con xfs_repair). Questa opzione dovrebbe essere l'ultima risorsa.

Ad esempio, userò un caso in cui avevo una partizione di root corrotta sulla mia installazione di CentOS 7. Durante il tentativo di montare la partizione, ho ricevuto continuamente il seguente messaggio di errore:

mount: mount / dev / mapper / centos-root su / mnt / centos-root non riuscito: la struttura deve essere pulita

Sfortunatamente, forzare una riparazione comporterebbe l'azzeramento (distruzione) del registro prima di tentare una riparazione. Quando si utilizza questo metodo, esiste il potenziale di finire con più dati corrotti di quanto inizialmente previsto; tuttavia, possiamo utilizzare gli strumenti xfs appropriati per vedere che tipo di danno può essere causato prima di apportare modifiche permanenti.

Utilizzando xfs_metadump e xfs_mdrestore , è possibile creare un'immagine dei metadati della partizione interessata ed eseguire la riparazione forzata sull'immagine anziché sulla partizione stessa. I vantaggi di questo è la capacità di vedere il danno che viene fornito con una riparazione forzata prima di eseguirlo sulla partizione.

Per fare questo, avrai bisogno di una USB di dimensioni decenti o di un disco rigido esterno. Inizia montando l'unità USB: la mia USB si trovava in /dev/sdb1, la tua potrebbe essere nominata diversamente.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Una volta montato, esegui xfs_metadumpper creare una copia dei metadati della partizione su USB: di nuovo, la partizione interessata potrebbe essere diversa. In questo caso, avevo una partizione di root danneggiata situata in /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Successivamente, vorrai ripristinare i metadati in un'immagine in modo da poter eseguire una riparazione e misurare il danno.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Ho scoperto che in modalità di ripristino xfs_mdrestorenon è disponibile e invece dovrai essere in modalità di ripristino di un CD CentOS live.

Finalmente, possiamo eseguire la riparazione sull'immagine:

xfs_repair -L /mnt/usb/centos-root.img

Una volta completata la riparazione e dopo aver valutato l'output e il potenziale danno, è possibile determinare se si desidera eseguire la riparazione sulla partizione.

Per eseguire la riparazione sulla partizione, eseguire semplicemente:

xfs_repair -L /dev/mapper/centos-root

Non dimenticare di controllare anche le altre partizioni per la corruzione. Dopo le riparazioni, riavviare il sistema e si dovrebbe essere in grado di avviarsi correttamente.

Ricorda che la -Lbandiera dovrebbe essere usata come ultima risorsa in cui non ci sono altre opzioni possibili da riparare.

Ho scoperto che questi articoli online hanno aiutato:


OK, quindi -L è l'ultima risorsa, e queste sono ECCELLENTI istruzioni su come vedere quanto sarà grave se usiamo -L. Quali altre opzioni ho a corto di utilizzo di -L?
Michael Kohne,

1
@MichaelKohne Ripristino dal backup, ovviamente. Non dovresti avvicinarti a questo livello infernale a meno che tu non abbia backup.
Michael Hampton

1
@MichaelHampton - OK, abbastanza giusto. Ma non credo di aver mai perso un filesystem come questo a causa di errori ext4 su powerfail - xfs è meno resiliente? O questa volta ho avuto davvero sfortuna?
Michael Kohne,

@MichaelKohne Penso che tu sia stato straordinariamente sfortunato. XFS è un filesystem abbastanza affidabile.
Michael Hampton

3
eravamo semplicemente in grado di farlo da initrd. che "progressi" meravigliosi abbiamo fatto.
Florian Heigl,

1

Ho riscontrato questo errore in caso di brutto arresto di centos 7 all'interno di una macchina virtuale kvm:

corruzione dei metadati rilevata su xfs ...

quando uso il registro con "journalctl -xe", ho trovato un errore durante il montaggio:

/ dev / mapper / root / sysroot

Lo risolvo usando:

xfs_repair / dev / mapper / root

Quindi il sistema completa le sette fasi e quindi riavvia utilizzando

./spegnimento

E poi la macchina virtuale centos 7 funziona bene ...

Saluti

Nota: forse sei / dev / mapper / root hai un altro nome, per favore guarda il tuo log degli errori con journalctl -xe per trovare il nome della tua unità montato male

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.