--- trunk/zfs-foredrag.tex 2013/12/23 19:29:02 5 +++ trunk/zfs-foredrag.tex 2013/12/23 19:29:45 6 @@ -54,12 +54,12 @@ \newcommand{\rfc}[1]{\href{http://tools.ietf.org/html/rfc#1}{RFC~#1}} \newcommand{\prfc}[1]{(\rfc{#1})} -\title{\textbf{Tittel}} -\subtitle{Undertittel} +\title{\textbf{ZFS}} +\subtitle{Siste ord innen filsystemer} \author[T.~Endrestøl]{\href{http://fig.ol.no/~trond/}{Trond Endrestøl}} \institute[FSI/IT]{\href{http://fagskolen-innlandet.no/}{Fagskolen Innlandet}, IT-avdelingen} -\subject{Emne for bruk i egenskapene til PDF-fila} -\keywords{Nøkkelord for bruk i egenskapene til PDF-fila} +%\subject{Emne for bruk i egenskapene til PDF-fila} +%\keywords{Nøkkelord for bruk i egenskapene til PDF-fila} \date{\today} % eller %\date{23.\ desember 2013} @@ -69,96 +69,324 @@ \titlepage \end{frame} -\section*{Oversikt av hele foredraget} +\section*{Foredragets filer} +\begin{frame}[allowframebreaks] + \frametitle{Foredragets filer} + \begin{itemize} + \item Filene til foredraget er tilgjengelig gjennom: + \begin{itemize} + \item Subversion: \texttt{svn co + \url{svn://svn.ximalas.info/zfs-foredrag}} + \item Web: + \href{http://svnweb.ximalas.info/zfs-foredrag/}{\texttt{svnweb.ximalas.info/zfs-foredrag}} + \item Begge metodene er tilgjengelig med både IPv4 og \alert{IPv6} + \end{itemize} + \item + \href{http://svnweb.ximalas.info/zfs-foredrag/trunk/zfs-foredrag.foredrag.pdf?view=co}{\texttt{zfs-foredrag.foredrag.pdf}} + vises på lerretet + \item + \href{http://svnweb.ximalas.info/zfs-foredrag/trunk/zfs-foredrag.handout.pdf?view=co}{\texttt{zfs-foredrag.handout.pdf}} + er mye bedre for publikum å se på + \item + \href{http://svnweb.ximalas.info/zfs-foredrag/trunk/zfs-foredrag.handout.2on1.pdf?view=co}{\texttt{zfs-foredrag.handout.2on1.pdf}} + og + \href{http://svnweb.ximalas.info/zfs-foredrag/trunk/zfs-foredrag.handout.4on1.pdf?view=co}{\texttt{zfs-foredrag.handout.4on1.pdf}} + er begge velegnet til utskrift + \item \texttt{*.169.pdf}-filene er i 16:9-format + \item \texttt{*.1610.pdf}-filene er i 16:10-format + \framebreak + \item Foredraget er mekket ved hjelp av + \href{http://www.gnu.org/software/emacs/}{GNU~Emacs}, + \href{http://www.gnu.org/software/auctex/}{AUC\TeX}, + \href{http://www.tug.org/applications/pdftex/}{pdf\TeX} fra + \href{http://miktex.org/}{MiK\TeX}, + \href{http://www.latex-project.org/}{\LaTeX}-dokumentklassa + \href{https://bitbucket.org/rivanvx/beamer/wiki/Home}{beamer}, + \href{http://subversion.apache.org/}{Subversion}, + \href{http://tortoisesvn.net/}{TortoiseSVN} og + \href{http://get.adobe.com/no/reader/}{Adobe Reader} + \item Hovedfila bærer denne identifikasjonen:\\ + \texttt{\$${}$Ximalas${}$\$} + \item Driverfila for denne PDF-fila bærer denne identifikasjonen:\\ + \svndriverfil + \item Copyright \copyright\ 2013 Trond Endrestøl + \item Dette verket er lisensiert med: + \href{http://creativecommons.org/}{Creative Commons}, + \href{http://creativecommons.org/licenses/by-sa/3.0/no/}{Navngivelse-DelPåSammeVilkår + 3.0 Norge} (CC BY-SA + 3.0)\hfill\includegraphics[scale=.25]{by-sa.pdf} + \end{itemize} +\end{frame} + +\section*{Oversikt over hele foredraget} \begin{frame}%[allowframebreaks] - \frametitle{Oversikt av hele foredraget} - \framesubtitle{Del 1: Bla, bla, bla} + \frametitle{Oversikt over hele foredraget} + \framesubtitle{Del 1: ZFS?} \tableofcontents[part=1]%[pausesections] \end{frame} \begin{frame}%[allowframebreaks] - \frametitle{Oversikt av hele foredraget} - \framesubtitle{Del 2: Bla, bla, bla} + \frametitle{Oversikt over hele foredraget} + \framesubtitle{Del 2: ZFS!} \tableofcontents[part=2]%[pausesections] \end{frame} -\part{Del 1} +\part{Del 1: ZFS?} \begin{frame} \partpage \end{frame} -\section*{Oversikt over del~1: Bla, bla, bla} +\section*{Oversikt over del~1: ZFS?} \begin{frame}%[allowframebreaks] - \frametitle{Oversikt over del~1: Bla, bla, bla} + \frametitle{Oversikt over del~1: ZFS?} \tableofcontents%[pausesections] \end{frame} -\section{Sammendrag} +\section{Hva er ZFS?} \begin{frame}%[allowframebreaks] - \frametitle{Sammendrag} + \frametitle{Hva er ZFS?} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item ZFS er både + \begin{enumerate}[<+->] + \item Logisk volumhåndterer\hfill(Logical Volume Manager, LVM) + \item Filsystem med snapshots og kloner + \end{enumerate} + \item Enklere organisering enn «Storage Spaces» i Microsoft Windows + Server 2012 + \item Lagringen organiseres i pooler som kan bestå av + \begin{enumerate}[<+->] + \item Enkeltdisker\slash partisjoner + \item Striping (RAID~0) mellom to eller flere disker\slash partisjoner + \item Speiling (RAID~1) mellom to eller flere disker\slash partisjoner + \item \texttt{raidz1} (RAID~5) over tre eller flere disker\slash + partisjoner + \item \texttt{raidz2} (RAID~6) over seks eller flere disker\slash + partisjoner + \item \texttt{raidz3} («RAID~7») over ni eller flere disker\slash + partisjoner + \end{enumerate} + \item Visse kombinasjoner av det overstående er også mulig \end{itemize} \end{frame} -\section{Emne 1} +\section{Hva er grensene til ZFS?} \begin{frame}%[allowframebreaks] - \frametitle{Emne 1} + \frametitle{Hva er grensene til ZFS?} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item ZFS er stort sett grenseløs + \begin{itemize}[<+->] + \item 128-bit diskadresser + \item Maks.\ $2^{48}$ poster i hver katalog + \item Maks.\ $2^{64}$ bytes (16~EiB, 16~exbibytes) for hver fil + \item Maks.\ $2^{64}$ bytes for hvert attributt + \item Maks.\ $2^{78}$ bytes (256~ZiB, 256~zebibytes) i hver pool + \item Maks.\ $2^{56}$ attributter for hver fil (egentlig begrenset + til $2^{48}$ attributter) + \item Maks.\ $2^{64}$ enheter tilknyttet en gitt pool + \item Maks.\ $2^{64}$ pooler i et og samme system + \item Maks.\ $2^{64}$ filsystemer i samme pool + \end{itemize} + \item Vis meg det systemet som klarer å sprenge noen av disse + grensene! \end{itemize} \end{frame} -\subsection{Underemne 1a} +\section{Hvordan virker ZFS?} \begin{frame}%[allowframebreaks] - \frametitle{Emne 1} - \framesubtitle{Underemne 1a} + \frametitle{Hvordan virker ZFS?} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item ZFS unngår RAID~5-skrivehullet til typiske RAID-kontrollere + \begin{enumerate}[<+->] + \item Skriver nye data til de samme datablokkene som tidligere + \item Regner ut ny paritet + \item Skriver oppdatert paritet til de samme paritetsblokkene som + tidligere + \begin{itemize}[<+->] + \item Hva skjer hvis du får strømbrudd mellom 1 og 3? + \item Har diskkontrolleren batteribeskyttet minne? + \end{itemize} + \end{enumerate} + \item ZFS skriver fulle striper; data og paritet samtidig + \item ZFS bruker «copy-on-write»; skriver nye data til ledige + diskblokker + \item Endringer som hører sammen, samles i transaksjonsgrupper + \item Sjekksummer brukes for alt som blir lagret + \begin{itemize}[<+->] + \item ZFS kontrollerer at leste data er de samme som ble skrevet + \item Oppdages avvik, leter ZFS etter alternativer + \item Finnes alternativer, enten speilkopier eller paritet + \begin{enumerate}[<+->] + \item Leveres korrekte data til applikasjonen, og + \item avviket korrigeres automatisk på den syke disken + \end{enumerate} + \item Finnes ingen alternativer, så må filene restaureres fra + backup + \end{itemize} \end{itemize} \end{frame} -\part{Del 2} +\section{ZFS og RAID-kontrollere} +\begin{frame}%[allowframebreaks] + \frametitle{ZFS og RAID-kontrollere} + \pause + \begin{itemize}[<+->] + \item \alert{Ikke} bruk ZFS sammen med RAID-kontrollere! + \item I verste fall kan RAID-kontrolleren motarbeide ZFS + \item Sett kontrolleren i JBOD-modus, eller + \item la hver disk være sitt enslige RAID~0-volum + \end{itemize} +\end{frame} +\section{Hvor kommer ZFS fra?} +\begin{frame}%[allowframebreaks] + \frametitle{Hvor kommer ZFS fra?} + \pause + \begin{itemize}[<+->] + \item Utviklet av Jeff Bonwick og kollegaer ved Sun Microsystems, + Inc. + \item Arbeidet begynte i 2001 + \item ZFS $\to$ Solaris, oktober 2005 + \item ZFS er lisensiert etter «Common Development and Distribution + License» (CDDL) + \item ZFS $\to$ OpenSolaris, november 2005 + \item ZFS $\to$ FreeBSD, april 2007 + \item Linux' GPL~v2-lisens kompliserer import av ZFS + \begin{itemize}[<+->] + \item ZFS i Linux gjennom FUSE gjenstår som en (treg) mulighet + \item Brian Behlendorf ved Lawrence Livermore National Laboratory + (LLNL) har laget «Native ZFS for\slash on Linux» + \end{itemize} + \item ZFS var tilgjengelig i Mac OS~X 10.5, bare read-only, men har + vært tilbaketrukket siden oktober 2009 + \item Andre OS med ZFS-støtte: OpenIndiana, FreeNAS, PC-BSD, + GNU/kFreeBSD og NetBSD + \end{itemize} +\end{frame} + +\section{Fremtiden for ZFS?} +\begin{frame}%[allowframebreaks] + \frametitle{Fremtiden for ZFS?} + \pause + \begin{itemize}[<+->] + \item Oracle kjøpte opp Sun Microsystems, 27.~januar 2010 + \item Oracle ville gjøre OpenSolaris om til «ClosedSolaris» + \item Hele ZFS-teamet hos Oracle sa opp på dagen, 90 dager etter den + avgjørelsen + \item ZFS lever videre hos + \begin{itemize}[<+->] + \item Oracle + \item illumos + \item OpenZFS + \item FreeBSD + \item Delphix + \item iXsystems + \item Joyent + \item NetBSD + \item Nexenta + \end{itemize} + \end{itemize} +\end{frame} + +%\subsection{Underemne 1a} +%\begin{frame}%[allowframebreaks] +% \frametitle{Emne 1} +% \framesubtitle{Underemne 1a} +% \pause +% \begin{itemize}[<+->] +% \item Bla, bla, bla +% \end{itemize} +%\end{frame} + +\part{Del 2: ZFS!} + \begin{frame} \partpage \end{frame} -\section*{Oversikt over del~2: Bla, bla, bla} +\section*{Oversikt over del~2: ZFS!} \begin{frame}%[allowframebreaks] - \frametitle{Oversikt over del~2: Bla, bla, bla} + \frametitle{Oversikt over del~2: ZFS!} \tableofcontents%[pausesections] \end{frame} -\section{Sammendrag} +\section{Administrasjon av ZFS} \begin{frame}%[allowframebreaks] - \frametitle{Sammendrag} + \frametitle{Administrasjon av ZFS} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item To kommandoer (med underkommandoer): + \begin{enumerate}[<+->] + \item \texttt{zpool} + \item \texttt{zfs} + \end{enumerate} + \item Det finnes en tredje kommando for de nysgjerrige: \texttt{zdb} + \begin{itemize}[<+->] + \item Brukes for å avlese indre ZFS-detaljer + \end{itemize} \end{itemize} \end{frame} -\section{Emne 2} +\section{Oppretting av pooler} \begin{frame}%[allowframebreaks] - \frametitle{Emne 2} + \frametitle{Oppretting av pooler} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item \texttt{zpool create [\textit{opsjoner}] + \textit{navn-på-pool\/} [\textit{organiseringstype}] + \textit{ingredienser\/} [\textit{organiseringstype + ingredienser}] ...} + \item Unngå å plassere mer enn 9 enheter i hver vdev + \item I stedet for å stripe en pool over 20 harddisker, vurdér å + speile to og to harddisker i 10 grupper \end{itemize} \end{frame} -\subsection{Underemne 2a} +\subsection{Enkle pool-eksempler} \begin{frame}%[allowframebreaks] - \frametitle{Emne 2} - \framesubtitle{Underemne 2a} + \frametitle{Oppretting av pooler} + \framesubtitle{Enkle pool-eksempler} \pause \begin{itemize}[<+->] - \item Bla, bla, bla + \item Singledisk: + \item \texttt{zpool create rpool da0} + \item RAID~0 over to disker: + \item \texttt{zpool create rpool da0 da1} + \item RAID~1 over to disker: + \item \texttt{zpool create rpool \alert{mirror} da0 da1} + \item RAID~5 over tre disker: + \item \texttt{zpool create rpool \alert{raidz1} da0 da1 da2} + \item RAID~6 over seks disker: + \item \texttt{zpool create rpool \alert{raidz2} da0 da1 da2 da3 da4 + da5} + \item «RAID~7» over ni disker: + \item \texttt{zpool create rpool \alert{raidz3} da0 da1 da2 da3 da4 + da5 da6 da7 da8} + \end{itemize} +\end{frame} + +\subsection{Avanserte pool-eksempler} +\begin{frame}%[allowframebreaks] + \frametitle{Oppretting av pooler} + \framesubtitle{Avanserte pool-eksempler} + \pause + \begin{itemize}[<+->] + \item RAID~\only<1-3|handout:0>{?}\only<4->{1+0 (3 vdevs)}: + \item \texttt{zpool create rpool \alert{mirror} da0 da1 + \alert{mirror} da2 da3 \alert{mirror} da4 da5} + \pause + \item RAID~\only<5-6|handout:0>{?}\only<7->{5+0 (2 vdevs)}: + \item \texttt{zpool create rpool \alert{raidz1} da0 da1 da2 + \alert{raidz1} da3 da4 da5} + \pause + \item RAID~\only<8-9|handout:0>{?}\only<10->{6+0 (2 vdevs)}: + \item \texttt{zpool create rpool \alert{raidz2} da0 da1 da2 da3 \alert{raidz2} da4 da5 da6 da7} + \pause + \item RAID~\only<11-12|handout:0>{?}\only<13->{1+5+0 (2 vdevs)}: + \item \texttt{zpool create rpool \alert{mirror} da0 da1 \alert{raidz1} da2 da3 da4} \end{itemize} \end{frame}