Data Recovery Issues on a 1TB Drive

How to use TestDisk to recover lost partition
Forum rules
When asking for technical support:
- Search for posts on the same topic before posting a new question.
- Give clear, specific information in the title of your post.
- Include as many details as you can, MOST POSTS WILL GET ONLY ONE OR TWO ANSWERS.
- Post a follow up with a "Thank you" or "This worked!"
- When you learn something, use that knowledge to HELP ANOTHER USER LATER.
Before posting, please read https://www.cgsecurity.org/testdisk.pdf
Message
Author
recuperation
Posts: 2720
Joined: 04 Jan 2019, 09:48
Location: Hannover, Deutschland (Germany, Allemagne)

Re: Data Recovery Issues on a 1TB Drive

#31 Post by recuperation »

Domenic wrote: 31 May 2019, 20:18
The interesting thing is that I managed to do a dd if=/dev/zero bs=512 count=1 of=/dev/affected-device and the read error was gone
What does this command attdmpt to do?
It copies one block with a length 512 Bytes (corresponds to one sector) from the null-file to the first affected device.
If this block was unreadable before, (SMART-status pending) it will be overwritten now with zeros.
Either that works or the firmware reallocates this sector by a spare sector and writes zeros.

If the operation system tries to read the master boot record of this drive later there is no hardware read error anymore.
Unfortunately a zero'd master boot record does not contain any information.
Is it something I can do through one of the tools built into Parted Magic?
Parted Magic should have a shell called "system terminal" or similar for that.

Domenic
Posts: 23
Joined: 13 May 2019, 17:33

Re: Data Recovery Issues on a 1TB Drive

#32 Post by Domenic »

Hi recuperation,

Sorry its been a few days, I had to put this problem on ice for a bit.

So I attempted to run Clonezilla and DDRescue a few more times.
Clonzilla failed to read the drive (I have a screenshot if needed).
DDRescue failed imeadiatly again as well (I have a screenshot of that error if it helps.)
The good thing about the DDRescue was it actually created a log this time, unfortunatly I'm not really sure what it's telling me.
I will upload the Log File after this post, maybe you can see something.

I finally decided to open the drive for a visual inspection while running.
There is no sign of any physical damage to the platter what so ever.
It spins up, although I suspect not as fast as it should, its not as loud as any of the doner drives I have.
The head arm jumps around a little and seems like its trying to read but eventually rests back in the cradle.
Windows still wants to initialize the drive but cannot and I got the usual results in Parted Magic.

I cant test the motor any further as I don't know what the voltages are supposed to be.
If the motor is bad, it would seem my only option is to do a platter swap to one of my matching donor drives.
Even though its a single platter drive, I still have my concerns about the swap.

How dangerous is it to swap a single platter to an exact matching drive?

This will be a last resort as I still think this is a hardware issue but I would still like to understand this a little more.
It copies one block with a length 512 Bytes (corresponds to one sector) from the null-file to the first affected device.
If this block was unreadable before, (SMART-status pending) it will be overwritten now with zeros.
Either that works or the firmware reallocates this sector by a spare sector and writes zeros.

If the operation system tries to read the master boot record of this drive later there is no hardware read error anymore.
Unfortunately a zero'd master boot record does not contain any information.
So this tries to copy one sector with the corrupt MBR on the bad device, if it cannot read the sector it will write zeros to it, if that doesn't clear the error the firmware then allocates another sector for the MBR and writes zeros to that.
When an operating system tries to read the device now, it cant because there is no MBR now but the error is cleared.
Am I understanding that correctly?
This wipes the MBR and allocates another sector for it then writes zeros to it?
If that's correct then once the MBR is zero'd out can I then rebuild it without ruining the existing data?
(SMART-status pending)
Did you see if the block was unreadable in the SMART log that I uploaded or do I need to run another test with different attributes?

Thank you as always!

Domenic
Posts: 23
Joined: 13 May 2019, 17:33

Re: Data Recovery Issues on a 1TB Drive

#33 Post by Domenic »

DDRescue Log File:

