Daten aus einem abgelaufenem Band wiederherstellen mit DPM

Ich bekomme einige Mails pro Woche von Lesern die eine spezifische Frage zu DPM oder System Center im Allgemeinen haben. Kleinere Fragen kann ich immer meist schnell beantworten ohne allzu tief in die jeweilige Umgebung einzutauchen. Eine Frage, die immer mal wieder auftaucht, so auch wieder heute, möchte ich heute einen Blogeintrag widmen.

Wie sicherlich den meisten bekannt ist, markiert DPM ein Tape als frei/verfügbar, wenn die Daten darauf abgelaufen sind, also die Aufbewahrungsdauer überschritten ist. DPM löscht das Band nicht sofort, sondern nimmt es einfach wieder her wenn erneut etwas gesichert werden soll.

Jetzt kam gerade eben wieder diese Frage, wie ich Daten von einem expired Tape wiederherstelle. DPM ist ja in diesem Fall auf einem Auge blind. Es weiß zwar was drauf ist, aber wenn ich versuche es eine Wiederherstellung zu starten scheitere ich natürlich, weil diese Recovery Points ja expired sind.

Da gibt es einen einfachen Trick um das zu umgehen:

Man markiert das entsprechende Band als frei.

Dies macht man unmittelbar wieder rückgängig. Damit ist es für DPM ein fremdes unbekanntes Band. Wenn man jetzt einen Recatalog Job startet, dann liest es die Inhalte ein und packt diese als fremde importierte Bandinformationen in den Recovery Tab.

Von hier lässt sich dann die Wiederherstellung starten.

Gründe, warum man Daten von einem expired tape braucht, gibt es zuhauf. Viele heben bestimmte Wochen/Monatsbänder länger auf als die Retention period, sei es aus Compliance Gründen, Sentimentatlität, Übervorsicht etc. etc.

Und natürlich will man dann ja nicht nur das Tape parat haben, sondern auch in der Lage sein diese Daten wiederherzustellen. Mit diesem kleinen Schwindel trickst man DPM aus und kann die Daten restoren.

Dieses Band wird DPM natürlich nicht mehr hernehmen für künftige Sicherungen. Wenn man das Band also wieder recyclen will muss man dann selbst ran und es manuell als frei markieren und/oder löschen.

Single Drive Tape mit DPM

Einer unserer Leser hatte folgende Frage:

Für die Langzeitarchivierung sichere ich auf Band (DPM2010). Gesichert wird auf ein Einzellaufwerk (LTO-3), dessen Kapazität aber  nicht ausreicht. Nach Einlegen eines 2. Bandes wird aber der Job nicht automatisch fortgesetzt, man muss den aus der Überwachung heraus anstoßen (fortsetzen), damit es weiter geht. Kann man das automatisieren?

Ich habe ihm dazu ein Mail geschrieben und will euch hier auch einen Tipp dazu verraten.

DPM schreibt ein Band voll und wartet dann 60 Minuten auf ein freies Tape. Wird in dieser Zeit ein freies Tape gefunden läuft der Job weiter. Andernfalls wird der Job abgebrochen und man muss ihn anschliessend manuell fortsetzen (Resume backup).

Man kann diese Zeit verlängern mit einem Registryeintrag auf dem DPM Server.
Dazu navigiert man in den Tree:
HKLM\Software\Microsoft\Microsoft Data Protection Manager\1.0\Prompting

Timeout für Wartezeit auf freies Tape

und legt hier einen neuen DWORD Wert an namens PromptingTimeOut an.

Dessen Wert in Millisekunden ist dann die neue Definition für die Wartezeit auf Tapewechsel. Anpassen und anschliessend den MSDPM Dienst neustarten.

DPM – OffsiteReady Tapes werden angezeigt für defekte/entfernte Library

Eure Library wurde getauscht und ihr habt eine neue bekommen.
Jetzt tauchen im Tape Management Report ständig Bänder auf, die Offsite Ready sind, aber als Location die alte bereits entfernte Library haben. Damit der Tape Report jetzt nur noch  die neuen Tapes aus der neuen Library anzeigt muss einfach nur der entsprechende Eintrag für das entsprechende Tape in der Datenbank geändert werden.

Also Backup der DPM Datenbank ziehen, Management Studio mit erweiterten Rechten starten und folgendes SQL Skript laufen lassen:

Update [DPMDB].[dbo].[tbl_MM_Media] set location=’0′ where BarcodeValue=’CRC045L3′

Die BarcodeValue natürlich mit dem entsprechenden Tape ersetzen.

