Search This Blog

Thursday, August 12, 2010

Event ID 1584 -A backup application initiated a VSS snapshot on Cluster Shared Volume without properly preparing the volume for snapshot

You will see this error when you run DPM 2010 to backup CSV. On the DPM 2010 console, the backup is successful and can restore VHD backup. However on the Event Viewer, you will see Event ID 1584 is logged.










The reason why i saw this is because
a)i did not purchase premium key for MD3000 (shared storage) to support snapshot
b) do not have additional hard disk space to allocate for snapshot. It require 20% of free space on the storage
c) Besides that, i do not install hardware VSS provider to support parallel backup. (default:- 3) or no hardware VSS provider is provided.

To solve this problem, you need to enable serialization backup of CSV node.Thanks to Robert which blog about this issue. (You can view the solution from here as well:- http://robertanddpm.blogspot.com/2010/07/enabling-serialized-backup-of-hyper-v.html )

Here is the summary to resolve this issue:-

a) On DPM server, modify the registry (change data from 3 to 1)
Key : HKLM\Software\Microsoft\Microsoft Data Protection Manager\2.0\Configuration\MaxAllowedParallelBackups
Value: Microsoft Hyper-V
Data :1
Type: DWORD

This will ensure that only one backup job will run at a time on a Hyper-V host.

b) Share the folder C:\Program Files\Microsoft DPM\DPM\Config with the name DPMConfig. Assign domain account as Full right.
 
c) Save the following script as "DSConfig.ps1" and dump to C:\Scriptps (create this folder on the cluster node). Just modify the DPM FQDN.
Note:- You can get the script from here:- http://www.hodgkins.net.au/wp-content/uploads/downloads/2010/03/ListVMsOnClusterForDPM.zip
 
# List Hyper-V Virtual Machines On The Cluster

# Original Script From DPM2010BetaProtectingHyperV.docx
# Updated and Improved by Matthew Hodgkins
# http://www.hodgkins.net.au/

# Please Specify The FQDN or IP address of your DPM Server
$DPMServerName = "DPM FQDN"

# DSConfig.ps1
$infoText = "This script will generate the DatasourceGroups.xml file in the current path. Once this file is created merge it with the same file name under %programfiles%\Microsoft DPM\DPM\Config directory on the DPM server. Read the documentation for more details."
echo $infoText
$header = " `n ""
$footer = "
import-module -name FailoverClusters
$dir = [guid]::NewGuid()
md $dir
$cluster = get-Cluster
$FQDN = $cluster.Name + "." + $cluster.Domain
$res = get-clusterresource
where-object { $_.ResourceType.Name -eq "Virtual Machine Configuration"}
foreach ($r in $res)
{
$VmObj = Get-ClusterParameter -inputobject $r
where {$_.Name -eq "VmStoreRootPath"} # Identifies the CSV volume on which the VM is hosted.
$VmName = Get-ClusterParameter -inputobject $r
where {$_.Name -eq "VmId"}
$vol = $vmobj.Value.Split("\")[2] # $vol will return to us the Volume of the CSV on which the VM resides.
$line = ""
echo $line >> $dir\$vol # File VolumeX will contain entries for all VMs hosted on CSV VolumeX
}

echo $header > DataSourceGroups.xml
$filelist = dir $dir\Volume*
$GroupEndString = ""
foreach ($file in $filelist)
{
$GroupBeginString = "" # Group name is kept VolumeX itself
echo $GroupBeginString >> DataSourceGroups.xml
type $file >> DataSourceGroups.xml # Consolidating groups pertaining to all the volumes.
echo $GroupEndString >> DataSourceGroups.xml
}

Remove-Item -Force -Recurse $dir
echo $footer >> DataSourceGroups.xml
# Copy The DataSourceGroups.xml file to the DPM Server
copy DataSourceGroups.xml \\$DPMServerName"\DPMConfig"

d) On one of the CSV node, use powershell to execute

set-executionpolicy remotesigned
Type - Y
./DSConfig.ps1 (to execute the script)

e) On the DPM server, check and make sure file DataSourceGroups.XML is listed in C:\Program Files\Microsoft DPM\DPM\Config. If you edit the file "DataSourceGroups.XML", you can see all the Virtual Machine on your cluster is listed in the XML file.

f) Finally change the protection group to backup one VM at a time.

p/s:-If your shared storage can support hardware VSS provider, remember to revert the above changes.

That's all. Cheer, Lai

1 comment:

  1. hi !

    I am trying to run the script from either one of the 2 cluster nodes but I always get this error message:

    Get-Content : Cannot bind argument to parameter ‘Path’ because it is null.
    At C:\Scripts\ListVMsOnClusterForDPM.ps1:41 char:8
    + type <<<> DataSourceGroups.xml # Consolidating groups pertaining to all the volumes.
    + CategoryInfo : InvalidData: (:) [Get-Content], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

    afterwards the DataSourceGroups.xml file is empty except for the header and the cluster group name.

    any ideas ? I could not find anything ..
    thanks !

    ReplyDelete