Vereinfachung von ZFS-Snapshot-Operationen durch Bash-Skripte


Term Paper, 2019

26 Pages, Grade: 1,3


Excerpt


Inhalt

1 EINLEITUNG

2 VORBEREITUNG DER ZONENSTRUKTUR
2.1 Oracle Solaris
2.2 Installation und Boot einer Zone
2.2.1 Verwaltung lokaler Zonen
2.2.2 Erstellung lokaler Zonen
2.3 ZFS – Dateisystem
2.3.1 Speicher-Pools
2.3.2 Schnappschuss
2.4 Putty

3 AUTOMATISIERUNG DURCH BASH-SKRIPTE
3.1 Analyse der Zonenstruktur
3.2 Snapshot Auflistung
3.3 Snapshot Erstellung
3.4 Snapshot Widerherstellung
3.5 Snapshot Löschung

4 FAZIT

ANHANG

ABBILDUNGSVERZEICHNIS

ABKÜRZUNGSVERZEICHNIS

QUELL- UND LITERATURVERZEICHNIS

1 EINLEITUNG

Das Ziel des Projektes ist die Vereinfachung von ZFS-Snapshot Operationen durch Bash-Skripte. Alle im Betrieb befindlichen Solaris Systeme benutzen aktuell ausschließlich Filesysteme des Typs ZFS, die wiederum in sogenannten ZPools organisiert sind. Jedem Solaris System sind mehrere ZFS-Filesysteme eines oder mehrerer ZPools zugeordnet.

Bei Wartungsarbeiten an Datenbanken und Anwendungen innerhalb von Solaris Zonen kommt es häufig vor, dass zur Absicherung Snapshots aller ZFS-Filesysteme der betroffenen Solaris Zonen erstellt werden. Gibt es bei den Wartungstätigkeiten unlösbare Probleme, werden gegebenenfalls alle ZFS-Filesysteme der betroffenen Solaris Zonen auf den Stand der zuvor erstellen Snapshots zurückgesetzt. Ist die Aktion erfolgreich abgeschlossen, werden diese Snapshots nach einer gewissen Zeit gelöscht. Gehören zu einer Solaris Zone viele ZFS-Filesysteme in verschiedenen ZPools ergeben sich für die beschriebenen Szenarien durchaus lange Befehlsfolgen, deren händische Ausführung mühsam und fehleranfällig ist.

Aus diesem Grund werden 4 Bash-Skripte entwickelt, mit denen auf einer globalen Zone Snapshots aller ZFS-Filesysteme einer Solaris Zone erstellt, aufgelistet, zurückgesetzt und gelöscht werden können.

2 VORBEREITUNG DER ZONENSTRUKTUR

Innerhalb dieses Kapitels wird geklärt um was es sich bei einer Zone auf der Betriebssystemdistribution Oracle Solaris handelt, warum diese zum Einsatz kommen und wie sie konfiguriert und installiert werden. Anschließend wird die genauer erläutert wie ZFS-Dateisysteme funktionieren und wie sie durch Snapshots gesichert werden können. Die Vorteile und Wirkungsweise der Bash-Skripte werden in Kapitel 3 näher beleuchtet.

2.1 Oracle Solaris

Oracle Solaris ist eine Betriebssystemdistribution auf der Basis von SunOS und ein UNIX-Betriebssystem. Seit der Übernahme von SunMicrosoft 2010 gehört Solaris dem Unternehme Oracle [1]. Es ist ein virtualisiertes Betriebssystem, welches sich vor allem im Serverbereich angesiedelt hat und für den Cloud-Einsatz entwickelt wurde. Ergänzend zu den eingebauten Virtualisierungsfunktionen ist Oracle Solaris auch für Oracle VM Server Virtualisierung auf x86- und SPARC-basierten Systemen ausgelegt [2]. Zudem spielt die Sicherheit von Solaris eine große Rolle, es gibt z.B. eine UEFI- Secure-Boot-Unterstützung, ein Auditing-Werkzeug, mit dem die Signatur einzelner Kernel-Module beim Laden überprüft werden kann und zum Beispiel das Werkzeug „Admhist“, mit dem administrative Zugriffe im System detailliert protokolliert werden. Die Software innerhalb von Solaris wird hauptsächlich durch eine Paketverwaltung mit Hilfe von „pkg“-Programmen verwaltet. Viele Anwendungen und Programme, die auf anderen Unix- oder ähnlichen Betriebssystemen wie Linux laufen, können deshalb einfach auf Solaris portiert werden.

