Skip to content

Sharedfolders mit libvirt und KVM

Wenn man einen virtuellen Fileserver laufen lassen will, so bietet es sich an die Daten nicht in eine virtuelle Festplatte, also ein Imagefile zu schreiben sondern direkt ins Filesystem des Hosts, damit man die Daten auch lesen kann ohne den virtuellen Fileserver starten zu müssen.

Libvirt bietet dazu die Funktion „shared Folders“. Diese wird in Verbindung mit KVM erst am Version 0.8.5. unterstützt. Im Konfigurationstool virt-manager findet man diese Funktionalität unter dem Punkt „Filesystem“. Unter Debian Squeeze hatte ich allerdings, auch nach diversen Upgradeversuchen von libvirt, kvm und qemu, immernoch das Problem, dass virt-manager ausgegeben hat, dass diese Funktionalität nicht von dieser Version von qemu unterstützt werde.

Daraufhin habe ich beschlossen das Filesystem mithilfe von sshfs einzubinden. Alternativen dazu wären ein Samba-Server auf dem Hostsystem oder ein NFS-Server. Diese Konfiguration hätte allerdings in meinem Fall keinen Sinn gemacht, da es mir darum ging einen virtuellen Fileserver zu betreiben.

Um einen Pfad vom  Remotesystem mit Hilfe von sshfs im lokalen Dateisystem einzubinden muss man zuerst sshfs installieren mit dem Befehl:

apt-get install sshfs

Um nun einen Pfad zu mounten verwendet man den Befehl:

sshfs "username"@"remote_adresse":"pfad_im_remote_system" "pfad_im_lokalen_system"

Wie man erreicht, dass dieser Pfad automatisch gemountet wird, wird in diesem Blogeintrag sehr gut beschrieben.

Einrichten einer Netzwerkbrücke für KVM u. libvirt

Im letzten Teil ging es um die Installation von KVM und den entsprechenden Tools.
In diesem Eintrag geht es darum, wie angekündet, eine Netzwerkbrücke für KVM einzurichten um virtuelle Maschienen direkt an das physische Netzwerk anzubinden.

Das allgemeine Erstellen einer Netzwerkbrücke findet man im Debian Wiki. Für die Einrichtung einer Netzwerkbrücke mit KVM und libvirt eignet sich doch eher dieser Artikel im libvirt Wiki, da der Artikel im Debian Wiki sehr allgemein und für Anfänger ziemlich unverständlich ist. Im Folgenden werde ich das Einrichten einer Netzwerkbrücke für die Schnittstelle eth0 kurz beschreiben.

Zunächst muss man die Datei /etc/network/interfaces mit seinem Lieblingseditor bearbeiten.
Dort ersetzt man den Eintrag:

iface eth0 inet static

durch:

iface eth0 inet manual

Und entfernt eventuell weitere Angaben die darunter stehen wie z.B. address oder netmask.

Als nächsten fügt man den Eintrag für die Netzwerkbrücke die ich genauso wie im libvirt Wiki br0 nennen werde (Für alle weiteren Netzwerkbrücken, z.B. weil man auch das interface eth1 bridgen möchte, erstellt man jeweils einen neuen Eintrag)

 auto br0
 iface br0 inet static
         address <host ip>
         netmask 255.255.255.0
         network <netzwerk> #z.B. 192.168.208.0
         broadcast <broadcast addresse> #z.B. 192.168.208.255
         gateway <gateway addresse>
         bridge_ports eth0 #das zu bridgende interface
         bridge_stp on
         bridge_maxwait 0

Anschließend muss man noch das interface eth0 ausschalten und das interface br0 anschalten.

ifdown eth0
ifup br0

Um zu verhindern, dass die Pakete auf der Netzwerkbrücke gefiltert werden, was insbesondere für virtuelle Server wichtig ist muss man noch die Datei
/etc/sysctl.conf um folgende Zeilen erweitern:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Und um sicher zugehen dass die Regeln beim nächsten Start geladen werden noch zur Datei rc.local vor dem Eintrag exit 0 diese Zeile hinzufügen.

 /sbin/sysctl -p /etc/sysctl.conf

Und danach den Befehl ausführen um die Änderungen im laufenden System zuladen:

 /sbin/sysctl -p /etc/sysctl.conf

Virtualisierung mit Debian Squeeze auf einem IBM x3850 (Teil 2 – KVM)

