How do I fix Current Pending Sector Count

This is actually a long comment ;-)

IMO the filesystem should automatically take care of it in due course, especially since you have run the self test. As you can see it states remapping is done on the event of write failure so the next time it tries to attempt to write to it, it will get remapped.

Could you state the larger purpose behind doing this ? Apart from the concern on the blocks requiring remapping, is there any other annoyance / problem you are trying to solve by doing this ?

The tip in the ubuntuforums post you have quoted is safe so long as you know exactly which sector has gone bad and have a compelling reason to fix it. Typically the sector # is not reported even by file checking programs since it is abstracted and handled internally by the file system.

But if you must find the offending badblocks you can use the below steps :

  1. Note the device file corresponding to file system. This is of the form /dev/hdc or /dev/sdb depending on the disk type. This is displayed in the Disk Utility (System -> Administration -> Disk Utility). If you click on the disk name in the list displayed in the left-side panel, the device name can be read against "Device :" on the right.

  2. Unmount all the file-systems in that disk. The following command should return no output.

    mount | grep -i <device-name>
    
  3. Run the following command

    badblocks -sv -b 512 <device-name>
    

    Note The -b 512 is to align blocksize to 512 so you can use the number reported by this command as input to dd as explained in the forums post

I would not recommend all the above since it is anyway taken care of by the normal disk operations.


When this exceeds 0 it is typically a sign of imminent drive failure. I do not believe this can be fixed without replacing the hard disk.

Refer to http://kb.acronis.com/content/9133?nocache=1


worse case you can always do this: Unmount the disk or array and stop any array.

dd if=/dev/sdX of=/dev/sdX iflag=direct,sync oflag=direct,sync

It will take a long time, but should work.

Ideally you could query the hard drive growth defect list (glist), but I haven't figured out how to do that.


It looks like the conv=noerror option helps. When there is an i/o error it looks like this option forces dd to retry til it completes the read/write. I created a source file with the following command for each of the bad blocks found by the badblocks command (given by Kaushik above), and it cleared the "Current Pending Sector Count" ("waiting to be remapped") to zero from 5.

sudo dd bs=512 count=1 conv=noerror ibs=512 obs=512 if=/dev/sda of=/dev/sda iflag=direct,sync oflag=direct,sync skip=3186809 seek=3186809