Quantcast
Channel: System Center Data Protection Manager
Viewing all 90 articles
Browse latest View live

DPM Installation: Configuring Libraries

$
0
0

Configuring Tape Libraries  (Continued from previous post)           

Last week’s DPM snip covered basic configuration of tape libraries and also mentioned if drives from a tape library are listed as stand-alone tape drives, or if a stand-alone tape drive displays incorrectly as a drive in a tape library, you need to remap the tape drive information.  There are other possibilities for tape libraries being displayed incorrectly which are covered below.

 

If the correct driver is not installed when a tape library is connected to the DPM server it’s possible the tape library will not function correctly or is displayed incorrectly when viewing the Libraries tab under Management on your DPM Administrator Console.  In some cases you will notice the tape library is displayed as a “Standalone Drive” instead of a “Library” with its available tape slots.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

If you experience this behavior it is likely due to one of the following:

§  An older Windows compatible driver that was included with Windows 2003 was installed.  Install the latest driver for the tape drive and medium changer or installed the drivers that were tested with DPM 2007 and signed by Microsoft.

§  This model of tape library is not supported by DPM.  Find out if this specific model of tape library has gone through the Microsoft System Center Data Protection Manager Tape Library Compatibility Test (DPMLibraryTest.msi).  Details for this compatibility test are available on the DPM Beta connect site.

 

If you have the latest driver available from the OEM you should troubleshoot this issue like any other Windows device that is not recognized correctly in Device Manager.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

If you open Device Manager you may notice the Medium Changer is not recognized and the tape drive may view as a different model than expected.  You can leverage the Setupapi.log to locate the PNP ID, inf and driver that was selected and verify if any unexpected errors occurred during the installation process for the devices.

 

 

Once the correct drivers for the Tape drive and Medium Changer are installed, or identified another root cause for Windows not recognizing the devices, you can open Device Manager and should notice the devices displayed correctly.

 

 

Once Windows identifies the devices correctly you can open the DPM Administrator Console, select "Management" then click the "Libraries" tab.  Select the device that is displaying the "Standalone Drive" and select "Rescan" in the Action Pane.  Once the rescan completes the tape library with medium changer should be displayed correctly.

 

- Tom O’Malley


CLI Script: Force mark tape as free

$
0
0

This script allows a user to mark any tape as free so that it is available for protection by DPM. Tapes which have unexpired data cannot be marked as free from the GUI but sometimes (esp. while testing) users need to override this behaviour.

Save this script as a .ps1 file and run it. Usage and examples of scripts can be found by calling them with ‘-?’ or ‘-help’ from inside DPM Management Shell. 

----------------------------- Start of Script --------------------------------

param

([string] $DPMServerName, [string] $LibraryName, [string[]] $TapeLocationList)

if

(("-?","-help") -contains$Args[0])
{
Write-Host"Usage: ForceFree-Tape.ps1 [[-DPMServerName] <Name of the DPM server>] [-LibraryName] <Name of the library> [-TapeLocationList] <Array of tape locations>"
Write-Host"Example: Force-FreeTape.ps1 -LibraryName "Mylibrary" -TapeLocationList Slot-1, Slot-7"
exit 0
}

if (!$DPMServerName)
{
$DPMServerName=Read-Host"DPM server name: "
if (!$DPMServerName)
{
Write-Error"Dpm server name not specified."
exit 1
}

}
if (!(Connect-DPMServer$DPMServerName))
{
Write-Error"Failed to connect To DPM server $DPMServerName"
exit 1
}

$library

= @(Get-DPMLibrary$DPMServerName )
if ($library.count-eq 0)
{
Write-Error"Failed to find library with user friendly name $LibraryName"
exit 1
}

if

(!$LibraryName)
{
$library|foreach {$_.userfriendlyname}
$LibraryName=Read-Host"Library name (cut & paste from above): "
if (!$LibraryName)
{

Write-Error"Library name not specified."
exit 1
}
}

if

(!$TapeLocationList)
{
$tmp=Read-Host"Tape location: "
$TapeLocationList=$tmp.split(",")
write-host"Processing this slot list..."
$TapeLocationList
if (!$TapeLocationList)
{
Write-Error"Tape location not specified."
exit 1
}
}

foreach ($mediain @(Get-Tape-DPMLibrary$library))
{
if ($TapeLocationList-contains$media.Location)
{
if ($media-is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia])
{
foreach ($rpin @(Get-RecoveryPoint-Tape$media))
{
Get-RecoveryPoint-Datasource$rp.Datasource|Out-Null
Write-Verbose"Removing recovery point created at $($rp.RepresentedPointInTime) for tape in $($media.Location)."
Remove-RecoveryPoint-RecoveryPoint$rp-ForceDeletion-Confirm:$false
}

Write-Verbose"Setting tape in $($media.Location) as free."
Set-Tape-Tape$media-Free
}
else
{
Write-Error"The tape in $($media.Location) is a cleaner tape."
}
}
}

----------------------------- End of Script ---------------------------------

- Mohit Chakraborty / Ruud Baars

CLI Script: Manual detailed inventory of unknown tapes

$
0
0

The following script runs detailed inventory on all unknown tapes in all the libraries attached to the specified DPM server. Save this script as a .ps1 file and run it. Usage and examples of scripts can be found by calling them with ‘-?’ or ‘-help’ from inside DPM Management Shell.

This is for manually running the detailed inventory job. Btw, for running the inventory on a regular scheduled basis, then use Get/Set-MaintenanceJobStartTime and DPM will automatically run the inventory at the specified time.

-------------------------------- Start of Script ----------------------------------------

param ([string] $DPMServerName)

if(("-?","-help") -contains $args[0])
{
    Write-Host "Description: This script runs detailed inventory on all unknown tapes in all the libraries attached to the specified DPM server."
    Write-Host "Usage: Inventory-UnknownTapes.ps1 [-DPMServerName] <Name of the DPM server>"
    Write-Host "Example: Inventory-UnknownTapes.ps1 mohitc02"

    exit 0
}

if (!$DPMServerName)
{
    $DPMServerName = Read-Host "DPM server name"

    if (!$DPMServerName)
    {
        Write-Error "Dpm server name not specified."
        exit 1
    }
}

if (!(Connect-DPMServer $DPMServerName))
{
    Write-Error "Failed to connect To DPM server $DPMServerName"
    exit 1
}

$libraryList = Get-DPMLibrary -DPMServerName $DPMServerName

foreach ($library in $libraryList)
{
    $unknownTapeList = @(Get-Tape -DPMLibrary $library | ? {$_ -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia] -and $_.OmidState -eq "Unknown"})

    if ($unknownTapeList.Length -gt 0)
    {
        Write-Host "Starting detailed inventory on $($library.UserFriendlyName) for $($unknownTapeList.Length) tape(s)."
        Start-DPMLibraryInventory -DPMLibrary $library -DetailedInventory -Tape $unknownTapeList
    }
}

