Inhaltsverzeichnis

, ,

Virtualisierung einer produktiven Linux-Musterlösung mit Virtualbox

Vereinfachtes Verfahren

Diese Seite ist nicht fertig…

Planung

Status

(Anleitungen folgen nach und nach…)

Installation Ubuntu Server

Nachdem man sich das entsprechende Iso besorgt hat, installiert man einen „nackten“ Server. Partitionierung habe ich so erledigt:

/dev/sda1        300MB   /boot

Rest als LVM:
/dev/mapper/root  10G    /
/dev/mapper/swap  10G    swap
/dev/mapper/data  1T     /data

Der freie Platz bleibt erst mal frei.

Anschließend habe ich das Meta-Paket xubuntu-desktop installiert, das spült eine XFCE4 Oberfläche auf das Gerät, so kann man am erät mit der Virtualbox GUI bequem arbeiten.

Damit mir der network-manager nicht immer in die Quere kommt, fliegt der anschließend raus: apt-get remove network-manager. Die Einstellungen für die 6 Schnittstellen werden in der Datei /etc/network/interfaces von Hand vorgenommen. So bekommt die aministrative Schnittstelle folgende Paramter:

auto eth0
iface eth0 inet static
      address 10.16.1.245
      netmask 255.240.0.0
      network 10.16.0.0
      broadcast 10.31.255.255
      gateway 10.16.1.254

Als Standardbenutzer habe ich bei der Installation einen Benutzer hostadmin angelegt, der damikt auch die bei Ubuntu üblichen sudo-Rechte erhalten hat.

Installation Virtualbox

Virtualbox habe ich über das Oracle Repo installiert, die folgende Zeile in die /etc/apt/sources.list

# Oracle Virtualbox Repo
deb http://download.virtualbox.org/virtualbox/debian precise contrib

dann den Repo-Schlüssel importieren

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key

schließlich mit apt-get install virtualbox Virtualbox installieren. Auf der Oracle-Seite kann man dann noch den Extension-Pack hrunterladen und durch „öffen mit Virtualbox“ direkt installieren.

Wichtig: Man muss nun noch sicherstellen, dass der hostadmin-Benutzer in der Gruppe vboxusers ist.

Virtualbox Web-GUI installieren

Mit phpvirtualbox gibt es eine nette Webgui für Virtualbox, mit der man sich im Extremfall die Installation eines Xservers auf dem Virtualisierungshost ersparen könnte und Virtualbox gänzlich „headless“ bedienen kann.1)

vboxweb Konfigurieren

phpvirtualbox benötigt den bei Virtualbox enthaltenen vboxweb-Dienst, dieser muss zunächst konfiguriert werden.

Zuerst muss man die Datei /etc/default/virtualbox anlegen und dort den User eintragen, der auf dem Host ZUgriff auf die virtuellen Maschinen haben soll - bei uns also der hostadmin

sudo nano /etc/default/virtualbox

dort einfügen

VBOXWEB_USER=vboxuser

Datei speichern. Es darf natürlich auch ein beliebiger anderer Editor verwendet werden… Anschließend kann man mal schauen, ob der Dienst startet:

sudo /etc/init.d/vboxweb-service start

sollte ohne Fehlermeldungen mit

 * Starting VirtualBox web service                                      
  * done.

quittiert werden. Wenn das soweit klappt, sollte man den Dienst noch so einrichten, dass er automatisch beim Booten des Servers startet:

 # Entfernt alle evtl vorhandenen Startlinks
 update-rc.d -f vboxweb-service remove
 # Legt die Startlinks neu an
 update-rc.d -f vboxweb-service defaults

phpvirtualbox Installieren

Wie der Name bereits vermuten lässt, benötigt die Web-GUI phpvirtualbox einen Webserver und PHP:

sudo apt-get install apache2 php5 unzip

Dann muss man die passende Version von phpvirtualbox von der Projektseite herunterladen und nach /var/www auspacken:

cd /var/www 
sudo wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-<VERSION>.zip
unzip phpvirtualbox-<VERSION>.zip
mv phpvirtualbox-<VERSION>.zip phpvirtualbox

Jetzt kopiert man die Beispielkonfiguration und passt diese an:

