/ctFS

Primary LanguageCApache License 2.0Apache-2.0

ctFS

ctFS is a file system that Replaces File Indexing with Hardware Memory Translation through Contiguous File Allocation for Persistent Memory.

Code author: Robin Li

Access to the paper and presentation

It's a prototype and meant to prove the concept and demonstrate. I will maintain it and fix bugs progressively. You are welcome to test it and leave me feedback. Any contribution is much appreciated. You are also free to change and reuse the code as you wish.

Requirement

  • Hardware: Intel Xeon CPU equiped with Intel Optan NVDIMM
  • Software: Ubuntu 20.04 with all Kernel compile essentials

Tested environment

  • System: ThinkSystem SR570
  • CPU: Intel(R) Xeon(R) Silver 4215 CPU @ 2.50GHz
  • DRAM: 6 x 16GB DDR4 RDIMM
  • PMEM: 2 x 128GB Intel Optane DCPMM
  • Kernel: 5.11.0-46-generic
  • Distribution: Ubuntu Server 20.04 LTS

How to use:

Kernel part source code

  1. Clone the Linux kernel and checkout 5.11.0-46-generic
  2. Copy the files in /script/* to the kernel repo kernel/drivers/dax/

Compile

  1. Compile and install the kernel
  2. Compile ctFS user part (ctU):
    make
  3. Compile mkfs
    cd test
    make mkfs
  4. Compile fstest
    make fstest
    cd ..

Configure

  1. Reboot to the compiled kernel and configure the PMEM:
    script/set_nvdimm.sh
  2. Format
    test/mkfs

Run

  1. Run with TEST_PROGRAM:
    script/run_ctfs.sh TEST_PROGRAM
  2. Test with fstest:
    cd test
    script/run_ctfs.sh test/fstest -a -p "\\/test"
    Run with -h to show the help of fstest. The path to ctFS must start with "\", otherwise it will be bypassed to the regular file system.

Contact

Please feel free to reach me: robinlrb.li@mail.utoronto.ca.