Sui profili BTRFS
Una delle grandi caratteristiche dei BTRF è la capacità di utilizzare i diversi profili RAID. Poiché BTRFS memorizza separatamente i dati e i metadati, è possibile svuotare i dati attraverso i dischi come RAID0 e rispecchiare tutti i metadati come RAID1. Questa ridondanza nei metadati impiega poco spazio. E questo è raccomandato nelle configurazioni BTRFS RAID0.
È sempre stato suggerito di duplicare i metadati, anche su un singolo disco, poiché perdere i metadati significa anche perdere i dati.
BTRFS è in grado di modificare un profilo RAID su un sistema live, convertendo i dati e i metadati per fornire (o rimuovere) la ridondanza. Questo si verifica con a bilancia. Un saldo BTRFS riscrive tutti i blocchi del filesystem e si regola per abbinare i nuovi profili come fa.
Il bug
Ho tentato di cambiare il profilo dei metadati sul mio singolo disco da separare A dup per la ridondanza.
$ sudo btrfs saldo start -mconvert = dup /mnt
Il filesystem è andato immediatamente in uno stato di sola lettura. Il sistema è andato giù. Quando è stato riavviato, non sono riuscito a superare gli initramf di recupero. Nessun dato potrebbe essere scritto sul disco.
Quando un'operazione di bilanciamento viene interrotta sul filesystem BTRFS, riprende automaticamente la prossima volta che il filesystem è montato. Questo può essere di solito fermato con:
$ sudo monte -o skip_balance, rw /dev /sdx /mnt
Quindi, annulla se necessario utilizzando il seguente comando:
$ sudo btrfs saldo annulla /mnt
Tuttavia, il bug non solo ha causato il blocco del saldo, ma le opzioni di montaggio per impedire che continuano sono state ignorate. Ogni volta che il filesystem è montato, il saldo tenta di riprendere. Non è riuscito e il filesystem ha continuato a leggere. Se lo incontri, devi avviare qualsiasi distro usando un kernel più vecchio. Nel mio caso, era arco con 4.18.
Montare il filesystem con il vecchio Kenel:
$ sudo monte -o skip_balance, rw /dev /sdx /mnt
Annulla il saldo:
$ sudo btrfs saldo annulla /mnt
Eseguire di nuovo l'equilibrio:
$ sudo btrfs saldo start -mconvert = dup /mnt
Una volta completato il saldo, è possibile avviarsi in sicurezza in un kernel più recente, ora con metadati duplicati nel filesystem. Controlla i profili utilizzati dal filesystem. Vedrai di avere due copie dei metadati del filesytem e solo una copia dei dati:
$ sudo btrfs fi utilizzo
Conclusione
BTRFS è un filesystem sorprendente in grado di fare molte opzioni avanzate. Tuttavia, quando si utilizza BTRFS, dovresti avere backup di lavoro e un kernel avviabile da una distro LTS per il salvataggio del sistema. Anche se un saldo può essere eseguito su un filesystem di root montato, non è sempre consigliato di farlo. Ci sono ancora molti bug nel filesystem. Dovresti essere preparato per un salvataggio del filesystem quando il modulo BTRFS non è stato completamente testato contro i kernel a bordo sanguinante.