wordpress themes | total verfriemelt

Total Verfriemelt

am Rande des Wahnsinns

Posts Tagged ‘ backup ’

Die Geschichte mit dem ESXi Backupscript ist ja nicht neu und mich sowie viele andere User stört die fehlende Möglichkeit, Statusmails zu versenden.  Ich habe bisher ab und zu mal in die Backups geschaut und geguckt ob auch alles gesichert wurde. Da auf dem ESXi bei mir nur unkritische Systeme laufen, ist es nicht ganz so wild wenn mal ein Backup fehlt, nervig ist es dann aber trotzdem. Nun ist es mit Hausmitteln aber nicht möglich Mails zu versenden und ich denke VMware hat sich etwas dabei gedacht, die Busybox so extrem abzuspecken. Zum einen werden Sicherheitstechnische Gründe dahinter stecken und zum anderen soll der ESXi auch auf USB Sticks etc. passen. Also muss eine andere Lösung her und beim erforschen des Systems ist mir Python eingefallen. Leider hat VMware auch hier an sehr vielen Librarys gespart, so fehlt auch die wichtigste Lib für den Mailversand, die smtplib.


Python 2.5 (r25:51908, Mar  5 2007, 23:18:19)
[GCC 4.1.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import smtplib
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ImportError: No module named smtplib

Die Ausgabe zeigt schon, dass VMware die Version 2.5 einsetzt. Also habe ich eben diese Version von Python heruntergeladen und den enthaltenen Lib Ordner auf einen Datastore entpackt.

Link

[More]

Vor einiger Zeit habe ich hier das ghettoVCB Backup Script für den VMWare ESXi 3.x vorgestellt. Eine Version für den ESXi 4.0 gibt es dort ebenfalls. Da der ESXi bei einem Reboot sein Filesystem neu aufbaut sind alle Änderungen, die man z.B. für SSH Keybased Authentication oder Cronjobs vornimmt wieder verschwunden. Um die Einstellungen trotzdem persistent zu machen sind weitere Schritte notwendig.

Vorbereitungen auf dem ESXi.

Da auf dem ESXi von Haus aus kein SSH unterstützt wird, sollte dies erst einmal erledigt werden. Eine gute Anleitung dazu findet ihr hier.

Remotebackup von einem Linuxserver aus

SSH Keybased Auth – ESXi Server

Wir erstellen also das benötigte Verzeichnis /.ssh im Root  und darin das authorized_keys File.


mkdir /.ssh
touch /.ssh/authorized_keys
chmod 600 /.ssh
chmod 600 /.ssh/authorized_keys

SSH Keybased Auth – Linux Client

Auf dem Linux Client erstellen wir per ssh-keygen unseren Public Key, wobei wir passphrase leer lassen.


[root@gollum ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Den Inhalt der Datei /root/.ssh/id_rsa.pub kopieren wir in die Datei /.ssh/authorized_keys.
Der Login sollte jetzt ohne eine Eingabe vom Passwort funktionieren.

Damit das Ganze auch nach einem Reboot noch funktioniert, muss der Ordner ./ssh in die /bootbank/oem.tgz verfrachtet werden.

tar c - /.ssh | gzip > /bootbank/oem.tgz

Jetzt erstellen wir ein Script, welches auf dem 2. Linux Host via Cronjob ausgeführt werden soll und das Backup anstößt. (Bitte darauf achten, dass die ghettoVCB.sh und die backuplist.txt auf einem Datastore liegen, das diese sonst ebenfalls nach einem Reboot flöten gehen.)

Der Inhalt sollte in etwa wie folgt aussehen:

#!/bin/bash
ssh fb-vm-esxi01 << EOL #Verbindung zum ESXi aufbauen
/vmfs/volumes/datastore1/ghettoVCBi4.sh /vmfs/volumes/datastore1/backuplist.txt #Befehl der auf dem ESXi ausgeführt wird
exit #Logout vom ESXi
EOL

Zu guter Letzt können wir das Script auf dem Linuxserver in einen Cronjob packen.

Cronjobs auf dem ESXi direkt

Die Crontab des ESXi liegt unter /var/spool/cron/crontab/root, ist ebenfalls nicht persistent und auf 512 Zeichen limitiert. Wer mehr in die Crontab schreiben möchte, muss die oben erwähnte Vorgehensweise nutzen.

Wenn nur das Backup gestartet werden soll, reicht die ESXi Crontab aber noch aus.

Dazu öffnen wir die /etc/rc.local und fügen folgende Zeile hinzu:

echo "0 21 * * 5 /vmfs/volumes/datastore1/ghettoVCB4i.sh" >> /var/spool/cron/crontabs/root

Somit wird bei jedem Reboot der Eintrag in der Crontab wiederhergestellt.

Ein großes Dankeschön an die Kommentatoren, die mich auf die Rebootgeschichte aufmerksam gemacht haben.

Für die ESX 3.5 Server haben wir immer das VISBU Virtual infrastructure backup utility von Xtravirt eingesetzt. Das Script erstellt einen Snapshot von der virtuellen Maschine, kopiert die VM auf SMB, NFS oder lokales Storage und löscht das Snapshot anschließend wieder. Für den ESXi war dies Script leider nicht verfügbar, da es auf Konsolenbefehlen aufbaut die der ESXi nicht kennt.

Endlich habe ich etwas gefunden, das auf gleiche Art und Weise meine ESXi VMs sichert.

Link

Der erste Test läuft noch, sieht bisher aber ganz gut aus. Werde später mehr berichten.


Update:


Scheint wirklich sauber zu laufen. Die “Backup VM” per VI-Client wieder importiert und angestartet. Sie bootet sauber hoch und es sind auch sonst keine Fehler zu erkennen. Werde vorab erstmal die Music Player Daemon VM drin lassen und das Script nachts per Cron anstarten, wenn die Backuprotation ebenfalls sauber läuft gehts nach und nach in den Produktivbetrieb über…