----------------------------------- End of Script ---------------------------------------

- Mohit Chakraborty 

CLI Script: To recover a DPM replica volume from data stored in tape

$
0
0

When a disaster occurs, and you lose your replica volume for any datasource, you could re-seed the replica from the backed-up data you have in tape. This little script initializes replica from a tape recovery point. The parameters have to be customized for your environment first as given below. 

Save the attached file as a .ps1 file and invoke through the DPM Management Shell.

 

- Madhan S

DPM 2007 Rollup Update -- NOW AVAILABLE

$
0
0

Data Protection Manager

We are very excited to announce that the ‘Rollup Update’ for System Center Data Protection Manager 2007 is now available.

There are new workloads to be protected, as well as new features in this update, including:

Windows Server 2008 support

Run DPM2007 Server on a Windows Server 2008 platform

Protect Windows Server 2008 – including Core systems

Protect Windows Server 2008 System State

Use of RemoteApp to enable DPM administration remotely

While DPM2007 has actually been protecting “Longhorn” since Beta 3, this makes Windows Server 2008 a supported protected workload

Protect SQL Server 2008

Including the ability to restore SQL Server 2005 databases to a SQL Server 2008 server for test migrations and ensuring that after you have updated your environment to SQL Server 2008, you will still be able to recover older SQL 2005 databases, when needed.

While DPM has actually been protecting "Katmai" since customer technology preview 4 (July 2007), this makes SQL Server 2008 a supported protect-able workload

Protect clustered Virtual Server 2005 R2 hosts

DPM 2007 could already protect clustered-Exchange, clustered-SQL Server and clustered-File Services … but clustered virtualization hosts was not initially available in DPM 2007 RTM.  Now for those environments that understand that as they rely on virtualization, the virtualization host needs to be highly available – those platforms are protected by DPM, as well.

New media capabilitiesadded based on feedback from some of our early DPM enterprise customers

Tape media sharing– so that multiple protection groups with similar tape retention periods can now share tapes

Tape library sharing– multiple DPM servers can now share your enterprise tape library silo’s.  This one has been running in MSIT for a while.

 

For more details on what is included in the DPM 2007 “Rollup Update” or in the upcoming Service Pack 1, please check out:

TechNet webcast on “What is coming next for DPM 2007” from April 23, 2008

 

The DPM 2007 Rollup Update is now available via Microsoft Update, if your DPM server is opt’ed in for updates … or it is downloadable from:

Data Protection Manager 2007 - Rollup Update - x86

Data Protection Manager 2007 - Rollup Update - x64

 

Microsoft is committed to continuing to make DPM2007 an ideal solution for protecting and recovering your Windows infrastructure.  So, stay tuned as we get ready to launch the beta for DPM 2007 Service Pack 1, targeted for later this Summer – including the updates listed above, PLUS protection for Hyper-V, more capabilities around SQL Server databases, new features for protecting SharePoint farms and some other features that we are keeping a surprise for now.  As always, you’ll hear about them first here – on the DPM blog site.

 

-- Balaji Hariharan, Jason Buffington

Enabling/Disabling co-location of data on Tape

$
0
0

With DPM 2007 Feature Pack  (KB949779), we have added support for media co-location. With this feature, you can achieve better tape utilization by co-locating data from multiple protection groups with similar retention range. This feature is disabled by default. You can use following PowerShell commands to enable and disable tape co-location.

 

Enable Tape co-location:

 

Set-DPMGlobalProperty -DpmServer <DPM Server Name> -OptimizeTapeUsage $true

 

Disable Tape co-location:

 

Set-DPMGlobalProperty -DpmServer <DPM Server Name> -OptimizeTapeUsage $false

 

You can verify the status of tape co-location feature (Enabled/Disabled) from Library Management tab of DPMUI.

 

The Feature Pack can be downloaded from following locations.

x86:  http://www.microsoft.com/downloads/details.aspx?FamilyID=e9e1fe35-b175-40a8-8378-2f306ccc9e28&DisplayLang=en

 

x64:  http://www.microsoft.com/downloads/details.aspx?FamilyID=ad5cd1a2-9b87-4a2c-90a2-9dbaf1024310&DisplayLang=en

 

Madhan S

Replacing tape drive assignments

$
0
0

Imagine you got a replacement library for a broken one, or one with larger capacity to partition or share between DPM servers but anyway shows up as another tape drive. For discussion sake we say everything is fine with the new library but you now got all those protection groups on one or more DPM servers pointing to the old library!? You need to re-assign those; protection tab, “Modify protection group” after couple of “Next” to select the new library and commit the change to the group. How many groups and servers did you have? Right, the script below comes to some rescue.

The “DPMswitchTape” script facilitates switching protection groups from using one tape library to another by individually re-assigning the ‘primary backup’ and ‘copy backup’ tape libraries. This script will ask to select source and target libraries and means that only the intended library assignments will change for all protection groups.

The number of drives to assign is kept the same by default and can optionally be specified. If the new drive has not enough drives the script defaults to 1 drive.
Likewise tape options (encryption, compression, data verification) are kept the same and can optionally be changed which will cause the script to ask new values for each group.

Source and target library can be the same which effectively just changes options when used with –ChangeOptions

Note: compression and encryption are mutually exclusive and is also enforced by the script.

