Micro Reboots & Verfügbarkeit

This commit is contained in:
WieErWill 2022-02-25 11:14:20 +01:00
parent 86f907f98b
commit ac2e5d1ae1
2 changed files with 76 additions and 219 deletions

Binary file not shown.

View File

@ -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}