On 2026-09-20 10:24, Andy Smith wrote:
Hi Gary,
On Sun, Sep 20, 2026 at 08:45:12AM -0400, Gary Dale wrote:
3. can you explain your use of hdparm? It's not obvious to me how to
use it as you described.
You need to use it with great care as if done wrong it will be
destructive.
Let's say you have a partition sda3 that you see I/O read errors from
and the kernel logs tell you that they are happening at sector LBA
123987.
If the sda3 partition is normally part of a RAID array that has
redundancy then by definition you have a copy of sector 123987
elsewhere on the array. You can afford to lose that sector's contents
from disk sda.
1. Make sure sda3 is not in an active arreay
2. Attempt to read sector 123987 with hdparm:
# hdparm --read-sector 123987 /dev/sda
If you prefer using "dd" instead, that would be:
# dd if=/dev/sda bs=512 skip=123987 count=1
which is why I suggested that you try to read the whole device with
"dd" earlier in this thread.
Note it is "sda" and not "sda3" because the error logs will be
showing you the sector number of the whole disk device.
If hdparm can read the contents of the sector without error, then
something weird is going on and you should stop here. This would
indicate that there's not a problem with the drive but perhaps some
software issue.
On the other hand, if you can't read the sector and just continue to
get IO errors then that data is already lost from sda and your goal
now is to force the drive to stop using that sector.
3. Here's the destructive part. Write over the contents of sector 123987
with zeroes:
# hdparm --write-sector 123987 --yes-i-know-what-i-am-doing /dev/sda
If that fails, most likely the drive is severely damaged. If it
works, the drive should have remapped the damaged sector to one of
its spare sectors and stored the new (zero) data in there.
You should now be able to repeat step 2 and successfully read (zero)
data from that sector without issue.
4. Re-add sda3 to the array and let md overwrite it with data so you
have redundancy again
The thing about all of this is that there's no point doing it unless
you're sure it's a hardware problem with the drive (one or more bad
sectors). But once you are sure of that, many people would rather just
replace the drive rather than hope the damage is limited and doesn't
escalate.
Thanks,
Andy
The flaw in the logic is that the drive is obviously working as it is
part of a RAID array. What isn't working it getting one partition to
rejoin the array it used to belong to.
Interestingly, since running the smart long test, I'm not getting smart
error reports anymore.
Anyway, a successful write to the partition had no impact.
There is something about the partition that mdadm doesn't like as
evidenced by the error message:
#mdadm --manage /dev/md0 --add /dev/sda1
mdadm: add new device failed for /dev/sda1 as 7: Invalid argument
mdadm: Cannot read superblock on /dev/sda1
Either it is in the disk I am trying to add or it is in the array
information.