Bad sector I/O error timeout

Fórumok

Sziasztok!

Egy USB pendrive-ról szeretnék adatokat visszamenteni dd-vel.
Azonban rengeteg bad sector van elszórva a meghajtón, amiket nem lehet olvasni.

A probléma az, hogy minden egyes ilyen rossz szektor olvasásakor 1-2 percet vár a Linux, így a 2 GB-os pendrive mentése akár hónapokig tarthat.

A parancs amit használok (dd-vel ugyanez):
dcfldd bs=512 conv=noerror,sync if=/dev/sdb of=pen.img

Hogyan lehetne állítani azt, hogy mennyit várjon egy sector olvasására (akár user space vagy kernel szinten)?
uname: 3.10.11-200.fc19.x86_64

Köszönöm.

Hozzászólások

Itt van dmesg-ben egy példa a hibára:
[ 4871.991950] sd 28:0:0:0: [sdb] Unhandled error code
[ 4871.991955] sd 28:0:0:0: [sdb]
[ 4871.991958] Result: hostbyte=DID_ABORT driverbyte=DRIVER_OK
[ 4871.991961] sd 28:0:0:0: [sdb] CDB:
[ 4871.991963] Read(10): 28 00 00 00 f9 e8 00 00 f0 00
[ 4871.991973] end_request: I/O error, dev sdb, sector 63976
[ 4871.991977] quiet_error: 22 callbacks suppressed
[ 4871.991980] Buffer I/O error on device sdb, logical block 7997
[ 4871.991986] Buffer I/O error on device sdb, logical block 7998
[ 4871.991988] Buffer I/O error on device sdb, logical block 7999
[ 4871.991991] Buffer I/O error on device sdb, logical block 8000
[ 4871.991994] Buffer I/O error on device sdb, logical block 8001
[ 4871.991997] Buffer I/O error on device sdb, logical block 8002
[ 4871.991999] Buffer I/O error on device sdb, logical block 8003
[ 4871.992016] Buffer I/O error on device sdb, logical block 8004
[ 4871.992022] Buffer I/O error on device sdb, logical block 8005
[ 4871.992028] Buffer I/O error on device sdb, logical block 8006

Valahol csoportosan, valahol pedig egy-egy szektor hibázik csak..

Az alábbi módon sikerült lementenem a meghajtó nagy részét (végül kiderült hogy egy 200 MB-os részen helyezkednek el a hibás szektorok):

dcfldd bs=512 count=4608 conv=noerror,sync if=/dev/sdb of=pen4608.img
dcfldd bs=512 skip=390000 conv=noerror,sync if=/dev/sdb of=pen390000.img
dd bs=512 count=385392 if=/dev/zero of=pennull.img
cat pen4608.img pennull.img pen390000.img > penfinal.img
mount -t vfat penfinal.img /mnt/pen

Azért 385292, mert 390000-4608=385292.

Azonban még mindig érdekel az eredeti kérdés!