Usage: DPMswitchTape.ps1 [-dpmserver <server name>] [-drives #] [-ChangeOptions ]

The script takes the following optional parameters;

  • -dpmservername <server name>, DPM server to manage, uses the local host by default
  • -drives <#>, the number of drives to assign
  • -ChangeOptions switch

Script begin

param(
    [string]$dpmserver = "",
    [int]$drives=0,
    [switch]$ChangeOptions)


function writelog
{
    param([string]$msg, $color="Green")
    $msg =  "[{0}] {1}" -f ((get-date).tostring($format)), $msg
    $msg >> $logfile
    Write-Host $msg -ForegroundColor $color
}
function SelectLibrary
{
    #get, present and return user selected library
    param([string]$title, $srv)
    # KEEP the where filter, there can be many old libraries definitions no longer present
    $libs = @(Get-DPMLibrary -DPMServerName $srv | where {$_.isoffline -eq $false})
    writelog "`nCurrent online library list..."
    $i = 0
    for ($i = 0; $i -le $libs.count-1; $i ++ ) {
        write-host ("[{0}] {1} ({2} drives, {3} slots)" -f $i,$libs[$i].userfriendlyname, $libs[$i].getdrivecollection().count,$libs[$i].getslotcollection().count)
    }
    [int]$l_index = read-host "`nSelect $title from indexed list  "
    if (!$libs[$l_index]) {Throw "Incorrect selection!"} else {
        $msg = "Selected  -> [" + $libs[$l_index].userfriendlyname + "]"
        writelog $msg
    }
    return $libs[$l_index]
}
function SetOptions
{
    # initialize and get library options or keep current
    param ([string]$title, $ChangeOptions, $pg)
    $tp = @{"OnsiteComp"=[boolean]$false; "OnsiteEnc"=[boolean]$false; "OffsiteComp"=[boolean]$false; "OffsiteEnc"=[boolean]$false;"DataVer"=[boolean]$false}
    if ($ChangeOptions) {
        writelog "`nConfigure $title library"
        writelog "WARNING: Encryption and Compression are mutually exclusive, enabling compression disables encryption!`n"
        if ((read-host "Do you want SHORT term protection ENCRYPTION enabled [y/N] ") -imatch "Y") {$tp.item("OnsiteEnc")=$true}
        if ((read-host "Do you want SHORT term protection COMPRESSION enabled [y/N] ") -imatch "Y") {
            if ($tp.item("OnsiteEnc")) { writelog "`t<<< disabling short term encryption >>>"}
            $tp.item("OnsiteComp")=$true
            $tp.item("OnsiteEnc")=$false
        }
        if ((read-host "Do you want LONG  term protection ENCRYPTION enabled [y/N] ") -imatch "Y") {$tp.item("OffsiteEnc")=$true}
        if     ((read-host "Do you want LONG  term protection COMPRESSION enabled [y/N] ") -imatch "Y") {
            if ($tp.item("OffsiteEnc")) { writelog "`t<<< disabling long term encryption >>>"}
            $tp.item("OffsiteComp")=$true
            $tp.item("OffsiteEnc")=$false
        }
        if ((read-host "Do you want to enable backup data verification [y/N] ") -imatch "Y") {$tp.item("DataVer")=$true}
    }   
    else {
        $tp.Item("OnsiteComp")    = $pg.ArchiveIntent.OnsiteCompression
        $tp.Item("OnsiteEnc")    = $pg.ArchiveIntent.OnsiteEncryption
        $tp.Item("OffsiteComp")    = $pg.ArchiveIntent.OffsiteCompression
        $tp.Item("OffsiteEnc")    = $pg.ArchiveIntent.OffsiteEncryption
        $tp.Item("DataVer")    = $pg.ArchiveIntent.DatasetVerificationIntent
    }
    return $tp
}
trap [Exception] {
    # generic trap routine writing to event log and logf file
    writelog "<<< ERROR >>>"
    writelog $("TRAPPED: " + $_.Exception.GetType().FullName);
    #writelog $("TRAPPED: " + $_.Exception.Message);
    $Error
    writelog "<<< end >>>"
    $log = Get-EventLog -List | Where-Object { $_.Log -eq "Application" }
    $log.Source = "DPMswitchTape"
    $log.WriteEntry("TRAPPED: $error", [system.Diagnostics.EventLogEntryType]::Error,9911)
    $Error.Clear()
    exit 1 ;
}

#START
Disconnect-DPMServer #make sure we have no lingering connections
if ($dpmserver -eq "") {$dpmserver = hostname}
$logfile = "DPMswitchTape.LOG"
$maxlog = 5 * 1024 * 1024
# set some commonly used
$global:format = "HH:mm:ss"
$version = "V2.0"
$c = "`,"; $q = "`'" ; $qq = "`""
if ($drives  -lt 1) {$drives =1}
#set to false for no console output
$Debug = $true

if ($Args.Count -eq 0) {
    writelog "`nUsage: DPMswitchTape.ps1  [-dpmserver <server name>] [-drives #] [-ChangeOptions 0/1]`n"
}
#display intro
writelog "DPMswitchTape $version using server $dpmserver"
$msg= "`n`tChanges protection group library assignment and options"
$msg= $msg + "`n`t`DPMswitchTape.Ps1 [-DPMserver <servername>]  [-drives #] [-ChangeOptions `$true]`n"
$msg= $msg + "`n`t`Parameter -drives # defaults to previous or 1 drive if target library has less drives than requested"
$msg= $msg + "`n`tSwitch -ChangeOptions `$true indicates you want to change library options, have to specify each group `n"
$msg=$msg + "`n`t(a) Select source of BACKUP and COPY library to be replaced"
$msg=$msg + "`n`t(b) Select target of BACKUP and COPY library to be assigned"
$msg=$msg + "`n`t(c) Select library options (defaults to current definitions)"
$msg=$msg + "`n`t(d) Confirm to modify all groups or exit without changes`n"
writelog $msg "White"

#ensure logfile does not keep growing endlessly
if ((Get-Item $logfile).length -gt $maxlog) {Remove-Item -path $logfile - confirm:$false}

#get backup libs to re-assigned
$sourcelib = SelectLibrary "OLD BACKUP source library to re-assing" $dpmserver
$targetlib = SelectLibrary "NEW BACKUP target library to assign" $dpmserver

#get copy libs to re-assign
$copysourcelib = SelectLibrary "OLD COPY source library to re-assign" $dpmserver
$copytargetlib = SelectLibrary "NEW COPY target library to assign" $dpmserver

#confirm
if ((read-host "`nContinue and actually modify groups [Y/n] " ) -inotmatch "Y") {
    writelog "Done, exiting without changes!"
    exit 0
}
writelog "Modifying groups...`n"
$grps = @(Get-ProtectionGroup -DPMServerName $dpmserver | ? {$_.GetDatasources().Count -gt 0})
#Now go modify the groups
foreach ($group in $grps) {
    #skip if not selected source backup library
       if ($group.ArchiveIntent.LibraryId.Equals($sourcelib.Id)) {
           writelog ("Processing group {0}" -f  $group.friendlyname)
        #do library parameters (there is only 1 set of options for both drives)
        $libparams = SetOptions "long term parameters" $ChangeOptions $group
        $libparams >> $logfile
        if  ($targetlib.GetDriveCollection().count -lt $drives) {
            $drives = 1 #possibly set to max available drives instead?
            writelog "Target library has less than requested number of drives, setting drive pool to $drives"
        }
        $mpg=Get-ModifiableProtectionGroup $group
        $mpg.Archiveintent.Libraryid=$targetlib.Id
        $mpg.ArchiveIntent.NumberOfDrives= $drives
        $mpg.ArchiveIntent.OnsiteCompression=$libparams.Item("OnsiteComp")
        $mpg.ArchiveIntent.OnsiteEncryption=$libparams.Item("OnsiteEnc")
        $mpg.ArchiveIntent.OffsiteCompression=$libparams.Item("OffsiteComp")
        $mpg.ArchiveIntent.OffsiteEncryption=$libparams.Item("OffsiteEnc")
        $mpg.ArchiveIntent.DatasetVerificationIntent=$libparams.Item("DataVer")
        Set-ProtectionGroup -ProtectionGroup $mpg
        $msg="Modified BACKUP library of protection group " + $group.FriendlyName + " from [" + $sourcelib.UserFriendlyName + "] to [" + $targetlib.UserFriendlyName + "]"
        writelog $msg
    }
    else
    {
          $msg = "Skipping BACKUP library for protection group " + $group.friendlyname + "  because the curren does not match source selection!"
        writelog $msg
    }
    #skip if not selected source copy library
   if ($group.ArchiveIntent.SecondaryLibraryId.Equals($copysourcelib.Id)) {
        $mpg=Get-ModifiableProtectionGroup $group
        $mpg.ArchiveIntent.NumberOfDrives= $drives
        $mpg.Archiveintent.SecondaryLibraryid=$copytargetlib.id
        $mpg.ArchiveIntent.OnsiteCompression=$libparams.Item("OnsiteComp")
        $mpg.ArchiveIntent.OnsiteEncryption=$libparams.Item("OnsiteEnc")
        $mpg.ArchiveIntent.OffsiteCompression=$libparams.Item("OffsiteComp")
        $mpg.ArchiveIntent.OffsiteEncryption=$libparams.Item("OffsiteEnc")
        $mpg.ArchiveIntent.DatasetVerificationIntent=$libparams.Item("DataVer")
        Set-ProtectionGroup -ProtectionGroup $mpg
        $msg="Modified COPY library of protection group " + $group.FriendlyName + " from [" + $copysourcelib.UserFriendlyName + "] to [" + $copytargetlib.UserFriendlyName + "]"
        writelog $msg
    }
    else
    {
          $msg = "Skipping COPY library for protection group " + $group.friendlyname + "   because the current does not match source selection!"
        writelog $msg
    }
}
writelog "`nDone!"
exit 0

 

The search for DPM tape utilities stops here…

$
0
0

This solution combines several existing tape related scripts with enriched functionality. The short list is shown in the DPMTapeUtil user guide illustration on the right. You can download the script and user guide from here, provided “as is” no rights or warranties implied.

This script is updated to also copy recovery points to disk and to copy only the latest recovery point across media to disk!

The “DPMTapeUtil.Ps1” script performs a variety of tape related functions such as; report recovery points, start inventory, mark free, erase, eject, re-catalog, rescan library,  run a one-off backup and more… These functions can be used individually or in combinations, interactively on the DPM server or scheduled on multiple DPM servers. Tape selection and scheduling are controlled through simple command definitions. For instance to erase tapes that are ‘Recyclable’ every Sunday at 04:00 AM;

-tapeerase –schedule “Enable|Weekly|Sun|04:00” 

This only works with tapes DPM can understand, to erase tapes with an unsupported block size, see this companion post.

Why or when would you use this?

Although the DPM UI has good multi-select features, selecting a larger collection of tapes to perform the same action through this script can be more convenient. This is particularly true with good criteria such as; commonality in displayed label or barcode, a timespan or particular state the tapes can have. For instance; all tapes in all libraries across multiple servers with expired data, or that are offsite ready, or have written less than or at least certain amount of data and so forth…

The UI does not produce raw data about recovery points or tapes that can be easily imported in Excel or other program to process further. Obviously a UI does not return information for automation. This script returns object collections you can use in your own scripts such as selected tapes, triggered jobs, created output files….

Executing multiple actions on the same set of tapes, for instance mark free, erase and eject can be cumbersome when individual steps take a long time and must complete before the next step can be executed. Such activities often also need to happen on predictable times or conditions were this script can be used to automate that. This script can schedule itself using a simplified “Task Manager” specification as shown above that creates jobs on one or more DPM servers running the desired functions.

You would typically not use this script for ad-hoc activities which are just as easily if not easier done through the UI.

Full link: http://cid-b03306b628ab886f.office.live.com/self.aspx/.Public/DPMTapeUtil.zip 


Erasing unsupported tapes & utility automation sample

$
0
0

You may encounter tapes in DPM libraries that are written with an unsupported block size and first need to be erased because DPM cannot evaluate such tapes and therefore will not do anything to it. The ZIP file that can be downloaded here contains a script, script user guide and two utilities to accomplish this on a DPM server that controls a library. The utilities actually are testing tools that provide the necessary functions to control changers and tape drives. The script automates the various steps and simplifies the syntax for erasing tapes.

Usage: DPMeraseTape.Ps1 <slot number> <unique part of library friendly name>

The script will load media from <slot number> into an empty tape-drive, erase the tape and move media back into the slot again. Further details are described in the user guide. Link: http://cid-b03306b628ab886f.office.live.com/self.aspx/.Public/DPMeraseTape.zip
---
The script can also be seen as a sample of automation with utilities designed for interactive use that maintain their own command shell. In this case “Mytape.exe” but the Windows “Diskshadow” utility would be another good sample. Typically series of meta-commands in a particular order make-up a task that is very hard to implement yourself. Although these utilities can take an input file with commands it provides no step by step interaction and conditional control. This script demonstrates how to run such a utility as separate process, send commands and process resulting output as asynchronous events.
Have fun…

DPM Installation: Configuring Libraries

$
0
0

Configuring Tape Libraries  (Continued from previous post)           

Last week’s DPM snip covered basic configuration of tape libraries and also mentioned if drives from a tape library are listed as stand-alone tape drives, or if a stand-alone tape drive displays incorrectly as a drive in a tape library, you need to remap the tape drive information.  There are other possibilities for tape libraries being displayed incorrectly which are covered below.

 

If the correct driver is not installed when a tape library is connected to the DPM server it’s possible the tape library will not function correctly or is displayed incorrectly when viewing the Libraries tab under Management on your DPM Administrator Console.  In some cases you will notice the tape library is displayed as a “Standalone Drive” instead of a “Library” with its available tape slots.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

If you experience this behavior it is likely due to one of the following:

§  An older Windows compatible driver that was included with Windows 2003 was installed.  Install the latest driver for the tape drive and medium changer or installed the drivers that were tested with DPM 2007 and signed by Microsoft.

§  This model of tape library is not supported by DPM.  Find out if this specific model of tape library has gone through the Microsoft System Center Data Protection Manager Tape Library Compatibility Test (DPMLibraryTest.msi).  Details for this compatibility test are available on the DPM Beta connect site.

 

If you have the latest driver available from the OEM you should troubleshoot this issue like any other Windows device that is not recognized correctly in Device Manager.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

If you open Device Manager you may notice the Medium Changer is not recognized and the tape drive may view as a different model than expected.  You can leverage the Setupapi.log to locate the PNP ID, inf and driver that was selected and verify if any unexpected errors occurred during the installation process for the devices.

 

 

Once the correct drivers for the Tape drive and Medium Changer are installed, or identified another root cause for Windows not recognizing the devices, you can open Device Manager and should notice the devices displayed correctly.

 

 

Once Windows identifies the devices correctly you can open the DPM Administrator Console, select "Management" then click the "Libraries" tab.  Select the device that is displaying the "Standalone Drive" and select "Rescan" in the Action Pane.  Once the rescan completes the tape library with medium changer should be displayed correctly.

 

- Tom O’Malley

CLI Script: Force mark tape as free

$
0
0

This script allows a user to mark any tape as free so that it is available for protection by DPM. Tapes which have unexpired data cannot be marked as free from the GUI but sometimes (esp. while testing) users need to override this behaviour.

Save this script as a .ps1 file and run it. Usage and examples of scripts can be found by calling them with ‘-?’ or ‘-help’ from inside DPM Management Shell. 

----------------------------- Start of Script --------------------------------

param

([string] $DPMServerName, [string] $LibraryName, [string[]] $TapeLocationList)

if

(("-?","-help") -contains$Args[0])
{
Write-Host"Usage: ForceFree-Tape.ps1 [[-DPMServerName] <Name of the DPM server>] [-LibraryName] <Name of the library> [-TapeLocationList] <Array of tape locations>"
Write-Host"Example: Force-FreeTape.ps1 -LibraryName "Mylibrary" -TapeLocationList Slot-1, Slot-7"
exit 0
}

if (!$DPMServerName)
{
$DPMServerName=Read-Host"DPM server name: "
if (!$DPMServerName)
{
Write-Error"Dpm server name not specified."
exit 1
}

}
if (!(Connect-DPMServer$DPMServerName))
{
Write-Error"Failed to connect To DPM server $DPMServerName"
exit 1
}

$library

= @(Get-DPMLibrary$DPMServerName )
if ($library.count-eq 0)
{
Write-Error"Failed to find library with user friendly name $LibraryName"
exit 1
}

if

(!$LibraryName)
{
$library|foreach {$_.userfriendlyname}
$LibraryName=Read-Host"Library name (cut & paste from above): "
if (!$LibraryName)
{

Write-Error"Library name not specified."
exit 1
}
}

if

(!$TapeLocationList)
{
$tmp=Read-Host"Tape location: "
$TapeLocationList=$tmp.split(",")
write-host"Processing this slot list..."
$TapeLocationList
if (!$TapeLocationList)
{
Write-Error"Tape location not specified."
exit 1
}
}

foreach ($mediain @(Get-Tape-DPMLibrary$library))
{
if ($TapeLocationList-contains$media.Location)
{
if ($media-is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia])
{
foreach ($rpin @(Get-RecoveryPoint-Tape$media))
{
Get-RecoveryPoint-Datasource$rp.Datasource|Out-Null
Write-Verbose"Removing recovery point created at $($rp.RepresentedPointInTime) for tape in $($media.Location)."
Remove-RecoveryPoint-RecoveryPoint$rp-ForceDeletion-Confirm:$false
}

Write-Verbose"Setting tape in $($media.Location) as free."
Set-Tape-Tape$media-Free
}
else
{
Write-Error"The tape in $($media.Location) is a cleaner tape."
}
}
}

