12

I have a Mirrored Dynamic disk on my Windows 2003 Server. How do you monitor the health of the volume?

Is there a way to have the server send an email when there is an issue with the volume? Is there a way to have the server run S.M.A.R.T. tests?

EDIT: Nothing says WTF like logging into a client server, running DISKPART LIST VOLUME and seeing this.

Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
----------  ---  -----------  -----  ----------  -------  ---------  --------
Volume 0     X   xDrive       NTFS   Mirror       233 GB  Failed Rd
Volume 1     C                NTFS   Simple        57 GB  Healthy    System
Volume 2     D                       DVD-ROM         0 B  Healthy
Volume 3     F                RAW    Partition    466 GB  Healthy
Volume 4     E   New Volume   NTFS   Partition    932 GB  Healthy
  • We're talking a software mirror here, right? If so, great question. – Chris_K Jun 10 '10 at 5:23
  • @Chris_k Correct. Last time a disk failed I only found out by chance. On a enterprise system that is completely unacceptable. I have a back up system. But that is not the point of doing a mirror. – NitroxDM Jun 10 '10 at 22:41
  • With info like that I guess now is a good time to test out that script. Windows for the win! – NitroxDM Jun 25 '10 at 17:35
  • I'm working on a solution using both of the answers listed here. – NitroxDM Aug 5 '10 at 17:38
5

I had the same question a while ago. The first thing I thought of was using WMI, but for some weird reason, WMI doesn't expose the health of a RAID volume through any of the normal Win32_* classes.

I eventually stumbled across the script in this article and made a few modifications to suit my requirements. It parses the output of diskpart.exe's "LIST VOLUME" command. This may seem a little dirty and ugly, but right now its the best option I've seen.

The script as it appears on the linked page is ready to be used with Nagios / NSClient++. If you know a bit of VBScript it's easy enough to modify this to send e-mail instead of printing status information.

If you don't know VBScript, I'll gladly give you a modified version which will do whatever you want it to.

  • VBScript not so much. C# on the other hand ;) The script doesn't look too bad. – NitroxDM Jun 11 '10 at 6:25
  • Another article on this topic and how to work-around this problem: eventlogblog.com/blog/2012/02/… – Lucky Luke Feb 28 '12 at 22:53
  • Those (@LuckyLuke & ThatGraemeGuy scripts) are great, but lacking of language support. Both of my servers are in English, so good. But, my download machine is in French. I've been able to figure (from ThatGraemeGuy script) RE0.Pattern = "Healthy|Sain" RE1.Pattern = "Mirror|RAID-5|Miroir", but not RE2 & RE3 that are "Failed|At risk" & "Rebuild". Unfortunately, this is bad because those, mostly the RE2, are the important ones. Do you where I could get those translated in French or maybe another way around that would not rely on the language? – Master DJon Mar 2 '17 at 3:53
  • 1
    Good point - but it would be very time consuming to install Windows in every language and observe the strings. If I were you then I would install a French Windows in a VM and simulate a RAID failure with Virtual Disks. You can probably extract the strings from a DLL somewhere, but that would probably equally time consuming. – Lucky Luke Mar 2 '17 at 12:56
2
for /f "tokens=4,9 delims= " %a IN ('echo list volume ^| diskpart ^| find "SSD"') do echo %a %b

Replace find "SSD" with "mirror"(or stripe... whatever) or your volume name. (my volumes are named SSD1 + SSD2)

Stick in a batch file with @echo off and ur done. :)

@echo off
for /f "tokens=4,9 delims= " %%a IN ('echo list volume ^| diskpart ^| find "SSD"') do echo %%a %%b

Above line is needed for batch. =)

Notes

  • You need to have a volume name for this to work, else change tokens to tokens=8
1

Smartmontools (http://sourceforge.net/apps/trac/smartmontools/wiki) has a windows version, but I don't know it runs on 2K8

0

I use this ugly batch file to monitor more than one hundred servers to check mirror status and the result is lovely. It is a nsclient++ client plugin to do passive check every four hour to send result to nagios server.

check_mirror.bat

@echo off
echo list volume | diskpart | find "Mirror" > H
for /f %%i in ('type H ^| find /c "Mirror"') do set /a M=%%i 
for /f %%i in ('type H ^| find "Mirror" ^| find /c "Health" ') do set /a H=%%i 
for /f %%i in ('type H ^| find /c "Risk"') do set /a risk=%%i 
@del H /q
rem echo M=%M%, H = %H% Risk=%risk%
if %risk% GTR 0 goto err
IF %M%.==0. goto nomirror
IF %M% EQU %H% goto mirrorok

:err
echo CRITICAL: Something Wrong.
exit /B 1

:mirrorok
echo OK: Mirror Health.
exit /B 0

:nomirror
echo OK: No Mirror Found.
exit /B 1
-1

while all of these answers will get you the status, none of them are the correct answer.

in an enterprise environment, you should be using enterprise-grade server and network monitoring tools. pretty much all of the monitoring tools i have used automatically monitor the health of any supported RAID array, software or hardware. they also monitor other things that you should be aware of, such as temperature, free disk space, etc. do you really want to create a custom script for every possible thing that needs to be monitored?

do yourself a favor and skip all this shoe-string and bubble-gum stuff and use the right tool.

  • Tools like what? – NitroxDM Sep 26 '12 at 22:46
  • 1
    Solar winds, n-able, what's up, spice works, even HP insight manager – longneck Sep 27 '12 at 2:31
  • I don't see how your answer is relevant or helpful, it's just an opinion. There are lot more capable tools than Solarwinds (n-able is from Solarwinds btw). Things also have changed, and software raid is not "shoe-string" anymore: smbitjournal.com/2016/12/the-software-raid-inflection-point – Lucky Luke Mar 2 '17 at 12:50
  • I didn't say that software raid is shoe-string. I said developing shoe-string processes or procedures for monitoring was a bad idea. (And at the time I wrote my answer, SolarWinds hadn't bought n-able yet.) – longneck Mar 2 '17 at 14:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.