09/06/2019 12:10:42 PM - DDRescue-GUI 2.0.2 - DEBUG: Detected LINUX...
09/06/2019 12:10:42 PM - DDRescue-GUI 2.0.2 - DEBUG: Detected Parted Magic...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: DDRescue-GUI Version 2.0.2 Starting up...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: Release date: 27/2/2019
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: Running on Python version: sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: Running on wxPython version: 3.0.2.0 gtk2 (classic)...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: Checking for ddrescue...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: Determining ddrescue version...
09/06/2019 12:10:44 PM - Tools.tools - DEBUG: start_process(): Starting process: ddrescue --version
09/06/2019 12:10:44 PM - Tools.tools - DEBUG: start_process(): Process: ddrescue --version: Return Value: 0, output: "

GNU ddrescue 1.23
Copyright (C) 2018 Antonio Diaz Diaz.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."

09/06/2019 12:10:44 PM - Tools.tools - INFO: ddrescue version 1.23...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Setting some essential variables...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating Status Bar...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating text...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating buttons...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating choiceboxes...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating all other widgets...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Creating menus...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Updating Disk info...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().get_diskinfo(): Getting new Disk information...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Getting new Disk information... Please wait...
09/06/2019 12:10:44 PM - Tools.tools - DEBUG: start_process(): Starting process: pkexec /usr/share/ddrescue-gui/Tools/helpers/runasroot_linux_getdevinfo.sh /usr/bin/python /usr/share/ddrescue-gui/Tools/run_getdevinfo.py
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Setting up sizers...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().__init__(): Binding events...
09/06/2019 12:10:44 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().__init__(): Ready. Waiting for events...
09/06/2019 12:10:49 PM - Tools.tools - DEBUG: start_process(): Process: pkexec /usr/share/ddrescue-gui/Tools/helpers/runasroot_linux_getdevinfo.sh /usr/bin/python /usr/share/ddrescue-gui/Tools/run_getdevinfo.py: Return Value: 0, output: "

{u'/dev/sdb': {u'Product': u'WDC WD10EZEX-00B', u'BootRecordStrings': ['t&fh', 'TCPAu2', 'r,fh', 'fSfSfUfh', 'Invalidpartitiontable', 'Errorloadingoperatingsystem', 'Missingoperatingsystem', ''], u'Vendor': u'Western Digital', u'Name': u'/dev/sdb', u'UUID': u'N/A', u'Partitioning': u'mbr', u'Description': u'ATA Disk', u'BootRecord': '3\xc0\x8e\xd0\xbc\x00|\x8e\xc0\x8e\xd8\xbe\x00|\xbf\x00\x06\xb9\x00\x02\xfc\xf3\xa4Ph\x1c\x06\xcb\xfb\xb9\x04\x00\xbd\xbe\x07\x80~\x00\x00|\x0b\x0f\x85\x0e\x01\x83\xc5\x10\xe2\xf1\xcd\x18\x88V\x00U\xc6F\x11\x05\xc6F\x10\x00\xb4A\xbb\xaaU\xcd\x13]r\x0f\x81\xfbU\xaau\t\xf7\xc1\x01\x00t\x03\xfeF\x10f`\x80~\x10\x00t&fh\x00\x00\x00\x00f\xffv\x08h\x00\x00h\x00|h\x01\x00h\x10\x00\xb4B\x8aV\x00\x8b\xf4\xcd\x13\x9f\x83\xc4\x10\x9e\xeb\x14\xb8\x01\x02\xbb\x00|\x8aV\x00\x8av\x01\x8aN\x02\x8an\x03\xcd\x13fas\x1c\xfeN\x11u\x0c\x80~\x00\x80\x0f\x84\x8a\x00\xb2\x80\xeb\x84U2\xe4\x8aV\x00\xcd\x13]\xeb\x9e\x81>\xfe}U\xaaun\xffv\x00\xe8\x8d\x00u\x17\xfa\xb0\xd1\xe6d\xe8\x83\x00\xb0\xdf\xe6`\xe8|\x00\xb0\xff\xe6d\xe8u\x00\xfb\xb8\x00\xbb\xcd\x1af#\xc0u;f\x81\xfbTCPAu2\x81\xf9\x02\x01r,fh\x07\xbb\x00\x00fh\x00\x02\x00\x00fh\x08\x00\x00\x00fSfSfUfh\x00\x00\x00\x00fh\x00|\x00\x00fah\x00\x00\x07\xcd\x1aZ2\xf6\xea\x00|\x00\x00\xcd\x18\xa0\xb7\x07\xeb\x08\xa0\xb6\x07\xeb\x03\xa0\xb5\x072\xe4\x05\x00\x07\x8b\xf0\xac<\x00t\t\xbb\x07\x00\xb4\x0e\xcd\x10\xeb\xf2\xf4\xeb\xfd+\xc9\xe4d\xeb\x00$\x02\xe0\xf8$\x02\xc3Invalid partition table\x00Error loading operating system\x00Missing operating system\x00\x00\x00c{\x9a\x80o\xbd\n\x00\x00\x00 !\x00\x07\xfe\xff\xff\x00\x08\x00\x00\x00Xpt\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa', u'Flags': [u'partitioned', u'partitioned:dos'], u'RawCapacity': u'1000204886016', u'HostDevice': u'N/A', u'FileSystem': u'N/A', u'Capacity': u'1 TB', u'Type': u'Device', u'ID': u'ata-WDC_WD10EZEX-00BN5A0_WD-WCC3F6CKFH0S', u'Partitions': [u'/dev/sdb1']}, u'/dev/cdr': {u'Product': u'iHAS124 F', u'BootRecordStrings': ['Unknown'], u'Vendor': u'ATAPI', u'Name': u'/dev/cdr', u'UUID': u'N/A', u'Partitioning': u'Unknown', u'Description': u'DVD writer', u'BootRecord': 'Unknown', u'Flags': [u'removable', u'audio', u'cd-r', u'cd-rw', u'dvd', u'dvd-r'], u'RawCapacity': u'Unknown', u'HostDevice': u'N/A', u'FileSystem': u'N/A', u'Capacity': u'Unknown', u'Type': u'Device', u'ID': u'Unknown', u'Partitions': []}, u'/dev/sdb1': {u'Product': u'Host Device: WDC WD10EZEX-00B', u'BootRecordStrings': ['NTFS', 'NTFSu', 'TCPAu$', 'fSfSfU', 'fY[ZfYfY', 'Adiskreaderroroccurred', 'BOOTMGRiscompressed', 'PressCtrl+Alt+Deltorestart', ''], u'Vendor': u'Unknown', u'Name': u'/dev/sdb1', u'UUID': u'66AE8B3BAE8B0333', u'Partitioning': u'N/A', u'Description': u'Windows NTFS volume', u'BootRecord': '\xebR\x90NTFS \x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00?\x00\xff\x00\x00\x08\x00\x00\x00\x00\x00\x00\x80\x00\x80\x00\xffWpt\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x01\x00\x00\x003\x03\x8b\xae;\x8b\xaef\x00\x00\x00\x00\xfa3\xc0\x8e\xd0\xbc\x00|\xfbh\xc0\x07\x1f\x1ehf\x00\xcb\x88\x16\x0e\x00f\x81>\x03\x00NTFSu\x15\xb4A\xbb\xaaU\xcd\x13r\x0c\x81\xfbU\xaau\x06\xf7\xc1\x01\x00u\x03\xe9\xdd\x00\x1e\x83\xec\x18h\x1a\x00\xb4H\x8a\x16\x0e\x00\x8b\xf4\x16\x1f\xcd\x13\x9f\x83\xc4\x18\x9eX\x1fr\xe1;\x06\x0b\x00u\xdb\xa3\x0f\x00\xc1.\x0f\x00\x04\x1eZ3\xdb\xb9\x00 +\xc8f\xff\x06\x11\x00\x03\x16\x0f\x00\x8e\xc2\xff\x06\x16\x00\xe8K\x00+\xc8w\xef\xb8\x00\xbb\xcd\x1af#\xc0u-f\x81\xfbTCPAu$\x81\xf9\x02\x01r\x1e\x16h\x07\xbb\x16hR\x11\x16h\t\x00fSfSfU\x16\x16\x16h\xb8\x01fa\x0e\x07\xcd\x1a3\xc0\xbf\n\x13\xb9\xf6\x0c\xfc\xf3\xaa\xe9\xfe\x01\x90\x90f`\x1e\x06f\xa1\x11\x00f\x03\x06\x1c\x00\x1efh\x00\x00\x00\x00fP\x06Sh\x01\x00h\x10\x00\xb4B\x8a\x16\x0e\x00\x16\x1f\x8b\xf4\xcd\x13fY[ZfYfY\x1f\x0f\x82\x16\x00f\xff\x06\x11\x00\x03\x16\x0f\x00\x8e\xc2\xff\x0e\x16\x00u\xbc\x07\x1ffa\xc3\xa1\xf6\x01\xe8\t\x00\xa1\xfa\x01\xe8\x03\x00\xf4\xeb\xfd\x8b\xf0\xac<\x00t\t\xb4\x0e\xbb\x07\x00\xcd\x10\xeb\xf2\xc3\r\nA disk read error occurred\x00\r\nBOOTMGR is compressed\x00\r\nPress Ctrl+Alt+Del to restart\r\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x01\xa7\x01\xbf\x01\x00\x00U\xaa', u'Flags': [u'primary', u'ntfs', u'initialized'], u'RawCapacity': u'1000200994304', u'HostDevice': u'/dev/sdb', u'FileSystem': u'ntfs', u'Capacity': u'1 TB', u'Type': u'Partition', u'ID': u'ata-WDC_WD10EZEX-00BN5A0_WD-WCC3F6CKFH0S-part1', u'Partitions': []}, u'/dev/sda': {u'Product': u'WDC WD10EZRX-00L', u'BootRecordStrings': ['Unknown'], u'Vendor': u'Western Digital', u'Name': u'/dev/sda', u'UUID': u'N/A', u'Partitioning': u'Unknown', u'Description': u'ATA Disk', u'BootRecord': 'Unknown', u'Flags': [], u'RawCapacity': u'1000204886016', u'HostDevice': u'N/A', u'FileSystem': u'N/A', u'Capacity': u'1 TB', u'Type': u'Device', u'ID': u'ata-WDC_WD10EZRX-00L4HB0_WD-WCC4J5XDUZLJ', u'Partitions': []}}"

