{{tag> }}
====== Server fungiert als KVM-Host für Firewall und weitere Clients ======
vgcreate vgserverroot /dev/sda1
* für die wurzel ''/'' -> ''lvcreate -L 20G -n root vgserverroot'' ((später in /etc/default/grub ''rootdelay=5'' einfügen, siehe [[http://www.thomas-krenn.com/de/wiki/GRUB_Bootloader_bootet_nicht_von_LVM_Volume|hier]], oder ''/boot'' als eigene Partition einfügen))
* swap - /dev/sda2 - 8GB
* LVM - vgserver - 900GB aus mehreren Partitionen (z.B. auf einem RAID5): vgcreate vgserver /dev/md0
* für ''/home'' -> ''lvcreate -L 400G -n home vgserver'' (wird quotiert)
* für ''/var'' -> ''lvcreate -L 250G -n var vgserver'' (wird quotiert)
* für ''/var/spool/cups'' -> ''lvcreate -L 10G -n varspoolcups vgserver'' (wird nicht quotiert)
* Platz für virtuelle Maschinen, z.B. IPFire, Coovachilli, eigenes Backup berücksichtigen
* für den ipfire - 20G (oder in eigener VG) ''lvcreate -L 20G -n ipfire vgserver''
* für einen client ''lvcreate -L 60G -n client01 vgserver''
===== Spezifische Netzwerkkonfiguration =====
* Zwei Netzwerkkarten für GRÜN und ROT müssen mindestens eingebaut sein, diese sind dem System als ''eth0'' und ''eth1'' bekannt.
* Auf dem Server zwei host-bridges einrichten((Quelle: https://wiki.ubuntu.com/KvmWithBridge oder http://wiki.debian.org/BridgeNetworkConnections)), wodurch ''eth0'' der Standardinstallation immer durch ''br0'' ersetzt werden muss. ''eth0'' sollte nicht mehr in ''/etc/network/interfaces'' konfiguriert werden:
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
bridge-ports eth0
bridge-stp off
bridge-maxwait 5
address 10.16.1.1
netmask 255.240.0.0
network 10.16.0.0
broadcast 10.31.255.255
gateway 10.16.1.254
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 10.16.1.1
dns-search linuxmuster-net.lokal
auto br1
iface br1 inet manual
bridge-ports eth1
bridge-stp off
bridge-maxwait 5
* Ziel ist, dass ''br0'' als Switch für alle Geräte im internen=grünen Netzwerk verwendet wird und ''br1'' nur von den Geräten, die im roten Netz eine IP bekommen sollen (z.b. IPFire)
* Alternativ könnte man die Bridge ''br1'' weglassen und stattdessen das PCI-device dem (dann einzigen) roten Client durchreichen((Quelle: [[http://libvirt.org/formatnetwork.html#elementsConnect|hier]] oder[[https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/chap-Virtualization_Host_Configuration_and_Guest_Installation_Guide-PCI_Device_Config.html|hier]]))
cp /etc/network/interfaces /etc/network/interfaces.kvm
sichern, da die Konfiguration von der linuxmuster-setup Routine überschrieben wird.
* die Zeilen ''
# qemu-img convert -p -O raw ipfire.img /dev/vgserver/ipfire
# virsh start ipfire
# ssh ipfire -p 222
[root@ipfire ~]# setup
===== Hinweis zum folgenden Setup des Servers =====
Beim Befehl ''linuxmuster-setup %%--%%first'' oder ''linuxmuster-setup %%--%%modify'' kann das [[dokumentation:handbuch:installation:server|Setup des Servers wie im Handbuch]] beschrieben nur dann funktionieren, wenn die oben eingerichteten Bridges auch als Netzwerk"karten" ausgewählt werden können.
* Ab linuxmuster.net 6.1 kann sofort ''br0'' als Interface für das interne (grüne) Netz ausgewählt werden.
* Für linuxmuster.net 6.0 muss wie untenstehend ein Skript bearbeitet werden.
{{ :anwenderwiki:virtualisierung:kvm:kvm_aufdemserver_bridges.png?nolink |}}
cp /etc/network/interfaces.kvm /etc/network/interfaces
die gesicherte Datei wiederhergestellt werden.
#################
# nic setup #
#################
discover_nics() {
n=0
# fetch all interfaces and their macs from /sys
for i in /sys/class/net/bond* /sys/class/net/eth* /sys/class/net/br* /sys/class/net/wlan* /sys/class/net/intern /sys/class/net/extern /sys/class/net/d
mz; do
===== Links =====
* Bezug auf [[anwenderwiki:vlan:kvm-virtuelles-netzwerk]]
====== Vorgehensweise Backup und Restore ======
Folgende Strategie wird beschrieben:
* Ein Backup des Servers wird mit Hilfe der Migration erstellt (welche automatisch auch die Firewalleinstellungen sichert).
* Ein Backup der virtuellen Maschinen (Firewall, Coovachilli, etc.) wird durch komplette Sicherung des Festplatten-Images erstellt.
Wenn eine Historie und Versionierung des Backups gewünscht ist, bietet sich an
* zusätzlich das Backup der Migration mit Hilfe von ''rsnapshot'' weiter zu sichern.
* zusätzlich eine Synchronisation des Filesystems jeder einzelnen virtuellen Maschine zu erstellen und dieses dann mit Hilfe von ''rsnapshot'' weiter zu sichern.
Während die Migration und die Images der VM eine Schnelle Disaster-Recovery Aktion erlauben, erlaubt die Synchronisation via rsnapshot Zugriff auf einzelne Dateien. Werden beide Verfahren angewandt, lässt sich eine schnelle Rekonstruktion eines (z.B. alten) Images durch eine Synchronisation eines tagesaktuellen "rsnapshots" aktualisieren.
===== Backup durch Migration und Komplettsicherung =====
Ein Backup des Servers durch Migration nach z.B. ''/srv/backup/server'' wird als Standardlösung im Handbuch beschrieben.
Hier wird beschrieben, wie man darüberhinaus über die komplette Sicherung der Festplatten-Images und der Konfiguration zu einem Backup mit schnellem Disaster-Recovery kommt:
* Die KVM-Konfiguration und Netzwerk-Konfiguration muss gesichert werden (nach: ''/srv/backup/server_manual'' rsync -aR --numeric-ids --delete /etc/libvirtd/qemu/ /srv/backup/server/
rsync -aR --numeric-ids --delete /etc/network/interfaces /srv/backup/server/
rsync -aR --numeric-ids --delete /etc/udev/rules.d/ /srv/backup/server/
* Die VM-Clients müssen heruntergefahren werden((es ginge auch ein Herunterfahren der Datenbanken innerhalb des Clients und dann ein Pausieren der VM, aber ich bin für Herunterfahren, das geht unkompliziert und die Datenbanken werden sauber geschlossen.))
* Snapshots in LVM erstellen und VM-Clients wieder hochfahren
* Von den Snapshots in LVM werden die Festplatten-Images der VM-Clients gesichert.
virsh shutdown ipfire
lvcreate -s /dev/vgserver/ipfire -L 2G -n ipfire-backup
virsh start ipfire
qemu-img convert -c -f raw -O qcow2 /dev/vgserver/ipfire-backup /srv/backup/ipfire.img
dd bs=512 count=1 if=/dev/vgserver/ipfire of=/srv/backup/ipfire-partitiontable
==== Recovery auf dem selben Rechner ====
* Entspricht der Neuinstallation wie auf dieser Seite beschrieben, nur dass die Konfiguration des Netzwerks und von KVM aus dem Backup kopiert werden können.
==== Recovery auf einem anderen Rechner ====
* Entspricht ebenfalls der Neuinstallation wie hier angegeben, es kann die Konfiguration des Netzwerks und von KVM aus dem Backup kopiert werden, nur sollten ''eth0'' und ''eth1'' entsprechend neu und korrekt den Bridges ''br0'' und ''br1'' zugeordnet werden.
===== Versionierung durch Backup auf Filesystemebene und rsnapshot =====
++++ Zum Aufklappen des Skript-Beispiels, bitte hier klicken |
* Annahme: Die zu sichernden KVM-Clients heißen "ipfire" und "chapman"
* Weitere Annahme: Alle LVMs haben nur eine Partition "/dev/sda1" auf der alles "/" sitzt, andernfalls muss man eben "so tun" als ob man weitere Server hätte.
* Die entsprechenden Verzeichnisse ''/srv/ipfire'' müssen erstellt werden.
* Man installiert rsnapshot auf dem Host und konfiguriert es so: (Achtung, TABs als Zwischenräume, Verzeichnisse immer mit / enden lassen)
# Ziel auf dem NAS/NFS/USB-Festplatte:
snapshot_root /srv/backup/rsnapshot/
no_create_root 1
retain daily 61
retain monthly 12
link_dest 1
backup /srv/ipfire ipfire/
backup /srv/chapman chapman/
* Ein Skript, dass jetzt alles nach ''/srv/backup/rsnapshot/'' sichert, falls es keine leeren Verzeichnisse gibt, wäre:
#!/bin/bash
function prep {
kvmclient=$1
partition=$2
lvcreate -s /dev/vgserver/${kvmclient} -L 200M -n ${kvmclient}-backup
kpartx -a /dev/vgserver/${kvmclient}-backup
mount /dev/mapper/vgserver-${kvmclient}--backup${partition} /srv/${kvmclient}
}
function pop {
kvmclient=$1
umount /srv/${kvmclient}
kpartx -d /dev/vgserver/${kvmclient}-backup
lvremove -f /dev/vgserver/${kvmclient}-backup
}
function check {
c=0
for i in "$@" ; do
if [ -z "$(ls -A /srv/$i 2>/dev/null)" ]; then
c=1
echo WARNING: Abbruch, weil /srv/$i leer erscheint
fi
done
[ $c -eq 1 ] && return 1 || return 0
}
prep ipfire 1
prep chapman 1
# check for empty dirs
check ipfire chapman
# backup using rsnapshot
if [ $? -eq 0 ]; then
rsnapshot daily
fi
# normalzustand herstellen
pop chapman
pop ipfire
++++