When dealing with Windows Server 2003 dynamic disks, seeing a "Failed Rd" status in DISKPART is particularly alarming. The example shows:
Volume 0 X xDrive NTFS Mirror 233 GB Failed Rd
This indicates the mirror volume has failed redundancy, meaning one disk in the mirror set has failed but the volume remains accessible through the remaining disk.
Windows Server 2003 provides several methods to check disk health:
- Disk Management MMC: Right-click My Computer → Manage → Disk Management
- DISKPART utility: As shown in the example
- Event Viewer: Check System logs for disk-related events (Event ID 7, 9, 11, 15)
To configure email alerts for disk failures, you'll need to create a scheduled task that runs a VBScript:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set objEmail = CreateObject("CDO.Message")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_DiskDrive")
For Each objDisk in colDisks
If objDisk.Status <> "OK" Then
objEmail.From = "server@domain.com"
objEmail.To = "admin@domain.com"
objEmail.Subject = "Disk Failure Alert: " & objDisk.Caption
objEmail.Textbody = "Disk " & objDisk.Caption & " has failed with status: " & objDisk.Status
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.domain.com"
objEmail.Configuration.Fields.Update
objEmail.Send
End If
Next
For SMART monitoring in Windows Server 2003, you'll need third-party tools. Here's how to use smartmontools:
@echo off
smartctl.exe -a /dev/sda | find "SMART overall-health" > status.txt
for /f "tokens=6" %%a in ('type status.txt') do (
if not "%%a"=="PASSED" (
blat status.txt -to admin@domain.com -subject "SMART Test Failed" -server smtp.domain.com
)
)
For critical servers, consider these additional measures:
- Regularly check the disk status using WMIC:
wmic diskdrive get status
- Implement a daily script to verify mirror status
- Schedule monthly manual verification of all disks
- Consider upgrading from dynamic disks to Storage Spaces in newer Windows versions
When you encounter "Failed Rd", follow these steps:
DISKPART
LIST DISK
SELECT DISK 1 (assuming this is the failed disk)
OFFLINE DISK
ONLINE DISK
RESCAN
If the disk doesn't come back online, you'll need to break the mirror and recreate it after replacing the failed disk.
When your Windows Server shows a "Failed Rd" status for a mirrored volume (as shown in the DISKPART output), it means one member of the mirror has failed but the system is still operating in degraded mode. Immediate action is required to prevent data loss.
# PowerShell command to check disk status
Get-Disk | Select-Object Number, OperationalStatus, HealthStatus
# Check specific mirrored volume
Get-Volume -DriveLetter X | Format-List *
While Windows doesn't natively support SMART alerts, we can use PowerShell with smartmontools:
# Install smartmontools via Chocolatey
choco install smartmontools -y
# Check SMART status
smartctl.exe --health /dev/sda
# PowerShell wrapper for scheduled SMART checks
$smartResult = & smartctl.exe --health /dev/sda
if ($smartResult -match "FAILED") {
# Trigger alert actions
}
Create a PowerShell script for email notifications:
# Email notification script
$smtpServer = "smtp.yourdomain.com"
$mailParams = @{
From = "alerts@yourdomain.com"
To = "admin@yourdomain.com"
Subject = "Mirror Volume Failure Alert"
Body = (Get-Volume -DriveLetter X | Out-String)
SmtpServer = $smtpServer
}
# Check volume status and send alert
$volStatus = (Get-Volume -DriveLetter X).HealthStatus
if ($volStatus -ne "Healthy") {
Send-MailMessage @mailParams
}
Create a scheduled task to run these checks hourly:
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\scripts\diskMonitor.ps1"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Hours 1)
Register-ScheduledTask -TaskName "Disk Mirror Monitor" -Action $action -Trigger $trigger
Track disk performance metrics for proactive monitoring:
# Create a data collector set for disk monitoring
logman create counter DiskPerf -o "C:\perflogs\diskmon.blg" -c "\PhysicalDisk(*)\*" -f bin -v mmddhhmm -si 00:15:00
logman start DiskPerf
When you encounter a failed mirror, follow these steps:
# Identify the failed disk
Get-Disk | Where-Object {$_.OperationalStatus -ne "OK"}
# Remove the failed disk from mirror
Remove-Mirror -DiskNumber 1 -Confirm:$false
# Add new disk to mirror
Add-Mirror -DiskNumber 3 -Confirm:$false
For enterprise environments, consider:
- Windows Admin Center with storage monitoring
- PRTG Network Monitor with custom disk sensors
- Nagios with NSClient++ for Windows monitoring