PowerShell Techguy.at

MigrateDpmData, DPM Datasources mittels GUI verschieben

Wer kennt das nicht, eine DPM Disk ist voll und ein paar Datasources sollten verschoben werden, aber wie.

Microsoft liefert leider keine Möglichkeit dies mit der DPM Konsole zu machen, somit muss auf die PowerShell zurückgegriffen werden.

Auch hier ist das etwas mehr Aufwand als erwartet, und da ich immer wieder Datasources oder ganze HDD’s verschieben muss, habe ich ein PowerShell Script mit GUI geschrieben, welches euch und mir diesen Schritt sehr erleichtert.

Das Script

Gleich zu Beginn prüfen wir die PowerShell Version. Voraussetzung ist die PowerShell V3 da ansonsten die GUI nicht funktioniert.

Download der V3 Version: http://www.microsoft.com/en-us/download/details.aspx?id=34595

#Check PowerShell Version
$PSPre="3"

if ($Host.Version.Major -ge $PSPre) {
    Write-Host "Your PowerShell Version is OK"
    } else {
    Write-Host "Wrong PS Version, you have" $Host.Version.Major
    Write-Host "Download PowerShell V3: http://www.microsoft.com/en-us/download/details.aspx?id=34595"
    Write-Host "Press Key to exit...."
    $x=$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") 
    exit
    }

Zu Beginn importieren wir die DataProtection CMDlets und erfragen den Namen unseres DPM Servers.

image

#Import Modules
Import-Module DataProtectionManager

#Ask for DPM Server
$DPMServer=Read-Host "DPM ServerName"

Als nächstes werdet ihr gefragt welchen Task ihr durchführen wollt, hier gibt es 2 Möglichkeiten

  • eine einzelne Datasource verschieben
  • alle Datasources auf einer Disk verschieben

image

#GUI to choose what to move
$title = "What do you like to move"
$message = "Want to move a whole Disk or only one Datasource?"
$Disk = New-Object System.Management.Automation.Host.ChoiceDescription "&Complete Disk", `
    "Want to move all Datasources from one Disk"
$Datasource = New-Object System.Management.Automation.Host.ChoiceDescription "&One Datasource", `
    "Only want to move one Datasource"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($Disk, $Datasource)
$result = $host.ui.PromptForChoice($title, $message, $options, 1)

Je nach der oben gewählten Option, werdet ihr als nächste nach der “Source” gefragt, also der Disk oder der Schutzgruppe in der sich die Datasource befindet die ihr verschieben wollt.

In diesem Beispiel haben wir uns für eine Datasource entschieden und müssen somit zuerst die gewünschte Schutzgruppe angeben, danach wählen wir die Datasource welche wir verschieben möchten.

image

Danach müsste ihr aus der gewählten Schutzgruppe die Datasource wählen.

image

und zum Schluss die Disk die das Ziel der Datasource sein soll.

Danach startet die Migration.

Choose Disk or DS
if ($Result -eq "0") {
    Write-Host "Moving all Datasources of one Disk"
    $Source=Get-DPMDisk -DPMServerName $DPMServer | Out-GridView -Title "Choose Source Disk" -PassThru
    $Destination=Get-DPMDisk -DPMServerName $DPMServer | Out-GridView -Title "Choose Destination Disk" -PassThru
} elseif ($Result -eq "1") {
    Write-Host "Moving one Datasource"
    $PG = Get-ProtectionGroup -DPMServerName $DPMServer | Out-GridView -Title "Choose Protectiongroup" -PassThru
    $Source = Get-DPMDatasource $PG  | Out-GridView -Title "Chosse Datasource to Move" -PassThru
    $Destination=Get-DPMDisk -DPMServerName $DPMServer | Out-GridView -Title "Choose Destination Disk" -PassThru
}

In der Version 1.0 wird nicht überprüft ob genug Platz ist, oder ob die Source bereits auf der Disk liegt, dies kommt eventuell in einer der nächsten Versionen.

Was wünscht ihr euch von diesem Script?

Download in der TechNet Gallery: http://gallery.technet.microsoft.com/Migrate-DPM-Disk-or-dea8d4e9

Michael Seidl aka Techguy

