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}
|
||||
\begin{itemize*}
|
||||
\item Beobachtungen am Ausfallverhalten von BS:
|
||||
\item Kernelfehler sind (potenziell) fatal für gesamtes System
|
||||
\item Anwendungsfehler sind es nicht
|
||||
\item Kernelfehler potentiell fatal für gesamtes System
|
||||
\item Anwendungsfehler nicht
|
||||
\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 Ergänzung zu Isolationsmechanismen:
|
||||
\item[$\rightarrow$] BS-Code in Serverprozessen: verbleibendes Risiko unabhängiger Teilausfälle von BS-Funktionalität
|
||||
\item Ergänzung zu Isolationsmechanismen notwendig
|
||||
\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
|
||||
\end{itemize*}
|
||||
|
||||
Ansatz
|
||||
|
||||
\begin{itemize*}
|
||||
\item
|
||||
wir haben:
|
||||
\item
|
||||
kleinen, ergo vertrauenswürdigen (als fehlerfrei angenommenen)$\mu$Kernel
|
||||
\item
|
||||
BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen
|
||||
(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*}
|
||||
\item kleinen (als fehlerfrei angenommenen) $\mu$Kernel
|
||||
\item BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen %(kontrollierbare, aber wesentlich größere Codebasis)
|
||||
\item Treiber/Anwendungen in nicht vertrauenswürdigen Prozessen %(nicht kontrollierbare Codebasis)
|
||||
\item wollen 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: Ausfälle $\rightarrow$ Neustart durch spezialisierten Serverprozess
|
||||
\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*}
|
||||
%\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*}
|
||||
|
||||
|
||||
\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
|
||||
\item Ziel: robustes Betriebssystems
|
||||
\item[$\rightarrow$] Schutz gegen Sichtbarwerden von Fehlern(= Ausfälle) für Nutzer
|
||||
\item Fokus auf Anwendungsdomänen: Einzelplatzrechner und eingebettete Systeme
|
||||
\item Anliegen: Robustheit \textgreater{} Verständlichkeit \textgreater{} geringer HW-Bedarf
|
||||
\end{itemize*}
|
||||
|
||||
Architektur
|
||||
|
||||
\begin{itemize*}
|
||||
\item
|
||||
Kommunikationsschnittstellen ...
|
||||
\begin{itemize*}
|
||||
%\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=.8\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur.png}
|
||||
\item Anwendungen (weiß): Systemaufrufe im POSIX-Standard
|
||||
\item Serverprozesse (grau): IPC (botschaftenbasiert), mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt
|
||||
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur-bs.png}
|
||||
\item
|
||||
Dateisystem (FS)
|
||||
\item
|
||||
Prozessmanagement (PM)
|
||||
\item
|
||||
Netzwerkmanagement (Net)
|
||||
\item
|
||||
Reincarnation Server (RS) $\rightarrow$ Micro-Reboots
|
||||
jeglicher Serverprozesse
|
||||
\item
|
||||
(u. a.) ...
|
||||
\item
|
||||
Kernelprozesse:
|
||||
\item
|
||||
systemtask
|
||||
\item
|
||||
clocktask
|
||||
\item Betriebssystem-Serverprozesse: Dateisystem (FS), Prozessmanagement (PM), Netzwerkmanagement (Net)
|
||||
\item Reincarnation Server (RS) $\rightarrow$ Micro-Reboots jeglicher Serverprozesse
|
||||
\item Kernelprozesse: systemtask, clocktask
|
||||
\end{itemize*}
|
||||
|
||||
Reincarnation Server
|
||||
|
||||
\begin{itemize*}
|
||||
\item
|
||||
Implementierungstechnik für Micro-Reboots:
|
||||
\item
|
||||
Prozesse zum Systemstart ( $\rightarrow$ Kernel
|
||||
Image): system, clock, init, rs
|
||||
\begin{itemize*}
|
||||
\item system, clock: Kernelprogramm
|
||||
\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 Implementierungstechnik für Micro-Reboots
|
||||
\item Prozesse zum Systemstart ($\rightarrow$ Kernel Image)
|
||||
\begin{description*}
|
||||
\item[system, clock] Kernelprogramm
|
||||
\item[init] Bootstrapping (Initialisierung rs), Fork der Login-Shell
|
||||
\item[rs] Fork aller BS-Serverprozesse inkl. Gerätetreiber
|
||||
\end{description*}
|
||||
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-reincarnation-server.png}
|
||||
\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}
|
||||
|
||||
\begin{itemize*}
|
||||
\item
|
||||
komplementäre NFE zu Robustheit: Verfügbarkeit ( availability )
|
||||
\begin{itemize*}
|
||||
\item Zur Erinnerung: Untereigenschaften von Verlässlichkeit
|
||||
\end{itemize*}
|
||||
\begin{enumerate*}
|
||||
|
||||
\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 komplementäre NFE zu Robustheit: Verfügbarkeit ( availability )
|
||||
\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...)
|
||||
\item weitere komplementäre NFE: Robustheit $\rightarrow$ Sicherheit (security)
|
||||
\item Definition: Grad, zu welchem ein System oder eine Komponente funktionsfähig und zugänglich (erreichbar) ist, wann immer seine Nutzung erforderlich ist (IEEE)
|
||||
\item Anteil an Laufzeit eines Systems, in dem dieses seine spezifizierte Leistung erbringt
|
||||
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-verfügbarkeit-laufzeit.png}
|
||||
\item
|
||||
Availability= Total Uptime/ Total Lifetime= MTTF / (MTTF + MTTR)
|
||||
\begin{itemize*}
|
||||
\item MTTR: Mean Time to Recovery ... Erwartungswert für TTR
|
||||
\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
|
||||
\item $Availability= \frac{Total Uptime}{Total Lifetime}= \frac{MTTF}{MTTF + MTTR}$
|
||||
\item MTTR: Mean Time to Recovery, MTTF: Mean Time to Failure
|
||||
\item Hochverfügbarkeitsbereich (gefeierte ,,five nines'' availability)
|
||||
\item Maßnahmen: Robustheit, Redundanz, Ausfallmanagement
|
||||
\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
|
||||
Echtzeit-BS}
|
||||
|
||||
Überblick QNX:
|
||||
|
||||
\subsubsection{QNX Neutrino: Hochverfügbares Echtzeit-BS}
|
||||
\begin{itemize*}
|
||||
\item
|
||||
Mikrokern-Betriebssystem
|
||||
\item
|
||||
primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau
|
||||
\item
|
||||
Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber
|
||||
\item
|
||||
(begrenzt) dynamische Micro-Rebootsmöglich
|
||||
\item
|
||||
$\rightarrow$ Maximierung der Uptime des Gesamtsystems
|
||||
\item Mikrokern-Betriebssystem
|
||||
\item primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau
|
||||
\item Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber
|
||||
\item (begrenzt) dynamische Micro-Rebootsmöglich
|
||||
\item $\rightarrow$ Maximierung der Uptime des Gesamtsystems
|
||||
\end{itemize*}
|
||||
|
||||
Hochverfügbarkeitsmechanismen:
|
||||
|
||||
\begin{enumerate*}
|
||||
\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*}
|
||||
|
||||
\begin{description*}
|
||||
\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
|
||||
\end{description*}
|
||||
|
||||
\section{Sicherheit}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user