09/06/2019 12:10:49 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().receive_diskinfo(): Getting new Disk information...
09/06/2019 12:10:49 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().update_file_choices(): Updating the GUI with the new Disk information...
09/06/2019 12:10:49 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().update_file_choices(): Updating choiceboxes...
09/06/2019 12:10:49 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Ready.
09/06/2019 12:10:54 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().check_for_updates(): Checking for updates...
09/06/2019 12:10:54 PM - Tools.tools - DEBUG: start_process(): Starting process: notify-send DDRescue-GUI Checking for updates... -i /usr/share/pixmaps/ddrescue-gui.png
09/06/2019 12:10:54 PM - Tools.tools - DEBUG: start_process(): Process: notify-send DDRescue-GUI Checking for updates... -i /usr/share/pixmaps/ddrescue-gui.png: Return Value: 0, output: "

"

09/06/2019 12:10:55 PM - DDRescue-GUI 2.0.2 - WARNING: MainWindow().check_for_updates(): No update required.Sending notification...
09/06/2019 12:10:55 PM - Tools.tools - DEBUG: start_process(): Starting process: notify-send DDRescue-GUI Up to date -i /usr/share/pixmaps/ddrescue-gui.png
09/06/2019 12:10:55 PM - Tools.tools - DEBUG: start_process(): Process: notify-send DDRescue-GUI Up to date -i /usr/share/pixmaps/ddrescue-gui.png: Return Value: 0, output: "

"

