comparison slideshow.tex @ 3:d4de13a2546e

finished slideshow
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Wed, 09 Jul 2008 11:35:30 -0400
parents 4cff88ac3e44
children 6410a0499945
comparison
equal deleted inserted replaced
2:7367154cd4e2 3:d4de13a2546e
7 \date{July 8, 2008} 7 \date{July 8, 2008}
8 8
9 \begin{document} 9 \begin{document}
10 \frame{\titlepage} 10 \frame{\titlepage}
11 11
12 \AtBeginSection[] 12 %\AtBeginSection[]
13 { 13 %{
14 \begin{frame} 14 %\begin{frame}
15 \frametitle{Outline} 15 % \frametitle{Outline}
16 \tableofcontents[currentsection] 16 % \tableofcontents[currentsection]
17 \end{frame} 17 %\end{frame}
18 } 18 %}
19 19
20 \section{History} 20 \section{History}
21 \begin{frame} 21 \begin{frame}
22 \frametitle{History: Stoneage (1992)} 22 \frametitle{History: Stoneage (1992)}
23 \begin{itemize} 23 \begin{itemize}
24 \item Berkeley's FFS was state of the art 24 \item<2-> Berkeley's FFS was state of the art
25 \item IRIX had EFS (FFS with extents) 25 \item<3-> SGI's IRIX had EFS (FFS with extents)
26 \item Many limitations 26 \item<4-> Many limitations
27 \begin{itemize} 27 \begin{itemize}
28 \item Small file sizes (2 GB) 28 \item<5-> Small file sizes (2 GB)
29 \item Small filesystem sizes (8GB) 29 \item<6-> Small filesystem sizes (8GB)
30 \item Statically allocated metadata 30 \item<7-> Statically allocated metadata
31 \item Long recovery times 31 \item<8-> Long recovery times
32 \item Slow operations on large directories 32 \item<9-> Slow operations on large directories
33 \item No extended attributes 33 \item<10-> No extended attributes
34 \item No access control lists 34 \item<11-> No access control lists
35 \end{itemize} 35 \end{itemize}
36 \end{itemize} 36 \end{itemize}
37 \end{frame} 37 \end{frame}
38 38
39 \begin{frame} 39 \begin{frame}
40 \frametitle{History: Enlightment (1993)} 40 \frametitle{History: Enlightenment (1993)}
41 \begin{center} 41 \begin{itemize}
42 \includegraphics[width=0.8\textwidth]{sgi.eps} 42 \item<2-> SGI makes XFS
43 \end{center} 43 \begin{itemize}
44 \item<3-> 'X' being a variable
45 \item<4-> To be replaced later
46 \item<5-> Name stuck
47 \end{itemize}
48 \item<6-> Radically departs from traditional filesystems
49 \end{itemize}
44 \end{frame} 50 \end{frame}
45 51
46 % 52 %
47 % Features 53 % Features
48 % 54 %
49 \section{Features} 55 \section{Features}
50 \begin{frame} 56 \begin{frame}
51 \frametitle{Features: Allocation} 57 \frametitle{Features: Allocation}
52 \begin{itemize} 58 \begin{itemize}
53 \item Delayed allocation 59 \item<2-> Delayed allocation
54 \begin{itemize} 60 \begin{itemize}
55 \item Allocate on flush 61 \item<3-> Allocate on flush
56 \item Write reserves disk space, decide where later 62 \item<3-> Write reserves disk space, decide where later
57 \end{itemize} 63 \end{itemize}
58 \item Pre-allocation 64 \item<4-> Pre-allocation
59 \begin{itemize} 65 \begin{itemize}
60 \item Reserve space before it is written 66 \item<5-> Reserve space before it is written
61 \item Minimizes fragmentation 67 \item<5-> Minimizes fragmentation
62 \end{itemize} 68 \end{itemize}
63 \item Direct I/O support 69 \item<6-> Direct I/O support
64 \item Stripe aware allocator 70 \item<7-> Stripe aware allocator
65 \end{itemize} 71 \end{itemize}
66 \end{frame} 72 \end{frame}
67 73
68 \begin{frame} 74 \begin{frame}
69 \frametitle{Features: Inodes} 75 \frametitle{Features: Inodes}
70 \begin{itemize} 76 \begin{itemize}
71 \item Dynamically allocated in clusters 77 \item<2-> Dynamically allocated in clusters
72 \item Inode size is mkfs option 78 \item<3-> Inode size is mkfs option
73 \begin{itemize} 79 \begin{itemize}
74 \item 256 Byte (default) -- 4 kByte (max) 80 \item<3-> 256 Byte (default) -- 4 kByte (max)
75 \end{itemize} 81 \end{itemize}
76 \item Extended Attributes 82 \item<4-> Extended Attributes
77 \begin{itemize} 83 \begin{itemize}
78 \item name=value pairs 84 \item<5-> $<$name, value$>$ pairs
79 \item Used by ACLs, Capabilities, SELinux, DMAPI 85 \item<6-> Used by ACLs, Capabilities, SELinux, DMAPI
80 \end{itemize} 86 \end{itemize}
81 \end{itemize} 87 \end{itemize}
82 \end{frame} 88 \end{frame}
83 89
84 \begin{frame} 90 \begin{frame}
85 \frametitle{Features: Other} 91 \frametitle{Features: Other}
86 \begin{itemize} 92 \begin{itemize}
87 \item B+ Trees 93 \item<2-> B+ Trees
88 \item 64-bit 94 \item<3-> 64-bit
89 \item Variable block size (512 Bytes -- 64 kB) 95 \item<4-> Variable block size (512 Bytes -- 64 kB)
90 \item Allocation Groups 96 \begin{itemize}
91 \item Lots of utilities 97 \item 512 Bytes -- \texttt{\textbf{PAGE\_SIZE}}
92 \item Direct I/O 98 \end{itemize}
93 \item DMAPI 99 \item<5-> Allocation Groups
94 \item EA/ACL 100 \item<6-> Lots of utilities
95 \item online fs growth 101 \item<7-> Direct I/O
96 \item amazingly fast 102 \item<8-> DMAPI
97 \end{itemize} 103 \item<9-> Extended Attributes/ACL
98 \end{frame} 104 \item<10-> Online fs growth
99 105 \item<11-> Very fast repair time
100 \begin{frame} 106 \item<12-> Amazingly fast
101 \frametitle{Why use it?} 107 \end{itemize}
102 \begin{itemize} 108 \end{frame}
103 \item Stable, mature codebase 109
104 \begin{itemize} 110 \begin{frame}
105 \item oldest journaling filesystem on Linux 111 \frametitle{Why not use ext2?}
106 \end{itemize} 112 \begin{itemize}
107 \item Very well performing 113 \item<2-> Does not keep a journal
108 \item DMAPI support 114 \begin{itemize}
109 \item Good support for EAs / ACLs 115 \item<3-> fsck mandatory to recover after a crash
110 \end{itemize} 116 \item<4-> fsck is dog slow
117 \end{itemize}
118 \end{itemize}
119 \end{frame}
120
121 \begin{frame}
122 \frametitle{Why not use ext3?}
123 \begin{itemize}
124 \item<2-> 16TB filesystem limit
125 \begin{itemize}
126 \item<3-> Used to be 8TB until about 2 years ago
127 \end{itemize}
128 \item<4-> fsck is dog slow, although not as frequently
129 needed as with ext2
130 \end{itemize}
131 \end{frame}
132
133 \begin{frame}[fragile]
134 \frametitle{Why not use ext4?}
135 \begin{itemize}
136 \item<2-> There is no ext4, there is ext4dev
137 \item<3-> Not considered mature/stable
138 \item<4-> fsck is dog slow, although not as frequently
139 needed as with ext2
140 \end{itemize}
141 \uncover<5->{\begin{exampleblock}{}
142 Ext4dev is a predecessor filesystem of the next
143 generation extended fs ext4, based on ext3 filesystem
144 code. It will be renamed ext4 fs later, once ext4dev
145 is mature and stabilized.\\
146 ...\\
147 If unsure, say N.
148 \end{exampleblock}}
149 \end{frame}
150
151 \begin{frame}
152 \frametitle{Why not use Reiserfs?}
153 \begin{itemize}
154 \item<2-> Not very actively maintained
155 \item<3-> ``Forgotten''
156 \end{itemize}
157 \end{frame}
158
159 \begin{frame}
160 \frametitle{Why not use JFS?}
161 \begin{itemize}
162 \item<2-> Doesn't perform as well as it should
163 \item<3-> Not as actively maintained as developed
164 \item<4-> The maintainer contributes the odd fix
165 \end{itemize}
166 \end{frame}
167
168 \begin{frame}
169 \frametitle{Why \textit{use} XFS?}
170 \begin{itemize}
171 \item<2-> Stable, mature codebase
172 \begin{itemize}
173 \item<3-> Oldest journaling filesystem on Linux
174 \end{itemize}
175 \item<4-> Very well performing
176 \item<5-> Very fast repair time (for the times you need it)
177 \item<6-> DMAPI support (for HSM)
178 \end{itemize}
179 %% That all sounds great, but is using XFS really worth it? Well, let me show
180 %% you an example... Once upon a time, there was a system admin.
181 \end{frame}
182
183 \begin{frame}
184 \begin{center}\includegraphics[height=2.5in]{matt_geek.eps}\end{center}
185 %% His job was to make sure people's data were properly stored, and
186 %% efficiently retrieved when needed. He used to spend night and day
187 %% pondering about the storage system, until one day, he decided that he
188 %% should use XFS for the multi-terabyte arrays in his dominion...
189 \end{frame}
190
191 \begin{frame}
192 %% This made him a very happy sysadmin.
193 \begin{center}\includegraphics[height=2.5in]{matt_biker.eps}\end{center}
111 \end{frame} 194 \end{frame}
112 195
113 \begin{frame} 196 \begin{frame}
114 \frametitle{Why \emph{not} use it?} 197 \frametitle{Why \emph{not} use it?}
115 \begin{itemize} 198 \begin{itemize}
116 \item No data journaling 199 \item<2-> No data journaling
117 \item Got time to waste 200 \item<3-> Got time to waste waiting for fsck to finish running
201 \item<4-> Don't like leather jackets
118 \end{itemize} 202 \end{itemize}
119 \end{frame} 203 \end{frame}
120 204
121 % 205 %
122 % Demos 206 % Demos
123 % 207 %
208 \newcommand{\demo}[1]{\begin{frame}\frametitle{#1}\begin{center}Demo\end{center}\end{frame}}
209
124 \section{Demos} 210 \section{Demos}
125 \begin{frame} 211 \demo{\texttt{\textbf{mkfs}} \& \texttt{\textbf{mount}}}
126 \frametitle{\texttt{\textbf{xfsdump}}} 212 \demo{\texttt{\textbf{xfs\_check}} \& \texttt{\textbf{xfs\_repair}}}
127 xfsdump ... 213 \demo{\texttt{\textbf{xfs\_growfs}}}
128 \end{frame} 214 \demo{\texttt{\textbf{xfsdump}} \& \texttt{\textbf{xfsrestore}}}
129 215 \demo{\texttt{\textbf{xfs\_bmap}}}
130 \begin{frame} 216 \demo{\texttt{\textbf{xfs\_io}}}
131 \frametitle{\texttt{\textbf{xfsrestore}}} 217 \demo{\texttt{\textbf{xfs\_quota}}}
132 xfsrestore ... 218 \demo{\texttt{\textbf{xfs\_admin}}}
133 \end{frame} 219 \demo{\texttt{\textbf{xfs\_freeze}}}
134 220
135 \begin{frame}
136 \frametitle{\texttt{\textbf{mkfs/mount}}}
137 mkfs/mount
138 \end{frame}
139
140 \begin{frame}
141 \frametitle{\texttt{\textbf{xfs\_growfs}}}
142 xfs\_growfs ...
143 \end{frame}
144
145 \begin{frame}
146 \frametitle{\texttt{\textbf{xfs\_freeze}}}
147 freeze / unfreeze
148 \end{frame}
149
150 \begin{frame}
151 \frametitle{\texttt{\textbf{xfs\_check}} \& \texttt{\textbf{xfs\_repair}}}
152 check / repair
153 \end{frame}
154
155 \begin{frame}
156 \frametitle{\texttt{\textbf{xfs\_io}}}
157 xfs\_io ...
158 \end{frame}
159
160 \begin{frame}
161 \frametitle{\texttt{\textbf{xfs\_quota}}}
162 xfs\_quota ...
163 \end{frame}
164
165 \begin{frame}
166 \frametitle{\texttt{\textbf{xfs\_admin}}}
167 xfs\_admin ...
168 \end{frame}
169
170 \begin{frame}
171 \frametitle{\texttt{\textbf{xfs\_bmap}}}
172 xfs\_bmap ...
173 \end{frame}
174 % 221 %
175 % Wrap-up 222 % Wrap-up
176 % 223 %
177 \section{} 224 \section{}
178 \begin{frame} 225 \begin{frame}
181 \includegraphics[width=\textwidth]{xfs.eps} 228 \includegraphics[width=\textwidth]{xfs.eps}
182 \end{center} 229 \end{center}
183 \end{frame} 230 \end{frame}
184 231
185 \begin{frame} 232 \begin{frame}
186 \frametitle{More info} 233 \frametitle{More info/Resources/Thanks}
187 \begin{itemize} 234 \begin{itemize}
188 \item \url{http://oss.sgi.com/projects/xfs/} 235 \item \url{http://oss.sgi.com/projects/xfs/}
189 \item \url{xfs@oss.sgi.com} 236 \item \url{xfs@oss.sgi.com}
190 \item \url{http://oss.sgi.com/projects/xfs/papers/ukuug2003.pdf} 237 \item \url{http://oss.sgi.com/projects/xfs/papers/ukuug2003.pdf}
191 \end{itemize} 238 \item \url{http://en.wikipedia.org/wiki/Comparison_of_file_systems}
239 \item Martin K. Petersen for the apt description of XFS
240 \end{itemize}
241 \end{frame}
242
243 %
244 % Extra slides
245 %
246 \section{Extra stuff}
247 \begin{frame}
248 \frametitle{What are extents?}
249 \begin{itemize}
250 \item<1-> Suppose you need to keep track of what blocks belong
251 to a file
252 \item<2-> Naturally: $<$offset, block nr$>$
253 \end{itemize}
254 \end{frame}
255 \begin{frame} % should be continuation of previous frame
256 \frametitle{What are extents?}
257 (FIXME: graphic showing a file with blocks pointing to blocks on disk)
258 \end{frame}
259 \begin{frame} % should be continuation of previous frame
260 \frametitle{What are extents?}
261 \begin{itemize}
262 % continue list from before
263 \item<1-> All works well...
264 \item<2-> ...unless you have millions of blocks (1 million 4K
265 blocks is 4GB)
266 \item<3-> Extents express a range of blocks instead of a single
267 block
268 \item<4-> Rely on the fact that many times, blocks are
269 contiguously used within a file
270 \item<5-> For example: $<$offset, nr blocks, block nr$>$
271 \end{itemize}
272 \end{frame}
273 \begin{frame} % should be continuation of previous frame
274 \frametitle{What are extents?}
275 (FIXME: graphic showing a file with an extent instead of many
276 pointers)
192 \end{frame} 277 \end{frame}
193 278
194 \end{document} 279 \end{document}