Das Testsystem, auf dem gearbeitet wurde hat die Version Solaris 11.4 bzw. SunOS 5.11, welche derzeit die aktuellste ist (Stand 16.07.2019)

2.2 Installation und Boot einer Zone

Um die Installation einer Zone genauer erläutern zu können muss vorerst zwischen globalen und lokalen Zonen unterschieden werden.

Jedes Solaris-System enthält eine globale Zone, welche zwei Funktionen hat. Sie gilt sowohl als Standardzone des Systems (bzw. das Standartbetriebssystem) als auch als Zone für die systemweite Administrationssteuerung. Wenn keine „nicht-globalen“ Zonen, oder auch „lokale Zonen“ bezeichnet, vom globalen Administrator erstellt wurden, werden alle Prozesse in der globalen Zone ausgeführt. Die globale Zone ist die einzige Zone, von der aus eine lokale Zone konfiguriert, installiert, verwaltet oder deinstalliert werden kann. Nur die globale Zone kann von der System-Hardware gebootet werden. Jeder Zone, einschließlich der globalen Zone, ist ein Zonenname zugewiesen. Die globale Zone heißt immer „global“ und erhält die ID „0“. Jede Zone erhält außerdem eine einmalige numerische ID, die beim Booten der Zone vom System zugewiesen wird, diese wird unter der Verwendung des Befehls „zonecfg“ beschrieben (siehe Abbildung 1, 2). Weiterhin verfügt jede Zone über einen Root Verzeichnispfad, der relativ zum Root-Verzeichnis der globalen Zone angegeben ist.

Man kann sich eine nicht-globale Zone wie einen Kasten vorstellen, in dem eine oder mehrere Anwendungen ausgeführt werden können, ohne dass sie sich auf das restliche System auswirken. Solaris „Zones“ isolieren Softwareanwendungen und Services mit flexiblen, softwaredefinierten Grenzen. Anwendungen, die in der gleichen Instanz des Betriebssystem Solaris ausgeführt werden, können unabhängig von anderen Anwendungen verwaltet werden. Daher können verschiedene Versionen der gleichen Anwendung in unterschiedlichen Zonen ausgeführt werden können, um die Anforderungen der Konfiguration zu erfüllen [3]. Ein Prozess, der einer Zone zugewiesen ist, kann andere Prozesse in dieser Zone manipulieren, überwachen oder direkt mit ihnen kommunizieren. Der Prozess kann diese Funktionen nicht an Prozessen durchführen, die anderen Zonen oder keinen Zonen des Systems zugewiesen sind. Prozesse, die verschiedenen Zonen zugewiesen sind, können nur über die Netzwerk-APIs miteinander kommunizieren, da sie sich sonst über die Existenz anderer Zonen nicht bewusst sind.

2.2.1 Verwaltung lokaler Zonen

Ein globaler Administrator verfügt über die Berechtigungen eines Superusers oder eines „Primary Administrators“. Ein korrekt bei einer globalen Zone angemeldeter globaler Administrator kann das gesamte System überwachen und steuern.

Eine lokale Zone kann auch nur von einem Zonenadministrator verwaltet werden. Ein globaler Administrator weist dem Zonenadministrator das Profil „Zone Management“ zu. Die Berechtigungen eines Zonenadministrators sind auf eine nicht-globale Zone begrenzt [3].

2.2.2 Erstellung lokaler Zonen