09/06/2019 12:12:53 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().SelectInputFile(): Calling File Choice Handler...
09/06/2019 12:13:05 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().SelectInputFile(): Calling File Choice Handler...
09/06/2019 12:13:05 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().file_choice_handler(): Selected file already exists! Showing warning to user...
09/06/2019 12:13:06 PM - DDRescue-GUI 2.0.2 - WARNING: MainWindow().file_choice_handler(): Accepted already-present file as output file!
09/06/2019 12:13:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().file_choice_handler(): OutputFile is a disk so enabling ddrescue's overwrite mode...
09/06/2019 12:13:08 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().SelectMapFile(): Calling File Choice Handler...
09/06/2019 12:13:50 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().file_choice_handler(): User selected custom file: /media/sdc1/DDRescue Log 6-9-19.log...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Setting CheckedSettings to True...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Creating buttons...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Creating text...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Creating Checkboxes...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Creating Choiceboxes...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_default_recovery_settings(): Setting up SettingsWindow for default recovery settings...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Setting up sizers...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Binding events...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().__init__(): Setting up options...
09/06/2019 12:13:54 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().__init__(): Ready. Waiting for events...
09/06/2019 12:14:23 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_best_recovery_settings(): Setting up SettingsWindow for best recovery settings...
09/06/2019 12:14:27 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_fast_recovery_settings(): Setting up SettingsWindow for fast recovery settings...
09/06/2019 12:14:28 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_best_recovery_settings(): Setting up SettingsWindow for best recovery settings...
09/06/2019 12:14:37 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_default_recovery_settings(): Setting up SettingsWindow for default recovery settings...
09/06/2019 12:14:38 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_fast_recovery_settings(): Setting up SettingsWindow for fast recovery settings...
09/06/2019 12:14:39 PM - DDRescue-GUI 2.0.2 - DEBUG: SettingsWindow().set_best_recovery_settings(): Setting up SettingsWindow for best recovery settings...
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Saving Options...
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Use Direct Disk Access: True.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Overwriting output file: True.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Reverse direction of read operations: True.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Preallocate disk space: False.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Split failed blocks: True.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Retrying bad sectors 2 times.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Allowing an infinite number of errors before exiting.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): ClusterSize is 32.
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Determining blocksize of input file...
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): BlockSize of input file: 4096 (bytes).
09/06/2019 12:14:52 PM - DDRescue-GUI 2.0.2 - INFO: SettingsWindow().save_options(): Finished saving options. Closing settings Window...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Checking settings...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Preparing to start ddrescue...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Unmounting input and output files if needed...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): Checking if /dev/sda is mounted...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Starting process: mount
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Process: mount: Return Value: 0, output: "

gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
/dev/sdc1 on /media/sdc1 type vfat (rw)"

09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): It isn't. Returning False...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_partition(): Checking if disk: /dev/sda is a partition...
09/06/2019 12:15:06 PM - Tools.tools - INFO: is_partition(): result: False...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_partition(): Checking if disk: /dev/sda is a partition...
09/06/2019 12:15:06 PM - Tools.tools - INFO: is_partition(): result: False...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().on_start(): /dev/sda is a device. Unmounting any partitions contained by /dev/sda...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Unmounting /dev/sda's partitions. This may take a few moments...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Success...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): Checking if /dev/sdb is mounted...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Starting process: mount
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Process: mount: Return Value: 0, output: "

gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
/dev/sdc1 on /media/sdc1 type vfat (rw)"

09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): It isn't. Returning False...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_partition(): Checking if disk: /dev/sdb is a partition...
09/06/2019 12:15:06 PM - Tools.tools - INFO: is_partition(): result: False...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_partition(): Checking if disk: /dev/sdb is a partition...
09/06/2019 12:15:06 PM - Tools.tools - INFO: is_partition(): result: False...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().on_start(): /dev/sdb is a device. Unmounting any partitions contained by /dev/sdb...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Unmounting /dev/sdb's partitions. This may take a few moments...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Unmounting /dev/sdb1...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: unmount_disk(): Checking if /dev/sdb1 is mounted...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): Checking if /dev/sdb1 is mounted...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Starting process: mount
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Process: mount: Return Value: 0, output: "

gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
gvfsd-fuse on /root/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev)
/dev/sdc1 on /media/sdc1 type vfat (rw)"

09/06/2019 12:15:06 PM - Tools.tools - DEBUG: is_mounted(): It isn't. Returning False...
09/06/2019 12:15:06 PM - Tools.tools - INFO: unmount_disk(): /dev/sdb1 was not mounted. Continuing...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Success...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_start(): Settings check complete. Starting up BackendThread()...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Starting up ddrescue...
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Starting process: notify-send DDRescue-GUI Beginning Recovery... -i /usr/share/pixmaps/ddrescue-gui.png
09/06/2019 12:15:06 PM - Tools.tools - DEBUG: start_process(): Process: notify-send DDRescue-GUI Beginning Recovery... -i /usr/share/pixmaps/ddrescue-gui.png: Return Value: 0, output: "

"

09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainBackendThread(): Setting up ddrescue tools...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainBackendThread(): Preparing to start ddrescue...
09/06/2019 12:15:06 PM - DDRescue-GUI 2.0.2 - DEBUG: MainBackendThread(): Running ddrescue with: 'pkexec /usr/share/ddrescue-gui/Tools/helpers/runasroot_linux_ddrescue.sh ddrescue -v -d -f -R -r 2 -c 32 -b 4096 /dev/sda /dev/sdb /media/sdc1/DDRescue Log 6-9-19.log'...
09/06/2019 12:15:08 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: ddrescue: Too many files.
09/06/2019 12:15:08 PM - DDRescue-GUI 2.0.2 - ERROR: MainBackendThread(): We didn't get the initial status before ddrescue exited! Something has gone wrong. Telling MainWindow and exiting...
09/06/2019 12:15:08 PM - DDRescue-GUI 2.0.2 - DEBUG: MainWindow().update_status_bar(): New status bar message: Try 'ddrescue --help' for more information.
09/06/2019 12:15:08 PM - DDRescue-GUI 2.0.2 - ERROR: MainWindow().on_recovery_ended(): We didn't get ddrescue's initial status! This probably means ddrescue aborted immediately. Maybe settings are incorrect?
09/06/2019 12:15:08 PM - Tools.tools - DEBUG: start_process(): Starting process: notify-send DDRescue-GUI Recovery Error! ddrescue aborted immediately. See GUI for more info. -i /usr/share/pixmaps/ddrescue-gui.png
09/06/2019 12:15:08 PM - Tools.tools - DEBUG: start_process(): Process: notify-send DDRescue-GUI Recovery Error! ddrescue aborted immediately. See GUI for more info. -i /usr/share/pixmaps/ddrescue-gui.png: Return Value: 0, output: "

"

09/06/2019 12:15:42 PM - DDRescue-GUI 2.0.2 - DEBUG: FinishedWindow().__init__(): Creating buttons...
09/06/2019 12:15:42 PM - DDRescue-GUI 2.0.2 - DEBUG: FinishedWindow().__init__(): Creating text...
09/06/2019 12:15:42 PM - DDRescue-GUI 2.0.2 - DEBUG: FinishedWindow().__init__(): Setting up sizers...
09/06/2019 12:15:42 PM - DDRescue-GUI 2.0.2 - DEBUG: FinishedWindow().__init__(): Binding events...
09/06/2019 12:15:42 PM - DDRescue-GUI 2.0.2 - INFO: FinishedWindow().__init__(): Ready. Waiting for events...
09/06/2019 12:15:48 PM - DDRescue-GUI 2.0.2 - INFO: FinishedWindow().on_exit(): Closing FinishedWindow() and calling self.parent.on_exit()...
09/06/2019 12:15:48 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_exit(): Preparing to exit...
09/06/2019 12:15:48 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_exit(): Double-checking the exit attempt with the user...
09/06/2019 12:15:50 PM - DDRescue-GUI 2.0.2 - INFO: MainWindow().on_exit(): Exiting...
09/06/2019 12:16:01 PM - Tools.tools - DEBUG: start_process(): Starting process: cp /tmp/ddrescue-gui.log /root/Desktop/log

