*** trunk/zfs-foredrag.tex 2013/12/23 19:29:02 5
--- trunk/zfs-foredrag.tex 2013/12/23 19:29:45 6
***************
*** 54,65 ****
\newcommand{\rfc}[1]{\href{http://tools.ietf.org/html/rfc#1}{RFC~#1}}
\newcommand{\prfc}[1]{(\rfc{#1})}
! \title{\textbf{Tittel}}
! \subtitle{Undertittel}
\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}
\date{\today} % eller
%\date{23.\ desember 2013}
--- 54,65 ----
\newcommand{\rfc}[1]{\href{http://tools.ietf.org/html/rfc#1}{RFC~#1}}
\newcommand{\prfc}[1]{(\rfc{#1})}
! \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}
\date{\today} % eller
%\date{23.\ desember 2013}
***************
*** 69,164 ****
\titlepage
\end{frame}
! \section*{Oversikt av hele foredraget}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt av hele foredraget}
! \framesubtitle{Del 1: Bla, bla, bla}
\tableofcontents[part=1]%[pausesections]
\end{frame}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt av hele foredraget}
! \framesubtitle{Del 2: Bla, bla, bla}
\tableofcontents[part=2]%[pausesections]
\end{frame}
! \part{Del 1}
\begin{frame}
\partpage
\end{frame}
! \section*{Oversikt over del~1: Bla, bla, bla}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt over del~1: Bla, bla, bla}
\tableofcontents%[pausesections]
\end{frame}
! \section{Sammendrag}
\begin{frame}%[allowframebreaks]
! \frametitle{Sammendrag}
\pause
\begin{itemize}[<+->]
! \item Bla, bla, bla
\end{itemize}
\end{frame}
! \section{Emne 1}
\begin{frame}%[allowframebreaks]
! \frametitle{Emne 1}
\pause
\begin{itemize}[<+->]
! \item Bla, bla, bla
\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}
\begin{frame}
\partpage
\end{frame}
! \section*{Oversikt over del~2: Bla, bla, bla}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt over del~2: Bla, bla, bla}
\tableofcontents%[pausesections]
\end{frame}
! \section{Sammendrag}
\begin{frame}%[allowframebreaks]
! \frametitle{Sammendrag}
\pause
\begin{itemize}[<+->]
! \item Bla, bla, bla
\end{itemize}
\end{frame}
! \section{Emne 2}
\begin{frame}%[allowframebreaks]
! \frametitle{Emne 2}
\pause
\begin{itemize}[<+->]
! \item Bla, bla, bla
\end{itemize}
\end{frame}
! \subsection{Underemne 2a}
\begin{frame}%[allowframebreaks]
! \frametitle{Emne 2}
! \framesubtitle{Underemne 2a}
\pause
\begin{itemize}[<+->]
! \item Bla, bla, bla
\end{itemize}
\end{frame}
--- 69,392 ----
\titlepage
\end{frame}
! \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 over hele foredraget}
! \framesubtitle{Del 1: ZFS?}
\tableofcontents[part=1]%[pausesections]
\end{frame}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt over hele foredraget}
! \framesubtitle{Del 2: ZFS!}
\tableofcontents[part=2]%[pausesections]
\end{frame}
! \part{Del 1: ZFS?}
\begin{frame}
\partpage
\end{frame}
! \section*{Oversikt over del~1: ZFS?}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt over del~1: ZFS?}
\tableofcontents%[pausesections]
\end{frame}
! \section{Hva er ZFS?}
\begin{frame}%[allowframebreaks]
! \frametitle{Hva er ZFS?}
\pause
\begin{itemize}[<+->]
! \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{Hva er grensene til ZFS?}
\begin{frame}%[allowframebreaks]
! \frametitle{Hva er grensene til ZFS?}
\pause
\begin{itemize}[<+->]
! \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}
! \section{Hvordan virker ZFS?}
\begin{frame}%[allowframebreaks]
! \frametitle{Hvordan virker ZFS?}
\pause
\begin{itemize}[<+->]
! \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}
! \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: ZFS!}
\begin{frame}%[allowframebreaks]
! \frametitle{Oversikt over del~2: ZFS!}
\tableofcontents%[pausesections]
\end{frame}
! \section{Administrasjon av ZFS}
\begin{frame}%[allowframebreaks]
! \frametitle{Administrasjon av ZFS}
\pause
\begin{itemize}[<+->]
! \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{Oppretting av pooler}
\begin{frame}%[allowframebreaks]
! \frametitle{Oppretting av pooler}
\pause
\begin{itemize}[<+->]
! \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{Enkle pool-eksempler}
\begin{frame}%[allowframebreaks]
! \frametitle{Oppretting av pooler}
! \framesubtitle{Enkle pool-eksempler}
\pause
\begin{itemize}[<+->]
! \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}
|