remapping bad spinning disk storage blocks

Your good, old-fashioned rotating hard disk storage starts to develop bad sectors?

Dec 17 10:49:47 server kernel: end_request: I/O error, dev sdb, sector 300037184

One of the most easiest, quick and dirty ways to remap them on Linux (e.g. easier than fumbling with dd if= of=)?

Double check:

hdparm –read-sector 300037184 /dev/sdb

And if it is the block and still fails:

hdparm –write-sector 300037184 /dev/sdb –yes-i-know-…

Obviously this zeros the sector and all 512 or 4096 bytes that lived at that place are gone forever, and give way for fresh zeros from a spare, remapped reserve block.

Use only when you know what you are doing, your milage may vary.

Update: If you init a fresh Linux MD RAID, you may want to increase the min speed limit to get things going into production a bit faster:

echo 100000 > /proc/sys/dev/raid/speed_limit_min

Update2: If you are running in some error correcting RAID mode (e.g. not striped RAID 0 ;-) the Linux code will apparently re-write sectors and thus already automatically trigger a remap of those sectors:

end_request: I/O error, dev sdb, sector 301373665
ata2: EH complete
raid1:md0: read error corrected (8 sectors at 301373600 on sdb1)
raid1: sdb1: redirecting sector 301373600 to another mirror

Leave a Reply

You must be logged in to post a comment.