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.
- Hardware: Intel Xeon CPU equiped with Intel Optan NVDIMM
- Software: Ubuntu 20.04 with all Kernel compile essentials
- 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.7.0-rc7+
- Distribution: Ubuntu Server 20.04 LTS
- Clone the Linux kernel and checkout v5.7-rc7
- Copy the files in /kernel/* to the kernel repo kernel/drivers/dax/
- Add the following code in mm/memory.c:
After the end of these functions:
EXPORT_SYMBOL_GPL(__pte_alloc); EXPORT_SYMBOL_GPL(__pmd_alloc); EXPORT_SYMBOL_GPL(__pud_alloc); EXPORT_SYMBOL_GPL(__p4d_alloc);
__pte_alloc __pmd_alloc __pud_alloc __p4d_alloc
- Compile and install the kernel
- Compile ctFS user part (ctU):
mkdir bld make
- Compile mkfs
cd test make mkfs
- Compile fstest
make fstest cd ..
- Reboot to the compiled kernel and configure the PMEM:
script/set_nvdimm.sh
- Format
Note that if you only need to format the ctU (user structure), run mkfs without any arguments. Running mkfs with any arguments will reset the ctK (kernel structure).
test/mkfs 1
- Run with TEST_PROGRAM:
script/run_ctfs.sh TEST_PROGRAM
- Test with fstest:
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.
cd test script/run_ctfs.sh test/fstest -a -p "\\/test"
Please feel free to reach me: [email protected].