Skip to contentSkip to conversation

Why "mdadm --monitor --program" sometimes only gives 2 command-line arguments to the program?

DISCUSSION Hxsrmeng 3 participants 3 messages Jan 6, 2008 – Jan 8, 2008 MD RAID

lore
Share & tools
lore

Hxsrmeng

author
#0 lore raw

Hi all,

I need to monitor my RAID and if it fails, I'd like to call my-script to deal with the failure.

I did:
mdadm --monitor --program my-script --delay 60 /dev/md1

And then, I simulate a failure with
mdadm --manage --set-faulty /dev/md1 /dev/sda2
mdadm /dev/md1 --remove /dev/sda2

I hope the mdadm monitor function can pass all three command-line arguments to my-script, including the name of the event, the name of the md device and the name of a related device if relevant.

But my-script doesn't get the third one, which should be /dev/sda2. Is this not "relevant"?

If I really need to know it's /dev/sda2 that fails, what can I do?

Thanks.

Signature · 2 lines
View this message in context: http://www.nabble.com/Why-%22mdadm---monitor---program%22-sometimes-only-gives-2-command-line-arguments-to-the-program--tp14642331p14642331.html
Sent from the linux-raid mailing list archive at Nabble.com.
#1 lore raw

----- Message from [email protected] ---------
Date: Sat, 5 Jan 2008 18:11:38 -0800 (PST)
From: Hxsrmeng <[email protected]>

Quoted 8 lines

I hope the mdadm monitor function can pass all three command-line arguments to my-script, including the name of the event, the name of the md device and the name of a related device if relevant.

But my-script doesn't get the third one, which should be /dev/sda2. Is this not "relevant"?

If I really need to know it's /dev/sda2 that fails, what can I do?

Since you have the array name (e.g. /dev/md1) you could run "mdadm -Q --detail /dev/md1" and parse the output or have a look at /proc/mdstat or /sys/block/md1/* . Kind regards,
Alex.

========================================================================
# _ __ _ __ http://www.nagilum.org/ \n icq://69646724 #
# / |/ /__ ____ _(_) /_ ____ _ [email protected] \n +491776461165 #
# / / _ / _ / / / // / ' \ Amiga (68k/PPC): AOS/NetBSD/Linux #
# /_/|_/\_,_/\_, /_/_/\_,_/_/_/_/ Mac (PPC): MacOS-X / NetBSD /Linux #
# /___/ x86: FreeBSD/Linux/Solaris/Win2k ARM9: EPOC EV6 #
========================================================================

----------------------------------------------------------------
cakebox.homeunix.net - all the machine one needs..

#2 lore raw
In reply to Hxsrmeng
Quoted 13 lines · On Saturday January 5, [email protected] wrote:

Hi all,

I need to monitor my RAID and if it fails, I'd like to call my-script to deal with the failure.

I did:
mdadm --monitor --program my-script --delay 60 /dev/md1

And then, I simulate a failure with
mdadm --manage --set-faulty /dev/md1 /dev/sda2
mdadm /dev/md1 --remove /dev/sda2

Quoted 8 lines

I hope the mdadm monitor function can pass all three command-line arguments to my-script, including the name of the event, the name of the md device and the name of a related device if relevant.

But my-script doesn't get the third one, which should be /dev/sda2. Is this not "relevant"?

If I really need to know it's /dev/sda2 that fails, what can I do?

What version of mdadm are you using?
I'm guessing 2.6, 2.6.1, or 2.6.2.
There was a bug introduced in 2.6 that was fixed in 2.6.3 that would have this effect.

NeilBrown