----------------------------- End of Script ---------------------------------

- Mohit Chakraborty / Ruud Baars

CLI Script: Manual detailed inventory of unknown tapes

$
0
0

The following script runs detailed inventory on all unknown tapes in all the libraries attached to the specified DPM server. Save this script as a .ps1 file and run it. Usage and examples of scripts can be found by calling them with ‘-?’ or ‘-help’ from inside DPM Management Shell.

This is for manually running the detailed inventory job. Btw, for running the inventory on a regular scheduled basis, then use Get/Set-MaintenanceJobStartTime and DPM will automatically run the inventory at the specified time.

-------------------------------- Start of Script ----------------------------------------

param ([string] $DPMServerName)

if(("-?","-help") -contains $args[0])
{
    Write-Host "Description: This script runs detailed inventory on all unknown tapes in all the libraries attached to the specified DPM server."
    Write-Host "Usage: Inventory-UnknownTapes.ps1 [-DPMServerName] <Name of the DPM server>"
    Write-Host "Example: Inventory-UnknownTapes.ps1 mohitc02"

    exit 0
}

if (!$DPMServerName)
{
    $DPMServerName = Read-Host "DPM server name"

    if (!$DPMServerName)
    {
        Write-Error "Dpm server name not specified."
        exit 1
    }
}

