Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
database in user-space filesystem accessing a Postgresql database
C Makefile Groff
branch: master
Failed to load latest commit information.
debian small debian packaging fix (pgfuse, not wolframe, copy-paste-error)
redhat some more build fixes
tests cherry picked statfs fix
tools some more build fixes
AUTHORS added some Makefile things and command line parsing
BENCHMARKS fixed small size_t issue, passes the bonnie test now
BUGS -
CONTRIBUTORS added CONTRIBUTORS file
COPYING added a license
DEVELOPERS improved statfs (symlink handling, handling of default PGDATA)
FILELIST updated some docu
INSTALL added some OIDs to path code for the blocks free operation
Makefile -
PACKAGERS -
README speeling typo
TODO improved statfs (symlink handling, handling of default PGDATA)
config.h removed a newline
endian.h fixed for RHEL5
inc.mak added mount option blocksize, can be set when creating the filsystem
pgfuse.1 updated man page for noatime
pgfuse.c cherry picked statfs fix
pgsql.c fixed the rename problem (EEXIST if the destination file exists is
pgsql.h fixed the rename problem (EEXIST if the destination file exists is
pool.c forgot an unlock of mutex in db pool
pool.h fixed pooling (using conn pointer, not fuse_context->pid() )
schema.sql more realistic values for free disk blocks

README

Purpose
-------

Store files and their metadata completely in a PostgreSQL database.
Expose a standard file system with the help of the FUSE API.

Requirements
------------

PostgreSQL 8.4 or newer
FUSE 2.6 or newer

History
-------

Yes, I know what happens if you store files in a database (in respect to
drop of efficiency and incremental backups for instance). :-)

Nevertheless, there are special situations, where a filesystem in a database
is useful. With FUSE this is also rather simple to write.

The reason I wrote one was a project with lots of data on a ReiserFS (at
least in 2001, this was), which was more or less immutable and should be 
efficiently stored away (almost in an archive mode). Backup is no issue
here (as the files are more or less static after an initial load),
but space efficiency is an issue.

Most other projects try to map an existing database structure somehow as
files. This here should strictly deal withs files/dirs as the only
available model.
 
Other projects
--------------

Pgfs:

  Stores a filesystem in Postgres, exposes it as a NFS server, rather old
  and I was unable to find the sources.

mysqlfs:

  The blueprint I used and got inspired from. Does exactly the same for
  the MySQL database.
  
  Also the block splitting algorithm I used more or less from this project.

libsqlfs:

  The same for storing files in a Sqlite database.
  
curlftpfs:

  Blueprint for some debugging code.

References
----------

http://www.postgresql.org/docs/
http://fuse.sourceforge.net/
Something went wrong with that request. Please try again.