====== Virtualisierung ====== Virtualisierung bezeichnet Methoden, die es erlauben, Ressourcen eines Computers (insbesondere im Server-Bereich) zusammenzufassen oder aufzuteilen. Primäres Ziel ist, dem Benutzer eine Abstraktionsschicht zur Verfügung zu stellen, die ihn von der eigentlichen Hardware (Rechenleistung und Speicherplatz) isoliert. Eine logische Schicht wird zwischen Anwender und Ressource eingeführt, um die physischen Gegebenheiten der Hardware zu verstecken. Dabei wird jedem Gast (so gut es geht) vorgemacht, dass er - der alleinige Nutzer einer Ressource sei, - bzw. werden mehrere (heterogene) Hardwareressourcen zu einer homogenen Umgebung zusammengefügt. Die für den Anwender unsichtbare, transparente Verwaltung der Ressource ist dabei in der Regel die Aufgabe des Betriebssystems. Bei der [[wpde>Virtualisierung (Informatik)|Virtualisierung]] unterscheidet man - Hardwarevirtualisierung - Paravirtualisierung - Anwendungsvirtualisierung - und Betriebssystemvirtualisierung. Siehe * [[Konzepte der Virtualisierung]] Technisch betrachtet werden bei der Virtualisierung durch einen (idealerweise schlanken) Hypervisor die Gäste isoliert und die Ressourcen des Wirts verteilt. * **Typ-1-Hypervisor**: Der Hypervisor läuft direkt auf der Hardware und stellt den Gast-Systemen die Ressourcen zur Verfügung. Typische Beispiele sind [[xen:Xen]], VMware ESX(i) und Microsoft Hyper-V. Bei Xen liegt über dem Hypervisor eine privilegierte virtuelle Maschine zur Steuerung. * **Typ-2-Hypervisor**: Der Hypervisor läuft auf einem Betriebssystem, das die I/O-Ressourcen bereitstellt. Typisches Beispiel ist die [[kvm:KVM|Kernel-based Virtual Machine (KVM)]]. [[kvm:KVM]] unterstützt die Full Virtualization. Weiterhin unterstützen auch VirtualBox, VMware Player, VMware Workstation und VMware Server die Full Virtualization. ^ Produkt (Name) ^ Ansatz (Voll-, Para-, Betriebssystemvirtualisierung?) ^ Wirts-OS ^ Gast OS ^ Einschränkungen / Bemerkungen ^ | [[kvm:KVM]] | Voll- bzw. Paravirtualisierung (mit Teibern im Gast) | beliebiges Linux | beliebig | nicht Systeme alle mit paravirtualisierten Treibern beschleunigt, am besten mit Linux Wirt und Gast nutzbar | | [[xen:Xen]] | Para- und Vollvirtualisierung | Linux | egal | relativ schnell, Wirt braucht speziellen Linux-Kernel | | [[Virtualbox]] | Vollvirtualisierung | Windows, Linux | egal, | | ^ Produkt (Name) ^ Ansatz (Voll-, Para-, Betriebssystemvirtualisierung?) ^ Wirts-OS ^ Gast OS ^ Einschränkungen / Bemerkungen ^ | VMware Player Plus | Vollvirtualisierung ((mit xen-tools wird eine höhere Geschwindigkeit erreicht)) | [[linux:Linux]], [[Windows:Windows]] bei Server, eigenes [[linux:Linux]]-System bei ESX | nahezu beliebig ((vordefinierte Profile und Optimierung für bekannte OS)) | bei kommerzieller Verwendung muss upgrade gekauft bzw. das Produkt "workstation" benutzt werden | | MS Virtual PC | Vollvirtualisierung | [[Windows:Windows]] vor Win8 | ? | nur bei Versionen vor Win8 lauffähig, Nachfolger ist Hyper-V. Nur 16/32Bit-Gäste, bei Win7 als "[[http://www.microsoft.com/de-de/download/details.aspx?id=8002|XP-mode]]" bezeichnet | | [[Microsoft Hyper-V]] | Vollvirtualisierung | nur [[Windows:Windows]] Server | viele, wenige ausser Windows beschleunigt | nicht jede Windows-Version kann jede Hyper-V-Version verwalten, ohne Windows-Domäne nur mit workarounds | | OpenVZ / Virtuozzo | Betriebssystemvirtualisierung | Linux? | wie Host | wenn es auf wenig Ressourcenoverhead ankommt and Gäste keine Auswahl (oder Anpassungen) beim [[linux:Kernel]] brauchen | | wine | Anwendungsvirtualisierung (für Windows-Anwendungen unter [[linux:Linux]]) | [[linux:Linux]] | - | nicht alle Anwendungen, teilweise Anpassungen nötig | ===== Vorteile von Virtualisierung ===== * Server- (Hardware-) konsolidierung: man braucht nicht mehr so viel Hardware die evtl. nicht gut ausgelastet ist, kann aber trotzdem (scheinbar) hardwaremäßig trennen. * **Energieersparnis** durch bessere Ausnutzung vorhandener Hardware * **Flexibilisierung** durch * Trennung der Rollen (DHCP, ..) - von der physikalischen Hardware * bessere Ausnutzung/flexible Ressourcenzuteilung * **Erhöhung der Sicherheit** durch höhere Abschottung, allerdings ist es immer wieder gelungen durch Sicherheitslücken aus einer virtuellen Maschine auszubrechen. Man sollte daher nicht Sicherheitsmäßig sensible und unkritische Systeme auf einem Wirtssystem mischen. * Hardwareunabhängigkeit (fehlende Treiber sind kaum ein Problem) * **gleichzeitige Nutzung mehrerer Betriebssysteme** * Reduktion des Wartungsfensters (auch Erweiterung im laufenden Betrieb ohne Probleme möglich, physikalischer Zugriff auf den Rechner ist nicht erforderlich) * Hardwaredefekte werden durch die reduzierte Systemanzahl unwahrscheinlicher wenn dafür bessere Computer gekauft werden und ein redundanten Speichersystem im Hintergrund läuft. Dafür betriffen Ausfälle aber mehr Rechner gleichzeitig. * (Live-)Migration ((erfordert gemeinsames Speichersystem)) virtueller Maschinen : Bei Hardwarefehlern (Ausnahme: Festplatte) schnell die Rollen auf andere Server verschieben ===== Nachteile ===== * Komplexität steigt * für I/O intensive Anwendungen wegen zusätzlichem overhead wenig/nicht geeignet ===== Prozessorerweiterungen für Virtualisierung ===== :!: Bei manchen Rechnern ist die Hardwarevirtualisierung im BIOS deaktiviert. Diese muss dann natürlich erst aktiviert werden. * [[wpde>Intel VT]] Code-Name Vanderpool Prozessor-Flag "vmx" beim Aufruf von ''cat /proc/cpuinfo''. Liste entsprechender CPUs: [[http://www.intel.com/cd/products/services/emea/deu/319661.htm|Core2Duo]], [[http://www.intel.com/products/processor_number/index.htm|andere]])) * AMDs [[wpde>AMD-V]] Code-Name Pacifica Prozessor-Flag "svm" beim Aufruf von ''cat /proc/cpuinfo'' /proc/cpuinfo gibt ab [[linux:Kernel]] 2.6.16 die Informationen aus, allgemein (wenn man nicht Weiß ob Intel oder AMD) muss folgender Befehl eine Ausgabe geben: egrep '^flags.*(vmx|svm)' /proc/cpuinfo * FIXME nested_tables etc. ===== Lösungen ===== ==== allgemeine Links ==== * [[http://app.engage.redhat.com/e/er.aspx?s=1795&lid=3838&elq=a3bc1b29e5634bceb27182007c14a171|eBook Virtualization for Dummies]] * [[http://www.tecchannel.de/server/virtualisierung/1776255/fehler_virtualisierung/index.html|Fehler bei der Server- und Storage-Virtualisierung vermeiden]] ==== VMware ==== zu [[VMware]] gibt aufgrund des Umfangs eine eigene Seite. ==== VirtualBox ==== :!: Neu * [[http://www.howtoforge.com/virtualbox_fedora_centos_opensuse|VirtualBox On FC6 / CentOS 4 / OpenSuSE 10.2]] * [[http://www.heise.de/newsticker/meldung/83680|Open-Source-Konkurrenz für VMware und Co.]] * [[http://www.heise.de/open/artikel/83678|VirtualBox - PC-Virtualisierung unter GPL]] * [[http://www.tecchannel.de/client/linux/465533/|Praxistest: VirtualBox – Open-Source-Konkurrenz zu VMware und Co.]] ==== Microsoft Virtual PC ==== [[http://www.microsoft.com/windows/virtualpc/default.mspx|Virtual PC]] [[http://www.heise.de/newsticker/meldung/71583|Microsoft gibt Virtual Server kostenlos ab]] ==== Microsoft Hyper-V ==== [[https://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/19/time-synchronization-in-hyper-v.aspx?Redirected=true|Time Synchronization in Hyper-V]] ==== OpenVZ / Virtuozzo ==== OpenVZ4 gehört zu den Betriebssystemvirtualisierungsprodukten, partitioniert also das Wirtsbetriebssystem und nutzt dieses auch in Teilen mit. Entstanden aus dem kommerziellen Virtualisierungsprodukt Virtuozzo von SWsoft, ermöglicht OpenVZ die Virtualisierung von Linux. SWsoft hat aus OpenVZ ein Community-Projekt gemacht, welches auf ein stetig wachsendes Interesse stößt. OpenVZ ist quelloffen, kostenfrei und steht unter der [[oss:opensource lizenzen#GNU General Public License (GPL)|GPL]] bzw. QPL5 . Ziel dieses Projektes ist es, Bestandteil des offiziellen Linux-Kernels zu werden. Einen Teilerfolg hat OpenVZ schon erzielt, da OpenVZ zukünftig in der Distribution Debian6 enthalten sein wird. ([[http://www.opensourcejahrbuch.de/download/jb2007|Quelle]]) * [[http://www.heise.de/newsticker/meldung/85485/|Virtualisierungssoftware OpenVZ: Umziehen ohne abzuschalten]] * [[http://www.linuxtoday.com/high_performance/2006030902326OSHESV|LinuxPlanet: OpenVZ Delivers Easy Virtualization]] * [[http://www.linuxtoday.com/infrastructure/2006032100426OSDBHL|HowtoForge: Building A Virtual Private Server (VPS) With Debian Sarge And OpenVZ]] * [[http://www.howtoforge.com/debian_etch_openvz|OpenVZ On Debian Etch For Webservers]] * [[http://www.heise.de/newsticker/meldung/89395|Virtualisierungslösung OpenVZ als Live-CD erhältlich]] * [[http://www.linux-magazin.com/videos/virtuozzo_os_level_virtualization_and_effective_management_of_virtualized_data_centers|Vortrag: Virtuozzo – OS-Level Virtualization and effective management of Virtualized Data Centers]] ==== Linux-vServer ==== Das [[http://linux-vserver.org/|Linux-VServer-Projekt]] bemüht sich um eine effiziente Virtualisierung (wenig overhead). Es wird als Patchset angewendet und benutzt viele bekannte (und ausgereifte) Technologien. [[http://www.linux-magazin.com/videos/linux_vserver_resource_efficient_operating_system_level_virtualization| Vortrag: Linux-VServer - Resource Efficient Operating System-Level Virtualization]] :!: nicht zu verwechseln mit [[http://www.linuxvirtualserver.org|Linux Virtual Server (load-balancing)]] ==== Wine ==== [[http://www.winehq.com/|Wine]] bietet eine Virtualisierung von [[windows:Windows]]-Anwendungen. Dies passiert duch eine in den meisten Fällen ausreichende Abbildung von Windows-APIs. Die Einstellungen werden in ~/.wine abgelegt und Programme startet man nach den Schema wine C:\\Programme\\ProgrammNAME\\NAME.exe * [[http://frankscorner.org/|Running Windows Applications und Games]] * [[http://www.apcmag.com/8034/google_behind_photoshops_new_linux_compatibility|Google behind Photoshop's new Linux compatibility]] ==== KVM (Kernel-based Virtual Machine for Linux) ==== [[http://kvm.sourceforge.net/|KVM (Kernel-based Virtual Machine for Linux)]] basiert auf einem speziellen KVM-Modul das in einem unmodifizierten Kernel läuft. Dabei bildet das KVM-Modul eine Brücke zwischen den Hardware-virtualisierungsfunktionen moderner CPUs und der freien Emulation/Virtualisierung QEMU. Bisher allerdings noch im Alpha-Stadium. ==== QEMU ==== Eigene Seite: [[software:Qemu]]. ==== Bochs ==== [[http://bochs.sourceforge.net/|Bochs]] ==== Pear (Mac Emulation) ==== FIXME ==== Xen ==== Eigene Seite: [[xen:Xen]].