[Libguestfs] ANNOUNCE: nbdkit 1.6 - an NBD server toolkit with stable plugin API and permissive license

Richard W.M. Jones rjones at redhat.com
Tue Aug 28 15:59:59 UTC 2018

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

The key features are:

 * Multithreaded NBD server written in C with good performance.
 * Minimal dependencies for the basic server.
 * Liberal license (BSD) allows nbdkit to be linked to proprietary
   libraries or included in proprietary code.
 * Well-documented, simple plugin API with a stable ABI guarantee.
   Lets you export “unconventional” block devices easily.
 * You can write plugins in C, [new!] Lua, Perl, Python, OCaml, Ruby or Tcl.
 * Filters can be stacked in front of plugins to transform the output.

(other downloads: http://download.libguestfs.org/nbdkit/ )

New in the 1.6 release:

 * You can now write plugins in the Lua scripting language.

 * nbdkit and common plugins are now "63 bit clean": the maximum disk
   size supported is 2^63-1 bytes, and the core server and plugins now
   have additional tests to check this works, even on 32 bit machines.

 * Multiple improvements to the ‘file’ plugin to make zeroing and
   trimming perform better, work correctly with block devices, and
   work on older Linux kernels [Nir Soffer, Eric Blake].

 * New ‘pattern’ plugin generates a simple, fixed test pattern for
   testing nbdkit filters and NBD clients.

 * New ‘truncate’ filter can: truncate or extend the size of plugins,
   or round up or down the size to next multiple of a power of 2.
   Useful for NBD clients like qemu which can only handle NBD sizes
   which are a multiple of 512 bytes.

 * New ‘error’ filter which can be used to inject errors into the
   protocol for testing how clients can handle and recover from

 * New ‘data’ plugin allows you to specify (small) disk images
   directly on the command line.

 * Enhanced error reporting in the Python plugin so full tracebacks
   from errors are now displayed instead of being lost as before.

 * NBD_OPT_GO now supported, so we can return errors when negotiating
   the export name.

 * Support for logging error messages to syslog.

 * nbdkit can now be compiled with Clang (as well as GCC).

 * nbdkit can now be compiled on FreeBSD.

 * The VDDK plugin is compiled unconditionally.  You no longer need to
   install the proprietary VDDK to compile it.

 * Debug messages now include the name of the filter when invoked from
   a filter context.

 * Debug flags (-D option) provides lightweight debugging for plugin

Thanks to all who contributed, especially Nir Soffer and Eric Blake.


Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org

More information about the Libguestfs mailing list