1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<META NAME="generator" CONTENT="lgazmail v1.1G.e">
<TITLE>The Answer Guy 36:
Translucent, Overlay, Loop, and Union Filesystems
</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"
LINK="#3366FF" VLINK="#A000A0">
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H4>"The Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../../gx/dennis/qbubble.gif" alt="(?)" border="0" align="middle">
<font color="#B03060">The Answer Guy</font>
<img src="../../gx/dennis/bbubble.gif" alt="(!)" border="0" align="middle">
</A></H1>
<BR>
<H4>By James T. Dennis,
<a href="mailto:answerguy@ssc.com">answerguy@ssc.com</a><BR>
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H4>
</center>
<p><hr><p>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- begin 11 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif" height="50" width="60"
alt="(?) " border="0">
Translucent, Overlay, Loop, and Union Filesystems
</H3>
<p><strong>From c17h21no4 on Wed, 02 Dec 1998
</strong></p>
<!-- ::
Translucent, Overlay, Loop, and Union Filesystems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<BLOCKQUOTE>
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Where can i find information/documentation about the loopback
filesystem and the translucent file sytstem under linux. From
what i see on the mail lists there is support but the links are
old or outdated (Ben's link) and i seem to not be finding any info
on it.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" alt="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
According to an old version of the CD-ROM Howto:
</BLOCKQUOTE>
<BLOCKQUOTE>
Once upon a time there was an IFS (inheriting filesystem).
This was written by Werner Almesberger for Linux version
0.99p11 was similar in principle to the "translucent fs"
from Sun. This was a "copy-on-write" system, sometimes
referred to as an "overlay" or "union" fs.
</BLOCKQUOTE>
<BLOCKQUOTE>
All of these are different terms for the same concept,
you mount two (or possibly more) filesystems on the same
point. Accessing files under these mount points is
presents files from one of the underlying filesystems.
</BLOCKQUOTE>
<BLOCKQUOTE>
The most common case would be to lay a CD-ROM fs over a
normal (ext2, minix, xiafs) filesystem. Any files on
the "normal" (read-write) fs take precedence over any
file with a colliding name on the CD-ROM. Any write
attempt of a file results in a copy (or possibly a
"diff" on a log-structured fs). Later access to such
files will refer to the copy rather than the original.
</BLOCKQUOTE>
<BLOCKQUOTE>
An early version of the Yggdrasil Plug-n-Play Linux (*)
distribution supported this (IFS) as an installation
method, if I recall correctly.
</BLOCKQUOTE>
<BLOCKQUOTE><ul>
<li>(the first CD-ROM distribution ever released
as far as I know)
</ul></BLOCKQUOTE>
<BLOCKQUOTE>
As far as I know Werner's IFS hasn't been updated in years
and there isn't any support for any of these union/translucent
etc fs variants in the standard kernel. I did find on
pretty obscure set of patches that <EM>appear</EM> to provide
"overlay" filesystem support for 2.0.31 kernels at:
</BLOCKQUOTE>
<BLOCKQUOTE><dl>
<dt>LOFS Patches for Linux:
<dd><tt><A HREF="http://www.kvack.org/~blah/lofs"
>http://www.kvack.org/~blah/lofs</A></tt>
</dl></BLOCKQUOTE>
<BLOCKQUOTE>
... this has no README files or other documentation
so my guess about their intent is purely from reading the
patches. I think "Blah" in this URL refers to Mr.
Benjamin LaHaise who apparently wrote the following to
the Linux-Kernel mailing list in May of 1997:
</BLOCKQUOTE>
<blockquote><blockquote><font color="#000066"><em>
> Now is a very good time to tell me if
<br>> someone else has already got a working lofs
<img src="../../gx/dennis/smily.gif" alt=":-)">
</em></font></blockquote></blockquote>
<blockquote><blockquote><font color="#000099"><em>
I wrote one quite some time ago, and finally made
patches against 2.0.30 last week. They're at
ftp://dot.superaje.com/pub/linux/lofs-2.0.30.diff
It's not perfect, but it works. (I do have a fancier
2.1.x version, but it'll be a while before i get
anymore work done on it.)
</em></font></blockquote></blockquote>
<BLOCKQUOTE>
This was in response to a Mr. Jon Peatfield's query.
(The ftp link therein does not work). He mentioned some
additional work on his 'lofs' as late as August of '97
--- quoted in a response by Linus regarding some
VFS semantics.
</BLOCKQUOTE>
<BLOCKQUOTE>
I presume this is the "Ben" to which you are referring.
I've blind copied his last known @ddresses. (Sorry if you
get three copies of this).
</BLOCKQUOTE>
<BLOCKQUOTE>
There's a similar concept called a "cachefs" and there's a
couple somewhat different concepts called "loop" filesystems.
</BLOCKQUOTE>
<BLOCKQUOTE>
A Linux "loop" or "loopback" filesystem allows one to
mount a regular file as a filesystem. This only works
if the file is an <EM>image</EM> of a supported filesystem. Thus,
if you have a boot diskette image you can mount it on
<TT>/dev/loop0</TT>, '<tt>cd</tt>' into the mount point and view the
contents.
</BLOCKQUOTE>
<BLOCKQUOTE>
I've leard of another interpretation of the phrase "loop
back filesystem" that involves remounting the same
filesystem with different option at different mount
points. Thus you might mount one at <TT>/usr</TT> with "read-only"
options and somewhere else with read-write and no-exec"
However, I don't know which versions of Unix use this and it
doesn't seem to match the Linux implemtation <EM>at all</EM>.
</BLOCKQUOTE>
<BLOCKQUOTE>
It is possible to enable encryption on your loop devices
using the '<tt>losetup</tt>' command (see the man page in section
8). However, this is more of a proof of concept than a
real utility. See my column last month for pointers to some
real cryptography packages, or look at the "privacy protected
disk driver" (ppdd) which is one I forgot to mention
last month.
</BLOCKQUOTE>
<BLOCKQUOTE>
'<tt>cachefs</tt>' and '<tt>tmpfs</tt>' are filesystems that
are supported by Solaris.
</BLOCKQUOTE>
<BLOCKQUOTE>
The CODA project at <A HREF="http://coda.cs.cmu.edu"
>http://coda.cs.cmu.edu</A> also has some
interesting replication and caching features.
</BLOCKQUOTE>
<BLOCKQUOTE>
Obviously when we start talking about specialized
filesystems we see myriad terminology collisions and
ambiguities.
</BLOCKQUOTE>
<BLOCKQUOTE>
For now I'd say that Linux LOFS/Translucent filesystems are
not "ready for prime time." However, if you're interested
in working on the code --- go for it!
</BLOCKQUOTE>
<!-- sig -->
<!-- end 11 -->
<!--startcut ======================================================= -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/ssc.copying.html"
>Copyright ©</a> 1999, James T. Dennis
<BR>Published in <I>The Linux Gazette</I> Issue 36 January 1999</H5>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<P align="center">
<table width="98%"><tr valign="center" align="center">
<td rowspan="3" colspan="6"><A HREF="../lg_answer36.html"><IMG
SRC="../../gx/dennis/answernew.gif"
ALT="[ Answer Guy Index ]"></A></td>
<TD><A HREF="./a.html">a</A></TD>
<TD><A HREF="./b.html">b</A></TD>
<TD><A HREF="./c.html">c</A></TD>
<TD><A HREF="./1.html">1</A></TD>
<TD><A HREF="./2.html">2</A></TD>
<TD><A HREF="./3.html">3</A></TD>
<TD><A HREF="./4.html">4</A></TD>
<TD><A HREF="./5.html">5</A></TD>
<TD><A HREF="./6.html">6</A></TD>
<TD><A HREF="./7.html">7</A></TD>
<TD><A HREF="./9.html">9</A></TD>
<TD><A HREF="./10.html">10</A></TD>
<TD><A HREF="./11.html">11</A></TD>
<TD><A HREF="./12.html">12</A></TD>
</tr><tr valign="center" align="center">
<TD><A HREF="./15.html">15</A></TD>
<TD><A HREF="./16.html">16</A></TD>
<TD><A HREF="./18.html">18</A></TD>
<TD><A HREF="./19.html">19</A></TD>
<TD><A HREF="./20.html">20</A></TD>
<TD><A HREF="./21.html">21</A></TD>
<TD><A HREF="./22.html">22</A></TD>
<TD><A HREF="./23.html">23</A></TD>
<TD><A HREF="./24.html">24</A></TD>
<TD><A HREF="./25.html">25</A></TD>
<TD><A HREF="./26.html">26</A></TD>
<TD><A HREF="./27.html">27</A></TD>
<TD><A HREF="./28.html">28</A></TD>
</tr><tr valign="center" align="center">
<TD><A HREF="./29.html">29</A></TD>
<TD><A HREF="./31.html">31</A></TD>
<TD><A HREF="./32.html">32</A></TD>
<TD><A HREF="./33.html">33</A></TD>
<TD><A HREF="./34.html">34</A></TD>
<TD><A HREF="./35.html">35</A></TD>
<TD><A HREF="./36.html">36</A></TD>
<TD><A HREF="./37.html">37</A></TD>
<TD><A HREF="./38.html">38</A></TD>
<TD><A HREF="./39.html">39</A></TD>
<TD><A HREF="./40.html">40</A></TD>
<TD><A HREF="./41.html">41</A></TD>
<TD><A HREF="./42.html">42</A></TD>
<TD><A HREF="./44.html">44</A></TD>
</tr><tr valign="center" align="center">
<TD><A HREF="./45.html">45</A></TD>
<TD><A HREF="./46.html">46</A></TD>
<TD><A HREF="./47.html">47</A></TD>
<TD><A HREF="./48.html">48</A></TD>
<TD><A HREF="./49.html">49</A></TD>
<TD><A HREF="./50.html">50</A></TD>
<TD><A HREF="./51.html">51</A></TD>
<TD><A HREF="./52.html">52</A></TD>
<TD><A HREF="./53.html">53</A></TD>
<TD><A HREF="./54.html">54</A></TD>
<TD><A HREF="./55.html">55</A></TD>
<TD><A HREF="./56.html">56</A></TD>
<TD><A HREF="./57.html">57</A></TD>
<TD><A HREF="./60.html">60</A></TD>
<TD><A HREF="./61.html">61</A></TD>
<TD><A HREF="./62.html">62</A></TD>
<TD><A HREF="./63.html">63</A></TD>
<TD><A HREF="./64.html">64</A></TD>
<TD><A HREF="./65.html">65</A></TD>
<TD><A HREF="./66.html">66</A></TD>
</tr><tr valign="center" align="center">
<TD><A HREF="./67.html">67</A></TD>
<TD><A HREF="./69.html">69</A></TD>
<TD><A HREF="./72.html">72</A></TD>
<TD><A HREF="./76.html">76</A></TD>
<TD><A HREF="./77.html">77</A></TD>
<TD><A HREF="./78.html">78</A></TD>
<TD><A HREF="./79.html">79</A></TD>
<TD><A HREF="./80.html">80</A></TD>
<TD><A HREF="./81.html">81</A></TD>
<TD><A HREF="./82.html">82</A></TD>
<TD><A HREF="./84.html">84</A></TD>
<TD><A HREF="./85.html">85</A></TD>
<TD><A HREF="./86.html">86</A></TD>
<TD><A HREF="./87.html">87</A></TD>
<TD><A HREF="./91.html">91</A></TD>
<TD><A HREF="./94.html">94</A></TD>
<TD><A HREF="./95.html">95</A></TD>
<TD><A HREF="./96.html">96</A></TD>
<TD><A HREF="./97.html">97</A></TD>
<TD><A HREF="./98.html">98</A></TD>
</tr></table>
</P>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<A HREF="../lg_toc36.html"
><IMG SRC="../../gx/indexnew.gif" ALT="[ Table Of Contents ]"></A>
<A HREF="../../index.html"
><IMG SRC="../../gx/homenew.gif" ALT="[ Front Page ]"></A>
<A HREF="../lg_bytes36.html"
><IMG SRC="../../gx/back2.gif" ALT="[ Previous Section ]"></A>
<A HREF="../larriera.html"
><IMG SRC="../../gx/fwd.gif" ALT="[ Next Section ]"></A>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->
|