recuperation
Posts: 2720
Joined: 04 Jan 2019, 09:48
Location: Hannover, Deutschland (Germany, Allemagne)

Re: Data Recovery Issues on a 1TB Drive

#34 Post by recuperation »

Domenic wrote: 20 Jun 2019, 15:46 How dangerous is it to swap a single platter to an exact matching drive?
I have no clue!
So this tries to copy one sector with the corrupt MBR on the bad device,
There is no sector copy operation.
if it cannot read the sector
If there's a write command for a sector there is no need to read as it gets overwritten.
The only exception are drives where the native sector size differs from the emulated sector size.
it will write zeros to it, if that doesn't clear the error the firmware
No.
If writing zeros succeeds the firmware will decrease the pending sector counts.
If writing zeros fails the firmware will redirect the write operation to sector 0 to another sector, increase the number of replaced sectors and decrease the pending sector counts.
then allocates another sector for the MBR and writes zeros to that.
When an operating system tries to read the device now, it cant because there is no MBR now but the error is cleared.
Am I understanding that correctly?
This wipes the MBR and allocates another sector for it then writes zeros to it?
If that's correct then once the MBR is zero'd out can I then rebuild it without ruining the existing data?

You did not get it.
I wrote:
It copies one block with a length 512 Bytes (corresponds to one sector) from the null-file to the first sector of the (missing words) affected device.
If this block was unreadable before, (SMART-status pending) it will be overwritten now with zeros.
Either that works or the firmware reallocates this sector by a spare sector and writes zeros.

If the operation system tries to read the master boot record of this drive later there is no hardware read error anymore.
Unfortunately a zero'd master boot record does not contain any information.
When an operating system tries to read the device now, it cant because there is no MBR now but the error is cleared.
No. It can read device information anyway. But when starting to evaluate the content of the drive by reading the sector 0 it can read this sector without an (hardware) error.
It does not matter if there is an MBR or not for the read operation.

As the bunch of zeros represents no useful information for the operation system, it assumes that the drives does not contain any structure.
It will consider the drive as not partitioned. You could describe that as a software error.
Am I understanding that correctly?
This wipes the MBR and allocates another sector for it then writes zeros to it?
No.
If the sector containing the MBR gets overwritten "wipes the MBR" the write operation was succesful. No need for a replacement here.
If this write operation fails, the sector will be replaced because writing a sector means giving up previous sector information.
If that's correct then once the MBR is zero'd out can I then rebuild it without ruining the existing data?
No. You can write a valid MBR onto an unreadable sector 0 without "wiping" it before.
The simple write operation tells the firmware that you are giving up the content of the sector.
Writing zeros in a first step is just a convenient measure.
You now that sector 0 is invalid and you heal the read error for sector 0.
Did you see if the block was unreadable in the SMART log that I uploaded or do I need to run another test with different attributes?
I said to you that your ddrescue had not terminated its run.

I was wrong when talking about a logfile (like a file for debugging).
I was refering to the "mapfile", that's how it is called now.
This is the file that keeps track of what ddrescue found out in the past.
In my old file the mapfile is still called "logfile".

Example:

Code: Select all

# Rescue Logfile. Created by GNU ddrescue version 1.11
# current_pos  current_status
0x1E066B9000     +
#      pos        size  status
0x00000000  0x32D43FA00  +
0x32D43FA00  0x00000200  -
0x32D43FC00  0x000B1400  +
0x32D4F1000  0x00000200  -
0x32D4F1200  0x700969800  +
0xA2DE5AA00  0x00000200  -
0xA2DE5AC00  0x38F0E200  +
0xA66D68E00  0x00000200  -
0xA66D69000  0x007A5A00  +
0xA6750EA00  0x00000200  -
0xA6750EC00  0x000A0C00  +
0xA675AF800  0x00000200  -
0xA675AFA00  0x0015C600  +
0xA6770C000  0x00000200  -
0xA6770C200  0x00141A00  +
0xA6784DC00  0x00000200  -
0xA6784DE00  0x000A0C00  +
0xA678EEA00  0x00000200  -
0xA678EEC00  0x001E2C00  +
0xA67AD1800  0x00000200  -
0xA67AD1A00  0x0015C400  +
0xA67C2DE00  0x00000200  -
0xA67C2E000  0x000A0E00  +
0xA67CCEE00  0x00000200  -
0xA67CCF000  0x139E857600  +
0x1E06526600  0x00000200  -
0x1E06526800  0x00086200  +
0x1E065ACA00  0x00000200  -
0x1E065ACC00  0x00086000  +
0x1E06632C00  0x00000200  -
0x1E06632E00  0x00086200  +
0x1E066B9000  0x00000200  -
0x1E066B9200  0x108D77CE00  +

