This project implements a simulated file system "module" on top of SimGrid, to be used in any SimGrid-based simulator. It supports the notion of partitions that store directories that store files, with the expected operations (e.g., create files, move files, unlink files, unlink directories, check for existence), and the notion of a file descriptor with POSIX-like operations (open, seek, read, write, close).
The simulated file system implementation in FSMod is not full-featured (e.g., no notion of ownership, no notion of permission).
The biggest limitation is that a directory cannot contain another directory. That is,
a directory /dev/a/tmp could contain a file foo.txt, and a directory /dev/a/tmp/other/c could
contain a file bar.txt. But, directory /dev/a/tmp does not contain directory other.
/dev/a/tmp and /dev/a/tmp/other/c are two completely unrelated directories (there is no directory /dev/a/tmp/other).
In other words, each directory simply has a path-like unique name and can only contain files.
The rationale is that the intended use of this module is purely for simulation. As
a result, full-fledged file system functionality is not (or rarely) needed (and would add
overhead to the simulation). In fact, we expect that most users will need/use a single directory.
The only required dependency is SimGrid. An optional dependency is Google Test for compiling the unit tests.
Here is the typical Ubuntu installation procedure:
cd file-system-module
mkdir build
cd build
cmake ..
make -j4
sudo make installafter which the FSMod library and header files will be installed in /usr/local/.
To compile and run the unit tests, just run the following command in the build directory:
make unit_tests
./unit_testsExample SimGrid simulators that use FSMod are provided in the examples directory (see README.md file therein).
The FSMod API is documented on this page.