BeOS was designed from the ground up to be "The Media OS," so BFS, the Be File System was, in turn, designed to be "The Media File System." It's design makes streaming and manipulation of very large files as efficient as possible. However, it also incorporates modern filesystem features such as journaling and the unprecendented ability to associate an unlimited number of attribute/value pairs to each file, which are indexed to make searching very speedy.

BFS performs exceptionally well in streaming i/o benchmarks, as a result of bypassing the system cache and performing DMA directly. However, in metadata-intensive benchmarks (ie. creation and deletion of large numbers of small files), BFS takes a severe performance hit, due to both journaling and having to update the index it keeps of attributes.

The attribute system is a wonder to behold. I observed its effects first-hand one day when I wrote a short document in BeOS's default text editor. I added some formatting information, making some text different sizes and colors, and saved it. I then opened it with VIM, expecting to see HTML, or some arbitrary markup Be dreamed up, and I was astonished to see that there was nothing there but plain text! That's because the editor stored all the markup in attributes.

Of course, that's just one possible use. Even more exciting is the ability to do queries (this is why some people refer to BFS as a database). Imagine being able to issue a query like

name == "main.c"
size < 10000
...and have it run in O(lg n)! This is thanks to BFS storing indices for attributes in B+trees. No more running updatedb every night, to be sure.

Note the distinction between the Be File System and the Unixware Boot File System, which ambiguously both use the acronym BFS (though people sometimes call the Be File System BeFS to create a distinction). The Unixware Boot File System is a very simple, bare-bones file system designed for loading and booting a Unixware kernel.

Sources: The book Practical Filesystem Design with the Be File System, the Filesystem HOWTO:

Log in or register to write something here or to contact authors.