sudo mv /var/www/phpvirtualbox/config.php-example /var/www/phpvirtualbox/config.php
sudo nano /var/www/phpvirtualbox/config.php

Man muss nur Benutzername und Passwort anpassen:

var $username = 'vboxuser';
var $password = 'das unix passwort fuer vboxuser';

vboxtool installieren

Um virtuelle Maschinen beim Stoppen und Starten des Hosts automatisch mit zu Stoppen und zu Starten, habe ich noh die beiden vboxtool-Skripte installiert: http://vboxtool.sourceforge.net/

Die Installation geht nach Anleitung problemlos vonstatten:

Die Datei /etc/vboxtool/vboxtool.conf muss den Namen des Benutzers enthalten, unter dessen Kennung die virtuellen Maschinen laufen (derselbe wie beim Webfrontend oben):

vbox_user='vboxuser'

Die Datei /etc/vboxtool/machines.conf enthält die Namen der virtuellen Maschinen, die beim Stoppen und Starten des Hosts mitgestoppt und gestartet werden sollen. Sieht bei mir so aus:

ernest
ipcop
albert

Kniffliger wirds, wenn die Maschinennamen Leerzeichen enthalten oder man den RDP Port oder Port-Weiterleitungen dort konfigurieren möchte, da verweise ich auf die vboxtool Doku.

Von nun an werden diese drei Maschinen beim Shutdown des Hosts gespeichert, beim Start wieder gestartet, man muss sich also nicht mehr darum kümmern, dass nach einem Reboot alles wieder funktioniert.

LVM Volume als Festplatte an den virtuellen Server durchreichen

Ich habe mich aus zwei Gründen für die Verwendung eines LVM-Volumes anstelle einer vdi-Datei als Festplatte der Servermaschine entschieden:

  1. Bei einer angestrebten Plattengröße von 2-3TB war mir das al vdi-Datei nicht recht geheuer
  2. Ich möchte Backups des virtualisierten Servers vom Host aus machen, indem ich einen Snapshot des LVM erzeuge und dessen Inhalt dann sichere. So muss die virtuelle Servermaschine für das Backup nicht gestoppt werden.

LVM anlegen

Zunächst habe auf dem Host ein LVM-Volume angelegt, das nachher an den virtualisierten Server durchgereicht werden soll.

 lvcreate -L 1.7T -n albert_disk lise # das 1,7TB große LVM Volume heißt 'albert_disk' und befindet sich in der Volume Group 'lise'

vmdk-Datei anlegen und für virtuelle Maschinen zugänglich machen

Zuerst habe ich eine virtuelle Maschine schulserver erzeugt, mit einer kleinen vdi-Disk, so dass das Virtualbox-Verzeichnis der Maschine bereits angelegt wurde. Dann wird die virtuelle Festplatte erzeugt:

VBoxManage internalcommands createrawvmdk -filename /data/vboxuser/virtualbox/schulserver/lvm_albert_root.vmdk -rawdisk /dev/lise/albert_root

Dieser Befehl erzeugt eine vmdk-Datei, die gewissermaßen als Verweis auf das LVM-Volume dient, welches letztlich in der virtuellen Maschine als Festplatte dienen soll. Diese Datei muss dem Benutzer gehören, unter dessen ID die virtuellen Maschinen ausgeführt werden.

chown vboxuser: /data/vboxuser/virtualbox/schulserver/lvm_albert_root.vmdk

Das reicht jedoch nicht aus, da dem Benutzer vboxuser derzeit der direkte Zugriff auf das LVM-Volume (/dev/lise/albert_disk) verwehrt ist. Damit das noch klappt, muss man den vboxuser noch in die Gruppe disk aufnehmen.

usermod -a -G disk vboxuser

Jetzt kann man in Virtualbox diese vmdk-Datei als Festplatte für die virtuelle Maschine auswählen.

Installation und Hintergrundinfo

Das LVM-Volume des Hosts wird nun also als Festplatte an den virtuellen Server „durchgereicht“. Nun installiert man den Server ganz normal von einem openLML-iso und wählt dabei möglichst die Option „LVM einrichten“ aus. Das ergibt ein LVM auf einem LVM:

Snapshot und Backup

1)
Diese Anleitung ist hier abgeschrieben, übersetzt und angpasst: http://www.linuxhomeserverguide.com/server-config/phpVirtualBox.php