if (!(Connect-DPMServer $DPMServerName))
{
    Write-Error "Failed to connect To DPM server $DPMServerName"
    exit 1
}

$libraryList = Get-DPMLibrary -DPMServerName $DPMServerName

foreach ($library in $libraryList)
{
    $unknownTapeList = @(Get-Tape -DPMLibrary $library | ? {$_ -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia] -and $_.OmidState -eq "Unknown"})

    if ($unknownTapeList.Length -gt 0)
    {
        Write-Host "Starting detailed inventory on $($library.UserFriendlyName) for $($unknownTapeList.Length) tape(s)."
        Start-DPMLibraryInventory -DPMLibrary $library -DetailedInventory -Tape $unknownTapeList
    }
}

----------------------------------- End of Script ---------------------------------------

- Mohit Chakraborty 

CLI Script: To recover a DPM replica volume from data stored in tape

$
0
0

When a disaster occurs, and you lose your replica volume for any datasource, you could re-seed the replica from the backed-up data you have in tape. This little script initializes replica from a tape recovery point. The parameters have to be customized for your environment first as given below. 

Save the attached file as a .ps1 file and invoke through the DPM Management Shell.

 

- Madhan S

DPM 2007 Rollup Update -- NOW AVAILABLE

$
0
0

Data Protection Manager

We are very excited to announce that the ‘Rollup Update’ for System Center Data Protection Manager 2007 is now available.

There are new workloads to be protected, as well as new features in this update, including:

Windows Server 2008 support

Run DPM2007 Server on a Windows Server 2008 platform

Protect Windows Server 2008 – including Core systems

Protect Windows Server 2008 System State

Use of RemoteApp to enable DPM administration remotely

While DPM2007 has actually been protecting “Longhorn” since Beta 3, this makes Windows Server 2008 a supported protected workload

Protect SQL Server 2008

Including the ability to restore SQL Server 2005 databases to a SQL Server 2008 server for test migrations and ensuring that after you have updated your environment to SQL Server 2008, you will still be able to recover older SQL 2005 databases, when needed.

While DPM has actually been protecting "Katmai" since customer technology preview 4 (July 2007), this makes SQL Server 2008 a supported protect-able workload

Protect clustered Virtual Server 2005 R2 hosts

DPM 2007 could already protect clustered-Exchange, clustered-SQL Server and clustered-File Services … but clustered virtualization hosts was not initially available in DPM 2007 RTM.  Now for those environments that understand that as they rely on virtualization, the virtualization host needs to be highly available – those platforms are protected by DPM, as well.

New media capabilitiesadded based on feedback from some of our early DPM enterprise customers

