Fuse allows one to create their own file system without editing kernel code. We're using in-memory approach to evaluate and implement a simple File System structure, based on file nodes' parenthood from the root node.
For compiling, testing and mounting this project you'll need to install the following packages:
- C compilers: gcc (different versions from 7. to 10 i.e. gcc-10), clang 6-9
- C build systems: cmake: 3.19.6 autoconf: 2.69, automake: 1.15.1
- libfuse
- Python 3
Makefile has been created to easily compile and make a ./memfs
executable.
$ make all
You might want to change Makefile instruction if you're using Clang instead of gcc.
Each test program is a python3 script and can be run individually, i.e.:
python3 ./tests/test_mount.py
For convenience our Makefile also comes with check
target which will run all tests in serial:
$ make check
- It should be possible to mount the filesystem as follows:
./memfs [mount point]
Where the argument "mount point" is the directory where the filesystem will be mounted at.
-
creation of flat files and directories in the in-memory filesystem i.e, all files and directories stored in a single directory which is the root of the filesystem.
-
creation of hierarchical files and directories in the in-memory filesystem i.e, create files and directories in directories inside the root directory of the filesystem.
-
writing data to and reading data from files is supported.
-
appending data to an existing file is supported.
- Implementation of every basic file management method, as file deletion.
- Lookup table to reduce file access workload in long paths.
- ?????? you want something to be implemented? ask to me here or open an 'Issue'
I've struggled to find something appropriate on the internet that talks and treat FUSE in-memory implementation of File Systems, so I made one for future students that want to improve their system programming skills.