how to get rid of bad blocks in a file on PERC 5/I?

Adam Nielsen adam.nielsen at
Thu Apr 29 23:05:10 CDT 2010

> I could use some help trying to get rid of some bad blocks on a RAID-5 on
> PERC 5/I controller.

I'm certainly no expert with this but just have a few thoughts I'd 
mention.  I believe that when hard disks discover they have a bad sector 
they attempt to remap it themselves, but it may not always happen right 
away.  So it's possible that by the time you rebuilt the array the 
sectors had been relocated.

However given the subsequent failures I would think that the drive may 
actually be fine - maybe you can run a self test on it without going 
through a RAID controller.

It's also my experience (albeit with older RAID controllers) that when 
the controller reports the array as OK, it means it can communicate with 
all the disks in it.  It's not a comment on whether any of the disks are 
working properly or not.  In fact the controllers I have used (old 
MegaRAID cards) work great if a disk dies, but they are a bit 
unpredictable when a disk works but has read problems.  They don't seem 
to be designed to cope with dodgy disks, only flat out broken ones.

I don't know whether the situation has improved in recent years, the 
experiences were enough to persuade me to switch to software RAID which 
I have stuck with ever since.

> But, after the
> xfs_repair, xfs_check says /data is in good condition.

I also don't know whether xfs_repair actually repairs the *data* in the 
filesystem.  I suspect it only checks the filesystem structure, and 
assumes the data itself is correct.  If there is no XFS metadata stored 
in a bad block, it wouldn't surprise me that the tools never detect it.

You could try removing each disk one at a time and trying to create an 
image of it, that will attempt a read from every block on the disk. 
Presumably at some point you will hit a disk that fails half way through 
the procedure, unless the disks really are all fine.


More information about the Linux-PowerEdge mailing list