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