imp_fs
imp_fs copied to clipboard
ImpFS, a new filesystem.
ImpFS
ImpFS is a novel filesystem with some interesting features.
Related packages
Quick links
- OCamldocs at https://tomjridge.github.io/ocamldocs/ (includes main management page)
- Webpage, with demo and OCaml'20 talk: http://www.tom-ridge.com/filesystems.html
Build
To build with docker, just run docker build .
To build from command line, consult the Dockerfile (you need to install all the pre-reqs first).
src/v1
This version implements directories, and file metadata (not file data); file data is passed through to some underlying filesystem. There is no garbage collection, free space tracking, or anything like that (eventually, you will fill up the store, and will have to copy the directories and metadata to a new store; but since a store is just a file this is not too onerous).
This code is not really intended to be used. However, it might be useful if you want to store metadata and directories on a fast store (eg SSD), whilst the file data resides on a slower medium (HDD). Our purpose here is to implement a "minimal" example filesystem (or, at least, a partial filesystem).
To run, type make run_v1. See the MiniFS documentation for more details on the FUSE
flags.
src/v2
This is the current version of ImpFS. It should eventually have full implemetations of files, directories, freespace tracking, caching, etc. etc.
src_v3
This version focuses on frontend locking. To avoid complexity, directories are implemented by SQLite and files are implemented by an underlying filesystem such as ext4.