So I have this external 2.5" drive salvaged from an old laptop of mine. I was trying to use it to backup/store data but the transfer to the drive fails repeatedly at the ~290GB mark leading me to believe that maybe there is a bad sector on the drive. I tried to inspect the drive using smartmontools and smartctl but since it is an external drive, i was not allowed to do so. Is there anyway for me to inspect and fix this drive? I am on fedora ublue-main. The HDD is a 1TB seagate drive.
Edit : I am a linux noob so some hand holding will be appreciated. Also i am looking to use this drive only for low priority media files which i dont mind losing so please help even though it is not the greatest idea to use a failing drive
Edit 2 : It seems my post is not clear of what i am doing. I dont want to recover data from the drive. I want to try to use more of the drive for storing data
Tell the drive to do a secure erase. If there are still bad blocks after that, it is absolutely garbage
Frankly you should never see bad blocks, but sometimes minor bad things happen and the drive has to tell you that this data is gone forever. If you write over those bad blocks at some point, the drive is supposed to remap them to spare blocks and carry on as if everything is okay. If it has run out of spare blocks, then the bad blocks stay forever. A secure erase might give the drive more wiggle room to re-allocate around a larger bad spot, IDK.
bad block are not fix able. however you can create a bacd block map to make your fs skip the bad block. if you have data on your disk currently, i would suggest to use ddrescue to dump a image of your disk, and recover file from it
You can’t fix a bad drive. Well you can, but it requires a few million dollars
I would get a new drive. I’m sorry but it is a lost cause. I would recommend taking it apart before you throw it away as it looks pretty cool inside.
I recommend to throw away this drive because blocks that are readable and writeable now, may fail soon. But if you want to use it anyway, it is possible to collect a list of unaccessible blocks usong
badblocks
and pass it tomkfs
to create a filesystem that ignores that blocks. IIRC this is described inman badblocks
.Hey did you find a solution? I maybe found something that could interest you !
Complementing @thebrain anwser, I totally wiped and fixed bad sectors on a old SSD drive I fought was borked because of alot of unallocated pending sectors. (In/out errors)
Keep in mind this is advanced stuff and could not work in your case and EVEN brick your hard drive. You will lost all your data and everything will be rewriten.
Manually rewrite sectors
https://leo.leung.xyz/wiki/Hdparm
Full wipe with “–security-erase-enhanced”
https://tinyapps.org/docs/wipe_drives_hdparm.html
This can take some time (3hours in my case) and it looks like your terminal is stuck, don’t worry just wait until it finishes !
Again this can be DANGEROUS ! Only attempt such mesure if you don’t care to lose your hard drive.
No I am still working on this. Thanks for the advice. I was having trouble with hdparm because I didn’t have enough information about with sectors are bad. Was trying to use ddrescue to make a map. Thanks for the resources
You should be able to use smartctl on a USB drive. I’ve never had an issue anyway. You may need to specify the transport type tho. I had a drive that it couldn’t figure out on its own, but since it was an sata drive in an external enclosure, atapi is the transport protocol to use
sudo smartctl -a -d ata /dev/<devid>
Using the same switch you can run a long test. It’s sort of a pain as it will kill the test on finding a bad sector. But you can take that sector number and plug it into hdparm to rewrite the sector hoping it will remap it. You won’t be able to recover the data in a bad sector, But There are these extra sectors on the drive that firmware can replace the bad one with. It does this on a forced write command.Something along the lines of
hdparm --repair-sector --yes-i-know-what-i-am-doing </dev/<driveid> <sector number from smartctl>
Again, you have data loss, you can’t go back to no loss. All you can do is rescue anything important. You may (probably) need to run a long smartctl test again, and fix another sector. I have saved data off of drives with 100+ bad sectors this way… It’s tedious and eventually I scripted it but it does work.
Older/shittier enclosures don’t support smart pass through. But this is an issue that’s largely been fixed for 10+ years at this point so I’m surprised op has this.
The funny thing is that the cheaper throwaway enclosure i bought supports smart pass through but the newer sata 3 capable connector does not. I am as surprised as you that this turned out to be the issue
Use ddrescue to copy to a working disk, if I remember it will try a number of times and eventually skip the broken sectors so that at least you have a working filesystem on the copy.
I think there is misunderstanding because of my phrasing. i dont want to recover data from the drive. Instead i want to repair the drive to use for low priority external storage.