[pso] Really raw read de pe un block device

Octavian Voicu octavian.voicu at gmail.com
Thu Mar 5 22:02:43 EET 2009


Am urmatoarea problema (nu direct legata de curs, dar cred ca este in
context):
Un laptop a cazut de la cam 1 metru in timp ce mergea si se pare ca socul a
defectat hdd-ul (nefiind inchis / standby capetele nu erau parcate
probabil). Nu prea mai booteaza el, scoate niste zgomote de parca capetele
zgarie suprafata dar nu tot timpul.

Bootand cu un live cd am montat partitia (ntfs) si se pot vedea fisierele,
dar face urat la accesarea lor.

Ideea mea e sa fac un dump al intregului hdd stricat pe un hdd extern
folosind dd.

Am folosit:

dd if=/dev/hda2 of=hda2.bin bs=4096 conv=noerror

Parametrul conv=noerror continua chiar daca apar erori pentru unele blocuri.

Functioneaza, dar sunt foarte multe blocuri consecutive care dau erori,
urmate de alte sectiuni mari care merg fara probleme. Per total, intr-o
noapte a copiat vreo 8 GB (din 120).

Intrebarea mea e daca se poate efectua un read foarte low level, fara
retry-uri si fara error checking, astfel incat sa citeasca sectiunile bune
si sa returneze garbage sau whatever pentru cele stricat. Astfel ar merge
mult mai repede si ar returna cam acelasi lucru, cred eu (in momentul de
fata fiecare bloc stricat inseamna sa astepte dupa un timeout si cred ca
face si cateva retry-uri, din ce am vazut un dmesg).

Ca optimizare o solutie la care m-am gandit ar fi sa maresc block size-ul
pentru dd (bs=40960 de exemplu), dar ma gandesc ca nu ar avea mare efect
pentru ca oricum linux face un buffering al lui si nu s-ar schimba mare
lucru.

De preferat sugestii care nu includ recompilarea kernelului pentru tweak-uit
error handling-ul de acolo :D


Multumesc,


-- 
Octavian Voicu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090305/084b3b84/attachment.html 


More information about the pso mailing list