Zonen sind eine Anwendungs- und Ressourcenverwaltungsfunktion des Betriebssystems Solaris 10. Über diese Funktion kann das Betriebssystem gegenüber Anwendungen als eine oder mehrere virtuelle Betriebssystemumgebungen (Zonen) dargestellt werden, die isoliert und sicher sind. Diese Zonen bieten den Vorteil der Betriebssystemunabhängigkeit mit einem bestimmten Grad an zentralisierter Ressourcenverwaltung. Anwendungen können so voneinander isoliert werden, indem Sie in verschiedenen Zonen installiert und ausgeführt werden, während gleichzeitig bestimmte Betriebssystemressourcen zentral zugewiesen und verwaltet werden können.
Aus Sicht eines Betriebssystems mit Unterstützung für mehrere Zonen umfassen die Betriebssystemressourcen beispielsweise Prozessverwaltung, Arbeitsspeicher, Netzwerkkonfiguration, Dateisysteme, Paketregistrierung, Benutzerkonten, gemeinsam genutzte Bibliotheken und in einigen Fällen installierte Anwendungen.
Eine Multi-Zonen-Umgebung besteht aus einer globalen Zone (dem Standardbetriebssystem) und mindestens einer nicht globalen Zone. Die globale Zone enthält Ressourcen, die den nicht globalen Zonen von einem globalen (Zonen-) Administrator zugewiesen werden können. Nicht globale Zonen weisen die folgenden Eigenschaften auf:
Sicherheit. Durch die Ausführung verteilter Dienste in nicht globalen Zonen wird der mögliche Schaden im Fall einer Sicherheitsverletzung begrenzt. Ein Eindringling, der sich eine Sicherheitslücke in einer Softwareanwendung innerhalb der Zone erfolgreich zunutze macht, bleibt auf diese Zone beschränkt. Die für eine nicht globale Zone geltenden Berechtigungen stellen eine Untermenge der Berechtigungen in der globalen Zone dar.
Laufzeitisolierung. Nicht globale Zonen ermöglichen die Bereitstellung verschiedener Anwendungen auf demselben Computer, selbst wenn für diese Anwendungen unterschiedliche Sicherheitsstufen gelten oder exklusiver Zugriff auf globale Ressourcen oder eine individuelle Konfiguration erforderlich ist. Beispielsweise können mehrere Anwendungen, die in unterschiedlichen Zonen ausgeführt werden, an denselben Netzwerkport gebunden sein, indem sie die eindeutige IP-Adresse der jeweiligen nicht globalen Zone verwenden. Die Anwendungen werden daran gehindert, den Netzwerkdatenverkehr, Dateisystemdaten oder Prozessaktivitäten für die anderen Zonen zu überwachen oder zu unterbrechen.
Administrative Isolierung. Die virtuelle Betriebssystemumgebung ermöglicht eine separate Verwaltung jeder nicht globalen Zone. Die von einem Zonenadministrator (im Gegensatz zum Administrator der globalen Zone) durchgeführte Operationen – z. B. das Erstellen von Benutzerkonten, das Installieren und Konfigurieren von Software sowie die Verwaltung von Prozessen – haben keinerlei Auswirkung auf andere Zonen.
Es gibt zwei Arten von nicht globalen Zonen: Whole-Root-Zonen und Sparse-Root-Zonen.
Whole-Root-Zonen. Enthält eine Kopie des Dateisystems der globalen Zone, in der Lese- und Schreibvorgänge ausgeführt werden können. Bei der Erstellung einer Whole-Root-Zone werden alle in der globalen Zone installierten Pakete für die Whole-Root-Zone verfügbar gemacht: Es wird eine Paketdatenbank erstellt, und alle Dateien werden zur dedizierten und unabhängigen Nutzung der Zone in die Whole-Root-Zone kopiert.
Sparse-Root-Zonen. Enthält eine Kopie für einen Teil des Dateisystems der globalen Zone (daher der Name Sparse-Root). Weitere Dateisysteme werden als schreibgeschützte, virtuelle Loopback-Dateisysteme geladen. Bei der Erstellung einer Sparse-Root-Zone legt der globale Administrator fest, welche Dateisysteme mit der Sparse-Root-Zone gemeinsam genutzt werden (per Voreinstellung werden die Verzeichnisse /usr, /lib, /sbin und /platform als schreibgeschützte Dateisysteme freigegeben). Alle Pakete, die in der globalen Zone installiert werden, werden in der Sparse-Root-Zone zur Verfügung gestellt: Es wird eine Paketdatenbank erstellt, und alle Dateien im geladenen Dateisystem werden gemeinsam mit der Zone genutzt.
Ob Sie sich für eine nicht globale Whole-Root-Zone oder eine nicht globale Sparse-Root-Zone entscheiden, richtet sich danach, welche Schwerpunkte Sie in Bezug auf Ressourcenoptimierung und administrative Steuerung setzen möchten. Whole-Root-Zonen ermöglichen eine Maximierung der administrativen Steuerung (Unabhängigkeit und Isolierung), jedoch auf Kosten der Nutzung von Speicher und anderen Ressourcen. Sparse-Root-Zonen hingegen optimieren die gemeinsame Nutzung von ausführbaren Dateien und Bibliotheken (wodurch weniger Speicherplatz beansprucht wird), dies jedoch auf Kosten der administrativen Unabhängigkeit. Es gibt derzeit keine Möglichkeit, den Leistungsvorteil von Sparse-Root-Zonen gegenüber Whole-Root-Zonen zu messen; dieser ist sehr wahrscheinlich softwareabhängig.
Die in einer globalen Zone installierten Pakete werden (standardmäßig) in allen nicht globalen Zonen zur Verfügung gestellt. Dieser Vorgang wird als Paketverbreitung bezeichnet. (Damit eine Paketverbreitung durchgeführt wird, muss eine neu erstellte nicht globale Zone vollständig geladen sein, d. h. ausgeführt werden.) Durch die Verbreitung werden in der globalen Zone installierte Pakete lokal sichtbar und verfügbar. Die Verbreitung ermöglicht eine zentrale Lebenszyklusverwaltung für Anwendungspakete (Installation, Upgrade, Deinstallation) durch einen globalen Administrator, während die Anwendungskonfiguration und Laufzeitverwaltung durch (nicht globale) Zonenadministratoren erfolgt.
Bei Whole-Root-Zonen wird die Verbreitung durch automatisches Kopieren der installierten Dateien von der globalen Zone in die Whole-Root-Zonen sowie durch automatische Synchronisierung der Registrierungsinformationen erreicht. Bei Sparse-Root-Zonen wird die Verbreitung über schreibgeschützte Dateisysteme erreicht, die von der globalen Zone und den Sparse-Root-Zonen gemeinsam genutzt werden, sowie durch die automatische Synchronisierung von Registrierungsinformationen.
Die Verbreitung von Paketen auf nicht globale Zonen wird auf Paketebene gesteuert und erfolgt unter Verwendung interner Paketattribute. Für einige Attributwerte (zumindest für die Standardwerte) kann die Verbreitung bei Installation deaktiviert werden, indem die Option pkgadd —G gesetzt wird, welche die Attributwerte überschreibt. Nach Abschluss der Installation kann das Verhalten für die Paketverbreitung nicht mehr geändert werden, ausgenommen Sie deinstallieren das Paket und installieren es anschließend neu. Patches können das Verbreitungsverhalten eines Pakets nicht ändern. Tatsächlich müssen Patches gemäß des Verbreitungsverhaltens für das Paket angewendet werden, das aktualisiert wird.