Nachdem es im letzten Artikel um die Virtualisierung mit Xen ging, die bei mir aufgrund eines Biosbugs fehlgeschlagen ist, geht es in diesem Artikel um die Installation und Einrichtung des KVM Hypervisors. KVM steht für Kernel-based Virtual Machine die auf x86 Hardware mit Unterstützung von IntelVT oder AMD-V läuft. Wen der Geschwindigkeitsvergleich zwischen Xen und KVM interessiert findet hier eine interessante Untersuchung zu dem Thema.  Die Installation von KVM unter Debian Squeeze findet sich auch wieder im Debian Wiki  erklärt. Jedoch empfiehlt es sich meiner Ansicht die neueren Version von kvm, libvirt und qemu aus den Debian Backports zu installieren.

Um die Debian Backports zu nutzen muss man in der Datei /etc/apt/sources.list mit seinem Lieblingseditor (z.B. nano oder vim) die folgende Zeile hinzufügen:

deb http://backports.debian.org/debian-backports squeeze-backports main

Und dann die Paketlisten updaten mit:

apt-get update

Zur Installtion eines Pakets aus dem Backports verwendet man den Befehl:

 apt-get -t squeeze-backports install "paket-name"

Um KVM mit den notwendingen Tools zuinstallieren tippt man also nun:

apt-get -t squeeze-backports install qemu-kvm libvirt-bin

Damit sollte KVM fertig installiert sein. Im nächsten Blogeintrag geht um die Einrichtung einer Netzwerkbrücke um die virtuellen Maschienen direkt an das physische Netzwerk anzuschließen und im die Konfiguration und Einrichtung einer virtuellen Maschiene mit virt-manager.

Virtualisierung mit Debian Squeeze auf einem IBM x3850 Server (Teil 1 – XEN)

Nachdem es im letzten Artikel um die Installation von Debian Squeeze auf einem IBM x3850 8863 Server ging, geht es diesmal um die Installtion und Einrichtung eines Hypervisors für den Betrieb mehrerer virtueller Maschienen.

Zunächst fiel meine Wahl auf den bekannten XEN Hypervisor. Die Installation und Einrichtung von XEN unter Debian Squeeze über die Kommandozeile wird im Debian Wiki sehr gut beschrieben. Man benötigt im Grunde nicht mehr als die Pakete xen-linux-system, xen-qemu-dm-4.0, und zur Konfiguration: xen-tools.
Die Installation erfolgt ganz bequem über den Paketmanager mithilfe von:

apt-get install xen-linux-system xen-qemu-dm-4.0 xen-tools

Nach einem Neustart sollte man nun im Grubbootloader einen weiteren Eintrag der xen im Namen trägt vorfinden. Diesen wählt man nun aus um den Xen-Hypervisor und den dom0 zu starten.Xen schiebt sich zwischen Hardware und das Betriebssystem und nutzt das bestehende Linux als Domäne0 die zum Konfigurieren der andere Domänen (Virtuellen Maschienen) dient.

Danach sollte man seine normale Linuxkonsole wie vor der Installation vorfinden. Nur die Ausgaben während des Starts sind anders. Die Betonung lag in meinem Fall jedoch auf sollte. Nach längerer Recherche hat sich bei mir herausgestellt, dass ein ungefixter Bug im Bios der x3850 8864 Serie dazu führt, dass der Xen-Hypervisor sich nach der Meldung „scrubbing free ram“ aufhängt. Es gibt zwar verschiedene Foreneinträge, nach denen man diesen bekannten Bug durch verschiedene Einstellungen für das Memorysetting von dom0 beheben kann, die jedoch bei mir nicht funktioniert haben.

Deshalb habe ich mich entschieden auf den KVM – Hypervisor umzusteigen, dessen Installtion und Einrichtung in nächsten Artikel beschrieben wird.

Installation von Debian Squeeze auf einem IBM x3850 8864-3RG

Aus Interesse und dem Angebot, dass ich einen Platz in einem Serverrack bei einem Freund bekomme, habe ich mir vor kurzem einen IBM x3850 8864 Server zugelegt, den ich gebraucht auf itsco.de gekauft habe.

Das erste Problem stellt sich jedoch schon bei der Installation von Debian Squeeze heraus. Der integrierte Netzwerkchip, ein BMC5704 von Broadcom, der zwei Gigabitports bereitstellt wird nicht von der Installtionsroutine erkannt. Wer also eine Netzinstallation gewählt hat oder sich bei der Installation die neusten Packages ziehen will steht vor einem Problem. Der Hersteller Broadcom bietet zwar einen Linux Treiber zum selber compilen an, den ich bisher allerdings noch nicht zum Laufen bekommen konnte. Meine derzeitige Lösung besteht aus zwei Gigabit-PCI Karten die von Linux ohne Probleme erkannt werden.

Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.