Schlüsseltechnologie· Staffel 1· Folge 23
STP023: Virtualisierung, Container, Sandboxing, Simulation/Emulation
Donnerstag, 4. August 2022 · 1 h 02
Kapitelklicken springt direkt hin
Shownotes
<p>Die Sendung mit der Quersumme 5 beschäftigt sich damit, wie Computer so
tun können, als wären sie andere Computer. Außerdem beginnt Xyrill
damit, sein Mediensyndikat aufzubauen.</p><h2>Shownotes</h2>Laut Wikipedia:</p>
<blockquote>
<p><a href="de.wikipedia.org/wiki/Virtualisierung_(Informa…)">Virtualisierung</a> bezeichnet in der Informatik die Nachbildung eines Hardware- oder Software-Objektes durch ein ähnliches Objekt vom selben Typ mithilfe einer Abstraktionsschicht.</p>
</blockquote>
<ul>
<li>
<p>verschiedene Arten von Virtualisierung je nachdem, wo die Abstraktionsschicht liegt</p>
<ul>
<li>Virtuelle Maschinen (VM): Hardware gleich, Betriebssysteme (OS) und Prozesse getrennt</li>
<li>Container: OS gleich, Prozesse getrennt</li>
<li>Sandboxing: getrennte Teile innerhalb eines Prozesses</li>
</ul>
</li>
<li>
<p>Anwendungsfälle für VM (OS als Anwendung innerhalb eines anderen OS)</p>
<ul>
<li>gleichzeitiger Betrieb von mehreren OS auf einem Computer (z.B. Linux als Hauptsystem, Windows-VM für bestimmte Anwendungen)</li>
<li>saubere Abgrenzung von verschiedenen Programmen durch das Einsperren in VMs mit festen Ressourcen-Zuteilungen und Zugriffsschranken</li>
<li>daraus folgend: Aufteilen einer einzelnen Server-Maschine in mehrere VMs für verschiedene Kunden</li>
<li>Ermöglichung der Verschiebung von Programmen zwischen Maschinen im laufenden Betrieb ("Live-Migration", z.B. bei Hardwarefehlern)</li>
</ul>
</li>
<li>
<p>Ansätze für VMs (Wie kann der Gast-Kernel seinen administrativen Aufgaben nachgehen, ohne selber vollen Zugriff auf das System zu erhalten?) anhand von Meilensteinen auf x86-CPUs</p>
<ul>
<li>User Mode Linux (ab ca. 2000), Xen (ab 2003): "Paravirtualisierung", Gast-Kernel ist von Anfang an so aufgebaut, dass er auch als Prozess unter einem anderen Kernel laufen kann (Hardware-Zugriff mittels Emulation, siehe unten)</li>
<li>VMware Workstation (ab 1999), VirtualBox (ab 2007), etc.: "Software-Virtualisierung", Gast-Kernel läuft in einem teilprivilegierten Modus (z.B. Ring 1 bei x86), sodass Hardware-Zugriff einen Fehler auslöst; der Host-Kernel erhält die Kontrolle zurück und macht den Hardwarezugriff im Namen des Gast-Kernels (Problem: Performance-Verlust gegenüber Direktzugriff auf die Hardware) (<a href="docs.oracle.com/en/virtualization/virtualbox/6… Erklärung in der VirtualBox-Dokumentation</a>)1</li>
<li>Intel VT-x (ab 2005), AMD-V (ab 2006): "Hardware-Virtualisierung", Host-Kernel richtet durch spezialisierte CPU-Instruktionen einen abgetrennten Bereich für den Gast-Kernel ein (beschränkter Speicherbereich, beschränkte CPU-Zeit, beschränkter Gerätezugriff), innerhalb dessen das System für den Gast-Kernel wie unvirtualisiert erscheint (somit so gut wie kein Performance-Unterschied zwischen nativem und virtualisiertem Kernel mehr)</li>
</ul>
</li>
<li>
<p><a href="de.wikipedia.org/wiki/Containervirtualisierung…;: isolierte Umgebungen innerhalb eines OS, aus denen Programme im Allgemeinen nicht ohne weiteres ausbrechen können</p>
<ul>
<li>Vorteil gegenüber VM: ressourcenschonender (nur ein Kernel für alle), Container starten schneller als VM (kein Boot eines Gast-Kernels notwendig)</li>
<li>Urform des Containers: <a href="de.wikipedia.org/wiki/Chroot">chroot in Unix-Systemen</a> (ab 1979) modifiziert für einen Prozess das sichtbare Dateisystem so, dass nur Dateien unterhalb eines bestimmten Verzeichnisses erreicht werden können (Intention war die Bereitstellung von angepassten Dateisystemstrukturen für bestimmte Programme; chroot ist kein wirklicher Container, da die allermeisten Ressourcen nicht eingeschränkt werden und ein privilegierter Prozess das chroot jederzeit durch Neukonfiguration umgehen kann)</li>
<li>echte Container ab ca. 2000: z.B. FreeBSD Jails ab 1999, Virtuozzo/OpenVZ ab 2000, Solaris Zones ab 2005, LXC (Linux Containers) ab 2008, Docker ab 2013</li>
</ul>
</li>
<li>
<p>ausführliche Besprechung von Containern unter Linux (Docker/Kubernetes) siehe <a href="c3d2.de/news/pentaradio24-20220524.html"&… von 2022-05-24</a></p>
</li>
<li>
<p>Sandboxing: Container innerhalb einer Applikation</p>
<ul>
<li>z.B. Webbrowser führen JavaScript-Code aus dem Internet in separaten Prozessen mit geringen Privilegien aus, um Malware das Leben schwer zu machen</li>
<li>Begriffstrennung nicht ganz sauber; mitunter werden auch Container als eine Art von Sandboxing eingeordnet</li>
</ul>
</li>
<li>
<p>Simulation und Emulation</p>
<ul>
<li><a href="de.wikipedia.org/wiki/Simulation">Simu…;: Nachbildung eines realen Systems oder Szenarios mittels andersgearteter Technik (z.B. Fahrsimulation ohne echtes Auto, Militärsimulation ohne echtes Schlachtfeld, Simulation von quantenmechanischen Wellen mittels Ultraschallwellen... oder gleich mit Zahlen im Computer)</li>
<li><a href="de.wikipedia.org/wiki/Emulator">Emulat…;: Nachbildung eines Systems durch ein ähnliches, aber anderes System (z.B. Nachbildung des Verhaltens eines CPU-Typs als Programm auf einem anderen CPU-Typ)</li>
<li>Einsatz von Emulation hauptsächlich zum Nachbilden alter Systeme (siehe Emulation von Videospielen, wie besprochen im <a href="c3d2.de/news/pentaradio24-20220125.html"&… vom Januar 2022</a>) und zum Testen von Software auf besser zugänglichen Systemen (z.B. Testumgebungen für Smartphone-Apps auf PC-Betriebssystemen)</li>
</ul>
</li>
</ul>