Damit denkt DPM dass das Tape nicht mehr in der Library ist, sondern offsite.

OffsiteReady Bänder mit Powershell ausgeben

Wir haben von einem unserer Leser eine Frage bekommen. Er möchte die Bänder, die rausgenommen werden können, per Powershell einfach ausgeben anstatt jedes Mal den Tape Report zu bemühen.

Das lässt sich in Powershell mit wenigen Zeilen erledigen:

$Tapes = Get-Tape -DPMLibrary EureLibraryName
$Tapes | Where-Object {$_.isOffsiteReady} | format-table Location, Barcode, isOffsiteReady

In der ersten Zeile füllen wir die Variable $Tapes mit den Tapeinformationen eurer Library. Habt ihr mehr als eine Library, dann benutzt auch hier eine Variable wie z.B. $Libraries und füllt diese mit den Namen eurer Libraries:

$Libraries = Get-DPMLibrary -dpmservername Servername

In der zweiten Zeile oben geben wir dann nur die Tapes aus, die Offsite Ready sind und formatieren sie nach Location, Bezeichnung und OffsiteReady.

Wollt ihr die Ausgabe sortieren, z.B. nach Slots (Location) oder nach Barcode, dann fügt ihr einfach noch eine Pipe gleich nach der Ausgabe mit dem Befehl:

sort-object Spalte

Um also z.B. nach Slots zu sortieren lautet der volle Befehl:

$Tapes | sort-object Location | Where-Object {$_.isOffsiteReady} | format-table Location, Barcode, isOffsiteReady

Unserem Leser ist damit geholfen und es interessiert sicher noch mehr Leser hier.

Schreibt uns was euch interessiert und wir greifen es gerne auf!

Überfällige Bänder aus der Datenbank entfernen (DPM 2010)

Oftmals gibt es das Problem, dass Bänder im Tape Report auftauchen, die eigentlich nicht mehr verwendet werden sollen oder können.
Diese tauchen jedoch bei jedem Report erneut auf und können über die GUI nicht gelöscht werden.

Um die Bänder zu entfernen ist es notwendig sie in der Datenbank zu löschen. Bisher habe ich das SQL Command jedoch nur für die MS DPM 2010  Datenbank verwendet. Über eine Info ob es auch im DPM 2012 klappt würden wir uns freuen.
Bitte denkt immer daran vor Eingriffen in die Datenbank ein Backup zu machen 😉

Um das Command aus zu führen öffnet ihr das SQL Management Studio und verbindet euch auf die SQL DB Meist

localhost\MSDPM2010

Als nächstes Müsst ihr eine neue SQL Abfrage ( SQL Query) erstellen:

New SQL Query

Nun einfach die folgende Abfrage kopieren und entsprechend wie folgt anpassen:

den ´TAPE LABEL NAME´ zwischen den 2 ‚ anpassen mit dem Tape Label Namen den ihr löschen wollt.
Es empfiehlt sich den Namen vorher aus dem DPM Tape Report zu kopieren, damit Fehler vermieden werden.

Bitte beachtet das es sich hierbei nicht um den Namen auf dem Tape sondern den Tape Label Namen auf dem Tape Report von DPM handelt der entsprechend gelöscht/eingetragen werden muss.

———- START COPY HERE ————-

— overdue tapes
— for clarity, set up the parameter as a variable
declare @paramTapeLabel as nvarchar(256)
set @paramTapeLabel = N’TAPE LABEL NAME‘

— keys
declare @vMediaId as guid
declare @vGlobalMediaId as guid

— if the delete gives trouble, add keyset after cursor
declare cur_label cursor
for select MediaId, GlobalMediaId
from tbl_MM_Media
where label = @paramTapeLabel;

open cur_label
while (0 = 0)
begin
fetch next from cur_label into @vMediaId, @vGlobalMediaId
— test for being done
if @@fetch_status <> 0 break;

print ‚Deleting MediaId = ‚ + cast(@vMediaId as varchar(36))
— do a set of deletes atomically
begin transaction;
delete from tbl_MM_TapeArchiveMedia
where MediaId = @vMediaId;

delete from tbl_MM_MediaMap
where MediaId = @vMediaId;

delete from tbl_MM_ArchiveMedia
where MediaId = @vMediaId;

delete from tbl_MM_Global_ArchiveMedia
where MediaId = @vGlobalMediaId;

delete from tbl_MM_Global_Media
where MediaId = @vGlobalMediaId;

delete from tbl_MM_Media
where current of cur_label;

commit transaction;

end
close cur_label
deallocate cur_label

————– END COPY HERE ———————-