How to Diagnose and Resolve “Currently Unreadable (Pending) Sectors” in Linux Software RAID Arrays


2 views

When your RAID array reports "Currently unreadable (pending) sectors" despite passing SMART tests, you're facing one of storage's most deceptive failure modes. The Hitachi HUA721010KLA330 drive in your case shows:

197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       1

This single pending sector represents a block that couldn't be read during the last operation but hasn't been remapped yet. What makes this particularly dangerous in RAID 1 is that the array appears healthy ([UU] in mdstat) while silently accumulating potential data corruption points.

Your /proc/mdstat output shows perfect synchronization:

md5 : active raid1 sdb5[1] sda5[0]
      108026816 blocks [2/2] [UU]

But RAID 1's weakness emerges here - it blindly mirrors good and bad sectors. When a read operation hits that pending sector, the controller may:

  • Return corrupt data from the failing drive
  • Timeout and fail the read operation
  • Silently pass through incorrect data

Standard SMART tests often miss intermittent issues. Try this comprehensive check sequence:

# Force thorough media scan
hdparm --read-sector 0 /dev/sda  # Replace 0 with suspect LBA if known
smartctl -t selective,0-1000 /dev/sda
badblocks -sv /dev/sda

For your specific case with 43,000+ power-on hours, also monitor:

# Check for deteriorating performance
iostat -x 1 10 | grep -E 'sda|sdb'
# Monitor retry rates
smartctl -l xerror /dev/sda

When pending sectors persist, manually trigger reallocation:

# Write zeros to force remap (DESTRUCTIVE - backup first!)
dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=[LBA] conv=notrunc

# Alternative non-destructive read-forced retry
hdparm --repair-sector [LBA] /dev/sda

Remember: Each remap operation reduces your drive's spare sector pool. With enterprise drives like yours, consider replacement when:

  • Reallocated_Sector_Ct > threshold (5 in your case)
  • Pending sectors persist after 3 write/read cycles
  • Power_On_Hours exceed manufacturer MTBF (typically 50,000-60,000)

For software RAID implementations, follow this sequence:

# 1. Mark disk as faulty
mdadm --manage /dev/mdX --fail /dev/sda1

# 2. Remove from array
mdadm --manage /dev/mdX --remove /dev/sda1

# 3. Perform sector repair or replacement

# 4. Re-add to array
mdadm --manage /dev/mdX --add /dev/sda1

Implement this cron job to catch early signs:

#!/bin/bash
THRESHOLD=1
CURRENT=$(smartctl -a /dev/sda | grep -i 'Current_Pending_Sector' | awk '{print $10}')

if [ $CURRENT -gt $THRESHOLD ]; then
    echo "WARNING: $CURRENT pending sectors on /dev/sda" | mail -s "Storage Alert" admin@example.com
    smartctl -t long /dev/sda
fi

The error message "Device: /dev/sda [SAT], 1 Currently unreadable (pending) sectors" indicates your system has detected potential media errors on one of your RAID members. While the RAID array appears healthy (showing [UU] status), this warning suggests underlying disk issues that could escalate.

# Critical SMART values from your output:
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0

The single pending sector (ID 197) hasn't been reallocated yet (ID 5 shows 0). This "limbo" state means:

  • The sector failed readability checks
  • The drive hasn't decided whether to reallocate it
  • No data corruption has occurred yet (thanks to RAID1)

Run an extended test with forced read:

smartctl -t long /dev/sda
# Monitor progress with:
smartctl -l selftest /dev/sda

For comprehensive surface scanning:

badblocks -sv -b 4096 -o /tmp/badblocks.txt /dev/sda
# Then cross-reference with RAID:
mdadm --examine-badblocks /dev/sda

Create /usr/local/bin/raid_monitor.sh:

#!/bin/bash
for disk in /dev/sd[a-b]; do
    pending=$(smartctl -a $disk | grep "Current_Pending_Sector" | awk '{print $10}')
    if [ $pending -gt 0 ]; then
        echo "WARNING: $disk has $pending pending sectors" | mail -s "RAID Alert" admin@example.com
        # Force reallocation attempt
        hdparm --read-sector $(smartctl -l xerror $disk | grep LBA | awk '{print $2}') $disk
    fi
done

Consider replacement if:

  • Pending sectors increase over time
  • Reallocated_Sector_Ct becomes non-zero
  • Extended tests start reporting errors

For Hitachi drives specifically (like your HUA721010KLA330), check the manufacturer's warranty status:

smartctl -i /dev/sda | grep -i warranty
# Expected output: Warranty: 5 years (check actual value)

Before replacing a disk:

# Mark disk as faulty
mdadm --fail /dev/md5 /dev/sda5
# Remove from array
mdadm --remove /dev/md5 /dev/sda5
# After replacement:
mdadm --add /dev/md5 /dev/sda5