12 thoughts on “MigrateDpmData, DPM Datasources mittels GUI verschieben”

  1. Sobald ich mehr Zeit habe (nächste Woche vermutlich) werde ich das mal durchtesten.

    Vielen Dank jedenfalls…das ist genau der Knackpunkt den ich bisher auch gesehen habe.
    Da es mich noch nicht so sehr gekniffen hat, war eine Lösungssuche für mich bisher nicht sehr relevant.

  2. Nun hatte ich endlich mal die Tage mehr Zeit mich ausführlich damit zu beschäftigen.

    Ich wollte das Script eigentlich zum beräumen von Datenträgern einsetzen.
    Da ich aber am Ende immer mit der Fehlermeldung es sei nicht genügend Platz vorhanden, wusste ich nicht ob ich etwas missverstanden habe.

    Ich habe im einfachsten Fall, eine 500GB Disk (von 1 insgesamt 9) daher genommen, die zu 83% belegt war.
    Diesen Inhalt wollte ich auf eine neue Disk (10) verschieben die 550GB groß ist.
    Also eigentlich genügend Platz für die Quelle.
    Leider spielt es keine Rolle. Der Platz reicht angeblich nicht aus.

    Ich erinnere mich daran das du gesagt hast das man mit diesem Script

    [C] Complete Disk [O] One Datasource [?] Help (default is “O”): c
    Moving all Datasources of one Disk
    Set-ProtectionGroup : The allocation of disk space for storage pool volumes
    failed because there is not enough unallocated disk space in the storage pool.
    (ID: 358)
    Add more disks to the storage pool or reduce the volume size requirement.
    At C:\Program Files\Microsoft System Center
    2012\DPM\DPM\bin\MigrateDatasourceDataFromDPM.ps1:111 char:3
    + Set-ProtectionGroup $mpg
    + ~~~~~~~~~~~~~~~~~~~~~~~~

    Nun habe ich mich aber daran erinnert was du im Podcast/Gespräch sagtest.
    “Mit dem move Datasource verschiebt man keine Daten sondern…. neue Sicherungen kommen an den neuen Ort…”

    Insgesamt also nicht das was ich benötige.
    Ich möchte den Inhalt der DPM Backup Disk von a nach b verschieben.
    Wenn ich es recht verstanden habe, gibt es dazu keine Möglichkeit mit Bordmitteln?

    Habe ich etwas übersehen?

  3. Da sich im ursprünglichen Kommentar zwei Versionen gemixt haben, hier die eigentliche Version. ;(

    Nun hatte ich endlich mal die Tage mehr Zeit mich ausführlich damit zu beschäftigen.

    Ich wollte das Script eigentlich zum beräumen von Datenträgern einsetzen.
    Da ich aber am Ende immer mit der Fehlermeldung es sei nicht genügend Platz vorhanden, wusste ich nicht ob ich etwas missverstanden habe.

    Ich habe im einfachsten Fall, eine 500GB Disk (Nummer 1 von insgesamt 9) daher genommen, die zu 83% belegt war.
    Diesen Inhalt wollte ich auf eine neue Disk (10) verschieben die 550GB groß ist und damit größer als die Quelle.

    Leider spielt es keine Rolle. Der Platz reicht angeblich nicht aus.

    [C] Complete Disk [O] One Datasource [?] Help (default is “O”): c
    Moving all Datasources of one Disk
    Set-ProtectionGroup : The allocation of disk space for storage pool volumes
    failed because there is not enough unallocated disk space in the storage pool.
    (ID: 358)
    Add more disks to the storage pool or reduce the volume size requirement.
    At C:\Program Files\Microsoft System Center
    2012\DPM\DPM\bin\MigrateDatasourceDataFromDPM.ps1:111 char:3
    + Set-ProtectionGroup $mpg
    + ~~~~~~~~~~~~~~~~~~~~~~~~

    Nun habe ich mich aber daran erinnert was du im Podcast/Gespräch sagtest.
    “Mit dem move Datasource verschiebt man keine Daten sondern…. neue Sicherungen kommen an den neuen Ort…”

    Insgesamt also nicht das was ich benötige.
    Ich möchte den Inhalt der DPM Backup Disk von a nach b verschieben.
    Wenn ich es recht verstanden habe, gibt es dazu keine Möglichkeit mit Bordmitteln?

    Habe ich etwas übersehen? Ist die noch eine andere elegante Möglichekeit bekannt im laufenden Betrieb den Inhalt zu verschieben?

  4. Hallo,

    du hast Recht mit dem was ich gesagt habe, aber nicht ganze.
    Due verschiebst damit den Platz, die der DPM für die nächste Sicherung benötigt, also sichert DPM nicht mehr auf Disk 1, sondern in Zukunft auf Disk 2.
    Das bedeutet, auf Disk 1 belieben die Daten solange bis diese abgelaufen sind, danach wird der Platz auf Disk 1 freigegeben dort wieder frei.
    Somit ist es im Endeffekt ein verschieben, nur dauerts etwas, also dann doch was du benötigst, und nein es gibt keine andere Möglichkeit sofern die Beibehaltsdauer nicht reduzierst.

  5. Ich habe befürchtet das du mich darauf hinweist und ich mich in der Anwendung nicht geirrt habe. 😀

    Insgesamt ist die Lösung nicht zufriedenstellend.
    Ich habe mir mal die Groups und die Verteilug angesehen und viel mit deinem als auch dem mitgelieferten migrate powershell script im /bin/ pfad rumexperimentiert.
    Am Ende läuft es darauf hinaus. Das ich bei großen, gewachsenen Protection Groups, als neues Ziel sehr große Datenträger bereithalten muss.
    Auch habe ich mal testweise ein DPM Drive (vhdx) über den Hyper-V Host vergrößert, was der DPM spuckend zur Kenntnis nahm und die betreffende Disk fehlerhaft wurde.

    Das Umziehen von Daten muss in kommenden Versionen meines Erachtens nach besser werden. Das macht man sicherlich nicht oft aber immer dann wenn ist es irgendwie schmerzhaft. Es würde oftmals reichen, eine Disk im DPM per Rechtsklick als read-only zu bezeichnen um gewünschten Umzugseffekt zu erreichen. Dann würde der DPM auf neue Drives schreiben aber die RO Disk auslaufen lassen.

    Was denkst du?

  6. Hallo,
    ganz so negativ sehe ich die Geschichte nicht hatte bei meinen Migrationen nicht solche Probleme.
    Habe jedoch mein MigrationScript gerade erweitert, um per Klick eine gesamte Disk zu leeren und deren Datasources auf alle anderen zu verteilen, wird demnächst mal veröffentlicht.

  7. Hello,

    When I try to move a disk to disk migration I get the following error.

    Do you have a simple fix?

    Your PowerShell Version is OK
    DPM ServerName: SSTTUUUXXXX
    Moving all Datasources of one Disk
    Datasource PowerDevice by PowerPath is not vaild and cannot be moved

  8. Hallo Michael,

    ist es normal, dass nach der Auswahl des Zieles die Powershell sich automatisch beendet ? Ich bekomme kein Protokoll, in welchem mir die Migration bestätigt wird.

    Vielen Dank im Voraus

Leave a Comment

Your email address will not be published. Required fields are marked *

*