Tape media sharing– so that multiple protection groups with similar tape retention periods can now share tapes

Tape library sharing– multiple DPM servers can now share your enterprise tape library silo’s.  This one has been running in MSIT for a while.

 

For more details on what is included in the DPM 2007 “Rollup Update” or in the upcoming Service Pack 1, please check out:

TechNet webcast on “What is coming next for DPM 2007” from April 23, 2008

 

The DPM 2007 Rollup Update is now available via Microsoft Update, if your DPM server is opt’ed in for updates … or it is downloadable from:

Data Protection Manager 2007 - Rollup Update - x86

Data Protection Manager 2007 - Rollup Update - x64

 

Microsoft is committed to continuing to make DPM2007 an ideal solution for protecting and recovering your Windows infrastructure.  So, stay tuned as we get ready to launch the beta for DPM 2007 Service Pack 1, targeted for later this Summer – including the updates listed above, PLUS protection for Hyper-V, more capabilities around SQL Server databases, new features for protecting SharePoint farms and some other features that we are keeping a surprise for now.  As always, you’ll hear about them first here – on the DPM blog site.

 

-- Balaji Hariharan, Jason Buffington

Enabling/Disabling co-location of data on Tape

$
0
0

With DPM 2007 Feature Pack  (KB949779), we have added support for media co-location. With this feature, you can achieve better tape utilization by co-locating data from multiple protection groups with similar retention range. This feature is disabled by default. You can use following PowerShell commands to enable and disable tape co-location.

 

Enable Tape co-location:

 

Set-DPMGlobalProperty -DpmServer <DPM Server Name> -OptimizeTapeUsage $true

 

Disable Tape co-location:

 

Set-DPMGlobalProperty -DpmServer <DPM Server Name> -OptimizeTapeUsage $false

 

You can verify the status of tape co-location feature (Enabled/Disabled) from Library Management tab of DPMUI.

 

The Feature Pack can be downloaded from following locations.

x86:  http://www.microsoft.com/downloads/details.aspx?FamilyID=e9e1fe35-b175-40a8-8378-2f306ccc9e28&DisplayLang=en

 

x64:  http://www.microsoft.com/downloads/details.aspx?FamilyID=ad5cd1a2-9b87-4a2c-90a2-9dbaf1024310&DisplayLang=en

 

Madhan S


Replacing tape drive assignments

$
0
0

Imagine you got a replacement library for a broken one, or one with larger capacity to partition or share between DPM servers but anyway shows up as another tape drive. For discussion sake we say everything is fine with the new library but you now got all those protection groups on one or more DPM servers pointing to the old library!? You need to re-assign those; protection tab, “Modify protection group” after couple of “Next” to select the new library and commit the change to the group. How many groups and servers did you have? Right, the script below comes to some rescue.

The “DPMswitchTape” script facilitates switching protection groups from using one tape library to another by individually re-assigning the ‘primary backup’ and ‘copy backup’ tape libraries. This script will ask to select source and target libraries and means that only the intended library assignments will change for all protection groups.

The number of drives to assign is kept the same by default and can optionally be specified. If the new drive has not enough drives the script defaults to 1 drive.
Likewise tape options (encryption, compression, data verification) are kept the same and can optionally be changed which will cause the script to ask new values for each group.

Source and target library can be the same which effectively just changes options when used with –ChangeOptions

Note: compression and encryption are mutually exclusive and is also enforced by the script.

