chkdsk, SeaTools, and "does not have enough space to replace bad clusters"
Solution 1:
The free drive space and the drive space chkdisk uses are two different things. Each hard disk has some extra unallocated space which is used as replacement space for bad sectors. That space may not be used for anything else and as far as user (of a normally functioning drive) is concerned doesn't exist.
The "free" space on your E: partition isn't free at all. It's taken up by the E: partition (and even if you deleted the partition it still isn't free in the meaning of "free" windows is using).
Basically each sector on a hard disk has its own number. Usually at the end of the drive there are extra sectors which are not numbered. They are used when a sector goes bad. Bad sector's number is removed form the sector and assigned to one of the sectors without a number. This way the bad sector is "fixed".
In the end, the only thing you can do i replace the drive. Each drive has a finite number of normal sectors and a finite number of spare sectors. In your case, spar sectors are used up.
Another thing which is interesting is finding the cause of bad sectors. Hard drives are usually designed in such way that during its lifetime it will not run out of spare sectors. That means that something is generating abnormally large number of bad sectors on your drive and that something is going to get your data sooner or later, so even if you somehow manage to fix this or decide to ignore chkdisk, you should consider replacing the drive because there is a high chance that it will completely fail.
Solution 2:
Try HDD Regenerator. I had the same issue of "not enough space" and this program managed to 'repair' the bad sectors. Once it had finished I used chkdsk to repair system files and the drive is working fine now!
Solution 3:
In the end, I realized that it's better to wait the 8+ hours for chkdsk to run on both drives than to wait several days for a replacement. In retrospect, this solution should have been obvious.
There are 2 steps involved:
- Run chkdsk /r
- Wait for chkdsk to finish