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.



Reply via email to