Hi Christoph, On Sunday 28 March 2010, Christoph Martin wrote: > Jan Wagner schrieb am 28.03.2010 22:19: > > Hi Martin, > > s/Martin/Christoph/
sorry. :/ > If with raid6 a disk fails, a automatic recovery is done with one > missing disk. With raid6 two disk may fail and the raid can be > recovered. If you add a good disk, after the recovery a resync is done > with state UUU_. Only after this resync it will get into state UUUU > again. This resync should generate a warning. Okay ... found an example, hopefully equivalent to your problem: bb:~# cat /tmp/mdstat Personalities : [raid1] [raid10] md2 : active raid1 sdd2[4] sdc2[1] sdb2[2] sda2[0] 16386176 blocks [4/3] [UUU_] resync=DELAYED md1 : active raid1 sdd3[4] sdc3[1] sdb3[2] sda3[0] 6144768 blocks [4/3] [UUU_] resync=DELAYED md3 : active raid10 sdd4[4](F) sdc4[1] sdb4[5](F) sda4[0] 1887974656 blocks 64K chunks 2 near-copies [4/2] [UU__] [==========>..........] recovery = 50.3% (474987648/943987328) finish=4363639.0min speed=1K/sec md0 : active raid1 sdd1[4](S) sdc1[5] sdb1[2] sda1[0] 10241280 blocks [4/2] [U_U_] resync=DELAYED unused devices: <none> bb:~# /tmp/check_linux_raid md3 WARNING md3 status=[UU__], recovery=50.3%, finish=4363639.0min. bb:~# /tmp/check_linux_raid_new md3 WARNING md3 status=[UU__], recovery=recovery, finish=4363639.0min. bb:~# diff -Nur /tmp/check_linux_raid /tmp/check_linux_raid_new --- /tmp/check_linux_raid 2010-03-28 23:19:08.000000000 +0200 +++ /tmp/check_linux_raid_new 2010-03-28 21:33:44.000000000 +0200 @@ -61,7 +61,7 @@ if (defined $device) { if (/(\[[_U]+\])/) { $status{$device} = $1; - } elsif (/recovery = (.*?)\s/) { + } elsif (/(recovery|resync) = (.*?)\s/) { $recovery{$device} = $1; ($finish{$device}) = /finish=(.*?min)/; } elsif (/^\s*$/) { I don't see, how that should help. :) Did I miss something? I just did have a closer look, what do you think about the following: --- /tmp/check_linux_raid 2010-03-28 23:19:08.000000000 +0200 +++ /tmp/check_linux_raid_new 2010-03-28 23:48:11.000000000 +0200 @@ -50,6 +50,7 @@ my $msg = ""; my %status; my %recovery; +my %resync; my %finish; my %active; my %devices; @@ -64,6 +65,8 @@ } elsif (/recovery = (.*?)\s/) { $recovery{$device} = $1; ($finish{$device}) = /finish=(.*?min)/; + } elsif (/resync=(.*?)\s/) { + $resync{$device} = $1; } elsif (/^\s*$/) { $device=undef; } @@ -84,6 +87,10 @@ $msg .= sprintf " %s status=%s, recovery=%s, finish=%s.", $devices{$k}, $status{$k}, $recovery{$k}, $finish{$k}; $code = max_state($code, "WARNING"); + } elsif (defined $resync{$k}) { + $msg .= sprintf " %s status=%s, resync=%s.", + $devices{$k}, $status{$k}, $resync{$k}; + $code = max_state($code, "WARNING"); } else { $msg .= sprintf " %s status=%s.", $devices{$k}, $status{$k}; $code = max_state($code, "CRITICAL"); Maybe thats what you expecting? With kind regards, Jan. -- Never write mail to <w...@spamfalle.info>, you have been warned! -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GIT d-- s+: a C+++ UL++++ P+ L+++ E--- W+++ N+++ o++ K++ w--- O M V- PS PE Y++ PGP++ t-- 5 X R tv- b+ DI D+ G++ e++ h---- r+++ y++++ ------END GEEK CODE BLOCK------
signature.asc
Description: This is a digitally signed message part.