Usage: DPMswitchTape.ps1 [-dpmserver <server name>] [-drives #] [-ChangeOptions ]

The script takes the following optional parameters;

  • -dpmservername <server name>, DPM server to manage, uses the local host by default
  • -drives <#>, the number of drives to assign
  • -ChangeOptions switch

Script begin

param(
    [string]$dpmserver = "",
    [int]$drives=0,
    [switch]$ChangeOptions)


function writelog
{
    param([string]$msg, $color="Green")
    $msg =  "[{0}] {1}" -f ((get-date).tostring($format)), $msg
    $msg >> $logfile
    Write-Host $msg -ForegroundColor $color
}
function SelectLibrary
{
    #get, present and return user selected library
    param([string]$title, $srv)
    # KEEP the where filter, there can be many old libraries definitions no longer present
    $libs = @(Get-DPMLibrary -DPMServerName $srv | where {$_.isoffline -eq $false})
    writelog "`nCurrent online library list..."
    $i = 0
    for ($i = 0; $i -le $libs.count-1; $i ++ ) {
        write-host ("[{0}] {1} ({2} drives, {3} slots)" -f $i,$libs[$i].userfriendlyname, $libs[$i].getdrivecollection().count,$libs[$i].getslotcollection().count)
    }
    [int]$l_index = read-host "`nSelect $title from indexed list  "
    if (!$libs[$l_index]) {Throw "Incorrect selection!"} else {
        $msg = "Selected  -> [" + $libs[$l_index].userfriendlyname + "]"
        writelog $msg
    }
    return $libs[$l_index]
}
function SetOptions
{
    # initialize and get library options or keep current
    param ([string]$title, $ChangeOptions, $pg)
    $tp = @{"OnsiteComp"=[boolean]$false; "OnsiteEnc"=[boolean]$false; "OffsiteComp"=[boolean]$false; "OffsiteEnc"=[boolean]$false;"DataVer"=[boolean]$false}
    if ($ChangeOptions) {
        writelog "`nConfigure $title library"
        writelog "WARNING: Encryption and Compression are mutually exclusive, enabling compression disables encryption!`n"
        if ((read-host "Do you want SHORT term protection ENCRYPTION enabled [y/N] ") -imatch "Y") {$tp.item("OnsiteEnc")=$true}
        if ((read-host "Do you want SHORT term protection COMPRESSION enabled [y/N] ") -imatch "Y") {
            if ($tp.item("OnsiteEnc")) { writelog "`t<<< disabling short term encryption >>>"}
            $tp.item("OnsiteComp")=$true
            $tp.item("OnsiteEnc")=$false
        }
        if ((read-host "Do you want LONG  term protection ENCRYPTION enabled [y/N] ") -imatch "Y") {$tp.item("OffsiteEnc")=$true}
        if     ((read-host "Do you want LONG  term protection COMPRESSION enabled [y/N] ") -imatch "Y") {
            if ($tp.item("OffsiteEnc")) { writelog "`t<<< disabling long term encryption >>>"}
            $tp.item("OffsiteComp")=$true
            $tp.item("OffsiteEnc")=$false
        }
        if ((read-host "Do you want to enable backup data verification [y/N] ") -imatch "Y") {$tp.item("DataVer")=$true}
    }   
    else {
        $tp.Item("OnsiteComp")    = $pg.ArchiveIntent.OnsiteCompression
        $tp.Item("OnsiteEnc")    = $pg.ArchiveIntent.OnsiteEncryption
        $tp.Item("OffsiteComp")    = $pg.ArchiveIntent.OffsiteCompression
        $tp.Item("OffsiteEnc")    = $pg.ArchiveIntent.OffsiteEncryption
        $tp.Item("DataVer")    = $pg.ArchiveIntent.DatasetVerificationIntent
    }
    return $tp
}
trap [Exception] {
    # generic trap routine writing to event log and logf file
    writelog "<<< ERROR >>>"
    writelog $("TRAPPED: " + $_.Exception.GetType().FullName);
    #writelog $("TRAPPED: " + $_.Exception.Message);
    $Error
    writelog "<<< end >>>"
    $log = Get-EventLog -List | Where-Object { $_.Log -eq "Application" }
    $log.Source = "DPMswitchTape"
    $log.WriteEntry("TRAPPED: $error", [system.Diagnostics.EventLogEntryType]::Error,9911)
    $Error.Clear()
    exit 1 ;
}

#START
Disconnect-DPMServer #make sure we have no lingering connections
if ($dpmserver -eq "") {$dpmserver = hostname}
$logfile = "DPMswitchTape.LOG"
$maxlog = 5 * 1024 * 1024
# set some commonly used
$global:format = "HH:mm:ss"
$version = "V2.0"
$c = "`,"; $q = "`'" ; $qq = "`""
if ($drives  -lt 1) {$drives =1}
#set to false for no console output
$Debug = $true

if ($Args.Count -eq 0) {
    writelog "`nUsage: DPMswitchTape.ps1  [-dpmserver <server name>] [-drives #] [-ChangeOptions 0/1]`n"
}
#display intro
writelog "DPMswitchTape $version using server $dpmserver"
$msg= "`n`tChanges protection group library assignment and options"
$msg= $msg + "`n`t`DPMswitchTape.Ps1 [-DPMserver <servername>]  [-drives #] [-ChangeOptions `$true]`n"
$msg= $msg + "`n`t`Parameter -drives # defaults to previous or 1 drive if target library has less drives than requested"
$msg= $msg + "`n`tSwitch -ChangeOptions `$true indicates you want to change library options, have to specify each group `n"
$msg=$msg + "`n`t(a) Select source of BACKUP and COPY library to be replaced"
$msg=$msg + "`n`t(b) Select target of BACKUP and COPY library to be assigned"
$msg=$msg + "`n`t(c) Select library options (defaults to current definitions)"
$msg=$msg + "`n`t(d) Confirm to modify all groups or exit without changes`n"
writelog $msg "White"

#ensure logfile does not keep growing endlessly
if ((Get-Item $logfile).length -gt $maxlog) {Remove-Item -path $logfile - confirm:$false}

#get backup libs to re-assigned
$sourcelib = SelectLibrary "OLD BACKUP source library to re-assing" $dpmserver
$targetlib = SelectLibrary "NEW BACKUP target library to assign" $dpmserver

#get copy libs to re-assign
$copysourcelib = SelectLibrary "OLD COPY source library to re-assign" $dpmserver
$copytargetlib = SelectLibrary "NEW COPY target library to assign" $dpmserver

#confirm
if ((read-host "`nContinue and actually modify groups [Y/n] " ) -inotmatch "Y") {
    writelog "Done, exiting without changes!"
    exit 0
}
writelog "Modifying groups...`n"
$grps = @(Get-ProtectionGroup -DPMServerName $dpmserver | ? {$_.GetDatasources().Count -gt 0})
#Now go modify the groups
foreach ($group in $grps) {
    #skip if not selected source backup library
       if ($group.ArchiveIntent.LibraryId.Equals($sourcelib.Id)) {
           writelog ("Processing group {0}" -f  $group.friendlyname)
        #do library parameters (there is only 1 set of options for both drives)
        $libparams = SetOptions "long term parameters" $ChangeOptions $group
        $libparams >> $logfile
        if  ($targetlib.GetDriveCollection().count -lt $drives) {
            $drives = 1 #possibly set to max available drives instead?
            writelog "Target library has less than requested number of drives, setting drive pool to $drives"
        }
        $mpg=Get-ModifiableProtectionGroup $group
        $mpg.Archiveintent.Libraryid=$targetlib.Id
        $mpg.ArchiveIntent.NumberOfDrives= $drives
        $mpg.ArchiveIntent.OnsiteCompression=$libparams.Item("OnsiteComp")
        $mpg.ArchiveIntent.OnsiteEncryption=$libparams.Item("OnsiteEnc")
        $mpg.ArchiveIntent.OffsiteCompression=$libparams.Item("OffsiteComp")
        $mpg.ArchiveIntent.OffsiteEncryption=$libparams.Item("OffsiteEnc")
        $mpg.ArchiveIntent.DatasetVerificationIntent=$libparams.Item("DataVer")
        Set-ProtectionGroup -ProtectionGroup $mpg
        $msg="Modified BACKUP library of protection group " + $group.FriendlyName + " from [" + $sourcelib.UserFriendlyName + "] to [" + $targetlib.UserFriendlyName + "]"
        writelog $msg
    }
    else
    {
          $msg = "Skipping BACKUP library for protection group " + $group.friendlyname + "  because the curren does not match source selection!"
        writelog $msg
    }
    #skip if not selected source copy library
   if ($group.ArchiveIntent.SecondaryLibraryId.Equals($copysourcelib.Id)) {
        $mpg=Get-ModifiableProtectionGroup $group
        $mpg.ArchiveIntent.NumberOfDrives= $drives
        $mpg.Archiveintent.SecondaryLibraryid=$copytargetlib.id
        $mpg.ArchiveIntent.OnsiteCompression=$libparams.Item("OnsiteComp")
        $mpg.ArchiveIntent.OnsiteEncryption=$libparams.Item("OnsiteEnc")
        $mpg.ArchiveIntent.OffsiteCompression=$libparams.Item("OffsiteComp")
        $mpg.ArchiveIntent.OffsiteEncryption=$libparams.Item("OffsiteEnc")
        $mpg.ArchiveIntent.DatasetVerificationIntent=$libparams.Item("DataVer")
        Set-ProtectionGroup -ProtectionGroup $mpg
        $msg="Modified COPY library of protection group " + $group.FriendlyName + " from [" + $copysourcelib.UserFriendlyName + "] to [" + $copytargetlib.UserFriendlyName + "]"
        writelog $msg
    }
    else
    {
          $msg = "Skipping COPY library for protection group " + $group.friendlyname + "   because the current does not match source selection!"
        writelog $msg
    }
}
writelog "`nDone!"
exit 0

 

The search for DPM tape utilities stops here…

$
0
0

This solution combines several existing tape related scripts with enriched functionality. The short list is shown in the DPMTapeUtil user guide illustration on the right. You can download the script and user guide from here, provided “as is” no rights or warranties implied.

This script is updated to also copy recovery points to disk and to copy only the latest recovery point across media to disk!

The “DPMTapeUtil.Ps1” script performs a variety of tape related functions such as; report recovery points, start inventory, mark free, erase, eject, re-catalog, rescan library,  run a one-off backup and more… These functions can be used individually or in combinations, interactively on the DPM server or scheduled on multiple DPM servers. Tape selection and scheduling are controlled through simple command definitions. For instance to erase tapes that are ‘Recyclable’ every Sunday at 04:00 AM;

-tapeerase –schedule “Enable|Weekly|Sun|04:00” 

This only works with tapes DPM can understand, to erase tapes with an unsupported block size, see this companion post.

Why or when would you use this?

Although the DPM UI has good multi-select features, selecting a larger collection of tapes to perform the same action through this script can be more convenient. This is particularly true with good criteria such as; commonality in displayed label or barcode, a timespan or particular state the tapes can have. For instance; all tapes in all libraries across multiple servers with expired data, or that are offsite ready, or have written less than or at least certain amount of data and so forth…

The UI does not produce raw data about recovery points or tapes that can be easily imported in Excel or other program to process further. Obviously a UI does not return information for automation. This script returns object collections you can use in your own scripts such as selected tapes, triggered jobs, created output files….

Executing multiple actions on the same set of tapes, for instance mark free, erase and eject can be cumbersome when individual steps take a long time and must complete before the next step can be executed. Such activities often also need to happen on predictable times or conditions were this script can be used to automate that. This script can schedule itself using a simplified “Task Manager” specification as shown above that creates jobs on one or more DPM servers running the desired functions.

You would typically not use this script for ad-hoc activities which are just as easily if not easier done through the UI.

Full link: http://cid-b03306b628ab886f.office.live.com/self.aspx/.Public/DPMTapeUtil.zip 

Erasing unsupported tapes & utility automation sample

$
0
0

You may encounter tapes in DPM libraries that are written with an unsupported block size and first need to be erased because DPM cannot evaluate such tapes and therefore will not do anything to it. The ZIP file that can be downloaded here contains a script, script user guide and two utilities to accomplish this on a DPM server that controls a library. The utilities actually are testing tools that provide the necessary functions to control changers and tape drives. The script automates the various steps and simplifies the syntax for erasing tapes.

Usage: DPMeraseTape.Ps1 <slot number> <unique part of library friendly name>

The script will load media from <slot number> into an empty tape-drive, erase the tape and move media back into the slot again. Further details are described in the user guide. Link: http://cid-b03306b628ab886f.office.live.com/self.aspx/.Public/DPMeraseTape.zip
---
The script can also be seen as a sample of automation with utilities designed for interactive use that maintain their own command shell. In this case “Mytape.exe” but the Windows “Diskshadow” utility would be another good sample. Typically series of meta-commands in a particular order make-up a task that is very hard to implement yourself. Although these utilities can take an input file with commands it provides no step by step interaction and conditional control. This script demonstrates how to run such a utility as separate process, send commands and process resulting output as asynchronous events.
Have fun…

Update Rollup 10 for System Center 2012 R2 Data Protection Manager is now available

$
0
0

Update Rollup 10 for Microsoft System Center 2012 R2 Data Protection Manager (DPM 2012 R2) is now available to download.

Issues that are fixed in this update rollup

  • If you try to exclude a page file for a VM running on Microsoft Hyper-V Server 2012 R2 server, DPM may still continue to back up the page file.
  • DPM provides an Active Directory schema extension tool to make required changes to Active Directory for DPM End-User Recovery. However, you may the tool may not work on System Center 2012 R2 Data Protection Manager.
  • If you try to protect a SharePoint content database that has Always On enabled, and there is a failover of the database, you may notice that new sites, lists, and items are not displayed on the Recovery tab. This applies only to new items that are created after failover. Additionally, the issue is automatically resolved after failback.
  • If you run Update Rollup 7 for System Center 2012 R2 Data Protection Manager, or a later version, and then try to do item level recovery for a Hyper-V VM, you may receive the following error message when you click the VHDX file on the Recovery tab:

DPM Cannot browse the contents of the virtual machine on the protected computer DPMServerName.

  • The DPM Console crashes when you try to open any of the six built-in DPM reports.
  • Optimized item level recovery doesn’t work for a SharePoint farm. This causes the full farm data to be copied to the staging server that’s running Microsoft SQL Server.
  • The DPM UI crashes when you try to recover online recovery points by using another DPM server that is registered to the same backup vault as the original server.
  • The Get-DPMJob cmdlet does not provide any information about recovery jobs that are performed through the external DPM server.
  • This update revises the message of error code 33504 to add details about the issue and steps to resolve the issue.
  • If you try to protect Microsoft Exchange Server 2016 while you create a protection group, the server that’s running Exchange Server is displayed as “Exchange 2013 Database” instead of “Exchange 2016 Database.”
  • If you use the DPM Central console, and you receive an EvalShareInquiryAlert (3123) alert on DPM, the alert is still displayed as active in System Center Operations Manager even though the issue is resolved on DPM.
  • DPM crashes when you try to configure SMTP settings.
  • If you try to stop protection of a data source in which the FQDN contains more than 64 characters, the DPM service crashes.

For complete details including installation instructions and a download link, please see the following:

3143871Update Rollup 10 for System Center 2012 R2 Data Protection Manager (https://support.microsoft.com/en-us/kb/3143871)

For information regarding all System Center fixes included in Update Rollup 10, please see the following:

3164172Description of Update Rollup 10 for Microsoft System Center 2012 R2 (https://support.microsoft.com/en-us/kb/3164172)

 

J.C. Hornbeck, Solution Asset PM
Microsoft Enterprise Cloud Group

Four simple steps to backup VMware VMs using SC DPM

$
0
0

System Center Data Protection Manager (SCDPM) is well recognized in the industry for protection of Microsoft workloads and environments. It protects key Microsoft workloads such as SQL, SharePoint and Exchange as well as virtual machines running on Hyper-V.  Today, we are announcing support for protection of VMware virtual machines. This will allow enterprise customers to have a single backup solution across their heterogeneous IT environment.

Here are the four simple steps to configure VMware server and DPM to protect VMware VMs.

1. Enable a secure SSL communication between DPM and VMware server

 

 

2.Add a new user with certain minimum privileges

 

 

3.Add VMware Server to DPM

 

 

4.Protect VMware VMs with DPM

 

If you are new to Azure Backup and want to enable Azure Backup for longterm retention, refer to Preparing to backup workloads to Azure with DPMClick for a free Azure trial subscription

Here are some additional resources:

Key words: Announcement, VMware VM Backup, DPM, DPM 2012 R2, SC DPM, Microsoft Azure Backup Server, MABS, Azure Backup, Backup & Recovery, OMS, Cloud Backup, Virtual Machines, VMware, vCenter, ESXi

Viewing all 90 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>