Solution
Yeah, the drive is dying. As suggested by @[email protected], and @[email protected], I ran a S.M.A.R.T. test (the short
option), and received the following report:
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Failed Attributes:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 001 001 051 Pre-fail Always FAILING_NOW 1473
Original Post
I have a pulled hard drive from an old Western Digital external hard drive. I connected it to my desktop to see what was on it, and, after running fdisk -l
(which took a weirdly long time to run while also keeping one core at 100%), it gave the error message:
The primary GPT table is corrupt, but the backup appears OK, so that will be used.
However, trying to mount it resulted in another error saying that the drive doesn’t exist. Looking at dmesg
reveals a ton of other errors like the following:
...
[ 252.090206] critical target error, dev sde, sector 8 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[ 252.090210] Buffer I/O error on dev sde, logical block 1, async page read
[ 252.090292] sd 6:0:0:0: [sde] Attached SCSI disk
[ 296.776697] sd 6:0:0:0: [sde] tag#13 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN
[ 296.776712] sd 6:0:0:0: [sde] tag#13 CDB: ATA command pass through(12)/Blank a1 08 2e 00 01 00 00 00 00 ec 00 00
[ 296.796696] scsi host6: uas_eh_device_reset_handler start
[ 296.920474] usb 4-6: reset SuperSpeed USB device number 3 using xhci_hcd
[ 296.940278] scsi host6: uas_eh_device_reset_handler success
[ 300.090562] sd 6:0:0:0: [sde] Unaligned partial completion (resid=12280, sector_sz=512)
[ 300.090567] sd 6:0:0:0: [sde] tag#16 CDB: Read(10) 28 00 00 00 00 08 00 00 18 00
[ 300.090570] sd 6:0:0:0: [sde] tag#16 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=2s
[ 300.090572] sd 6:0:0:0: [sde] tag#16 Sense Key : Hardware Error [current]
[ 300.090573] sd 6:0:0:0: [sde] tag#16 Add. Sense: Internal target failure
[ 300.090574] sd 6:0:0:0: [sde] tag#16 CDB: Read(10) 28 00 00 00 00 08 00 00 18 00
[ 300.090575] critical target error, dev sde, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 2
[ 300.090640] sd 6:0:0:0: [sde] tag#14 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=2s
[ 300.090642] sd 6:0:0:0: [sde] tag#14 Sense Key : Hardware Error [current]
[ 300.090643] sd 6:0:0:0: [sde] tag#14 Add. Sense: Internal target failure
[ 300.090644] sd 6:0:0:0: [sde] tag#14 CDB: Read(10) 28 00 00 00 00 20 00 00 08 00
[ 300.090645] critical target error, dev sde, sector 32 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
[ 326.010763] usb 4-6: USB disconnect, device number 3
[ 326.010898] sd 6:0:0:0: [sde] tag#18 uas_zap_pending 0 uas-tag 1 inflight: CMD
[ 326.010901] sd 6:0:0:0: [sde] tag#18 CDB: Read(10) 28 00 00 00 00 20 00 00 08 00
[ 326.010903] sd 6:0:0:0: [sde] tag#17 uas_zap_pending 0 uas-tag 2 inflight: CMD
[ 326.010905] sd 6:0:0:0: [sde] tag#17 CDB: Read(10) 28 00 00 00 00 08 00 00 08 00
[ 326.010919] sd 6:0:0:0: [sde] tag#18 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK cmd_age=25s
[ 326.010921] sd 6:0:0:0: [sde] tag#18 CDB: Read(10) 28 00 00 00 00 20 00 00 08 00
[ 326.010922] I/O error, dev sde, sector 32 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[ 326.010925] Buffer I/O error on dev sde, logical block 4, async page read
[ 326.010931] sd 6:0:0:0: [sde] tag#17 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK cmd_age=25s
[ 326.010942] sd 6:0:0:0: [sde] tag#17 CDB: Read(10) 28 00 00 00 00 08 00 00 08 00
[ 326.010943] I/O error, dev sde, sector 8 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[ 326.010945] Buffer I/O error on dev sde, logical block 1, async page read
[ 326.050781] sd 6:0:0:0: [sde] Synchronizing SCSI cache
[ 326.270781] sd 6:0:0:0: [sde] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
...
Is this drive dead? Is something just corrupt? If there is data on it, would it be straightforward to pull it off?
That kind of error message is never good news:
I mean, technically it could also be the SATA controller/interface being bad, the USB errors might indicate that. But in all cases, it’s struggling to read the drive, and that’s never good and you should always assume the worst. Best case the drive is healthy and you extracted the data for nothing, but that’s a good problem to have.
Yeah, that’s a bit of a problem. I mean nothing stopping you from trying to mount it. Make sure you mount it read-only, as it’ll both protect the drive from potentially corrupting more data, and read-only filesystems are also more tolerant to errors whereas read-write errors will cause the filesystem to bail.
It really depends on how much you care about the data. If it’s only nice to have but not critical to keep, you can afford more risky recovery operations.
You can use
testdisk
to try to locate the partitions on it, and depending on the filesystem you might be able to only copy the file data that’s still good.This might be good help as well: https://wiki.archlinux.org/title/file_recovery
For your reference, please see the updated post. I ran a S.M.A.R.T test, and the drive is indeed borked.
Thank you very much for all of the extra information!