Skip to content
NBD client library in userspace // PLEASE DO NOT USE GITHUB FOR ISSUES OR PULL REQUESTS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
common/include
docs
examples
generator
html
include
interop
lib
m4
ocaml
python
sh
tests
valgrind
.dir-locals.el
.gitignore
COPYING.LIB
Makefile.am
README
TODO
common-rules.mk
configure.ac
podwrapper.pl.in
run.in
subdir-rules.mk

README

NBD — Network Block Device — is a protocol for accessing Block Devices
(hard disks and disk-like things) over a Network.

This is the NBD client library in userspace, a simple library for
writing NBD clients.

The key features are:

 * Synchronous and asynchronous APIs, both for ease of use and for
   writing non-blocking, multithreaded clients.

 * High performance.

 * Minimal dependencies for the basic library.

 * Well-documented, stable API.

 * Bindings in several programming languages.

For documentation, see the ‘docs/’ and ‘examples/’ subdirectories.


LICENSE
=======

The software is copyright © Red Hat Inc. and licensed under the GNU
Lesser General Public License version 2 or above (LGPLv2+).  See
‘LICENSE’ for details.


BUILDING FROM SOURCE
====================

To build from git:

  autoreconf -i
  ./configure
  make
  make check

To build from tarball:

  ./configure
  make
  make check

To run the tests under valgrind:

  make check-valgrind

Requirements:

 * Only a C compiler, make, shell are required.

Optional:

 * OCaml is required to run the generator, which is needed for
   building from git.  However it is not needed if building from
   tarballs, so this is classified as an optional dependency.

 * GnuTLS is recommended for TLS support.  If not available then TLS
   support will be disabled in the library.

 * libxml2 is recommended for NBD URI support.  If not available then
   a few APIs related to URIs will always return error.

 * The nbdkit command, nbdkit-sh-plugin and nbdkit development headers
   are recommended as they are needed to run the test suite.

 * nbd-server and qemu-nbd if you want to do interoperability testing
   against these servers.

 * qemu, qemu-io, qemu-img for interoperability testing.

 * glib2 for examples that interoperate with the glib main loop.

 * OCaml and ocamlfind are both needed to generate the OCaml bindings.

 * Perl Pod::Man and Pod::Simple to generate the documentation.

 * Python >= 3.3 to build the Python 3 bindings and NBD shell (nbdsh).

 * psktool and certtool (part of GnuTLS) for testing TLS support.

 * valgrind if you want to run the tests under valgrind.


DOWNLOAD TARBALLS
=================

Tarballs are available from:
http://libguestfs.org/download/libnbd


DEVELOPERS
==========

Install the valgrind program and development headers.

Use:

    ./configure --enable-gcc-warnings

When testing use:

    make check
    make check-valgrind

For development ideas, see the TODO file.

The upstream git repository is:
https://github.com/libguestfs/libnbd

Please send patches to the libguestfs mailing list:
https://www.redhat.com/mailman/listinfo/libguestfs

For further information, see:
http://libguestfs.org/
https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md
https://github.com/libguestfs/nbdkit
You can’t perform that action at this time.