Chkdsk consistently failing due to no free space but it has 90% free space

I have a drive that I suspect is a bit borked but none of the sensors or alerts have gone off on it. Regardless I decided to move important files out of it before replacing it.

But any move operations take for ever (sometimes it transfer at full speeds but then it ocassionally drops to few Kb/s) and ocassionally fail to IO error.

So I decided to run a chkdsk on it. But then I get this failure:

Insufficient disk space to fix volume bitmap. CHKDSK aborted.

That really shouldn't be the case. I had basically deleted as much as possible from the disk and it's current usage is:

fsutil volume diskfree k:
Total # of free bytes        : 923025682432
Total # of bytes             : 1000202039296
Total # of avail free bytes  : 923025682432

In other words I have 923GB free in a 1TB disk. There's no reason for chkdsk to fail. Is there something I can do to get chkdsk to finish running, so that I retrieve a couple of files?

Here's the full output from chkdsk:

C:\>chkdsk /X K:
The type of the file system is NTFS.
Volume label is Secondary.

Stage 1: Examining basic file system structure ...
  354560 file records processed.
File verification completed.
  8 large file records processed.
  0 bad file records processed.

Stage 2: Examining file name linkage ...
  370206 index entries processed.
Index verification completed.
  0 unindexed files scanned.
  0 unindexed files recovered.

Stage 3: Examining security descriptors ...
Security descriptor verification completed.
  7823 data files processed.
CHKDSK discovered free space marked as allocated in the volume bitmap.
Insufficient disk space to fix volume bitmap.  CHKDSK aborted.

Chkdsk is usually pretty reliable, but in some rare cases chkdsk can get such bad data from the filesystem that it get's confused.

Your attempts to free up space by deleting data may actually have made things worse.
NEVER write to a suspect filesystem. Deletes are writes too !!!

Don't risk further data-corruption: Just copy all data to someplace else and re-format the drive.


Disclaimer: missing some rep for posting comments, otherwise i would have posted this as comment.

Please report the SMART values of the drive.

A sudden drop in drive speed is often connected to the reallocation of failed sectors.

Reference https://kb.acronis.com/content/9105

So it is possible that there is no space left because too many sectors are already reallocated. This is not reflected in the volume size since the original values are displayed.

If nothing important is left on the drive, try to reformat it with ntfs and check size after that.

Update: You can save a block based image of the drive with clonezilla

The created image can then be mounted and you can try to recover data from it. Also refer to Recovering data from a hard drive with bad sectors