Cloning mit dd und ssh

16 Aug 2016 Lesezeit: 2 Minuten

 Rechner von der Hardware zu virtuellen Maschinen umzufunktionieren ist ja mittlerweile eine ziemlich langweilige Aufgabe geworden. Wenn man das ganze allerdings anders herum probiert, dann braucht man zwar keine riesen Hilfsmittel, aber ein wenig Umdenken ist schon gefragt.

In diesem Beitrag  beschreibe ich, kurz und knapp, wie man aus einem eine Festplatte über das Netzwerk auf eine andere (auch gern ein Imagefile) clont.

Genutzt wird dd. Mit Hilfe von dd kann man einen Datenstrom von Blockdevices abgreifen und zum Beispiel in einer Datei speichern. Da es auf diesem Weg funktioniert, funktioniert es auch im Netzwerk mit Hilfe von SSH ziemlich einfach.

Wir greifen einfach die Daten von der Festplatte/dem Image ab

dd if=/mnt/storage/vm1234.raw

und geben es mit einer Pipe an SSH weiter

 | ssh root@111.222.333.444

wo wir es dann an die entgültige Stelle bewegen:

dd of=/dev/sda

Vollständig sieht das dann so aus:

 

dd if=/mnt/storage/vm1234.raw | ssh root@111.222.333.444 dd of=/dev/sda 

Auf diesem Weg kann man dann ziemlich einfach die Daten einer Festplatte/eines Images durch das Netz an einen anderen Ort bewegen, um dort dann zum Beispiel seinen neuen Rechner in Betrieb zu nehmen.

Geholfen hat:


LDAP Backupskript

24 Apr 2016 Lesezeit: ~1 Minute

Betreibt man einen LDAP Server, so will man sicherlich das ein oder andere Mal eine Sicherung machen. Ich möchte das ganz oft und da die Daten in der Regel ziemlich klein sind, kann ich das dann auch.

Dazu habe ich mir ein Skript gebaut, welches die Arbeit für mich erledigt. Es wird immer der komplette LDAP-Baum in eine LDIF Datei gesichert, sodass ich im Zweifelsfall alles schnell wieder rekonstruieren kann.

#!/bin/bash
DATE=`date +%Y%m%d-%H%M%S`
DST=/PATH/TO/BACKUP/
DEBUG=1
LDIF=SLAPBACKUP-$DATE.ldif

if [ $DEBUG -eq 1 ]

 then
  echo /usr/sbin/slapcat -l $DST$LDIF
  /usr/sbin/slapcat -l $DST$LDIF 2>/dev/null
 else
  /usr/sbin/slapcat -l $DST$LDIF 2>/dev/null
fi

find $DST -type f -mmin +60 -name "*.ldif" -exec bzip2 {} \;
find $DST -type f -mtime +14 -name "*.bz2" -exec rm -f {} \;

exit 0

Dieses Skript rufe ich dann mittels Crontab alle Stunde auf und sichere mir so kontinuierlich den Zustand des Verzeichnisses. Abgelegt wird immer eine neue Datei mit Zeitstempel. Ältere Dateien werden komprimiert und nach 60 Tagen gelöscht.

So mag ich das.


Bonding Netzwerk mit CentOS - the easy Way

13 Mär 2016 Lesezeit: 4 Minuten

Eigentlich ist es recht einfach. Man möchte zwei oder mehr Netzwerkkarten zu einer logischen Verbindung vereinen um beispielsweise eine höhere Ausfallsicherheit zu haben. Traditionell hat sich dazu der Begriff "Bonding" eingebürgert. Um ein solches Bonding einzurichten reicht natürlich nicht ein einheitlicher Weg. Ich mag es bekanntlich einfach und beschreibe hier den Weg, welchen ich unter CentOS Linux gehe.

Zuerst einmal muss man sich vor Augen halten, dass es sich bei einem Bonding um eine Softwarelösung handelt. Dementsprechend ist der Kernel bei einem Linux-System damit beschäftigt den gewünschten Modus umzusetzen. Eine ganz nette Übersicht findet sich hier.

In meinem Fall habe ich mich für die Ausfallsicherheit entschieden. Konkret verbinde ich zwei Netzwerkkarten logisch zu einer. Und weil das nicht reicht, setze ich noch eine Bridge drauf, um virtuelle Maschinen/Container direkt ins Netzwerk hängen zu können.

Um ein Bonding zu haben, benötigt man lediglich die folgenden Schritte auf einem CentOS 7.x System:

 

1. Laden des notwendigen Bondingmodul: 

modprobe --first-time bonding

2. Anlegen einer neuen Bonding-Konfiguration unter /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.150
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"

Wichtig hierbei ist, dass man sich ein wenig mit den unterschiedlichen Modi beschäftigt hat, welche einem das Bonding bietet:

Bonding Modus Bedeutung
0 Round-robin - es werden sequentiell die Datenpakete über die hinzugefügten Slaves verschickt. So erreicht man Ausfallsicherheit und Lastenverteilung.
1 Active-backup- Hierbei ist nur ein Netzwerksalve aktiv und alle anderen stehen auf Standby. Es wird auf Ausfallsicherheit gepocht.
2 XOR - Ausfallsicherheit und Lastenverteilung durch XOR Verknüpfung von Sende und Zieladresse (Macadressbasiert).
3 Broadcast - Fehlertoleranz durch einfaches versenden aller Daten auf allen angebundenen Netzwerkkarten.
4 IEEE 802.3ad dynamische Link Aggregation. Benötigt Unterstützung durch den Switch.
5 Adaptive Sende Lastenverteilung anhand der aktuellen Auslastung eines Salzes. Bei Ausfall übernimmt einer der Salmes die Mac-Adresse des anderen.
6 Adaptive Lastenverteilung anhand der aktuellen Auslastung eines Salzes. Bei Ausfall übernimmt einer der Salmes die Mac-Adresse des anderen.

3. Einbinden der zu nutzenden Netzwerkkarten mittels Konfigurationsdatei:

...
BOOTPROTO="none"
...
ONBOOT="yes"
MASTER=bond0
SLAVE=yes

Diese Zeilen müssen in der jeweiligen Datei unter /etc/sysconfig/network-scripts eingefügt bzw. ergänzt werden. Damit wird die Netzwerkkarte(n) bei einer erneuten Initialisierung dem Bonding zugeordnet.

4. Neustart der Netzwerkverbindung

systemctl restart network

5. Kontrolle der Verbindungen:

cat /proc/net/bonding/bond0

Dieser Schritt kann natürlich für eine beliebige Anzahl an Bonding-Verbindungen durchgeführt werden. Um nun Netzwerkadressen und Werte zu verändern braucht es nur noch das Bondinginginterface zu verändern. Nicht mehr die einzelnen Netzwerkkarten.

Was mich an dieser Lösung so glücklich macht ist die Autonomie und Einfachheit der zu Konfigurierenden Schritte. Ich kann mir Bonding-Templates definieren, welche ich dann einfach auf ein System deploye und anschließend Netzwerkkarten zuordne.

 

Seiten im Internet, die geholfen haben: