All Projects → nvfuse → nvfuse

nvfuse / nvfuse

Licence: other
NVMe based File System in User-space

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to nvfuse

starfish
Rust futures on spdk
Stars: ✭ 31 (-61.73%)
Mutual labels:  dpdk, spdk
pynvme
builds your own tests.
Stars: ✭ 139 (+71.6%)
Mutual labels:  nvme, spdk
apfs-clone-checker
An utility to check if two files are clones in macOs APFS.
Stars: ✭ 30 (-62.96%)
Mutual labels:  filesystem
ksmbd
ksmbd kernel server(SMB/CIFS server)
Stars: ✭ 181 (+123.46%)
Mutual labels:  filesystem
yggdrasil
No description or website provided.
Stars: ✭ 26 (-67.9%)
Mutual labels:  filesystem
emojifs
emojifs is a FUSE filesystem that allows you to manipulate custom emojis on your various Slacks and Discords
Stars: ✭ 30 (-62.96%)
Mutual labels:  filesystem
libusbhsfs
USB Mass Storage Class Host + Filesystem Mounter static library for Nintendo Switch homebrew applications.
Stars: ✭ 81 (+0%)
Mutual labels:  filesystem
flutter file utils
Flutter package for managing files on Android
Stars: ✭ 35 (-56.79%)
Mutual labels:  filesystem
gravity
User-space deniable data encryption client.
Stars: ✭ 89 (+9.88%)
Mutual labels:  filesystem
nestjs-storage
Nestjs file system / file storage module wrapping flydrive
Stars: ✭ 92 (+13.58%)
Mutual labels:  filesystem
OpenGnsys
OpenGnsys (pronounced Open Genesis) is a free and open source project that provides tools for managing and deploying different operating systems.
Stars: ✭ 15 (-81.48%)
Mutual labels:  filesystem
gtree
Output tree🌳 or Make directories📁 from #Markdown or Programmatically. Provide CLI, Golang library and Web (using #Wasm ).
Stars: ✭ 88 (+8.64%)
Mutual labels:  filesystem
ndn-dpdk
NDN-DPDK: High-Speed Named Data Networking Forwarder
Stars: ✭ 85 (+4.94%)
Mutual labels:  dpdk
xv6-file-system-visualizer
Online Visualizer for xv6 File System Image
Stars: ✭ 33 (-59.26%)
Mutual labels:  filesystem
lustre-release
Mirror of official Lustre development repository http://git.whamcloud.com/
Stars: ✭ 35 (-56.79%)
Mutual labels:  filesystem
oko
Extend Open vSwitch with BPF programs at runtime
Stars: ✭ 29 (-64.2%)
Mutual labels:  dpdk
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (+11.11%)
Mutual labels:  dpdk
python-task-queue
Asynchronous serverless task queue with timed leasing of tasks. Threaded implementations for SQS and local filesystem.
Stars: ✭ 24 (-70.37%)
Mutual labels:  filesystem
kodbox
kodbox is a file manager for web. It is a newly designed product based on kodexplorer. It is also a web code editor, which allows you to develop websites directly within the web browser.You can run kodbox either online or locally,on Linux, Windows or Mac based platforms
Stars: ✭ 1,188 (+1366.67%)
Mutual labels:  filesystem
paragon apfs sdk ce
Paragon APFS SDK Free
Stars: ✭ 97 (+19.75%)
Mutual labels:  filesystem

NVFUSE

NVFUSE is an embeddable file system as a library running in the user-space incorporated with SPDK library which is a user-space NVMe driver newly introduced by Intel. Using this file system applications can directly submit I/O requests to NVMe SSDs. Then, it provides high performance, high reliability as well as POSIX-like interfaces (e.g., nvfuse_open, nvfuse_read, nvfuse_write, and nvfuse_close functions). Note that this file system doesn't make use of well-known FUSE (File System in Userspace) library to provide POSIX compatibility. Key features are listed as follows.

  • Running in userspace without any interactions with kernel driver so that interrupts, context switches, and memory copies are eliminated.
  • Embeddable file system as a library that introduces new interfaces are similar to POSIX API.
  • Simple file system layout that is identical to EXT family file system (e.g., EXT3).
  • Strong file system consistency and durability without pessimistic journaling mechanism (e.g., EXT4 journaling) through NVMe metadata feature as described NVMe spec.

Prerequisites

In order to build NVFUSE, some relevant libraries must be configured.

DPDK and SPDK are required.

1) Move onto https://github.com/spdk/spdk
2) DPDK and SPDK must be installed based on their install guide explained in README.

Ubuntu/Debian:

# sudo apt-get install -y gcc make libaio-dev libfuse-dev
# sudo apt-get install -y gcc g++ libcunit1-dev libaio-dev libssl-dev

SPDK compile:

# git clone https://github.com/spdk/spdk.git
# cd ~/spdk
# git submodule update --init
# ./configure
# make

Building

Once the prerequisites are installed, run 'make' within the NVFUSE directory to build the NVFUSE library and examples.

# make SPDK_ROOT_DIR=/home/ysoh/spdk DPDK_DIR=/home/ysoh/spdk/dpdk/build

Before conducting an NVFUSE application, the kernel NVMe driver must be unloaded and some hugepages must be allocated. It can be done with the automation script like the below command line.

# sudo scripts/setup.sh config

Disabling ASLR (Address Space Layout Randomization) is also required like this.

# sudo scripts/disable_aslr.sh

Move to examples directory and execute helloworld.

# cd examples/helloworld
# sudo ./start_helloworld.sh

Make use of performance benchmark. # cd examples/perf # sudo ./start_perf.sh

After finalizing an NVFUSE application, the kernel NVMe driver and hugepages can be reverted with the automation script.

# sudo scripts/setup.sh reset
Examples Not Working (To Be Enabled)
control_plane_proc
dpdk_simple_mp
fio_plugin
libfuse
multi_process
raw_block_device_perf
regression_test
create_1m_files
fio-nvfuse
fsync_test
kernel_filesystem
mkfs
reactor

To do

  • File system consistency management via light-weight journaling
  • Integration with scalable file system such as Ceph and GlusterFS

Contact

Yongseok Oh ([email protected])

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].