--- trunk/zfs-foredrag.tex 2014/01/02 11:53:00 8 +++ trunk/zfs-foredrag.tex 2014/01/03 12:51:58 10 @@ -155,7 +155,7 @@ \item Tilbyr også «zvolumer» som lagringsenheter for andre filsystemer \end{enumerate} - \item ZFS tar dataintegritet på alvor; hastighet kommer i senere rekker + \item ZFS tar dataintegritet på alvor, deretter brukervennlighet; hastighet kommer i senere rekker \item Enklere organisering enn «Storage Spaces» i Microsoft Windows Server 2012 \item Lagringen organiseres i pooler som kan bestå av @@ -171,9 +171,49 @@ flere disker\slash partisjoner \end{enumerate} \item Visse kombinasjoner av det overstående er også mulig + \item Filsystemet blir opprettet samtidig med poolen \end{itemize} \end{frame} +\section{Et eksempel på en pool} +\begin{frame}[fragile]%[allowframebreaks] + \frametitle{Et eksempel på en pool} + \pause +\begin{Verbatim}[commandchars=\\\{\},fontsize=\tiny] +trond@enterprise:~>\Alert{3|handout:0}{zpool status enterprise_zdata} + pool: \Alert{4,7|handout:0}{enterprise_zdata} + state: \Alert{7|handout:0}{ONLINE} + scan: \Alert{10|handout:0}{scrub repaired 0 in 2h15m with 0 errors on Wed Jan 1 07:18:51 2014} +config: + + NAME STATE READ WRITE CKSUM + \Alert{4,7|handout:0}{enterprise_zdata} \Alert{7|handout:0}{ONLINE} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} + \Alert{5,8|handout:0}{raidz1-0} \Alert{8|handout:0}{ONLINE} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} + \Alert{6,8|handout:0}{ada2} \Alert{8|handout:0}{ONLINE} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} + \Alert{6,8|handout:0}{ada3} \Alert{8|handout:0}{ONLINE} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} + \Alert{6,8|handout:0}{ada4} \Alert{8|handout:0}{ONLINE} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} \Alert{9|handout:0}{0} + +\Alert{11|handout:0}{errors: No known data errors} +trond@enterprise:~>\Alert{11|handout:0}{zfs get creation enterprise_zdata} +NAME PROPERTY VALUE SOURCE +enterprise_zdata creation \Alert{11|handout:0}{Sun Jan 8 14:14 2012} - +\end{Verbatim} + \pause + \begin{multicols}{2} + \begin{itemize}[<+->] + \item Kommando for status%: \texttt{zpool status enterprise\_zdata} + \item Poolen heter \texttt{enterprise\_zdata} + \item Består av én «vdev» («virtual device»), \texttt{raidz1}, striping med enkel paritet + \item Medlemmene er de tre harddiskene \texttt{ada2}, \texttt{ada3} og \texttt{ada4} + \item Poolen har det bare bra og er \texttt{ONLINE} + \item Det samme gjelder for vdeven og dens tre medlemmer + \item Null i telleverkene + \item Siste skrubbing avsluttet 1.~januar 2014, kl.~07:18:15%, etter omlag 2 timer og 15 minutter med gjennomlesing + \item Ingen feil registrert siden 8.~januar 2012, kl.~14:14 + \end{itemize} + \end{multicols} +\end{frame} + \section{Hva er grensene til ZFS?} \begin{frame}%[allowframebreaks] \frametitle{Hva er grensene til ZFS?} @@ -212,15 +252,15 @@ \item Skriver oppdatert paritet til de samme paritetsblokkene som tidligere \begin{itemize}[<+->] - \item Hva skjer nå \textit{og\/} senere hvis du får strømbrudd - mellom punktene 1 og 4? + \item Hva skjer \textit{nå\/} og \textit{senere\/} hvis du får + strømbrudd mellom punktene 1 og 4? \item Har diskkontrolleren batteribeskyttet minne? \end{itemize} \end{enumerate} - \item ZFS skriver fulle striper; data og paritet samtidig + \item ZFS skriver komplette 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 Endringer som hører sammen, samles i transaksjonsgrupper («txg») \item Sjekksummer brukes for alt som blir lagret \begin{itemize}[<+->] \item ZFS kontrollerer at leste data er de samme som ble skrevet @@ -228,7 +268,7 @@ \item Finnes alternativer, enten speilkopier eller paritet, så \begin{enumerate}[<+->] \item Leveres korrekte data til applikasjonen, og - \item Avviket korrigeres automatisk på den syke disken + \item Avviket korrigeres automatisk på den syke disken («resilver») \end{enumerate} \item Finnes ingen alternativer, så må filene restaureres fra backup @@ -243,6 +283,14 @@ \begin{itemize}[<+->] \item \alert{Ikke} bruk ZFS sammen med RAID-kontrollere! \item RAID-kontrolleren kan i verste fall motarbeide ZFS + \begin{itemize}[<+->] + \item RAID-kontrolleren kan finne på å + \begin{itemize}[<+->] + \item Stokke om på skriverekkefølgen + \item Utsette skriving av nye data + \end{itemize} + \item Har du skifta batteriet i RAID-kontrolleren? + \end{itemize} \item Sett RAID-kontrolleren i JBOD-modus, eller \item La hver harddisk være sitt enslige RAID~0-volum \end{itemize} @@ -255,8 +303,8 @@ \begin{itemize}[<+->] \item Utviklet av Jeffrey Bonwick, Matthew Ahrens og flere kollegaer ved Sun Microsystems, Inc. - \item Arbeidet begynte i 2001 - \item Første prototyp ble ferdig 31.\ oktober 2001 (halloween) + \item Arbeidet begynte i 2001 og første prototyp ble ferdig 31.\ + oktober 2001 (halloween) \item ZFS $\to$ Solaris, oktober 2005 \item ZFS er lisensiert etter «Common Development and Distribution License» (CDDL) @@ -290,6 +338,8 @@ \item illumos har gått videre til feature-flags og pool-versjon 5000 \item De fleste OS-er utenom Solaris, samarbeider om videreutviklingen av illumos-varianten + \item Listene på de neste slidene er kopiert fra + \texttt{\url{http://en.wikipedia.org/wiki/ZFS}} \end{itemize} \end{frame} @@ -305,7 +355,7 @@ accounting \item zpool history \item gzip compression for ZFS datasets - \item "\texttt{bootfs}" pool property + \item "\texttt{bootfs}"\ pool property \item ZIL: adds the capability to specify a separate Intent Log device or devices \item ability to delegate \texttt{zfs}(1M) administrative tasks to ordinary @@ -418,7 +468,7 @@ \frametitle{Administrasjon av ZFS} \pause \begin{itemize}[<+->] - \item To kommandoer (med underkommandoer): + \item To kommandoer (med underkommandoer) \begin{enumerate}[<+->] \item \texttt{zpool} \begin{itemize}[<+->] @@ -426,12 +476,14 @@ \end{itemize} \item \texttt{zfs} \begin{itemize}[<+->] - \item Administrasjon av filsystemer, snapshots, kloner, m.m. + \item Administrasjon av filsystemer, zvolumer, snapshots, kloner, m.m. \end{itemize} \end{enumerate} - \item Det finnes en tredje kommando for de nysgjerrige: \texttt{zdb} + \item Det finnes en tredje kommando: \texttt{zdb} \begin{itemize}[<+->] - \item Brukes for å avlese indre ZFS-detaljer + \item Brukes for å avlese de indre detaljene til ZFS + \item Bør bare brukes av eksperter \dots + \item \dots\ eller av de nysgjerrige \end{itemize} \end{itemize} \end{frame} @@ -443,29 +495,101 @@ %\pause \begin{itemize}%[<+->] \item \texttt{zpool add} + \begin{itemize}%[<+->] + \item Brukes for å innføre en helt ny vdev-gruppe med harddisker\slash partisjoner + \end{itemize} \item \texttt{zpool attach} + \begin{itemize}%[<+->] + \item Brukes for å tilføye en harddisk\slash partisjon til en eksisterende vdev-gruppe + \end{itemize} \item \texttt{zpool clear} + \begin{itemize}%[<+->] + \item Brukes for å nullstille tellerne for lese-, skrive- og sjekksumfeil + \end{itemize} \item \texttt{zpool create} + \begin{itemize}%[<+->] + \item Brukes for å opprette pooler + \end{itemize} \item \texttt{zpool destroy} + \begin{itemize}%[<+->] + \item Brukes for å ødelegge pooler + \end{itemize} \item \texttt{zpool detach} + \begin{itemize}%[<+->] + \item Brukes for å fjerne en harddisk\slash partisjon fra en vdev-gruppe + \end{itemize} \item \texttt{zpool export} + \begin{itemize}%[<+->] + \item Brukes for å eksportere en pool, for senere import i samme eller et annet system + \end{itemize} \item \texttt{zpool get} + \begin{itemize}%[<+->] + \item Brukes for å vise verdien til alle eller utvalgte \texttt{zpool}-egenskaper + \end{itemize} \item \texttt{zpool history} + \begin{itemize}%[<+->] + \item Brukes for å vise historikken til poolen + \end{itemize} \item \texttt{zpool import} + \begin{itemize}%[<+->] + \item Brukes for å importere en pool eller å vise en liste over pooler som kan importeres + \end{itemize} \item \texttt{zpool iostat} + \begin{itemize}%[<+->] + \item Brukes for å vise I/O-statistikk i sann tid + \end{itemize} \item \texttt{zpool labelclear} + \begin{itemize}%[<+->] + \item Brukes for å fjerne alle spor av ZFS' disklabels + \end{itemize} \item \texttt{zpool list} + \begin{itemize}%[<+->] + \item Brukes for å liste opp importerte pooler + \end{itemize} \item \texttt{zpool offline} + \begin{itemize}%[<+->] + \item Brukes for å deaktivere en harddisk\slash partisjon + \end{itemize} \item \texttt{zpool online} + \begin{itemize}%[<+->] + \item Brukes for (re)aktivere en harddisk\slash partisjon + \end{itemize} \item \texttt{zpool reguid} + \begin{itemize}%[<+->] + \item Brukes for å tildele en ny, tilfeldig GUID til en bestemt pool + \end{itemize} \item \texttt{zpool remove} + \begin{itemize}%[<+->] + \item Brukes for å fjerne en harddisk\slash partisjon + \end{itemize} \item \texttt{zpool reopen} + \begin{itemize}%[<+->] + \item Brukes for \dots + \end{itemize} \item \texttt{zpool replace} + \begin{itemize}%[<+->] + \item Brukes for å fortelle ZFS at en harddisk\slash partisjon har blitt skiftet ut + \end{itemize} \item \texttt{zpool scrub} + \begin{itemize}%[<+->] + \item Brukes for å lese gjennom alt aktivt innhold, og sjekke samsvaret mellom lagret data og lagrete sjekksummer + \end{itemize} \item \texttt{zpool set} + \begin{itemize}%[<+->] + \item Brukes for å endre \texttt{zpool}-egenskapene + \end{itemize} \item \texttt{zpool split} + \begin{itemize}%[<+->] + \item Brukes for å skille et speilmedlem fra resten av gruppa + \end{itemize} \item \texttt{zpool status} + \begin{itemize}%[<+->] + \item Brukes for å vise status til poolen, dens medlemmer og deres status, og telleverkene for lese-, skrive og sjekksumfeil + \end{itemize} \item \texttt{zpool upgrade} + \begin{itemize}%[<+->] + \item Brukes for å oppgradere poolene til nye formater, vise hvilke pooler som er utdaterte, og hvilke versjoner som er tilgjengelig i systemet + \end{itemize} \end{itemize} \end{frame} @@ -476,34 +600,121 @@ %\pause \begin{itemize}%[<+->] \item \texttt{zfs allow} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs bookmark} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs clone} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs create} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs destroy} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs diff} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs get} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs groupspace} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs holds} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs hold} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs inherit} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs jail} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs list} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs mount} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs promote} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs receive} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs release} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs rename} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs rollback} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs send} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs set} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs share} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs snapshot} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs unallow} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs unjail} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs unmount} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs unshare} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs upgrade} + \begin{itemize}%[<+->] + \item + \end{itemize} \item \texttt{zfs userspace} + \begin{itemize}%[<+->] + \item + \end{itemize} \end{itemize} \end{frame} @@ -596,7 +807,10 @@ \item \texttt{feature@lz4\_compress} \item \texttt{feature@multi\_vdev\_crash\_dump} \item \texttt{feature@spacemap\_histogram} + \item \texttt{feature@enabled\_txg} + \item \texttt{feature@hole\_birth} \item \texttt{feature@extensible\_dataset} + \item \texttt{feature@bookmarks} \end{itemize} \end{frame}