sffs (single file file-system) is designed as an alternative to using
a raw disk partition for storing a single (large) data file (eg.
a DVD image or a database data file).
The current version is only a quickly hacked up version which is
functional (though has only been tested on i386 against a vanilla 2.6.9
kernel), I'm still in the process of more detailed testing and some of
it is incomplete (and there may also be a bug or two).
Update 13/12/04 - new version 0.02a released (clean compile on Alpha)
THIS RELEASE IS FOR TESTING/COMMENT ONLY AND MIGHT CRASH/CORRUPT
YOUR SYSTEM, USE FOR REAL DATA ENTIRELY AT YOUR OWN RISK.
Advantages over a raw partition:
* Able to have a (byte granularity) file length
* Can have a user/group/mode associated with the file and
the root directory of the file system
* Modification and access times (for backup?)
Advantages over ext2:
* Less space overhead (only 8K used)
* Speed (test on a 5Gb file)
<1% faster for linear sync/async reads
<1% faster for linear async writes
~10% faster for random sync/async reads+writes
~20% faster for random sync/async reads
~20% faster for random sync/async writes (~40% for a 256Mb file)
3-4x faster for linear sync writes (I'm still checking to
see if this is a genuine result)
100x faster for deletion/mkfs
(these tests were done on an otherwise quiet system with 1Gb mem.)
* Guaranteed not to suffer from fragmentation :-)
Disadvantages
* Not a general purpose file system
* Does not (yet) implement sparse files - if you lseek past EOF and
write data and then read the data between the old and new EOF you get
the data which happens to be in that disk block, THIS IS A POSSIBLE
SECURITY PROBLEM and may break code which expects to find zero'd data.
Download is http://www.arkady.demon.co.uk/sffs/sffs-latest.tar.gz (13k)
Building should be simple, sffs is currently a 'compile outside the
kernel and load' form so just unpack, cd into directory and type make.
This should create the sffs module (sffs.ko) the mkfs program
(mkfs.sffs) and the test program (testfs).
Running "make load" should load the module, "make test" should create a
file in /tmp and mount it via loopback ("make unload" to umount/unload).
Tests can be done on a real partition if you are very very certain you
don't want the data on that partition.
The performance tests can be run with "make perf_test", though you will
need to change the name of the device to use in ext2.scr, ext2_s.scr,
sffs.scr and sffs_s.scr then change the length of data to be written in
perf.scr.
Bernard Hatt