\documentclass[a4paper,portrait,english]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{url}
\usepackage{lmodern}
\usepackage{graphicx}
\setcounter{tocdepth}{1}

\date{2011-Aug-29}
\usetheme{CambridgeUS}

\setbeamercolor*{palette primary}{fg=green!50!black,bg=gray!20!white}
\setbeamercolor*{palette secondary}{fg=green!50!black,bg=gray!40!white}
\setbeamercolor*{palette tertiary}{bg=green!50!black,fg=white}
\setbeamercolor{titlelike}{bg=gray!20!white,fg=green!50!black}
\setbeamerfont{block title}{family=\sffamily}

\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
\setbeamercolor{block title alerted}{use=alerted text,fg=white,bg=alerted text.fg!75!black}
\setbeamercolor{block title example}{use=example text,fg=white,bg=example text.fg!75!black}
\setbeamercolor{block body}{parent=normal text,use=block title,bg=block title.bg!10!bg}
\setbeamercolor{block body alerted}{parent=normal text,use=block title alerted,bg=block title alerted.bg!10!bg}
\setbeamercolor{block body example}{parent=normal text,use=block title example,bg=block title example.bg!10!bg}

\begin{document}

\title{Warum SUSE?}
\date{2012-Aug-29}

\author{Jan Engelhardt <jan@inai.de>}

\frame{
	\titlepage
}

\frame{
	\tableofcontents
}

\section{Einleitung}

\frame{
	\frametitle{Distributionswahl persönlich}

	Wahl der eigenen Linuxdistro geschieht durch

	\begin{itemize}
	\item Beeinflussung durch Umfeld

		\begin{itemize}
		\item vorinstallierte Systeme
		\item persönliche Präferenzen von anderen Nutzern
		\end{itemize}

	\item eigenständige kritische Betrachtung und Durchprobieren
		anderer Wahlmöglichkeiten

	\end{itemize}
}

\frame{
	\frametitle{im Produktiveinsatz}

	\begin{itemize}

	\item Wunsch nach Support schränkt Distro-Wahl ein

	\item Wunsch nach spez.\ Software schränkt Distro-Wahl ggf.\ ein

	\item Anpassungen an Distribution mit Aufwand für SW-Hersteller
		verbunden

	\end{itemize}

	\pause

	\begin{example}{Diversität}
	\begin{itemize}
	\item /etc/sysconfig/networkscripts/ifcfg-*
	\item /etc/sysconfig/network/ifcfg-*
	\item /etc/network/interfaces
	\end{itemize}
	\end{example}

	\begin{itemize}

	\item Folge: SW-Hersteller beschränken sich auf Marktführer

	\end{itemize}
}

\section{Serverbetrieb}

\subsection{Xen}

\frame{
	\frametitle{Xen}

	\begin{itemize}

	\item KVM erfordert Hardwareunterstützung (fehlt bisweilen)

	\item homogene Linuxumgebung ermöglicht Paravirtualisierung

	\item eigenes Kernelcompilat oft nicht tragbar

	\end{itemize}
}

\subsection{Zypper/libzypp}

\frame{
	\frametitle{zypper}

	Moderne Paketverwaltung mit zypper

	\begin{itemize}

	\item zypper (als Frontend zu libzypp) als Frontend zu rpm

	\item SAT-Solver: schnell, korrekt, allwissend

	\end{itemize}
}

