Post on 02-May-2020
Solaris 10 Container
Daniel Schossigdaniel@schossig.net
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
http://en.wikipedia.org/wiki/Virtualisation
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
Mechanism
Features
Chroot Most UNIX-Like Yes No No No No No NoLinux-Vserver Linux Yes Yes Yes/No[1] Yes Yes Yes NoOpenvz Linux Yes Yes Yes[2] Yes Yes Yes YesVirtuozzo Linux, WindowsYes Yes Yes/No[1] Yes Yes Yes YesContainer Solaris Yes Yes No Yes Yes Yes[3] No[4]FreeBSD Jail FreeBSD Yes No No No No Yes No
[1] Abhänig vom Scheduler[2] Seit 2.6.18 basierend auf CFQ Scheduler[3] Netzwerk ist nicht Isoliert, aber Virtualisiert. Eigene IP, route, Firewall möglich[4] shutdown-move-restart
Operating system
File system
isolationDisk
quotasI/O rate limiting
Memory limits
CPU quotas
Network isolation
Live migration
http://en.wikipedia.org/wiki/Operating_system-level_virtualization
Praktischer Nutzen
C't 2006/13 S. 182
● i.d.R. sind Virtuelle Umgebungen portabel● Vereinfachte Administration● Effektivere Ressourcennutzung● Spart Platz und Kosten
http://blogs.sun.com/kchangs/resource/bootcamp-containers-041206.pdf
Vorteile Container
● Sehr gute Integration in Solaris● Update sehr einfach● Ressourcenmanagement sehr mächtig● Alle Tools auf Zonen zugeschnitten● Alles aus einem Guss
http://www.sun.com/software/solaris/containers_learning_center.jsp
Anforderungen
http://www.sun.com/software/solaris/specs.jsp
http://www.opensolaris.org/os/community/zones/faq/
● Solaris 10● x86/x64 mit 120MHz● Sparc mit 250MHz● 256MB RAM● 2GB Festplattenspeicher● Theoretisch über 8000 Container
Zonen
http://regions.cmg.org/regions/mspcmg/Presentations/May2006/Solaris10%20Overview%20CMG%205-2006.pdf
http://www.opensolaris.org/os/community/zones/faq/#basic_zone
● 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
http://www.opensolaris.org/os/community/zones/faq/#basic_glossary
Whole-Root Zone
● Keine gemeinsamen Verzeichnisse
● Größter Platzbedarf● Höherer
Ressourcenverbrauch● Keine
Einschränkungen beim konfigurieren
http://www.as-systeme.de/Unternehmen/events/downloads/unternehmen/i.1C0FY-N01qP/best_practices
Sparse und Whole-Root Zone
http://www.as-systeme.de/Unternehmen/events/downloads/unternehmen/i.1C0FY-N01qP/best_practices
Container
● nutzt Ressourcenmanagment von Solaris
Resource Feineinstellungen GrobeinstellungenCPU Shares mit FSS* Prozessor Sets RAM Projects und rcapd Memory Sets HDD Größe ZFS, SVM Softpartitionen Eigene HDD/Slice HDD DurchsatzNetzwerk IPQoS Eigene NICs
*Fair Share Scheduler
Eigene HDD/Controller
http://www.solarisinternals.com/wiki/index.php/Zones_Resource_Controls
Prozessor Sets
● Fixed CPUs– Feste Prozessoranzahl pro Zone
● Varying CPUs– Min./Max. Prozessoranzahl pro Zone
● CPU Shares– Vergabe von Shares
http://www.solarisinternals.com/wiki/index.php/Zones_Resource_Controls
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
http://www.as-systeme.de/Unternehmen/events/downloads/unternehmen/i.1C0FY-N01qP/best_practices
Beispiel
[root@test]/# 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=192.168.0.53
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: 192.168.0.53
physical: hme0
zonecfg:test-zone> exit
Beispiel
[root@test]/# mkdir /export/test-zone
[root@test]/# chmod 700 /export/test-zone
[root@test]/# zoneadm -z test-zone verify
[root@test]/# zoneadm -z test-zone install
Preparing to install zone <test-zone>.
Creating list of files to copy from the global zone.
Copying <4731> files to the zone.
Beispiel
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1073> packages on the zone.
Initializing package <5> of <1073>: percent complete:
0%
Initialized <1073> packages on zone.
Zone <test-zone> is initialized.
The file </export/test-
zone/root/var/sadm/system/logs/install_log> contains a
log of the zone installation.
Beispiel
[root@test]/# zoneadm -z test-zone boot
[root@test]/# 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
[root@test]/# zlogin -C test-zone
test-zone console login:
RessourcenmanagmentBeispiel CPU
http://www.solarisinternals.com/wiki/index.php/Zones_Resource_Controls
[root@test]/# svcadm enable pools
[root@test]/# pooladm -s
[root@test]/# poolcfg -c "create pool pool1"
[root@test]/# poolcfg -c "create pool pool2"
[root@test]/# zonecfg -z small-zone set pool=pool1
[root@test]/# zonecfg -z postsql set pool=pool2
[root@test]/# poolcfg -f - <<EOF
> create pset pset1 (uint pset.min = 1 ; uint pset.max = 1)
> associate pool pool1 (pset pset1)
> EOF
[root@test]/# poolcfg -f - <<EOF
> create pset pset2 (uint pset.min = 1 ; uint pset.max = 1)
> associate pool pool2 (pset pset2)> EOF
http://www.opensolaris.org/os/project/rm/pools/msets/
Ressourcenmanagment
http://www.solarisinternals.com/wiki/index.php/Zones_Resource_Controls
[root@test]/# zonecfg -z small-zone info
zonename: small-zone
zonepath: /export/small-zone
autoboot: true
pool: pool1
[...]
[root@test]/# zonecfg -z postsql info
zonename: postsql
zonepath: /export/postsql
autoboot: true
pool: pool2
[...]
http://www.opensolaris.org/os/project/rm/pools/msets/
RessourcenmanagmentBeispiel Speicher
http://www.solarisinternals.com/wiki/index.php/Zones_Resource_Controls
> 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
http://www.opensolaris.org/os/project/rm/pools/msets/
Zukunft
http://www.opensolaris.org/os/community/brandz/brandz_lae_faq/
http://www.sun.com/software/solaris/scla.jsp
● Ständige Weiterentwicklung● Zukunftssicher● Solaris Containers for Linux Applications● ZFS Integration● Konfigurierbare Privilegien● Eigener TCP/IP Stack für jede Zone
http://www.itjungle.com/tug/tug110206-story01.html
http://learningsolaris.com/archives/2006/03/13/zones-future-features/
Demo
Global Zone192.168.0.50
small-zone192.168.0.51
postsql192.168.0.52
sshdpostgresql
sshdApache
hme0:1 hme0:2
hme0/usr/lib
/export/small-zone
Wichtige Anlaufstellen
http://www.sun.com/software/solaris/containers_learning_center.jsp
http://docs.sun.com/app/docs/doc/819-2450
http://www.solarisinternals.com/wiki/index.php/Zones
http://learningsolaris.com/zones-unofficial-faq/
http://www.opensolaris.org/os/community/zones/faq/
Danke für die Aufmerksamkeit!
Fragen?