Mercurial > lilug > xfs
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} |