Domenic
Posts: 23
Joined: 13 May 2019, 17:33

Re: Data Recovery Issues on a 1TB Drive

#35 Post by Domenic »

Hi Recuperation,
I said to you that your ddrescue had not terminated its run.

I was wrong when talking about a logfile (like a file for debugging).
I was refering to the "mapfile", that's how it is called now.
This is the file that keeps track of what ddrescue found out in the past.
In my old file the mapfile is still called "logfile
I uploaded the only mapfile that DDRescue gave me from the last attempt, it's just above your last reply.
By any chance did that have anything meaningful in it?

I'm getting myself a little in the weeds here and think I may be going the wrong route with this.
I have a ton more questions but that will probably lead to more questions and I don't want to waste your time.
I am primarily self taught with Data Recovery and am trying to learn on the fly here.
The problem with that is I may cause more damage if I keep trying to write to the drive, as we both know.

I'm looking into other avenues to try and have found some promising stuff from Deepspar.
They have some impressive software and hardware for data recovery I'm currently researching.
The hardware is expensive but from what I'm finding out, its what most of the major DR companies use.
They have a great presentation on youtube that was very informative not just about their products but about data recovery in general.
I'm waiting to hear back about pricing.

Thank you for your help as always!

recuperation
Posts: 2720
Joined: 04 Jan 2019, 09:48
Location: Hannover, Deutschland (Germany, Allemagne)

Re: Data Recovery Issues on a 1TB Drive

#36 Post by recuperation »

Domenic wrote: 03 Jul 2019, 18:11 Hi Recuperation,
I said to you that your ddrescue had not terminated its run.

I was wrong when talking about a logfile (like a file for debugging).
I was refering to the "mapfile", that's how it is called now.
This is the file that keeps track of what ddrescue found out in the past.
In my old file the mapfile is still called "logfile
I uploaded the only mapfile that DDRescue gave me from the last attempt, it's just above your last reply.
By any chance did that have anything meaningful in it?
No. This is only good for debugging purposes for the programmer. The following one that I showed above is the one to look at.
It tells you where ddrescue could not read something. If you divide the address under "pos" by the sector size,
you get the sector number of one or a couple of unreadable sectors.

Code: Select all


# Rescue Logfile. Created by GNU ddrescue version 1.11
# current_pos  current_status
0x1E066B9000     +
#      pos        size  status
0x00000000  0x32D43FA00  +
0x32D43FA00  0x00000200  -
0x32D43FC00  0x000B1400  +
0x32D4F1000  0x00000200  -
...
I'm getting myself a little in the weeds here and think I may be going the wrong route with this.
I have a ton more questions but that will probably lead to more questions and I don't want to waste your time.
I am primarily self taught with Data Recovery and am trying to learn on the fly here.
The problem with that is I may cause more damage if I keep trying to write to the drive, as we both know.
Use another harddrive to play! I am self-taught as well.
Look at the internals of the MBR-style partition tables and the easier GPT style.
Play with a partition with a FAT16 file system whose structures are really easy to learn.
I'm looking into other avenues to try and have found some promising stuff from Deepspar.
They have some impressive software and hardware for data recovery I'm currently researching.
The hardware is expensive but from what I'm finding out, its what most of the major DR companies use.
They have a great presentation on youtube that was very informative not just about their products but about data recovery in general.
Thanks for the hint, I will check it out.

Good luck!

Locked