A FUSE interface for accessing Network Block Devices.

coderain b77d99b1d8 Implement new-style negotiation 5 years ago
src b77d99b1d8 Implement new-style negotiation 5 years ago
.gitignore e7831b14b7 Initial commit 5 years ago
COPYING e7831b14b7 Initial commit 5 years ago
README.md b77d99b1d8 Implement new-style negotiation 5 years ago
premake4.lua e7831b14b7 Initial commit 5 years ago

README.md

FuseNBD

A FUSE interface for accessing Network Block Devices

This program implements an NBD (Network Block Device) client in userspace that exposes the exported drive and its partitions as files in a FUSE (Filesystem in User Space) mountpoint.

This software is still in the alpha phase. It hasn't been properly tested and may crash at any point, POSSIBLY LEADING TO DATA LOSS. You have been warned.

Usage

Basic usage: fusenbd [options] mountpoint

In addition to the standard FUSE options, this program also accepts additional switches:

  • --tcp=host or -t host
    Specifies the remote host to connect to. Defaults to localhost.
  • --port=port or -p port
    Specifies the TCP port to use for the connection. Defaults to 10809.
  • --unix=path or -u path
    Specifies the UNIX socket to connect to. If this switch is specified, the TCP options are ignored.

Features

Here's what it can do:

  • Exposes the entire disk and each partition as separate files
  • Supports (some) block device IOCTLs
  • Reconnects on demand if the connection is lost
  • No root access required (but your user must be allowed to mount FUSE filesystems)

Missing Features and Bugs

Don't get too excited, this is what FuseNBD can't do yet:

  • GPT Support
  • Caching system to improve I/O performance
  • Using multiple connections to improve network performance

Building

Just do the following:

  1. premake4 gmake
  2. make config=release

And that's it! That should have created a binary called "fusenbd" in the directory. If not, submit a bug report. There's no installation option for now, but you can copy the file manually.