Solaris 10 Container Daniel Schossig
Inhalt ● Definition Virtualisierung ● Betriebssystem Virtualisierungslösungen ● Vorteile Solaris 10 Container ● Zonen ● Container ● Netzwerk ● Beispiel Zonen/Container ● Zukunft ● Demo
Definition Virtualisierung C't 2006/13 S. 182 „Technik zum verbergen der physischen gegebenheiten einer Computerressource vor anderen Systemen, Applikationen oder Benutzern.“ ● Abstraktion von Computerressourcen ● Existiert nicht real, wirkt täuschend echt ● Unterscheidung Systemvirtualisierung und Betriebssystemvirtualisierung
Betriebssystemvirtualisierung C't 2006/13 S. 182 ● Bildet reale Umgebung authentisch nach ● Unterschied zur SV: Prozessor ist echt ● Mehrere Betriebssystemumgebungen aber nur ein Betriebssystemkern ● Nach außen hin eigenständige Systeme
Virtualisierungslösungen
Praktischer Nutzen C't 2006/13 S. 182 ● i.d.R. sind Virtuelle Umgebungen portabel ● Vereinfachte Administration ● Effektivere Ressourcennutzung ● Spart Platz und Kosten
Vorteile Container ● Sehr gute Integration in Solaris ● Update sehr einfach ● Ressourcenmanagement sehr mächtig ● Alle Tools auf Zonen zugeschnitten ● Alles aus einem Guss
Anforderungen ● Solaris 10 ● x86/x64 mit 120MHz ● Sparc mit 250MHz ● 256MB RAM ● 2GB Festplattenspeicher ● Theoretisch über 8000 Container
Zonen ● Virtuelle Umgebung ● Applikationen laufen darin Isoliert – hilft bei: Softwarefehlern, Einbrüchen ● i.d.R. keine Anpassung der Anwendungen ● Global Zone ● Sparse-/Whole-root Zone ● Keine non-global zonen in non-global zonen
Sparse- und Whole-Root Zone Sparse-Root Zone ● Gemeinsame Verzeichnisse ● Geringster Platzbedarf ● Einfach zu aktualisieren ● Einschränkungen beim konfigurieren Whole-Root Zone ● Keine gemeinsamen Verzeichnisse ● Größter Platzbedarf ● Höherer Ressourcenverbrauch ● Keine Einschränkungen beim konfigurieren
Sparse und Whole-Root Zone
Container ● nutzt Ressourcenmanagment von Solaris
Prozessor Sets ● Fixed CPUs – Feste Prozessoranzahl pro Zone ● Varying CPUs – Min./Max. Prozessoranzahl pro Zone ● CPU Shares – Vergabe von Shares
Netzwerk ● Ein TCP/IP Stack für das gesamte System ● Eine Routing- tabelle im TCP/IP Stack ● Eigene IP Adresse ● Teilen meistens gemeinsame NIC ● Zonen sehen Traffic anderer Zonen nicht
Beispiel zonecfg -z test-zone test-zone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:test-zone> create zonecfg:test-zone> set autoboot=true zonecfg:test-zone> set zonepath=/export/test-zone zonecfg:test-zone> add net zonecfg:test-zone:net> set address= zonecfg:test-zone:net> set physical=hme0 zonecfg:test-zone:net> end
Beispiel zonecfg:test-zone> add fs zonecfg:test-zone:fs> set dir=/usr/local zonecfg:test-zone:fs> set special=/pub zonecfg:test-zone:fs> set type=lofs zonecfg:test-zone:fs> end zonecfg:test-zone> verify zonecfg:test-zone> commit
Beispiel zonecfg:test-zone> info zonename: test-zone zonepath: /export/test-zone autoboot: true pool: limitpriv: inherit-pkg-dir: dir: /lib [...] fs: dir: /usr/local special: /pub raw not specified type: lofs options: [] net: address: physical: hme0 zonecfg:test-zone> exit
Beispiel mkdir /export/test-zone chmod 700 /export/test-zone zoneadm -z test-zone verify zoneadm -z test-zone install Preparing to install zone. Creating list of files to copy from the global zone. Copying files to the zone.
Beispiel Initializing zone product registry. Determining zone package initialization order. Preparing to initialize packages on the zone. Initializing package of : percent complete: 0% Initialized packages on zone. Zone is initialized. The file contains a log of the zone installation.
Beispiel zoneadm -z test-zone boot zoneadm list -cv ID NAME STATUS PATH 0 global running / 1 postsql running /export/postsql 2 small-zone running /export/small-zone 3 test-zone running /export/test-zone zlogin -C test-zone test-zone console login:
Ressourcenmanagment Beispiel CPU svcadm enable pools pooladm -s poolcfg -c "create pool pool1" poolcfg -c "create pool pool2" zonecfg -z small-zone set pool=pool1 zonecfg -z postsql set pool=pool2 poolcfg -f - <<EOF > create pset pset1 (uint pset.min = 1 ; uint pset.max = 1) > associate pool pool1 (pset pset1) > EOF poolcfg -f - <<EOF > create pset pset2 (uint pset.min = 1 ; uint pset.max = 1) > associate pool pool2 (pset pset2) > EOF
Ressourcenmanagment zonecfg -z small-zone info zonename: small-zone zonepath: /export/small-zone autoboot: true pool: pool1 [...] zonecfg -z postsql info zonename: postsql zonepath: /export/postsql autoboot: true pool: pool2 [...]
Ressourcenmanagment Beispiel Speicher > poolcfg -f – <<EOF > create mset mset1 (uint mset.min = 512M; uint mset.max = 512M) > modify mset mset1 (uint mset.minswap = 1GB; uint mset.maxswap = 1GB) > associate pool pool1 (mset mset1) > EOF ● im Moment nur über rcapd lösbar
Zukunft ● Ständige Weiterentwicklung ● Zukunftssicher ● Solaris Containers for Linux Applications ● ZFS Integration ● Konfigurierbare Privilegien ● Eigener TCP/IP Stack für jede Zone
Demo Global Zone small-zone postsql sshd postgresql sshd Apache hme0:1hme0:2 hme0 /usr /lib /export/small-zone
Wichtige Anlaufstellen
Danke für die Aufmerksamkeit! Fragen?