Eine Zone wird vom globalen Administrator mit dem Befehl „zonecfg“ und dem Einstellen verschiedener Parameter für die virtuelle Plattform und Anwendungsumgebung der Zone konfiguriert. Die Zone wird dann vom globalen Administrator installiert, der mit dem Befehl „zoneadm“ Software auf der Paketebene in der Dateisystemhierarchie installiert, die für die Zone eingerichtet wurde. Der globale Administrator kann sich mit dem Befehl „zlogin“ bei der installierten Zone anmelden. Mit dem ersten Anmelden wird die interne Konfiguration einer Zone abgeschlossen. Dann wird der Befehl „zoneadm“ zum Booten der Zonen verwendet.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1, Ausschnitt Zonenkonfiguration

In diesem Ausschnitt einer solchen Konfigurationsdatei sieht man im oberen Teil einfache Parameterangaben, die mit dem Wort „set“ eingeführt werden. Die Zone ist von der voreingestellten Marke “solaris“, weiterhin sind die Eigenschaften zum Zonenpfad, in welcher die Zone später installiert wird und zum automatischen Start der Zone angegeben. Unter diesen allgemeinen Einstellungen kann man nun noch weitere Einstellungsblöcke hinzufügen, diese sind z.B. eine physikalische Netzwerkkonfiguration („add anet“) oder weitere Datapools, wie in der Abbildung „add dataset“. Die Installation einer konfigurierten Zone funktioniert mit den Befehlen „zoneadm –z <Zonenname> create“, „zoneadm –z <Zonenname> install“ und um die Zone zu starten „zoneadm –z <Zonenname> boot“. Um Informationen über die Status bzw. die Zustände aller konfigurierten Zonen zu erlangen, nutzt man auf der globalen Zone den Befehl „zoneadm list -cv“.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2, Zonenliste aller konfigurierten Zonen

Eine nicht-globale Zone kann einen der folgenden Status annehmen:

- „ configured “ - Die Konfiguration der Zone ist abgeschlossen. Sie wird zur stabilen Speicherung übernommen, jedoch sind noch keine Elemente der Anwendungsumgebung einer Zone vorhanden, die nach dem ersten Booten angegeben werden müssen. Die Zone hat keine ID.
- „ incomplete “ - Während des Installations- oder Deinstallationsvorgangs ist ein Fehler aufgetreten und „zoneadm“ setzt den Status der Zielzone auf „incomplete“. Nach dem erfolgreichen Abschluss des Vorgangs wird der Status korrigiert.
- „ installed “ - Die Konfiguration der Zone wird auf dem System instanziiert. Mit dem Befehl „zoneadm“ kann überprüft werden, ob die Konfiguration erfolgreich auf dem zugewiesenen Solaris-System eingesetzt werden kann. Pakete werden unter dem Root-Pfad in der Zone installiert. In diesem Status verfügt die Zone über keine zugewiesene virtuelle Plattform und besitzt auch keine ID.
- „ ready “ - die virtuelle Plattform der Zone wird eingerichtet. Netzwerkschnittstellen werden eingerichtet und für die Zone verfügbar gemacht, Dateisysteme werden eingehängt und Geräte konfiguriert. Das System weist eine eindeutige Zonen-ID zu. Zu diesem Zeitpunkt wurden noch keine der Prozesse gestartet, die der Zone zugewiesen sind.
- „ running “ - Benutzerprozesse, die der Zonen-Anwendungsumgebung zugewiesen sind, werden ausgeführt. Die Zone tritt in den Status „running“ über, sobald der erste der Anwendungsumgebung zugewiesene Benutzerprozess erstellt wird.
- „ shutting down und down “ - Diese Status sind Übergangszustände, die sichtbar sind, während eine Zone angehalten ist. Eine Zone, die aus beliebigen Gründen nicht heruntergefahren werden kann, stoppt in einem dieser Status.[3]

Um eine vorhandene Zone zu löschen benötigt man wieder das Tool „zoneadm“ mit dem Kommando „zoneadm –z <Name der Zone> uninstall“. Um dies durchzuführen muss die Zone mit folgendem Kommando vorerst heruntergefahren werden: „zoneadm –z <Name der Zone> shutdown“, damit sie den Status „installed“ annimmt.

2.3 ZFS – Dateisystem

