Unter der Dokument ID c03282611 ist am 19.04.2012 bei HP zu Data Protector 6.21 und Data Protector 7.0 ein Advisory erschienen, welches ein Problem mit Restores von NDMP Daten beschreibt.
Es gibt einen Hotfix der bei HP bezogen werden kann; der Fix wird bei den Patches für Ende Mai 2012 eingepflegt.
Der vollständige Artikel kann hier nachgelesen werden: http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c03282611&jumpid=em_alerts_us-us_Apr12_xbu_all_all_1701712_112088_software_critical_005_38
Jährliche Archiv: 2012
Data Protector 7.0
Am 16.04.2012 ist Release Datum für die nächste Version von Data Protector – Version 7.0. Der Download wird in Kürze auf der bekannten Seite zur Verfügung gestellt, die Bestellung von Medien (DVD) ist ab dem 1. Mai möglich. Wie immer gilt: für Kunden mit bestehendem Wartungsvertrag ist das Update auf die neue Version kostenlos (Passport Account benötigt), die bisherigen Lizenzen behalten ihre Gültigkeit.
Die Version 7.00 ist ein vollständige Installation und die wichtigste Neuerung ist Deduplication auf der Client Seite, so dass die Deduplizierungs Strategie innerhalb von Data Protector nun komplett ist. Die Deduplizierung erfolgt dabei unabhängig ob es sich um eine Filesystemsicherung oder Datenbanksicherung handelt. Als weitere wichtige und erwartete Neuerung wird nun auch GRE für Exchange verfügbar. Die Integration der Autonomy Tools in Data Protector runden die neue Version ab.
Drive Licenses
Ein beliebtes Thema und immer wieder angefragt: Welche Lizenzen muss ich für Laufwerke verwenden wenn eine FC Library für das Backup im Windows / Linux Umfeld an einem (1!) Server genutzt wird? Die Antowrt ist eigentlich einfach: Solange die Laufwerke nicht von verschiedenen Servern angesprochen werden und im Data Protector bei den Laufwerken der Haken bei „Multipath device“ nicht gesetzt ist, dann reicht die preisgünstigere Windows Drive Lizenz aus. In diesem Fall wird diese Point to Point Verbindung nicht als SAN gesehen (selbst wenn ein Switch dazwischen hängt, statt arbitrated loop zu verwenden)
Auszug aus den QuickSpecs
In case that multiple systems access the drive in a SAN, the drive extension for UNIX, NAS, SAN (B6953AA) is required. A Fiber Channel point-to-point connection is not considered a SAN.
Die kompletten Details können hier nachgelesen werden: http://h18004.www1.hp.com/products/quickspecs/11671_div/11671_div.HTML
Danke auch an Christian vanHaut, der nochmal eine offizielle Antwort von HP eingeholt hat.
Mail Slots ESL E series
Simple Media Vaulting / Off-Site Tape Vaulting
Der Wunsch die Daten seiner Server auf Medien zu sichern und somit Datensicherheit zu erhalten hört nicht nur bei der Datensicherung auf Band auf, oft besteht auch der Wunsch oder Anforderung die beschriebenen Bänder vor weiterem Beschreiben zu schützen oder die Medien aus der Bandlibrary zu entfernen und an einem sicheren Ort (Tresor, Ausfall Rechenzentrum, …) zu verwahren. Jeder Data Protector Admin kennt diese Situation; Herausfinden welche Bänder in der letzten Vollsicherung beschrieben wurden um sie dann auslagern zu können. Der erfahrene Admin lässt sich dafür einen Report senden oder verwendet viele unterschiedliche Pools um die Tagessicherung, Wochensicherung und Monatssicherung auseinanderzuhalten. Problem: die Bänder sollen dann trotzdem noch in einen eigenen „Auslagerungspool“ verschoben werden, bevor sie der Library entnommen werden.
Lösung: Genau für dieses Problem habe ich ein kleines Perl Skript geschrieben. Wie immer schreibe ich meine Skripte in Perl, da diese Sprache sehr flexibel für solche einfachen Aufgaben ist. Das Skript benötigt keine vollständige Perl Installation, die abgespeckte Perl Variante die bei der Installation von Data Protector auf dem Cell Server enhalten ist reicht komplett aus. Funktionweise kurz: Es werden die Sicherungen eines Zeitraums bestimmt, die Medien dazu analysiert und diese dann in einen anderen Pool verschoben.
Funktionsweise: Das Skript durchsucht die Sicherungen des Timeframes der im Skript angegeben wird, für die Aufstellung der Sicherungen werden die verwendeten Bänder ermittelt. Die Liste der Bänder wird nun von eventuell vorhandenen Dubletten bereinigt (ein Band kann von mehreren Backupjobs verwendet wurden sein) und für jedes verbliebene Band der Pool bestimmt. Wenn das Band in einem Pool liegt welches über ein einzustellendes Exclude nicht verschoben werden soll, dann wird das jeweilige Band übersprungen, anderenfalls wird das Band in den konfigurierten Zielpool verschoben. Sollte die Anforderung an das Skript etwas komplexer werden so ist es auch mögliche mehrere Kopien des Skripts mit unterschiedlichen Werten für die Variablen einzustellen und laufen zu lassen. Das gilt auch für Medien unterschiedlichen Typs (LTO und was es sonst noch gibt…) Am Ende des Skripts wird dann noch eine Mail versendet mit der Information welche Bänder in den Zielpool verschoben wurden. Wer das nicht mag kann es gern auskommentieren… Wer es mag muss sich noch das Tool „Blat“ besorgen und konfigurieren – Link: http://www.blat.net. Der Einfachheit halber habe ich alles (das Skript, das Batchfile dazu und die Blat Binaries) in das Bin Verzeichnis von Data Protector gelegt, aber auch das kann geändert werden. Denkbar wäre auch noch eine Erweiterung wo die Bänder gleich noch in die Mailslots verschoben werden (5 Zeilen Code mehr). Das macht natürlich nur Sinn wenn die Library über konfigurierte Mailslots verfügt und die Anzahl der auszulagernden kleiner oder gleich der Menge der Mailslots ist.
Fallbeispiel: Es sind die Pools FilesystemWeekend, FilesystemDaily (für die Filesystem Sicherungen), DatabasesWeekend, DatabasesDaily (für Datenbank Sicherungen), DPDatabase, Vaulting und FreePool vorhanden. Am Montagmorgen sollen die Bänder die in den Sicherungen seit Freitag Abend verwendet wurden in den Pool „Vaulting“ verschoben werden. Die „Daily“ Pools und der DPDatabase Pool (Die Sicherung der internen Datenbank geht bei mir immer in einen eigenen Pool!) sollen in diesem Fall bei der Auslagerung unberücksichtigt bleiben. Welche Einstellungen im Skript vorgenommen werden müssen wird im nächsten Abschnitt gezeigt.
Einstellungen: Was muss im Skript auf Grund des Fallbeispiels geändert werden? Bitte unbedingt darauf achten, dass die @ Zeichen in den Mailadressen mit einem Backslash quoted sind und das vorher „blat“ konfiguriert wurde (ist nur ein Befehl absetzen).
$exclude_pools="FilesystemDaily,DatabasesDaily,DPDatabase,Vaulting";
$vault_pool="Vaulting";
$timeframe_start="60";
$timeframe_duration="60";
$mailrecipient="servicedesk\@data-protector.org";
$mailserver="127.0.0.1";
$mailsender="dataprotector\@data-protector.org";
$mailsubject="Media vaulting";
[wpdm_file id=4]
UPDATE Download: Es hatte sich ein kleiner Fehler bei der Bestimmung der Medien eingeschlichen, die Anzahl hatte nicht gestimmt – neuer Download nachfolgend.
[wpdm_file id=5]
Einsatzgebiet: Das Skript ist besonders für kleine bis mittelständige Umgebungen geeignet. In größeren Umgebungen empfehle ich das Konzept von HP Media Operations mal genauer anzuschauen. Alternativ können Sie auch ein Skript für größere Umgebungen bei mir erwerben, individuelle Wünsche können dabei berücksichtigt werden. Entsprechende Anfragen (mit dem Betreff: Off-Site Tape Vaulting) richten Sie bitte direkt an daniel-braun@data-protector.org
Donate: Und noch ein Wort am Ende… Wenn der Artikel und das Skript bei der täglichen Data Protector Administration weiterhilft und zum Einsatz kommt, so würde ich mich über eine Spende (nicht mehr wie 5 €) mittels PayPal freuen. Den Link findet ihr rechts oben…
Referenz: Und wen der Proxy ärgert… nachfolgend das komplette Skript. Wer es schlanker mag (das Skript kommt auch ohne die prints und mit der Hälfte der Zeilen aus), kann es gern anpassen…
#!perl -I../lib/perl -X -CA
### needed modules
use Omniback;
# Get DP folders
my $OMNIHOME = Omniback::CmnQuotePath($Omniback::PAN{'BASE'});
my $OMNIHOME_STR = $OMNIHOME;
$OMNIHOME_STR =~ s/\"//g;
my $OMNIBIN = "\"${OMNIHOME_STR}/bin\"";
# define the exclude pools, pool for vaulting, ...
$exclude_pools="Pool1,Pool2,PoolX";
# the pool mus exist in DP
$vault_pool="Vaulting";
# the time frame to retriev the session information
# assuming the script should run monday 8am, the timeframe of
# 60 month covers backups starting friday evening
$timeframe_start="60";
$timeframe_duration="60";
# the stuff needed to send a mail at the end of the script
# you need to download blat (mail program) search for blat at google
$mailrecipient="firstname.lastname\@domain.com"; # please remind the quoted (at)
$mailserver="192.168.2.10"; # the ip address of the smtp server
$mailsender="dataprotector\@domain.com"; # please remind the quoted (at)
$mailsubject="Media vaulting"; # Subject for the mail
print "Generating Report\n";
print "- skipping pools: $exclude_pools\n";
print "- target pool is: $vault_pool\n";
print "- start time: $timeframe_start\n";
print "- duration: $timeframe_duration\n";
print "\n\nNote: Ignore messages regarding \"No medium found\"\n\n";
@exec=`${OMNIBIN}/omnirpt -report list_sessions -timeframe $timeframe_start $timeframe_duration -tab`;
foreach (@exec)
{
chomp $_;
next if /^#/;
(@sessionid)=split(/\t/,$_,23);
push(@sessions,$sessionid[22]);
}
foreach (@sessions)
{
@exec=`${OMNIBIN}/omnidb.exe -session \"$_\" -media`;
$media = $exec[2];
chomp $media;
($media_short,$dummy)=split(/ /,$media,2);
if ($media_short ne "")
{
push(@media,$media_short);
}
}
@newmedia=&del_double(@media);
print "Summary\n";
@movedmedia=();
foreach (sort(@newmedia))
{
($media1,$dummy)=split(/ /,$_,2);
$media1 =~ s/\[//ig;
$media1 =~ s/\]//ig;
@exec=`${OMNIBIN}/omnimm -media_info \"$media1\" -detail`;
$pool = $exec[2];
chomp $pool;
chop $pool;
$pool =~ s/Pool name : //ig;
if ($exclude_pools =~ /$pool/)
{
print "skipping media: $media1 \n";
}
else
{
print "moving media: $media1 \n";
@exec=`${OMNIBIN}/omnimm -move_medium \"$media1\" $vault_pool`;
push(@moved_media,$media1);
}
}
$anzahl=@moved_media;
if ($anzahl gt 0)
{
$message="";
$message="Vaulting media:\n============================\n\n";
$message=$message."Following media were moved to pool: $vault_pool for vaulting.\n";
$message=$message."Media:\n";
foreach (@moved_media)
{
$message=$message.$_."\n";
}
$message=$message."\n\nMail generated by robot\n\n";
`${OMNIBIN}/blat -to $mailrecipient -f $mailsender -subject \"$mailsubject\" -body \"$message\"`;
}
exit;
sub del_double{
my %all;
grep {$all{$_}=0} @_;
return (keys %all);
}