\frame{
	\frametitle{Beispiel: ``postfix'' entfernen}

	\begin{block}{Rekursive Auflösung von Abhängigkeiten}
	\texttt{
	\textbf{\# yum remove postfix}\\
	--> Running transaction check\\
	---> Package postfix.x86\_64 2:2.6.6-2.2.el6\_1 will be erased\\
	--> Running transaction check\\
	---> Package cronie.x86\_64 0:1.4.4-7.el6 will be erased\\
	--> Running transaction check\\
	---> Package cronie-anacron.x86\_64 0:1.4.4-7.el6 will be erased\\
	--> Running transaction check\\
	---> Package crontabs.noarch 0:1.10-33.el6 will be erased
	}
	\end{block}

	\begin{itemize}

	\item cron würde nicht mehr funktionieren

	\end{itemize}
}

\frame{
	\frametitle{Beispiel: ``postfix'' entfernen}

	\begin{block}{Featureverlust vermeiden}
	\texttt{
	\textbf{\# zypper rm postfix}\\
	The following NEW package is going to be installed:\\
	~~exim\\
	The following package is going to be REMOVED:\\
	~~postfix\\
	1 new package to install, 1 to remove.}
	\end{block}

	\begin{itemize}

	\item Angebot einer alternativen Software\\
	(cron will auch hier einen smtp\_daemon)

	\end{itemize}
}

\frame{
	\frametitle{Beispiel: conflicting package}

	\begin{block}{Installation eines konflikterzeugendes Paketes}
	\texttt{
	\textbf{\# zypper in -{}- libjpeg-normal -libjpeg-turbo}\\
	Problem: gimp-accelerated requires libjpeg-turbo,
	but this requirement cannot be provided\\
	~~Solution 1: Following actions will be done:\\
	~~~~deinstallation of gimp-accelerated\\
	~~Solution 2: do not install libjpeg-normal\\
	~~Solution 3: break gimp-accelerated by ignoring some of its
	dependencies\\
	Choose from above solutions by number or cancel [1/2/3/c] (c):
	}
	\end{block}
}

\subsection{Filesysteme}

\frame{
	\frametitle{Filesysteme}

	\begin{itemize}

	\item btrfs als modernes FS mit integriertem RAID auf Objektebene,
	Subvolumes, Snapshots, Checksums, Kompression

	\item XFS als skalierendes FS

	\item ext4: wechselndes Verhalten

	\item David Chinner über XFS Scalability (u.a. im Vergleich
	mit ext4 und btrfs)~-- \url{http://www.youtube.com/watch?v=FegjLbCnoBw}


	\end{itemize}
}

\subsection{Filesysteme: btrfs}

\frame{
	\frametitle{Backups mit btrfs}

	\begin{itemize}

	\item früher: inkrementell, Timestamps vergleichen, tar-Archiv o.ä.

	\item btrfs: sofortiger atomarer Snapshot

	\item btrfs: voll navigierbar, schnell durchsuchbar

	\end{itemize}
}

\frame{
	\frametitle{btrfs subvols}

	\begin{block}{Ansicht}
	\texttt{
	\textbf{\# ls -l}\\
	drwxr-xr-x  1 root root  504 Jul 11 HEAD\\
	drwxr-xr-x  1 root root  504 Jul 11 snap-2012-08-15\\
	drwxr-xr-x  1 root root  504 Jul 11 snap-2012-08-16\\
	drwxr-xr-x  1 root root  504 Jul 11 snap-2012-08-17\\
	}
	\end{block}

	\begin{block}{btrfsprogs}
	\texttt{
	\textbf{\# btrfs sub list /top.srv/}\\
	ID 256 top level 5 path HEAD\\
	ID 1154 top level 5 path snap-2012-08-15\\
	ID 1155 top level 5 path snap-2012-08-16\\
	ID 1184 top level 5 path snap-2012-08-17
	}
	\end{block}
}

\frame{
	\frametitle{btrfs disk stats}

	\begin{block}{df}
	\texttt{
	\textbf{\# df -BG}\\
	Filesystem~~1G-blocks~~Used~~Available~~Use\%~~Mounted on\\
	/dev/sdf~~~~~~~~5590G~3470G~~~~~~1920G~~~65\%~~/top.srv
	}
	\end{block}

	\begin{block}{btrfsprogs}
	\texttt{
	\textbf{\# btrfs fi df .}\\
	Data, RAID10: total=2.10TiB, used=1.68TiB\\
	System, RAID10: total=128.00MiB, used=260.00KiB\\
	System: total=4.00MiB, used=0.00\\
	Metadata, RAID10: total=112.00GiB, used=14.42GiB
	}
	\end{block}

	\begin{itemize}

	\item Zählweise manchmal gewöhnungsbedürftig

	\end{itemize}
}

\frame{
	\frametitle{btrfs info}

	\begin{block}{btrfsprogs}
	\texttt{
	\textbf{\# btrfs fi show}\\
	Label: ``srv'' uuid: 78951b79-300a-4cea-b8ee-f70f580d58b9\\
	~~~~~~~Total devices 4 FS bytes used 1.69TiB\\
	~~~~~~~devid 1 size 1.36TiB used 1.11TiB path /dev/sdc\\
	~~~~~~~devid 3 size 1.36TiB used 1.11TiB path /dev/sde\\
	~~~~~~~devid 4 size 1.36TiB used 1.11TiB path /dev/sdf\\
	~~~~~~~devid 2 size 1.36TiB used 1.11TiB path /dev/sdd
	}
	\end{block}

	\begin{itemize}

	\item \texttt{du}(1) über Objekte mit geteilten Extents
		problematisch

	\item Fragmentierung

	\end{itemize}
}

\section{Mitwirken}

\frame{
	\frametitle{Mitwirkungsmöglichkeitne}

	\begin{itemize}
	\item Distribution ausprobieren und bei Fehlern rückmelden (Bugzilla)
	\item eigenständige Behebung von Fehlern, Paketierung von Software (Build Service)
	\item Artwork, Übersetzung
	\item ``politische Ebene''
	\end{itemize}
}

\section{Build Service}

\frame{
	\frametitle{Open Build Service}

	\begin{itemize}

	\item wenn rpmbuild -bb/dpkg -b nicht genug ist

	\item OBS hilft bei der Einrichtung des Buildroots mit allen
		notwendigen Abhängigkeiten

	\pause

	\item automatische Neukompilierung (bspw.\ gimp nach libjpeg)

	\item Verteilung der Buildjobs auf einen Workercluster

	\pause

	\item Nutzung von öffentlichen Instanzen möglich~--
		\texttt{build.opensuse.org}

	\item proprietäre Pakete in einer privaten Instanz bauen

	\pause

	\item größtes Repository

	\end{itemize}
}

\end{document}
