L’altre dia (uf, ja fa un mes d’això!) vaig explicar la mala sort que vaig tenir quan dos discs durs tenien errors dels tres que tinc al meu ordinador. Abans d’ahir vaig començar les tasques de recuperació de dades, amb el programa GNU ddrescue. Al mateix manual en línia de ddrescue hi ha exemples molt útils, el primer dels quals és el que necessito jo. Anem per feina.
Recordo que l’objectiu és recuperar les dades de dos discos idèntics de 500 GB a un tercer disc auxiliar de la mateixa capacitat, que em va deixar un bon amic meu. És obvi que l’auxiliar ha de ser de la mateixa capacitat o major que el disc que volem recuperar. Primer ho intentaré amb un disc i després amb l’altre. El paràmetre de ddrescue -n o –no-split no intenta dividir o reintentar blocs fallits, i això faig a la primera passada:
root@jau:~# ddrescue -n /dev/sda /dev/sdb ddrescue-sda-a-sdb.log Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 0 B, errsize: 0 B, errors: 0 Current status rescued: 500107 MB, errsize: 143 kB, current rate: 10265 B/s ipos: 29744 kB, errors: 36, average rate: 14150 kB/s opos: 29744 kB, time from last successful read: 0 s Finished
El procés ha trigat unes 10 hores. Cosa que podem comprovar a partir de les dades informatives anteriors:
500107 MB / 14,150 MB/s / 3600 s/h ≈ 9,8 hores.
Tot seguit executo ddrescue amb les opcions -d o –direct , que usa accés directe al disc d’entrada, i -r o –max-retries=<n>, que surt després de n intents. Li passo el mateix nom de fitxer de log que a la comanda anterior i així ddrescue sap que només ha de buscar els sectors on ha tingut problemes durant la primera lectura:
root@jau:~# ddrescue -dr3 /dev/sda /dev/sdb ddrescue-sda-a-sdb.log Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 500107 MB, errsize: 143 kB, errors: 36 Current status rescued: 500107 MB, errsize: 17920 B, current rate: 0 B/s ipos: 34765 MB, errors: 35, average rate: 48 B/s opos: 34765 MB, time from last successful read: 23.7 m Finished
Després de 3 intents i uns 45 minuts més, he passat de 143 kB amb errors a 17,92 kB. No està malament.
A partir d’ara ja treballarem amb el disc rèplica de l’afectat; sdb en aquest cas. Ara toca refer la taula de particions del disc:
fdisk /dev/sdb
Teclejo:
p imprimeix la taula de particions, per veure si aquesta és correcta. Té una única partició, com esperava.
w escriu la taula al disc i surt, per desar-la i sortir.
A continuació cal revisar el sistema de fitxers d’aquesta partició. En el meu cas ja sé que els dos discos durs tenien el sistema de fitxers reisersfs. Per tant:
reiserfsck -f --logfile reiserfsck-check-sdb1.log /dev/sdb1 reiserfsck 3.6.21 (2009 www.namesys.com) ************************************************************* ** If you are using the latest reiserfsprogs and it fails ** ** please email bug reports to reiserfs-list@namesys.com, ** ** providing as much information as possible -- your ** ** hardware, kernel, patches, settings, all reiserfsck ** ** messages (including version), the reiserfsck logfile, ** ** check the syslog file for any related information. ** ** If you would like advice on using this program, support ** ** is available for $25 at www.namesys.com/support.html. ** ************************************************************* Will read-only check consistency of the filesystem on /dev/sdb1 Will put log info to 'reiserfsck-check-sdb1.log' Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes ########### reiserfsck --check started at Tue Mar 23 05:58:48 2010 ########### Replaying journal: Done. Reiserfs journal '/dev/sdb1' in blocks [18..8211]: 0 transactions replayed Checking internal tree.. finished Comparing bitmaps..Fatal corruptions were found, Semantic pass skipped 1 found corruptions can be fixed only when running with --rebuild-tree ########### reiserfsck finished at Tue Mar 23 06:09:54 2010 ###########
Ha trigat poc més d’11 minuts, però ara demana executar la comanada amb l’opció –rebuild-tree. Som-hi:
reiserfsck -f --rebuild-tree --logfile reiserfsck-rebuild-tree-sdb1.log /dev/sdb1 reiserfsck 3.6.21 (2009 www.namesys.com) ************************************************************* ** Do not run the program with --rebuild-tree unless ** ** something is broken and MAKE A BACKUP before using it. ** ** If you have bad sectors on a drive it is usually a bad ** ** idea to continue using it. Then you probably should get ** ** a working hard drive, copy the file system from the bad ** ** drive to the good one -- dd_rescue is a good tool for ** ** that -- and only then run this program. ** ** If you are using the latest reiserfsprogs and it fails ** ** please email bug reports to reiserfs-list@namesys.com, ** ** providing as much information as possible -- your ** ** hardware, kernel, patches, settings, all reiserfsck ** ** messages (including version), the reiserfsck logfile, ** ** check the syslog file for any related information. ** ** If you would like advice on using this program, support ** ** is available for $25 at www.namesys.com/support.html. ** ************************************************************* Will rebuild the filesystem (/dev/sdb1) tree Will put log info to 'reiserfsck-rebuild-tree-sdb1.log' Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes Replaying journal: Done. Reiserfs journal '/dev/sdb1' in blocks [18..8211]: 0 transactions replayed ########### reiserfsck --rebuild-tree started at Tue Mar 23 06:21:26 2010 ########### Pass 0: Loading on-disk bitmap .. ok, 113159770 blocks marked used Skipping 11937 blocks (super block, journal, bitmaps) 113147833 blocks will be read 0%....20%.... left 0, 16287 /seccseccccc "r5" hash is selected Flushing..finished Read blocks (but not data blocks) 113147833 Leaves among those 112068 Objectids found 3049 Pass 1 (will try to insert 112068 leaves): Looking for allocable blocks .. finished 0%....20%....40%....60%....80%....100% left 0, 98 /sec Flushing..finished 112068 leaves read 112048 inserted 20 not inserted Pass 2: 0%....20%....40%....60%....80%....100% left 0, 40 /sec Flushing..finished Leaves inserted item by item 20 Pass 3 (semantic): Flushing..finished Files found: 2809 Directories found: 198 Symlinks found: 34 Pass 3a (looking for lost dir/files): Looking for lost directories: Looking for lost files:3 /sec Flushing..finished18, 74 /sec Objects without names 7 Files linked to /lost+found 7 Pass 4 - finished done 105303, 99 /sec Flushing..finished Syncing..finished ########### reiserfsck finished at Tue Mar 23 08:54:56 2010 ###########
Aquesta operació ja ha trigat bastant, unes dues hores i mitja. Muntem el nou disc ja net i polit:
mount /dev/sdb1 /media/recuperat/
I tot ha anat bé! Dades recuperades!!! Genial 🙂
Només han calgut quasi 14 hores i una mica de paciència. Ara toca fer el mateix amb el segon disc dur… uf.
Actualització (25-03-2010): el segon disc s’ha copiat en només 4 hores i 16 minuts, a 32,484 MB/s, i no ha tingut cap error després de la primera passada! Per tant he reescrit la taula de particions i executat només un cop reiserfsck (el rebuild tree tampoc calia). I finalment muntar la partició i veure que totes les dades estan intactes. Magnífic!
loading...