Git Product home page Git Product logo

nofs's Introduction

The No-Order File System

The No-Order File System (NoFS) is a simple, lightweight file system that employs a novel technique called backpointer-based consistency to provide crash consistency without ordering writes as they go to disk. NoFS is robust to crashes, and delivers excellent performance across a range of workloads.

The NoFS project page provides a high level overview. For technical details, please read the FAST 2012 paper Consistency Without Ordering. Please cite this publication if you use this work.

This project contains the linux kernel and file system code that we used in the paper. Another name for NoFS is ext2bp (reflecting that the code is the result of adding backpointers (bp) to ext2). The term ext2bp is used extensively in the code.

Please feel free to contact me with any questions.

Description

The code has three main parts.

e2fsprogs-1.41.12 This is a modified version of e2fsprogs. It allows the user to create a NoFS file system (mke2bpfs) and debug it (debugfs).

ext2bp This is the core NoFS file system. It is written as a loadable kernel module. It has some dependencies in the kernel which are provided by the kernel patch.

nofs_kernel.patch This includes changes to the Linux 2.6.27.55 kernel to support NoFS. This patch has to be applied to the kernel before NoFS can be run in it.

Usage

  • Make the e2fsprogs
cd e2fsprogs-1.41.12/; make;
  • Make the new NoFS file system
cd misc; ./mke2bfs /dev/sdb
  • Patch the kernel.
cd linux-2.6.27.55/; patch -p1 < nofs_kernel.patch; 
  • Compile and install the kernel.
make; make modules; make modules_install; make install
  • Reboot the machine into the new kernel.

  • Extract the ext2bp folder and move into the kernel tree

mv ext2bp linux-2.6.27.55/fs/
  • Compile the kernel module
cd linux-2.6.27.55/fs/ext2bp; make
  • Load the kernel module
insmod ext2bp.ko
  • Mount the file system
mount -t ext2bp /dev/sdb /mnt/test

Caveats

This version of the code does not contain block offsets. Backpointers only contain inode numbers. We intend to clean up and upload the version that includes block offsets soon. The code is a bit more verbose than strictly required as many functions were introduced purely for debugging purposes.

Note that the code is provided "as is": compiling and running the code will require some tweaking based on the operating system environment. The file system is only meant as a prototype and not meant for production use in any way.

nofs's People

Contributors

vijay03 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.