Erste Schritte mit Open Solaris und Zones

Containerfracht

Mit Open Solaris Zones hat der Admin eine leistungsstarke und dabei einfach zu administrierende Virtualisierungslösung an der Hand, die kaum Performanceeinbußen zur Folge hat und sehr viele Container nebeneinander verkraftet. Dieser Artikel assistiert bei den ersten Schritten.

Open Solaris ist wie Linux ein ambitioniertes Betriebssystem-Projekt, das eine Plattform bereitstellt, auf der sich Applikationen entwickeln und ausführen lassen. Ursprünglich von Sun Microsystems ins Leben gerufen und nun zu Oracle gehörig, läuft Open Solaris auf einem breiten Spektrum von PC-Hardware [1]. Eines der beeindruckendsten Features ist die eingebaute Virtualisierungslösung Solaris Zones.

Virtualisierungsexperten messen die Effizienz als Funktion der Performance und der Anzahl möglicher virtueller Maschinen pro Host. In beiden Disziplinen ist Solaris Zones ungeschlagen: Die Performance der Zonen ist nativ und es können Hunderte Instanzen auf einem Host nebeneinander existieren.

Die Zonen, oft auch Container genannt, sind eine erweiterte Abart der Chroot-Jails. Wie Jails bieten sie eine sichere und isolierte Umgebung, aus der heraus Prozesse, Applikationen und Services gestartet werden können. Alle Zonen eines Solaris-Systems beziehen sich auf einen gemeinsamen Kernel. Obwohl sich verschiedene Linux-Distributionen in einer Open-Solaris-Zone installieren lassen (Red Hat und CentOS), ist es empfehlenswert, stattdessen bei Open Solaris für alle Zonen zu bleiben.

Wer sich mit einer Zone über ihre IP-Adresse oder einen Hostnamen verbinden will, dem erscheinen die Zonen wie alleinstehende Rechner. Der gelegentliche Nutzer wird zwischen einer Zone, einem voll virtualisierten und einem physischen Rechner keinerlei Unterschiede bemerken. Jede Zone kann ihren eigenen Administrator, ihre eigenen User und Passworte haben.

Voraussetzungen

Für praktische Experimente mit Solaris Zones müssen ein paar Voraussetzungen erfüllt sein. Zunächst ist die aktuellste Open-Solaris-Version nötig, installiert auf einem PC. Hardware, die sich für Linux eignet, sollte auch für Solaris passen. Viele Zonen-Hosts verfügen über 2 GByte RAM, was für einen effizienten Betrieb auch mit vielen Zonen reicht: Weil es nicht um vollvirtualisierte Maschinen geht, ist nicht so viel RAM nötig. Jede Zone braucht zudem ausreichend Plattenplatz, wobei sie die gesamte freie Diskkapazität des Host als nutzbar ansieht. Zeitgemäße Dual-Core- und Quad-Core-Prozessoren haben keine Schwierigkeiten mit Solaris Zones, besondere Anforderungen gibt es nicht – es sei denn, man möchte Linux in den Zonen laufen lassen. Dann braucht man Intel-Prozessoren.

Die letzte Voraussetzung ist ZFS, das leistungsstarke, sich selbst verwaltende Filesystem von Open Solaris. Open Solaris an sich kommt auch mit UFS klar, aber die Zonen benötigen ZFS.

Zonen auf der Kommandozeile

Zwei einfache Informationen über Open Solaris Zones können einem Frustration und stundenlanges Googlen ersparen. Erstens: Man muss für Zonen ZFS verwenden [2]. Zweitens: Das Verzeichnis, das die Zonen beherbergen soll, muss zuerst existieren.

Im folgenden Beispiel benutzen wir der Einfachheit halber den Hostnamen »opensolaris« . Alle Kommandos für das Zonenmanagement erfordern Rootrechte. Von diesem Punkt an unterstellt der Text, dass der Beispielnutzer als Root angemeldet ist, es sei denn, es wird ausdrücklich etwas anderes gesagt.

Zuerst soll eine Zone angelegt werden. Das übergeordnete Verzeichnis kann zwar beliebig heißen, aber das Beispiel verwendet den Namen »zones« .

root@opensolaris:~# mkdir /zones

Eine neue Zone einzurichten, ist einfach. Open Solaris benötigt dafür nur wenige Informationen: Einen Namen, den Pfad zum Homedirectory der Zonen und ein Netzwerk-Setup (IP-Adresse, physisches Interface und Default Rooter). Zwar lassen sich noch viele weitere Parameter angeben, doch sind sie in den meisten Fällen nicht notwendig. Das Beispiel (Listing 1) gibt noch eine Beschreibung an, aber die ist optional.

Listing 1

Die Zone web1 anlegen

01 root@opensolaris:~# zonecfg -z web1
02
03 web1: No such zone configured
04 Use 'create' to begin configuring a new zone.
05 zonecfg:web1> create
06 zonecfg:web1> set zonepath=/zones/web1
07 zonecfg:web1> set autoboot=true
08 zonecfg:web1> add net
09 zonecfg:web1:net> set address=192.168.1.40/24
10 zonecfg:web1:net> set physical=e1000g1
11 zonecfg:web1:net> set defrouter=192.168.1.254
12 zonecfg:web1:net> end
13 zonecfg:web1> add attr
14 zonecfg:web1:attr> set name=comment
15 zonecfg:web1:attr> set type=string
16 zonecfg:web1:attr> set value="Apache Web Server 1"
17 zonecfg:web1:attr> end
18 zonecfg:web1> verify
19 zonecfg:web1> commit
20 zonecfg:web1> exit

Im nächsten Schritt wird die Zone installiert. Dabei erzeugt die Software anhand des Konfigurationsfiles »/etc/zones/web1.xml« die Standardverzeichnisse, legt Links an, kopiert Dateien in das Verzeichnis der Zone und erzeugt das Systemlayout (Listings 2 und 3). Die Installation legt auch das gesicherte Zonenverzeichnis »/zones/web1« an und setzt die passenden Rechte (»root:root drwx------« ).

Listing 2

Installation einer Zone

01 # zoneadm -z web1 install
02
03 A ZFS file system has been created for this zone.
04    Publisher: Using opensolaris.org (http://pkg.opensolaris.org/release/).
05        Image: Preparing at /zones/web1/root.
06        Cache: Using /var/pkg/download.
07 Sanity Check: Looking for 'entire' incorporation.
08   Installing: Core System (output follows)
09 DOWNLOAD                                    PKGS       FILES     XFER (MB)
10 Completed                                  20/20   3021/3021   42.55/42.55
11
12 PHASE                                        ACTIONS
13 Install Phase                              5747/5747
14   Installing: Additional Packages (output follows)
15 DOWNLOAD                                    PKGS       FILES     XFER (MB)
16 Completed                                  37/37   5598/5598   32.52/32.52
17
18 PHASE                                        ACTIONS
19 Install Phase                              7329/7329
20
21         Note: Man pages can be obtained by installing SUNWman
22  Postinstall: Copying SMF seed repository ... done.
23  Postinstall: Applying workarounds.
24         Done: Installation completed in 411.387 seconds.
25
26   Next Steps: Boot the zone, then log into the zone console
27              (zlogin -C) to complete the configuration process
28
29 # zoneadm -z web1 boot

Listing 3

Interaktive Konfigurationssession

01 # zlogin -C web1
02 [Connected to zone 'web1' console]                                               69/69
03 Reading ZFS config: done.
04 Mounting ZFS filesystems: (6/6)
05
06 What type of terminal are you using?
07  1) ANSI Standard CRT
08  2) DEC VT100
09  3) PC Console
10  4) Sun Command Tool
11  5) Sun Workstation
12  6) X Terminal Emulator (xterms)
13  7) Other
14 Type the number of your choice and press Return: 2
15
16 Creating new rsa public/private host key pair
17 Creating new dsa public/private host key pair
18 Configuring network interface addresses: e1000g1.
19
20 Host name for e1000g1:1: web1
21
22 Configure Kerberos Security: No
23
24 Name service: DNS
25
26 Domain name: blah.com
27
28 Server's IP Address: 192.168.1.254
29
30 Use NFSv4: Yes
31
32 Continents and Oceans: Americas
33
34 Location: US
35
36 Time zones: Central
37
38 Root password: xxxxxxxx

Danach ist die Zone »web1« fertig und man kann sich vom Hostsystem oder einem anderen Rechner aus via SSH in sie einloggen. Sollte das scheitern, gilt es entweder, Root-Logins für die Zone zu ermöglichen oder in ihr andere User-Accounts anzulegen. Aber wie soll das gehen, wenn man sich nicht als Root einloggen kann? Die Lösung heißt Zone Login.

comments powered by Disqus