Micro Reboots & Verfügbarkeit
This commit is contained in:
		
							parent
							
								
									86f907f98b
								
							
						
					
					
						commit
						ac2e5d1ae1
					
				
							
								
								
									
										
											BIN
										
									
								
								Advanced Operating Systems - Cheatsheet.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Advanced Operating Systems - Cheatsheet.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1132,254 +1132,111 @@ | |||||||
| 
 | 
 | ||||||
|     \subsection{Micro-Reboots} |     \subsection{Micro-Reboots} | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item Beobachtungen am Ausfallverhalten von BS: |         \item Kernelfehler potentiell fatal für gesamtes System | ||||||
|         \item Kernelfehler sind (potenziell) fatal für gesamtes System |         \item Anwendungsfehler nicht | ||||||
|         \item Anwendungsfehler sind es nicht |  | ||||||
|         \item[$\rightarrow$] kleiner Kernel = geringeres Risiko von Systemausfällen |         \item[$\rightarrow$] kleiner Kernel = geringeres Risiko von Systemausfällen | ||||||
|         \item[$\rightarrow$] durch BS-Code in Serverprozessen: verbleibendes Risiko unabhängiger Teilausfälle von BS-Funktionalität (z.B. FS, Treiberprozesse, GUI, ...) |         \item[$\rightarrow$] BS-Code in Serverprozessen: verbleibendes Risiko unabhängiger Teilausfälle von BS-Funktionalität | ||||||
|         \item Ergänzung zu Isolationsmechanismen: |         \item Ergänzung zu Isolationsmechanismen notwendig | ||||||
|         \item Mechanismen zur Behandlung von Subsystem-Ausfällen |         \item Mechanismen zur Behandlung von Subsystem-Ausfällen | ||||||
|         \item = Mechanismen zur Behandlung Anwendungs-, Server- und Gerätetreiberfehlen |         \item[=] Mechanismen zur Behandlung Anwendungs-, Server- und Gerätetreiberfehlen | ||||||
|         \item[$\rightarrow$] Micro-Reboots |         \item[$\rightarrow$] Micro-Reboots | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|     Ansatz |     Ansatz | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item |         \item kleinen (als fehlerfrei angenommenen) $\mu$Kernel | ||||||
|         wir haben: |         \item BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen %(kontrollierbare, aber wesentlich größere Codebasis) | ||||||
|         \item |         \item Treiber/Anwendungen in nicht vertrauenswürdigen Prozessen %(nicht kontrollierbare Codebasis) | ||||||
|         kleinen, ergo vertrauenswürdigen (als fehlerfrei angenommenen)$\mu$Kernel |         \item wollen Systemausfälle verhindern durch Vermeidung von errors im Kernel $\rightarrow$ höchste Priorität | ||||||
|         \item |         \item Treiber-und Serverausfälle minimieren durch Verbergen ihrer Auswirkungen $\rightarrow$ nachgeordnete Priorität (Best-Effort-Prinzip) | ||||||
|         BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen |         \item Idee: Ausfälle $\rightarrow$ Neustart durch spezialisierten Serverprozess | ||||||
|         (kontrollierbare, aber wesentlich größere Codebasis) |  | ||||||
|         \item |  | ||||||
|         Gerätetreiber und Anwendungen in nicht vertrauenswürdigen Prozessen |  | ||||||
|         (nicht kontrollierbare Codebasis) |  | ||||||
|         \item |  | ||||||
|         wir wollen: |  | ||||||
|         \item |  | ||||||
|         Systemausfälle verhindern durch Vermeidung von errors im Kernel |  | ||||||
|         $\rightarrow$ höchste Priorität |  | ||||||
|         \item |  | ||||||
|         Treiber-und Serverausfälle minimieren durch Verbergen ihrer |  | ||||||
|         Auswirkungen $\rightarrow$ nachgeordnete Priorität |  | ||||||
|         (Best-Effort-Prinzip) |  | ||||||
|         \item |  | ||||||
|         Idee: |  | ||||||
|         \begin{itemize*} |  | ||||||
|             \item Systemausfälle $\rightarrow$ $\mu$Kernel |  | ||||||
|             \item Treiber-und Serverausfälle $\rightarrow$ Neustart durch spezialisierten Serverprozess |  | ||||||
|         \end{itemize*} |  | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|     Beispiel: Ethernet-Treiberausfall |     %Beispiel: Ethernet-Treiberausfall | ||||||
|  |     %\begin{itemize*} | ||||||
|  |     %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-ethernet-treiberausfall.png} | ||||||
|  |     %    \item schwarz: ausfallfreie Kommunikation | ||||||
|  |     %    \item rot: Ausfall und Behandlung | ||||||
|  |     %    \item blau: Wiederherstellung nach Ausfall | ||||||
|  |     %\end{itemize*} | ||||||
| 
 | 
 | ||||||
|  |     %Beispiel: Dateisystem-Serverausfall | ||||||
|  |     %\begin{itemize*} | ||||||
|  |     %    %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-dateisystem-serverausfall.png} | ||||||
|  |     %    \item schwarz: ausfallfreie Kommunikation | ||||||
|  |     %    \item rot: Ausfall und Behandlung | ||||||
|  |     %    \item blau: Wiederherstellung nach Ausfall | ||||||
|  |     %\end{itemize*} | ||||||
|  | 
 | ||||||
|  |     \subsubsection{Beispiel-Betriebssystem: MINIX} | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-ethernet-treiberausfall.png} |         \item Ziel: robustes Betriebssystems | ||||||
|         \item |         \item[$\rightarrow$] Schutz gegen Sichtbarwerden von Fehlern(= Ausfälle) für Nutzer | ||||||
|         schwarz: ausfallfreie Kommunikation |         \item Fokus auf Anwendungsdomänen: Einzelplatzrechner und eingebettete Systeme | ||||||
|         \item |         \item Anliegen: Robustheit \textgreater{} Verständlichkeit \textgreater{} geringer HW-Bedarf | ||||||
|         rot: Ausfall und Behandlung |  | ||||||
|         \item |  | ||||||
|         blau: Wiederherstellung nach Ausfall |  | ||||||
|     \end{itemize*} |  | ||||||
| 
 |  | ||||||
|     Beispiel: Dateisystem-Serverausfall |  | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |  | ||||||
|         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-dateisystem-serverausfall.png} |  | ||||||
|         \item |  | ||||||
|         schwarz: ausfallfreie Kommunikation |  | ||||||
|         \item |  | ||||||
|         rot: Ausfall und Behandlung |  | ||||||
|         \item |  | ||||||
|         blau: Wiederherstellung nach Ausfall |  | ||||||
|     \end{itemize*} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     \subsection{Beispiel-Betriebssystem: |  | ||||||
|         MINIX} |  | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |  | ||||||
|         \item |  | ||||||
|         Ziele: |  | ||||||
|         \item |  | ||||||
|         robustes Betriebssystems |  | ||||||
|         \item |  | ||||||
|         $\rightarrow$ Schutz gegen Sichtbarwerden von |  | ||||||
|         Fehlern(= Ausfälle) für Nutzer |  | ||||||
|         \item |  | ||||||
|         Fokus auf Anwendungsdomänen: Endanwender-Einzelplatzrechner (Desktop, |  | ||||||
|         Laptop, Smart*) und eingebettete Systeme |  | ||||||
|         \item |  | ||||||
|         Anliegen: Robustheit \textgreater{} Verständlichkeit \textgreater{} |  | ||||||
|         geringer HW-Bedarf |  | ||||||
|         \item |  | ||||||
|         aktuelle Version: MINIX 3.3.0 |  | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|     Architektur |     Architektur | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item |         \item \includegraphics[width=.8\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur.png} | ||||||
|         Kommunikationsschnittstellen ... |         \item Anwendungen (weiß): Systemaufrufe im POSIX-Standard | ||||||
|         \begin{itemize*} |         \item Serverprozesse (grau): IPC (botschaftenbasiert), mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt | ||||||
|             %\item |  | ||||||
|             % %\includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur.png} |  | ||||||
|             \item ... für Anwendungen (weiß): Systemaufrufe im POSIX-Standard |  | ||||||
|             \item ... für Serverprozesse (grau): \begin{itemize*} \item untereinander: IPC (botschaftenbasiert) \item mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt \end{itemize*} |  | ||||||
|         \end{itemize*} |  | ||||||
|         \item |  | ||||||
|         Betriebssystem-Serverprozesse: |  | ||||||
|         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur-bs.png} |         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur-bs.png} | ||||||
|         \item |         \item Betriebssystem-Serverprozesse: Dateisystem (FS), Prozessmanagement (PM), Netzwerkmanagement (Net) | ||||||
|         Dateisystem (FS) |         \item Reincarnation Server (RS) $\rightarrow$ Micro-Reboots jeglicher Serverprozesse | ||||||
|         \item |         \item Kernelprozesse: systemtask, clocktask | ||||||
|         Prozessmanagement (PM) |  | ||||||
|         \item |  | ||||||
|         Netzwerkmanagement (Net) |  | ||||||
|         \item |  | ||||||
|         Reincarnation Server (RS) $\rightarrow$ Micro-Reboots |  | ||||||
|         jeglicher Serverprozesse |  | ||||||
|         \item |  | ||||||
|         (u. a.) ... |  | ||||||
|         \item |  | ||||||
|         Kernelprozesse: |  | ||||||
|         \item |  | ||||||
|         systemtask |  | ||||||
|         \item |  | ||||||
|         clocktask |  | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|     Reincarnation Server |     Reincarnation Server | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item |         \item Implementierungstechnik für Micro-Reboots | ||||||
|         Implementierungstechnik für Micro-Reboots: |         \item Prozesse zum Systemstart ($\rightarrow$ Kernel Image) | ||||||
|         \item |         \begin{description*} | ||||||
|         Prozesse zum Systemstart ( $\rightarrow$ Kernel |             \item[system, clock] Kernelprogramm | ||||||
|         Image): system, clock, init, rs |             \item[init] Bootstrapping (Initialisierung rs), Fork der Login-Shell | ||||||
|         \begin{itemize*} |             \item[rs] Fork aller BS-Serverprozesse inkl. Gerätetreiber | ||||||
|             \item system, clock: Kernelprogramm |         \end{description*} | ||||||
|             \item init: Bootstrapping (Initialisierung von rs und anderer BS-Serverprozesse), Fork der Login-Shell (und damit sämtlicher Anwendungsprozesse) |  | ||||||
|             \item rs: Fork sämtlicher BS-Serverprozesse, einschließlich Gerätetreiber |  | ||||||
|         \end{itemize*} |  | ||||||
|         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-reincarnation-server.png} |         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-reincarnation-server.png} | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|     MINIX: Ausprobieren |  | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |  | ||||||
|         \item |  | ||||||
|         \href{https://wiki.minix3.org/doku.php?id=www:getting-started:start}{ausführliche |  | ||||||
|             Dokumentation} |  | ||||||
|         \item |  | ||||||
|         \href{https://wiki.minix3.org/doku.php?id=www:download:start}{vorkompiliertes |  | ||||||
|             Kernel-Image zum Installieren (VirtualBox, VMWare, ...)} |  | ||||||
|     \end{itemize*} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     \subsection{Verfügbarkeit} |     \subsection{Verfügbarkeit} | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item |         \item komplementäre NFE zu Robustheit: Verfügbarkeit ( availability ) | ||||||
|         komplementäre NFE zu Robustheit: Verfügbarkeit ( availability ) |         \item Verbesserung von Robustheit $\rightarrow$ Verbesserung von Verfügbarkeit | ||||||
|         \begin{itemize*} |         \item Robustheitsmaßnahmen hinreichend , nicht notwendig %(hochverfügbare Systeme können sehr wohl von Ausfällen betroffen sein...) | ||||||
|             \item Zur Erinnerung: Untereigenschaften von Verlässlichkeit |         \item weitere komplementäre NFE: Robustheit $\rightarrow$ Sicherheit (security) | ||||||
|         \end{itemize*} |         \item Definition: Grad, zu welchem ein System oder eine Komponente funktionsfähig und zugänglich (erreichbar) ist, wann immer seine Nutzung erforderlich ist (IEEE) | ||||||
|         \begin{enumerate*} |         \item Anteil an Laufzeit eines Systems, in dem dieses seine spezifizierte Leistung erbringt | ||||||
| 
 |  | ||||||
|             \item Verfügbarkeit (availability) |  | ||||||
|             \item Robustheit (robustness, reliability) |  | ||||||
|         \end{enumerate*} |  | ||||||
|         \item |  | ||||||
|         Beziehung: |  | ||||||
|         \begin{itemize*} |  | ||||||
|             \item Verbesserung von Robustheit $\rightarrow$ Verbesserung von Verfügbarkeit |  | ||||||
|             \item Robustheitsmaßnahmen hinreichend , nicht notwendig (hochverfügbare Systeme können sehr wohl von Ausfällen betroffen sein...) |  | ||||||
|         \end{itemize*} |  | ||||||
|         \item |  | ||||||
|         eine weitere komplementäre NFE: |  | ||||||
|         \begin{itemize*} |  | ||||||
|             \item Robustheit $\rightarrow$ Sicherheit (security) |  | ||||||
|         \end{itemize*} |  | ||||||
|     \end{itemize*} |  | ||||||
| 
 |  | ||||||
|     Allgemeine Definition: Der Grad, zu welchem ein System oder eine |  | ||||||
|     Komponente funktionsfähig und zugänglich (erreichbar) ist,wann immer |  | ||||||
|     seine Nutzung erforderlichist. (IEEE) |  | ||||||
| 
 |  | ||||||
|     genauer quantifiziert: |  | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |  | ||||||
|         \item |  | ||||||
|         Der Anteil an Laufzeit eines Systems, in dem dieses seine |  | ||||||
|         spezifizierte Leistung erbringt. |  | ||||||
|         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-verfügbarkeit-laufzeit.png} |         %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-verfügbarkeit-laufzeit.png} | ||||||
|         \item |         \item $Availability= \frac{Total Uptime}{Total Lifetime}= \frac{MTTF}{MTTF + MTTR}$ | ||||||
|         Availability= Total Uptime/ Total Lifetime= MTTF / (MTTF + MTTR) |         \item MTTR: Mean Time to Recovery, MTTF: Mean Time to Failure | ||||||
|         \begin{itemize*} |         \item Hochverfügbarkeitsbereich (gefeierte ,,five nines'' availability) | ||||||
|             \item MTTR: Mean Time to Recovery ... Erwartungswert für TTR |         \item Maßnahmen: Robustheit, Redundanz, Ausfallmanagement | ||||||
|             \item MTTF: Mean Time to Failure ... Erwartungswert für TTF |  | ||||||
|         \end{itemize*} |  | ||||||
|         \item |  | ||||||
|         einige Verfügbarkeitsklassen: | Verfügbarkeit | |  | ||||||
|         Ausfallzeit pro Jahr | Ausfallzeit pro Woche | |  | ||||||
|         | ------------- | |  | ||||||
|         -------------------- | |  | ||||||
|         --------------------- |  | ||||||
|         | | 90\% | \textgreater{} 1 Monat |  | ||||||
|         | ca. 17 Stunden | | 99\% | ca. 4 |  | ||||||
|         Tage | ca. 2 Stunden | | 99,9\% | |  | ||||||
|         ca. 9 Stunden | ca. 10 Minuten | | 99,99\% |  | ||||||
|         | ca. 1 Stunde | ca. 1 Minute | | |  | ||||||
|         99,999\% | ca. 5 Minuten | ca. 6 Sekunden | |  | ||||||
|         | 99,9999\% | ca. 2 Sekunden | |  | ||||||
|         \textless\textless{} 1 Sekunde | |  | ||||||
|         \item |  | ||||||
|         Hochverfügbarkeitsbereich (gefeierte ,,five nines'' availability) |  | ||||||
|         \item |  | ||||||
|         Maßnahmen: |  | ||||||
|         \item |  | ||||||
|         Robustheitsmaßnahmen |  | ||||||
|         \item |  | ||||||
|         Redundanz |  | ||||||
|         \item |  | ||||||
|         Ausfallmanagement |  | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 | 
 | ||||||
