{{tag>V virtualbox virtualisierung}} ====== Virtualisierung einer produktiven Linux-Musterlösung mit Virtualbox ====== [[virtualbox_produktiv2|Vereinfachtes Verfahren]] Diese Seite ist nicht fertig... ===== Planung ===== * Ubuntu Server als Basis * Oracle Virtualbox mit Extension-Pack * Musterlösungssystem soll auf LVM-Volumes installiert sein, die direkt an Virtualbox "durchgereicht" werden * IPCop darf in einer "normalen" VM laufen, deren HDs als vdi-Dateien auf dem Host liegen * WebGUI für Virtualbox zur einfachen Remote Administration ===== Status ===== * Ubuntu Server installiert * Virtualbox installiert * Virtualbox-WebGUI installiert * vboxtool installiert * Ein LVM-Volume als Platte für die Schulserver VM durchreichen * Alter Server wird auf die neuen LVMs kopiert * Backuplösung aus dem Host aufsetzen (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 [[https://www.virtualbox.org/wiki/Downloads|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 [[http://code.google.com/p/phpvirtualbox/|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.((Diese Anleitung ist hier abgeschrieben, übersetzt und angpasst: http://www.linuxhomeserverguide.com/server-config/phpVirtualBox.php)) ==== 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 [[http://code.google.com/p/phpvirtualbox/|Projektseite]] herunterladen und nach ''/var/www'' auspacken: cd /var/www sudo wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-.zip unzip phpvirtualbox-.zip mv phpvirtualbox-.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: * Datei herunterladen und auspacken * Das Skript ''vboxtool'' nach ''/usr/local/bin'' kopieren und ausführbar machen ''chmod 755 /usr/local/bin/vboxtool/'' * Das Skript ''vboxtoolinit'' nach ''/etc/init.d'' kopieren und das Startskript aktivieren mit ''update-rc.d vboxtoolinit defaults 99 10'' * Das Verzeichnis ''/etc/vboxtool/'' anlegen, darin die beiden Dateien ''vboxtool.conf'' und ''machines.conf'' 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: - Bei einer angestrebten Plattengröße von 2-3TB war mir das al vdi-Datei nicht recht geheuer - 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: {{ :version3:virtualisierung:virtualbox:auswahl_084.png |}} * Das LVM-Volume, das als Festplatte dient, bekommt bei der Installation eine Partitionstabelle verpasst, als wäre es eine Festplatte * Die Partitionen dieser virtuellen Festplatte werden nun der Volume Gruppe des virtualisierten Servers zugewiesen * Darauf wird der Server installiert ====== Snapshot und Backup ======