% -*- coding: utf-8 -*- % $Ximalas$ %\documentclass{beamer} %\documentclass[handout]{beamer} %\usepackage{pgfpages} %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm] %\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm] %\setbeameroption{show notes} % on second screen} \def\jobname{zfs-foredrag} % Sett riktig navn på presentasjonen her. \setjobnamebeamerversion{\jobname} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[norsk]{babel} \usepackage{booktabs} \usepackage{multicol} \usepackage{fancyvrb} %\usepackage{epstopdf} %\epstopdfsetup{update} %\usetheme{AnnArbor} %\usetheme{Boadilla} %\usetheme{boxes} %\usetheme{CambridgeUS} %\usetheme{Antibes} %\usetheme{Bergen} %\usetheme{Berkeley} %\usetheme{Berlin} %\usetheme{Copenhagen} %\usetheme{Darmstadt} %\usetheme{Dresden} %\usetheme{Frankfurt} %\usetheme{Goettingen} %\usetheme{Hannover} %\usetheme{Ilmenau} %\usetheme{JuanLesPins} %\usetheme{Luebeck} \usetheme{Madrid} %\usetheme{Malmoe} %\usetheme{Marburg} %\usetheme{Montpellier} %\usetheme{PaloAlto} %\usetheme{Pittsburgh} %\usetheme{Rochester} %\usetheme{Singapore} %\usetheme{Szeged} %\usetheme{Warsaw} \hypersetup{colorlinks,linkcolor=,urlcolor=blue} \newcommand{\Alert}[2]{\alert<#1>{#2}} \newcommand{\Textbackslash}{\textbackslash\penalty\exhyphenpenalty} \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} \begin{document} \begin{frame} \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} \end{document} Local Variables: TeX-PDF-mode:t End: