Partizione btrfs defunta dopo blocco

Ho una partizione btrfs con Debian Testing su netbook che, dopo il ripristino da sospensione su RAM, ha ben deciso di piantarsi (freeze completo). Unica soluzione, lo spegnimento tenendo premuto il tasto d'accensione per 5 secondi. Dopo ciò, però, il nulla al boot successivo: la partizione è andata...

Primo imprevisto: dopo la schermata del GRUB, riscontro degli errori nel montaggio della partizione btrfs /dev/sda6. Non è una grande perdita poiché per fortuna non è il mio PC principale, ma comunque è il netbook che uso a lavoro e perdere tutto darebbe fastidio... perciò penso alla prima azione da fare:

fare il boot di MeeGo che ho installato nella SD card esterna e tentare un controllo del filesystem.

MeeGo è già avanti poichè usa di default il filesystem btrfs, quindi provo a fare un controllo con fsck.btrfs /dev/sda6. Il controllo va a buon fine, spero che abbia sistemato il tutto ma sono dubbioso perchè il kernel di MeeGo è 2.6.33 e all'epoca il supporto al filesystem in questione è ancora sperimentale...

Effettuo un reboot ma niente da fare.

Continua a riproporsi sui messaggi di sistema l'errore:

[ 7548.573269] device label debianbtrfs devid 1 transid 57709 /dev/sdb6
[ 7548.587280] parent transid verify failed on 7920328704 wanted 57709 found 57716
[ 7548.587900] parent transid verify failed on 7920328704 wanted 57709 found 57716
[ 7548.588527] parent transid verify failed on 7920328704 wanted 57709 found 57716
[ 7548.593075] btrfs: open_ctree failed

Allora mi affido al buon vecchio Google, e trovo un bel po' di tentativi di gente che, come me, dopo uno spegnimento brusco si trova in panne. Smonto l'harddisk e lo ripongo in un case esterno USB 2.0, per poterlo gestire meglio dall'altro mio PC (quindi d'ora in poi la partizione diverrà /dev/sdb6).

Sul web vedo che utilizzano il comando btrfs-select-super ma non ne trovo traccia su Debian.

Allora provo ad installare la versione experimental del pacchetto btrfs-tools sulla mia Debian Testing, ma quel comando non c'è.

Allora passo alle azioni estreme, me lo compilo dal sorgente dell'ultima versione su repository git di btrfs-progs-unstable:

  • git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs-unstable.git -b next
  • cd btrfs-progs-unstable
  • make
  • make btrfs-select-super
  • lancio un controllo del filesystem con ./btrfsck /dev/sdb6
  • lancio finalmente il comando estremo ./btrfs-select-super -s 1 /dev/sdb6

Di seguito l'output degli ultimi due comandi:

matrix64:/home/stylee/tmpgit/btrfs-progs-unstable# ./btrfsck /dev/sdb6
found 22061735936 bytes used err is 0
total csum bytes: 20935252
total tree bytes: 624037888
total fs tree bytes: 555016192
btree space waste bytes: 173195069
file data blocks allocated: 27231510528
referenced 21144965120
Btrfs v0.19-36-g70c6c10
matrix64:/home/stylee/tmpgit/btrfs-progs-unstable# ./btrfs-select-super -s 1 /dev/sdb6
using SB copy 1, bytenr 67108864
matrix64:/home/stylee/tmpgit/btrfs-progs-unstable#

A questo punto provo a montare la partizione btrfs... et voilà!

La partizione è salva!

Ammetto che non so che tipo di azione ho intrapreso nel dettaglio, ma ho raggiunto il mio scopo! Non ho ancora verificato se la partizione ha subito dei danni, vedremo domani a lavoro...

Italiano