GNU/Linux >> Linux Esercitazione >  >> Linux

Linux BTRFS:conversione in singolo con unità guasta

Bene, l'ho capito con l'aiuto di questo link Trello. Nel caso qualcun altro voglia farlo, ecco la procedura.

Procedura

Da un array RAID1 di due dischi, uno /dev/sda che è difettoso e un altro /dev/sdc noto-buono:

  1. Disabilita il montaggio automatico di questo array in /etc/fstab , riavvia . Fondamentalmente, vogliamo che btrfs dimentichi l'esistenza di questo array, poiché c'è un bug per cui proverà comunque a utilizzare una delle unità se è scollegata.
  2. Ora che il tuo array è smontato, esegui:

    echo 1 | sudo tee /sys/block/sda/device/delete

    sostituendo sda con il nome del dispositivo errato. Ciò causa la rotazione del disco (dovresti verificarlo in dmesg) e diventa inaccessibile al kernel.

    In alternativa :basta estrarre l'unità dal computer prima dell'avvio! Ho scelto di non optare per questo metodo, poiché il precedente funziona bene per me.

  3. Monta il tuo array, con -o degraded modalità.
  4. Inizia un'operazione di ribilanciamento con sudo btrfs balance start -f -mconvert=single -dconvert=single /mountpoint . Questo riorganizzerà le estensioni sull'unità valida, convertendole in single (non RAID). Il completamento di questa operazione richiederà quasi un giorno, a seconda della velocità dell'unità e delle dimensioni dell'array. (il mio aveva ~700 GiB e ribilanciato a una velocità di 1 pezzo da 1GiB al minuto) Fortunatamente, questa operazione può essere messa in pausa e manterrà l'array online mentre si verifica.
  5. Una volta fatto questo, puoi emettere sudo btrfs device remove missing /mountpoint per rimuovere il dispositivo difettoso "mancante".
  6. Inizia un secondo ribilanciamento con sudo btrfs balance start -mconvert=dup /mountpoint per ripristinare la ridondanza dei metadati. Questo richiede alcuni minuti sul mio sistema.
  7. Hai finito! Il tuo array ora è single modalità, con tutta la ridondanza rimossa.
  8. Porta fuori il tuo disco difettoso e battilo con un martello.

Risoluzione dei problemi

  • Aiuto, btrfs ha provato a scrivere sul mio disco difettoso, si è verificato un errore e l'ha forzato in sola lettura!
    • Hai seguito il passaggio 1 e riavviato prima di continuare? È probabile che btrfs pensi ancora che l'unità che hai bloccato sia presente. Il riavvio farà sì che btrfs dimentichi eventuali errori e ti consentirà di continuare.

Grazie per il tuo post. Ho avuto l'idea di poter testare il raid, estrarre l'unità dal mio alloggiamento hotswap, utilizzare un'altra unità e quindi reinserire l'unità raid. In retrospettiva, questa è stata una cattiva idea e ora ho bisogno del mio alloggiamento hotswap.

Ecco cosa ho trovato. Come root:

# sudo btrfs fi show
Label: 'disk'  uuid: 12817aeb-d303-4815-8bba-a3440e36c62c
Total devices 2 FS bytes used 803.10GiB
    devid    1 size 931.51GiB used 805.03GiB path /dev/sda1
    devid    2 size 931.51GiB used 805.03GiB path /dev/sdb1

Prendere nota del dispositivo elencato per ogni unità. Man for brtrfs balance mi ha portato all'opzione devid, ci sono voluti un paio di tentativi per capire come funzionavano i filtri (inizialmente provando devid=/dev/sdb1). Quindi il tuo primo tentativo sarà simile a questo.

# btrfs balance start -dconvert=single,devid=2 -mconvert=single,devid=2 /mnt

Che mi ha dato un errore.

ERROR: error during balancing '/media/.media': Invalid argument
There may be more info in syslog - try dmesg | tail    

Ecco l'errore di dmesg:

BTRFS error (device sdb1): balance will reduce metadata integrity, use force if you want this

Quindi questa è la finale che ha funzionato:

# btrfs balance start -f -dconvert=single,devid=2 -mconvert=single,devid=2 /mnt

Spero che questo aiuti qualcun altro.


Linux
  1. Partizionare un'unità su Linux con GNU Parted

  2. Converti file audio con questo versatile comando Linux

  3. Sovrascrivi disco rigido con zeri su Linux:facile e veloce!

  4. Scambio non riuscito:argomento non valido su un sistema Linux con file system Btrfs

  5. Doppio avvio Windows + Linux con crittografia

Crea un'unità USB avviabile con Ventoy WebUI in Linux

Come convertire i pacchetti Linux con Alien

Ripristina le impostazioni predefinite del desktop Linux con un solo comando

Come convertire una directory in una partizione in Linux

Passare a Linux? Porta con te il tuo Google Drive

Converti le schede in spazi nel terminale Linux con il comando Espandi