May be a few bad logical sectors on the drive. Your best bet is to download a Linux boot CD, boot from it and copy the data from the secondary drive onto the primary, boot Windows, format the secondary drive, and copy the data over.
When booting with the Linux CD you'll need to use the console and commands to get the data off.
You'll need to do the following:
Firstly, create your mount directory by typing:
mkdir /secondary
Now on Linux the hardrive layout with IDE drives are as follows:
Primary master: hda
Primary slave: hdb
Secondary master: hdc
Secondary slave: hdd
I assume you are using IDE not SATA. If SATA, replace "h" with "s"
Check what the hardrive is either by checking inside your PC or the BIOS.
To verify this you can check dmesg with the following command. Assuming you know the secondary drive is the secondary slave then you'd type:
dmesg | grep hdd
This will give you the output:
---------------------
root [~]# dmesg | grep hdd
ide4: BM-DMA at 0xf000-0xf007, BIOS settings: hdd

MA, hdb

io
hdd: ST380011A, ATA DISK drive
hdd: max request size: 1024KiB
hdd: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=16383/255/63, UDMA(33)
hdd: cache flushes supported
hdd: hdd1 hdd2 hdd3 hdd4 < hdd5 >
EXT3 FS on hdd5, internal journal
Adding 2048276k swap on /dev/hdd3. Priority:-1 extents:1
root@buzz [~]#
Now we can see from the grep that the drive ID is "ST380011A", verify this via the printed drive name from your BIOS to ensure it is the secondary slave.
Now you know that /dev/hdd is the correct drive we need to mount it, note that if you reboot it will not automatically be remounted after a reboot in Linux. Type the following to mount the drive:
mount /dev/hdd* /secondary
That should mount the drive, you can access it by typing "cd /secondary" and you can view the contents by typing "ls".
To get the data off your primary drive simply do the following (type each line as a different command after hitting the return key)
mkdir /primary
mount /dev/hda* /primary
to check this worked, type "cd /primary" and then "ls" to view the contents.
Now you've for everything mounted, make a folder called "backup" by typing "mkdir /primary/backup" then type "cd /secondary" and now type "cp -r * /primary/backup" and that will copy everything to your primary, when you reboot into Windows you will see the backup folder in C:\ with all the contents of your secondary in. If your primary is full and you have no space to back your secondary drives data to, you can insert another IDE drive and change the required variables of my instructions which should be pretty obvious.