FYI, I have been able to compile a coLinux kernel with ext2 compression
support (http://e2compr.sf.net/), which when used in conjunction with a
sparse filesystem back-end created using mksparse
(http://www.acc.umu.se/~bosse/mksparse.zip) results in very significant
reductions in the on-disk footprint of the filesystem. You can smbmount a
region of the host filesystem, then on the host create an initial
zero-length file using mksparse, mke2fs it as large as you like (ignore
warnings), mount it via loopback, chattr +c the top level directory, and
then load it up with data. You will see a bunch of scary-looking "IO error
syncing ext2 inode" errors, but AFAIK these are completely benign (I will
have to look into this further), and they go away if you remount the image
as a /dev/cobdN instead. You definitely want to mount the filesystem image
via cobd in the long run, as performance of
e2compr-on-ext2-over-loop-over-smb is not good.
Note that you will need special e2compr-aware versions of ext2 tools
(e2fsck, chattr, etc) available from the e2compr.sf.net site. Please note
also that, although it has been around for many years, e2compr is considered
experimental and should not be relied upon for storage of anything
particularly valuable. But then the same is true of coLinux, I guess.
Taking this one step further I have created a prototype e2compr'd root FS
using my own embedded distro (http://diet-pc.sf.net) and have managed to get
root filesystem size as small as 3.5 Mb, and I'm not even trying hard
(DIET-PC is liberal for an embedded distro, using a real glibc 2.3.2 rather
than uclibc, etc - the "hard core" embedded distros are much smaller still).
|