|  |     einige Verfügbarkeitsklassen: | ||||||
|  |     \begin{tabular}{l|l|l} | ||||||
|  |         Verfügbarkeit & Ausfallzeit pro Jahr   & Ausfallzeit pro Woche          \\\hline | ||||||
|  |         90\%          & \textgreater{} 1 Monat & ca. 17 Stunden                 \\ | ||||||
|  |         99\%          & ca. 4 Tage             & ca. 2 Stunden                  \\ | ||||||
|  |         99,9\%        & ca. 9 Stunden          & ca. 10 Minuten                 \\ | ||||||
|  |         99,99\%       & ca. 1 Stunde           & ca. 1 Minute                   \\ | ||||||
|  |         99,999\%      & ca. 5 Minuten          & ca. 6 Sekunden                 \\ | ||||||
|  |         99,9999\%     & ca. 2 Sekunden         & \textless\textless{} 1 Sekunde | ||||||
|  |     \end{tabular} | ||||||
| 
 | 
 | ||||||
|     \subsubsection{QNX Neutrino: Hochverfügbares |     \subsubsection{QNX Neutrino: Hochverfügbares Echtzeit-BS} | ||||||
|         Echtzeit-BS} |  | ||||||
| 
 |  | ||||||
|     Überblick QNX: |  | ||||||
| 
 |  | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|         \item |         \item Mikrokern-Betriebssystem | ||||||
|         Mikrokern-Betriebssystem |         \item primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau | ||||||
|         \item |         \item Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber | ||||||
|         primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau |         \item (begrenzt) dynamische Micro-Rebootsmöglich | ||||||
|         \item |         \item $\rightarrow$ Maximierung der Uptime des Gesamtsystems | ||||||
|         Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber |  | ||||||
|         \item |  | ||||||
|         (begrenzt) dynamische Micro-Rebootsmöglich |  | ||||||
|         \item |  | ||||||
|         $\rightarrow$ Maximierung der Uptime des Gesamtsystems |  | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| 
 |     \begin{description*} | ||||||
|     Hochverfügbarkeitsmechanismen: |         \item[High-Avalability-Manager] Laufzeit-Monitor der Systemdienste/Anwendungsprozesse überwacht und neustartet $\rightarrow$ $\mu$Reboot-Server | ||||||
| 
 |         \item[High-Availability-Client-Libraries] Funktionen zur transparenten automatischen Reboot für ausgefallene Server-Verbindungen | ||||||
|     \begin{enumerate*} |     \end{description*} | ||||||
|         \item |  | ||||||
|         ,,High-Avalability-Manager'': Laufzeit-Monitor, der Systemdienste oder |  | ||||||
|         Anwendungsprozesse überwacht und neustartet |  | ||||||
|         $\rightarrow$ $\mu$Reboot-Server |  | ||||||
|         \item |  | ||||||
|         ,,High-Availability-Client-Libraries'': Funktionen zur transparenten |  | ||||||
|         automatischen Reboot für ausgefallene Server-Verbindungen |  | ||||||
|     \end{enumerate*} |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|     \section{Sicherheit} |     \section{Sicherheit} | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user