bug-ddrescue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-ddrescue] Improving ddrescue


From: Santiago Cassina
Subject: [Bug-ddrescue] Improving ddrescue
Date: Sat, 26 Nov 2016 00:24:10 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

Hello, I use ddrescue a lot to recover damaged disks, most of them are WD (green and blue), I want to share my own experience because I believe it can help improving your software

This story starts with a big 2TB green WD disk, which started to copy at a rate of 32MB/sec with some (fast and very slow) peaks. It was a LOT of data to recover so I spent 6 days running ddrescue constantly (and checking it visually). I noticed sometimes when the reading speed dropped (very very slow, about 1KB/sec or less) that by pressing CTRL-C and re-running ddrescue the reading speed was fast again (sometimes fast and sometimes very slow as before), so I tried modifying parameters as sector size, block size, dynamic access, reverse direction, but such modifications were not helpful, instead killing and starting ddrescue again with default parameters every 7 seconds helped me to improve read speed.

I didn't read ddrescue sources, so I don't know if it gots stucked on a bottleneck when some read error is found, but the this experience made me to create two bash files

1)  rekill_recover.sh

#!/bin/bash
while :
do
    echo "Killing again..."
    killall ddrescue
    sleep 12
done
(you can try 7-12-20 seconds, the block of time you detect as the best to kill and rerun)

2) rerun_recover.sh

#!/bin/bash
while :
do
    echo "Running again..."
    ddrescue /dev/source /rescued.img /tmp/rescued_img.log
done

I used those scripts and I rescued (almost) the entire disk faster than expected. I thought it was just luck

Two days ago I received a very damaged HDD WD (blue this time) with same reading speed drops, I used those scripts again (each one in different terminals obviously) and voilá, I got better reading speeds again, so my "guess" is one of this two options

1) When I kill ddrescue, "he" forgets what was reading, ignores that block and I lose data (but I BELIEVE this is not happening) 2) When I kill ddrescue, "he" forgets he was reading slowly and starts again with all the power, energy and faith he can do the job

I think 2) is happening, and I want it too


I don't know if this can help you to improve your software, just sharing my experience.


By the way, when I detect (visually) that the reading speed is considerably fast again (more than 10MB/sec) I stop killing ddrescue for a while, until I detect he stucks again and I start to call rekill script. Maybe, maybe, maybe you can apply some of this experience on the sources or by creating a simple bash script (I don't think can be better than mine ;) with the ability to do some "smart-automagic" kill-rerun-rekill-rerun depending on reading speeds

If you need to, I can provide with a secure shell connection to a terminal with this second disk connected to check it for yourself. Or perhaps by vnc, teamviewer, anything I can do to help you improving your algorythm

Best regards

--
 _______________________________
        Santiago Cassina
  Lic. en Análisis de Sistemas
           M.P. 8064
 Cel/Whatsapp: (0387) 154-752661




reply via email to

[Prev in Thread] Current Thread [Next in Thread]