The Filesystem (I’ll consider the Linux VFS as an example) has failed:
- Database storage is implemented on top of the Filesystem, because the Filesystem is incapable of serving the needs of relational storage.
- Metadata is stored inside files in many different formats which can only be guessed by clumsy ‘magic’ in the headers. This forces many media player and desktop search application to duplicate tag information in their own databases. Each of them has only limited support for each of the many different formats.
- More and more device and service abstractions are moving from the Filesystem to seperate namespaces, because the Filesystem’s API is inadequate. Take for instance oss which used
/dev/dsp, whereas alsa uses its own. Many new abstractions don’t even go near the filesystem anymore, for instance kevents, futexes, networking, dbus and hal.
- Small files are stored in (compressed) packs and archives because the Filesystem can’t handle them. This happens with for instance your mailbox.
The problem comes down to fragmentation of data and metadata in too many namespaces because the Filesystem doesn’t seem to be an adequate one.
In a series of posts I’ll look at the possibilities to create one unified filesystem.