Das ZFS-Dateisystem ist ein von Sun Microsoft entwickeltes transaktionales Dateisystem, das zahlreiche Erweiterungen im Server- und Rechenzentrumsbetrieb enthält. Hierzu zählen die vergleichsweise große maximale Dateisystemgröße (max. 256 ZiB), die integrierten RAID-Funktionalitäten, das Volumen-Management sowie der prüfsummenbasierte Schutz vor Datenübertragungsfehlern [4].

2.3.1 Speicher-Pools

Die physische Datenspeicherung beruht bei ZFS auf dem Konzept sogenannter Speicher-Pools. Früher wurden Dateisysteme auf ein einziges physisches Datenspeichergerät aufsetzend konzipiert. Damit mehrere Datenspeichergeräte adressiert werden können und Datenredundanz möglich wird, wurde das Konzept eines so genannten Volume Manager entwickelt, um für die Darstellung eines einzelnen Datenspeichergeräts zu sorgen [5]. Das grundlegendste Element eines Speicher-Pools ist physischer Speicher, bei diesem handelt es sich normalerweise um Festplatten, die vom System im Verzeichnis /dev/dsk erkannt werden.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3, ZFS-Datenverwaltung [6]

Um einen Pool zu erstellen nutzt man den Befehl „zpool create <Name des Pools> <Datenträgername>“ bzw. „zpool create -m </Einhängepunkt> <Name des Pools><Name des Datasets> <Datenträgername>“. Dieses Kommando akzeptiert einen Pool-Namen und eine beliebige Anzahl virtueller Geräte als Argumente, die Daten werden dabei mithilfe von Striping dynamisch über beide Datenträger verteilt. Um diesen wieder zu löschen wird der Befehl „zpool destroy <Name des Pools>“ gebraucht. Dieser löscht allerdings auch Pools an denen Datasets angehangen sind, ohne mit folgender Prüffrage nach der Bestätigung zu fragen.

2.3.2 Schnappschuss

Ein Schnappschuss bzw. „Snapshot“ ist eine schreibgeschützte Kopie eines Dateisystems bzw. Volume. Anfänglich belegen Schnappschüsse keine zusätzliche Festplattenkapazität im Pool, diese sind zunächst nur als leere Hülle anzusehen. Wenn Daten innerhalb des aktiven Datasets geändert werden, belegt der Schnappschuss Festplattenkapazität, da die alten Daten weiterhin referenziert werden. So verhindern Schnappschüsse, dass der von den Daten belegte Speicherplatz für den Pool freigegeben wird. Damit die Snapshots aller ZFS- Filesysteme einer Solaris Zone konsistent erstellt werden können, muss die betroffene Zone gestoppt sein (Zustand: installed oder configured, siehe Abbildung 2). Dazu nutzt man den Befehl „zfs snap -r <Name der Zone>_<Name des Pools>@<Name des Snapshots>“, nun werden die Snapshots aller ZFS-Filesysteme der Solaris Zone mit einem Befehl pro ZPool erstellt. Dazu wird der Befehl „zfs snap“ in Kombination mit der Option „-r“ (rekursiv) und dem Namen (Wurzelfilesystem) des jeweiligen ZPools ausgeführt.

[...]

Excerpt out of 26 pages

Details

Title
Vereinfachung von ZFS-Snapshot-Operationen durch Bash-Skripte
College
University of Cooperative Education Leipzig
Course
Informatik
Grade
1,3
Author
Year
2019
Pages
26
Catalog Number
V507873
ISBN (eBook)
9783346066039
ISBN (Book)
9783346066046
Language
German
Keywords
Bash, Scripte, ZFS, Solaris, Snapshots, Automatisierung
Quote paper
Malte Lange (Author), 2019, Vereinfachung von ZFS-Snapshot-Operationen durch Bash-Skripte, Munich, GRIN Verlag, https://www.grin.com/document/507873

Comments

  • No comments yet.
Look inside the ebook
Title: Vereinfachung von ZFS-Snapshot-Operationen durch Bash-Skripte



Upload papers

Your term paper / thesis:

- Publication as eBook and book
- High royalties for the sales
- Completely free - with ISBN
- It only takes five minutes
- Every paper finds readers

Publish now - it's free