Index: head/de_DE.ISO8859-1/books/handbook/virtualization/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/virtualization/chapter.xml +++ head/de_DE.ISO8859-1/books/handbook/virtualization/chapter.xml @@ -5,7 +5,7 @@ $FreeBSD$ $FreeBSDde: de-docproj/books/handbook/virtualization/chapter.xml,v 1.14 2010/07/03 14:29:30 jkois Exp $ - basiert auf: r41062 + basiert auf: r44406 --> Virtualisierung @@ -13,6 +13,15 @@ MurrayStokelyBeigetragen von + + + Allan + Jude + + bhyve Abschnitt beigetragen von + + + OliverPeterÜbersetzt von @@ -1160,8 +1169,10 @@ - - &os; als Host + + &os; als Host mit + <application>Virtualbox</application> + BenedictReuschlingÜbersetzt von ChristophSold @@ -1339,12 +1350,354 @@ Berechtigungen für diese Geräte werden mit folgenden Zeilen in /etc/devfs.conf konfiguriert: - perm cd* 0600 + perm cd* 0660 perm xpt0 0660 perm pass* 0660 &prompt.root; service devfs restart + + + + + &os; als Host mit + <application>bhyve</application> + + + + + Björn + Heidotting + + Übersetzt von + + + + + Beginnend mit &os; 10.0-RELEASE ist + bhyve, ein + BSD-lizensierter Hypervisor, Teil des + Basissystems. Dieser Hypervisor unterstützt eine Reihe von + Gastbetriebssystemen, darunter &os;, OpenBSD und viele &linux; + Distributionen. Derzeit unterstützt + bhyve nur eine serielle Konsole und + kann keine graphische Konsole emulieren. + bhyve verwendet Offload-Funktionen + von neueren CPUs, um manuelle + Speicherzuordnungen und Anweisungen zu vermeiden. + + Das Design von bhyve erfordert + einen Prozessor, der &intel; Extended Page Tables + (EPT), &amd; Rapid Vitualization + Indexing (RVI) oder Nested Page Tables + (NPT) unterstützt. &os;- oder + &linux;-Gastsysteme mit mehr als einer vCPU + benötigen VMX unrestricted mode support + (UG). Die meisten neueren Prozessoren, + speziell &intel; &core; i3/i5/i7 und &intel; &xeon; + E3/E5/E7, unterstützen diese Funktionen. Unterstützung für + UG wurde mit Intel's Westmere + Mikroarchitektur eingeführt. Eine vollständige Liste der + &intel;-Prozessoren mit EPT-Unterstützung + finden Sie unter . + RVI wird seit der dritten Generation der + &amd.opteron;-Prozessoren (Barcelona) unterstützt. Um zu sehen + ob der Prozessor bhyve unterstützt, + prüfen Sie die Ausgabe von dmesg oder + /var/run/dmesg.boot. Für &amd;-Prozessoren + suchen Sie in der Zeile Features2 nach + POPCNT. Für &intel;-Prozessoren suchen Sie + in der Zeile VT-x nach EPT + und UG. + + + Vorbereitung des Hosts + + Der erste Schritt bei der Erstellung einer virtuellen + Maschine in bhyve ist die + Konfiguration des Host-Systems. Laden Sie zunächst das + bhyve Kernelmodul: + + &prompt.root; kldload vmm + + Erstellen Sie ein tap-Gerät, um + dieses mit der Netzwerk-Schnittstelle der virtuellen Maschine + zu verbinden. Damit sich die Schnittstelle mit dem + Netzwerk verbinden kann, müssen Sie zusätzlich eine + Bridge-Schnittstelle erzeugen, bestehend aus dem + tap-Gerät und der physikalischen + Schnittstelle. In diesem Beispiel wird die physikalische + Schnittstelle igb0 verwendet: + + &prompt.root; ifconfig tap0 create +&prompt.root; sysctl net.link.tap.up_on_open=1 +net.link.tap.up_on_open: 0 -> 1 +&prompt.root; ifconfig bridge0 create +&prompt.root; ifconfig bridge0 addm igb0 addm tap0 +&prompt.root; ifconfig bridge0 up + + + + Ein &os;-Gastsystem erstellen + + Erzeugen Sie eine Datei, die als virtuelle Festplatte + für das Gastsystem verwendet wird. Geben Sie die Größe und + den Namen der virtuellen Festplatte an: + + &prompt.root; truncate -s 16G guest.img + + Laden Sie ein Installationsabbild von &os;: + + &prompt.root; fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.2/FreeBSD-10.2-RELEASE-amd64-bootonly.iso +FreeBSD-10.2-RELEASE-amd64-bootonly.iso 100% of 230 MB 570 kBps 06m17s + + &os; enthält ein Beispielskript um eine virtuelle Maschine + in bhyve auszuführen. Das Skript + wird die virtuelle Maschine starten und sie in einer Schleife + ausführen. Sollte die virtuelle Maschine abstürzen, wird sie + vom Skript automatisch neu gestartet. Das Skript akzeptiert + einige Optionen, um die Konfiguration der virtuellen Maschine + zu kontrollieren: bestimmt die Anzahl der + virtuellen CPUs, + begrenzt den verfügbaren Speicher des Gastsystems, + bestimmt das verwendete + tap-Gerät, gibt das + zu benutzende Festplattenabbild an, sagt + bhyve dass es von + CD booten soll und + bestimmt das CD-Abbild. Der letzte + Parameter ist der Name der virtuellen Maschine. Dieses + Beispiel startet die virtuelle Maschine im + Installationsmodus: + + &prompt.root; sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img -i -I FreeBSD-10.0-RELEASE-amd64-bootonly.iso guestname + + Die virtuelle Maschine wird starten und das + Installationsprogramm ausführen. Nachdem das System in der + virtuellen Maschine installiert ist, werden Sie gefragt, ob + eine Shell gestartet werden soll. Wählen Sie + Yes. Es muss noch eine kleine Änderung + vorgenommen werden, damit das System mit einer seriellen + Konsole startet. Bearbeiten Sie + /etc/ttys und ersetzen Sie die vorhandene + ttyu0-Zeile durch: + + ttyu0 "/usr/libexec/getty 3wire" xterm on secure + + + Beginnend mit &os; 9.3-RELEASE und 10.1-RELEASE + wird die Konsole automatisch konfiguriert. + + + Starten Sie die virtuelle Maschine neu. Ein Neustart der + virtuellen Maschine wird bhyve + beenden, aber da das vmrun.sh-Skript in + einer Schleife läuft, wird bhyve + automatisch neu gestartet. Wenn dies passiert, wählen Sie die + Option Reboot im Bootloader-Menü, um die + Schleife zu unterbrechen. Anschließend kann das Gastsystem + von der virtuellen Festplatte gestartet werden: + + &prompt.root; sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img guestname + + + + Ein &linux;-Gastsystem erstellen + + Um andere Betriebssysteme als &os; zu booten, muss + zunächst der Port sysutils/grub2-bhyve + installiert werden. + + Als nächstes erzeugen Sie eine Datei, die das Gastsystem + als virtuelle Festplatte verwenden kann: + + &prompt.root; truncate -s 16G linux.img + + Der Start einer virtuellen Maschine mit + bhyve ist ein zweistufiger Prozess. + Zuerst muss ein Kernel geladen werden, dann kann das + Gastsystem gestartet werden. Der &linux;-Kernel wird mit + sysutils/grub2-bhyve geladen. Erstellen + Sie eine device.map, damit + grub die virtuellen Geräte den + Dateien auf dem Hostsystem zuordnen kann: + + (hd0) ./linux.img +(cd0) ./somelinux.iso + + Benutzen Sie sysutils/grub2-bhyve um + den &linux;-Kernel vom ISO-Abbild zu + laden: + + &prompt.root; grub-bhyve -m device.map -r cd0 -M 1024M linuxguest + + Damit wird grub gestartet. + Wenn die Installations-CD eine Datei namens + grub.cfg enthält, wird ein Menü + angezeigt. Wenn nicht, müssen die Dateien + vmlinuz und initrd + manuell geladen werden: + + grub> ls +(hd0) (cd0) (cd0,msdos1) (host) +grub> ls (cd0)/isolinux +boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest +splash.jpg TRANS.TBL vesamenu.c32 vmlinuz +grub> linux (cd0)/isolinux/vmlinuz +grub> initrd (cd0)/isolinux/initrd.img +grub> boot + + Nun, da der &linux;-Kernel geladen ist, kann das + Gastsystem gestartet werden: + + &prompt.root; bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./linux.img \ + -s 4:0,ahci-cd,./somelinux.iso -l com1,stdio -c 4 -m 1024M linuxguest + + Das System wird booten und das Installtionsprogramm + starten. Starten Sie die virtuelle Maschine nach der + Installation des Betriebssystems neu. Dies führt auch dazu, + dass bhyve beendet wird. Die + Instanz der virtuellen Maschine muss zerstört werden, bevor + sie erneut in Betrieb genommen werden kann: + + &prompt.root; bhyvectl --destroy --vm=linuxguest + + Nun kann das Gastsystem direkt von der virtuellen + Festplatte gestartet werden. Laden Sie den Kernel: + + &prompt.root; grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest +grub> ls +(hd0) (hd0,msdos2) (hd0,msdos1) (cd0) (cd0,msdos1) (host) +(lvm/VolGroup-lv_swap) (lvm/VolGroup-lv_root) +grub> ls (hd0,msdos1)/ +lost+found/ grub/ efi/ System.map-2.6.32-431.el6.x86_64 config-2.6.32-431.el6.x +86_64 symvers-2.6.32-431.el6.x86_64.gz vmlinuz-2.6.32-431.el6.x86_64 +initramfs-2.6.32-431.el6.x86_64.img +grub> linux (hd0,msdos1)/vmlinuz-2.6.32-431.el6.x86_64 root=/dev/mapper/VolGroup-lv_root +grub> initrd (hd0,msdos1)/initramfs-2.6.32-431.el6.x86_64.img +grub> boot + + Starten Sie die virtuelle Maschine: + + &prompt.root; bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 \$ -s 3:0,virtio-blk,./linux.img -l com1,stdio -c 4 -m 1024M linuxguest + + &linux; wird jetzt in der virtuellen Maschine gestartet + und präsentiert Ihnen vielleicht einen Anmeldeprompt. Sie + können sich anmelden und die virtuelle Maschine benutzen. + Wenn Sie fertig sind, starten Sie die virtuelle Maschine neu, + um bhyve zu verlassen. + Anschließend zerstören Sie die Instanz der virtuellen + Maschine: + + &prompt.root; bhyvectl --destroy --vm=linuxguest + + + + Verwendung von <acronym>ZFS</acronym> mit + <application>bhyve</application>-Gastsystemen + + Wenn auf dem Host-Rechner ZFS + eingerichtet ist, können Sie ZFS-Volumes + anstelle eines Festplattenabbilds verwenden. Dies kann + erhebliche Leistungsvorteile für das Gastsystem mit sich + bringen. Ein ZFS-Volume kann wie folgt + erstellt werden: + + &prompt.root; zfs create -V16G -o volmode=dev zroot/linuxdisk0 + + Geben Sie das ZFS-Volume beim Start + der virtuellen Maschine an: + + &prompt.root; bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s3:0,virtio-blk,/dev/zvol/zroot/linuxdisk0 \ + -l com1,stdio -c 4 -m 1024M linuxguest + + + + Konsolen in der virtuellen Maschine + + Es ist vorteilhaft, die + bhyve-Konsole mit einem Werkzeug + wie sysutils/tmux oder + sysutils/screen zu bedienen. Damit ist es + leicht, die Konsole zu verbinden oder zu trennen. Es ist auch + möglich, die Konsole als Nullmodem-Gerät zu nutzen, auf das + Sie mit cu zugreifen können. Laden Sie + dazu das nmdm Kernelmodul und ersetzen + Sie mit . Die + /dev/nmdm-Geräte werden bei Bedarf + automatisch erstellt, jeweils paarweise, entsprechend den + beiden Enden eines Nullmodemkabels + (/dev/nmdm0A und + /dev/nmdm0B). Weitere Informationen + finden Sie in &man.nmdm.4;. + + &prompt.root; kldload nmdm +&prompt.root; bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./linux.img \ + -l com1,/dev/nmdm0A -c 4 -m 1024M linuxguest +&prompt.root; cu -l /dev/nmdm0B +Connected + +Ubuntu 13.10 handbook ttyS0 + +handbook login: + + + + Virtuelle Maschinen verwalten + + Für jede virtuelle Maschine wird unterhalb von + /dev/vmm ein Gerätename erzeugt. + Dadurch kann der Administrator einfach feststellen, welche + virtuellen Maschinen zur Zeit ausgeführt werden: + + &prompt.root; ls -al /dev/vmm +total 1 +dr-xr-xr-x 2 root wheel 512 Mar 17 12:19 ./ +dr-xr-xr-x 14 root wheel 512 Mar 17 06:38 ../ +crw------- 1 root wheel 0x1a2 Mar 17 12:20 guestname +crw------- 1 root wheel 0x19f Mar 17 12:19 linuxguest +crw------- 1 root wheel 0x1a1 Mar 17 12:19 otherguest + + Mit Hilfe von bhyvectl kann eine + virtuelle Maschine zerstört werden: + + &prompt.root; bhyvectl --destroy --vm=guestname + + + + Persistente Konfiguration + + Um das System so zu konfigurieren, dass + bhyve-Gastsysteme beim Booten + gestartet werden, muss die folgenden Konfiguration in den + jeweiligen Dateien vorgenommen werden: + + + + <filename>/etc/sysctl.conf</filename> + + net.link.tap.up_on_open=1 + + + + <filename>/boot/loader.conf</filename> + + vmm_load="YES" +nmdm_load="YES" +if_bridge_load="YES" +if_tap_load="YES" + + + + <filename>/etc/rc.conf</filename> + + cloned_interfaces="bridge0 tap0" +ifconfig_bridge0="addm igb0 addm tap0" + + +