Monitor new badblocks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all,

since md started to support of BadBlockList(Log) I'm trying to find answer to question:
- is there a possibility to get alarm when md discovers new bad blocks?

Please correct me if I'm wrong but I suspect that answer will be "no".

According to man page possible Events are:
DeviceDisappeared, RebuildStarted, RebuildNN, RebuildFinished, Fail, FailSpare, SpareActive, NewArray, DegradedArray, MoveSpare, SparesMissing, TestMessage

There is no special event for new badblocks discover and I've checked today that bad blocks existence is not the reason to mark device "Fail". I've made experiments with dmsetup simulating "bad surface": even when new disk containing 90 percents of unusable sectors is added to array md makes and finishes recover without kicking disk out. Last event is SpareActive. Syslog does not contain lines about md found bad blocks on new disk. Array is clean and active.

I understand that manual command "mdadm --examine-badblocks" reveals such hidden problem.
But is there a way to make "mdadm --monitor" to warn about bad blocks?



PS. System is Debian Jessie RC1

root@linux-test-vb:~# mdadm --version
mdadm - v3.3.2 - 21st August 2014
root@linux-test-vb:~# uname -a
Linux linux-test-vb 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1 (2015-03-01) x86_64 GNU/Linux
root@linux-test-vb:~# cat /etc/debian_version
8.0


PPS. Script used for experiments:
-----8<-----
#!/bin/bash

MDNAME=/dev/md999
DISKSZ=$((64*1024*1024))

#cleanup
echo cleanup
mdadm --stop $MDNAME
dmsetup remove bad_disk4

echo making files and loops
for i in `seq 1 4` ; do
    losetup -d /dev/loop$i;
    dd if=/dev/zero of=f$i bs=1M count=$((DISKSZ/1024/1024))
    losetup /dev/loop$i f$i;
done

echo
echo making faulty disk4 with bb somewhere in the middle...

DEV=/dev/loop4
SECTORS=`blockdev --getsz $DEV` #size in sectors
SECTSZ=`blockdev --getss $DEV` #size of sector

BBPOS=$((SECTORS/2)) #bad block position
BBLEN=$((SECTORS/4)) #bad block region length
echo badblock region from $BBPOS to $((BBPOS+BBLEN)) of $SECTORS
dmsetup create bad_disk4 << EOF
  0         $BBPOS   linear /dev/loop4 0
  $BBPOS    $BBLEN   error
$((BBPOS+BBLEN)) $((SECTORS-BBLEN-BBPOS)) linear /dev/loop4 $((BBPOS+BBLEN))
EOF

echo
echo making initially degraded raid6
mdadm --create $MDNAME -l 6 -n 4 /dev/loop[123] missing
echo waiting for recover finish...
while [ `cat /sys/block/md999/md/sync_action` != 'idle' ]
do
        sleep 1
done
echo adding bb disk
mdadm --add $MDNAME /dev/mapper/bad_disk4
-----8<-----

--
WBR,
Serge Bartosh

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux