Switch to full style
Data recovery and disk repair questions and discussions related to old-fashioned SATA, SAS, SCSI, IDE, MFM hard drives - any type of storage device that has moving parts
Post a reply

Force a non-destructive remap on area

December 13th, 2020, 9:49

I have external HDD with data and several weak sectors. I already know the range of sectors of interest that needs to be checked and don't want to put the disk under stress without a reason.

I previously tried Hard Disk Sentinel on USB disk and was satisfied with results. Disk repair causes remap without erasing data but it seems to only work on the entire disk at once.

What can I try to force a remap on an area without losing all data? I'd prefer to do this inside Windows. A free solution would be great but I can consider a commercial one if it's not snake oil.

Victoria works fine on Windows. I'm not sure if keeps data when remapping. Does it? It's a great tool but it lacks safety belts and proper documentation at the same time, not a very good combo.

Re: Force a non-destructive remap on area

December 14th, 2020, 18:49

I have external HDD with data and several weak sectors. I already know the range of sectors of interest that needs to be checked and don't want to put the disk under stress without a reason.

That would be wise indeed.

I previously tried Hard Disk Sentinel on USB disk and was satisfied with results. Disk repair causes remap without erasing data but it seems to only work on the entire disk at once.

(Disclaimer : Not a professional DR expert.) I would say, it may be worth a try if there are only a few bad/weak sectors, but if there are more than a couple dozens, all located in a small area, it might mean that there is media damage in that area, and then further accessing that area, even its vicinity, might expand the bad area. Re-partitioning in a way that bypasses that area, with a good safety margin, would seem more sensible. Or find a way to allocate that area to a dummy file without actually writing to it — I don't know a simple method to accomplish this. Quoting myself from here :
“I have a WD30EZRX with 25 “pending” sectors, all belonging to the same large video file it would seem, I moved that file to a specific directory with a name explicitly saying that there's a file with bad sectors in it, in case I forget, and it's been stable ever since.”
To elaborate : on 2018/02/15, 1 “pending” sector appeared on this HDD. After a “Repair” scan with HD Sentinel, it disappeared, but it reappeared some days later. After copying ~300GB of files to that HDD, the “pending sector count” went back to 0. Then, when I copied a complete folder with large MKV files from that HDD to another with SynchronizeIt{*}, there was a CRC error with one 4GB file ; after that the “pending sector count” jumped to 15, and reached 22 after a second attempt at copying that one file. So I moved that file to a new directory, from the command line (otherwise Windows Explorer would have tried to parse it to display the properties and a thumbnail), in order to not touch it ever again. Since then, the “pending sector count” has very gradually reached 25, and it's been stable for two years now (while, for some reason, the “offline uncorrectable sector count” oscillates between 24 and 25).

One possibility, lacking a method that would allow to allocate a file at a specific location, would be to create several large dummy empty files with the native Windows command line utility fsutil, which is very quick and doesn't actually write data, but the corresponding space is still allocated so no other file can get written to that space (in WinHex, such a file is labeled as “partially initialized”, meaning that the former data that used to be in the corresponding sectors hasn't been overwritten). For instance, to create an empty 1GB file :
Code:
fsutil file createnew 1073741824

And then check which one(s) cover the target range of sectors, which can also be done with fsutil (after converting sector numbers to cluster numbers). For instance, to check which file is allocated to cluster 12345 (= sector 98760) :
Code:
fsutil volume querycluster E: 12345

Then keep the file(s) containing the identified bad sectors, put them in a “nuclear waste” folder that you won't open ever again, and remove the others.

What can I try to force a remap on an area without losing all data? I'd prefer to do this inside Windows. A free solution would be great but I can consider a commercial one if it's not snake oil.
Victoria works fine on Windows. I'm not sure if keeps data when remapping. Does it? It's a great tool but it lacks safety belts and proper documentation at the same time, not a very good combo.

Well, you should already have a copy of important data elsewhere... If weak/bad sectors have already been idenfitied you can't be sure that a remapping will preserve the corresponding file's integrity (but please don't become another “sonicmario” !).


{*} A tool I like because it's among the very rare Windows file transfer / synchronization utilities that preserve all timestamps, including directories' creation and modification timestamps — but the current public version (3.5 from 2009) has a bug which corrupts “sparse” files, I reported it to the author in 2015, he provided me with a fixed version which I've used ever since with no issue, yet for some reason never released it publicly. (I can send it by PM if someone's interested.)

Re: Force a non-destructive remap on area

December 15th, 2020, 7:58

hibernate wrote:I previously tried Hard Disk Sentinel on USB disk and was satisfied with results. Disk repair causes remap without erasing data but it seems to only work on the entire disk at once.


But HD Sentinel disk repair algo only reads and will only attempt remap (write) if a problematic sector is detected. If you fear merely reading is too stressful then isn't it simply time to toss that disk in the bin?

In addition to that HD Sentinel offers the option to specify a range you want tested.

Re: Force a non-destructive remap on area

December 15th, 2020, 14:52

Arch Stanton, I meant that forcing a remap for the entire drive is stressful, reading is fine of course. Thanks for confirming this, I've checked Sentinel again after posting, it has an option to specify block range, it needs to calculate blocks from sectors but yes, that's what I need.

abolibibelot, thanks for sharing, that's an interesting technique I didn't think of and possibly will have to resort to very soon. It's simpler than making them bad on NTFS level, and I don't remember a good way to do this any way.
Post a reply